using Content.Server.Ghost.Components; using Content.Server.Mind.Components; using JetBrains.Annotations; using Robust.Shared.GameObjects; namespace Content.Server.Ghost { [UsedImplicitly] public class GhostSystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMindRemovedMessage); SubscribeLocalEvent(OnMindUnvisitedMessage); } private void OnMindRemovedMessage(EntityUid uid, GhostComponent component, MindRemovedMessage args) { DeleteEntity(uid); } private void OnMindUnvisitedMessage(EntityUid uid, GhostComponent component, MindUnvisitedMessage args) { DeleteEntity(uid); } private void DeleteEntity(EntityUid uid) { if (!EntityManager.TryGetEntity(uid, out var entity) || entity.Deleted == true || entity.LifeStage == EntityLifeStage.Terminating) return; if (entity.TryGetComponent(out var mind)) mind.GhostOnShutdown = false; entity.Delete(); } } }