Exemplo n.º 1
0
        //TODO: Додати користувачу по замовчуванню декілька аптечок, для можливості відхілу
        public void Attack()
        {
            Random random         = new Random();
            var    forUser        = random.NextDouble();
            var    forBoss        = random.NextDouble();
            bool   isUserCritical = false;
            bool   isBossCritical = false;

            if (CurrentUser.ChanceCriticalAttack > forUser)
            {
                BossHpAndDef -= CurrentUser.CriticalAttack;
                UserHpAndDef -= CurrentBoss.Attack;
                Messages("Кріт урон", true);
                isUserCritical = true;
            }
            if (CurrentBoss.CriticalChance > forBoss)
            {
                BossHpAndDef -= CurrentUser.Attack;
                if (!CurrentBoss.IsStun)
                {
                    UserHpAndDef -= CurrentBoss.CriticalAttack;
                    Messages("Кріт урон від боса", false);
                }
                else
                {
                    CurrentBoss.StunningTime -= 1;
                    if (CurrentBoss.StunningTime == 0)
                    {
                        CurrentBoss.IsStun = false;
                    }
                }
                isBossCritical = true;
            }

            if (!isUserCritical)
            {
                BossHpAndDef -= CurrentUser.Attack;
            }
            if (!isBossCritical)
            {
                if (!CurrentBoss.IsStun)
                {
                    UserHpAndDef -= CurrentBoss.Attack;
                }
                else
                {
                    CurrentBoss.StunningTime -= 1;
                    if (CurrentBoss.StunningTime == 0)
                    {
                        CurrentBoss.IsStun = false;
                    }
                }
            }
            Math.Round(UserHpAndDef, 2);
            Math.Round(BossHpAndDef, 2);
            if (CurrentSkill != null && CurrentSkill.IsRecharge)
            {
                CurrentSkill.Recharge -= 1;
                if (CurrentSkill.Recharge == 0)
                {
                    CurrentSkill.IsRecharge = false;
                }
                UserController userController = new UserController(CurrentUser.Name);
                userController.Save();
            }
            if (UserHpAndDef <= 0)
            {
                UserController userController = new UserController(CurrentUser.Name);
                ItemController itemController = new ItemController(CurrentUser);

                Messages($"Користувач: {CurrentUser.Name} програв", false);
                Messages($"Ви нічого не отримали", false);
                SaveUser(userController, itemController);
                IsExit = true;
            }
            else if (BossHpAndDef <= 0)
            {
                Messages($"Бос: {CurrentBoss.Name} програв", true);
                IsWin  = true;
                IsExit = true;

                DropedExpAndItem();
            }
        }