Redirect dead player LOOC to deadchat (#10009)
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user