Bazaar developer reference

CvGameReligions::CanFoundReligion(PlayerTypes, ReligionTypes, const char *, BeliefTypes, BeliefTypes, BeliefTypes, BeliefTypes, CvCity *)

Defined in
CvReligionClasses.cpp, line 1222
Class
CvGameReligions
Hook name
CivHooks::CvGameReligions_CanFoundReligion

Hooks

static bool BeforeCvGameReligions_CanFoundReligion(CvGameReligions* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, CvCity* pkHolyCity, CvGameReligions::FOUNDING_RESULT& result);static void AfterCvGameReligions_CanFoundReligion(CvGameReligions* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, CvCity* pkHolyCity, CvGameReligions::FOUNDING_RESULT& result);static CvGameReligions::FOUNDING_RESULT ReplaceCvGameReligions_CanFoundReligion(CvGameReligions::FOUNDING_RESULT (*original)(CvGameReligions*, PlayerTypes, ReligionTypes, const char*, BeliefTypes, BeliefTypes, BeliefTypes, BeliefTypes, CvCity*), CvGameReligions* self, PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, CvCity* pkHolyCity);CivRegisterBefore<CivHooks::CvGameReligions_CanFoundReligion>(host, &BeforeCvGameReligions_CanFoundReligion);CivRegisterAfter<CivHooks::CvGameReligions_CanFoundReligion>(host, &AfterCvGameReligions_CanFoundReligion);CivRegisterReplace<CivHooks::CvGameReligions_CanFoundReligion>(host, &ReplaceCvGameReligions_CanFoundReligion);

Code

1221/// Can the supplied religion be created?1222CvGameReligions::FOUNDING_RESULT CvGameReligions::CanFoundReligion(PlayerTypes ePlayer, ReligionTypes eReligion, const char* szCustomName, BeliefTypes eBelief1, BeliefTypes eBelief2, BeliefTypes eBelief3, BeliefTypes eBelief4, CvCity* pkHolyCity)1223{1224	if(GetNumReligionsStillToFound() <= 0)1225		return FOUNDING_NO_RELIGIONS_AVAILABLE;12261227	if(ePlayer == NO_PLAYER)1228		return FOUNDING_INVALID_PLAYER;12291230	if(HasCreatedReligion(ePlayer))1231		return FOUNDING_PLAYER_ALREADY_CREATED_RELIGION;12321233	CvPlayer& kPlayer = GET_PLAYER(ePlayer);12341235	CvReligion kReligion(eReligion, ePlayer, pkHolyCity, false);12361237	// Copy over belief from your pantheon1238#if defined(MOD_API_RELIGION)1239	if (HasCreatedPantheon(ePlayer)) {1240		CvReligionBeliefs beliefs = GC.getGame().GetGameReligions()->GetReligion(RELIGION_PANTHEON, kPlayer.GetID())->m_Beliefs;1241		for(int iI = 0; iI < beliefs.GetNumBeliefs(); iI++) {1242			kReligion.m_Beliefs.AddBelief(beliefs.GetBelief(iI));1243		}1244	}1245#else1246	BeliefTypes eBelief = GC.getGame().GetGameReligions()->GetBeliefInPantheon(kPlayer.GetID());1247	if(eBelief != NO_BELIEF)1248		kReligion.m_Beliefs.AddBelief(eBelief);1249#endif12501251	kReligion.m_Beliefs.AddBelief(eBelief1);1252	kReligion.m_Beliefs.AddBelief(eBelief2);12531254	if(eBelief3 != NO_BELIEF)1255	{1256		kReligion.m_Beliefs.AddBelief(eBelief3);1257	}12581259	if(eBelief4 != NO_BELIEF)1260	{1261		kReligion.m_Beliefs.AddBelief(eBelief4);1262	}12631264	if(szCustomName != NULL && strlen(szCustomName) <= sizeof(kReligion.m_szCustomName))1265	{1266		strcpy_s(kReligion.m_szCustomName, szCustomName);1267	}12681269	// Now see if there are any conflicts.1270	for(ReligionList::const_iterator it = m_CurrentReligions.begin(); it != m_CurrentReligions.end(); it++)1271	{1272		if ((*it).m_eFounder != ePlayer)	// Only check other player's religions1273		{1274			if(kReligion.m_eReligion == (*it).m_eReligion)1275				return FOUNDING_RELIGION_IN_USE;12761277			for(int iSrcBelief = (*it).m_Beliefs.GetNumBeliefs(); iSrcBelief--;)1278			{1279				BeliefTypes eSrcBelief = (*it).m_Beliefs.GetBelief(iSrcBelief);1280				if(eSrcBelief != NO_BELIEF)1281				{1282					for(int iDestBelief = kReligion.m_Beliefs.GetNumBeliefs(); iDestBelief--;)1283					{1284						BeliefTypes eDestBelief = kReligion.m_Beliefs.GetBelief(iDestBelief);1285						if(eDestBelief != NO_BELIEF && eDestBelief == eSrcBelief)1286							return FOUNDING_BELIEF_IN_USE;1287					}1288				}1289			}1290		}1291	}12921293	return FOUNDING_OK;1294}

Calls

Called by