Redirect dead player LOOC to deadchat (#10009)

This commit is contained in:
Rane
2022-07-26 09:58:19 -04:00
committed by GitHub
parent 5eb0e62142
commit 5ad13e0637
3 changed files with 28 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ using Content.Server.Popups;
using Content.Server.Radio.EntitySystems; using Content.Server.Radio.EntitySystems;
using Content.Server.Station.Components; using Content.Server.Station.Components;
using Content.Server.Station.Systems; using Content.Server.Station.Systems;
using Content.Server.MobState;
using Content.Shared.ActionBlocker; using Content.Shared.ActionBlocker;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Content.Shared.Chat; using Content.Shared.Chat;
@@ -49,18 +50,21 @@ public sealed partial class ChatSystem : SharedChatSystem
[Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly InventorySystem _inventory = default!;
[Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly StationSystem _stationSystem = default!; [Dependency] private readonly StationSystem _stationSystem = default!;
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
private const int VoiceRange = 7; // how far voice goes in world units private const int VoiceRange = 7; // how far voice goes in world units
private const int WhisperRange = 2; // how far whisper goes in world units private const int WhisperRange = 2; // how far whisper goes in world units
private const string DefaultAnnouncementSound = "/Audio/Announcements/announce.ogg"; private const string DefaultAnnouncementSound = "/Audio/Announcements/announce.ogg";
private bool _loocEnabled = true; private bool _loocEnabled = true;
private bool _deadLoocEnabled = false;
private readonly bool _adminLoocEnabled = true; private readonly bool _adminLoocEnabled = true;
public override void Initialize() public override void Initialize()
{ {
InitializeRadio(); InitializeRadio();
_configurationManager.OnValueChanged(CCVars.LoocEnabled, OnLoocEnabledChanged, true); _configurationManager.OnValueChanged(CCVars.LoocEnabled, OnLoocEnabledChanged, true);
_configurationManager.OnValueChanged(CCVars.DeadLoocEnabled, OnDeadLoocEnabledChanged, true);
SubscribeLocalEvent<GameRunLevelChangedEvent>(OnGameChange); SubscribeLocalEvent<GameRunLevelChangedEvent>(OnGameChange);
} }
@@ -80,6 +84,15 @@ public sealed partial class ChatSystem : SharedChatSystem
Loc.GetString(val ? "chat-manager-looc-chat-enabled-message" : "chat-manager-looc-chat-disabled-message")); Loc.GetString(val ? "chat-manager-looc-chat-enabled-message" : "chat-manager-looc-chat-disabled-message"));
} }
private void OnDeadLoocEnabledChanged(bool val)
{
if (_deadLoocEnabled == val) return;
_deadLoocEnabled = val;
_chatManager.DispatchServerAnnouncement(
Loc.GetString(val ? "chat-manager-dead-looc-chat-enabled-message" : "chat-manager-dead-looc-chat-disabled-message"));
}
private void OnGameChange(GameRunLevelChangedEvent ev) private void OnGameChange(GameRunLevelChangedEvent ev)
{ {
if (_configurationManager.GetCVar(CCVars.OocEnableDuringRound)) if (_configurationManager.GetCVar(CCVars.OocEnableDuringRound))
@@ -153,7 +166,13 @@ public sealed partial class ChatSystem : SharedChatSystem
message = SanitizeInGameOOCMessage(message); message = SanitizeInGameOOCMessage(message);
switch (type) var sendType = type;
// If dead player LOOC is disabled, unless you are an aghost, send dead messages to dead chat
if (!_adminManager.IsAdmin(player) && !_deadLoocEnabled &&
(HasComp<GhostComponent>(source) || _mobStateSystem.IsDead(source)))
sendType = InGameOOCChatType.Dead;
switch (sendType)
{ {
case InGameOOCChatType.Dead: case InGameOOCChatType.Dead:
SendDeadChat(source, player, message, hideChat); SendDeadChat(source, player, message, hideChat);

View File

@@ -772,6 +772,12 @@ namespace Content.Shared.CCVar
public static readonly CVarDef<bool> AdminLoocEnabled = public static readonly CVarDef<bool> AdminLoocEnabled =
CVarDef.Create("looc.enabled_admin", true, CVar.NOTIFY); CVarDef.Create("looc.enabled_admin", true, CVar.NOTIFY);
/// <summary>
/// True: Dead players can use LOOC
/// False: Dead player LOOC gets redirected to dead chat
/// </summary>
public static readonly CVarDef<bool> DeadLoocEnabled = CVarDef.Create("looc.enabled_dead", false, CVar.NOTIFY | CVar.REPLICATED);
/* /*
* Entity Menu Grouping Types * Entity Menu Grouping Types
*/ */

View File

@@ -5,6 +5,8 @@ chat-manager-ooc-chat-enabled-message = OOC chat has been enabled.
chat-manager-ooc-chat-disabled-message = OOC chat has been disabled. chat-manager-ooc-chat-disabled-message = OOC chat has been disabled.
chat-manager-looc-chat-enabled-message = LOOC chat has been enabled. chat-manager-looc-chat-enabled-message = LOOC chat has been enabled.
chat-manager-looc-chat-disabled-message = LOOC chat has been disabled. chat-manager-looc-chat-disabled-message = LOOC chat has been disabled.
chat-manager-dead-looc-chat-enabled-message = Dead players can now use LOOC.
chat-manager-dead-looc-chat-disabled-message = Dead players can no longer use LOOC.
chat-manager-admin-ooc-chat-enabled-message = Admin OOC chat has been enabled. chat-manager-admin-ooc-chat-enabled-message = Admin OOC chat has been enabled.
chat-manager-admin-ooc-chat-disabled-message = Admin OOC chat has been disabled. chat-manager-admin-ooc-chat-disabled-message = Admin OOC chat has been disabled.
chat-manager-max-message-length-exceeded-message = Your message exceeded {$limit} character limit chat-manager-max-message-length-exceeded-message = Your message exceeded {$limit} character limit