Fix player sent to nullspace when ghost is deleted
This commit is contained in:
@@ -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!)
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user