RedFlys

Home work - boss fight

Aug 27th, 2021
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 23.90 KB | None | 0 0
  1. using System;
  2.  
  3. namespace HomeWork
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Random random = new Random();
  10.                        
  11.             int playerMaxHealt = 100;
  12.             int playerMaxMana = 100;
  13.             int playerHealt = playerMaxHealt;
  14.             int playerMana = playerMaxMana;
  15.             int damageSwordAttack = 20;
  16.             int recoveryManaSwordAttack = 20;
  17.             int damagePunishmentOfHeaven = 40;
  18.             int costManaPunishmentOfHeveant = 40;
  19.             int healHolyHand = 60;
  20.             int costManaHolyHand = 40;
  21.             int recoveryManaBlessingOfGods = 100;
  22.             bool isUseBlessingOfGods = false;
  23.             int countBlessingOfGods = 0;
  24.             int needBlessingOfGods = 2;
  25.             int multiplierSupremeBlessing = 3;
  26.             bool isSupremeBlessingActive = false;
  27.  
  28.             int bossHealt = 200;
  29.             int damageDirectBlow = 20;
  30.             int countOfSkeleton = 0;
  31.             int countOfSkeletonsSummond = 2;
  32.             int maxCountOfSkeletons = 6;
  33.             int damageSkelet = 10;
  34.             int gainDuration = 0;
  35.             int maxGainDuration = 3;
  36.             int gainMultiplier = 3;
  37.             int gainDamage = damageDirectBlow * gainMultiplier;
  38.             int damageBoneGolem = 90;            
  39.             bool isGolemSummond = false;
  40.  
  41.             int damageSkelets;
  42.  
  43.             bool isReadyAttack = false;
  44.             bool isCoward = false;            
  45.  
  46.             Console.WriteLine("Приветсвуем тебя, паладин. Тебе предстоит сразиться с жестоким и опасным врагом - тёмным мечником. " +
  47.                 "К сожалению, тебе придётся встретиться с ним 1 на 1, так как все наши войны находятся на западном материке. Чёртова, война." +
  48.                 "Советую тебе по-лучше подготовиться к бою, скажи, как будешь готов.");
  49.  
  50.             while (isCoward == false && isReadyAttack == false)
  51.             {
  52.                 Console.WriteLine("1 - пойти в бой \n2 - посмотреть свои способности \n3 - узнать о способностях противника \n4 - сбежать поджав хвост");
  53.                 Console.Write("Введите номер команды: ");
  54.  
  55.                 switch (Console.ReadLine())
  56.                 {
  57.                     case "1":
  58.                         isReadyAttack = true;
  59.                         Console.WriteLine("Взяв с собой кота, вы пошли к заброшенному поместью Седогривов. Именно там должен находиться тёмный мечник.");
  60.                         break;
  61.  
  62.                     case "2":
  63.                         Console.WriteLine($"У вас может быть максимум {playerMaxHealt} здоровья и {playerMaxMana} маны. Сейчас они полные. Вы владеете следующими навыками: " +
  64.                             $"\n1. Удар мечом. Наносит {damageSwordAttack} урона. В этот момент вы успеете восстановить {recoveryManaSwordAttack} маны." +
  65.                             $"\n2. Кара небес. Наносит {damagePunishmentOfHeaven} урона. Для использования необходимо {costManaPunishmentOfHeveant} маны. " +
  66.                             $"\n3. Святая длань. Восстанавливает {healHolyHand} здоровья. Для использования необходимо {costManaHolyHand} маны. " +
  67.                             $"\n4. Благословение богов. Восстанавливает {recoveryManaBlessingOfGods} маны. Мана окружает вас так плотно, что её не может пробить никакая физическая атака." +
  68.                             $"\n5. Высшее благословение. Увеличивает ваш максимальный запас здоровья и маны в {multiplierSupremeBlessing} раза до конца боя." +
  69.                             $" Восполняет все показатели до максимального уровня. Может быть применено 1 раз, только после использования благословения богов {needBlessingOfGods} раза.");
  70.                         break;
  71.  
  72.                     case "3":
  73.                         Console.WriteLine($"У тёмного мечника {bossHealt} здоровья. Использование тёмной магии не требует маны, но очень сильно помутняет рассудок. " +
  74.                             $"\nЕсли он продолжит атаковать соседние деревни, то сойдёт с ума, а способности выйдут из под контроля, что вызовет множество костяных големов. " +
  75.                             $"\nЭто будет очень большой проблемой, так как големов нельзя уничтожить, не убив призывателя." +
  76.                             $"\nМечник будет использовать следующие способности:" +
  77.                             $"\n1. Прямой удар. Он использует рапиру и наносит прямой колющий удар. Наносит {damageDirectBlow} урона. " +
  78.                             $"\n2. Призыв нежити. Призывает {countOfSkeletonsSummond} скелетов, каждый из которох наносит {damageSkelet} урона. " +
  79.                             $"\nКогда будут призваны {maxCountOfSkeletons} скелетов, может быть собран костяной голем, который наносит {damageBoneGolem} урона. " +
  80.                             $"\nСкелеты умрут, если ты используешь кару небес на призывателе. Костяной голем умрёт, когда призыватель умрёт или развеет призыв." +
  81.                             $"\nНо на это можешь не расчитывать во время боя." +
  82.                             $"\n3. Усиление. Мечник усиливает себя физически в {gainMultiplier} раза на некоторое время.");
  83.                         break;
  84.  
  85.                     case "4":
  86.                         Console.WriteLine("Испугавшись смерти, вы сбежали.");
  87.                         isCoward = true;
  88.                         break;
  89.  
  90.                     default:
  91.                         Console.WriteLine("Такой команды нет.");
  92.                         break;
  93.                 }
  94.  
  95.                 Console.WriteLine("\nДля продолжения нажмите любую клавишу...");
  96.                 Console.ReadKey();
  97.                 Console.Clear();
  98.             }
  99.  
  100.             if (isReadyAttack)
  101.             {
  102.                 Console.WriteLine("Придя к поместью, вы заметили свет в главном доме. Именно туда вы и направились." +
  103.                     "\nОтпустив кота, вы открыли широкие двери, за которыми находился большой зал. Напротив вас стояло два солдата тьмы." +
  104.                     "\nОдним взмахом меча вы рассекли их пополам. " +
  105.                     "\nХлоп-хлоп-хлоп. Вы услышали сверху хлопки." +
  106.                     "\nПодняв глаза, вы увидели, что это была ваша цель. " +
  107.                     "\nОн медленно сошёл вниз по лестнице и обнажил свой меч." +
  108.                     "\n    - А я то думал, кого они за мной пошлют. Лестно, что это кто-то из ордена паладинов. Жаль, что ты умрёшь сегодня, не увидев, как нежить захватит эту страну.");
  109.  
  110.                 while (playerHealt > 0 && bossHealt > 0)
  111.                 {
  112.                     Console.Write($"Ваше здоровье: {playerHealt}. Ваша мана: {playerMana}. Здоровье врага: {bossHealt}.");
  113.  
  114.                     if (isGolemSummond)
  115.                     {
  116.                         Console.WriteLine("Призван голем.");
  117.                     }
  118.                     else if (countOfSkeleton > 0)
  119.                     {
  120.                         Console.WriteLine($"Кол-во скелетов: {countOfSkeleton}");    
  121.                     }
  122.  
  123.                     Console.WriteLine("\n\n" +
  124.                         "Выберите атаку: " +
  125.                         $"\n1. Удар мечом. {damageSwordAttack} урона. Восстановит {recoveryManaSwordAttack} маны." +
  126.                         $"\n2. Кара небес. {damagePunishmentOfHeaven} урона. Затратит {costManaPunishmentOfHeveant} маны. Уничтожает всех скелетов." +
  127.                         $"\n3. Святая длань. Восстанавливает {healHolyHand} здоровья. Затратит {costManaHolyHand} маны." +
  128.                         $"\n4. Благословение богов. Восстанавливает {recoveryManaBlessingOfGods} маны. Защищает от любого урона.");
  129.  
  130.                     if (countBlessingOfGods >= needBlessingOfGods && isSupremeBlessingActive == false)
  131.                     {
  132.                         Console.WriteLine($"5. Великое благословение. Увеличит здоровье и ману в {multiplierSupremeBlessing} раза. Полностью восполнит здоровье и ману.");
  133.                     }
  134.  
  135.                     Console.Write("Введите номер способности, для использования: ");
  136.  
  137.                     switch (Console.ReadLine())
  138.                     {
  139.                         case "1":
  140.                             Console.WriteLine($"Вы используете удар мечом. Вы нанесли {damageSwordAttack} урона. Вы восстановили {recoveryManaSwordAttack} маны.");
  141.  
  142.                             bossHealt -= damageSwordAttack;
  143.                             playerMana += recoveryManaSwordAttack;
  144.  
  145.                             if (playerMana > playerMaxMana)
  146.                             {
  147.                                 playerMana = playerMaxMana;
  148.                             }
  149.                            
  150.                             break;
  151.  
  152.                         case "2":
  153.                             if (playerMana >= costManaPunishmentOfHeveant)
  154.                             {
  155.                                 Console.WriteLine($"Вы используете кару небес. Вы нанесли {damagePunishmentOfHeaven} урона. \nВы потратили {costManaPunishmentOfHeveant} маны.");
  156.  
  157.                                 if(countOfSkeleton > 0)
  158.                                 {
  159.                                     Console.WriteLine("Вы уничтожили всех скелетов.");
  160.                                 }
  161.  
  162.                                 bossHealt -= damagePunishmentOfHeaven;
  163.                                 playerMana -= costManaPunishmentOfHeveant;
  164.                                 countOfSkeleton = 0;
  165.                             }
  166.                             else
  167.                             {
  168.                                 Console.WriteLine("Вам не хватило маны для использования кары небес.");
  169.                             }
  170.  
  171.                             break;
  172.  
  173.                         case "3":
  174.                             if (playerMana >= costManaHolyHand)
  175.                             {
  176.                                 Console.WriteLine($"Вы используете святую длань. Вы восстановили {healHolyHand} здоровья. \nВы потратили {costManaHolyHand} маны.");
  177.                                                                
  178.                                 playerMana -= costManaHolyHand;
  179.                                 playerHealt += healHolyHand;
  180.                                
  181.  
  182.                                 if (playerHealt > playerMaxHealt)
  183.                                 {
  184.                                     playerHealt = playerMaxHealt;
  185.                                 }
  186.                             }
  187.                             else
  188.                             {
  189.                                 Console.WriteLine("Вам не хватило маны для использования святой длани.");
  190.                             }
  191.  
  192.                             break;
  193.  
  194.                         case "4":
  195.                             Console.WriteLine($"Вы восстановили {recoveryManaBlessingOfGods} маны.");
  196.  
  197.                             playerMana += recoveryManaBlessingOfGods;
  198.                             countBlessingOfGods++;
  199.                             isUseBlessingOfGods = true;
  200.  
  201.                             if (playerMana > playerMaxMana)
  202.                             {
  203.                                 playerMana = playerMaxMana;
  204.                             }
  205.  
  206.                             break;
  207.  
  208.                         case "5":
  209.                             if (countBlessingOfGods >= needBlessingOfGods && isSupremeBlessingActive == false)
  210.                             {
  211.                                 Console.WriteLine($"Ваша вера была вознаграждена. Ваши запасы здоровья и маны увеличенны в {multiplierSupremeBlessing} раза. Вы полностью восстановились. ");
  212.                                
  213.                                 playerMaxHealt *= multiplierSupremeBlessing;
  214.                                 playerMaxMana *= multiplierSupremeBlessing;
  215.                                 playerHealt = playerMaxHealt;
  216.                                 playerMana = playerMaxMana;
  217.                                 isSupremeBlessingActive = true;
  218.                             }
  219.                             else
  220.                             {
  221.                                 Console.WriteLine("Вы ждали чуда, но чудо не произошло.");
  222.                             }
  223.  
  224.                             break;
  225.  
  226.                         default:
  227.                             Console.WriteLine("Вы не придумали ничего лучше, чем закричать. \n    -А-аа-аа-а. Fuck you!");
  228.                             break;
  229.                     }                  
  230.  
  231.                     switch(random.Next(1, 4))
  232.                     {
  233.                         case 1:
  234.                             if(isUseBlessingOfGods)
  235.                             {
  236.                                 Console.WriteLine($"Враг попытался нанести вам урон, но слой маны окутавший вас настолько плотен, что мечник даже не смог приблизиться к вам.");
  237.                             }
  238.                             else if (gainDuration > 0)
  239.                             {                                
  240.                                 playerHealt -= gainDamage;
  241.  
  242.                                 Console.WriteLine($"Враг под усилением использует прямой удар. Он наносит вам {gainDamage} урона.");
  243.                             }
  244.                             else
  245.                             {
  246.                                 playerHealt -= damageDirectBlow;
  247.                                 Console.WriteLine($"Враг использует прямой удар. Он наносит вам {damageDirectBlow} урона.");
  248.                             }
  249.  
  250.                             break;
  251.  
  252.                         case 2:
  253.                             if (isGolemSummond)
  254.                             {
  255.                                 Console.WriteLine("Враг попытался призвать скелетов, но они тут же рассыпались. Ему пока не хватает сил контролировать кого-то, кроме голема. \nЭто твой шанс.");
  256.                             }
  257.                             else
  258.                             {
  259.                                 if (countOfSkeleton == maxCountOfSkeletons)
  260.                                 {
  261.                                     isGolemSummond = true;
  262.                                     countOfSkeleton = 0;
  263.  
  264.                                     Console.WriteLine("Вы видите, что враг использует заклинание призыва, но все скелеты рассыпались. " +
  265.                                         "\nНеожидано, их кости начали притягиваться к одному месту. Мечник призвал голема. Нужно быстрее покончить с этим, или вас ждёт смерть.");
  266.                                 }
  267.                                 else
  268.                                 {
  269.                                     countOfSkeleton += countOfSkeletonsSummond;
  270.  
  271.                                     Console.WriteLine($"Враг призвал {countOfSkeletonsSummond} скелетов. Теперь их {countOfSkeleton}");
  272.                                 }
  273.                             }
  274.  
  275.                             break;
  276.  
  277.                         case 3:
  278.                             gainDuration = maxGainDuration;
  279.  
  280.                             Console.WriteLine("Мечник использует усиление. Надо остерегаться его атак.");
  281.                             break;
  282.                     }
  283.  
  284.                     if (gainDuration > 0)
  285.                     {
  286.                         gainDuration--;
  287.                     }
  288.  
  289.                     if (isUseBlessingOfGods)
  290.                     {
  291.                         if (isGolemSummond)
  292.                         {
  293.                             Console.WriteLine("Мощный удар голема лишь сдвинул вас на пару сантиметров.");
  294.                         }
  295.                         else if (countOfSkeleton > 0)
  296.                         {
  297.                             Console.WriteLine("Скелеты замерли, такая концентрация маны в воздухе заблокировала их связь с призывателем.");
  298.                         }
  299.                     }
  300.                     else
  301.                     {
  302.                         if (isGolemSummond)
  303.                         {
  304.                             playerHealt -= damageBoneGolem;
  305.  
  306.                             Console.WriteLine($"Мощный удар голема откинул вас на несколько метоов. Вам нанесли {damageBoneGolem} урона. Ваше тело ноет от боли.");
  307.                         }
  308.                         else if (countOfSkeleton > 0)
  309.                         {
  310.                             damageSkelets = damageSkelet * countOfSkeleton;
  311.                             playerHealt -= damageSkelets;
  312.  
  313.                             Console.WriteLine($"Пока вы сражались с мечником, скелеты провели скоординированную атаку. Они нанесли {damageSkelets} урона.");
  314.                         }
  315.                     }
  316.  
  317.                     isUseBlessingOfGods = false;
  318.  
  319.                     Console.WriteLine("\nДля продолжения нажмите любую клавишу...");
  320.                     Console.ReadKey();
  321.                     Console.Clear();
  322.                 }
  323.  
  324.                 if (playerHealt <= 0 && bossHealt <= 0)
  325.                 {
  326.                     Console.WriteLine("Хоть вы и победили тёмного мечника, но его клинок добрался до вашего сердца. " +
  327.                         "Жители деревни не забыли вашей жертвы и возвели вам памятник, а на месте поместья Седогривов открылась новая школа Света.");
  328.                 }
  329.                 else if (playerHealt <= 0)
  330.                 {
  331.                     Console.WriteLine("К сожалению вы погибли. Когда жители деревни не дождались вашего возвращения, они отправили соотвествующее письмо в Орден. " +
  332.                         "К сожалению, к прибытию подкрепления вся деревня уже полыхала огнём. Десяток костяных големов смогли изрядно порядить ряды паладинов, но в итоге мечник, на тот момент уже совсем обезумев, пал от их рук. " +
  333.                         "Ваше имя навсегда останется на стене памяти в центральной академии Света.");
  334.                 }
  335.                 else if (bossHealt <= 0)
  336.                 {
  337.                     Console.WriteLine("Вытащив меч из груди мечника, вы удостоверились, что это был его последний вздох. Вернувшись в деревню, вы отчитались о проделанной работе старейшине. " +
  338.                         "Он подготовил бумаги для Ордена, которые подтверждали ваши заслуги. По пути в Орден вы много думали о вашем бое, и что-то вам не давало покоя. " +
  339.                         "Что-то, что ускользнуло от вашего внимания. Надеясь на то, что это лишь чувство усталости, вы уснули и проспали весь путь до столицы. " +
  340.                         "Вы ещё не подозревали, что это была только одна маленькая победа в начинающейся войне.");
  341.                 }
  342.             }
  343.             else if (isCoward)
  344.             {
  345.                 Console.WriteLine("Сбежав, вы не могли вернуться в столицу. Вас отправили, в ответ на просьбу о помощи от старейшины." +
  346.                     "\nУвидев, что вас нигде нет, а некоторые люди видели, что вы пошли в противоположную сторону от поместья Седогрива, старейшина отправил послание о вашем бегстве в Орден паладинов." +
  347.                     "\nДо конца своих дней вы скитались со странствующими торговцами и умерли в нищете и забытии.");
  348.             }
  349.  
  350.             Console.WriteLine("\nДля выхода нажмите любую клавишу...");
  351.             Console.ReadKey();
  352.             Console.Clear();
  353.         }
  354.     }
  355. }
Add Comment
Please, Sign In to add comment