Bazaar developer reference

CvCity::getBaseYieldRateModifier(YieldTypes, int, CvString *) const

Defined in
CvCity.cpp, line 10421
Class
CvCity
Hook name
CivHooks::CvCity_getBaseYieldRateModifier

Hooks

static bool BeforeCvCity_getBaseYieldRateModifier(const CvCity* self, YieldTypes eIndex, int iExtra, CvString* toolTipSink, int& result);static void AfterCvCity_getBaseYieldRateModifier(const CvCity* self, YieldTypes eIndex, int iExtra, CvString* toolTipSink, int& result);static int ReplaceCvCity_getBaseYieldRateModifier(int (*original)(const CvCity*, YieldTypes, int, CvString*), const CvCity* self, YieldTypes eIndex, int iExtra, CvString* toolTipSink);CivRegisterBefore<CivHooks::CvCity_getBaseYieldRateModifier>(host, &BeforeCvCity_getBaseYieldRateModifier);CivRegisterAfter<CivHooks::CvCity_getBaseYieldRateModifier>(host, &AfterCvCity_getBaseYieldRateModifier);CivRegisterReplace<CivHooks::CvCity_getBaseYieldRateModifier>(host, &ReplaceCvCity_getBaseYieldRateModifier);

Code

10421int CvCity::getBaseYieldRateModifier(YieldTypes eIndex, int iExtra, CvString* toolTipSink) const10422{10423	VALIDATE_OBJECT10424	int iModifier = 0;10425	int iTempMod;1042610427	// Yield Rate Modifier10428	iTempMod = getYieldRateModifier(eIndex);10429	iModifier += iTempMod;10430	if(toolTipSink)10431		GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD", iTempMod);1043210433	// Resource Yield Rate Modifier10434	iTempMod = getResourceYieldRateModifier(eIndex);10435	iModifier += iTempMod;10436	if(toolTipSink)10437		GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_RESOURCES", iTempMod);1043810439	// Happiness Yield Rate Modifier10440	iTempMod = getHappinessModifier(eIndex);10441	iModifier += iTempMod;10442	if(toolTipSink)10443		GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_HAPPINESS", iTempMod);1044410445	// Area Yield Rate Modifier10446	if(area() != NULL)10447	{10448		iTempMod = area()->getYieldRateModifier(getOwner(), eIndex);10449		iModifier += iTempMod;10450		if(toolTipSink)10451			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_AREA", iTempMod);10452	}1045310454	// Player Yield Rate Modifier10455	iTempMod = GET_PLAYER(getOwner()).getYieldRateModifier(eIndex);10456	iModifier += iTempMod;10457	if(toolTipSink)10458		GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_PLAYER", iTempMod);1045910460	// Player Capital Yield Rate Modifier10461	if(isCapital())10462	{10463		iTempMod = GET_PLAYER(getOwner()).getCapitalYieldRateModifier(eIndex);10464		iModifier += iTempMod;10465		if(toolTipSink)10466			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_CAPITAL", iTempMod);10467	}1046810469	// Golden Age Yield Modifier10470	if(GET_PLAYER(getOwner()).isGoldenAge())10471	{10472		CvYieldInfo* pYield = GC.getYieldInfo(eIndex);10473		if(pYield)10474		{10475			iTempMod = pYield->getGoldenAgeYieldMod();10476			iModifier += iTempMod;10477			if(toolTipSink)10478				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_GOLDEN_AGE", iTempMod);10479		}10480	}1048110482	// Religion Yield Rate Modifier10483	ReligionTypes eMajority = GetCityReligions()->GetReligiousMajority();10484	const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eMajority, getOwner());10485	if(pReligion)10486	{10487		int iReligionYieldMaxFollowers = pReligion->m_Beliefs.GetMaxYieldModifierPerFollower(eIndex);10488		if (iReligionYieldMaxFollowers > 0)10489		{10490			int iFollowers = GetCityReligions()->GetNumFollowers(eMajority);10491			iTempMod = min(iFollowers, iReligionYieldMaxFollowers);10492			iModifier += iTempMod;10493			if(toolTipSink)10494				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_BELIEF", iTempMod);10495		}10496	}1049710498	// Production Yield Rate Modifier from City States10499	if(eIndex == YIELD_PRODUCTION && GetCityBuildings()->GetCityStateTradeRouteProductionModifier() > 0 )10500	{	10501		iTempMod = GetCityBuildings()->GetCityStateTradeRouteProductionModifier();10502		iModifier += iTempMod;10503		if(toolTipSink){10504			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_YIELD_HANSE", iTempMod);10505		}10506	}1050710508	// Puppet10509	if(IsPuppet())10510	{10511		switch(eIndex)10512		{10513		case YIELD_SCIENCE:10514			iTempMod = GC.getPUPPET_SCIENCE_MODIFIER();10515			iModifier += iTempMod;10516			if(iTempMod != 0 && toolTipSink)10517				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_PUPPET", iTempMod);10518#if defined(MOD_BUGFIX_MINOR)10519			break;10520#endif10521		case YIELD_GOLD:10522			iTempMod = GC.getPUPPET_GOLD_MODIFIER();10523			iModifier += iTempMod;10524			if(iTempMod != 0 && toolTipSink)10525				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_PUPPET", iTempMod);10526#if defined(MOD_BUGFIX_MINOR)10527			break;10528#endif10529#if defined(MOD_API_UNIFIED_YIELDS_TOURISM)10530		case YIELD_TOURISM:10531			iTempMod = GC.getPUPPET_TOURISM_MODIFIER();10532			iModifier += iTempMod;10533			if(iTempMod != 0 && toolTipSink)10534				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_PUPPET", iTempMod);10535			break;10536#endif10537#if defined(MOD_API_UNIFIED_YIELDS_GOLDEN_AGE)10538		case YIELD_GOLDEN_AGE_POINTS:10539			iTempMod = GC.getPUPPET_GOLDEN_AGE_MODIFIER();10540			iModifier += iTempMod;10541			if(iTempMod != 0 && toolTipSink)10542				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_PUPPET", iTempMod);10543			break;10544#endif10545		}10546	}1054710548	iModifier += iExtra;1054910550	// note: player->invalidateYieldRankCache() must be called for anything that is checked here10551	// so if any extra checked things are added here, the cache needs to be invalidated1055210553	return std::max(0, (iModifier + 100));10554}

Calls

Called by