diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index 0213eb5902..ba77dc273a 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -712,20 +712,23 @@ public sealed class ChatUIController : UIController var msg = chatBox.ChatInput.Input.Text.TrimEnd(); // Don't send on OOC/LOOC obviously! - if (SplitInputContents(msg).chatChannel - is not ( - ChatSelectChannel.Local or - ChatSelectChannel.Radio or - ChatSelectChannel.Whisper - ) - ) + + // we need to handle selected channel + // and prefix-channel separately.. + var allowedChannels = ChatSelectChannel.Local | ChatSelectChannel.Whisper; + if ((chatBox.SelectedChannel & allowedChannels) == ChatSelectChannel.None) + return; + + // none can be returned from this if theres no prefix, + // so we allow it in that case (assuming the previous check will have exited already if its an invalid channel) + var prefixChannel = SplitInputContents(msg).chatChannel; + if (prefixChannel != ChatSelectChannel.None && (prefixChannel & allowedChannels) == ChatSelectChannel.None) return; if (_player.LocalSession?.AttachedEntity is not { } ent || !EntityManager.TryGetComponent(ent, out var forceSay)) return; - if (string.IsNullOrWhiteSpace(msg)) return; diff --git a/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs b/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs index dc2617bc93..163cc7cbf4 100644 --- a/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs +++ b/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs @@ -44,7 +44,7 @@ public sealed partial class DamageForceSayComponent : Component /// a force say occurs. /// [DataField] - public FixedPoint2 DamageThreshold = FixedPoint2.New(10); + public FixedPoint2 DamageThreshold = FixedPoint2.New(5); /// /// A list of damage group types that are considered when checking .