diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index 5fc6818893..0b00ab8c83 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -241,11 +241,14 @@ public sealed class NPCUtilitySystem : EntitySystem switch (query) { case ComponentQuery compQuery: - foreach (var ent in _lookup.GetEntitiesInRange(owner, vision)) + var mapPos = Transform(owner).MapPosition; + foreach (var compReg in compQuery.Components.Values) { - foreach (var comp in compQuery.Components.Values) + foreach (var comp in _lookup.GetComponentsInRange(compReg.Component.GetType(), mapPos, vision)) { - if (!HasComp(ent, comp.Component.GetType())) + var ent = comp.Owner; + + if (ent == owner) continue; entities.Add(ent); diff --git a/Content.Server/Pinpointer/ProximityBeeperSystem.cs b/Content.Server/Pinpointer/ProximityBeeperSystem.cs index 7e2c8b8e88..85a9a083d5 100644 --- a/Content.Server/Pinpointer/ProximityBeeperSystem.cs +++ b/Content.Server/Pinpointer/ProximityBeeperSystem.cs @@ -62,17 +62,14 @@ public sealed class ProximityBeeperSystem : EntitySystem var xformQuery = GetEntityQuery(); var xform = xformQuery.GetComponent(uid); - var comp = EntityManager.ComponentFactory.GetRegistration(component.Component).Type; + var compType = EntityManager.ComponentFactory.GetRegistration(component.Component).Type; float? closestDistance = null; - foreach (var targetXform in _entityLookup.GetComponentsInRange(xform.MapPosition, component.MaximumDistance)) + foreach (var comp in _entityLookup.GetComponentsInRange(compType, xform.MapPosition, component.MaximumDistance)) { // forgive me father, for i have sinned. - var ent = targetXform.Owner; + var ent = comp.Owner; - if (!HasComp(ent, comp)) - continue; - - var dist = (_transform.GetWorldPosition(xform, xformQuery) - _transform.GetWorldPosition(targetXform, xformQuery)).Length; + var dist = (_transform.GetWorldPosition(xform, xformQuery) - _transform.GetWorldPosition(ent, xformQuery)).Length; if (dist >= (closestDistance ?? float.MaxValue)) continue; closestDistance = dist;