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()) {