Hooks
static bool BeforeCvCityReligions_SimulateProphetSpread(CvCityReligions* self, ReligionTypes eReligion, int iPressure);static void AfterCvCityReligions_SimulateProphetSpread(CvCityReligions* self, ReligionTypes eReligion, int iPressure);static void ReplaceCvCityReligions_SimulateProphetSpread(void (*original)(CvCityReligions*, ReligionTypes, int), CvCityReligions* self, ReligionTypes eReligion, int iPressure);CivRegisterBefore<CivHooks::CvCityReligions_SimulateProphetSpread>(host, &BeforeCvCityReligions_SimulateProphetSpread);CivRegisterAfter<CivHooks::CvCityReligions_SimulateProphetSpread>(host, &AfterCvCityReligions_SimulateProphetSpread);CivRegisterReplace<CivHooks::CvCityReligions_SimulateProphetSpread>(host, &ReplaceCvCityReligions_SimulateProphetSpread);
Code
4040/// Simulate prophet spread4041void CvCityReligions::SimulateProphetSpread(ReligionTypes eReligion, int iPressure)4042{4043 int iAtheismPressure = 0;4044 int iReligionPressure = 0;4045 int iPressureRetained = 0;4046 ReligionTypes ePressureRetainedReligion = NO_RELIGION;40474048 CopyToSimulatedStatus();40494050 ReligionInCityList::iterator it;4051 for(it = m_SimulatedStatus.begin(); it != m_SimulatedStatus.end(); it++)4052 {4053 if(it->m_eReligion == NO_RELIGION)4054 {4055 iAtheismPressure = it->m_iPressure;4056 }4057 else if(eReligion == it->m_eReligion)4058 {4059 iReligionPressure = it->m_iPressure;4060 }40614062 if (it->m_eReligion > RELIGION_PANTHEON && eReligion != it->m_eReligion)4063 {4064 const CvReligion *pReligion = GC.getGame().GetGameReligions()->GetReligion(it->m_eReligion, NO_PLAYER);4065 int iPressureRetention = pReligion->m_Beliefs.GetInquisitorPressureRetention(); // Normally 04066 if (iPressureRetention > 0)4067 {4068 ePressureRetainedReligion = it->m_eReligion;4069 iPressureRetained = it->m_iPressure * iPressureRetention / 100;4070 }4071 }4072 }40734074 // Clear list4075 m_SimulatedStatus.clear();40764077 // Add atheists and this back in4078 CvReligionInCity atheism(NO_RELIGION, false, 0, iAtheismPressure);4079 m_SimulatedStatus.push_back(atheism);4080 CvReligionInCity prophetReligion(eReligion, false, 0, iReligionPressure + iPressure);4081 m_SimulatedStatus.push_back(prophetReligion);40824083 if (ePressureRetainedReligion != NO_RELIGION)4084 {4085 CvReligionInCity pressureRetainedReligion(ePressureRetainedReligion, false, 0, iPressureRetained);4086 m_SimulatedStatus.push_back(pressureRetainedReligion);40874088 }40894090 SimulateFollowers();4091}