diff --git a/Content.Server/Speech/EntitySystems/ListeningSystem.cs b/Content.Server/Speech/EntitySystems/ListeningSystem.cs index 1caab06e3e..f33f0aedf8 100644 --- a/Content.Server/Speech/EntitySystems/ListeningSystem.cs +++ b/Content.Server/Speech/EntitySystems/ListeningSystem.cs @@ -33,11 +33,12 @@ public sealed class ListeningSystem : EntitySystem var attemptEv = new ListenAttemptEvent(source); var ev = new ListenEvent(message, source); var obfuscatedEv = obfuscatedMessage == null ? null : new ListenEvent(obfuscatedMessage, source); + var query = EntityQueryEnumerator(); - foreach (var (listener, xform) in EntityQuery()) + while(query.MoveNext(out var listenerUid, out var listener, out var xform)) { if (xform.MapID != sourceXform.MapID) - return; + continue; // range checks // TODO proper speech occlusion @@ -45,7 +46,7 @@ public sealed class ListeningSystem : EntitySystem if (distance > listener.Range * listener.Range) continue; - RaiseLocalEvent(listener.Owner, attemptEv); + RaiseLocalEvent(listenerUid, attemptEv); if (attemptEv.Cancelled) { attemptEv.Uncancel(); @@ -53,9 +54,9 @@ public sealed class ListeningSystem : EntitySystem } if (obfuscatedEv != null && distance > ChatSystem.WhisperRange) - RaiseLocalEvent(listener.Owner, obfuscatedEv); + RaiseLocalEvent(listenerUid, obfuscatedEv); else - RaiseLocalEvent(listener.Owner, ev); + RaiseLocalEvent(listenerUid, ev); } } }