Beispiel #1
0
        public static void Combat(Player player)
        {
            Random rnd   = new Random();
            Enemy  enemy = PersonFabric.CreateEnemy(player);

            Console.WriteLine("A level {0} {1} started a fight.", enemy.Level, enemy.Race);
            bool Fighting = true;
            bool Success  = false;

            while (Fighting)
            {
                if (enemy.Health <= 0)
                {
                    Fighting = false;
                    Win(player, enemy);
                }
                else if (player.Health <= 0)
                {
                    Fighting = false;
                    Lose(player);
                }
                else
                {
                    RenderInventory(player);
                    int DefenseVal = 0;
                    System.Threading.Thread.Sleep(100);
                    Console.WriteLine("Its your turn, you can:\n1. Attack\n2. Defend\n3. Open inventory.");
                    Console.WriteLine("{0}'s Health: {1}", player.Name, player.Health);
                    Console.WriteLine("{0}'s Health: {1}", enemy.Race, enemy.Health);
                    string plrInput = Console.ReadLine();
                    switch (plrInput)
                    {
                    case "1":
                        if (player.PrimaryWeapon != null)
                        {
                            int damage = player.Attack(enemy);
                            Console.WriteLine("{0} attacked enemy {1} with a {2}, the {1} lost {3} health.", player.Name, enemy.Race, player.PrimaryWeapon.ItemName, damage);
                            Success = true;
                        }

                        break;

                    case "2":
                        Success    = true;
                        DefenseVal = player.Defense;
                        break;

                    case "3":
                        if (!OpenInventory(player))
                        {
                            continue;
                        }
                        Success = true;
                        break;
                    }
                    System.Threading.Thread.Sleep(200);
                    RenderStats(player);
                    System.Threading.Thread.Sleep(100);
                    if (Success)
                    {
                        Success = false;
                        if (enemy.Health <= 0)
                        {
                            continue;
                        }
                    }
                    else if (Success == false)
                    {
                        Console.WriteLine("Incorrect input, turn skipped.");
                        continue;
                    }
                    if (enemy.Health < enemy.FullHealth / 4)
                    {
                        enemy.WillHeal = rnd.Next(0, 3) == 1 && enemy.HasFood;
                    }
                    if (enemy.WillHeal)
                    {
                        Item food = enemy.Food.First();
                        enemy.Heal(food);
                        Console.WriteLine("{0} healed {1}.", enemy.Race, food.Damage);
                    }
                    else if (DefenseVal > 0)
                    {
                        Console.WriteLine("{0} attacks.", enemy.Race);
                        System.Threading.Thread.Sleep(100);
                        Console.WriteLine("{0} defends.", player.Name);
                        if (enemy.Damage - DefenseVal > 0)
                        {
                            player.Health -= enemy.Damage - DefenseVal;
                        }
                        DefenseVal = 0;
                    }
                    else
                    {
                        Item enemyWeapon = enemy.Inventory[0];
                        int  damage      = enemy.Attack(player);
                        Console.WriteLine("{0} attacks, {1} loses {2} health.", enemy.Race, player.Name, damage);
                    }
                }
            }
        }