Hooks
static bool BeforeCvUnit_DoFoundReligion(CvUnit* self, bool& result);static void AfterCvUnit_DoFoundReligion(CvUnit* self, bool& result);static bool ReplaceCvUnit_DoFoundReligion(bool (*original)(CvUnit*), CvUnit* self);CivRegisterBefore<CivHooks::CvUnit_DoFoundReligion>(host, &BeforeCvUnit_DoFoundReligion);CivRegisterAfter<CivHooks::CvUnit_DoFoundReligion>(host, &AfterCvUnit_DoFoundReligion);CivRegisterReplace<CivHooks::CvUnit_DoFoundReligion>(host, &ReplaceCvUnit_DoFoundReligion);
Code
8261bool CvUnit::DoFoundReligion()8262{8263 CvGameReligions* pReligions = GC.getGame().GetGameReligions();82648265 CvPlot* pkPlot = plot();8266 CvCity* pkCity = (NULL != pkPlot)? pkPlot->getPlotCity() : NULL;82678268 if(pkPlot != NULL && pkCity != NULL)8269 {8270 if(CanFoundReligion(pkPlot))8271 {8272 CvPlayerAI& kOwner = GET_PLAYER(getOwner());8273 if(kOwner.isHuman())8274 {8275 CvAssertMsg(pkCity != NULL, "No City??");82768277 CvNotifications* pNotifications = kOwner.GetNotifications();8278 if(pNotifications)8279 {8280 CvString strBuffer = GetLocalizedText("TXT_KEY_NOTIFICATION_FOUND_RELIGION");8281 CvString strSummary = GetLocalizedText("TXT_KEY_NOTIFICATION_SUMMARY_FOUND_RELIGION");8282 pNotifications->Add(NOTIFICATION_FOUND_RELIGION, strBuffer, strSummary, pkPlot->getX(), pkPlot->getY(), -1, pkCity->GetID());8283 }8284 kOwner.GetReligions()->SetFoundingReligion(true);8285#if defined(MOD_EVENTS_GREAT_PEOPLE)8286 kOwner.DoGreatPersonExpended(getUnitType(), this);8287#else8288 kOwner.DoGreatPersonExpended(getUnitType());8289#endif8290 kill(true);8291 }8292 else8293 {8294 ReligionTypes eReligion = pReligions->GetReligionToFound(getOwner());8295 if(eReligion != NO_RELIGION)8296 {8297 // Pick beliefs for this religion8298 BeliefTypes eBeliefs[4];8299 eBeliefs[2] = NO_BELIEF;8300 eBeliefs[3] = NO_BELIEF;8301 int iIndex = 0;8302 if(!kOwner.GetReligions()->HasCreatedPantheon())8303 {8304#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)8305 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChoosePantheonBelief(kOwner.GetID());8306#else8307 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChoosePantheonBelief();8308#endif8309 iIndex++;8310 }8311#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)8312 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChooseFollowerBelief(kOwner.GetID(), eReligion);8313#else8314 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChooseFollowerBelief();8315#endif8316 iIndex++;8317#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)8318 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChooseFounderBelief(kOwner.GetID(), eReligion);8319#else8320 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChooseFounderBelief();8321#endif8322 iIndex++;83238324 if(kOwner.GetPlayerTraits()->IsBonusReligiousBelief())8325 {8326#if defined(MOD_EVENTS_ACQUIRE_BELIEFS)8327 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChooseBonusBelief(kOwner.GetID(), eReligion, eBeliefs[0], eBeliefs[1], eBeliefs[2]);8328#else8329 eBeliefs[iIndex] = kOwner.GetReligionAI()->ChooseBonusBelief(eBeliefs[0], eBeliefs[1], eBeliefs[2]);8330#endif8331 }83328333 pReligions->FoundReligion(getOwner(), eReligion, NULL, eBeliefs[0], eBeliefs[1], eBeliefs[2], eBeliefs[3], pkCity);8334#if defined(MOD_EVENTS_GREAT_PEOPLE)8335 kOwner.DoGreatPersonExpended(getUnitType(), this);8336#else8337 kOwner.DoGreatPersonExpended(getUnitType());8338#endif8339 kill(true);8340 }8341 else8342 {8343 CvAssertMsg(false, "No religions available to found.");8344 }8345 }8346 }8347 }83488349 return false;8350}