Fix player sent to nullspace when ghost is deleted

This commit is contained in:
ShadowCommander
2021-04-18 01:54:36 -07:00
parent 5e42812c27
commit 64491bc986
2 changed files with 9 additions and 29 deletions

View File

@@ -72,26 +72,6 @@ namespace Content.Server.GameObjects.Components.Observer
base.Shutdown(); base.Shutdown();
} }
public override void OnAdd()
{
base.OnAdd();
if (Owner.TryGetComponent<MindComponent>(out var mind))
{
mind.GhostOnShutdown = false;
}
}
public override void OnRemove()
{
base.OnRemove();
if (Owner.TryGetComponent<MindComponent>(out var mind))
{
mind.GhostOnShutdown = true;
}
}
public override ComponentState GetComponentState(ICommonSession player) => new GhostComponentState(CanReturnToBody); public override ComponentState GetComponentState(ICommonSession player) => new GhostComponentState(CanReturnToBody);
public override void HandleNetworkMessage(ComponentMessage message, INetChannel netChannel, ICommonSession? session = null!) public override void HandleNetworkMessage(ComponentMessage message, INetChannel netChannel, ICommonSession? session = null!)

View File

@@ -26,24 +26,24 @@ namespace Content.Server.GameObjects.EntitySystems
private void OnMindRemovedMessage(EntityUid uid, GhostComponent component, MindRemovedMessage args) private void OnMindRemovedMessage(EntityUid uid, GhostComponent component, MindRemovedMessage args)
{ {
if (!EntityManager.TryGetEntity(uid, out var entity)) DeleteEntity(uid);
return;
DeleteEntity(entity);
} }
private void OnMindUnvisitedMessage(EntityUid uid, GhostComponent component, MindUnvisitedMessage args) private void OnMindUnvisitedMessage(EntityUid uid, GhostComponent component, MindUnvisitedMessage args)
{ {
if (!EntityManager.TryGetEntity(uid, out var entity)) DeleteEntity(uid);
return;
DeleteEntity(entity);
} }
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; return;
entity?.Delete(); if (entity.TryGetComponent<MindComponent>(out var mind))
mind.GhostOnShutdown = false;
entity.Delete();
} }
} }
} }