public void LoseStructure(int amount, Weapons.DamageType type) { if (CurrentHitPoints == 0) { return; } int reduced_amount = (amount - damage_resistance > 0) ? amount - damage_resistance : 0; CurrentHitPoints -= DamageAfterResistance(reduced_amount, type); if (CurrentHitPoints <= 0) { CurrentHitPoints = 0; } UpdateStructure(); }
// private private int DamageAfterResistance(int _damage, Weapons.DamageType _type) { int damage_taken = _damage; switch (Resistances[_type]) { case ResistanceLevels.Resistant: damage_taken = _damage / 2; break; case ResistanceLevels.Immune: damage_taken = 0; break; case ResistanceLevels.Vulnerable: damage_taken = _damage * 2; break; default: break; } return(damage_taken); }
public int DamageAfterDefenses(int _damage, Weapons.DamageType _type) { return(DamageAfterResistance(_damage, _type)); }
// private private int DamageAfterResistance(int damage, Weapons.DamageType type) { return((damage <= 0 || Resistances == null) ? damage : (damage -= damage * (Resistances[type] / 100))); }