public BattleScreen(Player player, Enemy enemy)
        {
            random = new Random();

            this.player = player;
            this.enemy = enemy;
        }
        public override bool UseItem(Player player)
        {
            player.health += 40;
            if (player.health > player.maxHealth)
                player.health = player.maxHealth;

            Console.WriteLine("You used the Health Tonic!\nIt restored 40 health!");
            return true;
        }
 public override bool UseItem(Player player)
 {
     if (status == player.status)
     {
         player.status = StatusEffect.none;
         Console.WriteLine("You were healed!");
         return true;
     }
     else
     {
         Console.WriteLine("You cannot use this item right now!");
         return false;
     }
 }
        public override bool UseItem(Player player)
        {
            if (player.weapon == this)
            {
                player.weapon = new Weapon("Fist", 0, 0);
                Console.WriteLine("You unequiped your " + name + ".");
            }
            else
            {
                player.weapon = this;
                Console.WriteLine("You equiped your " + name + ".");
            }

            return false;
        }
        public override bool UseItem(Player player)
        {
            if (stat == "Attack")
                player.attackDamage += level;
            else if (stat == "Health")
                player.health += 5 * level;
            else if (stat == "Defense")
                player.defense += level;
            else if (stat == "Magic")
                player.magic += level;
            else if (stat == "Resist")
                player.resist += level;

            Console.WriteLine("You used your " + name + "!\nIt increased your " + stat.ToLower() + " stat!");

            return true;
        }
 public override void Update(Player player)
 {
 }
 public RoomGenerator(Player player)
 {
     random = new Random();
     this.player = player;
 }
        public void Shop(Player player)
        {
            int selectedItem = 0;

            while (true)
            {

                Console.Clear();
                Console.WriteLine("###Buy### ===Sell===\nGold: " + player.gold);

                if (!(selectedItem <= stock.Count - 1))
                    selectedItem = stock.Count - 1;

                foreach (GameItem item in stock)
                {
                    if (stock.IndexOf(item) == selectedItem)
                        Console.Write(">> ");
                    else Console.Write("$  ");

                    Console.WriteLine(item.name);
                }

                Console.WriteLine("Info: " + stock[selectedItem].info);
                Console.WriteLine("Cost: " + stock[selectedItem].cost + " gold");

                ConsoleKey key = Console.ReadKey().Key;

                if (key == ConsoleKey.UpArrow)
                {
                    if (selectedItem == 0)
                        selectedItem = stock.Count - 1;
                    else selectedItem--;
                }
                else if (key == ConsoleKey.DownArrow)
                {
                    if (selectedItem == stock.Count - 1)
                        selectedItem = 0;
                    else selectedItem++;
                }
                else if (key == ConsoleKey.Enter)
                {
                    if (player.gold >= stock[selectedItem].cost)
                    {
                        player.inventory.Add(stock[selectedItem]);
                        player.gold -= stock[selectedItem].cost;
                        Console.WriteLine("You bought a " + stock[selectedItem].name + "!");

                        if (stock[selectedItem] is Weapon)
                        {
                            Console.WriteLine("Would you like to equip your new " + stock[selectedItem].name + "? (y/n)");

                            if (Console.ReadKey().Key == ConsoleKey.Y)
                                player.weapon = (Weapon)stock[selectedItem];
                        }
                        else Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("You can't afford that!");
                        Console.ReadKey();
                    }
                }
                else if (key == ConsoleKey.RightArrow)
                {
                    int selectedItem2 = 0;

                    while (true)
                    {

                        Console.Clear();
                        Console.WriteLine("===Buy=== ###Sell###\nGold: " + player.gold);

                        if (!(selectedItem2 <= player.inventory.Count - 1))
                            selectedItem2 = player.inventory.Count - 1;

                        foreach (GameItem item in player.inventory)
                        {
                            if (player.inventory.IndexOf(item) == selectedItem2)
                                Console.Write(">> ");
                            else Console.Write("$  ");

                            Console.WriteLine(item.name);
                        }

                        Console.WriteLine("Info: " + player.inventory[selectedItem2].info);
                        Console.WriteLine("Value: " + player.inventory[selectedItem2].cost + " gold");

                        ConsoleKey key2 = Console.ReadKey().Key;

                        if (key2 == ConsoleKey.UpArrow)
                        {
                            if (selectedItem2 == 0)
                                selectedItem2 = player.inventory.Count - 1;
                            else selectedItem2--;
                        }
                        else if (key2 == ConsoleKey.DownArrow)
                        {
                            if (selectedItem2 == player.inventory.Count - 1)
                                selectedItem2 = 0;
                            else selectedItem2++;
                        }
                        else if (key2 == ConsoleKey.Enter)
                        {
                            Console.WriteLine();
                            Console.Write("Would you like to sell your " + player.inventory[selectedItem2].name + " for ");
                            Console.WriteLine(player.inventory[selectedItem2].cost + " gold? (y/n)");

                            ConsoleKey key3 = Console.ReadKey().Key;

                            if (key3 == ConsoleKey.Y)
                            {
                                if (player.inventory[selectedItem2] is Weapon && player.weapon == (Weapon)player.inventory[selectedItem2])
                                {
                                    player.weapon = new Weapon("Fist", 0, 0);
                                }

                                player.gold += player.inventory[selectedItem2].cost;
                                player.inventory.Remove(player.inventory[selectedItem2]);
                            }
                        }
                        else if (key2 == ConsoleKey.LeftArrow)
                            break;
                        else if (key2 == ConsoleKey.Escape)
                            return;
                    }
                }
                else if (key == ConsoleKey.Escape)
                    break;
            }
        }
        public bool Update(Player player)
        {
            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width + 1; x++)
                {
                    if (x == width)
                        map[y, x] = '\n';
                    else if (x == 0 || x == width - 1 || y == 0 || y == height - 1)
                        map[y, x] = '#';
                    else map[y, x] = '=';
                }
            }

            for (int i = 0; i < coinPos.GetLength(0); i++ )
            {
                if (player.y == coinPos[i, 0] && player.x == coinPos[i, 1])
                {
                    coinPos[i, 0] = 0;
                    coinPos[i, 1] = 0;

                    player.gold += (int)Math.Ceiling(player.level / 2.0);
                }

                if (!(coinPos[i, 0] == 0 && coinPos[i, 1] == 0))
                    map[coinPos[i, 0], coinPos[i, 1]] = 'c';

            }

            if (exitOpen)
            {
                map[exitPos[0], exitPos[1]] = 'â–ˆ';

                if (exitPos[0] == player.y && exitPos[1] == player.x)
                    return true;
            }

            List<Enemy> deadEnemies = new List<Enemy>();
            List<GameItem> collectedItems = new List<GameItem>();

            foreach (GameItem item in items)
            {
                map[item.y, item.x] = item.ToChar();

                if (item.x == player.x && item.y == player.y)
                {
                    player.inventory.Add(item);
                    collectedItems.Add(item);
                }
            }

            foreach (Enemy e in enemies)
            {
                e.Update(player);
                map[e.y, e.x] = e.ToChar();

                if (e.y == player.y && e.x == player.x)
                {
                    BattleScreen battle = new BattleScreen(player, e);
                    if (battle.DoBattle())
                        deadEnemies.Add(e);
                    else Environment.Exit(0);
                }
            }

            foreach (GameItem i in collectedItems)
            {
                items.Remove(i);
            }

            foreach (Enemy e in deadEnemies)
            {
                enemies.Remove(e);
            }

            if (shopkeeper != null)
            {
                map[shopkeeper.y, shopkeeper.x] = shopkeeper.ToChar();

                if (player.x == shopkeeper.x && player.y == shopkeeper.y)
                {
                    shopkeeper.Shop(player);
                    player.y++;
                }
            }

            if (boss != null)
            {
                map[boss.y, boss.x] = boss.ToChar();

                if (player.x == boss.x && player.y == boss.y)
                {
                    BattleScreen battle = new BattleScreen(player, boss);
                    if (battle.DoBattle())
                    {
                        player.y++;
                        exitOpen = true;
                        map[boss.y, boss.x] = boss.itemDrop.ToChar();
                        boss.itemDrop.x = boss.x;
                        boss.itemDrop.y = boss.y;
                        items.Add(boss.itemDrop);
                        boss = null;
                    }
                    else Environment.Exit(0);
                }
            }

            map[player.y, player.x] = '@';

            return false;
        }
        private static void LoadGame(string filename, out Player player, out Room room)
        {
            StreamReader file;

            try
            {
                file = File.OpenText(filename);

                player = new Player("none", "Human", "Male", 0, new Weapon("Fists", 0, 0));
                room = new Room(1, 1, new Boss());

                while (!file.EndOfStream)
                {
                    string text = file.ReadLine();

                    //Get Player Data
                    if (text == "player:")
                    {
                        string name = "none";
                        string gender = "Male";
                        string race = "Human";
                        int chosenAffinity = 0;
                        int affinity = 0;
                        int dungeonLevel = 0;
                        int x = 0;
                        int y = 0;
                        int level = 1;
                        int exp = 0;
                        int expNeeded = 10;
                        int gold = 0;
                        Weapon weapon = new Weapon("Fists", 0, 0);
                        int maxHealth = 0;
                        int health = 0;
                        int attackDamage = 0;
                        int magic = 0;
                        int defense = 0;
                        int resist = 0;
                        StatusEffect status = StatusEffect.none;
                        List<GameItem> inventory = new List<GameItem>();

                        while (true)
                        {
                            text = file.ReadLine();
                            string[] subTexts = text.Split(new string[] { ":" }, StringSplitOptions.None);

                            if (subTexts[0] == "name")
                                name = subTexts[1];
                            else if (subTexts[0] == "gender")
                                gender = subTexts[1];
                            else if (subTexts[0] == "race")
                                race = subTexts[1];
                            else if (subTexts[0] == "chosenAffinity")
                                chosenAffinity = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "afinity")
                                affinity = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "dungeonLevel")
                                dungeonLevel = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "x")
                                x = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "y")
                                y = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "level")
                                level = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "exp")
                                exp = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "expNeeded")
                                expNeeded = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "gold")
                                gold = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "weapon")
                            {
                                string weaponName = "none";
                                int cost = 0;
                                int damage = 0;
                                WeaponEffect effect = WeaponEffect.none;
                                int wx = 0, wy = 0;

                                for (int i = 1; i < subTexts.Count(); i += 2)
                                {
                                    if (subTexts[i] == "name")
                                        weaponName = subTexts[i + 1];
                                    else if (subTexts[i] == "cost")
                                        cost = Convert.ToInt32(subTexts[i + 1]);
                                    else if (subTexts[i] == "damage")
                                        damage = Convert.ToInt32(subTexts[i + 1]);
                                    else if (subTexts[i] == "effect")
                                    {
                                        if (subTexts[i + 1] == "burn")
                                            effect = WeaponEffect.burn;
                                        else if (subTexts[i + 1] == "penetrate")
                                            effect = WeaponEffect.penetrate;
                                        else if (subTexts[i + 1] == "curse")
                                            effect = WeaponEffect.curse;
                                        else if (subTexts[i + 1] == "midas")
                                            effect = WeaponEffect.midas;
                                        else if (subTexts[i + 1] == "wisdom")
                                            effect = WeaponEffect.wisdom;
                                        else effect = WeaponEffect.none;
                                    }
                                    else if (subTexts[i] == "x")
                                        wx = Convert.ToInt32(subTexts[i + 1]);
                                    else if (subTexts[i] == "y")
                                        wy = Convert.ToInt32(subTexts[i + 1]);
                                }

                                weapon = new Weapon(weaponName, damage, cost, effect);
                            }
                            else if (subTexts[0] == "maxHealth")
                                maxHealth = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "health")
                                health = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "attackDamage")
                                attackDamage = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "magic")
                                magic = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "defense")
                                defense = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "resist")
                                resist = Convert.ToInt32(subTexts[1]);
                            else if (subTexts[0] == "status")
                            {
                                if (subTexts[1] == "burned")
                                    status = StatusEffect.burned;
                                else if (subTexts[1] == "cursed")
                                    status = StatusEffect.cursed;
                                else status = StatusEffect.none;
                            }
                            else if (subTexts[0] == "inventory")
                            {
                                string invText = file.ReadLine();
                                string[] subInvTexts = invText.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                                int sPos = 0;

                                inventory = new List<GameItem>();

                                while (true)
                                {
                                    if (subInvTexts[sPos] == "type")
                                    {
                                        sPos++;
                                        if (subInvTexts[sPos] == "weapon")
                                        {
                                            string weaponName = "none";
                                            int cost = 0;
                                            int damage = 0;
                                            WeaponEffect effect = WeaponEffect.none;
                                            int wx = 0, wy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subInvTexts[sPos] == "name")
                                                {
                                                    sPos++;
                                                    weaponName = subInvTexts[sPos];
                                                }
                                                else if (subInvTexts[sPos] == "cost")
                                                {
                                                    sPos++;
                                                    cost = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "damage")
                                                {
                                                    sPos++;
                                                    damage = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    wx = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    wy = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "effect")
                                                {
                                                    sPos++;

                                                    if (subInvTexts[sPos] == "burn")
                                                        effect = WeaponEffect.burn;
                                                    else if (subInvTexts[sPos] == "penetrate")
                                                        effect = WeaponEffect.penetrate;
                                                    else if (subInvTexts[sPos] == "curse")
                                                        effect = WeaponEffect.curse;
                                                    else if (subInvTexts[sPos] == "midas")
                                                        effect = WeaponEffect.midas;
                                                    else if (subInvTexts[sPos] == "wisdom")
                                                        effect = WeaponEffect.wisdom;
                                                    else effect = WeaponEffect.none;
                                                }
                                                else if (subInvTexts[sPos] == "end")
                                                {
                                                    sPos++;
                                                    inventory.Add(new Weapon(weaponName, damage, cost, wx, wy, effect));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subInvTexts[sPos] == "magicWeapon")
                                        {
                                            string weaponName = "none";
                                            int cost = 0;
                                            int magicDamage = 0;
                                            WeaponEffect effect = WeaponEffect.none;
                                            int wx = 0, wy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subInvTexts[sPos] == "name")
                                                {
                                                    sPos++;
                                                    weaponName = subInvTexts[sPos];
                                                }
                                                else if (subInvTexts[sPos] == "cost")
                                                {
                                                    sPos++;
                                                    cost = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "magicDamage")
                                                {
                                                    sPos++;
                                                    magicDamage = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    wx = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    wy = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "effect")
                                                {
                                                    sPos++;
                                                    if (subInvTexts[sPos] == "burn")
                                                        effect = WeaponEffect.burn;
                                                    else if (subInvTexts[sPos] == "penetrate")
                                                        effect = WeaponEffect.penetrate;
                                                    else if (subInvTexts[sPos] == "curse")
                                                        effect = WeaponEffect.curse;
                                                    else if (subInvTexts[sPos] == "midas")
                                                        effect = WeaponEffect.midas;
                                                    else if (subInvTexts[sPos] == "wisdom")
                                                        effect = WeaponEffect.wisdom;
                                                    else effect = WeaponEffect.none;
                                                }
                                                else if (subInvTexts[sPos] == "end")
                                                {
                                                    sPos++;
                                                    inventory.Add(new MagicWeapon(magicDamage, weaponName, cost, wx, wy, effect));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subInvTexts[sPos] == "noviceFireTome")
                                        {
                                            int wx = 0, wy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subInvTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    wx = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    wy = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "end")
                                                {
                                                    sPos++;
                                                    inventory.Add(new NoviceFireTome(wx, wy));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subInvTexts[sPos] == "statbooster")
                                        {
                                            int ix = 0, iy = 0;
                                            int statLevel = 1;
                                            string stat = "Health";

                                            while (true)
                                            {
                                                sPos++;

                                                if (subInvTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ix = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    iy = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "level")
                                                {
                                                    sPos++;
                                                    statLevel = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "stat")
                                                {
                                                    sPos++;
                                                    stat = subInvTexts[sPos];
                                                }
                                                else if (subInvTexts[sPos] == "end")
                                                {
                                                    sPos++;
                                                    inventory.Add(new Statbooster(stat, statLevel, ix, iy));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subInvTexts[sPos] == "statusHealer")
                                        {
                                            int ix = 0, iy = 0;
                                            StatusEffect itemStatus = StatusEffect.none;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subInvTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ix = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    iy = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "status")
                                                {
                                                    sPos++;
                                                    if (subInvTexts[sPos] == "burned")
                                                        itemStatus = StatusEffect.burned;
                                                    else if (subInvTexts[sPos] == "cursed")
                                                        itemStatus = StatusEffect.cursed;
                                                    else itemStatus = StatusEffect.none;
                                                }
                                                else if (subInvTexts[sPos] == "end")
                                                {
                                                    sPos++;
                                                    inventory.Add(new StatusHealer(itemStatus, ix, iy));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subInvTexts[sPos] == "healthTonicBasic")
                                        {
                                            int hx = 0, hy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subInvTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    hx = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    hy = Convert.ToInt32(subInvTexts[sPos]);
                                                }
                                                else if (subInvTexts[sPos] == "end")
                                                {
                                                    sPos++;
                                                    inventory.Add(new HealthTonicBasic(hx, hy));
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                    else if (subInvTexts[sPos] == "end")
                                        break;
                                    else if (subInvTexts[sPos] == "gameItem")
                                    {
                                        string itemName = "none";
                                        int cost = 0;
                                        string info = "none";
                                        int ix = 0, iy = 0;

                                        while (true)
                                        {
                                            sPos++;

                                            if (subInvTexts[sPos] == "name")
                                            {
                                                sPos++;
                                                itemName = subInvTexts[sPos];
                                            }
                                            else if (subInvTexts[sPos] == "info")
                                            {
                                                sPos++;
                                                info = subInvTexts[sPos];
                                            }
                                            else if (subInvTexts[sPos] == "cost")
                                            {
                                                sPos++;
                                                cost = Convert.ToInt32(subInvTexts[sPos]);
                                            }
                                            else if (subInvTexts[sPos] == "x")
                                            {
                                                sPos++;
                                                ix = Convert.ToInt32(subInvTexts[sPos]);
                                            }
                                            else if (subInvTexts[sPos] == "y")
                                            {
                                                sPos++;
                                                iy = Convert.ToInt32(subInvTexts[sPos]);
                                            }
                                            else if (subInvTexts[sPos] == "end")
                                            {
                                                sPos++;
                                                inventory.Add(new GameItem(itemName, cost, ix, iy, info));
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                            else if (subTexts[0] == "end")
                            {
                                player = new Player(name, gender, race, chosenAffinity, affinity, dungeonLevel, x, y,
                                    level, exp, expNeeded, gold, weapon, maxHealth, health, attackDamage, magic, defense,
                                    resist, status, inventory);
                                break;
                            }
                        }
                    }
                    else if (text == "room:")
                    {
                        text = file.ReadLine();
                        string[] subTexts = text.Split(new string[] { ":" }, StringSplitOptions.None);
                        int sPos = 0;

                        int width = 0, height = 0;
                        int[] exitPos = new int[] { 0, 0 };
                        bool exitOpen = true;
                        int coinCount = 0;
                        int[,] coinPos = new int[coinCount, 2];
                        int enemyCount = 0;
                        List<Enemy> enemies = new List<Enemy>();
                        List<GameItem> items = new List<GameItem>();
                        Boss boss = null;
                        Shopkeeper shopkeeper = null;

                        while (true)
                        {
                            if (subTexts[sPos] == "width")
                            {
                                sPos++;
                                width = Convert.ToInt32(subTexts[sPos]);
                            }
                            else if (subTexts[sPos] == "height")
                            {
                                sPos++;
                                height = Convert.ToInt32(subTexts[sPos]);
                            }
                            else if (subTexts[sPos] == "exitPos")
                            {
                                sPos++;

                                string[] exitPosStrings = subTexts[sPos].Split(new string[] { "," }, StringSplitOptions.None);
                                exitPos[0] = Convert.ToInt32(exitPosStrings[0]);
                                exitPos[1] = Convert.ToInt32(exitPosStrings[1]);
                            }
                            else if (subTexts[sPos] == "exitOpen")
                            {
                                sPos++;
                                exitOpen = Convert.ToBoolean(subTexts[sPos]);
                            }
                            else if (subTexts[sPos] == "coinCount")
                            {
                                sPos++;
                                coinCount = Convert.ToInt32(subTexts[sPos]);
                            }
                            else if (subTexts[sPos] == "coinPos")
                            {
                                sPos++;
                                coinPos = new int[coinCount, 2];
                                int coinNum = 0;

                                while (true)
                                {
                                    if (subTexts[sPos] == "end")
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        string[] stringCoinPos = subTexts[sPos].Split(new string[] { "," }, StringSplitOptions.None);
                                        sPos++;

                                        coinPos[coinNum, 0] = Convert.ToInt32(stringCoinPos[0]);
                                        coinPos[coinNum, 1] = Convert.ToInt32(stringCoinPos[1]);

                                        coinNum++;
                                    }
                                }
                            }
                            else if (subTexts[sPos] == "enemycount")
                            {
                                sPos++;
                                enemyCount = Convert.ToInt32(subTexts[sPos]);
                            }
                            else if (subTexts[sPos] == "enemies")
                            {
                                sPos++;

                                while (true)
                                {
                                    if (subTexts[sPos] == "type")
                                    {
                                        sPos++;

                                        if (subTexts[sPos] == "rat")
                                        {
                                            sPos++;

                                            int ex = 0, ey = 0, level = 1;

                                            while (true)
                                            {
                                                if (subTexts[sPos] == "level")
                                                {
                                                    sPos++;
                                                    level = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ex = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    ey = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    enemies.Add(new Rat(ex, ey, level));
                                                    break;
                                                }

                                                sPos++;
                                            }
                                        }
                                        else if (subTexts[sPos] == "weakZombie")
                                        {
                                            sPos++;

                                            int ex = 0, ey = 0, level = 1;

                                            while (true)
                                            {
                                                if (subTexts[sPos] == "level")
                                                {
                                                    sPos++;
                                                    level = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ex = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    ey = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    enemies.Add(new WeakZombie(ex, ey, level));
                                                    break;
                                                }

                                                sPos++;
                                            }
                                        }
                                        else if (subTexts[sPos] == "boneman")
                                        {
                                            sPos++;

                                            int ex = 0, ey = 0, level = 1;

                                            while (true)
                                            {
                                                if (subTexts[sPos] == "level")
                                                {
                                                    sPos++;
                                                    level = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ex = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    ey = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    enemies.Add(new Boneman(ex, ey, level));
                                                    break;
                                                }

                                                sPos++;
                                            }
                                        }
                                        else
                                        {
                                            sPos++;

                                            int ex = 0, ey = 0, level = 1;
                                            string name = "none";
                                            int maxHealth = 0;
                                            int health = 0;
                                            int attackDamage = 0;
                                            int magic = 0;
                                            int defense = 0;
                                            int resist = 0;
                                            WeaponEffect effect = WeaponEffect.none;
                                            int expDropped = 0;
                                            int goldDropped = 0;
                                            int baseHealth = 0;
                                            int baseAttack = 0;
                                            int baseMagic = 0;
                                            int baseDefense = 0;
                                            int baseResist = 0;
                                            int expDropBase = 0;
                                            int goldDropBase = 0;
                                            float healthModifier = 1;
                                            float attackModifier = 1;
                                            float magicModifier = 1;
                                            float defenseModifier = 1;
                                            float resistModifier = 1;
                                            float expModifier = 1;
                                            float goldModifier = 1;

                                            while (true)
                                            {
                                                if (subTexts[sPos] == "level")
                                                {
                                                    sPos++;
                                                    level = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ex = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    ey = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "name")
                                                {
                                                    sPos++;
                                                    name = subTexts[sPos];
                                                }
                                                else if (subTexts[sPos] == "maxHealth")
                                                {
                                                    sPos++;
                                                    maxHealth = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "health")
                                                {
                                                    sPos++;
                                                    health = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "attackDamage")
                                                {
                                                    sPos++;
                                                    attackDamage = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "magic")
                                                {
                                                    sPos++;
                                                    magic = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "defense")
                                                {
                                                    sPos++;
                                                    defense = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "resist")
                                                {
                                                    sPos++;
                                                    resist = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "effect")
                                                {
                                                    sPos++;

                                                    if (subTexts[sPos] == "burn")
                                                        effect = WeaponEffect.burn;
                                                    else if (subTexts[sPos] == "penetrate")
                                                        effect = WeaponEffect.penetrate;
                                                    else if (subTexts[sPos] == "curse")
                                                        effect = WeaponEffect.curse;
                                                    else if (subTexts[sPos] == "midas")
                                                        effect = WeaponEffect.midas;
                                                    else if (subTexts[sPos] == "wisdom")
                                                        effect = WeaponEffect.wisdom;
                                                    else effect = WeaponEffect.none;
                                                }
                                                else if (subTexts[sPos] == "expDropped")
                                                {
                                                    sPos++;
                                                    expDropped = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "goldDropped")
                                                {
                                                    sPos++;
                                                    goldDropped = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "baseHealth")
                                                {
                                                    sPos++;
                                                    baseHealth = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "baseAttack")
                                                {
                                                    sPos++;
                                                    baseAttack = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "baseMagic")
                                                {
                                                    sPos++;
                                                    baseMagic = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "baseDefense")
                                                {
                                                    sPos++;
                                                    baseDefense = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "baseResist")
                                                {
                                                    sPos++;
                                                    baseResist = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "expDropBase")
                                                {
                                                    sPos++;
                                                    expDropBase = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "goldDropBase")
                                                {
                                                    sPos++;
                                                    goldDropBase = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "healthModifier")
                                                {
                                                    sPos++;
                                                    healthModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "attackModifier")
                                                {
                                                    sPos++;
                                                    attackModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "magicModifier")
                                                {
                                                    sPos++;
                                                    magicModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "defenseModifier")
                                                {
                                                    sPos++;
                                                    defenseModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "reistModifier")
                                                {
                                                    sPos++;
                                                    resistModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "expModifier")
                                                {
                                                    sPos++;
                                                    expModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "goldModifier")
                                                {
                                                    sPos++;
                                                    goldModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    enemies.Add(new Enemy(name, ex, ey, level, effect, maxHealth, health,
                                                        attackDamage, magic, defense, resist, expDropped, goldDropped,
                                                        baseHealth, baseAttack, baseMagic, baseDefense, baseResist, expDropBase,
                                                        goldDropBase, healthModifier, attackModifier, magicModifier, defenseModifier,
                                                        resistModifier, expModifier, goldModifier));
                                                    break;
                                                }

                                                sPos++;
                                            }
                                        }

                                        sPos++;
                                    }
                                    else if (subTexts[sPos] == "end")
                                        break;
                                }
                            }
                            else if (subTexts[sPos] == "items")
                            {
                                sPos++;

                                while (true)
                                {
                                    if (subTexts[sPos] == "type")
                                    {
                                        sPos++;

                                        if (subTexts[sPos] == "weapon")
                                        {
                                            string weaponName = "none";
                                            int cost = 0;
                                            int damage = 0;
                                            WeaponEffect effect = WeaponEffect.none;
                                            int wx = 0, wy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subTexts[sPos] == "name")
                                                {
                                                    sPos++;
                                                    weaponName = subTexts[sPos];
                                                }
                                                else if (subTexts[sPos] == "cost")
                                                {
                                                    sPos++;
                                                    cost = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "damage")
                                                {
                                                    sPos++;
                                                    damage = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    wx = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    wy = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "effect")
                                                {
                                                    sPos++;

                                                    if (subTexts[sPos] == "burn")
                                                        effect = WeaponEffect.burn;
                                                    else if (subTexts[sPos] == "penetrate")
                                                        effect = WeaponEffect.penetrate;
                                                    else if (subTexts[sPos] == "curse")
                                                        effect = WeaponEffect.curse;
                                                    else if (subTexts[sPos] == "midas")
                                                        effect = WeaponEffect.midas;
                                                    else if (subTexts[sPos] == "wisdom")
                                                        effect = WeaponEffect.wisdom;
                                                    else effect = WeaponEffect.none;

                                                    sPos++;
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    items.Add(new Weapon(weaponName, damage, cost, wx, wy, effect));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subTexts[sPos] == "magicWeapon")
                                        {
                                            string weaponName = "none";
                                            int cost = 0;
                                            int magicDamage = 0;
                                            WeaponEffect effect = WeaponEffect.none;
                                            int wx = 0, wy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subTexts[sPos] == "name")
                                                {
                                                    sPos++;
                                                    weaponName = subTexts[sPos];
                                                }
                                                else if (subTexts[sPos] == "cost")
                                                {
                                                    sPos++;
                                                    cost = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "magicDamage")
                                                {
                                                    sPos++;
                                                    magicDamage = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    wx = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    wy = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "effect")
                                                {
                                                    sPos++;

                                                    if (subTexts[sPos] == "burn")
                                                        effect = WeaponEffect.burn;
                                                    else if (subTexts[sPos] == "penetrate")
                                                        effect = WeaponEffect.penetrate;
                                                    else if (subTexts[sPos] == "curse")
                                                        effect = WeaponEffect.curse;
                                                    else if (subTexts[sPos] == "midas")
                                                        effect = WeaponEffect.midas;
                                                    else if (subTexts[sPos] == "wisdom")
                                                        effect = WeaponEffect.wisdom;
                                                    else effect = WeaponEffect.none;

                                                    sPos++;
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    items.Add(new MagicWeapon(magicDamage, weaponName, cost, wx, wy, effect));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subTexts[sPos] == "noviceFireTome")
                                        {
                                            int wx = 0, wy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    wx = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    wy = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    items.Add(new NoviceFireTome(wx, wy));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subTexts[sPos] == "statbooster")
                                        {
                                            int ix = 0, iy = 0;
                                            int statLevel = 1;
                                            string stat = "Health";

                                            while (true)
                                            {
                                                sPos++;

                                                if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ix = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    iy = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "level")
                                                {
                                                    sPos++;
                                                    statLevel = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "stat")
                                                {
                                                    sPos++;
                                                    stat = subTexts[sPos];
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    items.Add(new Statbooster(stat, statLevel, ix, iy));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subTexts[sPos] == "statusHealer")
                                        {
                                            int ix = 0, iy = 0;
                                            StatusEffect itemStatus = StatusEffect.none;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    ix = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    iy = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "status")
                                                {
                                                    sPos++;

                                                    if (subTexts[sPos] == "burned")
                                                        itemStatus = StatusEffect.burned;
                                                    else if (subTexts[sPos] == "cursed")
                                                        itemStatus = StatusEffect.cursed;
                                                    else itemStatus = StatusEffect.none;

                                                    sPos++;
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    items.Add(new StatusHealer(itemStatus, ix, iy));
                                                    break;
                                                }
                                            }
                                        }
                                        else if (subTexts[sPos] == "healthTonicBasic")
                                        {
                                            int hx = 0, hy = 0;

                                            while (true)
                                            {
                                                sPos++;

                                                if (subTexts[sPos] == "x")
                                                {
                                                    sPos++;
                                                    hx = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "y")
                                                {
                                                    sPos++;
                                                    hy = Convert.ToInt32(subTexts[sPos]);
                                                }
                                                else if (subTexts[sPos] == "end")
                                                {
                                                    items.Add(new HealthTonicBasic(hx, hy));
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                    else if (subTexts[sPos] == "end")
                                        break;
                                    else
                                    {
                                        string itemName = "none";
                                        int cost = 0;
                                        string info = "none";
                                        int ix = 0, iy = 0;

                                        while (true)
                                        {
                                            sPos++;

                                            if (subTexts[sPos] == "name")
                                            {
                                                sPos++;
                                                itemName = subTexts[sPos];
                                            }
                                            else if (subTexts[sPos] == "info")
                                            {
                                                sPos++;
                                                info = subTexts[sPos];
                                            }
                                            else if (subTexts[sPos] == "cost")
                                            {
                                                sPos++;
                                                cost = Convert.ToInt32(subTexts[sPos]);
                                            }
                                            else if (subTexts[sPos] == "x")
                                            {
                                                sPos++;
                                                ix = Convert.ToInt32(subTexts[sPos]);
                                            }
                                            else if (subTexts[sPos] == "y")
                                            {
                                                sPos++;
                                                iy = Convert.ToInt32(subTexts[sPos]);
                                            }
                                            else if (subTexts[sPos] == "end")
                                            {
                                                items.Add(new GameItem(itemName, cost, ix, iy, info));
                                                break;
                                            }
                                        }
                                    }

                                    sPos++;
                                }
                            }
                            else if (subTexts[sPos] == "Boss")
                            {
                                sPos++;

                                if (subTexts[sPos] == "type")
                                {
                                    sPos++;

                                    if (subTexts[sPos] == "revenant")
                                    {
                                        sPos++;
                                        boss = new Revenant();
                                    }
                                }
                                else
                                {
                                    sPos++;

                                    int ex = 0, ey = 0, level = 1;
                                    string name = "none";
                                    int maxHealth = 0;
                                    int health = 0;
                                    int attackDamage = 0;
                                    int magic = 0;
                                    int defense = 0;
                                    int resist = 0;
                                    WeaponEffect effect = WeaponEffect.none;
                                    int expDropped = 0;
                                    int goldDropped = 0;
                                    int baseHealth = 0;
                                    int baseAttack = 0;
                                    int baseMagic = 0;
                                    int baseDefense = 0;
                                    int baseResist = 0;
                                    int expDropBase = 0;
                                    int goldDropBase = 0;
                                    float healthModifier = 1;
                                    float attackModifier = 1;
                                    float magicModifier = 1;
                                    float defenseModifier = 1;
                                    float resistModifier = 1;
                                    float expModifier = 1;
                                    float goldModifier = 1;

                                    while (true)
                                    {
                                        if (subTexts[sPos] == "level")
                                        {
                                            sPos++;
                                            level = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "x")
                                        {
                                            sPos++;
                                            ex = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "y")
                                        {
                                            sPos++;
                                            ey = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "name")
                                        {
                                            sPos++;
                                            name = subTexts[sPos];
                                        }
                                        else if (subTexts[sPos] == "maxHealth")
                                        {
                                            sPos++;
                                            maxHealth = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "health")
                                        {
                                            sPos++;
                                            health = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "attackDamage")
                                        {
                                            sPos++;
                                            attackDamage = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "magic")
                                        {
                                            sPos++;
                                            magic = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "defense")
                                        {
                                            sPos++;
                                            defense = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "resist")
                                        {
                                            sPos++;
                                            resist = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "effect")
                                        {
                                            sPos++;

                                            if (subTexts[sPos] == "burn")
                                                effect = WeaponEffect.burn;
                                            else if (subTexts[sPos] == "penetrate")
                                                effect = WeaponEffect.penetrate;
                                            else if (subTexts[sPos] == "curse")
                                                effect = WeaponEffect.curse;
                                            else if (subTexts[sPos] == "midas")
                                                effect = WeaponEffect.midas;
                                            else if (subTexts[sPos] == "wisdom")
                                                effect = WeaponEffect.wisdom;
                                            else effect = WeaponEffect.none;
                                        }
                                        else if (subTexts[sPos] == "expDropped")
                                        {
                                            sPos++;
                                            expDropped = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "goldDropped")
                                        {
                                            sPos++;
                                            goldDropped = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "baseHealth")
                                        {
                                            sPos++;
                                            baseHealth = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "baseAttack")
                                        {
                                            sPos++;
                                            baseAttack = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "baseMagic")
                                        {
                                            sPos++;
                                            baseMagic = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "baseDefense")
                                        {
                                            sPos++;
                                            baseDefense = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "baseResist")
                                        {
                                            sPos++;
                                            baseResist = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "expDropBase")
                                        {
                                            sPos++;
                                            expDropBase = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "goldDropBase")
                                        {
                                            sPos++;
                                            goldDropBase = Convert.ToInt32(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "healthModifier")
                                        {
                                            sPos++;
                                            healthModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "attackModifier")
                                        {
                                            sPos++;
                                            attackModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "magicModifier")
                                        {
                                            sPos++;
                                            magicModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "defenseModifier")
                                        {
                                            sPos++;
                                            defenseModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "reistModifier")
                                        {
                                            sPos++;
                                            resistModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "expModifier")
                                        {
                                            sPos++;
                                            expModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "goldModifier")
                                        {
                                            sPos++;
                                            goldModifier = (float)Convert.ToDouble(subTexts[sPos]);
                                        }
                                        else if (subTexts[sPos] == "end")
                                        {
                                            sPos++;
                                            enemies.Add(new Enemy(name, ex, ey, level, effect, maxHealth, health,
                                                attackDamage, magic, defense, resist, expDropped, goldDropped,
                                                baseHealth, baseAttack, baseMagic, baseDefense, baseResist, expDropBase,
                                                goldDropBase, healthModifier, attackModifier, magicModifier, defenseModifier,
                                                resistModifier, expModifier, goldModifier));
                                            break;
                                        }
                                    }
                                }
                            }
                            else if (subTexts[sPos] == "Shopkeeper")
                            {
                                sPos++;

                                int level = 1;

                                while (true)
                                {
                                    if (subTexts[sPos] == "level")
                                    {
                                        sPos++;
                                        level = Convert.ToInt32(subTexts[sPos]);
                                    }
                                    else if (subTexts[sPos] == "end")
                                    {
                                        shopkeeper = new Shopkeeper(level);
                                        break;
                                    }

                                    sPos++;
                                }
                            }
                            else if (subTexts[sPos] == "end")
                            {
                                sPos++;
                                room = new Room(width, height, exitPos, exitOpen, coinCount, coinPos, enemyCount,
                                    enemies, items, boss, shopkeeper);
                                break;
                            }

                            sPos++;
                        }
                    }
                }

                file.Close();
            }
            catch (FileNotFoundException e)
            {
                Console.Clear();
                Console.WriteLine("Error encountered during loading sequence!");
                Console.ReadKey();
                Environment.Exit(1);

                //So the compiler won't complain
                player = null;
                room = null;
            }
        }