Bazaar developer reference

CvGameReligions::GetAvailableBonusBeliefs(PlayerTypes, ReligionTypes)

Defined in
CvReligionClasses.cpp, line 2225
Class
CvGameReligions
Hook name
CivHooks::CvGameReligions_GetAvailableBonusBeliefs
Lua events
GameEvents.ReligionCanHaveBelief

Hooks

static bool BeforeCvGameReligions_GetAvailableBonusBeliefs(CvGameReligions* self, PlayerTypes ePlayer, ReligionTypes eReligion, std::vector<BeliefTypes>& result);static void AfterCvGameReligions_GetAvailableBonusBeliefs(CvGameReligions* self, PlayerTypes ePlayer, ReligionTypes eReligion, std::vector<BeliefTypes>& result);static std::vector<BeliefTypes> ReplaceCvGameReligions_GetAvailableBonusBeliefs(std::vector<BeliefTypes> (*original)(CvGameReligions*, PlayerTypes, ReligionTypes), CvGameReligions* self, PlayerTypes ePlayer, ReligionTypes eReligion);CivRegisterBefore<CivHooks::CvGameReligions_GetAvailableBonusBeliefs>(host, &BeforeCvGameReligions_GetAvailableBonusBeliefs);CivRegisterAfter<CivHooks::CvGameReligions_GetAvailableBonusBeliefs>(host, &AfterCvGameReligions_GetAvailableBonusBeliefs);CivRegisterReplace<CivHooks::CvGameReligions_GetAvailableBonusBeliefs>(host, &ReplaceCvGameReligions_GetAvailableBonusBeliefs);

Code

2223/// List of all beliefs still available2224#if defined(MOD_EVENTS_ACQUIRE_BELIEFS) || defined(MOD_TRAITS_ANY_BELIEF)2225std::vector<BeliefTypes> CvGameReligions::GetAvailableBonusBeliefs(PlayerTypes ePlayer, ReligionTypes eReligion)2226#else2227std::vector<BeliefTypes> CvGameReligions::GetAvailableBonusBeliefs()2228#endif2229{2230	std::vector<BeliefTypes> availableBeliefs;22312232	CvBeliefXMLEntries* pkBeliefs = GC.GetGameBeliefs();2233	const int iNumBeleifs = pkBeliefs->GetNumBeliefs();22342235	availableBeliefs.reserve(iNumBeleifs);2236	for(int iI = 0; iI < iNumBeleifs; iI++)2237	{2238		const BeliefTypes eBelief(static_cast<BeliefTypes>(iI));2239#if defined(MOD_TRAITS_ANY_BELIEF)2240		if(!IsInSomeReligion(eBelief, ePlayer))2241#else2242		if(!IsInSomeReligion(eBelief))2243#endif2244		{2245			CvBeliefEntry* pEntry = pkBeliefs->GetEntry(eBelief);2246			if(pEntry && (pEntry->IsEnhancerBelief() || pEntry->IsFollowerBelief() || pEntry->IsFounderBelief() || pEntry->IsPantheonBelief()))2247			{2248#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)2249				bool bAvailable = true;22502251				if (MOD_EVENTS_ACQUIRE_BELIEFS) {2252					if (GAMEEVENTINVOKE_TESTALL(GAMEEVENT_ReligionCanHaveBelief, ePlayer, eReligion, eBelief) == GAMEEVENTRETURN_FALSE) {2253						bAvailable = false;2254					}2255				}22562257				if (bAvailable) {2258#endif2259					availableBeliefs.push_back(eBelief);2260#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)2261				}2262#endif2263			}2264		}2265	}22662267	return availableBeliefs;2268}

Calls

Called by