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}