diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs
index 7bc0a8025f..101d206acd 100644
--- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs
+++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs
@@ -197,12 +197,14 @@ public abstract partial class SharedHandsSystem : EntitySystem
///
/// Puts an item into any hand, preferring the active hand, or puts it on the floor.
///
+ /// If true, the item will be dropped near the owner of the hand if possible.
public void PickupOrDrop(
EntityUid? uid,
EntityUid entity,
bool checkActionBlocker = true,
bool animateUser = false,
bool animate = true,
+ bool dropNear = false,
HandsComponent? handsComp = null,
ItemComponent? item = null)
{
@@ -214,6 +216,11 @@ public abstract partial class SharedHandsSystem : EntitySystem
// TODO make this check upwards for any container, and parent to that.
// Currently this just checks the direct parent, so items can still teleport through containers.
ContainerSystem.AttachParentToContainerOrGrid((entity, Transform(entity)));
+
+ if (dropNear && uid.HasValue)
+ {
+ TransformSystem.PlaceNextTo(entity, uid.Value);
+ }
}
}
diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs
index 94d839a420..9ddcb423b4 100644
--- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs
+++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs
@@ -55,7 +55,7 @@ public sealed partial class EncryptionKeySystem : EntitySystem
_container.EmptyContainer(component.KeyContainer, reparent: false);
foreach (var ent in contained)
{
- _hands.PickupOrDrop(args.User, ent);
+ _hands.PickupOrDrop(args.User, ent, dropNear: true);
}
if (!_timing.IsFirstTimePredicted)