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