Bazaar developer reference

CvMinorCivAI::DoPickPersonality()

Defined in
CvMinorCivAI.cpp, line 2206
Class
CvMinorCivAI
Hook name
CivHooks::CvMinorCivAI_DoPickPersonality

Hooks

static bool BeforeCvMinorCivAI_DoPickPersonality(CvMinorCivAI* self);static void AfterCvMinorCivAI_DoPickPersonality(CvMinorCivAI* self);static void ReplaceCvMinorCivAI_DoPickPersonality(void (*original)(CvMinorCivAI*), CvMinorCivAI* self);CivRegisterBefore<CivHooks::CvMinorCivAI_DoPickPersonality>(host, &BeforeCvMinorCivAI_DoPickPersonality);CivRegisterAfter<CivHooks::CvMinorCivAI_DoPickPersonality>(host, &AfterCvMinorCivAI_DoPickPersonality);CivRegisterReplace<CivHooks::CvMinorCivAI_DoPickPersonality>(host, &ReplaceCvMinorCivAI_DoPickPersonality);

Code

2205/// Picks a random Personality for this minor2206void CvMinorCivAI::DoPickPersonality()2207{22082209	FlavorTypes eFlavorCityDefense = NO_FLAVOR;2210	FlavorTypes eFlavorDefense = NO_FLAVOR;2211	FlavorTypes eFlavorOffense = NO_FLAVOR;2212	for(int iFlavorLoop = 0; iFlavorLoop < GC.getNumFlavorTypes(); iFlavorLoop++)2213	{2214		if(GC.getFlavorTypes((FlavorTypes)iFlavorLoop) == "FLAVOR_CITY_DEFENSE")2215		{2216			eFlavorCityDefense = (FlavorTypes)iFlavorLoop;2217		}2218		if(GC.getFlavorTypes((FlavorTypes)iFlavorLoop) == "FLAVOR_DEFENSE")2219		{2220			eFlavorDefense = (FlavorTypes)iFlavorLoop;2221		}2222		if(GC.getFlavorTypes((FlavorTypes)iFlavorLoop) == "FLAVOR_OFFENSE")2223		{2224			eFlavorOffense = (FlavorTypes)iFlavorLoop;2225		}2226	}22272228	CvFlavorManager* pFlavorManager = m_pPlayer->GetFlavorManager();2229	int* pFlavors = pFlavorManager->GetAllPersonalityFlavors();22302231	MinorCivPersonalityTypes eRandPersonality = (MinorCivPersonalityTypes) GC.getGame().getJonRandNum(NUM_MINOR_CIV_PERSONALITY_TYPES, "Minor Civ AI: Picking Personality for this Game (should happen only once per player)");2232#if defined(MOD_API_EXTENSIONS)2233	SetPersonality(eRandPersonality);2234#else2235	m_ePersonality = eRandPersonality;2236#endif22372238	switch(eRandPersonality)2239	{2240	case MINOR_CIV_PERSONALITY_FRIENDLY:2241#if defined(MOD_AI_MP_DIPLOMACY)2242		if (MOD_AI_MP_DIPLOMACY) {2243		pFlavors[eFlavorCityDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorCityDefense] + 2, 2, 2, 12) - 2;2244		pFlavors[eFlavorDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorDefense] + 2, 2, 2, 12) - 2;2245		pFlavors[eFlavorOffense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorOffense] + 2, 2, 2, 12) - 2;2246		} else {2247#endif2248		pFlavors[eFlavorCityDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorCityDefense], -2, 0, 10);2249		pFlavors[eFlavorDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorDefense], -2, 0, 10);2250		pFlavors[eFlavorOffense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorOffense], -2, 0, 10);2251#if defined(MOD_AI_MP_DIPLOMACY)2252		}2253#endif2254		pFlavorManager->ResetToBasePersonality();2255		break;2256	case MINOR_CIV_PERSONALITY_HOSTILE:2257#if defined(MOD_AI_MP_DIPLOMACY)2258		if (MOD_AI_MP_DIPLOMACY) {2259		pFlavors[eFlavorCityDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorCityDefense] - 2, 2, -2, 8) + 2;2260		pFlavors[eFlavorDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorDefense] - 2, 2, -2, 8) + 2;2261		pFlavors[eFlavorOffense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorOffense] - 2, 2, -2, 8) + 2;2262		} else {2263#endif2264		pFlavors[eFlavorCityDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorCityDefense], 2, 0, 10);2265		pFlavors[eFlavorDefense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorDefense], 2, 0, 10);2266		pFlavors[eFlavorOffense] = pFlavorManager->GetAdjustedValue(pFlavors[eFlavorOffense], 2, 0, 10);2267#if defined(MOD_AI_MP_DIPLOMACY)2268		}2269#endif2270		pFlavorManager->ResetToBasePersonality();2271		break;2272	}2273}

Calls

Called by