Bazaar developer reference

CvCityReligions::AddProphetSpread(ReligionTypes, int, PlayerTypes)

Defined in
CvReligionClasses.cpp, line 3920
Class
CvCityReligions
Hook name
CivHooks::CvCityReligions_AddProphetSpread

Hooks

static bool BeforeCvCityReligions_AddProphetSpread(CvCityReligions* self, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer);static void AfterCvCityReligions_AddProphetSpread(CvCityReligions* self, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer);static void ReplaceCvCityReligions_AddProphetSpread(void (*original)(CvCityReligions*, ReligionTypes, int, PlayerTypes), CvCityReligions* self, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer);CivRegisterBefore<CivHooks::CvCityReligions_AddProphetSpread>(host, &BeforeCvCityReligions_AddProphetSpread);CivRegisterAfter<CivHooks::CvCityReligions_AddProphetSpread>(host, &AfterCvCityReligions_AddProphetSpread);CivRegisterReplace<CivHooks::CvCityReligions_AddProphetSpread>(host, &ReplaceCvCityReligions_AddProphetSpread);

Code

3919/// Prophet spread is very powerful: eliminates all existing religions and adds to his3920void CvCityReligions::AddProphetSpread(ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer)3921{3922	int iAtheismPressure = 0;3923	int iReligionPressure = 0;3924	int iPressureRetained = 0;3925	ReligionTypes eOldMajorityReligion = GetReligiousMajority();3926	ReligionTypes eHolyCityReligion = NO_RELIGION;3927	ReligionTypes ePressureRetainedReligion = NO_RELIGION;3928	bool bProphetsReligionFoundedHere = false;39293930	ReligionInCityList::iterator it;3931	for(it = m_ReligionStatus.begin(); it != m_ReligionStatus.end(); it++)3932	{3933		if (it->m_eReligion == NO_RELIGION)3934		{3935			iAtheismPressure = it->m_iPressure;3936		}3937		else if (eReligion == it->m_eReligion)3938		{3939			iReligionPressure = it->m_iPressure;3940			if (it->m_bFoundedHere)3941			{3942				bProphetsReligionFoundedHere = true;3943			}3944		}3945		else if (it->m_bFoundedHere)3946		{3947			eHolyCityReligion = it->m_eReligion;3948		}39493950		if (it->m_eReligion > RELIGION_PANTHEON &&  it->m_eReligion != eReligion)3951		{3952			const CvReligion *pReligion = GC.getGame().GetGameReligions()->GetReligion(it->m_eReligion, NO_PLAYER);3953			int iPressureRetention = pReligion->m_Beliefs.GetInquisitorPressureRetention();  // Normally 03954			if (iPressureRetention > 0)3955			{3956				ePressureRetainedReligion = it->m_eReligion;3957				iPressureRetained = it->m_iPressure * iPressureRetention / 100;3958			}3959		}3960	}39613962	// Clear list3963	m_ReligionStatus.clear();39643965	// Add atheists and this back in3966	CvReligionInCity atheism(NO_RELIGION, false/*bFoundedHere*/, 0, iAtheismPressure);3967	m_ReligionStatus.push_back(atheism);3968	CvReligionInCity prophetReligion(eReligion, bProphetsReligionFoundedHere, 0, iReligionPressure + iPressure);3969	m_ReligionStatus.push_back(prophetReligion);39703971	// Reestablish Holy City religion3972	if (eHolyCityReligion != NO_RELIGION && !bProphetsReligionFoundedHere)3973	{3974		if (eHolyCityReligion == ePressureRetainedReligion)3975		{3976			CvReligionInCity holyCityReligion(eHolyCityReligion, true/*bFoundedHere*/, 0, iPressureRetained);3977			m_ReligionStatus.push_back(holyCityReligion);			3978		}3979		else3980		{3981			CvReligionInCity holyCityReligion(eHolyCityReligion, true/*bFoundedHere*/, 0, 0);3982			m_ReligionStatus.push_back(holyCityReligion);3983		}3984	}39853986	// Reestablish pressure-retained religion (if wasn't Holy City religion)3987	if (ePressureRetainedReligion != NO_RELIGION && eHolyCityReligion != ePressureRetainedReligion)3988	{3989		CvReligionInCity pressureRetainedReligion(ePressureRetainedReligion, false/*bFoundedHere*/, 0, iPressureRetained);3990		m_ReligionStatus.push_back(pressureRetainedReligion);3991	}39923993	RecomputeFollowers(FOLLOWER_CHANGE_PROPHET, eOldMajorityReligion, eResponsiblePlayer);3994}

Calls

Called by