diff --git a/Content.Server/RequiresGrid/RequiresGridComponent.cs b/Content.Server/RequiresGrid/RequiresGridComponent.cs new file mode 100644 index 0000000000..0e956c9ad9 --- /dev/null +++ b/Content.Server/RequiresGrid/RequiresGridComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Server.RequiresGrid; + +/// +/// Destroys an entity when they no longer are part of a Grid +/// +[RegisterComponent] +[Access(typeof(RequiresGridSystem))] +public sealed partial class RequiresGridComponent : Component +{ + +} diff --git a/Content.Server/RequiresGrid/RequiresGridSystem.cs b/Content.Server/RequiresGrid/RequiresGridSystem.cs new file mode 100644 index 0000000000..16a20c9a8a --- /dev/null +++ b/Content.Server/RequiresGrid/RequiresGridSystem.cs @@ -0,0 +1,29 @@ +using Content.Server.Destructible; + +namespace Content.Server.RequiresGrid; + +public sealed class RequiresGridSystem : EntitySystem +{ + [Dependency] private readonly DestructibleSystem _destructible = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEntParentChanged); + } + + private void OnEntParentChanged(EntityUid owner, RequiresGridComponent component, EntParentChangedMessage args) + { + if (args.OldParent == null) + return; + + if (args.Transform.GridUid != null) + return; + + if (TerminatingOrDeleted(owner)) + return; + + _destructible.DestroyEntity(owner); + } +}