From efc4bef3b43bb95fd0eba90228898ee424aafee5 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 27 Jan 2022 00:18:56 +1100 Subject: [PATCH] Remove LOOC range limit for ghosts (#6322) --- Content.Server/Chat/Managers/ChatManager.cs | 26 ++++++++++++--------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index ac03a3a3a1..b073fa2f6c 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -277,15 +277,18 @@ namespace Content.Server.Chat.Managers var sourceCoords = transformSource.Coordinates; var messageWrap = Loc.GetString("chat-manager-entity-whisper-wrap-message",("entityName", _entManager.GetComponent(source).EntityName)); + var xforms = _entManager.GetEntityQuery(); + var ghosts = _entManager.GetEntityQuery(); + foreach (var session in sessions) { if (session.AttachedEntity is not {Valid: true} playerEntity) continue; - var transformEntity = _entManager.GetComponent(playerEntity); + var transformEntity = xforms.GetComponent(playerEntity); if (sourceCoords.InRange(_entManager, transformEntity.Coordinates, WhisperRange) || - _entManager.HasComponent(playerEntity)) + ghosts.HasComponent(playerEntity)) { NetMessageToOne(ChatChannel.Whisper, message, messageWrap, source, hideChat, session.ConnectedClient); } @@ -354,18 +357,16 @@ namespace Content.Server.Chat.Managers } message = FormattedMessage.EscapeText(message); + var sessions = new List(); - var clients = Filter.Empty() - .AddInRange(_entManager.GetComponent(entity).MapPosition, VoiceRange) - .Recipients - .Select(p => p.ConnectedClient) - .ToList(); + ClientDistanceToList(entity, VoiceRange, sessions); var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.LOOC; msg.Message = message; msg.MessageWrap = Loc.GetString("chat-manager-entity-looc-wrap-message", ("entityName", Name: _entManager.GetComponent(entity).EntityName)); - _netManager.ServerSendToMany(msg, clients); + + _netManager.ServerSendToMany(msg, sessions.Select(o => o.ConnectedClient).ToList()); _logs.Add(LogType.Chat, LogImpact.Low, $"LOOC from {player:Player}: {message}"); } @@ -624,7 +625,10 @@ namespace Content.Server.Chat.Managers public void ClientDistanceToList(EntityUid source, int voiceRange, List playerSessions) { - var transformSource = _entManager.GetComponent(source); + var ghosts = _entManager.GetEntityQuery(); + var xforms = _entManager.GetEntityQuery(); + + var transformSource = xforms.GetComponent(source); var sourceMapId = transformSource.MapID; var sourceCoords = transformSource.Coordinates; @@ -633,10 +637,10 @@ namespace Content.Server.Chat.Managers if (player.AttachedEntity is not {Valid: true} playerEntity) continue; - var transformEntity = _entManager.GetComponent(playerEntity); + var transformEntity = xforms.GetComponent(playerEntity); if (transformEntity.MapID != sourceMapId || - !_entManager.HasComponent(playerEntity) && + !ghosts.HasComponent(playerEntity) && !sourceCoords.InRange(_entManager, transformEntity.Coordinates, voiceRange)) continue;