diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index e7c6f9af5a5..bf72648ae02 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -518,6 +518,11 @@
to_chat(user, "Trying to place a loaded tray into [src] was a bad idea.")
return
+ if(istype(W, /obj/item/hand_labeler))
+ var/obj/item/hand_labeler/HL = W
+ if(HL.mode == 1)
+ return
+
W.add_fingerprint(user)
return handle_item_insertion(W)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 53649db0d7e..0c32c84693d 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -336,6 +336,12 @@
)
else
attack_hand(user)
+ else if(istype(W, /obj/item/hand_labeler))
+ var/obj/item/hand_labeler/HL = W
+ if (HL.mode == 1)
+ return
+ else
+ attack_hand(user)
else
attack_hand(user)
return
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 c13acc54449..d44317fac55 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
@@ -148,6 +148,12 @@
playsound(loc, W.usesound, 50, 1)
wrenched = 1
anchored = 1
+ else if(istype(W, /obj/item/hand_labeler))
+ var/obj/item/hand_labeler/HL = W
+ if (HL.mode == 1)
+ return
+ else
+ togglelock(user)
else if(!opened)
if(!broken && istype(W,/obj/item/material/twohanded/chainsaw))
var/obj/item/material/twohanded/chainsaw/ChainSawVar = W
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index b06443463b8..aa5d71782ab 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -115,6 +115,12 @@
playsound(loc, 'sound/items/wirecutter.ogg', 100, 1)
rigged = 0
return
+ else if(istype(W, /obj/item/hand_labeler))
+ var/obj/item/hand_labeler/HL = W
+ if (HL.mode == 1)
+ return
+ else
+ attack_hand(user)
else return attack_hand(user)
/obj/structure/closet/crate/ex_act(severity)
@@ -340,7 +346,14 @@
return ..()
if(istype(W, /obj/item/melee/energy/blade))
emag_act(INFINITY, user)
- if(!opened)
+ if(istype(W, /obj/item/hand_labeler))
+ var/obj/item/hand_labeler/HL = W
+ if (HL.mode == 1)
+ return
+ else if(!opened)
+ togglelock(user)
+ return
+ else if(!opened)
togglelock(user)
return
return ..()
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 3cf5b02e2f5..d16e5437954 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -49,6 +49,8 @@
return
if(A == loc) // if placing the labeller into something (e.g. backpack)
return // don't set a label
+ if(loc != user)
+ return
if(!labels_left)
to_chat(user, "No labels left.")
diff --git a/html/changelogs/johnwildkins-labeler.yml b/html/changelogs/johnwildkins-labeler.yml
new file mode 100644
index 00000000000..d5387a40904
--- /dev/null
+++ b/html/changelogs/johnwildkins-labeler.yml
@@ -0,0 +1,6 @@
+author: JohnWildkins
+
+delete-after: True
+
+changes:
+ - tweak: "Hand labelers set 'on' will no longer go inside storage containers (backpacks, closets, crates), and will instead label them."