diff --git a/Content.Shared/Random/Rules/GridInRange.cs b/Content.Shared/Random/Rules/GridInRange.cs index dfe57b9375..bdc0cedf73 100644 --- a/Content.Shared/Random/Rules/GridInRange.cs +++ b/Content.Shared/Random/Rules/GridInRange.cs @@ -1,5 +1,6 @@ using System.Numerics; using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Shared.Random.Rules; @@ -11,6 +12,8 @@ public sealed partial class GridInRangeRule : RulesRule [DataField] public float Range = 10f; + private List> _grids = []; + public override bool Check(EntityManager entManager, EntityUid uid) { if (!entManager.TryGetComponent(uid, out TransformComponent? xform)) @@ -29,10 +32,10 @@ public sealed partial class GridInRangeRule : RulesRule var worldPos = transform.GetWorldPosition(xform); var gridRange = new Vector2(Range, Range); - foreach (var _ in mapManager.FindGridsIntersecting(xform.MapID, new Box2(worldPos - gridRange, worldPos + gridRange))) - { + _grids.Clear(); + mapManager.FindGridsIntersecting(xform.MapID, new Box2(worldPos - gridRange, worldPos + gridRange), ref _grids); + if (_grids.Count > 0) return !Inverted; - } return Inverted; }