Bazaar developer reference

CvCity::UpdateReligion(ReligionTypes)

Defined in
CvCity.cpp, line 6915
Class
CvCity
Hook name
CivHooks::CvCity_UpdateReligion

Hooks

static bool BeforeCvCity_UpdateReligion(CvCity* self, ReligionTypes eNewMajority);static void AfterCvCity_UpdateReligion(CvCity* self, ReligionTypes eNewMajority);static void ReplaceCvCity_UpdateReligion(void (*original)(CvCity*, ReligionTypes), CvCity* self, ReligionTypes eNewMajority);CivRegisterBefore<CivHooks::CvCity_UpdateReligion>(host, &BeforeCvCity_UpdateReligion);CivRegisterAfter<CivHooks::CvCity_UpdateReligion>(host, &AfterCvCity_UpdateReligion);CivRegisterReplace<CivHooks::CvCity_UpdateReligion>(host, &ReplaceCvCity_UpdateReligion);

Code

6914/// Process the majority religion changing for a city6915void CvCity::UpdateReligion(ReligionTypes eNewMajority)6916{6917	updateYield();69186919	// Reset city level yields6920	m_iJONSCulturePerTurnFromReligion = 0;6921	m_iFaithPerTurnFromReligion = 0;6922#if defined(MOD_BUGFIX_MINOR)6923	for(int iYield = 0; iYield < NUM_YIELD_TYPES; iYield++)6924#else6925	for(int iYield = 0; iYield <= YIELD_SCIENCE; iYield++)6926#endif6927	{6928		m_aiBaseYieldRateFromReligion[iYield] = 0;6929	}69306931	for(int iYield = 0; iYield < NUM_YIELD_TYPES; iYield++)6932	{6933		int iYieldPerReligion = GetYieldPerReligionTimes100((YieldTypes)iYield);6934		if (iYieldPerReligion > 0)6935		{6936			switch(iYield)6937			{6938				case YIELD_CULTURE:6939					ChangeJONSCulturePerTurnFromReligion((GetCityReligions()->GetNumReligionsWithFollowers() * iYieldPerReligion) / 100);6940					break;6941				case YIELD_FAITH:6942					ChangeFaithPerTurnFromReligion((GetCityReligions()->GetNumReligionsWithFollowers() * iYieldPerReligion) / 100);6943					break;6944				default:6945					ChangeBaseYieldRateFromReligion((YieldTypes)iYield, (GetCityReligions()->GetNumReligionsWithFollowers() * iYieldPerReligion) / 100);6946					break;6947			}6948		}69496950		if(eNewMajority != NO_RELIGION)6951		{6952			const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eNewMajority, getOwner());6953			if(pReligion)6954			{6955				int iFollowers = GetCityReligions()->GetNumFollowers(eNewMajority);69566957				int iReligionYieldChange = pReligion->m_Beliefs.GetCityYieldChange(getPopulation(), (YieldTypes)iYield);6958#if defined(MOD_API_UNIFIED_YIELDS)6959				if (isCapital()) {6960					iReligionYieldChange += pReligion->m_Beliefs.GetCapitalYieldChange(getPopulation(), (YieldTypes)iYield);6961				}6962				if (isCoastal()) {6963					iReligionYieldChange += pReligion->m_Beliefs.GetCoastalCityYieldChange(getPopulation(), (YieldTypes)iYield);6964				}6965#endif6966				BeliefTypes eSecondaryPantheon = GetCityReligions()->GetSecondaryReligionPantheonBelief();6967				if (eSecondaryPantheon != NO_BELIEF && getPopulation() >= GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetMinPopulation())6968				{6969					iReligionYieldChange += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetCityYieldChange((YieldTypes)iYield);6970#if defined(MOD_API_UNIFIED_YIELDS)6971					if (isCapital()) {6972						iReligionYieldChange += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetCapitalYieldChange((YieldTypes)iYield);6973					}6974					if (isCoastal()) {6975						iReligionYieldChange += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetCoastalCityYieldChange((YieldTypes)iYield);6976					}6977#endif6978				}69796980				switch(iYield)6981				{6982				case YIELD_CULTURE:6983					ChangeJONSCulturePerTurnFromReligion(iReligionYieldChange);6984					break;6985				case YIELD_FAITH:6986					ChangeFaithPerTurnFromReligion(iReligionYieldChange);6987					break;6988				default:6989					ChangeBaseYieldRateFromReligion((YieldTypes)iYield, iReligionYieldChange);6990					break;6991				}69926993				if(IsRouteToCapitalConnected())6994				{6995					int iReligionChange = pReligion->m_Beliefs.GetYieldChangeTradeRoute((YieldTypes)iYield);6996					//BeliefTypes eSecondaryPantheon = GetCityReligions()->GetSecondaryReligionPantheonBelief();6997					if (eSecondaryPantheon != NO_BELIEF)6998					{6999						iReligionChange += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetYieldChangeTradeRoute((YieldTypes)iYield);7000					}70017002					switch(iYield)7003					{7004					case YIELD_CULTURE:7005						ChangeJONSCulturePerTurnFromReligion(iReligionChange);7006						break;7007					case YIELD_FAITH:7008						ChangeFaithPerTurnFromReligion(iReligionChange);7009						break;7010					default:7011						ChangeBaseYieldRateFromReligion((YieldTypes)iYield, iReligionChange);7012						break;7013					}7014				}7015				7016				if (GetCityCitizens()->GetTotalSpecialistCount() > 0)7017				{7018					switch(iYield)7019					{7020					case YIELD_CULTURE:7021						ChangeJONSCulturePerTurnFromReligion(pReligion->m_Beliefs.GetYieldChangeAnySpecialist((YieldTypes)iYield));7022						break;7023					case YIELD_FAITH:7024						ChangeFaithPerTurnFromReligion(pReligion->m_Beliefs.GetYieldChangeAnySpecialist((YieldTypes)iYield));7025						break;7026					default:7027						ChangeBaseYieldRateFromReligion((YieldTypes)iYield, pReligion->m_Beliefs.GetYieldChangeAnySpecialist((YieldTypes)iYield));7028						break;7029					}7030				}70317032				// Buildings7033				for(int jJ = 0; jJ < GC.getNumBuildingClassInfos(); jJ++)7034				{7035					BuildingClassTypes eBuildingClass = (BuildingClassTypes)jJ;70367037					CvBuildingClassInfo* pkBuildingClassInfo = GC.getBuildingClassInfo(eBuildingClass);7038					if(!pkBuildingClassInfo)7039					{7040						continue;7041					}70427043					CvCivilizationInfo& playerCivilizationInfo = getCivilizationInfo();7044					BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings(eBuildingClass);70457046					if(eBuilding != NO_BUILDING)7047					{7048						if(GetCityBuildings()->GetNumBuilding(eBuilding) > 0)7049						{7050							int iYieldFromBuilding = pReligion->m_Beliefs.GetBuildingClassYieldChange(eBuildingClass, (YieldTypes)iYield, iFollowers);7051#if defined(MOD_BUGFIX_MINOR)7052							iYieldFromBuilding *= GetCityBuildings()->GetNumBuilding(eBuilding);7053#endif70547055							if (isWorldWonderClass(*pkBuildingClassInfo))7056							{7057								iYieldFromBuilding += pReligion->m_Beliefs.GetYieldChangeWorldWonder((YieldTypes)iYield);7058							}70597060							switch(iYield)7061							{7062							case YIELD_CULTURE:7063								ChangeJONSCulturePerTurnFromReligion(iYieldFromBuilding);7064								break;7065							case YIELD_FAITH:7066								ChangeFaithPerTurnFromReligion(iYieldFromBuilding);7067								break;7068							default:7069								ChangeBaseYieldRateFromReligion((YieldTypes)iYield, iYieldFromBuilding);7070								break;7071							}7072						}7073					}7074				}7075			}7076		}7077	}70787079	GET_PLAYER(getOwner()).UpdateReligion();7080}

Calls

Called by