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;
}
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;
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)
if (pullerUidNull == null)
return true;
- if (user != null && !_blocker.CanInteract(user.Value, pullableUid))
- return false;
-
var msg = new AttemptStopPullingEvent(user);
RaiseLocalEvent(pullableUid, msg, true);