Bazaar developer reference

CvUnit::DoFoundReligion()

Defined in
CvUnit.cpp, line 8261
Class
CvUnit
Hook name
CivHooks::CvUnit_DoFoundReligion

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}

Calls

Called by