From ad5fe5678c5415e5d3fbbce9e56871324058d578 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C4=81da?= Date: Mon, 11 Aug 2025 02:44:36 -0500 Subject: [PATCH] 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> --- .../Triggers/TriggerOnRoundEndComponent.cs | 9 ++++++ .../Systems/TriggerOnRoundEndSystem.cs | 31 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 Content.Shared/Trigger/Components/Triggers/TriggerOnRoundEndComponent.cs create mode 100644 Content.Shared/Trigger/Systems/TriggerOnRoundEndSystem.cs 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); + } + } +} -- 2.51.2