CvPlayerAI::GetDirectiveWriter(CvUnit *)
- Defined in
- CvPlayerAI.cpp, line 1092
- Class
- CvPlayerAI
- Hook name
CivHooks::CvPlayerAI_GetDirectiveWriter
Hooks
static bool BeforeCvPlayerAI_GetDirectiveWriter(CvPlayerAI* self, CvUnit* pGreatWriter, GreatPeopleDirectiveTypes& result);static void AfterCvPlayerAI_GetDirectiveWriter(CvPlayerAI* self, CvUnit* pGreatWriter, GreatPeopleDirectiveTypes& result);static GreatPeopleDirectiveTypes ReplaceCvPlayerAI_GetDirectiveWriter(GreatPeopleDirectiveTypes (*original)(CvPlayerAI*, CvUnit*), CvPlayerAI* self, CvUnit* pGreatWriter);CivRegisterBefore<CivHooks::CvPlayerAI_GetDirectiveWriter>(host, &BeforeCvPlayerAI_GetDirectiveWriter);CivRegisterAfter<CivHooks::CvPlayerAI_GetDirectiveWriter>(host, &AfterCvPlayerAI_GetDirectiveWriter);CivRegisterReplace<CivHooks::CvPlayerAI_GetDirectiveWriter>(host, &ReplaceCvPlayerAI_GetDirectiveWriter);
Code
1092GreatPeopleDirectiveTypes CvPlayerAI::GetDirectiveWriter(CvUnit* pGreatWriter)1093{1094 GreatPeopleDirectiveTypes eDirective = NO_GREAT_PEOPLE_DIRECTIVE_TYPE;10951096 // Defend against ideology pressure if not going for culture win1097 if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && !GetDiplomacyAI()->IsGoingForCultureVictory() && GetCulture()->GetPublicOpinionUnhappiness() > 10)1098 {1099 eDirective = GREAT_PEOPLE_DIRECTIVE_CULTURE_BLAST;1100 }11011102 // If not going for culture win and a Level 2 or 3 Tenet is available, try to snag it1103 if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && !GetDiplomacyAI()->IsGoingForCultureVictory() && GetPlayerPolicies()->CanGetAdvancedTenet())1104 {1105 eDirective = GREAT_PEOPLE_DIRECTIVE_CULTURE_BLAST;1106 }11071108 // Create Great Work if there is a slot1109 GreatWorkType eGreatWork = pGreatWriter->GetGreatWork();1110 if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && GetEconomicAI()->GetBestGreatWorkCity(pGreatWriter->plot(), eGreatWork))1111 {1112 eDirective = GREAT_PEOPLE_DIRECTIVE_USE_POWER;1113 }1114#if defined(MOD_AI_SMART_V3)1115 // AMS: Wait idle for 6 turns until culture blast due to no alternatives, maybe a work slot is built/conquered meanwhile.1116 else if (!MOD_AI_SMART_V3 || ((GC.getGame().getGameTurn() - pGreatWriter->getGameTurnCreated()) >= (GC.getAI_HOMELAND_GREAT_PERSON_TURNS_TO_WAIT() / 2)))1117#else1118 else1119#endif1120 {1121 eDirective = GREAT_PEOPLE_DIRECTIVE_CULTURE_BLAST;1122 }11231124 return eDirective;1125}
Calls
- CustomMods::isAI_SMART_V3()
- CvDiplomacyAI::IsGoingForCultureVictory()
- CvEconomicAI::GetBestGreatWorkCity(CvPlot *, GreatWorkType) const
- CvGame::getGameTurn()
- CvGlobals::getAI_HOMELAND_GREAT_PERSON_TURNS_TO_WAIT()
- CvGlobals::getGame()
- CvPlayer::GetCulture() const
- CvPlayer::GetDiplomacyAI() const
- CvPlayer::GetEconomicAI() const
- CvPlayer::GetPlayerPolicies() const
- CvPlayerCulture::GetPublicOpinionUnhappiness() const
- CvPlayerPolicies::CanGetAdvancedTenet() const
- CvUnit::getGameTurnCreated() const
- CvUnit::GetGreatWork() const
- CvUnit::plot() const