bool CArmorClass::GetReferenceDamageAdj (const CItem *pItem, CSpaceObject *pInstalled, int *retiHP, int *retArray) // GetReferenceDamageAdj // // Returns armor HP after adjustment for damage type { int i; CItemCtx ItemCtx(pItem, pInstalled); int iHP = GetMaxHP(ItemCtx); if (retiHP) *retiHP = iHP; for (i = 0; i < damageCount; i++) { DamageDesc Damage((DamageTypes)i, DiceRange(0, 0, 0)); int iAdj = GetDamageAdj(ItemCtx.GetMods(), Damage); if (retArray) retArray[i] = CalcHPDamageAdj(iHP, iAdj); } return true; }
int CArmorClass::GetStdEffectiveHP (int iLevel) // GetStdEffectiveHP // // Returns effective HP by level { int i; ASSERT(iLevel >= 1 && iLevel <= MAX_ITEM_LEVEL); int iHPbyDamageType[damageCount]; for (i = 0; i < damageCount; i++) iHPbyDamageType[i] = CalcHPDamageAdj(STD_STATS[iLevel - 1].iHP, g_pUniverse->GetArmorDamageAdj(iLevel)->GetAdj((DamageTypes)i)); return ::CalcEffectiveHP(iLevel, STD_STATS[iLevel - 1].iHP, iHPbyDamageType); }
int CShieldClass::GetStdEffectiveHP (int iLevel) // GetStdEffectiveHP // // Returns the effective HP of a shield at this level { int i; if (iLevel >= 1 && iLevel <= MAX_ITEM_LEVEL) { int iHPbyDamageType[damageCount]; for (i = 0; i < damageCount; i++) iHPbyDamageType[i] = CalcHPDamageAdj(STD_STATS[iLevel - 1].iHP, g_pUniverse->GetShieldDamageAdj(iLevel)->GetAdj((DamageTypes)i)); return ::CalcEffectiveHP(iLevel, STD_STATS[iLevel - 1].iHP, iHPbyDamageType); } else return -1; }