From 2988d60bd47556371a016c9a188e6d0c255806cf Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Tue, 2 Jan 2024 01:18:41 -0500 Subject: [PATCH] Fix anti-anomaly zones (#23357) --- .../Anomaly/AnomalySystem.Generator.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Content.Server/Anomaly/AnomalySystem.Generator.cs b/Content.Server/Anomaly/AnomalySystem.Generator.cs index 4afec04874..61bb356ff7 100644 --- a/Content.Server/Anomaly/AnomalySystem.Generator.cs +++ b/Content.Server/Anomaly/AnomalySystem.Generator.cs @@ -13,6 +13,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Map; using System.Numerics; +using Robust.Server.GameObjects; namespace Content.Server.Anomaly; @@ -23,7 +24,7 @@ namespace Content.Server.Anomaly; /// public sealed partial class AnomalySystem { - + [Dependency] private readonly MapSystem _mapSystem = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; private void InitializeGenerator() @@ -133,14 +134,19 @@ public sealed partial class AnomalySystem if (!valid) continue; + var pos = _mapSystem.GridTileToLocal(grid, gridComp, tile); + var mapPos = pos.ToMap(EntityManager, _transform); // don't spawn in AntiAnomalyZones - var antiAnomalyZonesQueue = AllEntityQuery(); - while (antiAnomalyZonesQueue.MoveNext(out var uid, out var zone)) + var antiAnomalyZonesQueue = AllEntityQuery(); + while (antiAnomalyZonesQueue.MoveNext(out var uid, out var zone, out var antiXform)) { - var zoneTile = _transform.GetGridTilePositionOrDefault(uid, gridComp); + if (antiXform.MapID != mapPos.MapId) + continue; + + var antiCoordinates = _transform.GetMapCoordinates(antiXform); - var delta = (zoneTile - tile); - if (delta.LengthSquared < zone.ZoneRadius * zone.ZoneRadius) + var delta = antiCoordinates.Position - mapPos.Position; + if (delta.LengthSquared() < zone.ZoneRadius * zone.ZoneRadius) { valid = false; break; @@ -149,7 +155,7 @@ public sealed partial class AnomalySystem if (!valid) continue; - targetCoords = gridComp.GridTileToLocal(tile); + targetCoords = pos; break; } -- 2.51.2