public Player(string name, string race, string gender, int affinity, Weapon weapon) : base() { level = 1; maxHealth = 100; attackDamage = 3; magic = 2; defense = 0; resist = 0; inventory = new List<GameItem>(); this.weapon = weapon; this.name = name; this.gender = gender; this.race = race; chosenAffinity = affinity; if (gender == "Male") attackDamage++; else magic++; if (race == "Elf") { magic += 3; resist += 1; attackDamage -= 1; defense -= 1; } else if (race == "Orc") { maxHealth += 20; defense += 2; magic -= 1; attackDamage -= 1; resist -= 2; } else if (race == "Dwarf") { attackDamage += 2; magic -= 2; maxHealth -= 10; } if (chosenAffinity == 1) magic++; else if (chosenAffinity == -1) attackDamage++; else maxHealth += 10; health = maxHealth; inventory.Add(weapon); }
public Player(string name, string gender, string race, int chosenAffinity, int affinity, int dungeonLevel, int x, int y, int level, int exp, int expNeeded, int gold, Weapon weapon, int maxHealth, int health, int attackDamage, int magic, int defense, int resist, StatusEffect status, List<GameItem> inventory) : base() { this.name = name; this.gender = gender; this.chosenAffinity = chosenAffinity; this.affinity = affinity; this.dungeonLevel = dungeonLevel; this.x = x; this.y = y; this.level = level; this.exp = exp; this.expNeeded = expNeeded; this.gold = gold; this.weapon = weapon; this.maxHealth = maxHealth; this.health = health; this.attackDamage = attackDamage; this.magic = magic; this.defense = defense; this.resist = resist; this.status = status; this.inventory = inventory; }
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; } }