diff --git a/Content.Server/GameObjects/Components/Observer/GhostComponent.cs b/Content.Server/GameObjects/Components/Observer/GhostComponent.cs index 74fe2d403e..bf252609ad 100644 --- a/Content.Server/GameObjects/Components/Observer/GhostComponent.cs +++ b/Content.Server/GameObjects/Components/Observer/GhostComponent.cs @@ -72,26 +72,6 @@ namespace Content.Server.GameObjects.Components.Observer base.Shutdown(); } - public override void OnAdd() - { - base.OnAdd(); - - if (Owner.TryGetComponent(out var mind)) - { - mind.GhostOnShutdown = false; - } - } - - public override void OnRemove() - { - base.OnRemove(); - - if (Owner.TryGetComponent(out var mind)) - { - mind.GhostOnShutdown = true; - } - } - public override ComponentState GetComponentState(ICommonSession player) => new GhostComponentState(CanReturnToBody); public override void HandleNetworkMessage(ComponentMessage message, INetChannel netChannel, ICommonSession? session = null!) diff --git a/Content.Server/GameObjects/EntitySystems/GhostSystem.cs b/Content.Server/GameObjects/EntitySystems/GhostSystem.cs index 4cdd06c0ba..6f11eff817 100644 --- a/Content.Server/GameObjects/EntitySystems/GhostSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/GhostSystem.cs @@ -26,24 +26,24 @@ namespace Content.Server.GameObjects.EntitySystems private void OnMindRemovedMessage(EntityUid uid, GhostComponent component, MindRemovedMessage args) { - if (!EntityManager.TryGetEntity(uid, out var entity)) - return; - DeleteEntity(entity); + DeleteEntity(uid); } private void OnMindUnvisitedMessage(EntityUid uid, GhostComponent component, MindUnvisitedMessage args) { - if (!EntityManager.TryGetEntity(uid, out var entity)) - return; - DeleteEntity(entity); + DeleteEntity(uid); } - private void DeleteEntity(IEntity? entity) + private void DeleteEntity(EntityUid uid) { - if (entity?.Deleted == true) + if (!EntityManager.TryGetEntity(uid, out var entity) + || entity.Deleted == true + || entity.LifeStage == EntityLifeStage.Terminating) return; - entity?.Delete(); + if (entity.TryGetComponent(out var mind)) + mind.GhostOnShutdown = false; + entity.Delete(); } } }