diff --git a/OpenRA.Mods.Cnc/Missions/Nod01Script.cs b/OpenRA.Mods.Cnc/Missions/Nod01Script.cs index 8d2385b291..c4880834e4 100644 --- a/OpenRA.Mods.Cnc/Missions/Nod01Script.cs +++ b/OpenRA.Mods.Cnc/Missions/Nod01Script.cs @@ -148,7 +148,7 @@ namespace OpenRA.Mods.Cnc.Missions IEnumerable UnitsNearActor(Actor actor, int range) { - return world.FindUnitsInCircle(actor.CenterLocation, Game.CellSize * range) + return world.FindUnitsInCircle(actor.CenterPosition, WRange.FromCells(range)) .Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && a.HasTrait() && !a.Owner.NonCombatant); } diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index 1ac6863e15..789e7c40ed 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -221,7 +221,7 @@ namespace OpenRA.Mods.RA.Missions bool AlliesControlLab() { - return MissionUtils.AreaSecuredWithUnits(world, allies, lab.CenterLocation, LabClearRange); + return MissionUtils.AreaSecuredWithUnits(world, allies, lab.CenterPosition, WRange.FromCells(LabClearRange)); } void SpawnEinsteinAtLab() diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 761eb0b94f..9703e9a999 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -169,7 +169,7 @@ namespace OpenRA.Mods.RA.Missions { if (yak == null || (yak != null && !yak.IsDead() && (yak.GetCurrentActivity() is FlyCircle || yak.IsIdle))) { - var alliedUnitsNearYakPoint = world.FindAliveCombatantActorsInCircle(yakAttackPoint.CenterLocation, 10) + var alliedUnitsNearYakPoint = world.FindAliveCombatantActorsInCircle(yakAttackPoint.CenterPosition, WRange.FromCells(10)) .Where(a => a.Owner != soviets && a.HasTrait() && a != tanya && a != einstein && a != engineer); if (alliedUnitsNearYakPoint.Any()) YakStrafe(alliedUnitsNearYakPoint); @@ -240,7 +240,7 @@ namespace OpenRA.Mods.RA.Missions world.AddFrameEndTask(w => { - if (!w.FindAliveCombatantActorsInBox(alliedBaseTopLeft.ToPPos(), alliedBaseBottomRight.ToPPos()) + if (!w.FindAliveCombatantActorsInBox(alliedBaseTopLeft, alliedBaseBottomRight) .Any(a => (a.Owner == allies || a.Owner == allies2) && (a.HasTrait() && !a.HasTrait()) || a.HasTrait())) { maintainPresence.Status = ObjectiveStatus.Failed; @@ -299,7 +299,7 @@ namespace OpenRA.Mods.RA.Missions void ManageSovietUnits() { - var units = world.FindAliveCombatantActorsInCircle(sovietRallyPoint.CenterLocation, 10) + var units = world.FindAliveCombatantActorsInCircle(sovietRallyPoint.CenterPosition, WRange.FromCells(10)) .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets) .Except(world.WorldActor.Trait().Actors.Values); if (units.Count() >= SovietGroupSize) @@ -383,22 +383,22 @@ namespace OpenRA.Mods.RA.Missions bool AlliesNearTown() { - return world.FindAliveCombatantActorsInCircle(townPoint.CenterLocation, AlliedTownTransferRange) + return world.FindAliveCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange)) .Any(a => a.Owner == allies1 && a.HasTrait()); } void TransferTownUnitsToAllies() { - foreach (var unit in world.FindAliveNonCombatantActorsInCircle(townPoint.CenterLocation, AlliedTownTransferRange) + foreach (var unit in world.FindAliveNonCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange)) .Where(a => a.HasTrait())) unit.ChangeOwner(allies1); } void SovietsAttackTown() { - var sovietAttackUnits = world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint1.CenterLocation, SovietTownAttackGroupRange) - .Union(world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint2.CenterLocation, SovietTownAttackGroupRange)) - .Union(world.FindAliveCombatantActorsInCircle(townPoint.CenterLocation, AlliedTownTransferRange)) + var sovietAttackUnits = world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint1.CenterPosition, WRange.FromCells(SovietTownAttackGroupRange)) + .Union(world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint2.CenterPosition, WRange.FromCells(SovietTownAttackGroupRange))) + .Union(world.FindAliveCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange))) .Where(a => a.HasTrait() && a.Owner == soviets); foreach (var unit in sovietAttackUnits) diff --git a/OpenRA.Mods.RA/Missions/Allies03Script.cs b/OpenRA.Mods.RA/Missions/Allies03Script.cs index 1adde71cf4..f57bd3ac21 100644 --- a/OpenRA.Mods.RA/Missions/Allies03Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies03Script.cs @@ -187,8 +187,8 @@ namespace OpenRA.Mods.RA.Missions ManageSovietAircraft(); } - EvacuateAlliedUnits(exit1TopLeft.CenterLocation, exit1BottomRight.CenterLocation, exit1ExitPoint.Location); - EvacuateAlliedUnits(exit2TopLeft.CenterLocation, exit2BottomRight.CenterLocation, exit2ExitPoint.Location); + EvacuateAlliedUnits(exit1TopLeft.Location, exit1BottomRight.Location, exit1ExitPoint.Location); + EvacuateAlliedUnits(exit2TopLeft.Location, exit2BottomRight.Location, exit2ExitPoint.Location); CheckSovietAirbases(); @@ -203,7 +203,7 @@ namespace OpenRA.Mods.RA.Missions Actor FirstUnshroudedOrDefault(IEnumerable actors, World world, int shroudRange) { - return actors.FirstOrDefault(u => world.FindAliveCombatantActorsInCircle(u.CenterLocation, shroudRange).All(a => !a.HasTrait())); + return actors.FirstOrDefault(u => world.FindAliveCombatantActorsInCircle(u.CenterPosition, WRange.FromCells(shroudRange)).All(a => !a.HasTrait())); } void ManageSovietAircraft() @@ -219,7 +219,7 @@ namespace OpenRA.Mods.RA.Missions var ammo = aircraft.Trait(); if ((plane.Altitude == 0 && ammo.FullAmmo()) || (plane.Altitude != 0 && ammo.HasAmmo())) { - var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (aircraft.CenterLocation - u.CenterLocation).LengthSquared), world, 10); + var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (aircraft.CenterPosition - u.CenterPosition).LengthSquared), world, 10); if (enemy != null) { if (!aircraft.IsIdle && aircraft.GetCurrentActivity().GetType() != typeof(FlyAttack)) @@ -295,7 +295,7 @@ namespace OpenRA.Mods.RA.Missions var enemies = world.Actors.Where(u => u.AppearsHostileTo(self) && (u.Owner == allies1 || u.Owner == allies2) && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && u.IsInWorld && !u.IsDead()); - var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (self.CenterLocation - u.CenterLocation).LengthSquared), world, 10); + var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared), world, 10); if (enemy != null) self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); } @@ -304,7 +304,7 @@ namespace OpenRA.Mods.RA.Missions { foreach (var rallyPoint in sovietRallyPoints) { - var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rallyPoint), 10) + var units = world.FindAliveCombatantActorsInCircle(rallyPoint.CenterPosition, WRange.FromCells(10)) .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); if (units.Count() >= SovietGroupSize) { @@ -315,7 +315,7 @@ namespace OpenRA.Mods.RA.Missions var scatteredUnits = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && u.HasTrait() && u.IsIdle && u.Owner == soviets) .Except(world.WorldActor.Trait().Actors.Values) - .Except(sovietRallyPoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rp), 10))); + .Except(sovietRallyPoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(rp.CenterPosition, WRange.FromCells(10)))); foreach (var unit in scatteredUnits) AttackNearestAlliedActor(unit); @@ -351,9 +351,9 @@ namespace OpenRA.Mods.RA.Missions } } - void EvacuateAlliedUnits(PPos a, PPos b, CPos exit) + void EvacuateAlliedUnits(CPos tl, CPos br, CPos exit) { - var units = world.FindAliveCombatantActorsInBox(a, b) + var units = world.FindAliveCombatantActorsInBox(tl, br) .Where(u => u.HasTrait() && !u.HasTrait() && (u.Owner == allies1 || u.Owner == allies2)); foreach (var unit in units) diff --git a/OpenRA.Mods.RA/Missions/Allies04Script.cs b/OpenRA.Mods.RA/Missions/Allies04Script.cs index ba65084906..dbe480c86b 100644 --- a/OpenRA.Mods.RA/Missions/Allies04Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies04Script.cs @@ -150,7 +150,7 @@ namespace OpenRA.Mods.RA.Missions var enemies = world.Actors.Where(u => u.Owner == creeps && u.HasTrait() && ((u.HasTrait() && !u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && !u.IsDead() && u.IsInWorld); - var enemy = enemies.OrderBy(u => (attacker.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault(); + var enemy = enemies.OrderBy(u => (attacker.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault(); if (enemy != null) attacker.QueueActivity(new AttackMove.AttackMoveActivity(attacker, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); else diff --git a/OpenRA.Mods.RA/Missions/FortLonestarScript.cs b/OpenRA.Mods.RA/Missions/FortLonestarScript.cs index 4d8958590f..4134054f37 100644 --- a/OpenRA.Mods.RA/Missions/FortLonestarScript.cs +++ b/OpenRA.Mods.RA/Missions/FortLonestarScript.cs @@ -79,7 +79,7 @@ namespace OpenRA.Mods.RA.Missions { var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == multi0) && ((u.HasTrait() && !u.HasTrait()))); - var targetEnemy = enemies.OrderBy(u => (self.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault(); + var targetEnemy = enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault(); if (targetEnemy != null) { self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(6)))); @@ -127,7 +127,7 @@ namespace OpenRA.Mods.RA.Missions new OwnerInit(soviets) }); squad.QueueActivity(new AttackMove.AttackMoveActivity(squad, new Move.Move(paradrop1.Location, 3))); - var scatteredUnits = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location), 15) + var scatteredUnits = world.FindAliveCombatantActorsInCircle(paradrop1.Location.CenterPosition, WRange.FromCells(15)) .Where(unit => unit.IsIdle && unit.HasTrait() && unit.Owner == soviets); foreach (var unit in scatteredUnits) { diff --git a/OpenRA.Mods.RA/Missions/MissionUtils.cs b/OpenRA.Mods.RA/Missions/MissionUtils.cs index 2d0537c547..43edc8f862 100644 --- a/OpenRA.Mods.RA/Missions/MissionUtils.cs +++ b/OpenRA.Mods.RA/Missions/MissionUtils.cs @@ -24,20 +24,21 @@ namespace OpenRA.Mods.RA.Missions { public static class MissionUtils { - public static IEnumerable FindAliveCombatantActorsInCircle(this World world, PPos location, int range) + public static IEnumerable FindAliveCombatantActorsInCircle(this World world, WPos location, WRange range) { - return world.FindUnitsInCircle(location, Game.CellSize * range) + return world.FindUnitsInCircle(location, range) .Where(u => u.IsInWorld && u != world.WorldActor && !u.IsDead() && !u.Owner.NonCombatant); } - public static IEnumerable FindAliveCombatantActorsInBox(this World world, PPos a, PPos b) + public static IEnumerable FindAliveCombatantActorsInBox(this World world, CPos a, CPos b) { - return world.FindUnits(a, b).Where(u => u.IsInWorld && u != world.WorldActor && !u.IsDead() && !u.Owner.NonCombatant); + return world.FindUnits(a, b) + .Where(u => u.IsInWorld && u != world.WorldActor && !u.IsDead() && !u.Owner.NonCombatant); } - public static IEnumerable FindAliveNonCombatantActorsInCircle(this World world, PPos location, int range) + public static IEnumerable FindAliveNonCombatantActorsInCircle(this World world, WPos location, WRange range) { - return world.FindUnitsInCircle(location, Game.CellSize * range) + return world.FindUnitsInCircle(location, range) .Where(u => u.IsInWorld && u != world.WorldActor && !u.IsDead() && u.Owner.NonCombatant); } @@ -103,7 +104,7 @@ namespace OpenRA.Mods.RA.Missions badger.QueueActivity(new RemoveSelf()); } - public static bool AreaSecuredWithUnits(World world, Player player, PPos location, int range) + public static bool AreaSecuredWithUnits(World world, Player player, WPos location, WRange range) { var units = world.FindAliveCombatantActorsInCircle(location, range).Where(a => a.HasTrait()); return units.Any() && units.All(a => a.Owner == player); @@ -211,7 +212,7 @@ namespace OpenRA.Mods.RA.Missions var enemies = self.World.Actors.Where(u => u.AppearsHostileTo(self) && u.Owner == enemyPlayer && ((u.HasTrait() && !u.HasTrait()) || (u.HasTrait() && !u.HasTrait())) && u.IsInWorld && !u.IsDead()); - var enemy = enemies.OrderBy(u => (self.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault(); + var enemy = enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault(); if (enemy != null) self.QueueActivity(queued, new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); } diff --git a/OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs b/OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs index 622ebae34a..899efb3064 100644 --- a/OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs +++ b/OpenRA.Mods.RA/Missions/MonsterTankMadnessScript.cs @@ -121,7 +121,7 @@ namespace OpenRA.Mods.RA.Missions MissionUtils.CapOre(ussr); - if (!hospitalEvacuated && !hospital.IsDead() && MissionUtils.AreaSecuredWithUnits(world, greece, hospital.CenterLocation, 5)) + if (!hospitalEvacuated && !hospital.IsDead() && MissionUtils.AreaSecuredWithUnits(world, greece, hospital.CenterPosition, WRange.FromCells(5))) { EvacuateCivilians(); hospitalEvacuated = true; @@ -129,7 +129,7 @@ namespace OpenRA.Mods.RA.Missions if (baseTransferredTick == -1) { - var actorsInBase = world.FindUnits(alliedBaseTopLeft.CenterLocation, alliedBaseBottomRight.CenterLocation).Where(a => a != a.Owner.PlayerActor); + var actorsInBase = world.FindUnits(alliedBaseTopLeft.Location, alliedBaseBottomRight.Location).Where(a => a != a.Owner.PlayerActor); if (actorsInBase.Any(a => a.Owner == greece)) { SetupAlliedBase(actorsInBase); @@ -184,7 +184,7 @@ namespace OpenRA.Mods.RA.Missions MissionFailed("Dr. Demitri was killed."); } - else if (MissionUtils.AreaSecuredWithUnits(world, greece, demitriTriggerAreaCenter.CenterLocation, 3)) + else if (MissionUtils.AreaSecuredWithUnits(world, greece, demitriTriggerAreaCenter.CenterPosition, WRange.FromCells(3))) { demitri = world.CreateActor("demitri", greece, demitriChurchSpawnPoint.Location, null); demitri.QueueActivity(new Move.Move(demitriTriggerAreaCenter.Location, 0)); diff --git a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs b/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs index 0d1caddd12..d71aec8e2d 100644 --- a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs +++ b/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs @@ -126,7 +126,7 @@ namespace OpenRA.Mods.RA.Missions { var bridge = world.Actors .Where(a => a.HasTrait() && !a.IsDead()) - .OrderBy(a => (startJeep.CenterLocation - a.CenterLocation).LengthSquared) + .OrderBy(a => (startJeep.CenterPosition - a.CenterPosition).LengthSquared) .First(); Combat.DoExplosion(bridge, "Demolish", bridge.CenterPosition); world.WorldActor.Trait().AddEffect(15, bridge.CenterLocation.ToFloat2(), 6); diff --git a/OpenRA.Mods.RA/Missions/Survival01Script.cs b/OpenRA.Mods.RA/Missions/Survival01Script.cs index b5b62aa75b..7b37bf0fdc 100644 --- a/OpenRA.Mods.RA/Missions/Survival01Script.cs +++ b/OpenRA.Mods.RA/Missions/Survival01Script.cs @@ -184,7 +184,7 @@ namespace OpenRA.Mods.RA.Missions { var units = world.CreateActor((sovietInfantry).Random(world.SharedRandom), new TypeDictionary { new LocationInit(sovietinfantryentry1.Location), new OwnerInit(soviets) }); units.QueueActivity(new Move.Move(sovietinfantryrally1.Location, 3)); - var unitsincircle = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(sovietinfantryrally1.Location), 10) + var unitsincircle = world.FindAliveCombatantActorsInCircle(sovietinfantryrally1.CenterPosition, WRange.FromCells(10)) .Where(a => a.Owner == soviets && a.IsIdle && a.HasTrait()); if (unitsincircle.Count() >= sovietInfantryGroupSize) { @@ -211,7 +211,7 @@ namespace OpenRA.Mods.RA.Missions { var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == allies) && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait())); - var targetEnemy = enemies.OrderBy(u => (self.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault(); + var targetEnemy = enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault(); if (targetEnemy != null) { self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(3)))); @@ -222,7 +222,7 @@ namespace OpenRA.Mods.RA.Missions { foreach (var rallyPoint in sovietRallyPoints) { - var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rallyPoint), 4) + var units = world.FindAliveCombatantActorsInCircle(rallyPoint.CenterPosition, WRange.FromCells(4)) .Where(u => u.IsIdle && u.HasTrait() && u.Owner == soviets); if (units.Count() >= sovietAttackGroupSize) { @@ -234,7 +234,7 @@ namespace OpenRA.Mods.RA.Missions } var scatteredUnits = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && u.HasTrait() && u.IsIdle && u.Owner == soviets) .Except(world.WorldActor.Trait().Actors.Values) - .Except(sovietRallyPoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rp), 4))); + .Except(sovietRallyPoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(rp.CenterPosition, WRange.FromCells(4)))); foreach (var unit in scatteredUnits) { AttackNearestAlliedActor(unit); diff --git a/OpenRA.Mods.RA/Missions/Survival02Script.cs b/OpenRA.Mods.RA/Missions/Survival02Script.cs index 8e53caf5a1..7d2b69828d 100644 --- a/OpenRA.Mods.RA/Missions/Survival02Script.cs +++ b/OpenRA.Mods.RA/Missions/Survival02Script.cs @@ -129,7 +129,7 @@ namespace OpenRA.Mods.RA.Missions Actor FirstUnshroudedOrDefault(IEnumerable actors, World world, int shroudRange) { - return actors.FirstOrDefault(u => world.FindAliveCombatantActorsInCircle(u.CenterLocation, shroudRange).All(a => !a.HasTrait())); + return actors.FirstOrDefault(u => world.FindAliveCombatantActorsInCircle(u.CenterPosition, WRange.FromCells(shroudRange)).All(a => !a.HasTrait())); } void AttackNearestAlliedActor(Actor self) @@ -137,7 +137,7 @@ namespace OpenRA.Mods.RA.Missions var enemies = world.Actors.Where(u => u.AppearsHostileTo(self) && (u.Owner == allies) && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && u.IsInWorld && !u.IsDead()); - var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (self.CenterLocation - u.CenterLocation).LengthSquared), world, 20); + var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared), world, 20); if (enemy != null) self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); } @@ -298,7 +298,7 @@ namespace OpenRA.Mods.RA.Missions void ManageSovietUnits() { - var units = world.FindAliveCombatantActorsInCircle(sovietrally.CenterLocation, 3) + var units = world.FindAliveCombatantActorsInCircle(sovietrally.CenterPosition, WRange.FromCells(3)) .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); if (units.Count() >= sovietAttackGroupSize) { @@ -332,7 +332,7 @@ namespace OpenRA.Mods.RA.Missions { foreach (var rallyPoint in sovietrallypoints) { - var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rallyPoint), 10) + var units = world.FindAliveCombatantActorsInCircle(rallyPoint.CenterPosition, WRange.FromCells(10)) .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); if (units.Count() >= SovietGroupSize) { @@ -343,7 +343,7 @@ namespace OpenRA.Mods.RA.Missions var scatteredUnits = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && u.HasTrait() && u.IsIdle && u.Owner == soviets) .Except(world.WorldActor.Trait().Actors.Values) - .Except(sovietrallypoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rp), 10))); + .Except(sovietrallypoints.SelectMany(rp => world.FindAliveCombatantActorsInCircle(rp.CenterPosition, WRange.FromCells(10)))); foreach (var unit in scatteredUnits) AttackNearestAlliedActor(unit);