CvPlayerAI::GetDirectiveScientist(CvUnit *)
- Defined in
- CvPlayerAI.cpp, line 1310
- Class
- CvPlayerAI
- Hook name
CivHooks::CvPlayerAI_GetDirectiveScientist
Hooks
static bool BeforeCvPlayerAI_GetDirectiveScientist(CvPlayerAI* self, CvUnit* arg0, GreatPeopleDirectiveTypes& result);static void AfterCvPlayerAI_GetDirectiveScientist(CvPlayerAI* self, CvUnit* arg0, GreatPeopleDirectiveTypes& result);static GreatPeopleDirectiveTypes ReplaceCvPlayerAI_GetDirectiveScientist(GreatPeopleDirectiveTypes (*original)(CvPlayerAI*, CvUnit*), CvPlayerAI* self, CvUnit* arg0);CivRegisterBefore<CivHooks::CvPlayerAI_GetDirectiveScientist>(host, &BeforeCvPlayerAI_GetDirectiveScientist);CivRegisterAfter<CivHooks::CvPlayerAI_GetDirectiveScientist>(host, &AfterCvPlayerAI_GetDirectiveScientist);CivRegisterReplace<CivHooks::CvPlayerAI_GetDirectiveScientist>(host, &ReplaceCvPlayerAI_GetDirectiveScientist);
Code
1310GreatPeopleDirectiveTypes CvPlayerAI::GetDirectiveScientist(CvUnit* /*pGreatScientist*/)1311{1312 GreatPeopleDirectiveTypes eDirective = NO_GREAT_PEOPLE_DIRECTIVE_TYPE;13131314 // If I'm in danger, use great person to get a tech boost1315 if(eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && !IsSafe(this))1316 {1317 eDirective = GREAT_PEOPLE_DIRECTIVE_USE_POWER;1318 }13191320#if defined(MOD_AI_SMART_V3)1321 // Go for improvement for third part of estimated game, no matter what.1322 int iDivisor = MOD_AI_SMART_V3 ? 3 : 4;1323 if(eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && GC.getGame().getGameTurn() <= ((GC.getGame().getEstimateEndTurn() * 1) / iDivisor))1324#else1325 if(eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && GC.getGame().getGameTurn() <= ((GC.getGame().getEstimateEndTurn() * 1) / 4))1326#endif1327 {1328#if defined(MOD_AI_SMART_V3)1329 if(MOD_AI_SMART_V3 || GetDiplomacyAI()->IsGoingForSpaceshipVictory())1330#else1331 if(GetDiplomacyAI()->IsGoingForSpaceshipVictory())1332#endif1333 {1334 eDirective = GREAT_PEOPLE_DIRECTIVE_CONSTRUCT_IMPROVEMENT;1335 }1336 }13371338 if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE)1339 {1340 // a tech boost is never bad1341 eDirective = GREAT_PEOPLE_DIRECTIVE_USE_POWER;1342 }13431344 return eDirective;1345}