diff --git a/Content.Shared/Climbing/Systems/BonkSystem.cs b/Content.Shared/Climbing/Systems/BonkSystem.cs index b18d54cf78..5eff90b09d 100644 --- a/Content.Shared/Climbing/Systems/BonkSystem.cs +++ b/Content.Shared/Climbing/Systems/BonkSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Climbing.Components; 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; @@ -35,7 +36,7 @@ public sealed partial class BonkSystem : EntitySystem 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); @@ -76,7 +77,7 @@ public sealed partial class BonkSystem : EntitySystem private void OnDragDrop(EntityUid uid, Components.BonkableComponent component, ref DragDropTargetEvent args) { - if (args.Handled || !HasComp(args.Dragged)) + if (args.Handled || !HasComp(args.Dragged) || !HasComp(args.User)) return; var doAfterArgs = new DoAfterArgs(EntityManager, args.Dragged, component.BonkDelay, new BonkDoAfterEvent(), uid, target: uid) diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 6f6672e951..081fb7fd8c 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -163,11 +163,16 @@ public sealed partial class ClimbSystem : VirtualController 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(args.User)) + args.CanDrop = false; + args.Handled = true; } @@ -189,9 +194,7 @@ public sealed partial class ClimbSystem : VirtualController 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(args.User)) + if (args.Handled) return; TryClimb(args.User, args.Dragged, uid, out _, component);