static void PlayerRetreat(ref Player player, ref Monster monster, string[,,] theMap) { if ((rand.Next(0, 101) - player.dexterity) > 50) { Battle.MonsterAttack(ref player, ref monster); } if (player.strength > 0) { YWMenu battleMenu = new YWMenu(); string question = $"Retreat which way"; Dictionary <char, string> choicesDict = new Dictionary <char, string> { { 'N', "North" }, { 'S', "South" }, { 'E', "East" }, { 'W', "West" } }; string[] choice = battleMenu.Menu(question, choicesDict, ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)); switch (choice[1]) { case "North": player.North(theMap); Console.WriteLine("\nYou retreat to the North!"); SharedMethods.WaitForKey(); break; case "South": player.South(theMap); Console.WriteLine("\nYou retreat to the South!"); SharedMethods.WaitForKey(); break; case "East": player.East(theMap); Console.WriteLine("\nYou retreat to the East!"); SharedMethods.WaitForKey(); break; case "West": player.West(theMap); Console.WriteLine("\nYou retreat to the West!"); SharedMethods.WaitForKey(); break; } } }
static void PlayerCast(ref Player player, ref Vendor vendor) { YWMenu battleMenu = new YWMenu(); string question = $"What spell do you want to cast"; Dictionary <char, string> choicesDict = new Dictionary <char, string> { { 'W', "Web" }, { 'F', "Fireball" }, { 'D', "Deathspell" } }; string[] choice = battleMenu.Menu(question, choicesDict, ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)); switch (choice[0]) { case "W": Console.WriteLine($"\nYou've caught the {vendor.race} in a web, now it can't attack"); vendor.webbedTurns = rand.Next(1, 11); player.strength -= 1; break; case "F": Console.WriteLine($"\nYou blast the {vendor.race} with a fireball."); vendor.strength -= rand.Next(1, 11); player.intelligence -= 1; player.strength -= 1; break; case "D": if ((player.intelligence > vendor.intelligence) && (rand.Next(1, 9) < 7)) { Console.WriteLine($"\nDEATH! The {vendor.race} is dead."); vendor.strength = 0; } else { Console.WriteLine($"\nDEATH! The STUPID {player.race}'s death."); player.strength = 0; SharedMethods.WaitForKey(); } break; } }
public static void PlayerExit(Player player) { Console.Clear(); Console.WriteLine("**** YOU EXITED THE CASTLE! ****"); Console.WriteLine($"\n\tYou were in the castle for {player.turns}."); Console.WriteLine("\n\tWhen you exited, you had:"); if (player.orbOfZot == true) { Console.Write("\n\t"); Console.BackgroundColor = ConsoleColor.DarkMagenta; Console.WriteLine("*** Congratulations, you made it out alive with the Orb Of Zot ***"); Console.BackgroundColor = ConsoleColor.Black; } else { Console.WriteLine("\n\tYour miserable life"); } Console.WriteLine($"\nYou were a {player.sex} {player.race}."); if (player.armor.Length > 0) { Console.WriteLine($"\nYou wore {player.armor} armor."); } if (player.weapon.Length > 0) { Console.WriteLine($"\nYou had a {player.weapon}."); } Console.WriteLine($"\nYou had {player.gold} Gold Pieces and {player.flares} flares."); if (player.lamp == true) { Console.WriteLine("\nYou had a lamp."); } if (player.runeStaff == true) { Console.WriteLine("\nYou had the RuneStaff."); } if (player.treasures.Count > 0) { Console.WriteLine($"\nYou also had the following treasures: {string.Join(", ", player.treasures)}"); } GameCollections.ExitCode = 0; SharedMethods.WaitForKey(); }
public static void CheckIfDead(Player player, ref bool fallThrough) { if (player.dexterity < 1 || player.intelligence < 1 || player.strength < 1) { Console.Clear(); fallThrough = true; GameCollections.ExitCode = 0; Console.BackgroundColor = ConsoleColor.DarkMagenta; Console.WriteLine("\n**** YOU DIED! ****"); Console.BackgroundColor = ConsoleColor.Black; Console.WriteLine("\n\tWhen you died: "); Console.WriteLine($"\nYou were a {player.sex} {player.race}."); if (player.armor.Length > 0) { Console.WriteLine($"\nYou wore {player.armor} armor."); } if (player.weapon.Length > 0) { Console.WriteLine($"\nYou had a {player.weapon}."); } Console.WriteLine($"\nYou had {player.gold} Gold Pieces and {player.flares} flares."); if (player.lamp == true) { Console.WriteLine("\nYou had a lamp."); } if (player.runeStaff == true) { Console.WriteLine("\nYou had the RuneStaff."); } if (player.treasures.Count > 0) { Console.WriteLine($"\nYou also had the following treasures: {string.Join(", ", player.treasures)}"); } Console.WriteLine($"\nYou * were * alive for {player.turns} turns."); SharedMethods.WaitForKey(); } }
public static void Action(ref Player player, string[] action, ref string[,,] knownMap, ref string[,,] theMap) { YWMenu menu = new YWMenu(); switch (action[0]) { case "M": Map.DisplayLevel(knownMap, player); SharedMethods.WaitForKey(); break; case "N": if (player.location[0] == 0 && player.location[1] == 0 && player.location[2] == 3) { Program.PlayerExit(player); break; } else { player.North(knownMap); break; } case "S": player.South(knownMap); break; case "E": player.East(knownMap); break; case "W": player.West(knownMap); break; case "F": if (player.flares > 0) { if (!player.blind) { Map.RevealMap(player.location, theMap, ref knownMap); player.flares -= 1; Map.DisplayLevel(knownMap, player); } else { Console.WriteLine("Lighting a flare won't do you any good since you are BLIND!"); } } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); } SharedMethods.WaitForKey(); break; case "T": string teleportTo; int[] teleCoordinates = new int[3]; if (player.runeStaff == true) { do { Console.Clear(); Console.WriteLine(); Console.Write("\rTeleport where (Example: For Level 3, Row 5, Column 2 type: 3,5,2): "); teleportTo = Console.ReadLine(); teleportTo = teleportTo.Replace(" ", ""); try { teleCoordinates = Array.ConvertAll(teleportTo.Split(','), int.Parse); if (teleCoordinates[0] - 1 < theMap.GetLength(0) && teleCoordinates[1] - 1 < theMap.GetLength(1) && teleCoordinates[2] - 1 < theMap.GetLength(2)) { player.location[0] = teleCoordinates[0] - 1; player.location[1] = teleCoordinates[1] - 1; player.location[2] = teleCoordinates[2] - 1; } else { teleportTo = ""; Console.WriteLine("* Invalid * Coordinates"); SharedMethods.WaitForKey(); } } catch (Exception) { teleportTo = ""; Console.WriteLine("* Invalid * Coordinates"); SharedMethods.WaitForKey(); } } while (teleportTo.Length < 1); Console.WriteLine($"\n\tTeleporting to: ({teleCoordinates[0]}, {teleCoordinates[1]}, {teleCoordinates[2]})"); for (int i = 0; i < 30; i++) { Console.Write("."); Thread.Sleep(100); } } else { Console.WriteLine($"\nSorry, {player.race}, but you need the RuneStaff to teleport!\n"); SharedMethods.WaitForKey(); } break; case "L": if (player.lamp == true) { if (!player.blind) { string[] choice = menu.Menu("Shine lamp which direction", new Dictionary <char, string> { { 'N', "North" }, { 'S', "South" }, { 'E', "East" }, { 'W', "West" } }, ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)); Map.RevealRoom(choice[1], player.location, theMap, ref knownMap); Map.DisplayLevel(knownMap, player); } else { Console.WriteLine($"You're BLIND and can't see anything, silly {player.race}."); SharedMethods.WaitForKey(); } } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); } SharedMethods.WaitForKey(); break; case "D": if (knownMap[player.location[0], player.location[1], player.location[2]] == "DownStairs") { player.Down(); } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); SharedMethods.WaitForKey(); } break; case "U": if (knownMap[player.location[0], player.location[1], player.location[2]] == "UpStairs") { player.Up(); } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); SharedMethods.WaitForKey(); } break; case "G": if (knownMap[player.location[0], player.location[1], player.location[2]] == "Orb") { if (!player.blind) { Console.WriteLine(Orb.OrbEvent(ref player, ref theMap)); } else { Console.WriteLine("The only thing you see is darkness because you are blind"); } SharedMethods.WaitForKey(); } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); SharedMethods.WaitForKey(); } break; case "O": if (knownMap[player.location[0], player.location[1], player.location[2]] == "Book") { if (!player.blind) { Console.WriteLine(Book.BookEvent(ref player, ref theMap)); } else { Console.WriteLine($"Sorry, {player.race}, it's not written in Braille!"); } SharedMethods.WaitForKey(); } else if (knownMap[player.location[0], player.location[1], player.location[2]] == "Chest") { Console.WriteLine(Chest.ChestEvent(ref player, ref theMap, ref knownMap)); SharedMethods.WaitForKey(); } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); SharedMethods.WaitForKey(); } break; case "P": if (knownMap[player.location[0], player.location[1], player.location[2]] == "Pool") { Console.WriteLine(Pool.PoolEvent(ref player)); SharedMethods.WaitForKey(); } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); } break; case "Z": if (knownMap[player.location[0], player.location[1], player.location[2]] == "Vendor") { Vendor vendor = Vendor.GetOrCreateVendor(theMap, player, string.Join(string.Empty, new[] { player.location[0], player.location[1], player.location[2] })); VendorTrade.Trade(ref player, ref vendor); } else { Console.WriteLine($"\nSorry, {player.race}, there's no vendor in the room."); SharedMethods.WaitForKey(); } break; case "A": if (knownMap[player.location[0], player.location[1], player.location[2]] == "Vendor") { Vendor vendor = Vendor.GetOrCreateVendor(theMap, player, string.Join(string.Empty, new[] { player.location[0], player.location[1], player.location[2] })); GameCollections.AllVendorMad = true; vendor.mad = true; Console.WriteLine($"\n{Vendor.VendorMadMessage(vendor)}\n"); BattleVendor.BattleSequence(ref player, ref vendor, theMap); if (vendor.strength < 1) { theMap[player.location[0], player.location[1], player.location[2]] = "-"; SharedMethods.WaitForKey(); } } else if (GameCollections.Monsters.Contains(theMap[player.location[0], player.location[1], player.location[2]])) { Monster monster = Monster.GetOrCreateMonster(theMap, player, string.Join(string.Empty, new[] { player.location[0], player.location[1], player.location[2] })); monster.mad = true; Console.WriteLine($"\n{Monster.MonsterMadMessage(monster)}\n"); Battle.BattleSequence(ref player, ref monster, theMap); if (monster.strength < 1) { theMap[player.location[0], player.location[1], player.location[2]] = "-"; } SharedMethods.WaitForKey(); } else { Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); SharedMethods.WaitForKey(); } break; case "V": Instructions.ViewInstructions(); break; case "Q": break; default: Console.WriteLine("\n{0}\n", ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages)[new Random().Next(0, GameCollections.ErrorMesssages.Count)]); SharedMethods.WaitForKey(); break; } }