diff --git a/OpenRA.Mods.Common/Traits/Buildings/Building.cs b/OpenRA.Mods.Common/Traits/Buildings/Building.cs index 43311e3269..51e4eb0d55 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/Building.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/Building.cs @@ -72,8 +72,6 @@ namespace OpenRA.Mods.Common.Traits var scanEnd = world.Map.Clamp(topLeft + buildingMaxBounds + new CVec(Adjacent, Adjacent)); var nearnessCandidates = new List(); - - var bi = world.WorldActor.Trait(); var allyBuildRadius = world.LobbyInfo.GlobalSettings.AllyBuildRadius; for (var y = scanStart.Y; y < scanEnd.Y; y++) @@ -81,11 +79,12 @@ namespace OpenRA.Mods.Common.Traits for (var x = scanStart.X; x < scanEnd.X; x++) { var pos = new CPos(x, y); - var at = bi.GetBuildingAt(pos); - if (at == null || !at.IsInWorld || !at.HasTrait()) - continue; - if (at.Owner == p || (allyBuildRadius && at.Owner.Stances[p] == Stance.Ally)) + var at = world.ActorMap.GetUnitsAt(pos).Where(a => a.IsInWorld + && (a.Owner == p || (allyBuildRadius && a.Owner.Stances[p] == Stance.Ally)) + && a.HasTrait()); + + if (at.Any()) nearnessCandidates.Add(pos); } }