示例#1
0
        public static bool TryAttack(Pirate pirate, PirateGame game)
        {
            if (game.GetOpponentName() == "12220" || game.GetOpponentName() == "12224" || game.GetOpponentName() == "12109" || game.GetOpponentName() == "12111")
            {
                // Go over all enemies
                foreach (Aircraft enemy in game.GetEnemyLivingAircrafts())
                {
                    // Check if the enemy is in attack range and he's not our decoy
                    if (enemy != game.GetMyDecoy() && pirate.InAttackRange(enemy))
                    {
                        // Fire!
                        game.Attack(pirate, enemy);
                        // Print a message
                        game.Debug("pirate " + pirate + " attacks " + enemy);
                        // Did attack
                        return(true);
                    }
                }
            }
            else
            {
                // Go over all enemy drones
                foreach (Drone enemy in game.GetEnemyLivingDrones())
                {
                    // Check if the enemy is in attack range and he's not our decoy
                    if (pirate.InAttackRange(enemy))
                    {
                        // Fire!
                        game.Attack(pirate, enemy);
                        // Print a message
                        game.Debug("pirate " + pirate + " attacks " + enemy);
                        // Did attack
                        return(true);
                    }
                }
                //Go over all enemy pirates
                foreach (Pirate enemy in game.GetEnemyLivingPirates())
                {
                    // Check if the enemy is in attack range and he's not our decoy
                    if (enemy != game.GetMyDecoy() && pirate.InAttackRange(enemy))
                    {
                        // Fire!
                        game.Attack(pirate, enemy);
                        // Print a message
                        game.Debug("pirate " + pirate + " attacks " + enemy);
                        // Did attack
                        return(true);
                    }
                }
            }

            // Didn't attack
            return(false);
        }
示例#2
0
 public override void Execute(Pirate pirate)
 {
     if (pirate.InAttackRange(m_target))
     {
         Globals.Game.Attack(pirate, m_target);
     }
     else
     {
         pirate.Navigate(m_target.Location);
     }
 }
示例#3
0
 public static bool TryAttack(Pirate pirate, PirateGame game, Pirate enemy)
 {
     // Check if the enemy is in attack range and he's not our decoy
     if (pirate.InAttackRange(enemy))
     {
         // Fire!
         game.Attack(pirate, enemy);
         // Print a message
         game.Debug("pirate " + pirate + " attacks " + enemy);
         // Did attack
         return(true);
     }
     // Didn't attack
     return(false);
 }
示例#4
0
文件: MyBot.cs 项目: BlackD0C/Skillz
        public bool TryAttack(Pirate pirate, PirateGame game)
        {
            // Go over all enemies
            foreach (Aircraft enemy in game.GetEnemyLivingAircrafts())
            {
                // Check if the enemy is in attack range
                if (pirate.InAttackRange(enemy))
                {
                    // Fire!
                    game.Attack(pirate, enemy);
                    // Print a message
                    game.Debug("pirate " + pirate + " attacks " + enemy);
                    // Did attack
                    return(true);
                }
            }

            // Didnt attack
            return(false);
        }
示例#5
0
        void IAssigment.Assign(Pirate pirate, List <Mission> list)
        {
            foreach (var enemyPirate in Globals.Game.GetEnemyLivingPiratesWithoutDecoy().OrderBy(x => x.Distance(pirate) * (x.CurrentHealth / (double)Globals.Game.GetPirateMaxHealth())).Take(3))
            {
                // TODO: Win without this piece of shit
                if (Globals.Game.GetOpponentName() == "12109" && enemyPirate.Id <= 2)
                {
                    continue;
                }

                int distance = enemyPirate.Distance(pirate);
                var val      = (int)((200 - distance) / 200.0 * Scores.AttackPirates * (Globals.Game.GetMyLivingDrones().Count(y => enemyPirate.InAttackRange(y)) >= 7 ? 5 : 1) * (pirate.InAttackRange(enemyPirate) ? 3 : 1)); // 0-300

                Resources resources = new Resources();
                resources.AddPirate(pirate.Id);
                resources.AddEnemyPirates(enemyPirate.Id);

                if (pirate.HasPaintball && Globals.Game.GetEnemyLivingDrones().Count(x => x.InRange(enemyPirate, Globals.Game.GetPaintballRange())) > 2)
                {
                    val = (int)(val * 1.5);
                }

                list.Add(new Mission(pirate.Id, val, resources, new AttackCommand(pirate, enemyPirate)));
            }
        }
示例#6
0
        void IAssigment.Assign(Pirate pirate, List <Mission> list)
        {
            var droneList = Globals.Game.GetEnemyLivingDrones();

            foreach (var drone in Globals.Game.GetEnemyLivingDrones())
            {
                var closestCity =
                    Globals.Game.GetEnemyCities().Concat(Globals.Game.GetNeutralCities()).MinBy(x => x.Distance(drone));

                if (closestCity == null)
                {
                    break;
                }
                if ((!pirate.InRange(drone, (int)(pirate.AttackRange * 2.8)) || !(drone.Distance(closestCity) < Globals.Game.GetUnloadRange() * 2.8)) && !pirate.InAttackRange(drone))
                {
                    continue;
                }

                var val = (int)(((200 - drone.Distance(pirate)) / 200.0) * Scores.AttackCloseDrones * (pirate.InAttackRange(drone) ? 2 : 1));

                if (pirate.HasPaintball)
                {
                    val = (int)(val * 0.7);
                }

                Resources resources = new Resources();
                resources.AddPirate(pirate.Id);
                resources.AddEnemyDrone(drone.Id);

                list.Add(new Mission(pirate.Id, val, resources, new AttackCommand(pirate, drone)));
                droneList.Remove(drone);
            }

            foreach (var drone in droneList.OrderBy(x => x.Distance(pirate)).Take(5))
            {
                var closestCity =
                    Globals.Game.GetEnemyCities().Concat(Globals.Game.GetNeutralCities()).MinBy(x => x.Distance(drone));

                if (closestCity == null)
                {
                    break;
                }

                var val = (int)(((200 - drone.Distance(pirate)) / 200.0) * Scores.AttackFarDrones);

                if (pirate.HasPaintball)
                {
                    val = (int)(val * 0.7);
                }

                Resources resources = new Resources();
                resources.AddPirate(pirate.Id);
                resources.AddEnemyDrone(drone.Id);

                list.Add(new Mission(pirate.Id, val, resources, new AttackCommand(pirate, drone)));
            }
        }