diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 53389837a37..c9d0189719e 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -76,11 +76,11 @@
else if(fullness > 50 && fullness < 150)
user.visible_message("[user] hungrily takes a [eatverb] from \the [src].", "You hungrily take a [eatverb] from \the [src].")
else if(fullness > 150 && fullness < 500)
- user.visible_message("[user] takes a [eatverb] from \the [src].", "You take a [eatverb] from \the [src].")
+ user.visible_message("[user] takes a [eatverb] from \the [src].", "You take a [eatverb] from \the [src].")
else if(fullness > 500 && fullness < 600)
user.visible_message("[user] unwillingly takes a [eatverb] of a bit of \the [src].", "You unwillingly take a [eatverb] of a bit of \the [src].")
else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
- user.visible_message("[user] cannot force any more of \the [src] to go down [user.p_their()] throat!", "You cannot force any more of \the [src] to go down your throat!")
+ user.visible_message("[user] cannot force any more of \the [src] to go down [user.p_their()] throat!", "You cannot force any more of \the [src] to go down your throat!")
return 0
if(M.has_trait(TRAIT_VORACIOUS))
M.changeNext_move(CLICK_CD_MELEE * 0.5) //nom nom nom
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
new file mode 100644
index 00000000000..b88e6e1ebb3
--- /dev/null
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -0,0 +1,77 @@
+/obj/structure/fermenting_barrel
+ name = "wooden barrel"
+ desc = "A large wooden barrel. You can ferment fruits and such inside it, or just use it to hold liquid."
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "barrel"
+ density = TRUE
+ anchored = FALSE
+ container_type = DRAINABLE | AMOUNT_VISIBLE
+ pressure_resistance = 2 * ONE_ATMOSPHERE
+ max_integrity = 300
+ var/open = FALSE
+ var/speed_multiplier = 1 //How fast it distills. Defaults to 100% (1.0). Lower is better.
+
+/obj/structure/fermenting_barrel/Initialize()
+ create_reagents(300) //Bluespace beakers, but without the portability or efficiency in circuits.
+ . = ..()
+
+/obj/structure/fermenting_barrel/examine(mob/user)
+ . = ..()
+ to_chat(user, "It is currently [open?"open, letting you pour liquids in.":"closed, letting you draw liquids from the tap."]")
+
+/obj/structure/fermenting_barrel/proc/makeWine(obj/item/reagent_containers/food/snacks/grown/fruit)
+ if(fruit.reagents)
+ fruit.reagents.trans_to(src, fruit.reagents.total_volume)
+ var/amount = fruit.seed.potency / 4
+ if(fruit.distill_reagent)
+ reagents.add_reagent(fruit.distill_reagent, amount)
+ else
+ var/data = list()
+ data["names"] = list("[initial(fruit.name)]" = 1)
+ data["color"] = fruit.filling_color
+ data["boozepwr"] = fruit.wine_power
+ if(fruit.wine_flavor)
+ data["tastes"] = list(fruit.wine_flavor = 1)
+ else
+ data["tastes"] = list(fruit.tastes[1] = 1)
+ reagents.add_reagent("fruit_wine", amount, data)
+ qdel(fruit)
+ playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
+
+/obj/structure/fermenting_barrel/attackby(obj/item/I, mob/user, params)
+ var/obj/item/reagent_containers/food/snacks/grown/fruit = I
+ if(istype(fruit))
+ if(!fruit.can_distill)
+ to_chat(user, "You can't distill this into anything...")
+ return TRUE
+ else if(!user.transferItemToLoc(I,src))
+ to_chat(user, "[I] is stuck to your hand!")
+ return TRUE
+ to_chat(user, "You place [I] into [src] to start the fermentation process.")
+ addtimer(CALLBACK(src, .proc/makeWine, fruit), rand(80, 120) * speed_multiplier)
+ return TRUE
+ else
+ return ..()
+
+/obj/structure/fermenting_barrel/attack_hand(mob/user)
+ open = !open
+ if(open)
+ container_type = REFILLABLE | AMOUNT_VISIBLE
+ to_chat(user, "You open [src], letting you fill it.")
+ else
+ container_type = DRAINABLE | AMOUNT_VISIBLE
+ to_chat(user, "You close [src], letting you draw from its tap.")
+ update_icon()
+
+/obj/structure/fermenting_barrel/update_icon()
+ if(open)
+ icon_state = "barrel_open"
+ else
+ icon_state = "barrel"
+
+/datum/crafting_recipe/fermenting_barrel
+ name = "Wooden Barrel"
+ result = /obj/structure/fermenting_barrel
+ reqs = list(/obj/item/stack/sheet/mineral/wood = 30)
+ time = 50
+ category = CAT_PRIMAL
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 5b9c1f4e70f..096c7b5b2ba 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -16,6 +16,10 @@
// If you don't want a plant to be driable (watermelons) set this to null in the time definition.
resistance_flags = FLAMMABLE
var/dry_grind = FALSE //If TRUE, this object needs to be dry to be ground up
+ var/can_distill = TRUE //If FALSE, this object cannot be distilled into an alcohol.
+ var/distill_reagent //If NULL and this object can be distilled, it uses a generic fruit_wine reagent and adjusts its variables.
+ var/wine_flavor //If NULL, this is automatically set to the fruit's flavor. Determines the flavor of the wine if distill_reagent is NULL.
+ var/wine_power = 10 //Determines the boozepwr of the wine if distill_reagent is NULL.
/obj/item/reagent_containers/food/snacks/grown/Initialize(mapload, obj/item/seeds/new_seed)
. = ..()
diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm
index 5883b4dd64a..a3b93db1ea2 100644
--- a/code/modules/hydroponics/grown/ambrosia.dm
+++ b/code/modules/hydroponics/grown/ambrosia.dm
@@ -31,6 +31,7 @@
seed = /obj/item/seeds/ambrosia
name = "ambrosia vulgaris branch"
desc = "This is a plant containing various healing chemicals."
+ wine_power = 30
// Ambrosia Deus
/obj/item/seeds/ambrosia/deus
@@ -50,6 +51,7 @@
desc = "Eating this makes you feel immortal!"
icon_state = "ambrosiadeus"
filling_color = "#008B8B"
+ wine_power = 50
//Ambrosia Gaia
/obj/item/seeds/ambrosia/gaia
@@ -73,3 +75,5 @@
filling_color = rgb(255, 175, 0)
light_range = 3
seed = /obj/item/seeds/ambrosia/gaia
+ wine_power = 70
+ wine_flavor = "the earthmother's blessing"
diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm
index 47d288b6696..007c0b24542 100644
--- a/code/modules/hydroponics/grown/apple.dm
+++ b/code/modules/hydroponics/grown/apple.dm
@@ -26,6 +26,7 @@
foodtype = FRUIT
juice_results = list("applejuice" = 0)
tastes = list("apple" = 1)
+ distill_reagent = "hcider"
// Gold Apple
/obj/item/seeds/apple/gold
@@ -47,3 +48,5 @@
desc = "Emblazoned upon the apple is the word 'Kallisti'."
icon_state = "goldapple"
filling_color = "#FFD700"
+ distill_reagent = null
+ wine_power = 50
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 4e29094df4d..166731accf9 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -25,6 +25,7 @@
bitesize = 5
foodtype = FRUIT
juice_results = list("banana" = 0)
+ distill_reagent = "bananahonk"
/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -79,6 +80,7 @@
icon_state = "mimana"
trash = /obj/item/grown/bananapeel/mimanapeel
filling_color = "#FFFFEE"
+ distill_reagent = "silencer"
/obj/item/grown/bananapeel/mimanapeel
seed = /obj/item/seeds/banana/mime
@@ -109,6 +111,8 @@
trash = /obj/item/grown/bananapeel/bluespace
filling_color = "#0000FF"
tastes = list("banana" = 1)
+ wine_power = 60
+ wine_flavor = "slippery hypercubes"
/obj/item/grown/bananapeel/bluespace
seed = /obj/item/seeds/banana/bluespace
diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm
index b9363d5a121..4338e3b0700 100644
--- a/code/modules/hydroponics/grown/beans.dm
+++ b/code/modules/hydroponics/grown/beans.dm
@@ -28,6 +28,7 @@
foodtype = VEGETABLES
grind_results = list("soymilk" = 0)
tastes = list("soy" = 1)
+ wine_power = 20
// Koibean
/obj/item/seeds/soya/koi
@@ -51,3 +52,4 @@
bitesize_mod = 2
foodtype = VEGETABLES
tastes = list("koi" = 1)
+ wine_power = 40
diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm
index e8e6c52b7ac..19abdacf3ae 100644
--- a/code/modules/hydroponics/grown/berries.dm
+++ b/code/modules/hydroponics/grown/berries.dm
@@ -28,6 +28,7 @@
foodtype = FRUIT
juice_results = list("berryjuice" = 0)
tastes = list("berry" = 1)
+ distill_reagent = "gin"
// Poison Berries
/obj/item/seeds/berry/poison
@@ -50,6 +51,8 @@
foodtype = FRUIT | TOXIC
juice_results = list("poisonberryjuice" = 0)
tastes = list("poison-berry" = 1)
+ distill_reagent = null
+ wine_power = 35
// Death Berries
/obj/item/seeds/berry/death
@@ -73,6 +76,8 @@
filling_color = "#708090"
foodtype = FRUIT | TOXIC
tastes = list("death-berry" = 1)
+ distill_reagent = null
+ wine_power = 50
// Glow Berries
/obj/item/seeds/berry/glow
@@ -97,6 +102,8 @@
filling_color = "#7CFC00"
foodtype = FRUIT
tastes = list("glow-berry" = 1)
+ distill_reagent = null
+ wine_power = 60
// Cherries
/obj/item/seeds/cherry
@@ -129,6 +136,7 @@
foodtype = FRUIT
grind_results = list("cherryjelly" = 0)
tastes = list("cherry" = 1)
+ wine_power = 30
// Blue Cherries
/obj/item/seeds/cherry/blue
@@ -152,6 +160,7 @@
foodtype = FRUIT
grind_results = list("bluecherryjelly" = 0)
tastes = list("blue cherry" = 1)
+ wine_power = 50
// Grapes
/obj/item/seeds/grape
@@ -185,6 +194,7 @@
foodtype = FRUIT
juice_results = list("grapejuice" = 0)
tastes = list("grape" = 1)
+ distill_reagent = "wine"
// Green Grapes
/obj/item/seeds/grape/green
@@ -204,3 +214,4 @@
icon_state = "greengrapes"
filling_color = "#7FFF00"
tastes = list("green grape" = 1)
+ distill_reagent = "cognac"
diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm
index c5bf77f6f9d..67c5e61dcf5 100644
--- a/code/modules/hydroponics/grown/cannabis.dm
+++ b/code/modules/hydroponics/grown/cannabis.dm
@@ -92,25 +92,28 @@
bitesize_mod = 2
foodtype = VEGETABLES //i dont really know what else weed could be to be honest
tastes = list("cannabis" = 1)
-
+ wine_power = 20
/obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow
seed = /obj/item/seeds/cannabis/rainbow
name = "rainbow cannabis leaf"
desc = "Is it supposed to be glowing like that...?"
icon_state = "megacannabis"
+ wine_power = 60
/obj/item/reagent_containers/food/snacks/grown/cannabis/death
seed = /obj/item/seeds/cannabis/death
name = "death cannabis leaf"
desc = "Looks a bit dark. Oh well."
icon_state = "blackcannabis"
+ wine_power = 40
/obj/item/reagent_containers/food/snacks/grown/cannabis/white
seed = /obj/item/seeds/cannabis/white
name = "white cannabis leaf"
desc = "It feels smooth and nice to the touch."
icon_state = "whitecannabis"
+ wine_power = 10
/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate
seed = /obj/item/seeds/cannabis/ultimate
@@ -118,3 +121,4 @@
desc = "You feel dizzy looking at it. What the fuck?"
icon_state = "ocannabis"
volume = 420
+ wine_power = 90
diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm
index acd3203ecc0..c53cd6718ac 100644
--- a/code/modules/hydroponics/grown/cereals.dm
+++ b/code/modules/hydroponics/grown/cereals.dm
@@ -24,6 +24,7 @@
foodtype = GRAIN
grind_results = list("flour" = 0)
tastes = list("wheat" = 1)
+ distill_reagent = "beer"
// Oat
/obj/item/seeds/wheat/oat
@@ -46,6 +47,7 @@
foodtype = GRAIN
grind_results = list("flour" = 0)
tastes = list("oat" = 1)
+ distill_reagent = "ale"
// Rice
/obj/item/seeds/wheat/rice
@@ -69,6 +71,7 @@
foodtype = GRAIN
grind_results = list("rice" = 0)
tastes = list("rice" = 1)
+ distill_reagent = "sake"
//Meatwheat - grows into synthetic meat
/obj/item/seeds/wheat/meat
@@ -91,6 +94,7 @@
foodtype = MEAT | GRAIN
grind_results = list("flour" = 0, "blood" = 0)
tastes = list("meatwheat" = 1)
+ can_distill = FALSE
/obj/item/reagent_containers/food/snacks/grown/meatwheat/attack_self(mob/living/user)
user.visible_message("[user] crushes [src] into meat.", "You crush [src] into something that resembles meat.")
diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm
index c01f3ba6efd..6325daacdcc 100644
--- a/code/modules/hydroponics/grown/chili.dm
+++ b/code/modules/hydroponics/grown/chili.dm
@@ -26,6 +26,7 @@
filling_color = "#FF0000"
bitesize_mod = 2
foodtype = FRUIT
+ wine_power = 20
// Ice Chili
/obj/item/seeds/chili/ice
@@ -50,6 +51,7 @@
filling_color = "#0000CD"
bitesize_mod = 2
foodtype = FRUIT
+ wine_power = 30
// Ghost Chili
/obj/item/seeds/chili/ghost
@@ -76,6 +78,7 @@
filling_color = "#F8F8FF"
bitesize_mod = 4
foodtype = FRUIT
+ wine_power = 50
/obj/item/reagent_containers/food/snacks/grown/ghost_chili/attack_hand(mob/user)
. = ..()
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index 30b4865a9d6..97b30aec062 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -6,6 +6,7 @@
icon_state = "lime"
bitesize_mod = 2
foodtype = FRUIT
+ wine_power = 30
// Lime
/obj/item/seeds/lime
@@ -58,6 +59,7 @@
icon_state = "orange"
filling_color = "#FFA500"
juice_results = list("orangejuice" = 0)
+ distill_reagent = "triple_sec"
// Lemon
/obj/item/seeds/lemon
@@ -109,6 +111,7 @@
icon_state = "firelemon"
bitesize_mod = 2
foodtype = FRUIT
+ wine_power = 70
/obj/item/reagent_containers/food/snacks/grown/firelemon/attack_self(mob/living/user)
user.visible_message("[user] primes [src]!", "You prime [src]!")
diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm
index 12e235b1c33..ea1b9716bd1 100644
--- a/code/modules/hydroponics/grown/cocoa_vanilla.dm
+++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm
@@ -27,6 +27,7 @@
bitesize_mod = 2
foodtype = FRUIT
tastes = list("cocoa" = 1)
+ distill_reagent = "creme_de_cacao"
// Vanilla Pod
/obj/item/seeds/cocoapod/vanillapod
@@ -48,3 +49,4 @@
filling_color = "#FFD700"
foodtype = FRUIT
tastes = list("vanilla" = 1)
+ distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it.
diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm
index 312dda8c26a..c259baaf2df 100644
--- a/code/modules/hydroponics/grown/corn.dm
+++ b/code/modules/hydroponics/grown/corn.dm
@@ -27,6 +27,7 @@
foodtype = VEGETABLES
juice_results = list("corn_starch" = 0)
tastes = list("corn" = 1)
+ distill_reagent = "whiskey"
/obj/item/grown/corncob
name = "corn cob"
diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm
index 9615b7acb28..0e16b02e66c 100644
--- a/code/modules/hydroponics/grown/eggplant.dm
+++ b/code/modules/hydroponics/grown/eggplant.dm
@@ -23,6 +23,7 @@
filling_color = "#800080"
bitesize_mod = 2
foodtype = FRUIT
+ wine_power = 20
// Egg-Plant
/obj/item/seeds/eggplant/eggy
@@ -44,3 +45,4 @@
filling_color = "#F8F8FF"
bitesize_mod = 2
foodtype = MEAT
+ distill_reagent = "eggnog"
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index c2698c13672..4e1718f853e 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -26,6 +26,7 @@
filling_color = "#FF6347"
bitesize_mod = 3
foodtype = VEGETABLES | GROSS
+ distill_reagent = "vermouth"
// Lily
/obj/item/seeds/poppy/lily
@@ -61,7 +62,6 @@
icon_state = "geranium"
filling_color = "#008B8B"
-
// Harebell
/obj/item/seeds/harebell
name = "pack of harebell seeds"
@@ -89,7 +89,7 @@
slot_flags = ITEM_SLOT_HEAD
filling_color = "#E6E6FA"
bitesize_mod = 3
-
+ distill_reagent = "vermouth"
// Sunflower
/obj/item/seeds/sunflower
@@ -152,6 +152,7 @@
slot_flags = ITEM_SLOT_HEAD
filling_color = "#E6E6FA"
bitesize_mod = 2
+ distill_reagent = "absinthe" //It's made from flowers.
// Novaflower
/obj/item/seeds/sunflower/novaflower
diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm
index 8e55f8a15d9..1a1c2ac07fa 100644
--- a/code/modules/hydroponics/grown/grass_carpet.dm
+++ b/code/modules/hydroponics/grown/grass_carpet.dm
@@ -27,6 +27,7 @@
bitesize_mod = 2
var/stacktype = /obj/item/stack/tile/grass
var/tile_coefficient = 0.02 // 1/50
+ wine_power = 15
/obj/item/reagent_containers/food/snacks/grown/grass/attack_self(mob/user)
to_chat(user, "You prepare the astroturf.")
@@ -56,3 +57,4 @@
desc = "The textile industry's dark secret."
icon_state = "carpetclump"
stacktype = /obj/item/stack/tile/carpet
+ can_distill = FALSE
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
index e9dec09799d..6ceb69536dc 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -104,3 +104,4 @@
bitesize_mod = 2
foodtype = VEGETABLES | GROSS
tastes = list("kudzu" = 1)
+ wine_power = 20
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index 7497a10ffbf..29691c32891 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -34,6 +34,7 @@
bitesize_mod = 3
foodtype = FRUIT
juice_results = list("watermelonjuice" = 0)
+ wine_power = 40
// Holymelon
/obj/item/seeds/watermelon/holy
@@ -54,6 +55,8 @@
icon_state = "holymelon"
filling_color = "#FFD700"
dried_type = null
+ wine_power = 70 //Water to wine, baby.
+ wine_flavor = "divinity"
/obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize()
. = ..()
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index 82ff56e7c93..107a6a94f94 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -55,7 +55,7 @@
filling_color = "#90EE90"
bitesize_mod = 2
foodtype = VEGETABLES
-
+ wine_power = 20
// Sugarcane
/obj/item/seeds/sugarcane
@@ -81,7 +81,7 @@
filling_color = "#FFD700"
bitesize_mod = 2
foodtype = VEGETABLES | SUGAR
-
+ distill_reagent = "rum"
// Gatfruit
/obj/item/seeds/gatfruit
@@ -112,6 +112,7 @@
bitesize_mod = 2
foodtype = FRUIT
tastes = list("gunpowder" = 1)
+ wine_power = 90 //It burns going down, too.
//Cherry Bombs
/obj/item/seeds/cherry/bomb
@@ -134,6 +135,7 @@
bitesize_mod = 2
volume = 125 //Gives enough room for the black powder at max potency
max_integrity = 40
+ wine_power = 80
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user)
user.visible_message("[user] plucks the stem from [src]!", "You pluck the stem from [src], which begins to hiss loudly!")
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
index fddcb5b1fce..fe2beb896c5 100644
--- a/code/modules/hydroponics/grown/mushrooms.dm
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -2,7 +2,7 @@
name = "mushroom"
bitesize_mod = 2
foodtype = VEGETABLES
-
+ wine_power = 40
// Reishi
/obj/item/seeds/reishi
@@ -56,7 +56,6 @@
icon_state = "amanita"
filling_color = "#FF0000"
-
// Destroying Angel
/obj/item/seeds/angel
name = "pack of destroying angel mycelium"
@@ -83,7 +82,7 @@
desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins."
icon_state = "angel"
filling_color = "#C0C0C0"
-
+ wine_power = 60
// Liberty Cap
/obj/item/seeds/liberty
@@ -108,7 +107,7 @@
desc = "Psilocybe Semilanceata: Liberate yourself!"
icon_state = "libertycap"
filling_color = "#DAA520"
-
+ wine_power = 80
// Plump Helmet
/obj/item/seeds/plump
@@ -134,7 +133,7 @@
desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
icon_state = "plumphelmet"
filling_color = "#9370DB"
-
+ distill_reagent = "manlydorf"
// Walking Mushroom
/obj/item/seeds/plump/walkingmushroom
@@ -159,6 +158,7 @@
desc = "Plumus Locomotus: The beginning of the great walk."
icon_state = "walkingmushroom"
filling_color = "#9370DB"
+ can_distill = FALSE
/obj/item/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user)
if(isspaceturf(user.loc))
@@ -228,6 +228,7 @@
icon_state = "glowshroom"
filling_color = "#00FA9A"
var/effect_path = /obj/structure/glowshroom
+ wine_power = 50
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
if(isspaceturf(user.loc))
@@ -298,6 +299,7 @@
icon_state = "shadowshroom"
effect_path = /obj/structure/glowshroom/shadowshroom
tastes = list("shadow" = 1, "mushroom" = 1)
+ wine_power = 60
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user)
. = ..()
diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm
index 9b957ae7449..9cb8d1a63c6 100644
--- a/code/modules/hydroponics/grown/onion.dm
+++ b/code/modules/hydroponics/grown/onion.dm
@@ -26,6 +26,7 @@
tastes = list("onions" = 1)
slice_path = /obj/item/reagent_containers/food/snacks/onion_slice
slices_num = 2
+ wine_power = 30
/obj/item/seeds/onion/red
name = "pack of red onion seeds"
@@ -44,6 +45,7 @@
icon_state = "onion_red"
filling_color = "#C29ACF"
slice_path = /obj/item/reagent_containers/food/snacks/onion_slice/red
+ wine_power = 60
/obj/item/reagent_containers/food/snacks/grown/onion/slice(accuracy, obj/item/W, mob/user)
var/datum/effect_system/smoke_spread/chem/S = new //Since the onion is destroyed when it's sliced,
diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm
index 7b58c7553d8..e52c261217b 100644
--- a/code/modules/hydroponics/grown/pineapple.dm
+++ b/code/modules/hydroponics/grown/pineapple.dm
@@ -31,3 +31,4 @@
w_class = WEIGHT_CLASS_NORMAL
foodtype = FRUIT | PINEAPPLE
tastes = list("pineapple" = 1)
+ wine_power = 40
diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm
index 4d1d916572b..15378b368e7 100644
--- a/code/modules/hydroponics/grown/potato.dm
+++ b/code/modules/hydroponics/grown/potato.dm
@@ -27,7 +27,7 @@
bitesize = 100
foodtype = VEGETABLES
juice_results = list("potato" = 0)
-
+ distill_reagent = "vodka"
/obj/item/reagent_containers/food/snacks/grown/potato/wedges
name = "potato wedges"
@@ -64,3 +64,4 @@
name = "sweet potato"
desc = "It's sweet."
icon_state = "sweetpotato"
+ distill_reagent = "sbiten"
diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm
index 2b0ffddfe74..644dedff3d0 100644
--- a/code/modules/hydroponics/grown/pumpkin.dm
+++ b/code/modules/hydroponics/grown/pumpkin.dm
@@ -25,6 +25,7 @@
bitesize_mod = 2
foodtype = FRUIT
juice_results = list("pumpkinjuice" = 0)
+ wine_power = 20
/obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params)
if(W.is_sharp())
@@ -56,3 +57,4 @@
bitesize_mod = 2
foodtype = FRUIT
juice_results = list("blumpkinjuice" = 0)
+ wine_power = 50
diff --git a/code/modules/hydroponics/grown/random.dm b/code/modules/hydroponics/grown/random.dm
index 04b3ff29fa9..75505202da1 100644
--- a/code/modules/hydroponics/grown/random.dm
+++ b/code/modules/hydroponics/grown/random.dm
@@ -26,4 +26,10 @@
name = "strange plant"
desc = "What could this even be?"
icon_state = "crunchy"
- bitesize_mod = 2
\ No newline at end of file
+ bitesize_mod = 2
+
+/obj/item/reagent_containers/food/snacks/grown/random/Initialize()
+ . = ..()
+ wine_power = rand(10,150)
+ if(prob(1))
+ wine_power = 200
diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm
index fd78fa6ffae..be0a209c9f9 100644
--- a/code/modules/hydroponics/grown/root.dm
+++ b/code/modules/hydroponics/grown/root.dm
@@ -23,6 +23,7 @@
bitesize_mod = 2
foodtype = VEGETABLES
juice_results = list("carrotjuice" = 0)
+ wine_power = 30
/obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params)
if(I.is_sharp())
@@ -53,6 +54,7 @@
icon_state = "parsnip"
bitesize_mod = 2
foodtype = VEGETABLES
+ wine_power = 35
// White-Beet
@@ -79,6 +81,7 @@
filling_color = "#F4A460"
bitesize_mod = 2
foodtype = VEGETABLES
+ wine_power = 40
// Red Beet
/obj/item/seeds/redbeet
@@ -103,3 +106,4 @@
icon_state = "redbeet"
bitesize_mod = 2
foodtype = VEGETABLES
+ wine_power = 60
diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm
index fc2ed221c54..fc84617ed8f 100644
--- a/code/modules/hydroponics/grown/tea_coffee.dm
+++ b/code/modules/hydroponics/grown/tea_coffee.dm
@@ -23,6 +23,7 @@
filling_color = "#008000"
grind_results = list("teapowder" = 0)
dry_grind = TRUE
+ can_distill = FALSE
// Tea Astra
/obj/item/seeds/tea/astra
@@ -71,6 +72,7 @@
bitesize_mod = 2
dry_grind = TRUE
grind_results = list("coffeepowder" = 0)
+ distill_reagent = "kahlua"
// Coffee Robusta
/obj/item/seeds/coffee/robusta
diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm
index 3258e7ea4f4..684271fa6b4 100644
--- a/code/modules/hydroponics/grown/tobacco.dm
+++ b/code/modules/hydroponics/grown/tobacco.dm
@@ -21,6 +21,7 @@
desc = "Dry them out to make some smokes."
icon_state = "tobacco_leaves"
filling_color = "#008000"
+ distill_reagent = "creme_de_menthe" //Menthol, I guess.
// Space Tobacco
/obj/item/seeds/tobacco/space
@@ -38,4 +39,6 @@
seed = /obj/item/seeds/tobacco/space
name = "space tobacco leaves"
desc = "Dry them out to make some space-smokes."
- icon_state = "stobacco_leaves"
\ No newline at end of file
+ icon_state = "stobacco_leaves"
+ distill_reagent = null
+ wine_power = 50
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index 0f5b969b3be..767de8011a0 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -25,6 +25,7 @@
foodtype = FRUIT
grind_results = list("ketchup" = 0)
juice_results = list("tomatojuice" = 0)
+ distill_reagent = "enzyme"
// Blood Tomato
/obj/item/seeds/tomato/blood
@@ -47,7 +48,7 @@
filling_color = "#FF0000"
foodtype = FRUIT | GROSS
grind_results = list("ketchup" = 0, "blood" = 0)
-
+ distill_reagent = "bloodymary"
// Blue Tomato
/obj/item/seeds/tomato/blue
@@ -71,7 +72,7 @@
icon_state = "bluetomato"
splat_type = /obj/effect/decal/cleanable/oil
filling_color = "#0000FF"
-
+ distill_reagent = "laughter"
// Bluespace Tomato
/obj/item/seeds/tomato/blue/bluespace
@@ -92,7 +93,8 @@
name = "bluespace tomato"
desc = "So lubricated, you might slip through space-time."
icon_state = "bluespacetomato"
-
+ distill_reagent = null
+ wine_power = 80
// Killer Tomato
/obj/item/seeds/tomato/killer
@@ -118,6 +120,7 @@
icon_state = "killertomato"
var/awakening = 0
filling_color = "#FF0000"
+ distill_reagent = "demonsblood"
/obj/item/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone)
if(awakening)
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index 988c2242796..540a012df1a 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -152,6 +152,7 @@
resistance_flags = FLAMMABLE
max_integrity = 100
seed = /obj/item/seeds/lavaland/polypore
+ wine_power = 20
/obj/item/reagent_containers/food/snacks/grown/ash_flora/Initialize()
. = ..()
@@ -167,7 +168,7 @@
list_reagents = list("nutriment" = 3, "vitfro" = 2, "nicotine" = 2)
icon_state = "mushroom_leaf"
seed = /obj/item/seeds/lavaland/porcini
-
+ wine_power = 40
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
name = "mushroom cap"
@@ -175,7 +176,7 @@
list_reagents = list("mindbreaker" = 2, "entpoly" = 4, "mushroomhallucinogen" = 2)
icon_state = "mushroom_cap"
seed = /obj/item/seeds/lavaland/inocybe
-
+ wine_power = 70
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
name = "mushroom stem"
@@ -184,6 +185,7 @@
icon_state = "mushroom_stem"
light_range = 1
seed = /obj/item/seeds/lavaland/ember
+ wine_power = 60
/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit
name = "cactus fruit"
@@ -191,6 +193,7 @@
desc = "A cactus fruit covered in a thick, reddish skin. And some ash."
icon_state = "cactus_fruit"
seed = /obj/item/seeds/lavaland/cactus
+ wine_power = 50
/obj/item/reagent_containers/glass/bowl/mushroom_bowl
name = "mushroom bowl"
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 3e3282fb898..252f349a9f0 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -1749,3 +1749,107 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.adjustStaminaLoss(35)
. = TRUE
..()
+
+/datum/reagent/consumable/ethanol/fruit_wine
+ name = "Fruit Wine"
+ id = "fruit_wine"
+ description = "A wine made from grown plants."
+ color = "#FFFFFF"
+ boozepwr = 35
+ taste_description = "bad coding"
+ can_synth = FALSE
+ var/list/names = list("null fruit" = 1) //Names of the fruits used. Associative list where name is key, value is the percentage of that fruit.
+ var/list/tastes = list("bad coding" = 1) //List of tastes. See above.
+
+/datum/reagent/consumable/ethanol/fruit_wine/on_new(list/data)
+ names = data["names"]
+ tastes = data["tastes"]
+ boozepwr = data["boozepwr"]
+ color = data["color"]
+ generate_data_info(data)
+
+/datum/reagent/consumable/ethanol/fruit_wine/on_merge(list/data, amount)
+ var/diff = (amount/volume)
+ if(diff < 1)
+ color = BlendRGB(color, data["color"], diff/2) //The percentage difference over two, so that they take average if equal.
+ else
+ color = BlendRGB(color, data["color"], (1/diff)/2) //Adjust so it's always blending properly.
+ var/oldvolume = volume-amount
+
+ var/list/cachednames = data["names"]
+ for(var/name in names | cachednames)
+ names[name] = ((names[name] * oldvolume) + (cachednames[name] * amount)) / volume
+
+ var/list/cachedtastes = data["tastes"]
+ for(var/taste in tastes | cachedtastes)
+ tastes[taste] = ((tastes[taste] * oldvolume) + (cachedtastes[taste] * amount)) / volume
+
+ boozepwr *= oldvolume
+ var/newzepwr = data["boozepwr"] * amount
+ boozepwr += newzepwr
+ boozepwr /= volume //Blending boozepwr to volume.
+ generate_data_info(data)
+
+/datum/reagent/consumable/ethanol/fruit_wine/proc/generate_data_info(list/data)
+ var/minimum_percent = 0.15 //Percentages measured between 0 and 1.
+ var/list/primary_tastes = list()
+ var/list/secondary_tastes = list()
+ glass_name = "glass of [name]"
+ glass_desc = description
+ for(var/taste in tastes)
+ switch(tastes[taste])
+ if(minimum_percent*2 to INFINITY)
+ primary_tastes += taste
+ if(minimum_percent to minimum_percent*2)
+ secondary_tastes += taste
+
+ var/minimum_name_percent = 0.35
+ name = ""
+ var/list/names_in_order = sortTim(names, /proc/cmp_numeric_dsc, TRUE)
+ var/named = FALSE
+ for(var/fruit_name in names)
+ if(names[fruit_name] >= minimum_name_percent)
+ name += "[fruit_name] "
+ named = TRUE
+ if(named)
+ name += "wine"
+ else
+ name = "mixed [names_in_order[1]] wine"
+
+ var/alcohol_description
+ switch(boozepwr)
+ if(120 to INFINITY)
+ alcohol_description = "suicidally strong"
+ if(90 to 120)
+ alcohol_description = "rather strong"
+ if(70 to 90)
+ alcohol_description = "strong"
+ if(40 to 70)
+ alcohol_description = "rich"
+ if(20 to 40)
+ alcohol_description = "mild"
+ if(0 to 20)
+ alcohol_description = "sweet"
+ else
+ alcohol_description = "watery" //How the hell did you get negative boozepwr?
+
+ var/list/fruits = list()
+ if(names_in_order.len <= 3)
+ fruits = names_in_order
+ else
+ for(var/i in 1 to 3)
+ fruits += names_in_order[i]
+ fruits += "other plants"
+ var/fruit_list = english_list(fruits)
+ description = "A [alcohol_description] wine brewed from [fruit_list]."
+
+ var/flavor = ""
+ if(!primary_tastes.len)
+ primary_tastes = list("[alcohol_description] alcohol")
+ flavor += english_list(primary_tastes)
+ if(secondary_tastes.len)
+ flavor += ", with a hint of "
+ flavor += english_list(secondary_tastes)
+ taste_description = flavor
+ if(holder.my_atom)
+ holder.my_atom.on_reagent_change()
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index a6e6d3b6f74..5dd724cee9a 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 00b6f41b0ff..5323fab0855 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1596,6 +1596,7 @@
#include "code\modules\holodeck\mobs.dm"
#include "code\modules\holodeck\turfs.dm"
#include "code\modules\hydroponics\biogenerator.dm"
+#include "code\modules\hydroponics\fermenting_barrel.dm"
#include "code\modules\hydroponics\gene_modder.dm"
#include "code\modules\hydroponics\grown.dm"
#include "code\modules\hydroponics\growninedible.dm"