From: āda Date: Mon, 11 Aug 2025 07:44:36 +0000 (-0500) Subject: Trigger on round end (#39545) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=ad5fe5678c5415e5d3fbbce9e56871324058d578;p=space-station-14.git Trigger on round end (#39545) * works if it works * small rewording --------- Co-authored-by: iaada Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnRoundEndComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnRoundEndComponent.cs new file mode 100644 index 0000000000..29a9643ca7 --- /dev/null +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnRoundEndComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Trigger.Components.Triggers; + +/// +/// Triggers the entity when the round ends, i.e. the scoreboard appears and post-round begins. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class TriggerOnRoundEndComponent : BaseTriggerOnXComponent; diff --git a/Content.Shared/Trigger/Systems/TriggerOnRoundEndSystem.cs b/Content.Shared/Trigger/Systems/TriggerOnRoundEndSystem.cs new file mode 100644 index 0000000000..c18fb08f3f --- /dev/null +++ b/Content.Shared/Trigger/Systems/TriggerOnRoundEndSystem.cs @@ -0,0 +1,31 @@ +using Content.Shared.GameTicking; +using Content.Shared.Trigger.Components.Triggers; + +namespace Content.Shared.Trigger.Systems; + +/// +/// System for creating a trigger when the round ends. +/// +public sealed class TriggerOnRoundEndSystem : EntitySystem +{ + [Dependency] private readonly TriggerSystem _trigger = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnRoundEnd); + } + + private void OnRoundEnd(RoundEndMessageEvent args) + { + var triggerQuery = EntityQueryEnumerator(); + + // trigger everything with the component + while (triggerQuery.MoveNext(out var uid, out var comp)) + { + _trigger.Trigger(uid, null, comp.KeyOut); + } + } +}