diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index b86c58ffcfb..08f999f8e68 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -948,4 +948,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
return "on [user.get_pronoun("his")] [ear_text] ear"
/obj/item/proc/get_mask_examine_text(var/mob/user)
- return "on [user.get_pronoun("his")] face"
\ No newline at end of file
+ return "on [user.get_pronoun("his")] face"
+
+/obj/item/proc/should_equip() // when you press E with an empty hand, will this item be pulled from suit storage / back slot and put into your hand
+ return FALSE
diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm
index 2262c5b787d..5f285eb7473 100644
--- a/code/game/objects/items/weapons/material/material_weapons.dm
+++ b/code/game/objects/items/weapons/material/material_weapons.dm
@@ -36,6 +36,9 @@
if(!isnull(matter[material_type]))
matter[material_type] *= force_divisor // May require a new var instead.
+/obj/item/material/should_equip()
+ return TRUE
+
/obj/item/material/get_material()
return material
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index b6ec13ff74b..e453edda5d8 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -5,6 +5,9 @@
slot_r_hand_str = 'icons/mob/items/weapons/righthand_melee.dmi'
)
+/obj/item/melee/should_equip()
+ return TRUE
+
/obj/item/melee/chainofcommand
name = "chain of command"
desc = "A tool used by great men to placate the frothing masses."
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 6bffda47def..15fad8f1b8e 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -11,7 +11,16 @@ This saves us from having to call add_fingerprint() any time something is put in
var/mob/living/carbon/human/H = src
var/obj/item/I = H.get_active_hand()
if(!I)
- to_chat(H, "You are not holding anything to equip.")
+ if(istype(s_store) && s_store.should_equip())
+ var/obj/item/S = s_store
+ H.remove_from_mob(S)
+ H.put_in_active_hand(S)
+ return
+ if(istype(back) && back.should_equip())
+ var/obj/item/B = back
+ H.remove_from_mob(B)
+ H.put_in_active_hand(B)
+ return
return
if(H.equip_to_appropriate_slot(I))
if(hand)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 4eb9f5ef417..d6fdcfdb6f3 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -154,6 +154,9 @@
queue_icon_update()
+/obj/item/gun/should_equip()
+ return TRUE
+
/obj/item/gun/update_icon()
..()
underlays.Cut()
@@ -959,4 +962,4 @@
if(no_clear)
. = ""
. += "Burst: [burst]
"
- . += "Reliability: [reliability]
"
\ No newline at end of file
+ . += "Reliability: [reliability]
"
diff --git a/html/changelogs/geeves-equipomatic.yml b/html/changelogs/geeves-equipomatic.yml
new file mode 100644
index 00000000000..cb29d55d18d
--- /dev/null
+++ b/html/changelogs/geeves-equipomatic.yml
@@ -0,0 +1,6 @@
+author: Geeves
+
+delete-after: True
+
+changes:
+ - rscadd: "Hitting equip with an empty hand will now pull an eligible weapon out of your suit slot, if it doesn't find one, then it will pull from the back slot."
\ No newline at end of file