Exemplo n.º 1
0
        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;
        }