Ejemplo n.º 1
0
 public static void Trade(ref Player player, ref Vendor vendor)
 {
     if (player.treasures.Count < 1 && player.gold < 1000)
     {
         Console.WriteLine($"Sorry, {player.race}. You are too poor to trade.");
         SharedMethods.WaitForKey();
     }
     else
     {
         if (player.treasures.Count > 0)
         {
             List <string> treasuresSold = new List <string>();
             foreach (string item in player.treasures)
             {
                 offerAmount = rand.Next(1, 5001);
                 string question = $"Do you want to sell {item} for {offerAmount}";
                 Dictionary <char, string> choicesDict = new Dictionary <char, string>
                 {
                     { 'Y', "Yes" },
                     { 'N', "No" }
                 };
                 string[] choice = vtMenu.Menu(question, choicesDict, ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages));
                 if (choice[0] == "Y")
                 {
                     Console.WriteLine($"\nYou have accepted the Vendor's offer for {item}.");
                     treasuresSold.Add(item);
                     vendor.treasures.Add(item);
                     player.gold += offerAmount;
                 }
             }
             foreach (string item in treasuresSold)
             {
                 player.treasures.Remove(item);
             }
             if (player.gold < 1000)
             {
                 Console.WriteLine($"\nSorry, {player.race}. You are too poor to trade.");
                 SharedMethods.WaitForKey();
             }
         }
         if ((player.gold > 1499) && (player.armor != "Plate"))
         {
             Player.GetPlayerArmor(ref player, new int[] { 1500, 2000, 2500 });
         }
         if ((player.gold > 1499) && (player.weapon != "Sword"))
         {
             Player.GetPlayerWeapon(ref player, new int[] { 1500, 2000, 2500 });
         }
         if ((player.gold > 999) && (!player.lamp))
         {
             Player.GetLamp(ref player, 1000);
         }
         if (player.gold > 999)
         {
             GetPlayerPotion(ref player, 1000);
         }
     }
 }
 static void CheckCurses(ref Player player, ref string[,,] knownMap)
 {
     if (player.treasures.Contains("The Ruby Red") && player.lethargy == true)
     {
         player.lethargy         = false;
         Console.BackgroundColor = ConsoleColor.DarkGray;
         Console.WriteLine("The Ruby Red cures your Lethargy!");
         Console.BackgroundColor = ConsoleColor.Black;
         SharedMethods.WaitForKey();
     }
     if (player.treasures.Contains("The Pale Pearl") && player.leech == true)
     {
         player.leech            = false;
         Console.BackgroundColor = ConsoleColor.DarkGray;
         Console.WriteLine("The Pale Pearl heals the curse of the Leech!");
         Console.BackgroundColor = ConsoleColor.Black;
         SharedMethods.WaitForKey();
     }
     if (player.leech == true)
     {
         player.DecStrength(new Random().Next(0, 3));
     }
     if (player.treasures.Contains("The Green Gem") && player.forgetfulness == true)
     {
         player.forgetfulness    = false;
         Console.BackgroundColor = ConsoleColor.DarkGray;
         Console.WriteLine("The Green Gem cures your forgetfulness!");
         Console.BackgroundColor = ConsoleColor.Black;
         SharedMethods.WaitForKey();
     }
     if (player.forgetfulness == true)
     {
         int[] forgetRoom = Map.ForgetMapRoom(knownMap);
         knownMap[forgetRoom[0], forgetRoom[1], forgetRoom[2]] = "X";
     }
     if (player.treasures.Contains("The Opal Eye") && player.blind == true)
     {
         player.blind            = false;
         Console.BackgroundColor = ConsoleColor.DarkGray;
         Console.WriteLine("The Opal Eye cures your blindness!");
         Console.BackgroundColor = ConsoleColor.Black;
         SharedMethods.WaitForKey();
     }
     if (player.treasures.Contains("The Blue Flame") && player.bookStuck == true)
     {
         player.bookStuck        = false;
         Console.BackgroundColor = ConsoleColor.DarkGray;
         Console.WriteLine("The Blue Flame burns the book off your hands!");
         Console.BackgroundColor = ConsoleColor.Black;
         SharedMethods.WaitForKey();
     }
 }
Ejemplo n.º 3
0
        public static void GetPlayerPotion(ref Player player, int cost)
        {
            Console.WriteLine();
            Dictionary <char, string> choicesDict = new Dictionary <char, string>();

            for (int i = 0; i < GameCollections.Abilities.Count; i++)
            {
                choicesDict.Add(i.ToString()[0], $"{GameCollections.Abilities[i]}, {cost} Gold Pieces");
            }
            choicesDict.Add(choicesDict.Count.ToString()[0], $"None, 0 Gold Pieces");
            string[] choice;
            string   numberOnly;

            do
            {
                choice     = vtMenu.Menu($"You have {player.gold} Gold Pieces to buy items, what type of Potion do you want to purchase", choicesDict, ManipulateListObjects.ReplaceRandomMonster(GameCollections.ErrorMesssages));
                numberOnly = Regex.Replace(choice[1], "[^0-9]", "");
                if (!(Convert.ToInt32(numberOnly) > player.gold) && !(choice[1].Split(',')[0] == "None"))
                {
                    switch (choice[1].Split(',')[0])
                    {
                    case "Dexterity":
                        player.IncDexterity(rand.Next(1, 6));
                        Console.WriteLine($"\nDexterity={player.dexterity}");
                        SharedMethods.WaitForKey();
                        break;

                    case "Intelligence":
                        player.IncIntelligence(rand.Next(1, 6));
                        Console.WriteLine($"\nIntelligence={player.intelligence}");
                        SharedMethods.WaitForKey();
                        break;

                    case "Strength":
                        player.IncStrength(rand.Next(1, 6));
                        Console.WriteLine($"\nStrength={player.strength}");
                        SharedMethods.WaitForKey();
                        break;
                    }
                    player.gold -= Convert.ToInt32(numberOnly);
                }
                else
                {
                    if (!(choice[1].Split(',')[0] == "None"))
                    {
                        Console.WriteLine($"\n\tSorry, {player.race}, you don't have that much gold left.");
                    }
                }
            } while (player.gold > 999 && !(choice[1].Split(',')[0] == "None"));
        }
Ejemplo n.º 4
0
        static void PlayerRetreat(ref Player player, ref Vendor vendor, string[,,] theMap)
        {
            if ((rand.Next(0, 101) - player.dexterity) > 50)
            {
                BattleVendor.VendorAttack(ref player, ref vendor);
            }
            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;
                }
            }
        }
Ejemplo n.º 5
0
        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;
            }
        }