Bazaar developer reference

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

Called by