diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index c1212f9993..822f23f9d6 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -67,7 +67,7 @@ namespace Content.Shared.Cuffs SubscribeLocalEvent(OnUnequipAttempt); SubscribeLocalEvent(OnBeingPulledAttempt); SubscribeLocalEvent>(AddUncuffVerb); - SubscribeLocalEvent(OnCuffableDoAfter); + SubscribeLocalEvent>(OnCuffableDoAfter); SubscribeLocalEvent(OnPull); SubscribeLocalEvent(OnPull); SubscribeLocalEvent(CheckAct); @@ -78,7 +78,7 @@ namespace Content.Shared.Cuffs SubscribeLocalEvent(OnCuffAfterInteract); SubscribeLocalEvent(OnCuffMeleeHit); - SubscribeLocalEvent(OnAddCuffDoAfter); + SubscribeLocalEvent>(OnAddCuffDoAfter); } @@ -223,15 +223,16 @@ namespace Content.Shared.Cuffs args.Verbs.Add(verb); } - private void OnCuffableDoAfter(EntityUid uid, CuffableComponent component, DoAfterEvent args) + private void OnCuffableDoAfter(EntityUid uid, CuffableComponent component, DoAfterEvent args) { + component.Uncuffing = false; + if (args.Args.Target is not { } target || args.Args.Used is not { } used) return; if (args.Handled) return; args.Handled = true; - component.Uncuffing = false; Dirty(component); var user = args.Args.User; @@ -271,14 +272,15 @@ namespace Content.Shared.Cuffs args.Handled = true; } - private void OnAddCuffDoAfter(EntityUid uid, HandcuffComponent component, DoAfterEvent args) + private void OnAddCuffDoAfter(EntityUid uid, HandcuffComponent component, DoAfterEvent args) { var user = args.Args.User; - var target = args.Args.Target!.Value; - if (!TryComp(target, out var cuffable)) + if (!TryComp(args.Args.Target, out var cuffable)) return; + var target = args.Args.Target.Value; + if (args.Handled) return; args.Handled = true; @@ -494,7 +496,7 @@ namespace Content.Shared.Cuffs handcuffComponent.Cuffing = true; if (_net.IsServer) - _doAfter.DoAfter(doAfterEventArgs); + _doAfter.DoAfter(doAfterEventArgs, new AddCuffDoAfter()); } /// @@ -572,7 +574,7 @@ namespace Content.Shared.Cuffs cuffable.Uncuffing = true; Dirty(cuffable); if (_net.IsServer) - _doAfter.DoAfter(doAfterEventArgs); + _doAfter.DoAfter(doAfterEventArgs, new UnCuffDoAfter()); } public void Uncuff(EntityUid target, EntityUid user, EntityUid cuffsToRemove, CuffableComponent? cuffable = null, HandcuffComponent? cuff = null) @@ -664,5 +666,13 @@ namespace Content.Shared.Cuffs { return component.Container.ContainedEntities; } + + private struct UnCuffDoAfter + { + } + + private struct AddCuffDoAfter + { + } } }