From 3b2a804f4fcc6cd25120d1367ea9a11010128eb1 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Wed, 19 Aug 2020 16:49:34 +0200 Subject: [PATCH] Fix disposals throwing you into the shadow realm (#1792) --- .../Disposal/DisposalHolderComponent.cs | 17 +++++++++++++++++ .../Disposal/DisposalUnitComponent.cs | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalHolderComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalHolderComponent.cs index 44c1a1eab3..b07efbdef1 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalHolderComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalHolderComponent.cs @@ -6,6 +6,7 @@ using Content.Shared.GameObjects.Components.Body; using Robust.Server.GameObjects.Components.Container; using Robust.Shared.Containers; using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Maths; using Robust.Shared.ViewVariables; @@ -55,6 +56,12 @@ namespace Content.Server.GameObjects.Components.Disposal return false; } + if (!entity.TryGetComponent(out ICollidableComponent collidable) || + !collidable.CanCollide) + { + return false; + } + return entity.HasComponent() || entity.HasComponent(); } @@ -66,6 +73,11 @@ namespace Content.Server.GameObjects.Components.Disposal return false; } + if (entity.TryGetComponent(out ICollidableComponent collidable)) + { + collidable.CanCollide = false; + } + return true; } @@ -93,6 +105,11 @@ namespace Content.Server.GameObjects.Components.Disposal foreach (var entity in _contents.ContainedEntities.ToArray()) { + if (entity.TryGetComponent(out ICollidableComponent collidable)) + { + collidable.CanCollide = true; + } + _contents.ForceRemove(entity); if (entity.Transform.Parent == Owner.Transform) diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs index 399ba6ffbd..2849bb3c16 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalUnitComponent.cs @@ -122,6 +122,12 @@ namespace Content.Server.GameObjects.Components.Disposal return false; } + if (!entity.TryGetComponent(out ICollidableComponent collidable) || + !collidable.CanCollide) + { + return false; + } + if (!entity.HasComponent() && !entity.HasComponent()) {