CvGrandStrategyAI::GetCulturePriority()
- Defined in
- CvGrandStrategyAI.cpp, line 541
- Class
- CvGrandStrategyAI
- Hook name
CivHooks::CvGrandStrategyAI_GetCulturePriority
Hooks
static bool BeforeCvGrandStrategyAI_GetCulturePriority(CvGrandStrategyAI* self, int& result);static void AfterCvGrandStrategyAI_GetCulturePriority(CvGrandStrategyAI* self, int& result);static int ReplaceCvGrandStrategyAI_GetCulturePriority(int (*original)(CvGrandStrategyAI*), CvGrandStrategyAI* self);CivRegisterBefore<CivHooks::CvGrandStrategyAI_GetCulturePriority>(host, &BeforeCvGrandStrategyAI_GetCulturePriority);CivRegisterAfter<CivHooks::CvGrandStrategyAI_GetCulturePriority>(host, &AfterCvGrandStrategyAI_GetCulturePriority);CivRegisterReplace<CivHooks::CvGrandStrategyAI_GetCulturePriority>(host, &ReplaceCvGrandStrategyAI_GetCulturePriority);
Code
540/// Returns Priority for Culture Grand Strategy541int CvGrandStrategyAI::GetCulturePriority()542{543 int iPriority = 0;544545 // If Culture Victory isn't even available then don't bother with anything546 VictoryTypes eVictory = (VictoryTypes) GC.getInfoTypeForString("VICTORY_CULTURAL", true);547 if(eVictory == NO_VICTORY || !GC.getGame().isVictoryValid(eVictory))548 {549 return -100;550 }551552 // Before tourism kicks in, add weight based on flavor553 int iFlavorCulture = m_pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor((FlavorTypes)GC.getInfoTypeForString("FLAVOR_CULTURE"));554#if defined(MOD_AI_SMART_V3)555 if (MOD_AI_SMART_V3)556 iPriority += (9 - m_pPlayer->GetCurrentEra()) * iFlavorCulture * 200 / 100;557 else558#endif 559 iPriority += (10 - m_pPlayer->GetCurrentEra()) * iFlavorCulture * 200 / 100;560561 // Loop through Players to see how we are doing on Tourism and Culture562 PlayerTypes eLoopPlayer;563 int iOurCulture = m_pPlayer->GetTotalJONSCulturePerTurn();564 int iOurTourism = m_pPlayer->GetCulture()->GetTourism();565 int iNumCivsBehindCulture = 0;566 int iNumCivsAheadCulture = 0;567 int iNumCivsBehindTourism = 0;568 int iNumCivsAheadTourism = 0;569 int iNumCivsAlive = 0;570571 for(int iPlayerLoop = 0; iPlayerLoop < MAX_CIV_PLAYERS; iPlayerLoop++)572 {573 eLoopPlayer = (PlayerTypes) iPlayerLoop;574 CvPlayer &kPlayer = GET_PLAYER(eLoopPlayer);575576 if (kPlayer.isAlive() && !kPlayer.isMinorCiv() && !kPlayer.isBarbarian() && iPlayerLoop != m_pPlayer->GetID())577 {578 if (iOurCulture > kPlayer.GetTotalJONSCulturePerTurn())579 {580 iNumCivsAheadCulture++;581 }582 else583 {584 iNumCivsBehindCulture++;585 }586 if (iOurTourism > kPlayer.GetCulture()->GetTourism())587 {588 iNumCivsAheadTourism++;589 }590 else591 {592 iNumCivsBehindTourism++;593 }594 iNumCivsAlive++;595 }596 }597598 if (iNumCivsAlive > 0 && iNumCivsAheadCulture > iNumCivsBehindCulture)599 {600 iPriority += (GC.getAI_GS_CULTURE_AHEAD_WEIGHT() * (iNumCivsAheadCulture - iNumCivsBehindCulture) / iNumCivsAlive);601 }602 if (iNumCivsAlive > 0 && iNumCivsAheadTourism > iNumCivsBehindTourism)603 {604 iPriority += (GC.getAI_GS_CULTURE_TOURISM_AHEAD_WEIGHT() * (iNumCivsAheadTourism - iNumCivsBehindTourism) / iNumCivsAlive);605 }606607 // for every civ we are Influential over increase this608 int iNumInfluential = m_pPlayer->GetCulture()->GetNumCivsInfluentialOn();609 iPriority += iNumInfluential * GC.getAI_GS_CULTURE_INFLUENTIAL_CIV_MOD();610611 return iPriority;612}
Calls
- CustomMods::isAI_SMART_V3()
- CvFlavorManager::GetPersonalityIndividualFlavor(FlavorTypes)
- CvGame::isVictoryValid(VictoryTypes) const
- CvGlobals::getAI_GS_CULTURE_AHEAD_WEIGHT()
- CvGlobals::getAI_GS_CULTURE_INFLUENTIAL_CIV_MOD()
- CvGlobals::getAI_GS_CULTURE_TOURISM_AHEAD_WEIGHT()
- CvGlobals::getGame()
- CvGlobals::getInfoTypeForString(const char *, bool) const
- CvPlayer::GetCulture() const
- CvPlayer::GetCurrentEra() const
- CvPlayer::GetFlavorManager() const
- CvPlayer::GetID() const
- CvPlayer::GetTotalJONSCulturePerTurn() const
- CvPlayer::isAlive() const
- CvPlayer::isBarbarian() const
- CvPlayer::isMinorCiv() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerCulture::GetNumCivsInfluentialOn() const
- CvPlayerCulture::GetTourism()