/// <summary> /// Метод для атаки /// </summary> /// <param name="enemy">Противник</param> virtual public void Attack(Human enemy) { TotalDamage = 0.0; //Итоговый урон var enm = (Fighter)enemy; if (poisoned) // Проверка отравлен персонаж или нет { if (healthy * 0.93 >= 5.0) { healthy = healthy * 0.93; } else { healthy -= 5.0; } } if (healthy > 0) { if (rand.NextDouble() >= enm.Evade) // Проверка увернулся противник или нет { TotalDamage = enm.GetDamage(damage); if (enm.Guard > 0) { enm.DownGuard(); } } else { Console.WriteLine("Увернулся, подлец!"); } if (enemy is Samurai && enemy.Health > 0 && Health > 0) { Samurai emnS = (Samurai)enm; if (rand.NextDouble() < emnS.Retaliation) { Console.WriteLine("Самурай наносит ответный удар"); emnS.Attack(this); } } } }
/// <summary> /// Переопределенный метод атаки /// </summary> /// <param name="enemy">Ссылка на противника</param> override public void Attack(Human enemy) { TotalDamage = 0; var enm = (Fighter)enemy; if (poisoned) { if (Health * 0.93 >= 5) { Health = Health * 0.93; } else { Health -= 5; } } if (Health > 0) { if (rand.NextDouble() >= enm.Evade) { TotalDamage = enm.GetDamage(damage); if (enm.Guard > 0) { enm.DownGuard(); } } else { Console.WriteLine("Увернулся, подлец!"); } if (enemy is Samurai && enemy.Health > 0 && Health > 0) { Samurai emnS = (Samurai)enm; if (rand.NextDouble() < emnS.Retaliation) { Console.WriteLine("Самурай наносит ответный удар"); emnS.Attack(this); } } } }