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; } }