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); }
public override void Execute(Pirate pirate) { if (pirate.InAttackRange(m_target)) { Globals.Game.Attack(pirate, m_target); } else { pirate.Navigate(m_target.Location); } }
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); }
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); }
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))); } }
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))); } }