using Content.Shared.Actions; namespace Content.Shared._Starlight.Actions.Stasis; /// /// Allows mobs to enter nanite induced stasis . /// public abstract class SharedStasisSystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnCompRemove); SubscribeLocalEvent(OnPrepareStasisStart); SubscribeLocalEvent(OnEnterStasisStart); SubscribeLocalEvent(OnExitStasisStart); } /// /// Giveths the action to preform stasis on the entity /// protected virtual void OnMapInit(EntityUid uid, StasisComponent comp, MapInitEvent args) { } /// /// Takeths away the action to preform stasis from the entity. /// protected virtual void OnCompRemove(EntityUid uid, StasisComponent comp, ComponentShutdown args) { } protected virtual void OnPrepareStasisStart(EntityUid uid, StasisComponent comp, PrepareStasisActionEvent args) { } protected virtual void OnEnterStasisStart(EntityUid uid, StasisComponent comp, EnterStasisActionEvent args) { } protected virtual void OnExitStasisStart(EntityUid uid, StasisComponent comp, ExitStasisActionEvent args) { } } /// /// Should be relayed upon using the action. /// public sealed partial class PrepareStasisActionEvent : InstantActionEvent { } /// /// Should be relayed preparation to stasis being complete. /// public sealed partial class EnterStasisActionEvent : InstantActionEvent { } /// /// Should be relayed upon using the action. /// public sealed partial class ExitStasisActionEvent : InstantActionEvent { }