]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix for can't stop pulling when cuffed (#40233)
authorInsoPL <lukasz.lindert@protonmail.com>
Fri, 12 Sep 2025 03:39:25 +0000 (05:39 +0200)
committerGitHub <noreply@github.com>
Fri, 12 Sep 2025 03:39:25 +0000 (20:39 -0700)
* fix

* fix

* spaces added

Content.Shared/Cuffs/SharedCuffableSystem.cs
Content.Shared/Movement/Pulling/Systems/PullingSystem.cs

index 3b0f6c8a30cfe266fe64e2f14abff06908704c88..80ccc0619a94dcf61d54889a3a905e4214466d31 100644 (file)
@@ -477,14 +477,16 @@ namespace Content.Shared.Cuffs
             if (TryComp<HandsComponent>(target, out var hands) && hands.Count <= component.CuffedHandCount)
                 return false;
 
-            var ev = new TargetHandcuffedEvent();
-            RaiseLocalEvent(target, ref ev);
-
             // Success!
             _hands.TryDrop(user, handcuff);
 
             _container.Insert(handcuff, component.Container);
+
+            var ev = new TargetHandcuffedEvent();
+            RaiseLocalEvent(target, ref ev);
+
             UpdateHeldItems(target, handcuff, component);
+
             return true;
         }
 
index bc169aa201af94ed4b5f0a3348c32178b5661f4b..7fb9e825cd1ed440666bbe20506767d44fddf31c 100644 (file)
@@ -2,6 +2,7 @@ using Content.Shared.ActionBlocker;
 using Content.Shared.Administration.Logs;
 using Content.Shared.Alert;
 using Content.Shared.Buckle.Components;
+using Content.Shared.Cuffs;
 using Content.Shared.Cuffs.Components;
 using Content.Shared.Database;
 using Content.Shared.Hands;
@@ -82,12 +83,30 @@ public sealed class PullingSystem : EntitySystem
 
         SubscribeLocalEvent<PullableComponent, StrappedEvent>(OnBuckled);
         SubscribeLocalEvent<PullableComponent, BuckledEvent>(OnGotBuckled);
+        SubscribeLocalEvent<ActivePullerComponent, TargetHandcuffedEvent>(OnTargetHandcuffed);
 
         CommandBinds.Builder
             .Bind(ContentKeyFunctions.ReleasePulledObject, InputCmdHandler.FromDelegate(OnReleasePulledObject, handle: false))
             .Register<PullingSystem>();
     }
 
+    private void OnTargetHandcuffed(Entity<ActivePullerComponent> ent, ref TargetHandcuffedEvent args)
+    {
+        if (!TryComp<PullerComponent>(ent, out var comp))
+            return;
+
+        if (comp.Pulling == null)
+            return;
+
+        if (CanPull(ent, comp.Pulling.Value, comp))
+            return;
+
+        if (!TryComp<PullableComponent>(comp.Pulling, out var pullableComp))
+            return;
+
+        TryStopPull(comp.Pulling.Value, pullableComp);
+    }
+
     private void HandlePullStarted(EntityUid uid, HandsComponent component, PullStartedMessage args)
     {
         if (args.PullerUid != uid)
@@ -579,9 +598,6 @@ public sealed class PullingSystem : EntitySystem
         if (pullerUidNull == null)
             return true;
 
-        if (user != null && !_blocker.CanInteract(user.Value, pullableUid))
-            return false;
-
         var msg = new AttemptStopPullingEvent(user);
         RaiseLocalEvent(pullableUid, msg, true);