public override void Atacar(Personagem alvo)
 {
     alvo.Hp -= (int)(alvo.Hp * 0.3);
 }
        static void Main(string[] args)
        {
            List <Personagem> listaPersonagens = new List <Personagem>();

            int id = 0;
            int lifesteal;

            int comandoent = -1;
            int comando;

            //Pré-Criação
            while (comandoent != 0)
            {
                Console.WriteLine("Que tipo de personagem deseja criar?");
                Console.WriteLine("1 - Guerreiro");
                Console.WriteLine("2 - Inimigo");
                Console.WriteLine("3 - Mago");
                Console.WriteLine("0 - Parar de criar");

                comando = Convert.ToInt32(Console.ReadLine());

                switch (comando)
                {
                case 1:
                    Guerreiro guerreiro1 = new Guerreiro();

                    Console.WriteLine("Escolha o nome do Guerreiro");
                    guerreiro1.nome = Console.ReadLine();

                    Console.WriteLine("Escolha o HP do Guerreiro");
                    guerreiro1.Hp = guerreiro1.HpBase = Convert.ToInt32(Console.ReadLine());

                    Console.WriteLine("Escolha a Força do Guerreiro");
                    guerreiro1.Força = guerreiro1.ForçaBase = Convert.ToInt32(Console.ReadLine());

                    id++;
                    guerreiro1.Id = id;

                    Console.WriteLine("O ID do Guerreiro é: " + guerreiro1.Id);
                    Console.WriteLine("----------------");

                    listaPersonagens.Add(guerreiro1);

                    break;

                case 2:
                    Inimigo inimigo1 = new Inimigo();

                    Console.WriteLine("Escolha o nome do Inimigo");
                    inimigo1.nome = Console.ReadLine();

                    Console.WriteLine("Escolha o HP do Inimigo");
                    inimigo1.Hp = inimigo1.HpBase = Convert.ToInt32(Console.ReadLine());

                    Console.WriteLine("Escolha a Força do Inimigo");
                    inimigo1.Força = inimigo1.ForçaBase = Convert.ToInt32(Console.ReadLine());

                    id++;
                    inimigo1.Id = id;

                    Console.WriteLine("O ID do Inimigo é: " + inimigo1.Id);
                    Console.WriteLine("----------------");

                    listaPersonagens.Add(inimigo1);

                    break;

                case 3:
                    Mago mago1 = new Mago();

                    Console.WriteLine("Escolha o nome do Mago");
                    mago1.nome = Console.ReadLine();

                    Console.WriteLine("Escolha o HP do Mago");
                    mago1.Hp = mago1.HpBase = Convert.ToInt32(Console.ReadLine());

                    Console.WriteLine("Escolha a Força do Mago");
                    mago1.Força = mago1.ForçaBase = Convert.ToInt32(Console.ReadLine());

                    Console.WriteLine("Escolha a Mana do Mago");
                    mago1.Mp = mago1.MpBase = Convert.ToInt32(Console.ReadLine());

                    id++;
                    mago1.Id = id;

                    Console.WriteLine("O ID do Mago é: " + mago1.Id);
                    Console.WriteLine("----------------");

                    listaPersonagens.Add(mago1);

                    break;

                case 0:
                    comandoent = 0;
                    break;
                }
            }

            comandoent = -1;

            Personagem alvoP     = new Personagem();
            Personagem atacanteP = new Personagem();

            //Pós-Criação
            while (comandoent != 0)
            {
                //ATACANTE
                Console.WriteLine("--------------------------------------------");
                Console.WriteLine("Escolha o Personagem que realizará o ataque:");
                Console.WriteLine("1 - Escolher Atacante por Nome");
                Console.WriteLine("2 - Escolher Atacante por ID");
                Console.WriteLine("0 - Fechar o programa");

                comando = Convert.ToInt32(Console.ReadLine());

                switch (comando)
                {
                //por Nome
                case 1:
                    atacanteP = listaPersonagens.Find(x => x.nome == Console.ReadLine());
                    break;

                //por ID
                case 2:
                    atacanteP = listaPersonagens.Find(x => x.Id == Convert.ToInt32(Console.ReadLine()));
                    break;

                case 0:
                    comandoent = 0;
                    break;
                }

                if (atacanteP.GetType() == typeof(Guerreiro))
                {
                    Guerreiro atacante = (Guerreiro)atacanteP;
                }

                if (atacanteP.GetType() == typeof(Inimigo))
                {
                    Inimigo atacante = (Inimigo)atacanteP;
                }

                if (atacanteP.GetType() == typeof(Mago))
                {
                    Mago atacante = (Mago)atacanteP;
                }

                //ALVO
                Console.WriteLine("-------------------------------------------");
                Console.WriteLine("Agora escolha o Alvo que receberá o ataque:");
                Console.WriteLine("1 - Escolher Alvo por Nome");
                Console.WriteLine("2 - Escolher Alvo por ID");
                Console.WriteLine("0 - Fechar o programa");

                comando = Convert.ToInt32(Console.ReadLine());

                switch (comando)
                {
                //por Nome
                case 1:
                    alvoP = listaPersonagens.Find(x => x.nome == Console.ReadLine());
                    break;

                //por ID
                case 2:
                    alvoP = listaPersonagens.Find(x => x.Id == Convert.ToInt32(Console.ReadLine()));
                    break;

                case 0:
                    comandoent = 0;
                    break;
                }

                if (alvoP.GetType() == typeof(Guerreiro))
                {
                    Guerreiro alvo = (Guerreiro)alvoP;
                }

                if (alvoP.GetType() == typeof(Inimigo))
                {
                    Inimigo alvo = (Inimigo)alvoP;
                }

                if (alvoP.GetType() == typeof(Mago))
                {
                    Mago alvo = (Mago)alvoP;
                }

                Console.WriteLine("-------------------------");
                Console.WriteLine("O que deseja fazer agora?");
                Console.WriteLine("1 - Mostrar os dados do Alvo e do Atacante escolhidos");
                Console.WriteLine("2 - Mostrar ações possiveis a serem realizados");

                comando = Convert.ToInt32(Console.ReadLine());

                switch (comando)
                {
                case 1:
                    Console.WriteLine("Dados do Atacante:");
                    atacanteP.MostrarDados();

                    Console.WriteLine("Dados do Alvo:");
                    alvoP.MostrarDados();

                    break;

                case 2:
                    atacanteP.AcoesDisponiveis();
                    break;
                }

                Console.WriteLine("-------------------------");
                Console.WriteLine("Que tipo de ataque deseja realizar?");
                Console.WriteLine("1 - Atacar");

                if (atacanteP.GetType() == typeof(Guerreiro))
                {
                    Console.WriteLine("2 - Aumentar Força");
                }

                if (atacanteP.GetType() == typeof(Inimigo))
                {
                    Console.WriteLine("2 - Roubar Vida");
                }

                if (atacanteP.GetType() == typeof(Mago))
                {
                    Console.WriteLine("2 - Bola de Fogo");
                }

                Console.WriteLine("3 - Resetar os valores do Atacante para os seus Iniciais");
                Console.WriteLine("4 - Resetar os valores do Alvo para os seus Iniciais");
                Console.WriteLine("5 - Resetar os valores de todos os personagens não-Inimigos para o seu valor inicial");
                Console.WriteLine("6 - Resetar os valores de todos os personagens Inimigos para o seu valor inicial");
                Console.WriteLine("7 - Mostrar os dados de todos os Personagens Cadastrados");
                Console.WriteLine("0 - Fechar o programa");

                comando = Convert.ToInt32(Console.ReadLine());

                switch (comando)
                {
                case 1:
                    atacanteP.Atacar(alvoP);
                    break;

                case 2:
                    if (atacanteP.GetType() == typeof(Guerreiro))
                    {
                        atacanteP.AumentarForça();
                    }

                    if (atacanteP.GetType() == typeof(Inimigo))
                    {
                        atacanteP.RoubarVida(alvoP);
                    }

                    if (atacanteP.GetType() == typeof(Mago))
                    {
                        atacanteP.BolaDeFogo(alvoP);
                    }

                    break;

                case 3:
                    atacanteP.Hp    = atacanteP.HpBase;
                    atacanteP.Força = atacanteP.ForçaBase;

                    if (atacanteP.GetType() == typeof(Mago))
                    {
                        atacanteP.Mp = atacanteP.MpBase;
                    }

                    break;

                case 4:
                    alvoP.Hp    = alvoP.HpBase;
                    alvoP.Força = alvoP.ForçaBase;

                    if (alvoP.GetType() == typeof(Mago))
                    {
                        alvoP.Mp = alvoP.MpBase;
                    }

                    break;

                case 5:
                    break;

                case 6:
                    break;

                case 7:
                    break;

                case 0:
                    comandoent = 0;
                    break;
                }
            }
        }
 public virtual void Atacar(Personagem alvo)
 {
     alvo.Hp -= Força;
 }
 public void BolaDeFogo(Personagem alvo)
 {
     Mp      -= 5;
     alvo.Hp -= 20;
 }