using Robust.Shared.Physics.Components;
using Robust.Shared.Map;
using System.Numerics;
+using Robust.Server.GameObjects;
namespace Content.Server.Anomaly;
/// </summary>
public sealed partial class AnomalySystem
{
-
+ [Dependency] private readonly MapSystem _mapSystem = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
private void InitializeGenerator()
if (!valid)
continue;
+ var pos = _mapSystem.GridTileToLocal(grid, gridComp, tile);
+ var mapPos = pos.ToMap(EntityManager, _transform);
// don't spawn in AntiAnomalyZones
- var antiAnomalyZonesQueue = AllEntityQuery<AntiAnomalyZoneComponent>();
- while (antiAnomalyZonesQueue.MoveNext(out var uid, out var zone))
+ var antiAnomalyZonesQueue = AllEntityQuery<AntiAnomalyZoneComponent, TransformComponent>();
+ 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;
if (!valid)
continue;
- targetCoords = gridComp.GridTileToLocal(tile);
+ targetCoords = pos;
break;
}