Hooks
static bool BeforeCvReligionAI_ChooseEnhancerBelief(CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion, BeliefTypes& result);static void AfterCvReligionAI_ChooseEnhancerBelief(CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion, BeliefTypes& result);static BeliefTypes ReplaceCvReligionAI_ChooseEnhancerBelief(BeliefTypes (*original)(CvReligionAI*, PlayerTypes, ReligionTypes), CvReligionAI* self, PlayerTypes ePlayer, ReligionTypes eReligion);CivRegisterBefore<CivHooks::CvReligionAI_ChooseEnhancerBelief>(host, &BeforeCvReligionAI_ChooseEnhancerBelief);CivRegisterAfter<CivHooks::CvReligionAI_ChooseEnhancerBelief>(host, &AfterCvReligionAI_ChooseEnhancerBelief);CivRegisterReplace<CivHooks::CvReligionAI_ChooseEnhancerBelief>(host, &ReplaceCvReligionAI_ChooseEnhancerBelief);
Code
5195/// Select the belief most helpful to enhance this religion5196#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)5197BeliefTypes CvReligionAI::ChooseEnhancerBelief(PlayerTypes ePlayer, ReligionTypes eReligion)5198#else5199BeliefTypes CvReligionAI::ChooseEnhancerBelief()5200#endif5201{5202 CvGameReligions* pGameReligions = GC.getGame().GetGameReligions();5203 CvWeightedVector<BeliefTypes, SAFE_ESTIMATE_NUM_BELIEFS, true> beliefChoices;52045205#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)5206 std::vector<BeliefTypes> availableBeliefs = pGameReligions->GetAvailableEnhancerBeliefs(ePlayer, eReligion);5207#else5208 std::vector<BeliefTypes> availableBeliefs = pGameReligions->GetAvailableEnhancerBeliefs();5209#endif52105211 for(std::vector<BeliefTypes>::iterator it = availableBeliefs.begin();5212 it!= availableBeliefs.end(); ++it)5213 {5214 const BeliefTypes eBelief = (*it);5215 CvBeliefEntry* pEntry = m_pBeliefs->GetEntry(eBelief);5216 if(pEntry)5217 {5218 const int iScore = ScoreBelief(pEntry);5219#if !defined(MOD_BUGFIX_MINOR)5220 if(iScore > 0)5221 {5222#endif5223 beliefChoices.push_back(eBelief, iScore);5224#if !defined(MOD_BUGFIX_MINOR)5225 }5226#endif5227 }5228 }52295230 // Choose from weighted vector5231 beliefChoices.SortItems();5232 int iNumChoices = MIN(beliefChoices.size(),3); // this was way too loose as choices way down were being selected now only top 35233 RandomNumberDelegate fcn = MakeDelegate(&GC.getGame(), &CvGame::getJonRandNum);5234 BeliefTypes rtnValue = beliefChoices.ChooseFromTopChoices(iNumChoices, &fcn, "Choosing belief from Top Choices");5235 LogBeliefChoices(beliefChoices, rtnValue);52365237 return rtnValue;5238}