Buckling an entity requires a do-after (#29621)

* Buckling an entity requires a do-after

* Works but feels like bad code?

* Cleanup

---------

Co-authored-by: plykiya <plykiya@protonmail.com>
This commit is contained in:
Plykiya
2024-08-09 08:43:02 -07:00
committed by GitHub
parent 873c314aec
commit 1e824d704f
5 changed files with 83 additions and 2 deletions

View File

@@ -1,4 +1,6 @@
using Content.Shared.Buckle.Components;
using Content.Shared.Buckle.Components;
using Content.Shared.Cuffs.Components;
using Content.Shared.DoAfter;
using Content.Shared.DragDrop;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
@@ -32,7 +34,24 @@ public abstract partial class SharedBuckleSystem
if (!StrapCanDragDropOn(uid, args.User, uid, args.Dragged, component))
return;
args.Handled = TryBuckle(args.Dragged, args.User, uid, popup: false);
if (args.Dragged == args.User)
{
if (!TryComp(args.User, out BuckleComponent? buckle))
return;
args.Handled = TryBuckle(args.User, args.User, uid, buckle);
}
else
{
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.BuckleDoafterTime, new BuckleDoAfterEvent(), args.User, args.Dragged, uid)
{
BreakOnMove = true,
BreakOnDamage = true,
AttemptFrequency = AttemptFrequency.EveryTick
};
_doAfter.TryStartDoAfter(doAfterArgs);
}
}
private bool StrapCanDragDropOn(