Bazaar developer reference

CvCity::getProductionModifier(BuildingTypes, CvString *) const

Defined in
CvCity.cpp, line 5636
Class
CvCity
Hook name
CivHooks::CvCity_getProductionModifier_with_BuildingTypes_CvString_const

Hooks

static bool BeforeCvCity_getProductionModifier_with_BuildingTypes_CvString_const(const CvCity* self, BuildingTypes eBuilding, CvString* toolTipSink, int& result);static void AfterCvCity_getProductionModifier_with_BuildingTypes_CvString_const(const CvCity* self, BuildingTypes eBuilding, CvString* toolTipSink, int& result);static int ReplaceCvCity_getProductionModifier_with_BuildingTypes_CvString_const(int (*original)(const CvCity*, BuildingTypes, CvString*), const CvCity* self, BuildingTypes eBuilding, CvString* toolTipSink);CivRegisterBefore<CivHooks::CvCity_getProductionModifier_with_BuildingTypes_CvString_const>(host, &BeforeCvCity_getProductionModifier_with_BuildingTypes_CvString_const);CivRegisterAfter<CivHooks::CvCity_getProductionModifier_with_BuildingTypes_CvString_const>(host, &AfterCvCity_getProductionModifier_with_BuildingTypes_CvString_const);CivRegisterReplace<CivHooks::CvCity_getProductionModifier_with_BuildingTypes_CvString_const>(host, &ReplaceCvCity_getProductionModifier_with_BuildingTypes_CvString_const);

Code

5636int CvCity::getProductionModifier(BuildingTypes eBuilding, CvString* toolTipSink) const5637{5638	VALIDATE_OBJECT5639	int iMultiplier = getGeneralProductionModifiers(toolTipSink);5640	iMultiplier += GET_PLAYER(getOwner()).getProductionModifier(eBuilding, toolTipSink);56415642	CvBuildingEntry* thisBuildingEntry = GC.getBuildingInfo(eBuilding);5643	if(thisBuildingEntry == NULL)	//should never happen5644		return -1;56455646	const CvBuildingClassInfo& kBuildingClassInfo = thisBuildingEntry->GetBuildingClassInfo();56475648	int iTempMod;56495650	// Wonder bonus5651	if(::isWorldWonderClass(kBuildingClassInfo) ||5652	        ::isTeamWonderClass(kBuildingClassInfo) ||5653	        ::isNationalWonderClass(kBuildingClassInfo))5654	{5655		iTempMod = GetWonderProductionModifier();5656		iMultiplier += iTempMod;5657		if(toolTipSink && iTempMod)5658		{5659			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_WONDER_CITY", iTempMod);5660		}56615662		iTempMod = GET_PLAYER(getOwner()).getWonderProductionModifier();5663		iMultiplier += iTempMod;5664		if(toolTipSink && iTempMod)5665		{5666			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_WONDER_PLAYER", iTempMod);5667		}56685669		iTempMod = GetLocalResourceWonderProductionMod(eBuilding, toolTipSink);5670		iMultiplier += iTempMod;56715672		ReligionTypes eMajority = GetCityReligions()->GetReligiousMajority();5673		if(eMajority != NO_RELIGION)5674		{5675			const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eMajority, getOwner());5676			if(pReligion)5677			{5678				// Depends on era of wonder5679				EraTypes eEra;5680				TechTypes eTech = (TechTypes)thisBuildingEntry->GetPrereqAndTech();5681				if(eTech != NO_TECH)5682				{5683					CvTechEntry* pEntry = GC.GetGameTechs()->GetEntry(eTech);5684					if(pEntry)5685					{5686						eEra = (EraTypes)pEntry->GetEra();5687						if(eEra != NO_ERA)5688						{5689							iTempMod = pReligion->m_Beliefs.GetWonderProductionModifier(eEra);5690							BeliefTypes eSecondaryPantheon = GetCityReligions()->GetSecondaryReligionPantheonBelief();5691							if (eSecondaryPantheon != NO_BELIEF)5692							{5693								if((int)eEra < GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetObsoleteEra())5694								{5695									iTempMod += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetWonderProductionModifier();5696								}5697							}5698							iMultiplier += iTempMod;5699							if(toolTipSink && iTempMod)5700							{5701								GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_WONDER_RELIGION", iTempMod);5702							}5703						}5704					}5705				}5706			}5707		}5708	}5709	// Not-wonder bonus5710	else5711	{5712		iTempMod = m_pCityBuildings->GetBuildingProductionModifier();5713		iMultiplier += iTempMod;5714		if(toolTipSink && iTempMod)5715		{5716			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_BUILDING_CITY", iTempMod);5717		}5718	}57195720	// From policies5721	iTempMod = GET_PLAYER(getOwner()).GetPlayerPolicies()->GetBuildingClassProductionModifier((BuildingClassTypes)kBuildingClassInfo.GetID());5722	if(iTempMod != 0)5723	{5724		iMultiplier += iTempMod;5725		if(toolTipSink && iTempMod)5726		{5727			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_BUILDING_POLICY", iTempMod);5728		}5729	}57305731	// From traits5732	iTempMod = GET_PLAYER(getOwner()).GetPlayerTraits()->GetCapitalBuildingDiscount(eBuilding);5733	if(iTempMod != 0)5734	{5735		iMultiplier += iTempMod;5736		if(toolTipSink && iTempMod)5737		{5738			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_CAPITAL_BUILDING_TRAIT", iTempMod);5739		}5740	}57415742	return iMultiplier;5743}

Calls

Called by