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}