Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (e.Attacker != null && e.Damage > 0)
- {
- // Maybe this whole part should go somewhere else to avoid too much CounterAttack
- var allyUnits = world.FindUnitsInCircle(e.Attacker.CenterLocation, Game.CellSize * 6).Where(a => a.Owner == p && !a.HasTrait<Harvester>()).ToList();
- var enemyUnits = world.FindUnitsInCircle(e.Attacker.CenterLocation, Game.CellSize * 6).Where(a => a.Owner == e.Attacker.Owner).ToList();
- var allyUnitsAway = self.World.ActorsWithTrait<IMove>().Where(a => a.Actor.Owner == p && !a.Actor.HasTrait<BaseBuilding>()).Select(a => a.Actor).ToArray();
- BotDebug("Bot {2} noticed damage {0}, counter attack with {1} unit(s)", self, allyUnits.Count(), p.PlayerName);
- var assaultUnits = allyUnits;
- if (enemyUnits > allyUnits * 2) // TOTAL OVERRUN
- assaultUnits = allyUnitsAway;
- foreach (var a in assaultUnits) // Fast Counter attack
- if (a.GetCurrentActivity().GetType() != typeof(OpenRA.Mods.RA.Activities.Rearm))
- if (a.HasTrait<Helicopter>() || a.HasTrait<Plane>() && a.TraitOrDefault<LimitedAmmo>().HasAmmo()) // Copters and planes should not take off without ammo
- TryToMove(a, e.Attacker.CenterLocation.ToCPos(), false);
- else
- TryToMove(a, e.Attacker.CenterLocation.ToCPos(), true);
- aggro[e.Attacker.Owner].Aggro += e.Damage;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement