public void hit(Warrior attacker, HitArgs args) { weaponsDmgTypes dmgType = args.DamageType; double power = args.Power; if (!resistances.ContainsKey((byte)dmgType)) dmgType = (byte)weaponsDmgTypes.UNKNOWN; double damage = power / resistances[(byte)dmgType]; if(durability == 0) { Console.WriteLine("\n" + attacker.Name + " with ' " + attacker.GetWeapon.Name + " ' ---> ' " + name + " ': target is already destroyed, it would take " + damage + " damage if it was unbroken \n"); attacker.unreadyOne(new HitDelegate(hit)); return; } Console.WriteLine(attacker.Name + " with ' " + attacker.GetWeapon.Name + " ' ---> ' " + name + " ' : target has been damaged for " + damage + " durability points"); if(damage >= durability) { durability = 0; Console.WriteLine("\n|---Target ' " + name + " ' has been destroyed by " + attacker.Name + " with ' " + attacker.GetWeapon.Name + " ' ---|\n"); attacker.unreadyOne(new HitDelegate(hit)); } else { durability -= damage; } return; }