diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 48b022a65f3..1ac341db260 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1272,7 +1272,7 @@
ads_list = list("We like plants!","Don't you want some?","The greenest thumbs ever.","We like big plants.","Soft soil...")
icon_state = "nutri"
icon_deny = "nutri-deny"
- products = list(/obj/item/reagent_containers/glass/bottle/nutrient/ez = 30,/obj/item/reagent_containers/glass/bottle/nutrient/l4z = 20,/obj/item/reagent_containers/glass/bottle/nutrient/rh = 10,/obj/item/reagent_containers/spray/pestspray = 20,
+ products = list(/obj/item/reagent_containers/glass/bottle/nutrient/ez = 20,/obj/item/reagent_containers/glass/bottle/nutrient/l4z = 13,/obj/item/reagent_containers/glass/bottle/nutrient/rh = 6,/obj/item/reagent_containers/spray/pestspray = 20,
/obj/item/reagent_containers/syringe = 5,/obj/item/storage/bag/plants = 5,/obj/item/cultivator = 3,/obj/item/shovel/spade = 3,/obj/item/plant_analyzer = 4)
contraband = list(/obj/item/reagent_containers/glass/bottle/ammonia = 10,/obj/item/reagent_containers/glass/bottle/diethylamine = 5)
refill_canister = /obj/item/vending_refill/hydronutrients
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 7d59bd3360b..d5c7744eb4a 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -27,10 +27,7 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 10
-
-/obj/item/reagent_containers/spray/weedspray/New()
- ..()
- reagents.add_reagent("atrazine", 100)
+ list_reagents = list("atrazine" = 100)
/obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user)
user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
@@ -49,10 +46,7 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 10
-
-/obj/item/reagent_containers/spray/pestspray/New()
- ..()
- reagents.add_reagent("pestkiller", 100)
+ list_reagents = list("pestkiller" = 100)
/obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user)
user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.")
@@ -222,79 +216,112 @@
/obj/item/reagent_containers/glass/bottle/nutrient
- name = "bottle of nutrient"
+ name = "jug of nutrient"
+ desc = "A decent sized plastic jug."
icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
- volume = 50
+ icon_state = "plastic_jug"
+ item_state = "plastic_jug"
w_class = WEIGHT_CLASS_TINY
amount_per_transfer_from_this = 10
- possible_transfer_amounts = list(1,2,5,10,15,25,50)
+ possible_transfer_amounts = list(1,2,5,10,20,40,80)
+ container_type = OPENCONTAINER
+ volume = 80
+ hitsound = 'sound/weapons/jug_empty_impact.ogg'
+ throwhitsound = 'sound/weapons/jug_empty_impact.ogg'
+ force = 0.2
+ throwforce = 0.2
/obj/item/reagent_containers/glass/bottle/nutrient/New()
+ ..()
+ add_lid()
+ pixel_x = rand(-5, 5)
+ pixel_y = rand(-5, 5)
+
+/obj/item/reagent_containers/glass/bottle/nutrient/on_reagent_change()
+ . = ..()
+ update_icon()
+ if(reagents.total_volume)
+ hitsound = 'sound/weapons/jug_filled_impact.ogg'
+ throwhitsound = 'sound/weapons/jug_filled_impact.ogg'
+ else
+ hitsound = 'sound/weapons/jug_empty_impact.ogg'
+ throwhitsound = 'sound/weapons/jug_empty_impact.ogg'
+
+/obj/item/reagent_containers/glass/bottle/nutrient/update_icon()
+ cut_overlays()
+
+ if(reagents.total_volume)
+ var/image/filling = image('icons/obj/reagentfillings.dmi', src, "plastic_jug10")
+
+ var/percent = round((reagents.total_volume / volume) * 100)
+ switch(percent)
+ if(0 to 10)
+ filling.icon_state = "plastic_jug-10"
+ if(11 to 29)
+ filling.icon_state = "plastic_jug25"
+ if(30 to 45)
+ filling.icon_state = "plastic_jug40"
+ if(46 to 61)
+ filling.icon_state = "plastic_jug55"
+ if(62 to 77)
+ filling.icon_state = "plastic_jug70"
+ if(78 to 92)
+ filling.icon_state = "plastic_jug85"
+ if(93 to INFINITY)
+ filling.icon_state = "plastic_jug100"
+
+ filling.icon += mix_color_from_reagents(reagents.reagent_list)
+ add_overlay(filling)
+
+ if(!is_open_container())
+ add_overlay("lid_jug")
+
+
+/obj/item/reagent_containers/glass/bottle/nutrient/ez
+ name = "jug of E-Z-Nutrient"
+ desc = "Contains a fertilizer that causes mild mutations with each harvest."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "plastic_jug_ez"
+ list_reagents = list("eznutriment" = 80)
+
+/obj/item/reagent_containers/glass/bottle/nutrient/l4z
+ name = "jug of Left 4 Zed"
+ desc = "Contains a fertilizer that limits plant yields to no more than one and causes significant mutations in plants."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "plastic_jug_l4z"
+ list_reagents = list("left4zednutriment" = 80)
+
+/obj/item/reagent_containers/glass/bottle/nutrient/rh
+ name = "jug of Robust Harvest"
+ desc = "Contains a fertilizer that increases the yield of a plant by 30% while causing no mutations."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "plastic_jug_rh"
+ list_reagents = list("robustharvestnutriment" = 80)
+
+/obj/item/reagent_containers/glass/bottle/nutrient/empty
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "plastic_jug"
+
+/obj/item/reagent_containers/glass/bottle/nutrient/killer
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "plastic_jug_k"
+ w_class = WEIGHT_CLASS_TINY
+
+/obj/item/reagent_containers/glass/bottle/nutrient/killer/New()
..()
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
-/obj/item/reagent_containers/glass/bottle/nutrient/ez
- name = "bottle of E-Z-Nutrient"
- desc = "Contains a fertilizer that causes mild mutations with each harvest."
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
-
-/obj/item/reagent_containers/glass/bottle/nutrient/ez/New()
- ..()
- reagents.add_reagent("eznutriment", 50)
-
-/obj/item/reagent_containers/glass/bottle/nutrient/l4z
- name = "bottle of Left 4 Zed"
- desc = "Contains a fertilizer that limits plant yields to no more than one and causes significant mutations in plants."
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle18"
-
-/obj/item/reagent_containers/glass/bottle/nutrient/l4z/New()
- ..()
- reagents.add_reagent("left4zednutriment", 50)
-
-/obj/item/reagent_containers/glass/bottle/nutrient/rh
- name = "bottle of Robust Harvest"
- desc = "Contains a fertilizer that increases the yield of a plant by 30% while causing no mutations."
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle15"
-
-/obj/item/reagent_containers/glass/bottle/nutrient/rh/New()
- ..()
- reagents.add_reagent("robustharvestnutriment", 50)
-
-/obj/item/reagent_containers/glass/bottle/nutrient/empty
- name = "bottle"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
-
-/obj/item/reagent_containers/glass/bottle/killer
- name = "bottle"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
- volume = 50
- w_class = WEIGHT_CLASS_TINY
- amount_per_transfer_from_this = 10
- possible_transfer_amounts = list(1,2,5,10,15,25,50)
-
-/obj/item/reagent_containers/glass/bottle/killer/weedkiller
- name = "bottle of weed killer"
+/obj/item/reagent_containers/glass/bottle/nutrient/killer/weedkiller
+ name = "jug of weed killer"
desc = "Contains a herbicide."
icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle19"
+ icon_state = "plastic_jug_wk"
+ list_reagents = list("atrazine" = 80)
-/obj/item/reagent_containers/glass/bottle/killer/weedkiller/New()
- ..()
- reagents.add_reagent("atrazine", 50)
-
-/obj/item/reagent_containers/glass/bottle/killer/pestkiller
- name = "bottle of pest spray"
+/obj/item/reagent_containers/glass/bottle/nutrient/killer/pestkiller
+ name = "jug of pest spray"
desc = "Contains a pesticide."
icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle20"
-
-/obj/item/reagent_containers/glass/bottle/killer/pestkiller/New()
- ..()
- reagents.add_reagent("pestkiller", 50)
+ icon_state = "plastic_jug_pk"
+ list_reagents = list("pestkiller" = 80)
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 1be8f11527d..d79a8030a59 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -744,6 +744,10 @@
to_chat(user, "[reagent_source] is empty.")
return 1
+ if(reagent_source.has_lid && !reagent_source.is_drainable()) //if theres a LID then cannot transfer reagents.
+ to_chat(user, "You need to open [O] first!")
+ return TRUE
+
var/list/trays = list(src)//makes the list just this in cases of syringes and compost etc
var/target = myseed ? myseed.plantname : src
var/visi_msg = ""
diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm
index f9a6f974dcf..2b65054f21f 100644
--- a/code/modules/reagents/chemistry/reagents/misc.dm
+++ b/code/modules/reagents/chemistry/reagents/misc.dm
@@ -603,7 +603,7 @@
name = "Left 4 Zed"
id = "left4zednutriment"
description = "Unstable nutriment that makes plants mutate more often than usual."
- color = "#1A1E4D" // RBG: 26, 30, 77
+ color = "#2A1680" // RBG: 42, 128, 22
tox_prob = 25
taste_description = "evolution"
diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm
index b015b75be2a..914fabbc752 100644
--- a/code/modules/reagents/chemistry/reagents/toxins.dm
+++ b/code/modules/reagents/chemistry/reagents/toxins.dm
@@ -1054,7 +1054,7 @@
id = "atrazine"
description = "A herbicidal compound used for destroying unwanted plants."
reagent_state = LIQUID
- color = "#17002D"
+ color = "#773E73" //RGB: 47 24 45
lethality = 2 //Atrazine, however, is definitely toxic
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 24a3e3b9e99..f5bc4a3274a 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -50,16 +50,25 @@
if(!QDELETED(src))
..()
+
+/obj/item/reagent_containers/proc/add_lid()
+ if(has_lid)
+ container_type ^= REFILLABLE | DRAINABLE
+ update_icon()
+
+/obj/item/reagent_containers/proc/remove_lid()
+ if(has_lid)
+ container_type |= REFILLABLE | DRAINABLE
+ update_icon()
+
/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
+ add_lid()
else
to_chat(usr, "You take the lid off [src].")
- container_type |= REFILLABLE | DRAINABLE
- update_icon()
- return
+ remove_lid()
/obj/item/reagent_containers/attack(mob/M, mob/user, def_zone)
if(user.a_intent == INTENT_HARM)
diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm
index b70771cb8d3..f01fc5303a9 100644
--- a/code/modules/research/designs/biogenerator_designs.dm
+++ b/code/modules/research/designs/biogenerator_designs.dm
@@ -88,7 +88,7 @@
id = "weed_killer"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
- build_path = /obj/item/reagent_containers/glass/bottle/killer/weedkiller
+ build_path = /obj/item/reagent_containers/glass/bottle/nutrient/killer/weedkiller
category = list("initial","Botany Chemicals")
/datum/design/pest_spray
@@ -96,12 +96,12 @@
id = "pest_spray"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
- build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller
+ build_path = /obj/item/reagent_containers/glass/bottle/nutrient/killer/pestkiller
category = list("initial","Botany Chemicals")
/datum/design/botany_bottle
- name = "Empty Bottle"
- id = "botany_bottle"
+ name = "Empty Jug"
+ id = "botany_jug"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 5)
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/empty
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index f007687d568..05d04330c38 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi
index 51e9b66ee30..c36fbf01876 100644
Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ
diff --git a/sound/weapons/jug_empty_impact.ogg b/sound/weapons/jug_empty_impact.ogg
new file mode 100644
index 00000000000..d78c1c5e554
Binary files /dev/null and b/sound/weapons/jug_empty_impact.ogg differ
diff --git a/sound/weapons/jug_filled_impact.ogg b/sound/weapons/jug_filled_impact.ogg
new file mode 100644
index 00000000000..05e2d364373
Binary files /dev/null and b/sound/weapons/jug_filled_impact.ogg differ