CvReligionAI::BuyMissionary(ReligionTypes)
- Defined in
- CvReligionClasses.cpp, line 5980
- Class
- CvReligionAI
- Hook name
CivHooks::CvReligionAI_BuyMissionary
Hooks
static bool BeforeCvReligionAI_BuyMissionary(CvReligionAI* self, ReligionTypes eReligion);static void AfterCvReligionAI_BuyMissionary(CvReligionAI* self, ReligionTypes eReligion);static void ReplaceCvReligionAI_BuyMissionary(void (*original)(CvReligionAI*, ReligionTypes), CvReligionAI* self, ReligionTypes eReligion);CivRegisterBefore<CivHooks::CvReligionAI_BuyMissionary>(host, &BeforeCvReligionAI_BuyMissionary);CivRegisterAfter<CivHooks::CvReligionAI_BuyMissionary>(host, &AfterCvReligionAI_BuyMissionary);CivRegisterReplace<CivHooks::CvReligionAI_BuyMissionary>(host, &ReplaceCvReligionAI_BuyMissionary);
Code
5979/// Pick the right city to purchase a missionary in5980void CvReligionAI::BuyMissionary(ReligionTypes eReligion)5981{5982 CvPlayer &kPlayer = GET_PLAYER(m_pPlayer->GetID());5983#if defined(MOD_BUGFIX_UNITCLASS_NOT_UNIT)5984 UnitTypes eMissionary = kPlayer.GetSpecificUnitType("UNITCLASS_MISSIONARY");5985#else5986 UnitTypes eMissionary = (UnitTypes)GC.getInfoTypeForString("UNIT_MISSIONARY");5987#endif5988 CvCity *pCapital = kPlayer.getCapitalCity();5989 if (pCapital)5990 {5991 int iCost = pCapital->GetFaithPurchaseCost(eMissionary, true /*bIncludeBeliefDiscounts*/);5992 if (iCost <= kPlayer.GetFaith())5993 {5994 CvCity *pBestCity = CvReligionAIHelpers::GetBestCityFaithUnitPurchase(kPlayer, eMissionary, eReligion);5995 if (pBestCity)5996 {5997 pBestCity->Purchase(eMissionary, (BuildingTypes)-1, (ProjectTypes)-1, YIELD_FAITH);5998 }5999 }6000 }6001}
Calls
- CvCity::GetFaithPurchaseCost(UnitTypes, bool)
- CvCity::Purchase(UnitTypes, BuildingTypes, ProjectTypes, YieldTypes)
- CvPlayer::getCapitalCity()
- CvPlayer::GetFaith() const
- CvPlayer::GetID() const
- CvPlayer::GetSpecificUnitType(const char *, bool)
- CvPlayerAI::getPlayer(PlayerTypes)
- CvReligionAIHelpers::GetBestCityFaithUnitPurchase(CvPlayer &, UnitTypes, ReligionTypes)