using Content.Shared.Damage;
using Content.Shared.DoAfter;
using Content.Shared.DragDrop;
+using Content.Shared.Hands.Components;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Components;
private void OnBonkDoAfter(EntityUid uid, Components.BonkableComponent component, BonkDoAfterEvent args)
{
- if (args.Handled || args.Cancelled || args.Args.Target == null)
+ if (args.Handled || args.Cancelled || args.Args.Target == null || args.Args.Target != args.Args.User)
return;
TryBonk(args.Args.User, uid, component);
private void OnDragDrop(EntityUid uid, Components.BonkableComponent component, ref DragDropTargetEvent args)
{
- if (args.Handled || !HasComp<ClumsyComponent>(args.Dragged))
+ if (args.Handled || !HasComp<ClumsyComponent>(args.Dragged) || !HasComp<HandsComponent>(args.User))
return;
var doAfterArgs = new DoAfterArgs(EntityManager, args.Dragged, component.BonkDelay, new BonkDoAfterEvent(), uid, target: uid)
if (args.Handled)
return;
+
var canVault = args.User == args.Dragged
? CanVault(component, args.User, uid, out _)
: CanVault(component, args.User, args.Dragged, uid, out _);
args.CanDrop = canVault;
+
+ if (!HasComp<HandsComponent>(args.User))
+ args.CanDrop = false;
+
args.Handled = true;
}
private void OnClimbableDragDrop(EntityUid uid, ClimbableComponent component, ref DragDropTargetEvent args)
{
- // definitely a better way to check if two entities are equal
- // but don't have computer access and i have to do this without syntax
- if (args.Handled || args.User != args.Dragged && !HasComp<HandsComponent>(args.User))
+ if (args.Handled)
return;
TryClimb(args.User, args.Dragged, uid, out _, component);