using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Damage.ForceSay; /// /// The reason for this component's existence is slightly unintuitive, so for context: this is put on an entity /// to allow its next speech attempt to bypass checks. The reason for this is to allow /// 'force saying'--for instance, with deathgasping or with . /// /// This component is either removed in the speech attempt check, or after /// has passed. This is to allow a player-submitted forced message in the case of , /// while also ensuring that it isn't valid forever. It has to work this way, because the server is not a keylogger and doesn't /// have any knowledge of what the client might actually have typed, so it gives them some leeway for ping. /// [RegisterComponent, NetworkedComponent] public sealed partial class AllowNextCritSpeechComponent : Component { /// /// Should be set when adding the component to specify the time that this should be valid for, /// if it should stay valid for some amount of time. /// public TimeSpan? Timeout = null; }