Beispiel #1
0
        static public void Init(Monster[] _monsters, bool _boss = false)
        {
            Reset();

            boss     = _boss;
            monsters = _monsters;
            amount   = monsters.Length;

            if (amount == 1)
            {
                RPG.Dialogue($"{GetTypeName(monsters[0].Type)} {monsters[0].Name}!"
                             + $"\nУ него: {monsters[0].HP} HP"
                             + $"\nи {monsters[0].Damage} Урона.",
                             false, ConsoleColor.Red);           // Вывод строки красного цвета о начале схватки
            }
            else
            {
                RPG.Dialogue("Монстры!");
                for (int i = 0; i < amount; i++)
                {
                    RPG.Dialogue($"\n{i}: {GetTypeName(monsters[i].Type)} {monsters[i].Name}!"
                                 + $"\nУ него: {monsters[i].HP} HP"
                                 + $"\nи {monsters[i].Damage} Урона.",
                                 false, ConsoleColor.Red);
                }
            }
            MonsterFight();
        }
        public static void ShowList()
        {
            Console.Clear();

            UpdateList();

            int count = 0;

            foreach (Achievement ach in achList)
            {
                if (ach.Checker())
                {
                    count++;
                    RPG.Dialogue("\n" + ach.Title, true, ach.Color);
                    Console.WriteLine(ach.Description);
                }
                else
                {
                    RPG.Dialogue("\n" + ach.Title, true, ConsoleColor.Red);
                }
            }

            Console.WriteLine("\n" + count + "/" + achList.Count + " достижений получено.");

            Console.ReadKey();
        }
Beispiel #3
0
        public static void ShowMenu()
        {
            Console.Clear();

            Console.WriteLine($"Текущее оружие: {Player.Inventory[0].GetName()} ({Player.Inventory[0].LVL} УР)" +
                              $"\n{Player.Inventory[0].Description}" +
                              $"\nУрон: {Player.Inventory[0].baseDamage} АТК");

            Console.WriteLine($"\nТекущая броня: {Player.Inventory[1].GetName()} ({Player.Inventory[1].LVL} УР)" +
                              $"\n{Player.Inventory[1].Description}" +
                              $"\nЗащита: {Player.Inventory[1].Defence} ЗАЩ");

            Console.WriteLine($"\nТекущий предмет: {Player.Inventory[2].GetName()}" +
                              $"\n{Player.Inventory[2].Description}");

            Console.WriteLine("\n");

            for (int i = 0; i < Player.Passive_Inventory.Length; i++)
            {
                if (i == index)
                {
                    RPG.Dialogue($"[{Player.Passive_Inventory[i].GetName()}] - {Player.Passive_Inventory[i].Description} (УР: {Player.Passive_Inventory[i].LVL})",
                                 true, Player.Passive_Inventory[i].Colour);
                }
                else
                {
                    RPG.Dialogue($" {Player.Passive_Inventory[i].GetName()} ", true, Player.Passive_Inventory[i].Colour);
                }
            }

            Console.WriteLine("W,S - Выбрать предмет, E - Экипировать предмет, Q - Выйти");

            MenuControls();
        }
Beispiel #4
0
        public static void ShowMenu()
        {
            Console.Clear();

            if (index == 0)
            {
                RPG.Dialogue($"[{newfile}]", true);
            }
            else
            {
                RPG.Dialogue($"{newfile}", true);
            }

            for (int i = 1; i < Player.subDirs.Length + 1; i++)
            {
                if (i == index)
                {
                    RPG.Dialogue($"[{Player.subDirs[i - 1]}]", true);
                }
                else
                {
                    RPG.Dialogue($" {Player.subDirs[i - 1]} ", true);
                }
            }

            Console.WriteLine("W,S - Переместить выделение, E - Выбрать пункт меню, Q - Выйти");

            MenuControls();
        }
Beispiel #5
0
        static void MenuControls()
        {
            Item buffer;

            ConsoleKey key = Console.ReadKey().Key;

            switch (key)
            {
            case ConsoleKey.E:
                buffer = Player.Passive_Inventory[index];

                switch (Player.Passive_Inventory[index].IType)
                {
                case Item.Type.Armour:
                    Player.Passive_Inventory[index] = Player.Inventory[1];
                    Player.Inventory[1]             = buffer;
                    break;

                case Item.Type.Weapon:
                    Player.Passive_Inventory[index] = Player.Inventory[0];
                    Player.Inventory[0]             = buffer;
                    break;

                case Item.Type.Item:
                    Player.Passive_Inventory[index] = Player.Inventory[2];
                    Player.Inventory[2]             = buffer;
                    break;

                default:
                    RPG.Dialogue("Нельзя экипировать.");
                    break;
                }
                goto default;

            case ConsoleKey.Q:
                break;

            case ConsoleKey.S:
                if (index < Player.Passive_Inventory.Length - 1)
                {
                    index++;
                }
                goto default;

            case ConsoleKey.W:
                if (index > 0)
                {
                    index--;
                }
                goto default;

            default:
                ShowMenu();
                break;
            }
        }
Beispiel #6
0
        // Инициализация схватки
        static public void Init(int _amount = 1)
        {
            Reset();

            amount   = _amount;
            monsters = new Monster[amount];
            for (int i = 0; i < amount; i++)
            {
                if (i == 0)
                {
                    monsters[i] = new Monster
                    {
                        Type = (Monster.MType)RPG.rnd.Next(0, 7),
                    }
                }
                ;

                else
                {
                    monsters[i] = new Monster(LVL - 1)
                    {
                        Type = (Monster.MType)RPG.rnd.Next(0, 7),
                    }
                };
            }

            if (amount != 1)
            {
                RPG.Dialogue("Монстры!");
                for (int i = 0; i < amount; i++)
                {
                    monsters[i].HP     *= (1 - 1 / (2 * amount));
                    monsters[i].Damage *= (1 - 1 / (2 * amount));

                    RPG.Dialogue($"\n{i}: {GetTypeName(monsters[i].Type)} {monsters[i].Name} (УР: {monsters[i].LVL})!"
                                 + "\nУ него: " + monsters[i].HP + " HP"
                                 + "\nи " + monsters[i].Damage + " Урона",
                                 false, ConsoleColor.Red);
                }
            }
            else
            {
                RPG.Dialogue(GetTypeName(monsters[0].Type) + $" {monsters[0].Name}!"
                             + "\nУ него: " + monsters[0].HP + " HP"
                             + "\nи " + monsters[0].Damage + " Урона",
                             false, ConsoleColor.Red);          // Вывод строки красного цвета о начале схватки
            }
            MonsterFight();                                     // Начать цикл схватки
        }
Beispiel #7
0
        } // ChainClash

        #region Functions
        private static void GetTypeSpecAtk(Monster monster)    // Получить специальную атаку типа монстра
        {
            double a = RPG.rnd.NextDouble();

            switch (monster.Type)
            {
            case Monster.MType.Explosive:
                if (count == 4)
                {
                    monster.Damage = (float)Math.Pow(2, LVL) / 1.5f;
                    monster.HP     = 0;

                    RPG.Dialogue("Монстр подорвался.", true, ConsoleColor.DarkRed);
                }
                break;

            case Monster.MType.Thorned:
                if (a <= 1f / 4)
                {
                    defenceMultiplier = 0f;
                    RPG.Dialogue("Монстр выстрелил шип!", true, ConsoleColor.DarkRed);
                }
                break;

            case Monster.MType.Ice:
                if (a <= 1f / 20)
                {
                    monster.isInvincible = true;
                    monster.Damage       = 0;

                    RPG.Dialogue("Монстр поставил ледяной щит.", true, ConsoleColor.Cyan);
                }
                break;

            case Monster.MType.Luminous:
                if (a <= 3f / 10)
                {
                    monster.Damage += monster.Damage / 5;

                    RPG.Dialogue("Монстр использовал линзу!", true, ConsoleColor.White);
                }
                break;

            default:
                break;
            }
        }
Beispiel #8
0
        public override void OnUse(Monster[] monsters, int index = 0)
        {
            Random rnd    = new Random();
            int    potion = rnd.Next(1, 5);

            switch (potion)
            {
            // heal the player
            case 1:
                float recovHP = 10;
                if (Player.MaxHP - Player.HP > 10)
                {
                    Player.HP += 10;
                }
                else
                {
                    recovHP   = Player.MaxHP - Player.HP;
                    Player.HP = Player.MaxHP;
                }
                RPG.Dialogue($"Лечебное Зелье! (Восстановлено {recovHP})", true, ConsoleColor.Green);
                break;

            // damage all monsters
            case 2:
                foreach (Monster mnstr in monsters)
                {
                    mnstr.HP -= 12;
                }
                RPG.Dialogue("Взрывное Зелье! (Всем монстрам было нанесено 12 урона)", true, ConsoleColor.Green);
                break;

            // damage a random monster
            case 3:
                int idx = rnd.Next(0, monsters.Length - 1);
                monsters[idx].HP -= 31 - 16 / (monsters[idx].LVL + 1);
                RPG.Dialogue($"Необычно Конкретное Зелье! (Монстру {idx+1} было нанесено {31 - 16 / (monsters[idx].LVL + 1)})", true, ConsoleColor.Green);
                break;

            // damage the player
            case 4:
                Player.HP -= 62 - 60 / (Player.LVL + 1);
                RPG.Dialogue($"Зелье Саботажа! (Вам было нанесено {62 - 60 / (Player.LVL + 1)} урона)", true, ConsoleColor.Red);
                break;
            }
        }
Beispiel #9
0
        static public void GoToCity()
        {
            UpdateEconomy();
            RPG.Fancies();
            Console.Clear();

            //RPG.Dialogue("     /o[+]o|     _[T]_" +
            //       "\n     |T=n=T|     |=n=|", ConsoleColor.White, true);

            if (!wasInCity)
            {
                wasInCity = true;
                RPG.Dialogue("В городе можно вылечиться или посетить таверну.");
            }

            Console.WriteLine("\nИгрок:" +
                              "\nHP: " + HP + "/" + MaxHP + " [" + RPG.HPLine + "] " +
                              "\nДеньги: " + Money);

            Console.WriteLine("\nЧто будешь делать? Вылечиться - 1, Таверна - 2, Вернуться в лес - 0");

            switch (Console.ReadLine())
            {
            case "1":
                GoHeal();
                break;

            case "2":
                GoToTavern();
                break;

            case "0":
                Console.Clear();
                break;

            default:
                GoToCity();
                break;
            }
        }
Beispiel #10
0
        static void Texts(int num)
        {
            switch (num)
            {
            case 1:
                RPG.Dialogue("Следуя указаниям незнакомца, вы подходите к Заброшеной Башне.");
                RPG.Dialogue("Судя по внешнему виду, башне несколько сотен лет.");
                RPG.Dialogue("Вокруг только лес, нет никакого замка или другого сооружения, к которому могла быть пристроена башня");
                RPG.Dialogue("Может крикнуть что-нибудь?");
                RPG.Dialogue("\nНезнакомец", "Не стоит кричать, я ощущаю твоё присутствие и без этого.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue("\nНезнакомец появился у вас за спиной. Как и все.");
                RPG.Dialogue("\nНезнакомец", "Я поведаю все тайны башни пока мы идём до нужного места. Следуй за мной, странник, отступать уже поздно.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue("\nВы следуете за незнакомцем в башню.");
                break;

            case 2:
                RPG.Dialogue("\nНезнакомец", "Для начала хотелось бы представиться: Моё имя " + mageName, false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Эта башня была построена ещё 312 лет назад для особой касты людей.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Да, отдельно построенная башня, ничего в этом нет.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Как ты понимаешь, странник, теперь ты принадлежишь этой касте.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "А значит твоё место здесь.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Немногие могут достигнуть твоего уровня, на моей памяти есть только 10 человек, включая тебя.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Первые трое входили в круг Основателей.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Другие шестеро - их последователи и наследники Башни.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Последний наследник погиб ещё 180 лет назад, поэтому Башня находилась без присмотра.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Надеюсь, ты сможешь вернуть Её в былое величие.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "(тихий смех) Понимаю, ты впервые слышишь об этом месте, тебе Она ни к чему.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue(mageName, "Надеюсь ты передумаешь, когда мы придём в Алтарную Комнату.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue("\nВо время рассказа вы поднимались по очень высокой круговой лестнице. Время пролетело незаметно, и вот вы стоите перед дверью.");
                RPG.Dialogue("Вы вошли в Алтарную Комнату.");
                AltarRoom();
                break;

            default:
                RPG.Dialogue("Что-то пошло не так. Хм.");
                break;
            }
        }
Beispiel #11
0
        static public void GoToTavern()
        {
            int dialRand = RPG.rnd.Next(1, 100);

            if (dialRand <= 50)
            {
                RPG.Dialogue("Вы входите в таверну, со всех сторон слышны крики, смех и в целом весёлая атмосфера");
            }
            else if (dialRand > 50 && dialRand <= 75)
            {
                RPG.Dialogue("В таверне необычайно тихо. \nЛюдей почти нет. \nЛюбопытно.");
            }
            else if (dialRand > 75 && dialRand <= 90)
            {
                RPG.Dialogue("Когда вы вошли, несколько людей на вас обернулись, но затем вернулись ко своим делам.");
            }
            else if (dialRand > 90)
            {
                RPG.Dialogue("В таверне творится невероятная анархия. Бутылки летают из стороны в сторону, половина столов перевёрнута.", false, ConsoleColor.Yellow);
                RPG.Dialogue("В общем, всё как и полагается.", false, ConsoleColor.Yellow);
                gotAnarchy = true;
            }

            RPG.Dialogue("\nВы садитесь за стол.");
            RPG.Dialogue("Вы тихо сидите за столом.");

            switch (questNum)
            {
            case 0:     //Первый вход в таверну

                RPG.Dialogue("\nК вам подходит владелец заведения.");
                RPG.Dialogue("Владелец: Стол свободен?", false, ConsoleColor.DarkYellow);

                RPG.Dialogue("\nНе дожидаясь ответа, он сел напротив вас.");
                RPG.Dialogue("Владелец: По глазам вижу — Искатель приключений." +
                             "\nМоё имя — Охра, приятно познакомиться.", false, ConsoleColor.DarkYellow);

                RPG.Dialogue("\nВы пожимаете руки.");

                RPG.Dialogue("\nОхра", "Я продаю здесь напитки, а ещё занимаюсь совершенствованием инструментов и оружия.", false, ConsoleColor.DarkYellow);
                RPG.Dialogue("Охра", "Так что если тебе хочется выдерживать больше ударов, или бить больнее, то тебе ко мне.", false, ConsoleColor.DarkYellow);
                RPG.Dialogue("Охра", "Раз уж ты здесь новенький, то вот, держи выпивку за счёт заведения.", false, ConsoleColor.DarkYellow);

                RPG.Dialogue("\nНа стол поставили кружку с практически чёрной жидкостью.");

                RPG.Dialogue("\nОхра", "Называется 'Чёрная Дыра'. Называется так из-за цвета, но говорят, что 'уносит' не хуже чёрной дыры.", false, ConsoleColor.DarkYellow);

                Console.WriteLine("\nВыпить 'Чёрную Дыру'? Да - 1, Нет - Любая другая клавиша");

                if (Console.ReadKey().Key == ConsoleKey.D1 || Console.ReadKey().Key == ConsoleKey.NumPad1)
                {
                    BHDweller = true;
                    Monster mnstr = new Monster(true)
                    {
                        Damage = 20, HP = 120, LVL = 1, Name = "Обитатель чёрной дыры", Type = Monster.MType.Dark
                    };

                    Fight.Init(new Monster[1] {
                        mnstr
                    }, false);
                }
                else
                {
                    RPG.Dialogue("\nВы вежливо отказываетесь.");

                    RPG.Dialogue("\nОхра", "Не из тех, кто любит выпить? Что же, тогда тебе здесь практически незачем быть!", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "У меня есть безалкогольные варианты, но бесплатно я их раздавать не собираюсь.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Ладно, мне надо руководить этим местом, чтобы снова не возникли анархия и хаос. Увидимся позже.", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nСнова?");
                }

                RPG.Dialogue("\nОхра уходит.");
                RPG.Dialogue("Немного посидев, вы решили вернуться в город.");

                questNum = 1;

                break;

            case 1:     //Вход в таверну, получение первого квеста/награды за него.

                RPG.Dialogue("Из-за угла выходит Охра.");
                RPG.Dialogue("Охра садится за ваш стол.");

                switch (currentPlotState)
                {
                case QuestState.Unknown:

                    RPG.Dialogue("Охра", "У меня есть одно дело.", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра", "Недалеко от Синего Источника проживают Стражи.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Мне нужна голова одного из них.", false, ConsoleColor.DarkYellow);

                    if (LVL < 4)
                    {
                        RPG.Dialogue("Охра", "Для тебя это может быть сложновато.", false, ConsoleColor.DarkYellow);
                    }

                    RPG.Dialogue("Охра", "Если принесёшь, то в награду я смогу тебе что-нибудь улучшить.", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра", "Идёт?", false, ConsoleColor.DarkYellow);
                    if (AcceptQuest())
                    {
                        RPG.Dialogue("Охра", "Ну и отлично!" + "\nЖду тебя с головой Стража.", false, ConsoleColor.DarkYellow);
                    }

                    else
                    {
                        RPG.Dialogue("\nОхра", "Ну нет так нет, но ты заходи ещё, вдруг передумаешь или выпить захочешь.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nОхра уходит.");
                        RPG.Dialogue("Немного посидев, вы решили вернуться в город.");
                    }

                    break;

                case QuestState.Known:

                    RPG.Dialogue("\nОхра", "Да, мне нечем заняться."
                                 + "\nИтак, ты согласен с условиями моего договора?", true, ConsoleColor.DarkYellow);

                    if (AcceptQuest())
                    {
                        RPG.Dialogue("Охра", "Ну и отлично!" + "\nЖду тебя с головой Стража.", false, ConsoleColor.DarkYellow);
                    }

                    else
                    {
                        RPG.Dialogue("\nОхра", "Ну нет так нет, но ты заходи ещё, вдруг передумаешь или выпить захочешь.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nОхра уходит.");
                        RPG.Dialogue("Немного посидев, вы решили вернуться в город.");
                    }

                    break;

                case QuestState.Accepted:

                    RPG.Dialogue("Вы тихо сидите за столом, ощущая непрерывный взгляд себе в глаза.");

                    RPG.Dialogue("\nВы говорите: Да принесу я тебе голову!");

                    RPG.Dialogue("\nОхра встал и ушёл.");
                    RPG.Dialogue("Немного посидев, вы решили вернуться в город.");

                    break;

                case QuestState.Completed:

                    RPG.Dialogue("\nОхра", "Ну что, принёс? Можешь не отвечать, вижу, что принёс.", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра забирает у вас голову Стража");

                    RPG.Dialogue("\nОхра", "Из их крови выходит замечательный напиток, King Crimson называется.", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("Охра", "А теперь к моей части уговора.", false, ConsoleColor.DarkYellow);

                    questNum         = 2;
                    currentPlotState = QuestState.Unknown;

                    GearUpgrade(true);

                    break;
                }

                break;

            case 2:     //Вход в таверну, получение Второго квеста/награды за него.

                RPG.Dialogue("\nЗа вами кто-то наблюдает.", false, ConsoleColor.DarkMagenta);

                RPG.Dialogue("\nКто это?");

                RPG.Dialogue("\nК вам подходит Охра.");

                RPG.Dialogue("\nОхра", "Рад тебя снова видеть.", false, ConsoleColor.DarkYellow);

                switch (currentPlotState)
                {
                case QuestState.Unknown:

                    RPG.Dialogue("Охра", "У меня для тебя есть ещё одно дело.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Если ты не против, конечно.", false, ConsoleColor.DarkYellow);

                    if (AcceptQuest())
                    {
                        RPG.Dialogue("\nОхра", "Отлично, на тебя всегда можно положиться.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Хочу предупредить, это задание не из лёгких.", false, ConsoleColor.DarkYellow);
                        if (LVL < 6)
                        {
                            RPG.Dialogue("Охра", "Тебе придётся нелегко, поэтому рекомендую поптренироваться побольше.", false, ConsoleColor.DarkYellow);
                        }
                        RPG.Dialogue("Охра", "Торговец, который продаёт мне довольно редкие товары, недавно пропал без вести.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Я хочу, чтобы ты его нашёл и разузнал в чём дело.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Его маршрут был доволньно опасен. Я удивлён, что он вообще прожил так долго.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Но думаю, что ты справишься.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Вот карта его маршрута, удачи.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nВы получили карту маршрута торговца.");
                    }

                    else
                    {
                        RPG.Dialogue("\nОхра", "Ладно, твой выбор.", false, ConsoleColor.DarkYellow);
                    }

                    break;

                case QuestState.Known:

                    RPG.Dialogue("\nОхра", "Ну так что, ты согласен?", false, ConsoleColor.DarkYellow);

                    if (AcceptQuest())
                    {
                        RPG.Dialogue("\nОхра", "Отлично, на тебя всегда можно положиться.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Хочу предупредить, это задание не из лёгких.", false, ConsoleColor.DarkYellow);
                        if (LVL < 6)
                        {
                            RPG.Dialogue("Охра", "Тебе придётся нелегко, поэтому рекомендую потренироваться побольше.", false, ConsoleColor.DarkYellow);
                        }
                        RPG.Dialogue("Охра", "Торговец, который продаёт мне довольно редкие товары, недавно пропал без вести.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Я хочу, чтобы ты его нашёл и разузнал в чём дело.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Его маршрут был доволньно опасен. Я удивлён, что он вообще прожил так долго.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Но думаю, что ты справишься.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Вот карта его маршрута, удачи.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nВы получили карту маршрута торговца.");
                    }

                    else
                    {
                        RPG.Dialogue("\nОхра", "Ладно, твой выбор.", false, ConsoleColor.DarkYellow);
                    }

                    break;

                case QuestState.Accepted:

                    RPG.Dialogue("Охра", "Есть успехи?", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nВы отрицательно покачали головой.");

                    RPG.Dialogue("\nОхра", "(вздох) Хорошо, не буду тебя напрягать. Но всё же поторопись с выполнением.", false, ConsoleColor.DarkYellow);


                    break;

                case QuestState.Completed:

                    RPG.Dialogue("Охра", "Как успехи с моим заданием?", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nВы даёте Охре Медальон Торговца.");

                    RPG.Dialogue("\nОхра", "Вот значит как...", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Что же...", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "...", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Придётся искать нового торговца!", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nНа вашем лице выражено удивление.");

                    RPG.Dialogue("\nОхра", "Да, этот торговец был хорош, но это не значит, что он единственный!", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Такие здесь порядки, искатель приключений:", true, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Торговля не стоит на месте!", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра", "Кстати о торговле...", false, ConsoleColor.DarkYellow);

                    questNum         = 3;
                    currentPlotState = QuestState.Unknown;

                    GearUpgrade(true);

                    break;
                }

                break;

            case 3:

                RPG.Dialogue("Чувство наблюдаемости становится сильнее.", false, ConsoleColor.DarkMagenta);

                RPG.Dialogue("\nДа кто же это?");

                RPG.Dialogue("\nОборачиваясь по сторонам в поисках наблюдателя, вы видите, что к вашему столу подходит Охра.");

                if (RPG.rnd.NextDouble() <= 0.1f)
                {
                    RPG.Dialogue("Ah shit, here we go again.", false, ConsoleColor.Yellow);
                    ahShit = true;
                }

                RPG.Dialogue("\nОхра садится за ваш стол.");

                switch (currentPlotState)
                {
                case QuestState.Unknown:

                    RPG.Dialogue("\nОхра", "Все люди здесь абсолютно бесполезны, надеюсь ты меня обрадуешь.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Нужно сходить в подвал Таверны и убить живущее там нечто.", false, ConsoleColor.DarkYellow);
                    if (LVL <= 7)
                    {
                        RPG.Dialogue("Охра", "Хотя, тебе поможет разве что удача, чтобы справиться с ним.", false, ConsoleColor.DarkYellow);
                    }

                    RPG.Dialogue("Охра", "Согласен?", true, ConsoleColor.DarkYellow);

                    if (AcceptQuest())
                    {
                        RPG.Dialogue("\nОхра", "Замечательно! Приступай как можно скорее, а то мой бизнес накроется медным тазом!", false, ConsoleColor.DarkYellow);
                    }

                    else
                    {
                        RPG.Dialogue("\nОхра бьёт по столу.");

                        RPG.Dialogue("\nОхра", "Да что же это такое!", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("Охра", "Ладно, я не могу тебя принудить. Найду кого-нибудь.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nОхра ушёл.");
                        RPG.Dialogue("Немного посидев, вы решили вернуться в город.");
                    }

                    break;

                case QuestState.Known:

                    RPG.Dialogue("\nОхра", "Я ещё не нашёл замены.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Надеюсь, теперь ты согласен мне помочь.", false, ConsoleColor.DarkYellow);

                    if (LVL <= 7)
                    {
                        RPG.Dialogue("Охра", "Хоть ты и не готов.", false, ConsoleColor.DarkYellow);
                    }

                    if (AcceptQuest())
                    {
                        RPG.Dialogue("\nОхра", "Отлично! Приступай как можно скорее, а то мой бизнес накроется медным тазом!", false, ConsoleColor.DarkYellow);
                    }

                    else
                    {
                        RPG.Dialogue("\nОхра бьёт по столу.");

                        RPG.Dialogue("\nОхра", "Да что же это такое!", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("Охра", "Ладно, я не могу тебя принудить. Поищу кого-нибудь ещё.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nОхра ушёл.");
                        RPG.Dialogue("Немного посидев, вы решили вернуться в город.");
                    }

                    break;

                case QuestState.Accepted:

                    Console.WriteLine("Начать задание? 1- Да, 2 - Нет.");
                    if (Console.ReadKey().Key == ConsoleKey.D1)
                    {
                        PlotQuests.Quest();
                    }

                    else
                    {
                        RPG.Dialogue("\nОхра перебирает пальцами по столу пристально смотря вам в глаза.");

                        RPG.Dialogue("\nЭто продолжается в течение минуты.");

                        RPG.Dialogue("\nПосле такой долгой пытки вы сдаётесь, чувствуя нарастающую вину.");

                        RPG.Dialogue("\nОхра встаёт и уходит.");

                        RPG.Dialogue("Немного посидев, вы решили вернуться в город.");
                    }

                    break;

                case QuestState.Completed:

                    if (brokeOut)
                    {
                        RPG.Dialogue("\nОхра", "Что ты наделал?", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Я тебя попросил разобраться только с монстром!", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Что тебе дверь-то сделала?", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Ладно, чёрт с этой дверью.", false, ConsoleColor.DarkYellow);
                    }

                    RPG.Dialogue("\nОхра", "Спасибо.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Теперь моя работа может продолжаться спокойно.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "От этих паразитов обычно легко избавиться.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Но с этим было что-то не то: слишком уж большой.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Что же, раз уж ты спас мой бизнес...", false, ConsoleColor.DarkYellow);

                    questNum         = 4;
                    currentPlotState = QuestState.Unknown;

                    GearUpgrade(true);

                    break;
                }

                break;

            case 4:

                RPG.Dialogue("В этот раз никто за вами не наблюдает.", false, ConsoleColor.DarkMagenta);
                RPG.Dialogue("По крайней мере, вы так считаете.", false, ConsoleColor.DarkMagenta);

                RPG.Dialogue("\nНаконец-то.");

                RPG.Dialogue("\nЧерез некоторе время к вам подходит Охра.");

                switch (currentPlotState)
                {
                case QuestState.Unknown:

                    RPG.Dialogue("\nОхра", "И снова здравствуй.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Как ты понимаешь, у меня снова есть для тебя дело.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Я недавно ходил в северные шахты.", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Там есть ингредиенты для моего нового напитка, хотел набрать достаточно, пока ищу нового торговца.",
                                 false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Ингредиенты я набрал, но...", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра", "Я оставил там свою шляпу.", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nВы посмотрели на Охру с немного грустным, разочарованным, но в то же время полным недовольства и умеренной злости взглядом.");

                    RPG.Dialogue("\nОхра", "Не смотри на меня так, эта шляпа очень важна!", false, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "И вообще, тебе сложно, что ли? Заодно новые места увидишь!", false, ConsoleColor.DarkYellow);

                    if (AcceptQuest())
                    {
                        RPG.Dialogue("\nОхра", "Спасибо! Жду тебя с нетерпением!", false, ConsoleColor.DarkYellow);
                    }
                    else
                    {
                        RPG.Dialogue("\nОхра посмотрел на вас полным разочароания и печали взглядом.");

                        RPG.Dialogue("\nОхра", "Ладно.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Но просто так я от тебя не отстану.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nОхра ушёл.");
                        RPG.Dialogue("\nПодавив чувство вины, к чему вы уже привыкли, и немного посидев, вы вернулись в город.");
                    }
                    break;

                case QuestState.Known:

                    RPG.Dialogue("\nОхра", "Ну как там с твоим решением начёт возврата моей шляпы?", true, ConsoleColor.DarkYellow);
                    RPG.Dialogue("Охра", "Я даже скажу пожалуйста.", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра", "Пожалуйста.", false, ConsoleColor.DarkYellow);

                    if (AcceptQuest())
                    {
                        RPG.Dialogue("\nОхра", "Спасибо!", false, ConsoleColor.DarkYellow);
                    }
                    else
                    {
                        RPG.Dialogue("\nОхра посмотрел на вас полным разочароания и печали взглядом.");

                        RPG.Dialogue("\nОхра", "Ладно. Даже 'пожалуйста' не помогло.", false, ConsoleColor.DarkYellow);
                        RPG.Dialogue("Охра", "Что же ты за жестокий человек?.", false, ConsoleColor.DarkYellow);

                        RPG.Dialogue("\nОхра ушёл.");
                        RPG.Dialogue("\nСнова подавив чувство вины, и немного посидев, вы вернулись в город.");
                    }
                    break;

                case QuestState.Accepted:

                    RPG.Dialogue("\nОхра", "Где шляпа, Искатель Приключений?", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра", "А?", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра", "Я ведь жду!", false, ConsoleColor.DarkYellow);

                    RPG.Dialogue("\nОхра ушёл, не дав вам шанса высказаться.");

                    RPG.Dialogue("\nНемного посидев, вы вернулись в город.");
                    break;

                case QuestState.Completed:
                    RPG.Dialogue("\nОхра", "Наконец-то я дождался!", false, ConsoleColor.DarkYellow);

                    questNum = 5;
                    break;
                }

                break;

            case 15:     //Вход в таверну, получение локации башни/ничего.

                if (!towerLoc && LVL == 15)
                {
                    towerLoc = true;

                    RPG.Dialogue("Внезапно из-за спины выходит...");
                    RPG.Dialogue("\nКто это?");
                    RPG.Dialogue("\nНезнакомец", "Аааа, странник, я слышал о тебе!", false, ConsoleColor.DarkMagenta);
                    RPG.Dialogue("Незнакомец", "Более того, я следил за твоими успехами из теней.", false, ConsoleColor.DarkMagenta);
                    RPG.Dialogue("Незнакомец", "У меня для тебя есть дело, но я не могу его обсуждать здесь.", false, ConsoleColor.DarkMagenta);
                    RPG.Dialogue("Незнакомец", "Вот карта с местом нашей встречи. Увидимся там.", false, ConsoleColor.DarkMagenta);

                    RPG.Dialogue("\nВы получили новую локацию: Заброшенная башня");
                    RPG.Dialogue("\nНезнакомец ушёл.");

                    RPG.Dialogue("Немного посидев, вы решили вернуться в город.");
                }

                else
                {
                    goto default;
                }
                break;

            default:
                RPG.Dialogue("Немного посидев, вы решили вернуться в город.");
                break;
            }

            GoToCity();
        }
Beispiel #12
0
        public static void Quest()
        {
            City.currentPlotState = City.QuestState.Completed;
            switch (questNum)
            {
            case 1:
                Console.Clear();
                RPG.Dialogue("Вы дошли до синего источника");
                RPG.Dialogue("Как и ожидалось, всё здесь синее.");
                RPG.Dialogue("Источник представлял из себя небольшую речку, начало которой виднелось на горизонте.");
                RPG.Dialogue("Вы проходите вглубь, ощущая свежесть окружающего воздуха.");
                RPG.Dialogue("Вы чувствуете расслабление и решаете присесть.");
                RPG.Dialogue("\n...");
                RPG.Dialogue("\nИз-за деревьев выходит Страж.");
                RPG.Dialogue("\nЧёрт, подумали вы.");

                monster = new Monster[1]
                {
                    new Monster
                    {
                        HP     = 100 + 20 * LVL,
                        Damage = 20 + 2 * LVL,
                        Name   = "Страж",
                        Type   = Monster.MType.Standart,
                    }
                };
                Fight.Init(monster, true);
                break;

            case 2:
                Console.Clear();
                RPG.Dialogue("Вы следуете по маршруту торговца, уходя глубоко в лес.");
                RPG.Dialogue("С каждым шагом окружающая тишина становится всё подозрительнее.");
                RPG.Dialogue("Туман густеет.");
                RPG.Dialogue("Давление обстановки растёт.");
                RPG.Dialogue("Вы наткнулись на следы колёс.");
                RPG.Dialogue("Последовать по ним кажется хорошей идеей.");
                RPG.Dialogue("\n...");
                RPG.Dialogue("\nЭто будет долгий поход.");

                Dungeons.Init(questNum);

                RPG.Dialogue("\nВы подошли к разрушенной повозке.");
                RPG.Dialogue("\nА рядом с ней...");
                RPG.Dialogue("\nМёртвый торговец.");
                RPG.Dialogue("\nСледов нападения не видно.");
                RPG.Dialogue("Исследовав повозку, вы не нашли ни одного товара.");
                RPG.Dialogue("Только много гари.");
                RPG.Dialogue("Возможно, повозка загорелась, и торговец не смог спастись?");
                RPG.Dialogue("Возможно, торговец вёз взрывчатку.");
                RPG.Dialogue("\nСтранное дело.");
                RPG.Dialogue("\n...");
                RPG.Dialogue("\nВы заметили медальон на торговце.");
                RPG.Dialogue("Вы его взяли, без особой цели. Он не выглядит дорогостоящим.");
                RPG.Dialogue("Кроме красного камня посередине. Но его достать оттуда пркатически невозможно.");
                RPG.Dialogue("\nНа обратной стороне медальона написано '963'");
                RPG.Dialogue("\nЧто бы это не значило.");
                RPG.Dialogue("\nВы начали возвращаться.");

                Dungeons.Init(questNum, 1);

                RPG.Dialogue("\nПеред вами стоит монстр.");
                RPG.Dialogue("Что не удивительно.");

                monster = new Monster[1]
                {
                    new Monster
                    {
                        HP     = 400 + 30 * LVL,
                        Damage = 30 + 3 * LVL,
                        Name   = "Заградитель",
                        Type   = Monster.MType.Fire
                    }
                };
                Fight.Init(monster, true);
                break;

            case 3:
                Console.Clear();
                RPG.Dialogue("Вход в подвал находится снаружи.");
                RPG.Dialogue("Видимо, так удобнее?");
                RPG.Dialogue("Вы спустились в подвал таверны.");
                RPG.Dialogue("Здесь довольно темно.");
                RPG.Dialogue("Единственное освещение это свет из открытой двери.");
                RPG.Dialogue("В конце подвала видно только чёрный туман.");
                RPG.Dialogue("\nВы начинаете движение в его сторону.");

                Dungeons.Init(questNum);

                RPG.Dialogue("\nКак и ожидалось:");
                RPG.Dialogue("Внутри тумана монстр.");

                monster = new Monster[1]
                {
                    new Monster
                    {
                        HP     = 600 + 40 * LVL,
                        Damage = 40 + 8 * LVL,
                        Name   = "Туманный зверь",
                        Type   = Monster.MType.Dark
                    }
                };
                Fight.Init(monster, true);

                RPG.Dialogue("Тело монстра рассеялось в тумане.");
                RPG.Dialogue("Время возвращаться.");

                Dungeons.Init(questNum, 1);

                RPG.Dialogue("\nПохоже, что дверь заклинило.");
                RPG.Dialogue("Можно попробовать найти другой выход.");
                RPG.Dialogue("Можно выломать дверь.");

                Console.WriteLine("Что делать?" +
                                  "\n1 - Выломать" +
                                  "\n2 - Найти другой выход");

                if (Console.ReadLine() == "1")
                {
                    brokeOut = true;

                    RPG.Dialogue("\nВы успешно выломали дверь.");
                    RPG.Dialogue("Будет очень неприятно снова встретить Охру.");
                }

                else
                {
                    RPG.Dialogue("\nНет, ломать дверь действительно не стоит.");
                    RPG.Dialogue("Ведь из подвала есть ещё один выход в город.");

                    Dungeons.Init(questNum, 2);

                    RPG.Dialogue("\nНу вот.");
                    RPG.Dialogue("И не нужно никакой излишней жестокости!");
                }

                break;

            default:
                Console.WriteLine("Хз чёт");
                break;
            }
        }
Beispiel #13
0
        static void ChainClash()
        {
            bool defending = false;
            bool success   = false;

            for (int i = 0; i < monsters.Length; i++)
            {
                for (int j = 0; j < ActionChain.Length; j++)
                {
                    // 0 - W, 1 - A, 2 - S, 3 - D
                    switch (ActionChain[j].num)
                    {
                    case 1:
                        Crit = RPG.rnd.Next(1, 10);
                        double atksuc = RPG.rnd.NextDouble();

                        if (monsters[i].ActionChain[j].num == 3)
                        {
                            atksuc -= 0.1f;
                        }

                        if (!monsters[0].isInvincible && atksuc <= strikeChance)
                        {
                            success = true;
                            Inventory[0].OnUse(monsters, 0);
                            if (Crit >= 8)
                            {
                                monsters[0].HP -= Inventory[0].Damage * critCoeff * strikeMultiplier;
                                RPG.Dialogue($"Критический урон! Вы нанесли {Inventory[0].Damage * critCoeff * strikeMultiplier} урона.", true, ConsoleColor.Yellow);
                            }
                            else
                            {
                                monsters[0].HP -= Inventory[0].Damage * strikeMultiplier;
                                RPG.Dialogue($"Вы нанесли {Inventory[0].Damage * strikeMultiplier} урона.", true, ConsoleColor.Green);
                            }

                            if (monsters[0].HP < 0)
                            {
                                monsters[0].HP = 0;
                            }
                            Console.WriteLine("У монстра осталось " + monsters[0].HP + " HP");
                        }
                        else
                        {
                            Console.WriteLine("Монстр не получил урона!");
                        }

                        break;

                    case 2:
                        Inventory[2].OnUse(monsters);
                        break;

                    case 3:
                        defenceMultiplier += 0.25f;
                        defending          = true;
                        break;

                    default:
                        break;
                    }
                    switch (monsters[i].ActionChain[j].num)
                    {
                    case 1:
                        if (monsters[i].HP > 0)
                        {
                            Inventory[1].OnUse(monsters, i);

                            if (monsters[i].Damage - Inventory[1].Defence * defenceMultiplier > 0)
                            {
                                HP -= monsters[i].Damage - Inventory[1].Defence * defenceMultiplier;
                                RPG.Dialogue($"{monsters[i].Name} {i + 1} нанёс {monsters[i].Damage} ед. урона ({Inventory[1].Defence * defenceMultiplier} ед. урона заблокировано)", true, ConsoleColor.Red);
                            }
                            else
                            {
                                RPG.Dialogue($"{monsters[i].Name} {i + 1} не нанёс  урона.", true, ConsoleColor.Red);
                            }

                            if (HP <= 0)
                            {
                                PStatus = Status.None;

                                Console.WriteLine("Вы умерли." +
                                                  "\nЗагрузить файл сохранения? 1 - Да; Любая клавиша - Выход");

                                var C = Console.ReadLine();

                                switch (C)
                                {
                                case "1":
                                    LoadProgress(false);
                                    RPG.GetRandomEvent();
                                    break;

                                default:
                                    Environment.Exit(0);
                                    break;
                                }
                            }
                        }
                        break;

                    case 2:
                        GetTypeEffect(monsters[i]);
                        GetTypeSpecAtk(monsters[i]);
                        break;

                    case 3:
                        if (!success)
                        {
                            RPG.Dialogue($"Противник увернулся от атаки.", true);
                        }
                        else
                        {
                            RPG.Dialogue($"Противник попытался увернуться от атаки.", true);
                        }
                        break;

                    default:
                        break;
                    } // Switch
                }     // for ActionChain

                if (effectCount != 0)
                {
                    effectCount--;
                    switch (PStatus)
                    {
                    case Status.Poisoned:
                        HP -= 2 * (LVL + 1);
                        RPG.Dialogue($"Было снято {2 * (LVL + 1)} ХП от яда.", true, ConsoleColor.DarkGreen);
                        break;

                    case Status.OnFire:
                        HP -= 3 * (LVL + 1);
                        RPG.Dialogue($"Было снято {3 * (LVL + 1)} ХП от огня.", true, ConsoleColor.DarkRed);
                        break;

                    default:
                        break;
                    }
                }

                if (monsters[i].Type == Monster.MType.Luminous || Inventory[1].GetType().Equals(new Yang_W()))
                {
                    monsters[i].ResetDamage();
                }

                else if (monsters[i].Type == Monster.MType.Thorned)
                {
                    defenceMultiplier = 1f;
                }

                else if (monsters[i].Type == Monster.MType.Ice && monsters[i].isInvincible)
                {
                    monsters[i].isInvincible = false;
                    monsters[i].ResetDamage();
                }

                if (defending)
                {
                    defenceMultiplier = 1f;
                    defending         = false;
                }
            } // for monsters
            count++;
            Console.ReadKey();
            MonsterFight();
        } // ChainClash
Beispiel #14
0
        static void MonsterFight()
        {
            if (Remaining() == 0)
            {
                if (amount == 1 && monsters[0].Type == Monster.MType.Explosive && count == 4)
                {
                    RewardXP    = 0;
                    RewardMoney = 0;
                }
                else
                {
                    if (boss)
                    {
                        RewardXP    = 100 + (float)Math.Pow(2, LVL) * 3;
                        RewardMoney = 50 + (int)Math.Round(Math.Pow(2, LVL / 2)) * 5;
                    }
                    else
                    {
                        RewardXP    = (RPG.rnd.Next(1, 25) + 5 * (float)Math.Pow(2, LVL / 2)) * amount;
                        RewardMoney = (RPG.rnd.Next(1, 5) + 5 * (int)Math.Round(Math.Pow(2, LVL / 4))) * amount;
                    }
                }

                RPG.Dialogue("Вы получили " + RewardXP + " ед. опыта и " + RewardMoney + " ед. монет.", false, ConsoleColor.Yellow);
                XP    += RewardXP;
                Money += RewardMoney;

                if (LVL == 15)
                {
                    RPG.Dialogue("Полученный опыт был превращён в " + (int)Math.Round((XP - MaxXP) / 10) + " очков мастерства", false, ConsoleColor.Yellow);
                }
                LvlUp();
                SaveProgress(true);
                Console.ReadKey();
            }
            else
            {
                // Снятие дебаффов с игрока
                foreach (Monster mnstr in monsters)
                {
                    if (mnstr.effectCooldown != 0)
                    {
                        mnstr.effectCooldown--;
                    }
                }

                if (effectCount == 0)
                {
                    if (PStatus == Status.Frozen)
                    {
                        Inventory[0].Damage = Inventory[0].baseDamage;
                    }
                    else if (PStatus == Status.Blind)
                    {
                        strikeChance = 0.95f;
                    }

                    PStatus = Status.None;
                }

                for (int i = 0; i < amount; i++)
                {
                    monsters[i].AI();
                }

                Console.WriteLine("Going to a player's turn");
                Console.ReadKey();
                PlayerTurn();
            }
        }
Beispiel #15
0
        static public void GearUpgrade(bool free)
        {
            Console.Clear();

            if (free)
            {
                RPG.Dialogue("Охра", "Что тебе нужно улучшить?", true, ConsoleColor.DarkYellow);
            }

            else
            {
                RPG.Dialogue("Охра", "Моя цена небольшая, " + ValueW + " монет за улучшение оружия, " + ValueA + " за улучшение брони."
                             + "\nС каждым улучшением повышаю эффективность на 5%."
                             + "\n\nУ вас " + Money + " монет.", true, ConsoleColor.DarkYellow);
            }

            Console.WriteLine($"Текущие характеристики: {Inventory[0].baseDamage} АТК ({Inventory[0].LVL}/{Inventory[0].MaxLVL} УР)" +
                              $"\n                         {Inventory[1].Defence} ЗАЩ ({Inventory[1].LVL}/{Inventory[1].MaxLVL} УР)");

            Console.WriteLine("Улучшить (+1 УР)");
            if (Inventory[0].Upgradeable())
            {
                Console.WriteLine("Оружие - 1");
            }
            if (Inventory[1].Upgradeable())
            {
                Console.WriteLine("Броню - 2");
            }

            switch (Console.ReadLine())
            {
            case "1":
                if (Inventory[0].Upgradeable())
                {
                    Inventory[0].LVL += 1;
                    Inventory[0].Upgrade();

                    if (!free)
                    {
                        Money    -= Convert.ToInt16(ValueW);
                        cityBank += (float)ValueW * (TavernTax - 1);
                    }
                    break;
                }
                else
                {
                    goto default;
                }

            case "2":
                if (Inventory[1].Upgradeable())
                {
                    Inventory[1].LVL += 1;
                    Inventory[1].Upgrade();

                    if (!free)
                    {
                        Money    -= Convert.ToInt16(ValueA);
                        cityBank += (float)ValueA * (TavernTax - 1);
                    }
                    break;
                }
                else
                {
                    goto default;
                }

            default:
                if (Inventory[0].Upgradeable() || Inventory[1].Upgradeable())
                {
                    GearUpgrade(free);
                }
                break;
            }
            UpdateEconomy();

            RPG.Dialogue("Охра", "Ещё увидимся.", false, ConsoleColor.DarkYellow);
        }
Beispiel #16
0
        static void GoHeal()
        {
            Console.WriteLine($"Лечение стоит {HealPrice} ({ChargePrice} за 1 заряд)." +
                              $"\nУ вас {Money} ({healCount}/{maxHealCount} Зарядов)." +
                              $"\nВылечиться? Да - 1, Нет - 2");

            switch (Console.ReadLine())
            {
            case "1":

                if (HP < MaxHP)
                {
                    if (Money >= HealPrice)
                    {
                        HP        = MaxHP;
                        Money    -= Convert.ToInt16(HealPrice);
                        cityBank += Convert.ToInt16(HealPrice / 10);
                        UpdateEconomy();

                        Console.WriteLine("Здоровье восстановлено.");
                    }
                    else
                    {
                        Console.WriteLine("Недостаточно денег для восстановления здоровья.");
                    }
                }
                else
                {
                    Console.WriteLine("Здоровье полное.");
                }

                if (healCount != maxHealCount)
                {
                    if (Money >= ChargePrice * (maxHealCount - healCount))
                    {
                        healCount = maxHealCount;
                        Money    -= Convert.ToInt16(ChargePrice * (maxHealCount - healCount));
                        cityBank += Convert.ToInt16(ChargePrice * (maxHealCount - healCount) / 10);
                        UpdateEconomy();

                        RPG.Dialogue("Заряды восстановлены.");
                    }
                    else
                    {
                        RPG.Dialogue("Недостаточно денег для восстановления зарядов.");
                    }
                }
                else
                {
                    RPG.Dialogue("Заряды полные.");
                }
                goto case "2";

            case "2":
                GoToCity();
                break;

            default:
                Console.Clear();
                Console.WriteLine("Нет команды.\n");
                GoHeal();
                break;
            }
        }
Beispiel #17
0
        static void GetTypeEffect(Monster monster)             // Получить эффект атаки типа монстра
        {
            double a = RPG.rnd.NextDouble();

            switch (monster.Type)
            {
            case Monster.MType.Poisonous:
                if (a <= 1f / 4)
                {
                    switch (PStatus)
                    {
                    case Status.OnFire:
                        RPG.Dialogue("Монстр попытался вас отравить, но яд разложился от высокой температуры.", true, ConsoleColor.DarkGreen);
                        break;

                    case Status.Frozen:
                        RPG.Dialogue("Монстр попытался вас отравить, но яд замёрз и стал неэффективен.", true, ConsoleColor.DarkGreen);
                        break;

                    default:
                        effectCount            = 2;
                        monster.effectCooldown = 3;
                        PStatus = Status.Poisoned;
                        RPG.Dialogue($"Вы отравлены.", true, ConsoleColor.DarkGreen);
                        break;
                    }
                }
                else
                {
                    RPG.Dialogue("Монстр попытался вас отравить.", true, ConsoleColor.DarkGreen);
                }
                break;

            case Monster.MType.Fire:
                if (a <= 1f / 3)
                {
                    switch (PStatus)
                    {
                    case Status.Poisoned:
                        effectCount            = 2;
                        monster.effectCooldown = 3;
                        PStatus = Status.OnFire;
                        RPG.Dialogue("Монстр вас поджог и разложил яд. Но теперь вы в огне.", true, ConsoleColor.DarkRed);
                        break;

                    case Status.Frozen:
                        effectCount      = 0;
                        PStatus          = 0;
                        strikeMultiplier = 1f;
                        Console.WriteLine("В попытке поджога, монстр вас разморозил.", true, ConsoleColor.DarkRed);
                        break;

                    default:
                        effectCount            = 2;
                        monster.effectCooldown = 3;
                        PStatus = Status.OnFire;
                        RPG.Dialogue($"Вы в огне.", true, ConsoleColor.DarkRed);
                        break;
                    }
                }
                else
                {
                    RPG.Dialogue($"Монстр попытался вас поджечь.", true, ConsoleColor.DarkRed);
                }
                break;

            case Monster.MType.Ice:
                if (a <= 3f / 20)
                {
                    switch (PStatus)
                    {
                    case Status.Poisoned:
                        PStatus                = Status.Frozen;
                        effectCount            = 2;
                        monster.effectCooldown = 4;
                        strikeMultiplier      -= 0.03f * LVL;
                        RPG.Dialogue($"Монстр вас заморозил, сделав яд неэффективным. Но АТК снижена на {3 * LVL}%", true, ConsoleColor.Cyan);
                        break;

                    case Status.OnFire:
                        effectCount = 0;
                        PStatus     = 0;
                        RPG.Dialogue("В попытке вас заморозить, монстр вас потушил.", true, ConsoleColor.Cyan);
                        break;

                    default:
                        PStatus                = Status.Frozen;
                        effectCount            = 2;
                        monster.effectCooldown = 4;
                        strikeMultiplier      -= 0.03f * LVL;
                        RPG.Dialogue($"АТК снижена на {3 * LVL}%", true, ConsoleColor.Cyan);
                        break;
                    }
                }
                else
                {
                    RPG.Dialogue($"Монстр попытался вас заморозить.", true, ConsoleColor.Cyan);
                }
                break;

            case Monster.MType.Dark:
                if (a <= 3f / 20)
                {
                    effectCount            = 1;
                    monster.effectCooldown = 5;
                    strikeChance           = 1f / 3;
                    PStatus = Status.Blind;
                    RPG.Dialogue($"Монстр скрылся в тенях. Шанс попасть по монстру стал 33%");
                }
                break;

            default:
                break;
            }
        }