Fix disposals throwing you into the shadow realm (#1792)

This commit is contained in:
DrSmugleaf
2020-08-19 16:49:34 +02:00
committed by GitHub
parent dc77c399b9
commit 3b2a804f4f
2 changed files with 23 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ using Content.Shared.GameObjects.Components.Body;
using Robust.Server.GameObjects.Components.Container; using Robust.Server.GameObjects.Components.Container;
using Robust.Shared.Containers; using Robust.Shared.Containers;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.GameObjects.Components;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.ViewVariables; using Robust.Shared.ViewVariables;
@@ -55,6 +56,12 @@ namespace Content.Server.GameObjects.Components.Disposal
return false; return false;
} }
if (!entity.TryGetComponent(out ICollidableComponent collidable) ||
!collidable.CanCollide)
{
return false;
}
return entity.HasComponent<ItemComponent>() || return entity.HasComponent<ItemComponent>() ||
entity.HasComponent<IBodyManagerComponent>(); entity.HasComponent<IBodyManagerComponent>();
} }
@@ -66,6 +73,11 @@ namespace Content.Server.GameObjects.Components.Disposal
return false; return false;
} }
if (entity.TryGetComponent(out ICollidableComponent collidable))
{
collidable.CanCollide = false;
}
return true; return true;
} }
@@ -93,6 +105,11 @@ namespace Content.Server.GameObjects.Components.Disposal
foreach (var entity in _contents.ContainedEntities.ToArray()) foreach (var entity in _contents.ContainedEntities.ToArray())
{ {
if (entity.TryGetComponent(out ICollidableComponent collidable))
{
collidable.CanCollide = true;
}
_contents.ForceRemove(entity); _contents.ForceRemove(entity);
if (entity.Transform.Parent == Owner.Transform) if (entity.Transform.Parent == Owner.Transform)

View File

@@ -122,6 +122,12 @@ namespace Content.Server.GameObjects.Components.Disposal
return false; return false;
} }
if (!entity.TryGetComponent(out ICollidableComponent collidable) ||
!collidable.CanCollide)
{
return false;
}
if (!entity.HasComponent<ItemComponent>() && if (!entity.HasComponent<ItemComponent>() &&
!entity.HasComponent<IBodyManagerComponent>()) !entity.HasComponent<IBodyManagerComponent>())
{ {