diff --git a/code/modules/detective_work/footprints_and_rag.dm b/code/modules/detective_work/footprints_and_rag.dm
index 31f9e66255b..b3c45c0f4a1 100644
--- a/code/modules/detective_work/footprints_and_rag.dm
+++ b/code/modules/detective_work/footprints_and_rag.dm
@@ -21,6 +21,7 @@
can_be_placed_into = null
flags = NOBLUDGEON
container_type = OPENCONTAINER
+ has_lid = FALSE
var/wipespeed = 30
/obj/item/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag)
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 258bf98468d..6d58e42d539 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -10,6 +10,7 @@
var/list/list_reagents = null
var/spawned_disease = null
var/disease_amount = 20
+ var/has_lid = FALSE // Used for containers where we want to put lids on and off
/obj/item/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this
set name = "Set transfer amount"
@@ -49,6 +50,14 @@
..()
/obj/item/reagent_containers/attack_self(mob/user)
+ if(has_lid)
+ if(is_open_container())
+ to_chat(usr, "You put the lid on [src].")
+ container_type ^= REFILLABLE | DRAINABLE
+ else
+ to_chat(usr, "You take the lid off [src].")
+ container_type |= REFILLABLE | DRAINABLE
+ update_icon()
return
// this prevented pills, food, and other things from being picked up by bags.
diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm
index 20687a6b98c..23ec5f5cadb 100644
--- a/code/modules/reagents/reagent_containers/glass_containers.dm
+++ b/code/modules/reagents/reagent_containers/glass_containers.dm
@@ -12,6 +12,7 @@
possible_transfer_amounts = list(5,10,15,25,30,50)
volume = 50
container_type = OPENCONTAINER
+ has_lid = TRUE
var/label_text = ""
// the fucking asshole who designed this can go die in a fire - Iamgoofball
@@ -55,16 +56,6 @@
if(!is_open_container())
to_chat(user, "Airtight lid seals it completely.")
-/obj/item/reagent_containers/glass/attack_self()
- ..()
- if(is_open_container())
- to_chat(usr, "You put the lid on [src].")
- container_type ^= REFILLABLE | DRAINABLE
- else
- to_chat(usr, "You take the lid off [src].")
- container_type |= REFILLABLE | DRAINABLE
- update_icon()
-
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
if(!proximity)
return