Hooks
static bool BeforeCvCityReligions_AddReligiousPressure(CvCityReligions* self, CvReligiousFollowChangeReason eReason, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer);static void AfterCvCityReligions_AddReligiousPressure(CvCityReligions* self, CvReligiousFollowChangeReason eReason, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer);static void ReplaceCvCityReligions_AddReligiousPressure(void (*original)(CvCityReligions*, CvReligiousFollowChangeReason, ReligionTypes, int, PlayerTypes), CvCityReligions* self, CvReligiousFollowChangeReason eReason, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer);CivRegisterBefore<CivHooks::CvCityReligions_AddReligiousPressure>(host, &BeforeCvCityReligions_AddReligiousPressure);CivRegisterAfter<CivHooks::CvCityReligions_AddReligiousPressure>(host, &AfterCvCityReligions_AddReligiousPressure);CivRegisterReplace<CivHooks::CvCityReligions_AddReligiousPressure>(host, &ReplaceCvCityReligions_AddReligiousPressure);
Code
3996/// Add pressure to recruit followers to a religion3997void CvCityReligions::AddReligiousPressure(CvReligiousFollowChangeReason eReason, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer)3998{3999 bool bFoundIt = false;40004001 ReligionTypes eOldMajorityReligion = GetReligiousMajority();40024003 ReligionInCityList::iterator it;4004 for(it = m_ReligionStatus.begin(); it != m_ReligionStatus.end(); it++)4005 {4006 if(it->m_eReligion == eReligion)4007 {4008 it->m_iPressure += iPressure;4009 bFoundIt = true;4010 }40114012 // If this is pressure from a real religion, reduce presence of pantheon by the same amount4013 else if(eReligion > RELIGION_PANTHEON && it->m_eReligion == RELIGION_PANTHEON)4014 {4015 it->m_iPressure = max(0, (it->m_iPressure - iPressure));4016 }40174018 else if (it->m_eReligion > RELIGION_PANTHEON && eReason == FOLLOWER_CHANGE_MISSIONARY)4019 {4020 const CvReligion *pReligion = GC.getGame().GetGameReligions()->GetReligion(eReligion, NO_PLAYER);4021 int iPressureErosion = pReligion->m_Beliefs.GetOtherReligionPressureErosion(); // Normally 04022 if (iPressureErosion > 0)4023 {4024 int iErosionAmount = iPressureErosion * iPressure / 100;4025 it->m_iPressure = max(0, (it->m_iPressure - iErosionAmount));4026 }4027 }4028 }40294030 // Didn't find it, add new entry4031 if(!bFoundIt)4032 {4033 CvReligionInCity newReligion(eReligion, false, 0, iPressure);4034 m_ReligionStatus.push_back(newReligion);4035 }40364037 RecomputeFollowers(eReason, eOldMajorityReligion, eResponsiblePlayer);4038}