Bazaar developer reference

CvUnit::GetBaseCombatStrengthConsideringDamage() const

Defined in
CvUnit.cpp, line 12128
Class
CvUnit
Hook name
CivHooks::CvUnit_GetBaseCombatStrengthConsideringDamage

Hooks

static bool BeforeCvUnit_GetBaseCombatStrengthConsideringDamage(const CvUnit* self, int& result);static void AfterCvUnit_GetBaseCombatStrengthConsideringDamage(const CvUnit* self, int& result);static int ReplaceCvUnit_GetBaseCombatStrengthConsideringDamage(int (*original)(const CvUnit*), const CvUnit* self);CivRegisterBefore<CivHooks::CvUnit_GetBaseCombatStrengthConsideringDamage>(host, &BeforeCvUnit_GetBaseCombatStrengthConsideringDamage);CivRegisterAfter<CivHooks::CvUnit_GetBaseCombatStrengthConsideringDamage>(host, &AfterCvUnit_GetBaseCombatStrengthConsideringDamage);CivRegisterReplace<CivHooks::CvUnit_GetBaseCombatStrengthConsideringDamage>(host, &ReplaceCvUnit_GetBaseCombatStrengthConsideringDamage);

Code

12128int CvUnit::GetBaseCombatStrengthConsideringDamage() const12129{12130	int iWoundedDamageMultiplier = /*50*/ GC.getWOUNDED_DAMAGE_MULTIPLIER();1213112132	// Mod (Policies, etc.) - lower means Units are less bothered by damage12133	iWoundedDamageMultiplier += GET_PLAYER(getOwner()).GetWoundedUnitDamageMod();1213412135	int iStrength = GetMaxAttackStrength(NULL,NULL,NULL) / 100;1213612137	// How much does damage weaken the effectiveness of the Unit?12138	int iDamageMod = m_iDamage * iWoundedDamageMultiplier / 100;1213912140	// Reduce strength points based on damage mod calculated above. Example: 4 damage will normally reduce a 20 strength Unit by 2/10ths, or 1/5, or 4, making it effectively a 1612141#if defined(MOD_UNITS_MAX_HP)12142	iStrength -= (iStrength * iDamageMod / GetMaxHitPoints());12143#else12144	iStrength -= (iStrength * iDamageMod / GC.getMAX_HIT_POINTS());12145#endif1214612147	return iStrength;12148}

Calls

Called by