From: āda Date: Wed, 19 Nov 2025 02:08:04 +0000 (-0600) Subject: AdminLogOnTrigger (#41474) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=224f0fd5073093662e0b3abf31493c621cf9c78a;p=space-station-14.git AdminLogOnTrigger (#41474) * commit * requested * also requested * Update Content.Shared/Trigger/Components/Effects/AdminLogOnTriggerComponent.cs --------- Co-authored-by: iaada Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- diff --git a/Content.Shared/Trigger/Components/Effects/AdminLogOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/AdminLogOnTriggerComponent.cs new file mode 100644 index 0000000000..4045f8c12e --- /dev/null +++ b/Content.Shared/Trigger/Components/Effects/AdminLogOnTriggerComponent.cs @@ -0,0 +1,34 @@ +using Content.Shared.Database; +using Content.Shared.Random; +using Content.Shared.Trigger.Components.Triggers; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Trigger.Components.Effects; + +/// +/// This component creates an admin log when receiving a trigger. +/// is ignored. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class AdminLogOnTriggerComponent : BaseXOnTriggerComponent +{ + /// + /// The message displayed in the logs describing what specifically was done by this trigger. + /// This entity and the user will be included alongside the message. + /// + [DataField(required: true), AutoNetworkedField] + public LocId Message = string.Empty; + + /// + /// What type of action took place? + /// + [DataField, AutoNetworkedField] + public LogType LogType = LogType.Trigger; + + /// + /// How important is this trigger? + /// + [DataField, AutoNetworkedField] + public LogImpact LogImpact = LogImpact.Low; +} diff --git a/Content.Shared/Trigger/Systems/AdminLogOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/AdminLogOnTriggerSystem.cs new file mode 100644 index 0000000000..0adf483aed --- /dev/null +++ b/Content.Shared/Trigger/Systems/AdminLogOnTriggerSystem.cs @@ -0,0 +1,19 @@ +using Content.Shared.Administration.Logs; +using Content.Shared.Trigger.Components.Effects; + +namespace Content.Shared.Trigger.Systems; + +public sealed class AdminLogOnTriggerSystem : XOnTriggerSystem +{ + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + + protected override void OnTrigger(Entity ent, EntityUid target, ref TriggerEvent args) + { + _adminLogger.Add( + ent.Comp.LogType, + ent.Comp.LogImpact, + $"{ToPrettyString(args.User)} sent a trigger using {ToPrettyString(ent)}: {Loc.GetString(ent.Comp.Message)}" + ); + // Intentionally does not handle the event since this shouldn't affect the gamestate. + } +}