private void input() { bool moveon = false; while (!moveon && !TCODConsole.isWindowClosed()) { TCODKey key = TCODConsole.waitForKeypress(true); switch (key.KeyCode) { case TCODKeyCode.Up: case TCODKeyCode.KeypadEight: if (player.getPlayerY() > 0 && currentMap.getPassable(player.getPlayerX(), player.getPlayerY() - 1)) { if (currentMap.checkIfMonster(player.getPlayerX(), player.getPlayerY() - 1)) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() && tempMon.getY() == player.getPlayerY() - 1) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerY(player.getPlayerY() - 1); moveon = true; } break; case TCODKeyCode.Down: case TCODKeyCode.KeypadTwo: if (player.getPlayerY() < 39 && currentMap.getPassable(player.getPlayerX(), player.getPlayerY() + 1)) { if (currentMap.checkIfMonster(player.getPlayerX(), player.getPlayerY() + 1)) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() && tempMon.getY() == player.getPlayerY() + 1) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerY(player.getPlayerY() + 1); moveon = true; } break; case TCODKeyCode.Left: case TCODKeyCode.KeypadFour: if (player.getPlayerX() > 0 && currentMap.getPassable(player.getPlayerX() - 1, player.getPlayerY())) { if (currentMap.checkIfMonster(player.getPlayerX() - 1, player.getPlayerY())) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() - 1 && tempMon.getY() == player.getPlayerY()) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerX(player.getPlayerX() - 1); moveon = true; } break; case TCODKeyCode.Right: case TCODKeyCode.KeypadSix: if (player.getPlayerX() < 44 && currentMap.getPassable(player.getPlayerX() + 1, player.getPlayerY())) { if (currentMap.checkIfMonster(player.getPlayerX() + 1, player.getPlayerY())) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() + 1 && tempMon.getY() == player.getPlayerY()) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerX(player.getPlayerX() + 1); moveon = true; } break; case TCODKeyCode.KeypadSeven: if (player.getPlayerX() < 44 && currentMap.getPassable(player.getPlayerX() - 1, player.getPlayerY() - 1)) { if (currentMap.checkIfMonster(player.getPlayerX() - 1, player.getPlayerY() - 1)) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() - 1 && tempMon.getY() == player.getPlayerY() - 1) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerX(player.getPlayerX() - 1); player.setPlayerY(player.getPlayerY() - 1); moveon = true; } break; case TCODKeyCode.KeypadNine: if (player.getPlayerX() < 44 && currentMap.getPassable(player.getPlayerX() + 1, player.getPlayerY() - 1)) { if (currentMap.checkIfMonster(player.getPlayerX() + 1, player.getPlayerY() - 1)) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() + 1 && tempMon.getY() == player.getPlayerY() - 1) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerX(player.getPlayerX() + 1); player.setPlayerY(player.getPlayerY() - 1); moveon = true; } break; case TCODKeyCode.KeypadOne: if (player.getPlayerX() < 44 && currentMap.getPassable(player.getPlayerX() - 1, player.getPlayerY() + 1)) { if (currentMap.checkIfMonster(player.getPlayerX() - 1, player.getPlayerY() + 1)) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() - 1 && tempMon.getY() == player.getPlayerY() + 1) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerX(player.getPlayerX() - 1); player.setPlayerY(player.getPlayerY() + 1); moveon = true; } break; case TCODKeyCode.KeypadThree: if (player.getPlayerX() < 44 && currentMap.getPassable(player.getPlayerX() + 1, player.getPlayerY() + 1)) { if (currentMap.checkIfMonster(player.getPlayerX() + 1, player.getPlayerY() + 1)) { Object[] temp = currentMap.getMonsters(); for (int i = 0; i < temp.Length; i++) { Monster tempMon = (Monster)temp[i]; if (tempMon.getX() == player.getPlayerX() + 1 && tempMon.getY() == player.getPlayerY() + 1) { tempMon.reduceHealth(executePlayerAttack(tempMon)); } } moveon = true; break; } player.setPlayerX(player.getPlayerX() + 1); player.setPlayerY(player.getPlayerY() + 1); moveon = true; } break; case TCODKeyCode.Char: switch (key.Character) { case 'q': if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()) != null) { if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getIsWeapon()) { textBox.Add("You looted " + currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getName() + " for " + currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getQuality() + " gold"); player.addGold(currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getQuality()); currentMap.setItem(player.getPlayerX(), player.getPlayerY(), null); moveon = true; } else if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getIsArmor()) { textBox.Add("You looted " + currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getName() + " for " + currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getQuality() + " gold"); player.addGold(currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getQuality()); currentMap.setItem(player.getPlayerX(), player.getPlayerY(), null); moveon = true; } else if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getIsGold()) { textBox.Add("You picked up " + currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getQuality() + " gold"); player.addGold(currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getQuality()); currentMap.setItem(player.getPlayerX(), player.getPlayerY(), null); moveon = true; } else if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getIsPotion()) { textBox.Add("You looted " + currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getName() + " for 10 gold"); player.addGold(10); currentMap.setItem(player.getPlayerX(), player.getPlayerY(), null); moveon = true; } } break; case 'w': if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()) != null) { if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getIsWeapon()) { textBox.Add("You looted " + player.getWeapon().getName() + " for " + player.getWeapon().getQuality() + " gold"); player.addGold(player.getWeapon().getQuality()); player.setWeapon(currentMap.getItem(player.getPlayerX(), player.getPlayerY())); textBox.Add("You equip " + player.getWeapon().getName()); currentMap.setItem(player.getPlayerX(), player.getPlayerY(), null); moveon = true; } else if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getIsArmor()) { textBox.Add("You looted " + player.getArmor().getName() + " for " + player.getArmor().getQuality() + " gold"); player.addGold(player.getArmor().getQuality()); player.setArmor(currentMap.getItem(player.getPlayerX(), player.getPlayerY())); textBox.Add("You equip " + player.getArmor().getName()); currentMap.setItem(player.getPlayerX(), player.getPlayerY(), null); moveon = true; } } break; case 'e': if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()) != null) { if (currentMap.getItem(player.getPlayerX(), player.getPlayerY()).getIsPotion()) { player.setNowHP(player.getNowHP() + (player.getMaxHP() / 2)); textBox.Add("You drink the healing potion, and recover some lost health."); currentMap.setItem(player.getPlayerX(), player.getPlayerY(), null); moveon = true; } } else if (currentMap.getTransision().getX() == player.getPlayerX() && currentMap.getTransision().getY() == player.getPlayerY()) { textBox.Add("You transport yourself into another realm"); Map tmp = new Map(realmStarts[rand.Next(0, realmStarts.Length)] + realmNames[rand.Next(0, realmNames.Length)] + realmNames[rand.Next(0, realmNames.Length)] + ", The " + realmTypes[rand.Next(0, realmTypes.Length)] + " of " + realmTitles[currentMap.getLevel()], currentMap.getLevel() + 1); currentMap = tmp; player.setPlayerX(rand.Next(1, 44)); player.setPlayerY(rand.Next(1, 39)); moveon = true; } break; } break; } } }
private int executePlayerAttack(Monster monster) { int chance = player.getToHit() - monster.getDodge(); int result = rand.Next(1, 100); if (result < chance) { int variation = rand.Next(1, 4); int damage = (1 + (player.getWeapon().getQuality()) * variation); damage -= monster.getAC(); if (damage > 0) { textBox.Add(player.getName() + " hits " + monster.getName() + " for " + damage + " damage"); return damage; } else { textBox.Add(monster.getName() + "'s armor completely absorbs the attack"); return 0; } } else { textBox.Add(monster.getName() + " dodges " + player.getName() + "'s attack"); return 0; } }