Bazaar developer reference

CvUnit::GetNearbyImprovementModifier(ImprovementTypes, int, int) const

Defined in
CvUnit.cpp, line 18882
Class
CvUnit
Hook name
CivHooks::CvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const

Hooks

static bool BeforeCvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const(const CvUnit* self, ImprovementTypes eBonusImprovement, int iImprovementRange, int iImprovementModifier, int& result);static void AfterCvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const(const CvUnit* self, ImprovementTypes eBonusImprovement, int iImprovementRange, int iImprovementModifier, int& result);static int ReplaceCvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const(int (*original)(const CvUnit*, ImprovementTypes, int, int), const CvUnit* self, ImprovementTypes eBonusImprovement, int iImprovementRange, int iImprovementModifier);CivRegisterBefore<CivHooks::CvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const>(host, &BeforeCvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const);CivRegisterAfter<CivHooks::CvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const>(host, &AfterCvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const);CivRegisterReplace<CivHooks::CvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const>(host, &ReplaceCvUnit_GetNearbyImprovementModifier_with_ImprovementTypes_int_int_const);

Code

18882int CvUnit::GetNearbyImprovementModifier(ImprovementTypes eBonusImprovement, int iImprovementRange, int iImprovementModifier)const18883#else18884int CvUnit::GetNearbyImprovementModifier()const18885#endif18886{18887	VALIDATE_OBJECT18888#if !defined(MOD_PROMOTIONS_IMPROVEMENT_BONUS)18889#if defined(MOD_BUGFIX_USE_GETTERS)18890		CvPlayer& kPlayer = GET_MY_PLAYER();18891#else18892		CvPlayer& kPlayer = GET_PLAYER(m_eOwner);18893#endif18894	int iImprovementRange = kPlayer.GetPlayerTraits()->GetNearbyImprovementBonusRange();18895	int iImprovementModifier = kPlayer.GetPlayerTraits()->GetNearbyImprovementCombatBonus();18896#endif1889718898	if(iImprovementModifier != 0)18899	{18900		CvPlot* pLoopPlot;1890118902		// Look around this Unit to see if there's an improvement nearby18903		for(int iX = -iImprovementRange; iX <= iImprovementRange; iX++)18904		{18905			for(int iY = -iImprovementRange; iY <= iImprovementRange; iY++)18906			{18907				pLoopPlot = plotXYWithRangeCheck(getX(), getY(), iX, iY, iImprovementRange);1890818909				if(pLoopPlot != NULL)18910				{18911					// Is the right improvement here?18912#if defined(MOD_PROMOTIONS_IMPROVEMENT_BONUS)18913					if(pLoopPlot->getImprovementType() == eBonusImprovement)18914#else18915					if(pLoopPlot->getImprovementType() == kPlayer.GetPlayerTraits()->GetCombatBonusImprovementType())18916#endif18917					{18918						return iImprovementModifier;18919					}18920				}18921			}18922		}18923	}1892418925	return 0;18926}

Calls

Called by