diff --git a/baystation12.dme b/baystation12.dme
index bd47d9247ac..88f0457b33e 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -293,6 +293,7 @@
#include "code\game\machinery\deployable.dm"
#include "code\game\machinery\door_control.dm"
#include "code\game\machinery\doppler_array.dm"
+#include "code\game\machinery\drying_rack.dm"
#include "code\game\machinery\flasher.dm"
#include "code\game\machinery\floodlight.dm"
#include "code\game\machinery\Freezer.dm"
diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm
index b2854f21d36..1692be43c97 100644
--- a/code/defines/obj/hydro.dm
+++ b/code/defines/obj/hydro.dm
@@ -1111,6 +1111,107 @@
del(src)
+/obj/item/seeds/coffee_arabica_seed
+ name = "pack of coffee arabica seeds"
+ desc = "These seeds grow into coffee arabica bushes."
+ icon_state = "seed-coffeea"
+ species = "coffeea"
+ plantname = "Coffee Arabica Bush"
+ productname = /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_arabica
+ lifespan = 30
+ endurance = 20
+ maturation = 5
+ production = 5
+ yield = 5
+ potency = 10
+ plant_type = 0
+ growthstages = 5
+// mutatelist = list(/obj/item/seeds/coffee_robusta_seed)
+
+/obj/item/seeds/coffee_robusta_seed
+ name = "pack of coffee robusta seeds"
+ desc = "These seeds grow into coffee robusta bushes."
+ icon_state = "seed-coffeer"
+ species = "coffeer"
+ plantname = "Coffee Robusta Bush"
+ productname = /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_robusta
+ lifespan = 20
+ endurance = 15
+ maturation = 5
+ production = 5
+ yield = 5
+ potency = 10
+ plant_type = 0
+ growthstages = 5
+
+/obj/item/seeds/tobacco_seed
+ name = "pack of tobacco seeds"
+ desc = "These seeds grow into tobacco plants."
+ icon_state = "seed-tobacco"
+ species = "tobacco"
+ plantname = "Tobacco Plant"
+ productname = /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco
+ lifespan = 20
+ endurance = 15
+ maturation = 5
+ production = 5
+ oneharvest = 1
+ yield = 10
+ potency = 10
+ plant_type = 0
+ growthstages = 3
+// mutatelist = list(/obj/item/seeds/tobacco_space_seed)
+
+/obj/item/seeds/tobacco_space_seed
+ name = "pack of space tobacco seeds"
+ desc = "These seeds grow into space tobacco plants."
+ icon_state = "seed-stobacco"
+ species = "stobacco"
+ plantname = "Space Tobacco Plant"
+ productname = /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco_space
+ lifespan = 20
+ endurance = 15
+ maturation = 5
+ production = 5
+ oneharvest = 1
+ yield = 10
+ potency = 10
+ plant_type = 0
+ growthstages = 3
+
+/obj/item/seeds/tea_aspera_seed
+ name = "pack of tea aspera seeds"
+ desc = "These seeds grow into tea plants."
+ icon_state = "seed-teaaspera"
+ species = "teaaspera"
+ plantname = "Tea Aspera Plant"
+ productname = /obj/item/weapon/reagent_containers/food/snacks/grown/tea_aspera
+ lifespan = 20
+ endurance = 15
+ maturation = 5
+ production = 5
+ yield = 5
+ potency = 10
+ plant_type = 0
+ growthstages = 5
+// mutatelist = list(/obj/item/seeds/tea_astra_seed)
+
+/obj/item/seeds/tea_astra_seed
+ name = "pack of tea astra seeds"
+ desc = "These seeds grow into tea plants."
+ icon_state = "seed-teaastra"
+ species = "teaastra"
+ plantname = "Tea Astra Plant"
+ productname = /obj/item/weapon/reagent_containers/food/snacks/grown/tea_astra
+ lifespan = 20
+ endurance = 15
+ maturation = 5
+ production = 5
+ yield = 5
+ potency = 10
+ plant_type = 0
+ growthstages = 5
+
/* // Maybe one day when I get it to work like a grenade which exlodes gibs.
/obj/item/seeds/gibtomatoseed
diff --git a/code/game/machinery/drying_rack.dm b/code/game/machinery/drying_rack.dm
new file mode 100644
index 00000000000..d776fc3bef3
--- /dev/null
+++ b/code/game/machinery/drying_rack.dm
@@ -0,0 +1,105 @@
+/obj/machinery/drying_rack
+ name = "drying rack"
+ desc = "A large rack with a heater built into the base. Used for drying things out."
+ icon = 'icons/obj/hydroponics.dmi'
+ icon_state = "drying_rack"
+ layer = 2.9
+ density = 1
+ anchored = 1
+ use_power = 1
+ idle_power_usage = 5
+ active_power_usage = 50
+ var/list/accepted = list()
+ var/running = 0
+ var/volume = 100
+
+/obj/machinery/drying_rack/New()
+ ..()
+ flags |= NOREACT
+ create_reagents(volume)
+ accepted = list(/obj/item/weapon/reagent_containers/food/snacks/grown/coffee_arabica,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_robusta,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco_space,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tea_aspera,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tea_astra,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
+ /obj/item/weapon/reagent_containers/food/snacks/meat,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/grapes,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes)
+
+
+
+/obj/machinery/drying_rack/attackby(var/obj/item/W as obj, var/mob/user as mob)
+ if(is_type_in_list(W,accepted))
+ if(!running)
+ if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meat))
+ user.u_equip(W)
+ del(W)
+ user << "You add the meat to the drying rack."
+ src.running = 1
+ use_power = 2
+ icon_state = "drying_rack_on"
+ sleep(60)
+ icon_state = "drying_rack"
+ new /obj/item/weapon/reagent_containers/food/snacks/sosjerky(src.loc)
+ use_power = 1
+ src.running = 0
+ return
+ if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes))
+ user.u_equip(W)
+ del(W)
+ user << "You add the grapes to the drying rack."
+ src.running = 1
+ use_power = 2
+ icon_state = "drying_rack_on"
+ sleep(60)
+ icon_state = "drying_rack"
+ new /obj/item/weapon/reagent_containers/food/snacks/no_raisin(src.loc)
+ use_power = 1
+ src.running = 0
+ return
+ if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes))
+ user.u_equip(W)
+ del(W)
+ user << "You add the green grapes to the drying rack."
+ src.running = 1
+ use_power = 2
+ icon_state = "drying_rack_on"
+ sleep(60)
+ icon_state = "drying_rack"
+ new /obj/item/weapon/reagent_containers/food/snacks/no_raisin(src.loc)
+ use_power = 1
+ src.running = 0
+ return
+ else
+ if(W:dry == 0)
+ var/J = W.type
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/B = W
+ B.reagents.trans_to(src, B.reagents.total_volume)
+ user << "You add the [W] to the drying rack."
+ user.u_equip(W)
+ del(W)
+ src.running = 1
+ use_power = 2
+ icon_state = "drying_rack_on"
+ sleep(60)
+ icon_state = "drying_rack"
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/D = new J(src.loc)
+ user << "\blue You finish drying the [D]"
+ D.icon_state = "[D.icon_state]_dry"
+ D.dry = 1
+ D.reagents.remove_any(50)
+ src.reagents.trans_to(D, src.reagents.total_volume)
+ use_power = 1
+ src.running = 0
+ return
+ else
+ user << "\red That has already been dried!"
+ else
+ user << "\red Please wait until the last item has dried."
+ else
+ user << "\red You cannot add that to the drying rack."
+
+
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index ea905a402b4..d1cc979f48c 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -666,10 +666,10 @@
product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
vend_delay = 34
icon_state = "cigs"
- products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4)
+ products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5)
contraband = list(/obj/item/weapon/lighter/zippo = 4)
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2)
- prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60)
+ prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20)
refill_canister = /obj/item/weapon/vending_refill/cigarette
/obj/machinery/vending/medical
@@ -752,7 +752,9 @@
/obj/item/seeds/sunflowerseed = 3,/obj/item/seeds/tomatoseed = 3,/obj/item/seeds/towermycelium = 3,/obj/item/seeds/wheatseed = 3,/obj/item/seeds/appleseed = 3,
/obj/item/seeds/poppyseed = 3,/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/whitebeetseed = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/limeseed = 3,
/obj/item/seeds/lemonseed = 3,/obj/item/seeds/orangeseed = 3,/obj/item/seeds/grassseed = 3,/obj/item/seeds/cocoapodseed = 3,
- /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3)
+ /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3,
+ /obj/item/seeds/coffee_arabica_seed = 3, /obj/item/seeds/tobacco_seed = 3,/obj/item/seeds/tea_aspera_seed = 3)
+
contraband = list(/obj/item/seeds/amanitamycelium = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/libertymycelium = 2,/obj/item/seeds/nettleseed = 2,
/obj/item/seeds/plumpmycelium = 2,/obj/item/seeds/reishimycelium = 2)
premium = list(/obj/item/weapon/reagent_containers/spray/waterflower = 1)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index e35bae22499..569ac38e277 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -132,6 +132,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("apiary", /obj/item/apiary, 10, time = 25, one_per_turf = 0, on_floor = 0), \
+ new/datum/stack_recipe("drying rack", /obj/machinery/drying_rack, 10, time = 15, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/wood
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 22427ede75a..5ac243744e6 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -191,7 +191,37 @@ CIGARETTE PACKETS ARE IN FANCY.DM
del(src)
return ..()
+/obj/item/clothing/mask/cigarette/joint
+ name = "joint"
+ desc = "A roll of ambrosium vulgaris wrapped in a thin paper. Dude."
+ icon_state = "spliffoff"
+ icon_on = "spliffon"
+ icon_off = "spliffoff"
+ type_butt = /obj/item/weapon/cigbutt/roach
+ throw_speed = 0.5
+ item_state = "spliffoff"
+ smoketime = 180
+ chem_volume = 50
+/obj/item/clothing/mask/cigarette/joint/New()
+ ..()
+ var/list/jointnames = list("joint","doobie","spliff","blunt")
+ name = pick(jointnames)
+ src.pixel_x = rand(-5.0, 5)
+ src.pixel_y = rand(-5.0, 5)
+
+/obj/item/clothing/mask/cigarette/joint/deus
+ desc = "A roll of ambrosium deus wrapped in a thin paper. Dude."
+
+/obj/item/weapon/cigbutt/roach
+ name = "roach"
+ desc = "A manky old roach."
+ icon_state = "roach"
+
+/obj/item/weapon/cigbutt/roach/New()
+ ..()
+ src.pixel_x = rand(-5.0, 5)
+ src.pixel_y = rand(-5.0, 5)
////////////
// CIGARS //
@@ -419,3 +449,55 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user.SetLuminosity(user.luminosity-2)
SetLuminosity(2)
return
+
+///////////
+//ROLLING//
+///////////
+obj/item/weapon/rollingpaper
+ name = "rolling paper"
+ desc = "A thin piece of paper used to make fine smokeables."
+ icon = 'icons/obj/cigarettes.dmi'
+ icon_state = "cig_paper"
+ w_class = 1
+
+
+obj/item/weapon/rollingpaperpack
+ name = "rolling paper pack"
+ desc = "A pack of NanoTrasen brand rolling papers."
+ icon = 'icons/obj/cigarettes.dmi'
+ icon_state = "cig_paper_pack"
+ w_class = 1
+ var/papers = 25
+
+obj/item/weapon/rollingpaperpack/attack_self(mob/user)
+ if(papers > 1)
+ var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper(user.loc)
+ user.put_in_inactive_hand(P)
+ user << "You take a paper out of the pack."
+ papers --
+ else
+ var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper(user.loc)
+ user.put_in_inactive_hand(P)
+ user << "You take the last paper out of the pack, and throw the pack away."
+ del(src)
+
+/obj/item/weapon/rollingpaperpack/MouseDrop(atom/over_object)
+ var/mob/M = usr
+ if(M.restrained() || M.stat)
+ return
+
+ if(over_object == M)
+ M.put_in_hands(src)
+
+ else if(istype(over_object, /obj/screen))
+ switch(over_object.name)
+ if("r_hand")
+ M.u_equip(src)
+ M.put_in_r_hand(src)
+ if("l_hand")
+ M.u_equip(src)
+ M.put_in_l_hand(src)
+
+/obj/item/weapon/rollingpaperpack/examine()
+ ..()
+ usr << "There are [src.papers] left"
\ No newline at end of file
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index a78b2e45746..c89fffa2285 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -897,6 +897,12 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/plastellium = list("plasticide" = 5),
+ //Grinder stuff, but only if dry
+ /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_arabica = list("coffeepowder" = 0),
+ /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_robusta = list("coffeepowder" = 0, "hyperzine" = 0),
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tea_aspera = list("teapowder" = 0),
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tea_astra = list("teapowder" = 0, "kelotane" = 0),
+
//archaeology!
/obj/item/weapon/rocksliver = list("ground_rock" = 50),
@@ -923,6 +929,16 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = list("poisonberryjuice" = 0),
)
+ var/list/dried_items = list(
+
+ //Grinder stuff, but only if dry
+ /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_arabica = list("coffeepowder" = 0),
+ /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_robusta = list("coffeepowder" = 0, "hyperzine" = 0),
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tea_aspera = list("teapowder" = 0),
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tea_astra = list("teapowder" = 0, "kelotane" = 0),
+ )
+
+
var/list/holdingitems = list()
@@ -974,6 +990,12 @@
src.updateUsrDialog()
return 0
+ if(is_type_in_list(O, dried_items))
+ if(!O:dry)
+ user << "You must dry that first!"
+ return 1
+
+
if (!is_type_in_list(O, blend_items) && !is_type_in_list(O, juice_items))
user << "Cannot refine into a reagent."
return 1
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 7c6c9f23319..dc010200d07 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -2465,6 +2465,21 @@ datum
..()
return
+ toxin/coffeepowder
+ name = "Coffee Grounds"
+ id = "coffeepowder"
+ description = "Finely ground coffee beans, used to make coffee."
+ reagent_state = SOLID
+ color = "#5B2E0D" // rgb: 91, 46, 13
+
+ toxin/teapowder
+ name = "Ground Tea Leaves"
+ id = "teapowder"
+ description = "Finely shredded tea leaves, used for making tea."
+ reagent_state = SOLID
+ color = "#7F8400" // rgb: 127, 132, 0
+
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////// DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index ea85ddadb15..bbc8a665380 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -1365,6 +1365,21 @@ datum
required_reagents = list("water" = 5, "coco" = 1)
result_amount = 5
+ coffee
+ name = "Coffee"
+ id = "coffee"
+ result = "coffee"
+ required_reagents = list("coffeepowder" = 1, "water" = 5)
+ result_amount = 5
+
+ tea
+ name = "Tea"
+ id = "tea"
+ result = "tea"
+ required_reagents = list("teapowder" = 1, "water" = 5)
+ result_amount = 5
+
+
soysauce
name = "Soy Sauce"
id = "soysauce"
diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm
index cfc10376d7c..05d3f9ec7ac 100644
--- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm
@@ -19,6 +19,7 @@
var/yield = 0
var/potency = -1
var/plant_type = 0
+ var/dry = 0
icon = 'icons/obj/harvest.dmi'
New(newloc,newpotency)
if (!isnull(newpotency))
@@ -340,6 +341,23 @@
reagents.add_reagent("toxin", 1+round(potency / 10, 1))
bitesize = 1+round(reagents.total_volume / 2, 1)
+/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris/attackby(var/obj/item/W as obj, var/mob/user as mob)
+ if(istype(W, /obj/item/weapon/rollingpaper))
+ if(src.dry == 1)
+ user.u_equip(W)
+ var/obj/item/clothing/mask/cigarette/joint/J = new /obj/item/clothing/mask/cigarette/joint(user.loc)
+ J.chem_volume = src.reagents.total_volume
+ src.reagents.trans_to(J, J.chem_volume)
+ del(W)
+ user.put_in_active_hand(J)
+ user << "\blue You roll the ambrosia vulgaris into a rolling paper."
+ del(src)
+ else
+ user << "\red You need to dry this first."
+ else
+ ..()
+
+
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus
seed = "/obj/item/seeds/ambrosiadeus"
name = "ambrosia deus branch"
@@ -357,6 +375,22 @@
reagents.add_reagent("space_drugs", 1+round(potency / 10, 1))
bitesize = 1+round(reagents.total_volume / 2, 1)
+/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus/attackby(var/obj/item/W as obj, var/mob/user as mob)
+ if(istype(W, /obj/item/weapon/rollingpaper))
+ if(src.dry == 1)
+ user.u_equip(W)
+ var/obj/item/clothing/mask/cigarette/joint/deus/J = new /obj/item/clothing/mask/cigarette/joint/deus(user.loc)
+ J.chem_volume = src.reagents.total_volume
+ src.reagents.trans_to(J, J.chem_volume)
+ del(W)
+ user.put_in_active_hand(J)
+ user << "\blue You roll the ambrosia deus into a rolling paper."
+ del(src)
+ else
+ user << "\red You need to dry this first."
+ else
+ ..()
+
/obj/item/weapon/reagent_containers/food/snacks/grown/apple
seed = "/obj/item/seeds/appleseed"
name = "apple"
@@ -1040,3 +1074,100 @@
src.visible_message("The [src.name] has been squashed, causing a distortion in space-time.","You hear a splat and a crackle.")
del(src)
return
+
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/coffee_arabica
+ seed = "/obj/item/seeds/coffee_arabica_seed"
+ name = "coffee arabica beans"
+ desc = "Dry them out to make coffee."
+ icon_state = "coffee_arabica"
+ potency = 20
+ New()
+ ..()
+ spawn(5) //So potency can be set in the proc that creates these crops
+ reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2))
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/coffee_robusta
+ seed = "/obj/item/seeds/coffee_robusta_seed"
+ name = "coffee robusta beans"
+ desc = "Dry them out to make coffee."
+ icon_state = "coffee_robusta"
+ potency = 20
+ New()
+ ..()
+ spawn(5) //So potency can be set in the proc that creates these crops
+ reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2))
+ reagents.add_reagent("hyperzine", 1+round((potency / 20), 1))
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco
+ seed = "/obj/item/seeds/tobacco_seed"
+ name = "tobacco leaves"
+ desc = "Dry them out to make some smokes."
+ icon_state = "tobacco_leaves"
+ potency = 20
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/attackby(var/obj/item/W as obj, var/mob/user as mob)
+ if(istype(W, /obj/item/weapon/rollingpaper))
+ if(src.dry == 1)
+ user.u_equip(W)
+ var/obj/item/clothing/mask/cigarette/J = new /obj/item/clothing/mask/cigarette(user.loc)
+ src.reagents.trans_to(J, J.chem_volume)
+ del(W)
+ user.put_in_active_hand(J)
+ user << "\blue You roll the tobacco into a rolling paper."
+ del(src)
+ else
+ user << "\red You need to dry this first."
+ else
+ ..()
+
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco_space
+ seed = "/obj/item/seeds/tobacco_space_seed"
+ name = "space tobacco leaves"
+ desc = "Dry them out to make some space-smokes."
+ icon_state = "stobacco_leaves"
+ potency = 20
+ New()
+ ..()
+ spawn(5) //So potency can be set in the proc that creates these crops
+ reagents.add_reagent("dexalin", 1+round((potency / 20), 1))
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco_space/attackby(var/obj/item/W as obj, var/mob/user as mob)
+ if(istype(W, /obj/item/weapon/rollingpaper))
+ if(src.dry == 1)
+ user.u_equip(W)
+ var/obj/item/clothing/mask/cigarette/J = new /obj/item/clothing/mask/cigarette(user.loc)
+ src.reagents.trans_to(J, J.chem_volume)
+ del(W)
+ user.put_in_active_hand(J)
+ user << "\blue You roll the space tobacco into a rolling paper."
+ del(src)
+ else
+ user << "\red You need to dry this first."
+ else
+ ..()
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/tea_aspera
+ seed = "/obj/item/seeds/tea_aspera_seed"
+ name = "Tea Aspera tips"
+ desc = "These aromatic tips of the tea plant can be dried to make tea."
+ icon_state = "tea_aspera_leaves"
+ potency = 20
+ New()
+ ..()
+ spawn(5) //So potency can be set in the proc that creates these crops
+ reagents.add_reagent("teapowder", 1+round((potency / 10), 2))
+
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/tea_astra
+ seed = "/obj/item/seeds/tea_astra_seed"
+ name = "Tea Astra tips"
+ desc = "These aromatic tips of the tea plant can be dried to make tea."
+ icon_state = "tea_astra_leaves"
+ potency = 20
+ New()
+ ..()
+ spawn(5) //So potency can be set in the proc that creates these crops
+ reagents.add_reagent("teapowder", 1+round((potency / 10), 2))
+ reagents.add_reagent("kelotane", 1+round((potency / 20), 1))
\ No newline at end of file
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index ef5a116968b..f654a303941 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi
index 59cab0298aa..4aa7f8777e4 100644
Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index 5104ae44456..747c205251e 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/harvest.dmi b/icons/obj/harvest.dmi
index d3a7b1f724f..144b2e021f0 100644
Binary files a/icons/obj/harvest.dmi and b/icons/obj/harvest.dmi differ
diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi
index d6c6fb7e3e0..d2bcb33217e 100644
Binary files a/icons/obj/hydroponics.dmi and b/icons/obj/hydroponics.dmi differ