diff --git a/Content.Client/Administration/UI/Tabs/ServerTab.xaml b/Content.Client/Administration/UI/Tabs/ServerTab.xaml index 0bebe22f311..f330b4020ff 100644 --- a/Content.Client/Administration/UI/Tabs/ServerTab.xaml +++ b/Content.Client/Administration/UI/Tabs/ServerTab.xaml @@ -15,10 +15,15 @@ SPDX-License-Identifier: MIT xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls" Margin="4" MinSize="50 50"> - - - - - + + + + + + + + + + diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 4e193316e65..3a4df26480e 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -158,6 +158,7 @@ using Robust.Shared.Random; using Robust.Shared.Replays; using Robust.Shared.Utility; +using Content.Shared._RMC14.CCVar; namespace Content.Server.Chat.Systems; @@ -206,6 +207,7 @@ public sealed partial class ChatSystem : SharedChatSystem private bool _loocEnabled = true; private bool _deadLoocEnabled; private bool _critLoocEnabled; + private bool _DeadchatEnabled; // RMC14 private readonly bool _adminLoocEnabled = true; public override void Initialize() @@ -215,6 +217,7 @@ public override void Initialize() Subs.CVar(_configurationManager, CCVars.LoocEnabled, OnLoocEnabledChanged, true); Subs.CVar(_configurationManager, CCVars.DeadLoocEnabled, OnDeadLoocEnabledChanged, true); Subs.CVar(_configurationManager, CCVars.CritLoocEnabled, OnCritLoocEnabledChanged, true); + Subs.CVar(_configurationManager, RMCCVars.RMCDeadChatEnabled, OnDeadChatEnabledChanged, true); // RMC14 SubscribeLocalEvent(OnGameChange); } @@ -247,6 +250,16 @@ private void OnCritLoocEnabledChanged(bool val) Loc.GetString(val ? "chat-manager-crit-looc-chat-enabled-message" : "chat-manager-crit-looc-chat-disabled-message")); } + private void OnDeadChatEnabledChanged(bool val) + { + if (_DeadchatEnabled == val) + return; + + _DeadchatEnabled = val; + _chatManager.DispatchServerAnnouncement( + Loc.GetString(val ? "set-dchat-command-dchat-enabled" : "set-dchat-command-dchat-disabled")); + } + private void OnGameChange(GameRunLevelChangedEvent ev) { switch (ev.New) @@ -985,6 +998,9 @@ private void SendDeadChat(EntityUid source, ICommonSession player, string messag var speech = GetSpeechVerb(source, message); // Goobstation - Dead chat verbs + if (!_adminManager.IsAdmin(player) && !_DeadchatEnabled) // RMC14 - Check the status of the "rmc.dead_chat_enabled" CCvar before continuing. + return; + if (_adminManager.IsAdmin(player)) { wrappedMessage = Loc.GetString("chat-manager-send-admin-dead-chat-wrap-message", diff --git a/Content.Server/_RMC14/Chat/Commands/SetDChatCommand.cs b/Content.Server/_RMC14/Chat/Commands/SetDChatCommand.cs new file mode 100644 index 00000000000..4687841d574 --- /dev/null +++ b/Content.Server/_RMC14/Chat/Commands/SetDChatCommand.cs @@ -0,0 +1,42 @@ +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared._RMC14.CCVar; +using Robust.Shared.Configuration; +using Robust.Shared.Console; + +namespace Content.Server._RMC14.Chat.Commands; + +[AdminCommand(AdminFlags.Admin)] +public sealed class SetDchatCommand : IConsoleCommand +{ + public string Command => "setdchat"; + public string Description => Loc.GetString("set-dchat-command-description"); + public string Help => Loc.GetString("set-dchat-command-help"); + public void Execute(IConsoleShell shell, string argStr, string[] args) + { + var cfg = IoCManager.Resolve(); + + if (args.Length > 1) + { + shell.WriteError(Loc.GetString("set-dchat-command-too-many-arguments-error")); + return; + } + + var dchat = cfg.GetCVar(RMCCVars.RMCDeadChatEnabled); + + if (args.Length == 0) + { + dchat = !dchat; + } + + if (args.Length == 1 && !bool.TryParse(args[0], out dchat)) + { + shell.WriteError(Loc.GetString("set-dchat-command-invalid-argument-error")); + return; + } + + cfg.SetCVar(RMCCVars.RMCDeadChatEnabled, dchat); + + shell.WriteLine(Loc.GetString(dchat ? "set-dchat-command-dchat-enabled" : "set-dchat-command-dchat-disabled")); + } +} diff --git a/Content.Shared/_RMC14/CCVar/RMCCVars.cs b/Content.Shared/_RMC14/CCVar/RMCCVars.cs new file mode 100644 index 00000000000..bbbc7c061db --- /dev/null +++ b/Content.Shared/_RMC14/CCVar/RMCCVars.cs @@ -0,0 +1,11 @@ +using Robust.Shared; +using Robust.Shared.Configuration; + +namespace Content.Shared._RMC14.CCVar; + +[CVarDefs] +public sealed partial class RMCCVars : CVars +{ + public static readonly CVarDef RMCDeadChatEnabled = + CVarDef.Create("rmc.dead_chat_enabled", true, CVar.SERVER | CVar.NOTIFY | CVar.REPLICATED); +} diff --git a/Resources/Locale/en-US/_RMC14/administration/commands/set-dchat-command.ftl b/Resources/Locale/en-US/_RMC14/administration/commands/set-dchat-command.ftl new file mode 100644 index 00000000000..833347b5557 --- /dev/null +++ b/Resources/Locale/en-US/_RMC14/administration/commands/set-dchat-command.ftl @@ -0,0 +1,7 @@ +set-dchat-command-description = Allows you to enable or disable Dead Chat. +set-dchat-command-help = Usage: setdchat OR setdchat [value] +set-dchat-command-too-many-arguments-error = Too many arguments. +set-dchat-command-invalid-argument-error = Invalid argument. +set-dchat-command-dchat-enabled = Dead chat has been enabled. +set-dchat-command-dchat-disabled = Dead chat has been disabled. +rmc-ui-toggle-dchat = Toggle Dead Chat