Exemple #1
0
        public void BobSoldiers()
        {
            if (GetUnits(AI.THEM, AI.SOLDIER).Count(s => s.ToPoint().IsInStepRange(AI.US.Cat.ToPoint(), 12)) > 1)
            {
                Console.WriteLine("DEFEND");
                var first = Solver.GetNearestPair(GetUnits(AI.US, AI.SOLDIER), g => g.IsInStepRange(AI.US.Cat.ToPoint(), 1));
                if (first != null)
                {
                    Act.Move(first.Item1, AI.US.Cat.Tile.GetNeighbors());
                    var second = Solver.GetNearestPair(GetUnits(AI.US, AI.SOLDIER).Where(s => s != first.Item1), g => g.IsInStepRange(AI.US.Cat.ToPoint(), 1));
                    if (second != null)
                    {
                        Act.Move(second.Item1, AI.US.Cat.Tile.GetNeighbors());
                    }
                }
            }

            GetUnits(AI.US, AI.SOLDIER).ForEach(u =>
            {
                if (Act.GetRegenAmount(u) > 0 && u.Energy < 90)
                {
                    u.Rest();
                }
                else if (u.Energy < 50)
                {
                    Solver.MoveAndRest(u);
                }
                else if (ReadyForBumRush())
                {
                    Console.WriteLine("Ready For Bumb Rushhhh!");
                    Solver.MoveAndAttack(u, new List <Tile> {
                        AI.THEM.Cat.ToPoint().ToTile()
                    });
                    Solver.MoveAndAttack(u, GetUnits(AI.THEM).Select(t => t.Tile));
                }
                else
                {
                    var primeThreat = ChoosePrimeThreat();
                    if (primeThreat != null)
                    {
                        Solver.MoveAndAttack(u, new[] { primeThreat.Tile });
                    }
                }
            });
        }