Bazaar developer reference

CvReligionAI::ChooseFollowerBelief(PlayerTypes, ReligionTypes)

Defined in
CvReligionClasses.cpp, line 5152
Class
CvReligionAI
Hook name
CivHooks::CvReligionAI_ChooseFollowerBelief

Hooks

static bool BeforeCvReligionAI_ChooseFollowerBelief(CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion, BeliefTypes& result);static void AfterCvReligionAI_ChooseFollowerBelief(CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion, BeliefTypes& result);static BeliefTypes ReplaceCvReligionAI_ChooseFollowerBelief(BeliefTypes (*original)(CvReligionAI*, PlayerTypes, ReligionTypes), CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion);CivRegisterBefore<CivHooks::CvReligionAI_ChooseFollowerBelief>(host, &BeforeCvReligionAI_ChooseFollowerBelief);CivRegisterAfter<CivHooks::CvReligionAI_ChooseFollowerBelief>(host, &AfterCvReligionAI_ChooseFollowerBelief);CivRegisterReplace<CivHooks::CvReligionAI_ChooseFollowerBelief>(host, &ReplaceCvReligionAI_ChooseFollowerBelief);

Code

5150/// Select the belief most helpful to this pantheon5151#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)5152BeliefTypes CvReligionAI::ChooseFollowerBelief(PlayerTypes ePlayer, ReligionTypes eReligion)5153#else5154BeliefTypes CvReligionAI::ChooseFollowerBelief()5155#endif5156{5157	CvGameReligions* pGameReligions = GC.getGame().GetGameReligions();5158	CvWeightedVector<BeliefTypes, SAFE_ESTIMATE_NUM_BELIEFS, true> beliefChoices;51595160#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)5161	std::vector<BeliefTypes> availableBeliefs = pGameReligions->GetAvailableFollowerBeliefs(ePlayer, eReligion);5162#else5163	std::vector<BeliefTypes> availableBeliefs = pGameReligions->GetAvailableFollowerBeliefs();5164#endif51655166	for(std::vector<BeliefTypes>::iterator it = availableBeliefs.begin();5167	        it!= availableBeliefs.end(); ++it)5168	{5169		const BeliefTypes eBelief = (*it);5170		CvBeliefEntry* pEntry = m_pBeliefs->GetEntry(eBelief);5171		if(pEntry)5172		{5173			const int iScore = ScoreBelief(pEntry);5174#if !defined(MOD_BUGFIX_MINOR)5175			if(iScore > 0)5176			{5177#endif5178				beliefChoices.push_back(eBelief, iScore);5179#if !defined(MOD_BUGFIX_MINOR)5180			}5181#endif5182		}5183	}51845185	// Choose from weighted vector5186	beliefChoices.SortItems();5187	int iNumChoices = MIN(beliefChoices.size(),3);   // this was way too loose as choices way down were being selected now only top 35188	RandomNumberDelegate fcn = MakeDelegate(&GC.getGame(), &CvGame::getJonRandNum);5189	BeliefTypes rtnValue = beliefChoices.ChooseFromTopChoices(iNumChoices, &fcn, "Choosing belief from Top Choices");5190	LogBeliefChoices(beliefChoices, rtnValue);51915192	return rtnValue;5193}

Calls

Called by