Bazaar developer reference

CvPlayerAI::GetDirectiveGeneral(CvUnit *)

Defined in
CvPlayerAI.cpp, line 1347
Class
CvPlayerAI
Hook name
CivHooks::CvPlayerAI_GetDirectiveGeneral

Hooks

static bool BeforeCvPlayerAI_GetDirectiveGeneral(CvPlayerAI* self, CvUnit* pGreatGeneral, GreatPeopleDirectiveTypes& result);static void AfterCvPlayerAI_GetDirectiveGeneral(CvPlayerAI* self, CvUnit* pGreatGeneral, GreatPeopleDirectiveTypes& result);static GreatPeopleDirectiveTypes ReplaceCvPlayerAI_GetDirectiveGeneral(GreatPeopleDirectiveTypes (*original)(CvPlayerAI*, CvUnit*), CvPlayerAI* self, CvUnit* pGreatGeneral);CivRegisterBefore<CivHooks::CvPlayerAI_GetDirectiveGeneral>(host, &BeforeCvPlayerAI_GetDirectiveGeneral);CivRegisterAfter<CivHooks::CvPlayerAI_GetDirectiveGeneral>(host, &AfterCvPlayerAI_GetDirectiveGeneral);CivRegisterReplace<CivHooks::CvPlayerAI_GetDirectiveGeneral>(host, &ReplaceCvPlayerAI_GetDirectiveGeneral);

Code

1347GreatPeopleDirectiveTypes CvPlayerAI::GetDirectiveGeneral(CvUnit* pGreatGeneral)1348{1349	GreatPeopleDirectiveTypes eDirective = NO_GREAT_PEOPLE_DIRECTIVE_TYPE;13501351	SpecialUnitTypes eSpecialUnitGreatPerson = (SpecialUnitTypes) GC.getInfoTypeForString("SPECIALUNIT_PEOPLE");13521353	int iGreatGeneralCount = 0;13541355	int iLoop;1356	for(CvUnit* pLoopUnit = firstUnit(&iLoop); pLoopUnit; pLoopUnit = nextUnit(&iLoop))1357	{1358		if(pLoopUnit->getSpecialUnitType() != eSpecialUnitGreatPerson)1359		{1360			continue;1361		}13621363		if(pLoopUnit->AI_getUnitAIType() == UNITAI_GENERAL && pLoopUnit->GetGreatPeopleDirective() != GREAT_PEOPLE_DIRECTIVE_GOLDEN_AGE)1364		{1365			iGreatGeneralCount++;1366		}1367	}13681369	if(iGreatGeneralCount > 2 && pGreatGeneral->plot()->getOwner() == pGreatGeneral->getOwner())1370	{1371		// we're using a power at this point because constructing the improvement goes through different code1372		eDirective = GREAT_PEOPLE_DIRECTIVE_USE_POWER;1373	}13741375	return eDirective;1376}

Calls

Called by