void takeKineticDamage(int _damage) { var Shields = state.shields; var armourType = state.armourType; float shieldDefense = 0.5f; float lightArmourDefense = 1f; float mediumArmourDefense = 0.9f; float heavyArmourDefense = 0.6f; int shieldDamage = 0; int armourDamage = 0; #region Shields Remaininag if (Shields > 0) { shieldDamage = (int)(_damage * shieldDefense); state.shields = state.shields - shieldDamage; } #endregion #region No Shields Remaining else { switch (armourType) { case ArmourType.light: { armourDamage = (int)(_damage * lightArmourDefense); if (armourDamage > 0) { state.armour = state.armour - armourDamage; } } break; case ArmourType.medium: { armourDamage = (int)(_damage * mediumArmourDefense); if (armourDamage > 0) { state.armour = state.armour - armourDamage; } } break; case ArmourType.heavy: { armourDamage = (int)(_damage * heavyArmourDefense); if (armourDamage > 0) { state.armour = state.armour - armourDamage; } } break; } } #endregion BattleLog.Damage(this, "Kinetic", _damage, shieldDamage, armourDamage); }