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); } }
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); } } }