diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 5d6caee5e21..b743b97b567 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -362,8 +362,8 @@
user << "\red Someone's already washing here."
return
- if (istype(O, /obj/item/weapon/reagent_containers))
- var/obj/item/weapon/reagent_containers/RG = O
+ var/obj/item/weapon/reagent_containers/RG = O
+ if (istype(RG) && RG.is_open_container())
RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this))
user.visible_message("\blue [user] fills \the [RG] using \the [src].","\blue You fill \the [RG] using \the [src].")
return
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 822d4e65fa6..3fa82adfcfa 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -72,9 +72,9 @@
say("Nom")
/mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
+ var/obj/item/weapon/reagent_containers/glass/G = O
+ if(stat == CONSCIOUS && istype(G) && G.is_open_container())
user.visible_message("[user] milks [src] using \the [O].")
- var/obj/item/weapon/reagent_containers/glass/G = O
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume)
user << "\red The [O] is full."
@@ -112,9 +112,9 @@
..()
/mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
+ var/obj/item/weapon/reagent_containers/glass/G = O
+ if(stat == CONSCIOUS && istype(G) && G.is_open_container())
user.visible_message("[user] milks [src] using \the [O].")
- var/obj/item/weapon/reagent_containers/glass/G = O
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume)
user << "\red The [O] is full."
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 5d1571a1996..3f91f205e0f 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -15,7 +15,7 @@
var/max_energy = 100
var/amount = 30
var/accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname.
- var/beaker = null
+ var/atom/beaker = null
var/recharged = 0
var/hackedcheck = 0
var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine",
@@ -132,7 +132,7 @@
amount = 100
if(href_list["dispense"])
- if (dispensable_reagents.Find(href_list["dispense"]) && beaker != null)
+ if (dispensable_reagents.Find(href_list["dispense"]) && beaker != null && beaker.is_open_container())
var/obj/item/weapon/reagent_containers/B = src.beaker
var/datum/reagents/R = B.reagents
var/space = R.maximum_volume - R.total_volume