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