From e4b230a0ad3a4b723847bd784df25d003899b2e1 Mon Sep 17 00:00:00 2001 From: xp986 Date: Wed, 3 Sep 2025 23:32:20 -0500 Subject: [PATCH] Changed a lot of Actions.cs and a few other things to be more easily extendable. --- Actions.cs | 700 ++++++++++++------ Amarok.cs | 11 + Character.cs | 9 +- ColoredConsole.cs | 36 + GameState.cs | 120 +-- Item.cs | 107 +++ Menu.cs | 35 + Player.cs | 42 +- Program.cs | 70 +- Skeleton.cs | 1 + UncodedOne.cs | 1 + VinFletcher.cs | 10 + bin/Debug/net9.0/FinalBattle.dll | Bin 19456 -> 27648 bytes bin/Debug/net9.0/FinalBattle.pdb | Bin 15936 -> 20192 bytes obj/Debug/net9.0/FinalBattle.AssemblyInfo.cs | 2 +- .../FinalBattle.AssemblyInfoInputs.cache | 2 +- ...FinalBattle.csproj.CoreCompileInputs.cache | 2 +- obj/Debug/net9.0/FinalBattle.dll | Bin 19456 -> 27648 bytes obj/Debug/net9.0/FinalBattle.pdb | Bin 15936 -> 20192 bytes obj/Debug/net9.0/ref/FinalBattle.dll | Bin 7680 -> 9728 bytes obj/Debug/net9.0/refint/FinalBattle.dll | Bin 7680 -> 9728 bytes 21 files changed, 834 insertions(+), 314 deletions(-) create mode 100644 Amarok.cs create mode 100644 ColoredConsole.cs create mode 100644 Item.cs create mode 100644 Menu.cs create mode 100644 VinFletcher.cs diff --git a/Actions.cs b/Actions.cs index e6fa6f8..56f2a2e 100644 --- a/Actions.cs +++ b/Actions.cs @@ -1,291 +1,557 @@ public interface IAction { - void GetAction(Character character); - void DoNothing(Character character); - void Attack(); - void HealthPotion(); - Item Items(); + void DoAction(Character character, Action action); } -public sealed class Actions : IAction +public sealed class Actions { - private static readonly Lazy _instance = new Lazy(() => new Actions()); - private Actions() { } + + public static readonly Lazy _instance = new Lazy (() => new Actions()); + private Actions() {} public static Actions Instance { - get { return _instance.Value; } + get {return _instance.Value;} } - public void GetAction(Character character) + public int GetAction(Character character) { - switch (MenuItem.Description) + if (GameState.Instance.heros.Contains(character) && GameState.Instance.herosAIControl == false) { - - default: - } - - while (true) - { - var type = character.GetType().ToString(); - switch (type) + int input; + while (true) { - case "Player": PlayerActions(character); break; - case "Skeleton": MonsterActions(character); break; - case "UncodedOne": MonsterActions(character); break; - default: + try + { + input = Int32.Parse(ColoredConsole.Prompt("Select an action")); + } + catch (FormatException) + { + ColoredConsole.WriteLine("Sorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + if (input <= 0 || input > character.CharacterEnabledActions.Count) + { + ColoredConsole.WriteLine("Sorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + else + { break; + } } - break; + return input - 1; } - } - - public void PlayerActions(Character character) - { - string? action; - - while (true) + else if (GameState.Instance.monsters.Contains(character) && GameState.Instance.monstersAIControl == false) { - Console.Clear(); - GameState.Instance.DisplayStatus(); - Console.WriteLine($"Current Round: {GameState.Instance.currentRound}"); - Console.WriteLine("\n1. Do Nothing"); - Console.WriteLine("2. Punch"); - if (GameState.Instance.herosAIControl == true) + int input; + while (true) { - action = AIPickAction(); + input = Int32.Parse(ColoredConsole.Prompt("Select an action")); + if (input <= 0 || input > character.CharacterEnabledActions.Count) + { + ColoredConsole.WriteLine("Sorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + else + { + break; + } + } + return input - 1; + } + else if (GameState.Instance.heros.Contains(character) && GameState.Instance.herosAIControl == true) + { + if (character.currentHP < character.maxHP / 2) + { + Random random = new Random(); + int roll = random.Next(1, 5); + if (roll == 1) + { + return 1; + } + else + { + return 0; + } + } + return 0; + } + else if (GameState.Instance.monsters.Contains(character) && GameState.Instance.monstersAIControl == true) + { + Random random = new Random(); + if (character.currentHP < character.maxHP / 2) + { + int roll = random.Next(1, 5); + if (roll == 1) + { + return roll; + } + else + { + while (true) + { + int notPotionAction = random.Next(0, character.CharacterEnabledActions.Count); + if (notPotionAction != 1) + { + return notPotionAction; + } + else + { + continue; + } + } + } } else { - Console.Write($"\n{character.name}, select an action: "); - action = Console.ReadLine(); + while (true) + { + int notPotionAction = random.Next(0, character.CharacterEnabledActions.Count); + if (notPotionAction != 1) + { + return notPotionAction; + } + else + { + continue; + } + } } - switch (action) - { - case "1": DoNothing(character); break; - case "2": Punch(character); break; - default: - Console.WriteLine("Sorry, you can't do that..."); - Thread.Sleep(1000); - continue; - } - break; } + else return 0; } - public void MonsterActions(Character character) + public bool DoAction(Character character, int action) { - while (true) + string actionToDo = character.CharacterEnabledActions[action]; + if (actionToDo == "Do Nothing") { - string? action; - Console.Clear(); - GameState.Instance.DisplayStatus(); - Console.WriteLine($"Current Round: {GameState.Instance.currentRound}"); - if (character.name == "Skeleton") - { - Console.WriteLine("\n1. Do Nothing"); - Console.WriteLine("2. Bone Crunch"); - if (GameState.Instance.monstersAIControl == true) - { - action = AIPickAction(); - } - else - { - Console.Write($"\n{character.name}, select an action: "); - action = Console.ReadLine(); - } - switch (action) - { - case "1": DoNothing(character); break; - case "2": BoneCrunch(character); break; - default: - Console.WriteLine("Sorry, you can't do that..."); - Thread.Sleep(1000); - continue; - } - } - if (character.name == "The Uncoded One") - { - Console.WriteLine("\n1. Do Nothing"); - Console.WriteLine("2. Unraveling"); - if (GameState.Instance.monstersAIControl == true) - { - action = AIPickAction(); - } - else - { - Console.Write($"\n{character.name}, select and action: "); - action = Console.ReadLine(); - } - switch (action) - { - case "1": DoNothing(character); break; - case "2": Unraveling(character); break; - default: Console.WriteLine("Sorry, you can't do that..."); - Thread.Sleep(1000); - continue; - } - } - break; + DoNothing(character); + return true; } - } - - - public Character SelectTarget(Character character) - { - int target; - - while (true) + if (actionToDo == "Punch") { - if (GameState.Instance.heros.Contains(character)) - { - Console.WriteLine(); - int number = 1; - foreach (var monster in GameState.Instance.monsters) - { - Console.WriteLine($"{number}. {monster.name}"); - number++; - } - } - else if (GameState.Instance.monsters.Contains(character)) - { - int number = 1; - Console.WriteLine(); - foreach (var hero in GameState.Instance.heros) - { - Console.WriteLine($"{number}. {hero.name}"); - number++; - } - } - Console.Write("\nSelect a target: "); - try - { - target = Int32.Parse(Console.ReadLine()); - } - catch (System.FormatException) - { - Console.WriteLine("\nSorry, that's not a valid target..."); - continue; - } - try - { - if (GameState.Instance.heros.Contains(character)) - { - return GameState.Instance.monsters[target - 1]; - } - else if (GameState.Instance.monsters.Contains(character)) - { - return GameState.Instance.heros[target - 1]; - } - } - catch (System.ArgumentOutOfRangeException) - { - Console.WriteLine("\nSorry, that's not a valid target..."); - continue; - } + Punch(character); + return true; + } + if (actionToDo == "Sword Attack") + { + SwordAttack(character); + return true; + } + if (actionToDo == "Health Potion") + { + HealthPotion(character); + return true; + } + if (actionToDo == "Items") + { + bool useItem = Items(character); + return useItem; + } + if (actionToDo == "Bone Crunch") + { + BoneCrunch(character); + return true; + } + if (actionToDo == "Unraveling") + { + Unraveling(character); + return true; + } + if (actionToDo == "Bow Shot") + { + BowShot(character); + return true; + } + if (actionToDo == "Quick Shot") + { + QuickShot(character); + return true; + } + if (actionToDo == "Hero's Sword") + { + HerosSword(character); + return true; + } + if (actionToDo == "Bite") + { + Bite(character); + return true; + } + else + { + return false; } } public void DoNothing(Character character) { - - Console.WriteLine($"\n{character.name} does nothing..."); - Thread.Sleep(1000); + ColoredConsole.WriteLine($"\n{character.name} does NOTHING.", ConsoleColor.Yellow); + Thread.Sleep(1500); + return; } public void Punch(Character character) { - Character target = null; - if (GameState.Instance.herosAIControl == true) + var target = GetTarget(character); + int damage = character.damageModifier + 1 - target.damageReduction; + ColoredConsole.WriteLine($"\n{character.name} uses PUNCH!", ConsoleColor.Yellow); + if (target.name == "Amarok") { - target = AIPickTarget(character); + ColoredConsole.WriteLine("STONE ARMOR reduced damage to Amarok by 1.", ConsoleColor.Red); + } + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write("HP.", ConsoleColor.Cyan); + target.currentHP -= damage; + Thread.Sleep(1500); + return; + } + + public void SwordAttack(Character character) + { + var target = GetTarget(character); + int damage; + Random random = new Random(); + + if (character.equipedItems.Any()) + { + damage = character.damageModifier + character.equipedItems[0].ItemDamageModifier - target.damageReduction; } else { - target = SelectTarget(character); + damage = character.damageModifier - target.damageReduction; } - - Console.WriteLine($"\n{character.name} uses PUNCH on {target.name}!"); - Console.WriteLine($"{target.name} took 1 damage!"); - target.currentHP -= 1; - Thread.Sleep(1000); + ColoredConsole.WriteLine($"\n{character.name} uses SWORD ATTACK!", ConsoleColor.Yellow); + if (target.name == "Amarok") + { + ColoredConsole.WriteLine("STONE ARMOR reduced damage to Amarok by 1.", ConsoleColor.Red); + } + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write("HP.", ConsoleColor.Cyan); + target.currentHP -= damage; + Thread.Sleep(1500); return; } + public void HerosSword(Character character) + { + var target = GetTarget(character); + int damage; + Random random = new Random(); + + damage = random.Next(1, 4) + character.equipedItems[0].ItemDamageModifier - target.damageReduction; + ColoredConsole.WriteLine($"\n{character.name} uses HERO'S SWORD!", ConsoleColor.Yellow); + if (target.name == "Amarok") + { + ColoredConsole.WriteLine("STONE ARMOR reduced damage to Amarok by 1.", ConsoleColor.Red); + } + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write("HP.", ConsoleColor.Cyan); + target.currentHP -= damage; + Thread.Sleep(1500); + return; + + } + public void BoneCrunch(Character character) { - Character target = null; - if (GameState.Instance.monstersAIControl == true) - { - target = AIPickTarget(character); - } - else - { - target = SelectTarget(character); - } + var target = GetTarget(character); + int damage; + ColoredConsole.WriteLine($"\n{character.name} uses BONE CRUNCH!", ConsoleColor.Yellow); Random random = new Random(); - int coin = random.Next(1, 101); - Console.WriteLine($"\n{character.name} used Bone Crunch on {target.name}!"); - if (coin > 50) + if (character.equipedItems.Any()) { - Console.WriteLine($"{target.name} took 1 damage!"); - target.currentHP -= 1; - Thread.Sleep(1000); - return; + damage = random.Next(0, 2) + character.damageModifier + character.equipedItems[0].ItemDamageModifier - target.damageReduction; } else { - Console.WriteLine("Nothing happened!"); - Thread.Sleep(1000); - return; + damage = random.Next(0, 2) - target.damageReduction; } + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write("HP.", ConsoleColor.Cyan); + target.currentHP -= damage; + Thread.Sleep(1500); + return; + } + + public void HealthPotion(Character character) + { + if (GameState.Instance.heros.Contains(character)) + { + if (GameState.Instance.heroPotionsAvailable > 0) + { + ColoredConsole.WriteLine($"\n{character.name} uses a HEALTH POTION!", ConsoleColor.Yellow); + GameState.Instance.heroPotionsAvailable -= 1; + if (character.currentHP + 5 > character.maxHP) + { + character.currentHP = character.maxHP; + ColoredConsole.WriteLine($"{character.name}'s HP is now {character.maxHP}.", ConsoleColor.Green); + } + else + { + character.currentHP += 5; + ColoredConsole.WriteLine($"{character.name}'s HP is now {character.currentHP}.", ConsoleColor.Green); + } + Thread.Sleep(1500); + return; + } + else + { + ColoredConsole.WriteLine("There are no more potions!", ConsoleColor.Red); + return; + } + } + else + { + if (GameState.Instance.monsterPotionsAvailable > 0) + { + ColoredConsole.WriteLine($"\n{character.name} uses a HEALTH POTION!", ConsoleColor.Yellow); + GameState.Instance.monsterPotionsAvailable -= 1; + if (character.currentHP + 5 > character.maxHP) + { + character.currentHP = character.maxHP; + ColoredConsole.WriteLine($"{character.name}'s HP is now {character.maxHP}.", ConsoleColor.Green); + } + else + { + character.currentHP += 5; + ColoredConsole.WriteLine($"{character.name}'s HP is now {character.currentHP}.", ConsoleColor.Green); + } + Thread.Sleep(1500); + return; + } + else + { + ColoredConsole.WriteLine("There are no more potions!", ConsoleColor.Red); + return; + } + } + } + + public bool Items(Character character) + { + while (true) + { + Console.Clear(); + GameState.Instance.DisplayStatus(); + Menu.BuildItemsMenu(character); + Item item = GetItem(character); + if (item is null) + { + return false; + } + //Console.WriteLine(ItemDamageModifier); + if (item != null) + { + Item.EquipItem(character, item); + return true; + } + break; + } + return false; + } + + public Item? GetItem(Character character) + { + int selection; + while (true) + { + selection = Int32.Parse(ColoredConsole.Prompt("Select an item")) - 1; + if (character.equipedItems.Any() && selection == 0) + { + Item.UnequipItem(character, character.equipedItems[selection]); + return null; + } + if (!character.equipedItems.Any() && selection >= 0 && selection < GameState.Instance.heroInventory.Count) + { + break; + } + if (selection == GameState.Instance.heroInventory.Count) + { + return null; + } + else + { + ColoredConsole.WriteLine("Sorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + } + Item item = GameState.Instance.heroInventory[selection]; + return item; } public void Unraveling(Character character) { - Character target = null; - if (GameState.Instance.monstersAIControl == true) + var target = GetTarget(character); + int damage; + Random random = new Random(); + + ColoredConsole.WriteLine($"\n{character.name} uses UNRAVELING!", ConsoleColor.Yellow); + damage = random.Next(0, 6) - target.damageReduction; + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write("HP.", ConsoleColor.Cyan); + target.currentHP -= damage; + Thread.Sleep(1500); + return; + } + + public void Bite(Character character) + { + var target = GetTarget(character); + int damage; + + ColoredConsole.WriteLine($"\n{character.name} uses BITE!", ConsoleColor.Yellow); + damage = character.damageModifier + 1 - target.damageReduction; + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write("HP.", ConsoleColor.Cyan); + target.currentHP -= damage; + Thread.Sleep(1500); + return; + } + + public void BowShot(Character character) + { + var target = GetTarget(character); + int damage; + + ColoredConsole.WriteLine($"\n{character.name} uses BOW SHOT!", ConsoleColor.Yellow); + if (target.name == "Amarok") { - target = AIPickTarget(character); + ColoredConsole.WriteLine("STONE ARMOR reduced damage to Amarok by 1.", ConsoleColor.Red); + } + damage = character.equipedItems[0].ItemDamageModifier - target.damageReduction; + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write($"HP.", ConsoleColor.Cyan); + target.currentHP -= damage; + Thread.Sleep(1500); + return; + } + + public void QuickShot(Character character) + { + var target = GetTarget(character); + int damage; + Random random = new Random(); + + ColoredConsole.WriteLine($"\n{character.name} uses QUICK SHOT!", ConsoleColor.Yellow); + int roll = random.Next(1, 101); + if (roll < 50) + { + ColoredConsole.WriteLine("Nothing happened!", ConsoleColor.Yellow); + Thread.Sleep(1500); + return; } else { - target = SelectTarget(character); - } - Random random = new Random(); - Console.WriteLine($"\n{character.name} used Unraveling on {target.name}!"); - int damage = random.Next(3); - if (damage > 0) - { - Console.WriteLine($"{target.name} took {damage} damage!"); + if (target.name == "Amarok") + { + ColoredConsole.WriteLine("STONE ARMOR reduced damage to Amarok by 1.", ConsoleColor.Red); + } + damage = random.Next(2,6) - target.damageReduction; + ColoredConsole.Write($"{target.name} loses ", ConsoleColor.Cyan); + ColoredConsole.Write($"{damage} ", ConsoleColor.Red); + ColoredConsole.Write($"HP.", ConsoleColor.Cyan); target.currentHP -= damage; - Thread.Sleep(1000); + Thread.Sleep(1500); return; } } - public Character AIPickTarget(Character character) + public Character GetTarget(Character character) { - Random random = new Random(); - if (GameState.Instance.heros.Contains(character)) + if (GameState.Instance.heros.Contains(character) && GameState.Instance.herosAIControl == false) { - var lastItem = GameState.Instance.monsters.Count(); - var target = random.Next(1, lastItem + 1); - return GameState.Instance.monsters[target - 1]; + while (true) + { + foreach (Character monster in GameState.Instance.monsters) + { + int index = GameState.Instance.monsters.IndexOf(monster) + 1; + int indexOf = GameState.Instance.monsters.IndexOf(monster); + int indexLast = GameState.Instance.monsters.IndexOf(GameState.Instance.monsters[^1]); + Console.Write($"{index}. {monster.name}"); + if (indexOf != indexLast && index != GameState.Instance.monsters.Count()) + { + Console.Write("\n"); + } + } + try + { + int target = Int32.Parse(ColoredConsole.Prompt("\nSelect a target")); + return GameState.Instance.monsters[target - 1]; + } + catch (ArgumentOutOfRangeException) + { + ColoredConsole.WriteLine("\nSorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + catch (FormatException) + { + ColoredConsole.WriteLine("\nSorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + } } - else + else if (GameState.Instance.monsters.Contains(character) && GameState.Instance.monstersAIControl == false) { - var lastItem = GameState.Instance.heros.Count(); - var target = random.Next(1, lastItem + 1); - return GameState.Instance.heros[target - 1]; + while (true) + { + foreach (Character hero in GameState.Instance.heros) + { + int index = GameState.Instance.heros.IndexOf(hero) + 1; + Console.Write($"{index}. {hero.name}"); + } + try + { + int target = Int32.Parse(ColoredConsole.Prompt("\nSelect a target")); + return GameState.Instance.heros[target - 1]; + } + catch (ArgumentOutOfRangeException) + { + ColoredConsole.WriteLine("\nSorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + catch (FormatException) + { + ColoredConsole.WriteLine("\nSorry. That's not a valid input.", ConsoleColor.Red); + continue; + } + } } - } - - public string AIPickAction() - { - Random random = new Random(); - Thread.Sleep(1000); - return random.Next(1, 3).ToString(); + else if (GameState.Instance.heros.Contains(character) && GameState.Instance.herosAIControl == true) + { + while (true) + { + Random random = new Random(); + int index = random.Next(0, GameState.Instance.monsters.Count); + if (GameState.Instance.monsters.Contains(GameState.Instance.monsters[index])) + { + return GameState.Instance.monsters[index]; + } + else continue; + } + } + else if (GameState.Instance.monsters.Contains(character) && GameState.Instance.monstersAIControl == true) + { + while (true) + { + Random random = new Random(); + int index = random.Next(0, GameState.Instance.heros.Count); + if (GameState.Instance.heros.Contains(GameState.Instance.heros[index])) + { + return GameState.Instance.heros[index]; + } + else continue; + } + } + else return GameState.Instance.heros[0]; } } - diff --git a/Amarok.cs b/Amarok.cs new file mode 100644 index 0000000..cf7731a --- /dev/null +++ b/Amarok.cs @@ -0,0 +1,11 @@ +public class Amarok : Character +{ + public Amarok() + { + maxHP = 4; + currentHP = maxHP; + name = "Amarok"; + damageReduction = 1; + CharacterEnabledActions.AddRange("Bite", "Health Potion", "Do Nothing"); + } +} diff --git a/Character.cs b/Character.cs index 5603ea6..3116303 100644 --- a/Character.cs +++ b/Character.cs @@ -4,7 +4,10 @@ public abstract class Character public int maxHP {get; set;} public int currentHP {get; set;} public bool dead {get; set;} = false; - public string turnMarker = "*"; - public bool isTurn {get; set;} = false; - public ListCharacterEnabledActions = new List(); + public bool isTurn {get; set;} + public List? CharacterEnabledActions = new List(); + public int damageReduction {get; set;} = 0; + public int damageModifier {get; set;} = 0; + public List? equipedItems = new List(); + public List? CharacterDisabledActions = new List(); } diff --git a/ColoredConsole.cs b/ColoredConsole.cs new file mode 100644 index 0000000..1be4ba3 --- /dev/null +++ b/ColoredConsole.cs @@ -0,0 +1,36 @@ +public static class ColoredConsole +{ + public static void WriteLine(string text, ConsoleColor color) + { + ConsoleColor previousColor = Console.ForegroundColor; + Console.ForegroundColor = color; + Console.WriteLine(text); + Console.ForegroundColor = previousColor; + } + + public static void Write(string text, ConsoleColor color) + { + ConsoleColor previousColor = Console.ForegroundColor; + Console.ForegroundColor = color; + Console.Write(text); + Console.ForegroundColor = previousColor; + } + + public static string Prompt(string text) + { + try + { + ConsoleColor previousColor = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Green; + Console.Write($"{text}: "); + Console.ForegroundColor = ConsoleColor.Cyan; + string input = Console.ReadLine() ?? ""; + Console.ForegroundColor = previousColor; + return input; + } + catch (FormatException) + { + throw; + } + } +} diff --git a/GameState.cs b/GameState.cs index adbbed2..0dfd382 100644 --- a/GameState.cs +++ b/GameState.cs @@ -11,34 +11,31 @@ public sealed class GameState public List monsters = new List(); public List heroRemove = new List(); public List monsterRemove = new List(); + public List heroInventory = new List(); public int currentRound = 1; public bool gameOver = false; public bool herosAIControl = false; public bool monstersAIControl = true; public bool lastRound = false; - - public record MenuItem - { - string? Description; - bool IsEnabled; - IAction? ActionToPerform; - } - - public void BuildMenu(Character character) - { - int number = 1; - foreach (string action in character.CharacterEnabledActions) - { - Console.WriteLine($"{number}. {action}"); - number++; - } - } + public int heroPotionsAvailable = 5; + public int monsterPotionsAvailable = 2; + public bool BowIsEquippedBy = false; + public bool SwordIsEquippedBy = false; + + //Menu menu = new Menu(); public void Run() { + Sword heroSword = new Sword(); + Bow bow = new Bow(); + VinFletcher vin = new VinFletcher(); + heroInventory.Add(heroSword); + heroInventory.Add(bow); + heros.Add(vin); Rounds(currentRound); while (gameOver == false) { + int action; GameOver(); if (gameOver == true) { @@ -48,22 +45,52 @@ public sealed class GameState { foreach (Character hero in heros) { + BeginHeroTurn: hero.isTurn = true; - Actions.Instance.GetAction(hero); - CheckDead(); - hero.isTurn = false; + Console.Clear(); + DisplayStatus(); + if (GameState.Instance.herosAIControl == false) + { + Menu.BuildMenu(hero); + } + action = Actions.Instance.GetAction(hero); + bool actionPerformed = Actions.Instance.DoAction(hero, action); + if (actionPerformed == true) + { + Console.Clear(); + DisplayStatus(); + CheckDead(); + foreach (Character monster in monsterRemove) + { + monsters.Remove(monster); + } + hero.isTurn = false; + } + else + { + goto BeginHeroTurn; + } + if (!monsters.Any()) + { + break; + } } } - foreach (Character monster in monsterRemove) - { - monsters.Remove(monster); - } if (monsters.Any() && heros.Any()) { foreach (Character monster in monsters) { monster.isTurn = true; - Actions.Instance.GetAction(monster); + Console.Clear(); + DisplayStatus(); + if (GameState.Instance.monstersAIControl == false) + { + Menu.BuildMenu(monster); + } + action = Actions.Instance.GetAction(monster); + Actions.Instance.DoAction(monster, action); + Console.Clear(); + DisplayStatus(); CheckDead(); foreach (Character hero in heroRemove) { @@ -169,47 +196,52 @@ public sealed class GameState if (currentRound == 2) { Console.Clear(); - Console.WriteLine("You are victorious in your first battle!"); - Thread.Sleep(2000); - Console.WriteLine("\nAs you make your way deeper into the Uncoded One's fortress" - + "\nmore enemies appear to block your way to defeat their master..."); + ColoredConsole.WriteLine("You are victorious in your first battle!", ConsoleColor.Green); + Thread.Sleep(1500); + ColoredConsole.WriteLine("\nAs you make your way deeper into the Uncoded One's fortress" + + "\nmore enemies appear to block your way to defeat their master...", ConsoleColor.Cyan); Console.WriteLine("\n\nPress Enter to continue..."); Console.ReadLine(); Skeleton skeleton1 = new Skeleton(); Skeleton skeleton2 = new Skeleton(); - monsters.AddRange(skeleton1, skeleton2); + Amarok amarok1 = new Amarok(); + monsters.AddRange(skeleton1, skeleton2, amarok1); } if (currentRound == 3) { Console.Clear(); - Console.WriteLine("You have completed the second battle in your assualt on the" - + " Uncoded One's fortress!"); - Thread.Sleep(2000); - Console.WriteLine("\nAs you move deeper into the fortress, you come upon two great" + ColoredConsole.WriteLine("You have completed the second battle in your assualt on the" + + " Uncoded One's fortress!", ConsoleColor.Green); + Thread.Sleep(1500); + ColoredConsole.WriteLine("\nAs you move deeper into the fortress, you come upon two great" + "\nsteel doors set into a wall of stone. You push open the doors, and" + "\nfind yourself in the Uncoded One's throne room. The Uncoded One stands" + "\nfrom his throne of blackened steel and hisses, \"You have finally" + "\nappeared before me True Programmer. Now you will die, and the world" - + "\nwill be mine!\""); + + "\nwill be mine!\"", ConsoleColor.Cyan); Console.WriteLine("\n\nPress Enter to continue..."); Console.ReadLine(); + Amarok amarok1 = new Amarok(); + Amarok amarok2 = new Amarok(); Skeleton skeleton1 = new Skeleton(); Skeleton skeleton2 = new Skeleton(); Skeleton skeleton3 = new Skeleton(); UncodedOne uncodedOne = new UncodedOne(); - monsters.AddRange(skeleton1, skeleton2, skeleton3, uncodedOne); + monsters.AddRange(skeleton1, skeleton2, skeleton3, amarok1, amarok2, uncodedOne); } } public void HerosWin() { Console.Clear(); - Thread.Sleep(2000); - Console.WriteLine("As you strike the Uncoded One down, the sky brightens and the" - + " miasma\nsurrounding his dark fortress begins to lift...\n\n" - + "You are victorious!\n\nTrue Programming has been restored to the lands, and" + Thread.Sleep(1500); + ColoredConsole.WriteLine("As you strike the Uncoded One down, the sky brightens and the" + + " miasma\nsurrounding his dark fortress begins to lift...\n\n", ConsoleColor.Cyan); + ColoredConsole.Write("You are ", ConsoleColor.Cyan); + ColoredConsole.WriteLine("VICTORIOUS!\n\n", ConsoleColor.Green); + ColoredConsole.WriteLine("True Programming has been brough back to the lands, and" + " the people\ncan now improve their lives through the various arts of code you\n" - + "have helped restore..."); + + "have helped restore...", ConsoleColor.Cyan); Console.WriteLine("\nPress Enter to exit your final challenge, True Programmer!"); Console.ReadLine(); } @@ -217,11 +249,11 @@ public sealed class GameState public void MonstersWin() { Console.Clear(); - Thread.Sleep(2000); - Console.WriteLine("You have been brutally struck down by the Uncoded One and his evil\n" + Thread.Sleep(1500); + ColoredConsole.WriteLine("You have been brutally struck down by the Uncoded One and his evil\n" + "minions. This is a devastating loss for the all the people whom you have helped...\n" + "The Uncoded One will now reign supreme in unchecked war against the entire land, and\n" - + "\nTrue Programming may forever be lost..."); + + "\nTrue Programming may forever be lost...", ConsoleColor.Red); Console.ReadLine(); } } diff --git a/Item.cs b/Item.cs new file mode 100644 index 0000000..377f632 --- /dev/null +++ b/Item.cs @@ -0,0 +1,107 @@ +public abstract class Item +{ + public string? Description {get; set;} + public int ItemDamageModifier {get; set;} = 0; + public int ItemDamageReduction {get; set;} = 0; + public string? ActionEnable {get; set;} + public string? IsEquippedBy {get; set;} + + public static void EquipItem(Character character, Item item) + { + if (character.equipedItems.Count == 0) + { + ColoredConsole.WriteLine($"{character.name} has equipped {item.Description}", ConsoleColor.Yellow); + Thread.Sleep(1500); + item.IsEquippedBy = character.name; + character.equipedItems.Insert(0, item); + GameState.Instance.heroInventory.Remove(item); + character.CharacterEnabledActions[0] = Convert.ToString(item.ActionEnable); + CheckEquipped(character, item); + } + else + { + ColoredConsole.WriteLine($"{character.name} has unequipped {character.equipedItems[0].Description}.", ConsoleColor.Yellow); + ColoredConsole.WriteLine($"{character.name} has equipped {item.Description}", ConsoleColor.Yellow); + Thread.Sleep(1500); + item.IsEquippedBy = character.name; + foreach (Item equipped in character.equipedItems) + { + GameState.Instance.heroInventory.Add(equipped); + } + character.equipedItems.Clear(); + character.equipedItems.Insert(0, item); + GameState.Instance.heroInventory.Remove(item); + character.CharacterEnabledActions[0] = Convert.ToString(item.ActionEnable); + CheckEquipped(character, item); + } + return; + } + + public static void UnequipItem(Character character, Item item) + { + ColoredConsole.WriteLine($"{character.name} has unequipped {item.Description}.", ConsoleColor.Yellow); + Thread.Sleep(1500); + GameState.Instance.heroInventory.Insert(0, item); + character.equipedItems.Clear(); + character.CharacterEnabledActions.Insert(0, "Punch"); + character.CharacterEnabledActions.Remove(item.ActionEnable); + return; + } + + public static void CheckEquipped(Character character, Item item) + { + if (character.name == "Vin Fletcher") + { + if (item.Description == "Vin's Bow") + { + character.CharacterEnabledActions[0] = "Quick Shot"; + return; + } + else return; + } + if (character.name != "Vin Fletcher") + { + if (item.Description == "Hero's Sword") + { + character.CharacterEnabledActions[0] = "Hero's Sword"; + return; + } + else return; + } + else + { + return; + } + } +} + + +public class Sword : Item +{ + public Sword() + { + Description = "Hero's Sword"; + ItemDamageModifier = 2; + ActionEnable = "Sword Attack"; + } +} + +class Armor : Item +{ + public Armor() + { + Description = "Armor"; + ItemDamageReduction = 1; + } +} + +class Bow : Item +{ + public Bow() + { + Description = "Vin's Bow"; + ItemDamageModifier = 2; + ActionEnable = "Bow Shot"; + } + +} diff --git a/Menu.cs b/Menu.cs new file mode 100644 index 0000000..91212e5 --- /dev/null +++ b/Menu.cs @@ -0,0 +1,35 @@ +public struct Menu +{ + public static void BuildMenu(Character character) + { + int index = 1; + foreach (string action in character.CharacterEnabledActions) + { + if (action == "Health Potion") + { + Console.WriteLine($"{index}. {action} ({GameState.Instance.heroPotionsAvailable})"); + } + else + { + Console.WriteLine($"{index}. {action}"); + } + index++; + } + } + + public static void BuildItemsMenu(Character character) + { + int index = 1; + if (character.equipedItems.Any()) + { + Console.WriteLine($"{index}. Unequip {character.equipedItems[0].Description}"); + index++; + } + foreach (Item item in GameState.Instance.heroInventory) + { + Console.WriteLine($"{index}. {item.Description}"); + index++; + } + Console.WriteLine($"{index}. Go back"); + } +} diff --git a/Player.cs b/Player.cs index 1df8696..b93c839 100644 --- a/Player.cs +++ b/Player.cs @@ -2,19 +2,43 @@ public class Player : Character { public Player() { - maxHP = 10; - currentHP = maxHP; name = GetName(); - CharacterEnabledActions.AddRange("Do Nothing", "Attack", "Items"); - + maxHP = 25; + currentHP = maxHP; + dead = false; + CharacterEnabledActions.AddRange("Punch", "Health Potion", "Items", "Do Nothing"); } public string GetName() { - string? input; - Console.Write("Enter your player's name: "); - input = Console.ReadLine(); - return input; + string input = null; + if (GameState.Instance.herosAIControl == false) + { + while (true) + { + try + { + input = ColoredConsole.Prompt("Enter your name"); + if (input.Length < 1) + { + ColoredConsole.WriteLine("Sorry, that isn't a valid input.", ConsoleColor.Red); + continue; + } + else + { + return input; + } + } + catch (FormatException) + { + ColoredConsole.WriteLine("Sorry, that isn't a valid input.", ConsoleColor.Red); + continue; + } + } + } + else + { + return "The True Programmer"; + } } } - diff --git a/Program.cs b/Program.cs index d3e7131..b7002fe 100644 --- a/Program.cs +++ b/Program.cs @@ -1,62 +1,56 @@ string? input; Console.Clear(); -Console.WriteLine("Welcome True Programmer, to the final battle for the realms of C#."); -Console.WriteLine("------------------------------------------------------------------"); +ColoredConsole.WriteLine("------------------------------------------------------------------", ConsoleColor.Cyan); +ColoredConsole.WriteLine("Welcome True Programmer, to the final battle for the realms of C#.", ConsoleColor.Cyan); Thread.Sleep(1000); -Console.WriteLine("\nThis will be the final battle against the Uncoded One..." - + "\nAre you ready?"); -Console.WriteLine("--------------------------------------------------------" - + "--------------"); +ColoredConsole.WriteLine("\nThis will be the final battle against the Uncoded One..." + + "\nAre you ready?", ConsoleColor.Cyan); +ColoredConsole.WriteLine("--------------------------------------------------------" + + "----------", ConsoleColor.Cyan); Console.ReadLine(); while (true) { - Console.Clear(); - Console.Write("\nWould you like the heroes party to be controlled by AI? (yes/no): "); - input = Console.ReadLine().ToLower(); - if (input == "yes" || input == "no") + try { - if (input == "yes") - { - GameState.Instance.herosAIControl = true; - } - if (input == "no") + Console.Clear(); + ColoredConsole.WriteLine("Game mode:", ConsoleColor.Green); + Console.WriteLine("\n1. Player vs Computer\n2. Player vs Player\n3. Computer vs Computer"); + ColoredConsole.WriteLine("-----------------------", ConsoleColor.Cyan); + input = ColoredConsole.Prompt("Enter a game mode"); + if (input == "1") { GameState.Instance.herosAIControl = false; - } - } - else - { - Console.WriteLine("Please answer yes or no."); - Thread.Sleep(1000); - continue; - } - break; -} -while (true) -{ - Console.Clear(); - Console.Write("\nWould you like the monsters party to be controlled by AI? (yes/no): "); - input = Console.ReadLine().ToLower(); - if (input == "yes" || input == "no") - { - if (input == "yes") - { GameState.Instance.monstersAIControl = true; + break; } - if (input == "no") + if (input == "2") { + GameState.Instance.herosAIControl = false; GameState.Instance.monstersAIControl = false; + break; } + if (input == "3") + { + GameState.Instance.herosAIControl = true; + GameState.Instance.monstersAIControl = true; + break; + } + else + { + ColoredConsole.WriteLine("Sorry. That isn't a valid input...", ConsoleColor.Red); + Thread.Sleep(1000); + continue; + } + } - else + catch (FormatException) { - Console.WriteLine("Please answer yes or no."); + ColoredConsole.WriteLine("Sorry. That isn't a valid input...", ConsoleColor.Red); Thread.Sleep(1000); continue; } - break; } Player player = new Player(); diff --git a/Skeleton.cs b/Skeleton.cs index 9692cb8..bfb911c 100644 --- a/Skeleton.cs +++ b/Skeleton.cs @@ -5,5 +5,6 @@ public class Skeleton : Character maxHP = 5; currentHP = maxHP; name = "Skeleton"; + CharacterEnabledActions.AddRange("Bone Crunch", "Health Potion", "Do Nothing"); } } diff --git a/UncodedOne.cs b/UncodedOne.cs index 09927da..dca3421 100644 --- a/UncodedOne.cs +++ b/UncodedOne.cs @@ -5,5 +5,6 @@ public class UncodedOne : Character maxHP = 15; currentHP = maxHP; name = "The Uncoded One"; + CharacterEnabledActions.AddRange("Unraveling", "Health Potion", "Do Nothing"); } } diff --git a/VinFletcher.cs b/VinFletcher.cs new file mode 100644 index 0000000..a6ba0ec --- /dev/null +++ b/VinFletcher.cs @@ -0,0 +1,10 @@ +class VinFletcher : Character +{ + public VinFletcher() + { + maxHP = 15; + currentHP = maxHP; + name = "Vin Fletcher"; + CharacterEnabledActions.AddRange("Punch", "Health Potion", "Items", "Do Nothing"); + } +} diff --git a/bin/Debug/net9.0/FinalBattle.dll b/bin/Debug/net9.0/FinalBattle.dll index 93a9422cf8f947bf4637627845f334a852467c3c..d16aaa3a6e6e3b5ee02d96f2135bcfe9d7209c09 100644 GIT binary patch literal 27648 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

LG6Z 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 literal 19456 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 PyF)tazx@8$Y2g0@wvFFG diff --git a/bin/Debug/net9.0/FinalBattle.pdb b/bin/Debug/net9.0/FinalBattle.pdb index 2c580f4ff44ca358a8d27697b02e8f845c95d222..faab22817ff907ccd9289cd92ee37ac14646680e 100644 GIT binary patch delta 9311 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 XFu|<52N#{qm?vf-NAa3%3DN%nnmJ#p delta 4964 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 diff --git a/obj/Debug/net9.0/FinalBattle.AssemblyInfo.cs b/obj/Debug/net9.0/FinalBattle.AssemblyInfo.cs index 577ed91..3e48596 100644 --- a/obj/Debug/net9.0/FinalBattle.AssemblyInfo.cs +++ b/obj/Debug/net9.0/FinalBattle.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("FinalBattle")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+30793101dfbeebd38c8103f6fe11058c2add5b63")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+69e6699e26437733347c699bdfce91e200b6319c")] [assembly: System.Reflection.AssemblyProductAttribute("FinalBattle")] [assembly: System.Reflection.AssemblyTitleAttribute("FinalBattle")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net9.0/FinalBattle.AssemblyInfoInputs.cache b/obj/Debug/net9.0/FinalBattle.AssemblyInfoInputs.cache index 56e667b..a3b3f68 100644 --- a/obj/Debug/net9.0/FinalBattle.AssemblyInfoInputs.cache +++ b/obj/Debug/net9.0/FinalBattle.AssemblyInfoInputs.cache @@ -1 +1 @@ -03324aadae7ba823214854ceeca2cc3a92695461309aa141d7edb8b5f2f8cc47 +e00ffe98b8c56894d814e7bb3259dda6570fc0986ec9409909259c374f9f4a7c diff --git a/obj/Debug/net9.0/FinalBattle.csproj.CoreCompileInputs.cache b/obj/Debug/net9.0/FinalBattle.csproj.CoreCompileInputs.cache index 3e2b214..4289a2a 100644 --- a/obj/Debug/net9.0/FinalBattle.csproj.CoreCompileInputs.cache +++ b/obj/Debug/net9.0/FinalBattle.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -3235bef0a15147595cd9d8b95c54ad6a8e17ed84b619b5a0ff9feb9b9eb6f2e3 +fc5e7a79401482b5116e4f706afeb0a9e24e4ee24b315420ef0280d76b87f3ac diff --git a/obj/Debug/net9.0/FinalBattle.dll b/obj/Debug/net9.0/FinalBattle.dll index 93a9422cf8f947bf4637627845f334a852467c3c..d16aaa3a6e6e3b5ee02d96f2135bcfe9d7209c09 100644 GIT binary patch literal 27648 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

LG6Z z6e#NevES5EP#b-1$r8?FlC=me#!=4x}1w)mf_RrQKhPR9_W2KPULh=!+;Vr<>@0dKmKDPk6;DpU3_8 z2EGoOLkR|NZh8{lY0$L--5vau{*+qG5jw^ zoIb{GL3cELCuC}M^fiHQ6W!}*?*^d^e%5#dK6c1~9tQt9I_5wx(Ktp$+JRnyPuA0Q z4)k4=HIVHrpLd|e*l}G#UlHi-q7i1UjjYk#^i$)4v549nXsz#paVZ^j zpe2!K^k#ZQAms%K+P6vS!3+Gp1dR!F8{LB#l%S%_4Y$!Z5N8tf&CA7Rv%l(s?J}xypf{p#mrI* zIW;@bDeMB5Q&OP2sWlMBYr7}A37@;E4N#Ky^(g3CEsQ(rKM+V+zK#A>Amv$Yw4|3Q zU1)0sG$zp9)DwyM+Gv79AX?Z5Xf@rwt6Z<0mhBdZ9)u3<^f7_%fR{D-+G*$BGGzxH zs(_xXfcA0dbY$tE?+J7#jRcnXI_PH(w8Cujt)+hxNcGBk@*&8&_106hK)1jfH~ZF8 zoj@*SqJr`=hcZN4LCJyojUk@3KaD7_^7CQ5rL*%aO(lofG%n^9KT}>zx()M^PJaan zHJX{%5UF3EkJ4^ONjsh9&bzYh4DzmRRYG&j{&}@jjS6i$726N5^wDlpa3h8;RTZQS{&@R*N2>lT0 zPmL+0&l@j+Gt=x8O_$M8ZM|OSq*3!)k?pX4EoeTZ?L>MW5-yKCtuG@k?bF_BKBF(D zg@LDa*8K(GS@L0#d{|^#M$ijZ;#!NPR!I8>Y_(V@vqG5_%8+)qIgS-x!t5~)YyS{B zY#h`21B1vP)h3OV^d`#q+i}nF8jSBaoj|&XZbG`0-ib6tk0V`A-$Qyi{Sav{y@d1) zg6~J#O$A!&@20cV?(d}`O8V1+NegC3Fhg{bdi*yF{$|0Sm;8Cj-v^q#{`-XHQNced z_{XH~V}gHyZlTTo7X|a8U^I=})iiF`(3pdvaVsr?ZxMXA#k4XMeCuPj@l7GQT8ACqNRMLc`Et2k#v|G}&Pb@6ykNkhivYA|KhomPY zotE^Rq>o7YyrdKmT_oKh>4^Z_YFg5BDh)D*;|A~HR?ucTP3P!q^b`6e{f5F?gO<>e z+D7d`?fcqKv|nnkYF+vP`%bS2UsOM1C>0QtWNavBXXJ`v*d75xa(T#)I1E%+Y?82=~2;V&b*eL7Z{I5EVU z$&c0=q&>X1M7{~BjwlyG{t~1*d_98vVx&6uf7Qq@L8?xN9GIE7kFXi}#(3#7ZMJq~;i;BLG}-h-=^Z>D!^ zAD}O3cjG%s|5@7u_$EAWLiq>i!}{I$jtb4^k^j8@0a|I?jqgWjpK(9E$#?*7foy)=U#3vxNBS*OOqwgM zUkCnOkTgF$nYFgl)-7Gugs+8nueYhbCGqlFl1*Y*jlq|X9@$8 z_8jH?0ljBblz6o*q195 z)43swj%VE5Rk=cX#Nw_ylFp4_7^5P5Kr{G&`U>b*K6fJueo;}Ok6XGHjh_cU9 z-_A^7B3}@OCCAGZ^572#%-hy*FPdR+cP5w4_P}G1-(wXIpf|+}xm%?P$v8ZYOy-Ii z;IGOJ;aB-FrYsp-`!G`J8aq?8BzJW>J82C}O<1I)u;@_QE&#FyCr3vuyT{I-7SZ~P z7-X~uEvZ}&I4C}la(p6_wQLz8pc?Kj;v8{s5(J73t5(Jxn9Pdx%9vS=m5aIy1#5gT zJ2jAj(q;5O+J=pH`p*b))SO z1mRM&-=#t>V`s)b+L=F)FODIM!2|8|DGQZGT`EVecE|QyGLTn?&vXd0!Wi}Bb5<|@ z90js0<~}PoS{$RSddR?qmI#y7J)XAnCuu+Awx{;PcgNCMC%o>1i`sxZ!=`;Wn-x6^ z-F<9tJD+t2u?K@L;y;WbEpvpDu_YOaG?Ke2XK^r>JjS9tGfb-tL5Lc|`ElySR8T}* zEl+A*`>{biB@&gc$>eCiiYo=q_o=u6dpa4k=H${6t4l_;Mx5EIB>0S|UeaSGo=rR> zzzgk6++Hi4Esm*hN8R=)=IvbZ;AHXOhy=-9XND}907%VjWtbcAOc27{3-_PIilUg$ ziR5as5E>^7f1&=YWlgxcB6eM0a+&VjaBtR1+ceNKIWl6|G^id|XL7s2bqJw*hDF@T zWQIXX=(0UZD4FDC4lJQ|S|jPnY!QnR%bv(*Ir1qV-iy9RJj9%zw$Vq(4V7{nK@Xl{ ziQLSgY(8>O>d=a7Ov^)_N#wUsxz6HxJvR3HD zB8KWI>j3|W82LLfJ(HR2@O~>dNsrMZl%ZkZGbov$NtCsdR=*Qe2|6IOV^TJXU*$Z6 z@*LV7!|ePRuG@`TMeyQN3R<)mvN7Kx=n{B8!|geeMf#A(j08!ju?HnNKndyv zpAzT#tAMq^;S|bPIs_7IV43H#&kPI#X| zmnI;29uV8)0R9@$0R9?JA98!3KP^mvH(Xyz4`Ii705a~yK9;JxA$?j}fUbC-I)J(d zXcxG2V)S$Lnjage>_H$agiQ+~@QvI5c``dVn85Iq=Pu_=B(yTWPOoh4KpC zhhdjKv2rC%Kei(O+Cik@K)hBQ*1{Dl<3@9ETiM#u7(m zw%m*gPaM9v#@tG)AwD8P79j|S$^wof%L7fI~^U{AgWa$Z)76PXhkR`Y?stCU+p?Skp*ayD9q`8-$fBdr%q>ds$X! z^XNsU;$G!p!@{%QcZ9?k7%r424A*MBYZ za%b{lK`lc#$2MTe242(ql^#kK_WBXwGLCw@SYm5ba#p&tx2r{xJ1HnWt~C`umj~-p zAlA9HWT&!gD*cshryzlMbSXz2M19rY?8>TV2OuZ=JWtuIE%z%gOt_TCkXrKbMD2P7 zR=Q6A4I^iXJg%JXP*4lOtn^Enp4;bkxi>g0wURddPnBVboq=PV3QaD%xjRfb+i5Uk zlen}6)a4*HD11g?es<2Bbiqt9Sri_L91PiwIgYXsCPB~2@jBBrzFM)_5}0NV8g30| zby7ohH4hP9sg9s^6;3z|QPg#Bca1}fu9md}uNjXZcM!p~AEpuNo3SjKuXoDAu>wi} zR#Pd?DzNGdDgR;vu~4p=*zZ_LJCQL|lp1POxD%@Db75%W24If$S&0Z7WYsLgnsLsF+oxYI-dl7A zQgUQ+BZZngb7+NQ7;k6PIAV+P5{w;e{=VRm(n9pMm2U5r#bv)JcMI>O+ySZvI(M&{ z>^P{gFLRf%|GLJS&-dLfbHj@Tv-7~@374Hi?XL=@(4~TqN;wSk#K0ZFBaXwk>riT+ z!QH34yex^5ybODtgu^=T!Z_f$fud{$Z>PDVVF2_T4(8LZ95#3#z;4G~oI!W6jd-lG z3-Zp9xv=!SW>Rj*Sl8Z z2*SPQhF2Z}+^PzB%BF54;GHJhhHY%&rX%lJ)xLn`rIvCj>oW(%!mAy9cSByDV%cH2 zJ&LOmwG>nPV=dB+614~;e**6y$+!$F)ONJRwlDKX+i}M3fxXLtgPM1Vg_J(!0mFlZ zZSOr>aO1FAn6apx}hWUu6L$LAxw6ygO_FYb|G&pdqxJElAQ%fm&voEtvoZ)&~) zG53IUhb=o34-|KhD*=ZA*zomRFl1{C?r|tzkLE;3Wo+uPHF#v2jXt>J=-h zb0)@zaR-3Ca4uReE{t0OOgFRse0-_nx9fIosn_q>e>r}rXyYnJ##)Rf+<7-}KW^9D zJ9Lgs7dH;r#M(`-y;V_@czLzqc7%#GJnqz`vO|5%B+v= z!o!!q6^}~;3-zFme@Jva)`v%|Pl3pS@+vJ>hq`*4e53_y{EVqVGeLhs4+ev^ftnhw zS^9uBjzauONlguIK-b`didrxj@Wtwadh{@gfJ1HI%r%;(Ex|#bNL~{On4m%XAdA#$ znqD89z60gHuog=wSrXxZU(rMlhXN*=jUI;hKqgoOT&TcbAq)fo2_ht|#`>a%0|5i| zqKB&j0jUq|qK8)p7U}iTV^9&eAWHRMtWNi!9Fr)+1QW!>aWYjMs2UWrXf-Tt&?9Xf zETjj3xEF?IT^Bcn(E);pQy`$#NB3zkCa1wL8pN}vwpPrTVO63UbwP4V0s#$zxgobtsETxXbZGR)Xfe6I~a zU)Z7x{mpKp!5d)$9nQ&pr3NCSz(ze_Hy-0UeuYb`5kHA7#?3Egl3;&96{MHeRM)aE zz^7QBU>J~6Er=i>ks!9%7evlTQVqUAe04@F4r=@tK=E0^*J=m!hHLEf#DRRS^qLXZ zZE#yb1061gWza}+MQ&+k`z?UEJ%7|}N1i3~6 z6tx;fJg<)NOLn+LCvUrO8xKva#V=IhhiJVb#+nHdGq@9>o;s3 z0z5c8GGukFwbrd!Gq?%Afi;9*d13+mtOr3{^#Ok!IUO)c@IeX$%K2`VWY8HZgWJR^ zgG;4~}*QKu#SUTZ% zCb1Ht=}Ljcv2YJ^HlFEb5Cfy=@s4gr5%)I!uMzm)?dM4ThL#|ZBn|#`6h1RQF7Hf^ zAgA8u9LMtje#7gakUs2t=>qdtUq&gO@+%yGd?gH*sn1S4G;rm8*>0?kc&*Wgl?Lyf z__IuE@p^@KUzCP_hJ|Jgxj!4Q8(RYgow#kQmDY{i z#uPMib~7kvPU+8D(3K@t=VBydYp=9( z(80U9yLxh~vd^2xF6H)=UDYw7ded3FD7(ImIv{6dy_wc2+a`s(z+KR3lRP=M4!I4q z9=C%xBjukB$PGE=gRsX4APcqD3N`z~AWGK*?m`KFI;C&A(W89GI*#%zEX8k)cu!L9 zrLr8{SNI*<`-q-XE-!pudgv=#uQ)TFP2lzb-+(&w9?Fkz zNf*Z3PpxfDjHh#%5vx#ir#@+IdpMCO@#-7K6#`rvs1S%Jw$=n+C*0P$e+qMFHZvp_ z+S=0-6RjP>plDAPaQS5C=Kt^kr@ABf}-l$c$NS^B* zp2D}p24Q|^lCNs+vvBV$k>zw-Yr25z68V#s-I|!pbPwTf3oJO2&K4}CknrdzF)7R9 ph~43pduvBY{q5nc9d5_q&z1bKKGXa=07NISq5S`!|Mx8LzW_I16Ndl* literal 19456 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 PyF)tazx@8$Y2g0@wvFFG diff --git a/obj/Debug/net9.0/FinalBattle.pdb b/obj/Debug/net9.0/FinalBattle.pdb index 2c580f4ff44ca358a8d27697b02e8f845c95d222..faab22817ff907ccd9289cd92ee37ac14646680e 100644 GIT binary patch delta 9311 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 XFu|<52N#{qm?vf-NAa3%3DN%nnmJ#p delta 4964 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 diff --git a/obj/Debug/net9.0/ref/FinalBattle.dll b/obj/Debug/net9.0/ref/FinalBattle.dll index a1c12415cb77d633ceb5f56ff3ccf622cea579b8..deb52eaeb23bccdc76dac6b115827544c04440fe 100644 GIT binary patch literal 9728 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 OZ^ZjMPXC|x!2bYN%smeP delta 2633 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 OZ^ZjMPXC|x!2bYN%smeP delta 2633 zcmaJ@TTE0(82;znSYTNW%T*+>>ndV2xCnu2QI|`D6cKa*QKPV|2eSbdy1O(bZ8#VV zwQaQGNvyGHg*K_SG4?`VY-*$Np-)YG(3B>o#iS3Kw5d-f`eMJCy$JR)oB8Jd{@cv? z&&=$Z+C5c&=H!|`AI5&6L|dXYl*znAIusdkrPeX~MUUg#JwzQ`(NEN?&bo8$Q$%*~ z^DvZHZfTQsfOXW`v!U{#^8_0DvgSf?Wh5F2Lf5MT`q8;hf%Pj}&q@|F=_%6(9~~My zap}aXA6B(pzwbL$y^y2)#fs?xrr~WDxRgt;}6^;-BdJEWsWoKl9EmLu{Mpa z3;iuNB5U-Av<}uXf%h1fp9p+iXs!r(hwy)2;00##blcTM1P?JTx6-1VL5=hcQddLP zXi>Oc7Py}+^7T>|2Rs{oOeYm}YY^->Y81n=II{~|0PAnS0~JD}(*@Y<_?01Ar`s}~ zzX8-OjCBd)8o_oWkh^+B4G$xLd#(l3DHH54Sh-+4*PMWb0|EAUI1;|~HK(^f2tQGEhysS`VvV>5O7Feja} z5!(f8oXyZ`rF|KD1}3F!kHBQkOa#u*Ue%9{mJIBb+p$%X>}@bD#ZG~xrPu(NEybFV zB|XI)%0ZmPL>Ajdww%?VhH)F_pRt{%BPeOo^%Jc6IeQB>d&>4MY|q)xG=Q=v>C@i?2ZQpQ?Y+ zcyQ<#{TDujjnM#7OLSg%#^qybI?bahIY5n80W)yraJdSoV?)m?rjBF9NvpuU0uKlb z2n+!ky#~yu34!kbHTqoO*Fc8j8>JSuo`SeTDzSGiQYG%V%fQw2BhW*)fg9;Au$pq= z^D?akHqmAiLmSlt{lahv*hE7}*My|)3@OPEY$eD>FqeA6C3ci2SAnQ2A{H>)!cA}gN z#mt192VX|{Kz^NOlQPA3#qw4Nn!Zd?OxuOSN?jKJ7sWA_kZB8c4O$*u5o1AOY^8&E zuY_H3L^!u4cpJFY>nzLP(qBdOJ0|-2TEoMku+b2S1SV>%Ip?)a!SP7M2*>t~j)#xZ za3GqHju|odMq`0+(4f9hT(UCr8gqIA!{bKR#F#-Xff2(W3oJzQ>LlxW!B%TkVeQ(6 z*3M9Hs38~&jfSbkh$STdL^NiMRPHkdhmD{m7uDHf