Bazaar developer reference

CvPlayer::getProductionModifier(UnitTypes, CvString *) const

Defined in
CvPlayer.cpp, line 8838
Class
CvPlayer
Hook name
CivHooks::CvPlayer_getProductionModifier_with_UnitTypes_CvString_const

Hooks

static bool BeforeCvPlayer_getProductionModifier_with_UnitTypes_CvString_const(const CvPlayer* self, UnitTypes eUnit, CvString* toolTipSink, int& result);static void AfterCvPlayer_getProductionModifier_with_UnitTypes_CvString_const(const CvPlayer* self, UnitTypes eUnit, CvString* toolTipSink, int& result);static int ReplaceCvPlayer_getProductionModifier_with_UnitTypes_CvString_const(int (*original)(const CvPlayer*, UnitTypes, CvString*), const CvPlayer* self, UnitTypes eUnit, CvString* toolTipSink);CivRegisterBefore<CivHooks::CvPlayer_getProductionModifier_with_UnitTypes_CvString_const>(host, &BeforeCvPlayer_getProductionModifier_with_UnitTypes_CvString_const);CivRegisterAfter<CivHooks::CvPlayer_getProductionModifier_with_UnitTypes_CvString_const>(host, &AfterCvPlayer_getProductionModifier_with_UnitTypes_CvString_const);CivRegisterReplace<CivHooks::CvPlayer_getProductionModifier_with_UnitTypes_CvString_const>(host, &ReplaceCvPlayer_getProductionModifier_with_UnitTypes_CvString_const);

Code

8838int CvPlayer::getProductionModifier(UnitTypes eUnit, CvString* toolTipSink) const8839{8840	int iMultiplier = getProductionModifier(toolTipSink);8841	int iTempMod;88428843	CvUnitEntry* pUnitEntry = GC.getUnitInfo(eUnit);88448845	if(pUnitEntry)8846	{8847		// Military bonus8848		if(pUnitEntry->IsMilitaryProduction())8849		{8850			iTempMod = getMilitaryProductionModifier();8851			iMultiplier += iTempMod;8852			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_MILITARY_PLAYER", iTempMod);8853		}88548855		// Settler bonus8856		if(pUnitEntry->IsFound())8857		{8858			iTempMod = getSettlerProductionModifier();8859			iMultiplier += iTempMod;8860			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_SETTLER_PLAYER", iTempMod);8861		}88628863		// Unit Combat class bonus8864		if(pUnitEntry->GetUnitCombatType() != NO_UNITCOMBAT)8865		{8866			iTempMod = getUnitCombatProductionModifiers((UnitCombatTypes) pUnitEntry->GetUnitCombatType());8867			iMultiplier += iTempMod;8868			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_UNIT_COBMAT_CLASS_PLAYER", iTempMod);8869		}88708871		// Trait bonus8872		int iNumTraits = GC.getNumTraitInfos();8873		CvPlayerTraits* pPlayerTraits = GetPlayerTraits();8874		for(int iI = 0; iI < iNumTraits; iI++)8875		{8876			if(pPlayerTraits->HasTrait((TraitTypes)iI))8877			{8878				iMultiplier += pUnitEntry->GetProductionTraits(iI);88798880				if(pUnitEntry->GetSpecialUnitType() != NO_SPECIALUNIT)8881				{8882					CvSpecialUnitInfo* pkSpecialUnitInfo = GC.getSpecialUnitInfo((SpecialUnitTypes) pUnitEntry->GetSpecialUnitType());8883					if(pkSpecialUnitInfo)8884					{8885						iTempMod = pkSpecialUnitInfo->getProductionTraits(iI);8886						iMultiplier += iTempMod;8887						GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_PRODMOD_UNIT_TRAIT", iTempMod);8888					}8889				}8890			}8891		}8892	}88938894	return iMultiplier;8895}

Calls

Called by