public override int Defend(string attackName, int incomingDamage, DamageType damageType) { if (BlockableTypes.Contains(damageType)) { var damageAfterBlock = Math.Max(0, incomingDamage - Defense); LogBlock(attackName, incomingDamage, damageAfterBlock); Limb.Damage($"Blocking {attackName}", damageType, Defense / 2); return(damageAfterBlock); } else { var damageAfterBlock = Math.Max(0, incomingDamage - (Defense / 2)); LogBlock(attackName, incomingDamage, damageAfterBlock); Limb.Owner.Log($"{Limb.Name} is damaged greatly by the {attackName}"); Limb.Damage($"Weak blocking {attackName}", damageType, Defense * 2); return(damageAfterBlock); } }