diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index a929ff7201a..4aaae90a9a1 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -191,7 +191,8 @@
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(src.opened)
if(istype(W, /obj/item/weapon/grab))
- src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
+ var/obj/item/weapon/grab/G = W
+ src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet
if(istype(W,/obj/item/tk_grab))
return 0
if(istype(W, /obj/item/weapon/weldingtool))
@@ -206,6 +207,8 @@
return
if(isrobot(user))
return
+ if(W.loc != user) // This should stop mounted modules ending up outside the module.
+ return
usr.drop_item()
if(W)
W.loc = src.loc
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 09810842d40..a3b9f399281 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -66,12 +66,15 @@
/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(src.opened)
if(istype(W, /obj/item/weapon/grab))
+ var/obj/item/weapon/grab/G = W
if(src.large)
- src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
+ src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet
else
- user << "The locker is too small to stuff [W:affecting] into!"
+ user << "The locker is too small to stuff [G.affecting] into!"
if(isrobot(user))
return
+ if(W.loc != user) // This should stop mounted modules ending up outside the module.
+ return
user.drop_item()
if(W)
W.loc = src.loc
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 3f6f321129b..4c233f24ef5 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -70,6 +70,8 @@
if(opened)
if(isrobot(user))
return
+ if(W.loc != user) // This should stop mounted modules ending up outside the module.
+ return
user.drop_item()
if(W)
W.loc = src.loc