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();
}
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 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)
{
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<MindComponent>(out var mind))
mind.GhostOnShutdown = false;
entity.Delete();
}
}
}