Remove LOOC range limit for ghosts (#6322)
This commit is contained in:
@@ -277,15 +277,18 @@ namespace Content.Server.Chat.Managers
|
|||||||
var sourceCoords = transformSource.Coordinates;
|
var sourceCoords = transformSource.Coordinates;
|
||||||
var messageWrap = Loc.GetString("chat-manager-entity-whisper-wrap-message",("entityName", _entManager.GetComponent<MetaDataComponent>(source).EntityName));
|
var messageWrap = Loc.GetString("chat-manager-entity-whisper-wrap-message",("entityName", _entManager.GetComponent<MetaDataComponent>(source).EntityName));
|
||||||
|
|
||||||
|
var xforms = _entManager.GetEntityQuery<TransformComponent>();
|
||||||
|
var ghosts = _entManager.GetEntityQuery<GhostComponent>();
|
||||||
|
|
||||||
foreach (var session in sessions)
|
foreach (var session in sessions)
|
||||||
{
|
{
|
||||||
if (session.AttachedEntity is not {Valid: true} playerEntity)
|
if (session.AttachedEntity is not {Valid: true} playerEntity)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var transformEntity = _entManager.GetComponent<TransformComponent>(playerEntity);
|
var transformEntity = xforms.GetComponent(playerEntity);
|
||||||
|
|
||||||
if (sourceCoords.InRange(_entManager, transformEntity.Coordinates, WhisperRange) ||
|
if (sourceCoords.InRange(_entManager, transformEntity.Coordinates, WhisperRange) ||
|
||||||
_entManager.HasComponent<GhostComponent>(playerEntity))
|
ghosts.HasComponent(playerEntity))
|
||||||
{
|
{
|
||||||
NetMessageToOne(ChatChannel.Whisper, message, messageWrap, source, hideChat, session.ConnectedClient);
|
NetMessageToOne(ChatChannel.Whisper, message, messageWrap, source, hideChat, session.ConnectedClient);
|
||||||
}
|
}
|
||||||
@@ -354,18 +357,16 @@ namespace Content.Server.Chat.Managers
|
|||||||
}
|
}
|
||||||
|
|
||||||
message = FormattedMessage.EscapeText(message);
|
message = FormattedMessage.EscapeText(message);
|
||||||
|
var sessions = new List<ICommonSession>();
|
||||||
|
|
||||||
var clients = Filter.Empty()
|
ClientDistanceToList(entity, VoiceRange, sessions);
|
||||||
.AddInRange(_entManager.GetComponent<TransformComponent>(entity).MapPosition, VoiceRange)
|
|
||||||
.Recipients
|
|
||||||
.Select(p => p.ConnectedClient)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
var msg = _netManager.CreateNetMessage<MsgChatMessage>();
|
var msg = _netManager.CreateNetMessage<MsgChatMessage>();
|
||||||
msg.Channel = ChatChannel.LOOC;
|
msg.Channel = ChatChannel.LOOC;
|
||||||
msg.Message = message;
|
msg.Message = message;
|
||||||
msg.MessageWrap = Loc.GetString("chat-manager-entity-looc-wrap-message", ("entityName", Name: _entManager.GetComponent<MetaDataComponent>(entity).EntityName));
|
msg.MessageWrap = Loc.GetString("chat-manager-entity-looc-wrap-message", ("entityName", Name: _entManager.GetComponent<MetaDataComponent>(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}");
|
_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<ICommonSession> playerSessions)
|
public void ClientDistanceToList(EntityUid source, int voiceRange, List<ICommonSession> playerSessions)
|
||||||
{
|
{
|
||||||
var transformSource = _entManager.GetComponent<TransformComponent>(source);
|
var ghosts = _entManager.GetEntityQuery<GhostComponent>();
|
||||||
|
var xforms = _entManager.GetEntityQuery<TransformComponent>();
|
||||||
|
|
||||||
|
var transformSource = xforms.GetComponent(source);
|
||||||
var sourceMapId = transformSource.MapID;
|
var sourceMapId = transformSource.MapID;
|
||||||
var sourceCoords = transformSource.Coordinates;
|
var sourceCoords = transformSource.Coordinates;
|
||||||
|
|
||||||
@@ -633,10 +637,10 @@ namespace Content.Server.Chat.Managers
|
|||||||
if (player.AttachedEntity is not {Valid: true} playerEntity)
|
if (player.AttachedEntity is not {Valid: true} playerEntity)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var transformEntity = _entManager.GetComponent<TransformComponent>(playerEntity);
|
var transformEntity = xforms.GetComponent(playerEntity);
|
||||||
|
|
||||||
if (transformEntity.MapID != sourceMapId ||
|
if (transformEntity.MapID != sourceMapId ||
|
||||||
!_entManager.HasComponent<GhostComponent>(playerEntity) &&
|
!ghosts.HasComponent(playerEntity) &&
|
||||||
!sourceCoords.InRange(_entManager, transformEntity.Coordinates, voiceRange))
|
!sourceCoords.InRange(_entManager, transformEntity.Coordinates, voiceRange))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user