Bazaar developer reference

CvTreasury::CalculateInflationRate()

Defined in
CvTreasury.cpp, line 685
Class
CvTreasury
Hook name
CivHooks::CvTreasury_CalculateInflationRate

Hooks

static bool BeforeCvTreasury_CalculateInflationRate(CvTreasury* self, int& result);static void AfterCvTreasury_CalculateInflationRate(CvTreasury* self, int& result);static int ReplaceCvTreasury_CalculateInflationRate(int (*original)(CvTreasury*), CvTreasury* self);CivRegisterBefore<CivHooks::CvTreasury_CalculateInflationRate>(host, &BeforeCvTreasury_CalculateInflationRate);CivRegisterAfter<CivHooks::CvTreasury_CalculateInflationRate>(host, &AfterCvTreasury_CalculateInflationRate);CivRegisterReplace<CivHooks::CvTreasury_CalculateInflationRate>(host, &ReplaceCvTreasury_CalculateInflationRate);

Code

684/// Compute inflation for this part of the game685int CvTreasury::CalculateInflationRate()686{687	CvGame& kGame = GC.getGame();688689	CvHandicapInfo& playerHandicap = m_pPlayer->getHandicapInfo();690	CvHandicapInfo& gameHandicap = kGame.getHandicapInfo();691	CvGameSpeedInfo& gameSpeedInfo = kGame.getGameSpeedInfo();692693	int iTurns = ((kGame.getGameTurn() + kGame.getElapsedGameTurns()) / 2);694	iTurns += gameSpeedInfo.getInflationOffset();695696	if(iTurns <= 0)697	{698		return 0;699	}700701	int iInflationPerTurnTimes10000 = gameSpeedInfo.getInflationPercent();702	iInflationPerTurnTimes10000 *= playerHandicap.getInflationPercent();703	iInflationPerTurnTimes10000 /= 100;704705	int iModifier = 0;706707	if(!m_pPlayer->isHuman() && !m_pPlayer->isBarbarian())708	{709		int iAIModifier = gameHandicap.getAIInflationPercent();710		iAIModifier *= std::max(0, ((gameHandicap.getAIPerEraModifier() * m_pPlayer->GetCurrentEra()) + 100));711		iAIModifier /= 100;712713		iModifier += iAIModifier - 100;714	}715716	iInflationPerTurnTimes10000 *= std::max(0, 100 + iModifier);717	iInflationPerTurnTimes10000 /= 100;718719	// Keep up to second order terms in binomial series720	int iRatePercent = (iTurns * iInflationPerTurnTimes10000) / 100;721	iRatePercent += (iTurns * (iTurns - 1) * iInflationPerTurnTimes10000 * iInflationPerTurnTimes10000) / 2000000;722723	CvAssert(iRatePercent >= 0);724725	return iRatePercent;726}

Calls