diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index 3c265d5a02..81b2fee569 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -13,6 +13,7 @@ using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Events; using Content.Shared.Movement.Systems; using Content.Shared.Pulling.Events; +using Content.Shared.Standing; using Content.Shared.Throwing; using Content.Shared.Verbs; using Robust.Shared.Containers; @@ -62,6 +63,7 @@ public sealed class PullingSystem : EntitySystem SubscribeLocalEvent(OnPullerUnpaused); SubscribeLocalEvent(OnVirtualItemDeleted); SubscribeLocalEvent(OnRefreshMovespeed); + SubscribeLocalEvent(OnDropHandItems); CommandBinds.Builder .Bind(ContentKeyFunctions.MovePulledObject, new PointerInputCmdHandler(OnRequestMovePulledObject)) @@ -69,6 +71,17 @@ public sealed class PullingSystem : EntitySystem .Register(); } + private void OnDropHandItems(EntityUid uid, PullerComponent pullerComp, DropHandItemsEvent args) + { + if (pullerComp.Pulling == null || pullerComp.NeedsHands) + return; + + if (!TryComp(pullerComp.Pulling, out PullableComponent? pullableComp)) + return; + + TryStopPull(pullerComp.Pulling.Value, pullableComp, uid); + } + private void OnPullerContainerInsert(Entity ent, ref EntGotInsertedIntoContainerMessage args) { if (ent.Comp.Pulling == null) return;