Files
space-station-14/Content.Shared/Trigger/Systems/TriggerOnEmbedSystem.cs
sleepyyapril f1443f0cd7 TriggerOn(Un)Embed (#41720)
* feat: TriggerOn(Un)Embed

* feat: StopEmbedEvent

* fix: forgot initialize

* chore: better naming

* chore: oops

* Update Content.Shared/Trigger/Components/Triggers/TriggerOnUnembedComponent.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Content.Shared/Projectiles/EmbedEvents.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* review

im lazy

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Content.Shared/Trigger/Components/Triggers/TriggerOnEmbedComponent.cs

* chore: docs

* comment change

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-08 04:20:42 +00:00

32 lines
1022 B
C#

using Content.Shared.Projectiles;
using Content.Shared.Trigger.Components.Triggers;
namespace Content.Shared.Trigger.Systems;
/// <summary>
/// This handles <see cref="TriggerOnEmbedComponent"/> subscriptions.
/// </summary>
public sealed class TriggerOnEmbedSystem : TriggerOnXSystem
{
/// <inheritdoc/>
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<TriggerOnEmbedComponent, EmbedEvent>(OnEmbed);
SubscribeLocalEvent<TriggerOnUnembedComponent, EmbedDetachEvent>(OnStopEmbed);
}
private void OnEmbed(Entity<TriggerOnEmbedComponent> ent, ref EmbedEvent args)
{
var user = ent.Comp.UserIsEmbeddedInto ? args.Embedded : args.Shooter;
Trigger.Trigger(ent, user, ent.Comp.KeyOut);
}
private void OnStopEmbed(Entity<TriggerOnUnembedComponent> ent, ref EmbedDetachEvent args)
{
var user = ent.Comp.UserIsEmbeddedInto ? args.Embedded : args.Detacher;
Trigger.Trigger(ent, user, ent.Comp.KeyOut);
}
}