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
- CvBeliefEntry::GetCapitalYieldChange(int) const
- CvBeliefEntry::GetCityYieldChange(int) const
- CvBeliefEntry::GetCoastalCityYieldChange(int) const
- CvBeliefEntry::GetMinPopulation() const
- CvBeliefEntry::GetYieldChangeTradeRoute(int) const
- CvBeliefXMLEntries::GetEntry(int)
- CvCity::ChangeBaseYieldRateFromReligion(YieldTypes, int)
- CvCity::ChangeFaithPerTurnFromReligion(int)
- CvCity::ChangeJONSCulturePerTurnFromReligion(int)
- CvCity::GetCityBuildings() const
- CvCity::GetCityCitizens() const
- CvCity::GetCityReligions() const
- CvCity::getCivilizationInfo() const
- CvCity::getOwner() const
- CvCity::getPopulation(bool) const
- CvCity::GetYieldPerReligionTimes100(YieldTypes) const
- CvCity::isCapital() const
- CvCity::isCoastal(int) const
- CvCity::IsRouteToCapitalConnected() const
- CvCity::updateYield()
- CvCityBuildings::GetNumBuilding(BuildingTypes) const
- CvCityCitizens::GetTotalSpecialistCount() const
- CvCityReligions::GetNumFollowers(ReligionTypes)
- CvCityReligions::GetNumReligionsWithFollowers()
- CvCityReligions::GetSecondaryReligionPantheonBelief()
- CvCivilizationInfo::getCivilizationBuildings(int) const
- CvGame::GetGameReligions()
- CvGameReligions::GetReligion(ReligionTypes, PlayerTypes) const
- CvGlobals::getBuildingClassInfo(BuildingClassTypes)
- CvGlobals::getGame()
- CvGlobals::GetGameBeliefs() const
- CvGlobals::getNumBuildingClassInfos()
- CvPlayer::UpdateReligion()
- CvPlayerAI::getPlayer(PlayerTypes)
- CvReligionBeliefs::GetBuildingClassYieldChange(BuildingClassTypes, YieldTypes, int) const
- CvReligionBeliefs::GetCapitalYieldChange(int, YieldTypes) const
- CvReligionBeliefs::GetCityYieldChange(int, YieldTypes) const
- CvReligionBeliefs::GetCoastalCityYieldChange(int, YieldTypes) const
- CvReligionBeliefs::GetYieldChangeAnySpecialist(YieldTypes) const
- CvReligionBeliefs::GetYieldChangeTradeRoute(YieldTypes) const
- CvReligionBeliefs::GetYieldChangeWorldWonder(YieldTypes) const
FAutoVariable::operator=- isWorldWonderClass(const CvBuildingClassInfo &)
std::vector::operator[]
Called by
- CvCity::SetRouteToCapitalConnected(bool)
- CvCity::processBuilding(BuildingTypes, int, bool, bool, bool)
- CvCity::setPopulation(int, bool)
- CvCityCitizens::DoAddSpecialistToBuilding(BuildingTypes, bool)
- CvCityCitizens::DoRemoveSpecialistFromBuilding(BuildingTypes, bool, bool)
- CvCityReligions::AdoptReligionFully(ReligionTypes)
- CvCityReligions::CityConvertsReligion(ReligionTypes, ReligionTypes, PlayerTypes)
- CvGameReligions::UpdateAllCitiesThisReligion(ReligionTypes)