static bool Combat(ref Character player, Monster enemy) { double maxPlayerHp = player.hp; double maxPlayerMp = player.mp; bool playerWin = false; while(player.hp > 1 && enemy.hp > 1) { combatstart: ConsoleKeyInfo keyPrompt = CombatPrompt(player, enemy); Console.Clear(); if(keyPrompt.Key.ToString().ToLower() == "a") { Console.WriteLine("You hit the enemy hard, but the monster blocks some damage."); WriteDamage(player.CharacterAttack("strong", player, enemy)); enemy.hp -= player.CharacterAttack("strong", player, enemy); } else if (keyPrompt.Key.ToString().ToLower() == "s") { if(player.mp > 0) { Console.WriteLine("You aim, and strike at the monster's weak point."); WriteDamage(player.CharacterAttack("pierce", player, enemy)); enemy.hp -= player.CharacterAttack("pierce", player, enemy); player.mp--; } else { Console.WriteLine("You are too fatigued to do that"); Console.ReadKey(true); } } else if(keyPrompt.Key.ToString().ToLower() == "h") { if(player.healed) { Console.Clear(); Console.WriteLine("You feel too fatigued to do that again."); Console.ReadKey(true); goto combatstart; } Console.WriteLine ("You focus, and your mind repairs itself."); Console.WriteLine ("You feel too fatigued to do that again."); player.hp = maxPlayerHp; player.healed = true; } else if(keyPrompt.Key.ToString().ToLower() == "d") { Console.WriteLine("You focus, and attempt to launch a powerful energy beam at the enemy."); if(player.mp > 3) { player.mp -= 4; Console.WriteLine("Your energy beam collides with the energy in a massive explosion."); player.CharacterAttack("destroy", player, enemy); enemy.hp -= player.CharacterAttack("destroy", player, enemy); } else { player.mp = 0; Console.WriteLine("You send some sparks from your hand, but you feel too drained to launch an energy beam."); } } else if (keyPrompt.Key.ToString().ToLower() == "f") { player.progress--; player.progress--; Console.WriteLine("You run back the way you came."); goto fleeing; } else if(keyPrompt.Key.ToString().ToLower() == "g") { if(player.freeKill) { enemy.hp = 0; Console.WriteLine("You pray to god, and the monster is condemned to hell."); } else { Console.WriteLine("You don't feel like God will help again."); goto combatstart; } } Console.ReadKey(true); if(enemy.hp > 0) { Console.WriteLine("The enemy returns with an attack of its own!"); player.hp -= enemy.EnemyBasic(player, enemy); Console.ReadKey(true); } } if(player.hp >= 1) { playerWin = true; Console.WriteLine("The monster has been slain."); Console.ReadKey(true); } fleeing: if(player.hp >= 1) { playerWin = true; Console.ReadKey(true); } player.hp = maxPlayerHp; player.mp = maxPlayerMp; return playerWin; }