Handcuffs don't handle interaction events if target isn't cuffable. (#17050)
This commit is contained in:
committed by
GitHub
parent
6434522d66
commit
b4803b0bbf
@@ -255,8 +255,8 @@ namespace Content.Shared.Cuffs
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TryCuffing(args.User, target, uid, component);
|
var result = TryCuffing(args.User, target, uid, component);
|
||||||
args.Handled = true;
|
args.Handled = result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCuffMeleeHit(EntityUid uid, HandcuffComponent component, MeleeHitEvent args)
|
private void OnCuffMeleeHit(EntityUid uid, HandcuffComponent component, MeleeHitEvent args)
|
||||||
@@ -422,10 +422,11 @@ namespace Content.Shared.Cuffs
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TryCuffing(EntityUid user, EntityUid target, EntityUid handcuff, HandcuffComponent? handcuffComponent = null, CuffableComponent? cuffable = null)
|
/// <returns>False if the target entity isn't cuffable.</returns>
|
||||||
|
public bool TryCuffing(EntityUid user, EntityUid target, EntityUid handcuff, HandcuffComponent? handcuffComponent = null, CuffableComponent? cuffable = null)
|
||||||
{
|
{
|
||||||
if (!Resolve(handcuff, ref handcuffComponent) || !Resolve(target, ref cuffable, false))
|
if (!Resolve(handcuff, ref handcuffComponent) || !Resolve(target, ref cuffable, false))
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
if (!TryComp<HandsComponent?>(target, out var hands))
|
if (!TryComp<HandsComponent?>(target, out var hands))
|
||||||
{
|
{
|
||||||
@@ -434,7 +435,7 @@ namespace Content.Shared.Cuffs
|
|||||||
_popup.PopupEntity(Loc.GetString("handcuff-component-target-has-no-hands-error",
|
_popup.PopupEntity(Loc.GetString("handcuff-component-target-has-no-hands-error",
|
||||||
("targetName", Identity.Name(target, EntityManager, user))), user, user);
|
("targetName", Identity.Name(target, EntityManager, user))), user, user);
|
||||||
}
|
}
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cuffable.CuffedHandCount >= hands.Count)
|
if (cuffable.CuffedHandCount >= hands.Count)
|
||||||
@@ -444,7 +445,7 @@ namespace Content.Shared.Cuffs
|
|||||||
_popup.PopupEntity(Loc.GetString("handcuff-component-target-has-no-free-hands-error",
|
_popup.PopupEntity(Loc.GetString("handcuff-component-target-has-no-free-hands-error",
|
||||||
("targetName", Identity.Name(target, EntityManager, user))), user, user);
|
("targetName", Identity.Name(target, EntityManager, user))), user, user);
|
||||||
}
|
}
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var cuffTime = handcuffComponent.CuffTime;
|
var cuffTime = handcuffComponent.CuffTime;
|
||||||
@@ -464,7 +465,7 @@ namespace Content.Shared.Cuffs
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (!_doAfter.TryStartDoAfter(doAfterEventArgs))
|
if (!_doAfter.TryStartDoAfter(doAfterEventArgs))
|
||||||
return;
|
return true;
|
||||||
|
|
||||||
if (_net.IsServer)
|
if (_net.IsServer)
|
||||||
{
|
{
|
||||||
@@ -487,6 +488,7 @@ namespace Content.Shared.Cuffs
|
|||||||
}
|
}
|
||||||
|
|
||||||
_audio.PlayPredicted(handcuffComponent.StartCuffSound, handcuff, user);
|
_audio.PlayPredicted(handcuffComponent.StartCuffSound, handcuff, user);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user