Bazaar developer reference

CvCity::GetYieldPerTurnFromUnimprovedFeatures(YieldTypes) const

Defined in
CvCity.cpp, line 8661
Class
CvCity
Hook name
CivHooks::CvCity_GetYieldPerTurnFromUnimprovedFeatures

Hooks

static bool BeforeCvCity_GetYieldPerTurnFromUnimprovedFeatures(const CvCity* self, YieldTypes eYield, int& result);static void AfterCvCity_GetYieldPerTurnFromUnimprovedFeatures(const CvCity* self, YieldTypes eYield, int& result);static int ReplaceCvCity_GetYieldPerTurnFromUnimprovedFeatures(int (*original)(const CvCity*, YieldTypes), const CvCity* self, YieldTypes eYield);CivRegisterBefore<CivHooks::CvCity_GetYieldPerTurnFromUnimprovedFeatures>(host, &BeforeCvCity_GetYieldPerTurnFromUnimprovedFeatures);CivRegisterAfter<CivHooks::CvCity_GetYieldPerTurnFromUnimprovedFeatures>(host, &AfterCvCity_GetYieldPerTurnFromUnimprovedFeatures);CivRegisterReplace<CivHooks::CvCity_GetYieldPerTurnFromUnimprovedFeatures>(host, &ReplaceCvCity_GetYieldPerTurnFromUnimprovedFeatures);

Code

8660#if defined(MOD_API_UNIFIED_YIELDS)8661int CvCity::GetYieldPerTurnFromUnimprovedFeatures(YieldTypes eYield) const8662{8663	VALIDATE_OBJECT8664	int iYield = 0;86658666	CvPlayer& kPlayer = GET_PLAYER(getOwner());8667	ReligionTypes eMajority = GetCityReligions()->GetReligiousMajority();8668	const CvReligion* pReligion = (eMajority == NO_RELIGION) ? NULL : GC.getGame().GetGameReligions()->GetReligion(eMajority, getOwner());8669	BeliefTypes eSecondaryPantheon = GetCityReligions()->GetSecondaryReligionPantheonBelief();86708671	for (int iI = 0; iI < GC.getNumFeatureInfos(); iI++)8672	{8673		FeatureTypes eFeature = (FeatureTypes) iI;86748675		if (!GC.getFeatureInfo(eFeature)->IsNaturalWonder()) {8676			int iBaseYield = kPlayer.getCityYieldFromUnimprovedFeature(eFeature, eYield);8677			iBaseYield += kPlayer.GetPlayerTraits()->GetCityYieldFromUnimprovedFeature(eFeature, eYield);8678		8679			if(pReligion)8680			{8681				iBaseYield += pReligion->m_Beliefs.GetCityYieldFromUnimprovedFeature(eFeature, eYield);8682				if (eSecondaryPantheon != NO_BELIEF)8683				{8684					iBaseYield += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetCityYieldFromUnimprovedFeature(eFeature, eYield);8685				}8686			}86878688			if (eYield == YIELD_FAITH && eFeature == FEATURE_FOREST && kPlayer.GetPlayerTraits()->IsFaithFromUnimprovedForest())8689			{8690				++iBaseYield;8691			}8692		8693			if (iBaseYield > 0)8694			{8695				int iAdjacentFeatures = 0;86968697				for (int iDirectionLoop = 0; iDirectionLoop < NUM_DIRECTION_TYPES; ++iDirectionLoop)8698				{8699					CvPlot* pAdjacentPlot = plotDirection(getX(), getY(), ((DirectionTypes)iDirectionLoop));8700					if (pAdjacentPlot && pAdjacentPlot->getFeatureType() == eFeature && pAdjacentPlot->getImprovementType() == NO_IMPROVEMENT)8701					{8702						iAdjacentFeatures++;8703					}8704				}87058706				if (iAdjacentFeatures > 2)8707				{8708					iYield += iBaseYield * 2;8709				}8710				else if (iAdjacentFeatures > 0)8711				{8712					iYield += iBaseYield;8713				}8714			}8715		}8716	}8717	8718	return iYield;8719}

Calls

Called by