Beispiel #1
0
 public void MissileBoatLogic()
 {
     foreach (var missileboat in this.Player.Units.Where(u => u.Job == AI.MISSILE_BOAT))
     {
         Solver.missileNearest(missileboat);
         Solver.moveAheadOf(missileboat, AI.MYTHICITE, 4);
     }
 }
Beispiel #2
0
        public void OwnIt(Unit miner1, Unit miner2)
        {
            var transports = this.Player.Units.Where(u => u.Job == AI.TRANSPORT).ToArray();
            var didMine    = false;

            if (miner1.inMiningRangeThisTurn(AI.MYTHICITE) && !miner1.IsBusy)
            {
                if (miner1.remainingCapacity() > 0)
                {
                    Solver.mine(miner1, new[] { AI.MYTHICITE });
                    didMine = true;
                    if (miner2.Energy < 10)
                    {
                        Solver.moveToward(miner2, AI.PLAYER.HomeBase.X, AI.PLAYER.HomeBase.Y, 0, true);
                    }
                    else
                    {
                        Solver.moveAheadOf(miner2, AI.MYTHICITE, 2);
                    }
                }
                else
                {
                    var transport = transports.FirstOrDefault(t => t.canTransferThisTurn(miner1));
                    if (transport != null)
                    {
                        Solver.moveToward(transport, miner1.X, miner1.Y, transport.Job.Range);
                        Solver.transfer(transport, miner1, "mythicite", 1);
                        Solver.mine(miner1, new[] { AI.MYTHICITE });
                        didMine = true;
                        if (miner2.Energy < 10)
                        {
                            Solver.moveToward(miner2, AI.PLAYER.HomeBase.X, AI.PLAYER.HomeBase.Y, 0, true);
                        }
                        else
                        {
                            Solver.moveAheadOf(miner2, AI.MYTHICITE, 2);
                        }
                    }
                }
            }

            if (!didMine && miner2.inMiningRangeThisTurn(AI.MYTHICITE) && !miner2.IsBusy)
            {
                if (miner2.remainingCapacity() > 0)
                {
                    Solver.mine(miner2, new[] { AI.MYTHICITE });
                    if (miner1.Energy < 10)
                    {
                        Solver.moveToward(miner2, AI.PLAYER.HomeBase.X, AI.PLAYER.HomeBase.Y, 0, true);
                    }
                    else
                    {
                        Solver.moveAheadOf(miner1, AI.MYTHICITE, 2);
                    }
                }
                else
                {
                    var transport = transports.FirstOrDefault(t => t.canTransferThisTurn(miner2));
                    if (transport != null)
                    {
                        Solver.moveToward(transport, miner2.X, miner2.Y, transport.Job.Range);
                        Solver.transfer(transport, miner2, "mythicite", 1);
                        Solver.mine(miner2, new[] { AI.MYTHICITE });
                        if (miner1.Energy < 10)
                        {
                            Solver.moveToward(miner2, AI.PLAYER.HomeBase.X, AI.PLAYER.HomeBase.Y, 0, true);
                        }
                        else
                        {
                            Solver.moveAheadOf(miner1, AI.MYTHICITE, 2);
                        }
                    }
                }
            }
            else
            {
                Solver.mine(miner1, new[] { AI.MYTHICITE }, true, true);
                Solver.mine(miner2, new[] { AI.MYTHICITE }, true, true);
            }

            foreach (var transport in transports)
            {
                if (transport.remainingCapacity() == 0)
                {
                    Solver.moveToward(transport, AI.PLAYER.HomeBase.X, AI.PLAYER.HomeBase.Y, 0, true);
                }
                else
                {
                    Solver.moveAheadOf(transport, AI.MYTHICITE, 2);
                }
            }
        }