Exemple #1
0
  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;
  }