Hooks
static bool BeforeCvReligionAI_ChooseFounderBelief(CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion, BeliefTypes& result);static void AfterCvReligionAI_ChooseFounderBelief(CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion, BeliefTypes& result);static BeliefTypes ReplaceCvReligionAI_ChooseFounderBelief(BeliefTypes (*original)(CvReligionAI*, PlayerTypes, ReligionTypes), CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion);CivRegisterBefore<CivHooks::CvReligionAI_ChooseFounderBelief>(host, &BeforeCvReligionAI_ChooseFounderBelief);CivRegisterAfter<CivHooks::CvReligionAI_ChooseFounderBelief>(host, &AfterCvReligionAI_ChooseFounderBelief);CivRegisterReplace<CivHooks::CvReligionAI_ChooseFounderBelief>(host, &ReplaceCvReligionAI_ChooseFounderBelief);
Code
5105/// Select the belief most helpful to this pantheon5106#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)5107BeliefTypes CvReligionAI::ChooseFounderBelief(PlayerTypes ePlayer, ReligionTypes eReligion)5108#else5109BeliefTypes CvReligionAI::ChooseFounderBelief()5110#endif5111{5112 CvGameReligions* pGameReligions = GC.getGame().GetGameReligions();5113 CvWeightedVector<BeliefTypes, SAFE_ESTIMATE_NUM_BELIEFS, true> beliefChoices;51145115#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)5116 std::vector<BeliefTypes> availableBeliefs = pGameReligions->GetAvailableFounderBeliefs(ePlayer, eReligion);5117#else5118 std::vector<BeliefTypes> availableBeliefs = pGameReligions->GetAvailableFounderBeliefs();5119#endif51205121 for(std::vector<BeliefTypes>::iterator it = availableBeliefs.begin();5122 it!= availableBeliefs.end(); ++it)5123 {5124 const BeliefTypes eBelief = (*it);5125 CvBeliefEntry* pEntry = m_pBeliefs->GetEntry(eBelief);5126 if(pEntry)5127 {5128 const int iScore = ScoreBelief(pEntry);5129#if !defined(MOD_BUGFIX_MINOR)5130 if(iScore > 0)5131 {5132#endif5133 beliefChoices.push_back(eBelief, iScore);5134#if !defined(MOD_BUGFIX_MINOR)5135 }5136#endif5137 }5138 }51395140 // Choose from weighted vector5141 beliefChoices.SortItems();5142 int iNumChoices = MIN(beliefChoices.size(),3); // this was way too loose as choices way down were being selected now only top 35143 RandomNumberDelegate fcn = MakeDelegate(&GC.getGame(), &CvGame::getJonRandNum);5144 BeliefTypes rtnValue = beliefChoices.ChooseFromTopChoices(iNumChoices, &fcn, "Choosing belief from Top Choices");5145 LogBeliefChoices(beliefChoices, rtnValue);51465147 return rtnValue;5148}