diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 376acfe20ac..3ab43d0793a 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -174,7 +174,8 @@ var/global/list/datum/stack_recipe/wood_recipes = list(
new /datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40),
new /datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),
new /datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),
- new /datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15)
+ new /datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15),
+ new /datum/stack_recipe("fermenting barrel", /obj/structure/fermenting_barrel, 30, time = 50)
)
/obj/item/stack/sheet/wood
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 4d0de3bd09e..26309f885fa 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -168,7 +168,7 @@
max_combined_w_class = 100 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
max_w_class = WEIGHT_CLASS_NORMAL
w_class = WEIGHT_CLASS_TINY
- can_hold = list(/obj/item/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/reagent_containers/food/snacks/ash_flora)
+ can_hold = list(/obj/item/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/reagent_containers/food/snacks/grown/ash_flora)
burn_state = FLAMMABLE
/obj/item/storage/bag/plants/portaseeder
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index 235b0b609f1..c481df1ca42 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -62,7 +62,7 @@
if(!proximity)
return
- if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it.
+ if(target.is_refillable() && is_drainable()) //Something like a glass. Player probably wants to transfer TO it.
if(!reagents.total_volume)
to_chat(user, " [src] is empty.")
return FALSE
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
new file mode 100644
index 00000000000..9f4dbb7315d
--- /dev/null
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -0,0 +1,79 @@
+/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/G)
+ if(G.reagents)
+ G.reagents.trans_to(src, G.reagents.total_volume)
+ var/amount = G.seed.potency / 4
+ if(G.distill_reagent)
+ reagents.add_reagent(G.distill_reagent, amount)
+ else
+ var/data = list()
+ data["names"] = list("[initial(G.name)]" = 1)
+ data["color"] = G.filling_color
+ data["alcohol_perc"] = G.wine_power
+ if(G.wine_flavor)
+ data["tastes"] = list(G.wine_flavor = 1)
+ // else // Stub - Will implement when we port over tg's better taste system - I'd rather get the barrel in first.
+ // data["tastes"] = list(G.tastes[1] = 1)
+ reagents.add_reagent("fruit_wine", amount, data)
+ qdel(G)
+ 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/G = I
+ if(istype(G))
+ if(!G.can_distill)
+ to_chat(user, "You can't distill this into anything...")
+ return FALSE
+ else if(!user.drop_item())
+ to_chat(user, "[G] is stuck to your hand!")
+ return FALSE
+ G.forceMove(src)
+ to_chat(user, "You place [G] into [src] to start the fermentation process.")
+ addtimer(CALLBACK(src, .proc/makeWine, G), rand(80, 120) * speed_multiplier)
+ else if(I.is_refillable())
+ return FALSE // To refill via afterattack proc
+ 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/wood = 30)
+ time = 50
+ category = CAT_PRIMAL
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 772e9f5d856..2e0feaecea7 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -8,12 +8,13 @@
icon = 'icons/obj/hydroponics/harvest.dmi'
var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item.
var/plantname = ""
- var/bitesize_mod = 0
+ var/bitesize_mod = 0 // If set, bitesize = 1 + round(reagents.total_volume / bitesize_mod)
var/splat_type = /obj/effect/decal/cleanable/plant_smudge
- // If set, bitesize = 1 + round(reagents.total_volume / bitesize_mod)
- dried_type = -1
- // Saves us from having to define each stupid grown's dried_type as itself.
- // If you don't want a plant to be driable (watermelons) set this to null in the time definition.
+ 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 = 0.1 //Determines the boozepwr of the wine if distill_reagent is NULL. Uses 0.1 - 1.2 not tg's boozepower (divide by 100) else you'll end up with 1000% proof alcohol!
+ dried_type = -1 // Saves us from having to define each stupid grown's dried_type as itself. If you don't want a plant to be driable (watermelons) set this to null in the time definition.
burn_state = FLAMMABLE
origin_tech = "biotech=1"
diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm
index d6942d6a7f6..a2085eafaee 100644
--- a/code/modules/hydroponics/grown/ambrosia.dm
+++ b/code/modules/hydroponics/grown/ambrosia.dm
@@ -30,6 +30,7 @@
name = "ambrosia vulgaris branch"
desc = "This is a plant containing various healing chemicals."
origin_tech = "biotech=2"
+ wine_power = 0.2
// Ambrosia Deus
/obj/item/seeds/ambrosia/deus
@@ -50,6 +51,7 @@
icon_state = "ambrosiadeus"
filling_color = "#008B8B"
origin_tech = "biotech=4;materials=3"
+ wine_power = 0.5
//Ambrosia Gaia
/obj/item/seeds/ambrosia/gaia
@@ -74,6 +76,8 @@
origin_tech = "biotech=6;materials=5"
light_range = 3
seed = /obj/item/seeds/ambrosia/gaia
+ wine_power = 0.7
+ wine_flavor = "the earthmother's blessing"
// Ambrosia Cruciatus
/obj/item/seeds/ambrosia/cruciatus
@@ -83,4 +87,5 @@
reagents_add = list("thc" = 0.15, "kelotane" = 0.15, "bicaridine" = 0.1, "bath_salts" = 0.20, "plantmatter" = 0.05)
/obj/item/reagent_containers/food/snacks/grown/ambrosia/cruciatus
- seed = /obj/item/seeds/ambrosia/cruciatus
\ No newline at end of file
+ seed = /obj/item/seeds/ambrosia/cruciatus
+ wine_power = 0.7
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm
index 64c7c0381a9..67948c4beb9 100644
--- a/code/modules/hydroponics/grown/apple.dm
+++ b/code/modules/hydroponics/grown/apple.dm
@@ -23,6 +23,7 @@
icon_state = "apple"
filling_color = "#FF4500"
bitesize = 100 // Always eat the apple in one bite
+ distill_reagent = "hcider"
// Posioned Apple
/obj/item/seeds/apple/poisoned
@@ -55,3 +56,5 @@
icon_state = "goldapple"
filling_color = "#FFD700"
origin_tech = "biotech=4;materials=5"
+ distill_reagent = null
+ wine_power = 0.5
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 6874038a7bf..4515b3ad75f 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -23,6 +23,7 @@
trash = /obj/item/grown/bananapeel
filling_color = "#FFFF00"
bitesize = 5
+ distill_reagent = "bananahonk"
/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
user.visible_message("[user] is aiming the [name] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide.")
@@ -74,6 +75,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
@@ -102,6 +104,8 @@
trash = /obj/item/grown/bananapeel/bluespace
filling_color = "#0000FF"
origin_tech = "biotech=3;bluespace=5"
+ wine_power = 0.6
+ 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 24ddf1dbbba..3649e84b869 100644
--- a/code/modules/hydroponics/grown/beans.dm
+++ b/code/modules/hydroponics/grown/beans.dm
@@ -25,6 +25,7 @@
icon_state = "soybeans"
filling_color = "#F0E68C"
bitesize_mod = 2
+ wine_power = 0.2
// Koibean
/obj/item/seeds/soya/koi
@@ -45,4 +46,5 @@
desc = "Something about these seems fishy."
icon_state = "koibeans"
filling_color = "#F0E68C"
- bitesize_mod = 2
\ No newline at end of file
+ bitesize_mod = 2
+ wine_power = 0.4
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm
index 155566ebd10..8e740719fbf 100644
--- a/code/modules/hydroponics/grown/berries.dm
+++ b/code/modules/hydroponics/grown/berries.dm
@@ -25,6 +25,7 @@
gender = PLURAL
filling_color = "#FF00FF"
bitesize_mod = 2
+ distill_reagent = "gin"
// Poison Berries
/obj/item/seeds/berry/poison
@@ -44,6 +45,8 @@
desc = "Taste so good, you could die!"
icon_state = "poisonberrypile"
filling_color = "#C71585"
+ distill_reagent = null
+ wine_power = 0.35
// Death Berries
/obj/item/seeds/berry/death
@@ -65,6 +68,8 @@
desc = "Taste so good, you could die!"
icon_state = "deathberrypile"
filling_color = "#708090"
+ distill_reagent = null
+ wine_power = 0.5
// Glow Berries
/obj/item/seeds/berry/glow
@@ -89,6 +94,9 @@
filling_color = "#7CFC00"
origin_tech = "plasmatech=6"
light_color = "#006622"
+ distill_reagent = null
+ wine_power = 0.6
+ wine_flavor = "warmth"
// Cherries
/obj/item/seeds/cherry
@@ -118,6 +126,7 @@
gender = PLURAL
filling_color = "#FF0000"
bitesize_mod = 2
+ wine_power = 0.3
// Blue Cherries
/obj/item/seeds/cherry/blue
@@ -138,6 +147,7 @@
icon_state = "bluecherry"
filling_color = "#6495ED"
bitesize_mod = 2
+ wine_power = 0.5
// Grapes
/obj/item/seeds/grape
@@ -168,6 +178,7 @@
dried_type = /obj/item/reagent_containers/food/snacks/no_raisin
filling_color = "#FF1493"
bitesize_mod = 2
+ distill_reagent = "wine"
// Green Grapes
/obj/item/seeds/grape/green
@@ -186,3 +197,4 @@
name = "bunch of green grapes"
icon_state = "greengrapes"
filling_color = "#7FFF00"
+ distill_reagent = "cognac"
diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm
index e82e72e83b0..ed05d7a6954 100644
--- a/code/modules/hydroponics/grown/cannabis.dm
+++ b/code/modules/hydroponics/grown/cannabis.dm
@@ -93,6 +93,7 @@
icon_state = "cannabis"
filling_color = "#00FF00"
bitesize_mod = 2
+ wine_power = 0.2
/obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow
@@ -100,18 +101,21 @@
name = "rainbow cannabis leaf"
desc = "Is it supposed to be glowing like that...?"
icon_state = "megacannabis"
+ wine_power = 0.6
/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 = 0.4
/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 = 0.1
/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate
seed = /obj/item/seeds/cannabis/ultimate
@@ -119,3 +123,4 @@
desc = "You feel dizzy looking at it. What the fuck?"
icon_state = "ocannabis"
volume = 420
+ wine_power = 0.9
diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm
index 91b6cd0a14c..e864687a551 100644
--- a/code/modules/hydroponics/grown/cereals.dm
+++ b/code/modules/hydroponics/grown/cereals.dm
@@ -21,6 +21,7 @@
icon_state = "wheat"
filling_color = "#F0E68C"
bitesize_mod = 2
+ distill_reagent = "beer"
// Oat
/obj/item/seeds/wheat/oat
@@ -40,6 +41,7 @@
icon_state = "oat"
filling_color = "#556B2F"
bitesize_mod = 2
+ distill_reagent = "ale"
// Rice
/obj/item/seeds/wheat/rice
@@ -60,6 +62,7 @@
icon_state = "rice"
filling_color = "#FAFAD2"
bitesize_mod = 2
+ distill_reagent = "sake"
//Meatwheat - grows into synthetic meat
/obj/item/seeds/wheat/meat
@@ -80,6 +83,7 @@
filling_color = rgb(150, 0, 0)
bitesize_mod = 2
seed = /obj/item/seeds/wheat/meat
+ 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 f8bf515ce6b..5f4621eff16 100644
--- a/code/modules/hydroponics/grown/chili.dm
+++ b/code/modules/hydroponics/grown/chili.dm
@@ -25,6 +25,7 @@
icon_state = "chilipepper"
filling_color = "#FF0000"
bitesize_mod = 2
+ wine_power = 0.2
// Ice Chili
/obj/item/seeds/chili/ice
@@ -49,6 +50,7 @@
filling_color = "#0000CD"
bitesize_mod = 2
origin_tech = "biotech=4"
+ wine_power = 0.3
// Ghost Chili
/obj/item/seeds/chili/ghost
@@ -74,3 +76,4 @@
filling_color = "#F8F8FF"
bitesize_mod = 4
origin_tech = "biotech=4;magnets=5"
+ wine_power = 0.5
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index 86bc8082661..b6e4a36d164 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -5,6 +5,7 @@
desc = "It's so sour, your face will twist."
icon_state = "lime"
bitesize_mod = 2
+ wine_power = 0.3
// Lime
/obj/item/seeds/lime
@@ -29,6 +30,7 @@
desc = "It's so sour, your face will twist."
icon_state = "lime"
filling_color = "#00FF00"
+ distill_reagent = "triple_sec"
// Orange
/obj/item/seeds/orange
@@ -104,6 +106,8 @@
desc = "Made for burning houses down."
icon_state = "firelemon"
bitesize_mod = 2
+ wine_power = 0.7
+ wine_flavor = "fire"
/obj/item/reagent_containers/food/snacks/grown/firelemon/attack_self(mob/living/user)
var/area/A = get_area(user)
diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm
index 0ca061af745..745aa006498 100644
--- a/code/modules/hydroponics/grown/cocoa_vanilla.dm
+++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm
@@ -25,6 +25,7 @@
icon_state = "cocoapod"
filling_color = "#FFD700"
bitesize_mod = 2
+ distill_reagent = "creme_de_cacao"
// Vanilla Pod
/obj/item/seeds/cocoapod/vanillapod
@@ -43,4 +44,5 @@
name = "vanilla pod"
desc = "Fattening... Mmmmm... vanilla."
icon_state = "vanillapod"
- filling_color = "#FFD700"
\ No newline at end of file
+ filling_color = "#FFD700"
+ distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it.
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm
index 693818c9537..dca121d1acb 100644
--- a/code/modules/hydroponics/grown/corn.dm
+++ b/code/modules/hydroponics/grown/corn.dm
@@ -24,6 +24,8 @@
filling_color = "#FFFF00"
trash = /obj/item/grown/corncob
bitesize_mod = 2
+ distill_reagent = "whiskey"
+ wine_power = 0.4
/obj/item/grown/corncob
name = "corn cob"
diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm
index d9a243eab6f..b9244bfd3ec 100644
--- a/code/modules/hydroponics/grown/eggplant.dm
+++ b/code/modules/hydroponics/grown/eggplant.dm
@@ -22,6 +22,7 @@
icon_state = "eggplant"
filling_color = "#800080"
bitesize_mod = 2
+ wine_power = 0.2
// Egg-Plant
/obj/item/seeds/eggplant/eggy
@@ -41,4 +42,5 @@
icon_state = "eggyplant"
trash = /obj/item/reagent_containers/food/snacks/egg
filling_color = "#F8F8FF"
- bitesize_mod = 2
\ No newline at end of file
+ bitesize_mod = 2
+ distill_reagent = "eggnog"
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index b8d88ebf0c9..adbb5f3152c 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -25,6 +25,7 @@
slot_flags = SLOT_HEAD
filling_color = "#FF6347"
bitesize_mod = 3
+ distill_reagent = "vermouth"
// Lily
/obj/item/seeds/poppy/lily
@@ -88,6 +89,7 @@
slot_flags = SLOT_HEAD
filling_color = "#E6E6FA"
bitesize_mod = 3
+ distill_reagent = "vermouth"
// Sunflower
@@ -145,6 +147,7 @@
slot_flags = SLOT_HEAD
filling_color = "#E6E6FA"
bitesize_mod = 2
+ distill_reagent = "absinthe"
// 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 5113a8454f3..c45899a310b 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 = 0.15
/obj/item/reagent_containers/food/snacks/grown/grass/attack_self(mob/user)
to_chat(user, "You prepare the astroturf.")
@@ -65,3 +66,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 ba67bf426fa..eea80e17e60 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -95,3 +95,4 @@
icon_state = "kudzupod"
filling_color = "#6B8E23"
bitesize_mod = 2
+ wine_power = 0.2
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index be548339d39..ed7608e21b9 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -25,6 +25,7 @@
w_class = WEIGHT_CLASS_NORMAL
filling_color = "#008000"
bitesize_mod = 3
+ wine_power = 0.4
// Holymelon
/obj/item/seeds/watermelon/holy
@@ -45,3 +46,5 @@
icon_state = "holymelon"
filling_color = "#FFD700"
dried_type = null
+ wine_power = 0.7 //Water to wine, baby.
+ wine_flavor = "divinity"
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index df58b55c333..605f5082522 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -53,6 +53,7 @@
icon_state = "cabbage"
filling_color = "#90EE90"
bitesize_mod = 2
+ wine_power = 0.2
// Sugarcane
@@ -78,6 +79,7 @@
icon_state = "sugarcane"
filling_color = "#FFD700"
bitesize_mod = 2
+ distill_reagent = "rum"
// Gatfruit
@@ -108,6 +110,7 @@
origin_tech = "combat=6"
trash = /obj/item/gun/projectile/revolver
bitesize_mod = 2
+ wine_power = 0.9 //It burns going down, too.
//Cherry Bombs
/obj/item/seeds/cherry/bomb
@@ -129,6 +132,7 @@
seed = /obj/item/seeds/cherry/bomb
bitesize_mod = 2
volume = 125 //Gives enough room for the black powder at max potency
+ wine_power = 0.8
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user)
var/area/A = get_area(user)
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
index 95ea83cd424..14c4b2a252a 100644
--- a/code/modules/hydroponics/grown/mushrooms.dm
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -1,6 +1,7 @@
/obj/item/reagent_containers/food/snacks/grown/mushroom
name = "mushroom"
bitesize_mod = 2
+ wine_power = 0.4
// Reishi
@@ -84,6 +85,7 @@
desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amanitin."
icon_state = "angel"
filling_color = "#C0C0C0"
+ wine_power = 0.6
// Liberty Cap
@@ -109,6 +111,8 @@
desc = "Psilocybe Semilanceata: Liberate yourself!"
icon_state = "libertycap"
filling_color = "#DAA520"
+ wine_power = 0.8
+ wine_flavor = "freedom"
// Plump Helmet
@@ -135,6 +139,7 @@
desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
icon_state = "plumphelmet"
filling_color = "#9370DB"
+ distill_reagent = "manlydorf"
// Walking Mushroom
@@ -161,6 +166,7 @@
icon_state = "walkingmushroom"
filling_color = "#9370DB"
origin_tech = "biotech=4;programming=5"
+ can_distill = FALSE
/obj/item/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user)
if(istype(user.loc, /turf/space))
@@ -232,6 +238,7 @@
var/effect_path = /obj/structure/glowshroom
origin_tech = "biotech=4;plasmatech=6"
light_color = "#006622"
+ wine_power = 0.5
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
if(istype(user.loc, /turf/space))
@@ -280,6 +287,8 @@
effect_path = /obj/structure/glowshroom/glowcap
origin_tech = "biotech=4;powerstorage=6;plasmatech=4"
light_color = "#8E0300"
+ wine_power = 0.6
+ wine_flavor = "warmth"
// Fungus/Mold
/obj/item/seeds/fungus
@@ -326,3 +335,5 @@
icon_state = "shadowshroom"
effect_path = /obj/structure/glowshroom/shadowshroom
origin_tech = "biotech=4;plasmatech=4;magnets=4"
+ wine_power = 0.6
+ wine_flavor = "strange coldness"
diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm
index 93176799802..e39548d9e7c 100644
--- a/code/modules/hydroponics/grown/onion.dm
+++ b/code/modules/hydroponics/grown/onion.dm
@@ -25,6 +25,8 @@
bitesize_mod = 2
slice_path = /obj/item/reagent_containers/food/snacks/onion_slice
slices_num = 2
+ wine_power = 0.2
+ wine_flavor = "pungentness"
/obj/item/seeds/onion/red
name = "pack of red onion seeds"
@@ -43,6 +45,8 @@
icon_state = "onion_red"
filling_color = "#C29ACF"
slice_path = /obj/item/reagent_containers/food/snacks/onion_slice/red
+ wine_power = 0.6
+ wine_flavor = "powerful pungentness"
/obj/item/reagent_containers/food/snacks/onion_slice
name = "onion slices"
diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm
index 2e0825151c6..589f9456bc2 100644
--- a/code/modules/hydroponics/grown/pineapple.dm
+++ b/code/modules/hydroponics/grown/pineapple.dm
@@ -24,4 +24,5 @@
icon_state = "pineapple"
filling_color = "#e5b437"
w_class = WEIGHT_CLASS_NORMAL
- bitesize_mod = 3
\ No newline at end of file
+ bitesize_mod = 3
+ wine_power = 0.4
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm
index 2692ee8adf8..655cb6d69bd 100644
--- a/code/modules/hydroponics/grown/potato.dm
+++ b/code/modules/hydroponics/grown/potato.dm
@@ -25,6 +25,7 @@
icon_state = "potato"
filling_color = "#E9967A"
bitesize = 100
+ distill_reagent = "vodka"
/obj/item/reagent_containers/food/snacks/grown/potato/wedges
@@ -33,6 +34,7 @@
icon_state = "potato_wedges"
filling_color = "#E9967A"
bitesize = 100
+ distill_reagent = "sbiten"
/obj/item/reagent_containers/food/snacks/grown/potato/attackby(obj/item/W, mob/user, params)
diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm
index 9668379442d..f05a6847dc2 100644
--- a/code/modules/hydroponics/grown/pumpkin.dm
+++ b/code/modules/hydroponics/grown/pumpkin.dm
@@ -23,6 +23,7 @@
icon_state = "pumpkin"
filling_color = "#FFA500"
bitesize_mod = 2
+ wine_power = 0.2
/obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params)
if(is_sharp(W))
@@ -52,3 +53,4 @@
icon_state = "blumpkin"
filling_color = "#87CEFA"
bitesize_mod = 2
+ wine_power = 0.5
diff --git a/code/modules/hydroponics/grown/random.dm b/code/modules/hydroponics/grown/random.dm
index 734adae15be..f743989cb4a 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(0.1,1.5)
+ if(prob(1))
+ wine_power = 2.0
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm
index 7f26176c675..35bb5ee195c 100644
--- a/code/modules/hydroponics/grown/root.dm
+++ b/code/modules/hydroponics/grown/root.dm
@@ -21,6 +21,7 @@
icon_state = "carrot"
filling_color = "#FFA500"
bitesize_mod = 2
+ wine_power = 0.3
/obj/item/reagent_containers/food/snacks/grown/carrot/wedges
name = "carrot wedges"
@@ -59,6 +60,7 @@
desc = "Closely related to carrots."
icon_state = "parsnip"
bitesize_mod = 2
+ wine_power = 0.35
// White-Beet
@@ -84,6 +86,7 @@
icon_state = "whitebeet"
filling_color = "#F4A460"
bitesize_mod = 2
+ wine_power = 0.4
// Red Beet
/obj/item/seeds/redbeet
@@ -107,3 +110,4 @@
desc = "You can't beat red beet."
icon_state = "redbeet"
bitesize_mod = 2
+ wine_power = 0.6
diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm
index bd3b182c132..1139c03cad5 100644
--- a/code/modules/hydroponics/grown/tea_coffee.dm
+++ b/code/modules/hydroponics/grown/tea_coffee.dm
@@ -22,6 +22,7 @@
desc = "These aromatic tips of the tea plant can be dried to make tea."
icon_state = "tea_aspera_leaves"
filling_color = "#008000"
+ can_distill = FALSE
// Tea Astra
/obj/item/seeds/tea/astra
@@ -67,6 +68,7 @@
icon_state = "coffee_arabica"
filling_color = "#DC143C"
bitesize_mod = 2
+ 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 de235280b02..95333bba31a 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 = 0.5
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index 3adf57c4021..58bf18057ad 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -22,6 +22,7 @@
splat_type = /obj/effect/decal/cleanable/tomato_smudge
filling_color = "#FF6347"
bitesize_mod = 2
+ distill_reagent = "enzyme"
// Blood Tomato
/obj/item/seeds/tomato/blood
@@ -43,6 +44,7 @@
splat_type = /obj/effect/gibspawner/generic
filling_color = "#FF0000"
origin_tech = "biotech=5"
+ distill_reagent = "bloodymary"
// Blue Tomato
@@ -89,6 +91,8 @@
desc = "So lubricated, you might slip through space-time."
icon_state = "bluespacetomato"
origin_tech = "biotech=4;bluespace=5"
+ distill_reagent = null
+ wine_power = 0.8
// Killer Tomato
@@ -117,6 +121,7 @@
var/awakening = 0
filling_color = "#FF0000"
origin_tech = "biotech=4;combat=5"
+ 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 364a918c0ff..0e0d248d8b7 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -7,7 +7,7 @@
var/harvested_name = "shortened mushrooms"
var/harvested_desc = "Some quickly regrowing mushrooms, formerly known to be quite large."
var/needs_sharp_harvest = TRUE
- var/harvest = /obj/item/reagent_containers/food/snacks/ash_flora/shavings
+ var/harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings
var/harvest_amount_low = 1
var/harvest_amount_high = 3
var/harvest_time = 60
@@ -79,7 +79,7 @@
desc = "A number of mushrooms, each of which surrounds a greenish sporangium with a number of leaf-like structures."
harvested_name = "leafless mushrooms"
harvested_desc = "A bunch of formerly-leafed mushrooms, with their sporangiums exposed. Scandalous?"
- harvest = /obj/item/reagent_containers/food/snacks/ash_flora/mushroom_leaf
+ harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf
needs_sharp_harvest = FALSE
harvest_amount_high = 4
harvest_time = 20
@@ -95,7 +95,7 @@
desc = "Several mushrooms, the larger of which have a ring of conks at the midpoint of their stems."
harvested_name = "small mushrooms"
harvested_desc = "Several small mushrooms near the stumps of what likely were larger mushrooms."
- harvest = /obj/item/reagent_containers/food/snacks/ash_flora/mushroom_cap
+ harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
harvest_amount_high = 4
harvest_time = 50
harvest_message_low = "You slice the cap off of a mushroom."
@@ -111,7 +111,7 @@
luminosity = 1
harvested_name = "tiny mushrooms"
harvested_desc = "A few tiny mushrooms around larger stumps. You can already see them growing back."
- harvest = /obj/item/reagent_containers/food/snacks/ash_flora/mushroom_stem
+ harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
harvest_amount_high = 4
harvest_time = 40
harvest_message_low = "You pick and slice the cap off of a mushroom, leaving the stem."
@@ -126,7 +126,7 @@
desc = "Several prickly cacti, brimming with ripe fruit and covered in a thin layer of ash."
harvested_name = "cacti"
harvested_desc = "A bunch of prickly cacti. You can see fruits slowly growing beneath the covering of ash."
- harvest = /obj/item/reagent_containers/food/snacks/ash_flora/cactus_fruit
+ harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit
needs_sharp_harvest = FALSE
harvest_amount_high = 2
harvest_time = 10
@@ -149,45 +149,51 @@
H.visible_message("[H] steps on a cactus!", \
"You step on a cactus!")
-/obj/item/reagent_containers/food/snacks/ash_flora
+/obj/item/reagent_containers/food/snacks/grown/ash_flora
name = "mushroom shavings"
desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl."
icon = 'icons/obj/lavaland/ash_flora.dmi'
icon_state = "mushroom_shavings"
list_reagents = list("sugar" = 3, "ethanol" = 2, "stabilizing_agent" = 3, "minttoxin" = 2)
w_class = WEIGHT_CLASS_TINY
+ wine_power = 0.2
-/obj/item/reagent_containers/food/snacks/ash_flora/New()
+/obj/item/reagent_containers/food/snacks/grown/ash_flora/New()
..()
pixel_x = rand(-4, 4)
pixel_y = rand(-4, 4)
-/obj/item/reagent_containers/food/snacks/ash_flora/shavings //for actual crafting
+/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings //for actual crafting
-/obj/item/reagent_containers/food/snacks/ash_flora/mushroom_leaf
+/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf
name = "mushroom leaf"
desc = "A leaf, from a mushroom."
list_reagents = list("nutriment" = 3, "vitfro" = 2, "nicotine" = 2)
icon_state = "mushroom_leaf"
+ wine_power = 0.4
-/obj/item/reagent_containers/food/snacks/ash_flora/mushroom_cap
+/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
name = "mushroom cap"
desc = "The cap of a large mushroom."
list_reagents = list("lsd" = 2, "entpoly" = 4, "psilocybin" = 2)
icon_state = "mushroom_cap"
+ wine_power = 0.7
-/obj/item/reagent_containers/food/snacks/ash_flora/mushroom_stem
+
+/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
name = "mushroom stem"
desc = "A long mushroom stem. It's slightly glowing."
list_reagents = list("tinlux" = 2, "vitamin" = 1, "space_drugs" = 1)
icon_state = "mushroom_stem"
luminosity = 1
+ wine_power = 0.6
-/obj/item/reagent_containers/food/snacks/ash_flora/cactus_fruit
+/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit
name = "cactus fruit"
list_reagents = list("vitamin" = 2, "nutriment" = 2, "vitfro" = 4)
desc = "A cactus fruit covered in a thick, reddish skin. And some ash."
icon_state = "cactus_fruit"
+ wine_power = 0.5
/obj/item/mushroom_bowl
name = "mushroom bowl"
@@ -200,6 +206,6 @@
/datum/crafting_recipe/mushroom_bowl
name = "Mushroom Bowl"
result = /obj/item/reagent_containers/food/drinks/mushroom_bowl
- reqs = list(/obj/item/reagent_containers/food/snacks/ash_flora/shavings = 5)
+ reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5)
time = 30
category = CAT_PRIMAL
diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm
index c74e5973bf7..9a74b155e52 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol.dm
@@ -1236,3 +1236,107 @@
drink_icon = "synthignonglass"
drink_name = "Glass of Synthignon"
drink_desc = "Someone mixed good wine and robot booze. Romantic, but atrocious."
+
+/datum/reagent/consumable/ethanol/fruit_wine
+ name = "Fruit Wine"
+ id = "fruit_wine"
+ description = "A wine made from grown plants."
+ color = "#FFFFFF"
+ alcohol_perc = 0.35
+ taste_message = "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"]
+ alcohol_perc = data["alcohol_perc"]
+ 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
+
+ alcohol_perc *= oldvolume
+ var/newzepwr = data["alcohol_perc"] * amount
+ alcohol_perc += newzepwr
+ alcohol_perc /= volume //Blending alcohol percentage 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()
+ drink_name = "glass of [name]"
+ drink_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(alcohol_perc)
+ if(1.2 to INFINITY)
+ alcohol_description = "suicidally strong"
+ if(0.9 to 1.2)
+ alcohol_description = "rather strong"
+ if(0.7 to 0.9)
+ alcohol_description = "strong"
+ if(0.4 to 0.7)
+ alcohol_description = "rich"
+ if(0.2 to 0.4)
+ alcohol_description = "mild"
+ if(0 to 0.2)
+ 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_message = flavor
+ if(holder.my_atom)
+ holder.my_atom.on_reagent_change()
diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm
index 69030fafa74..e82dbda249d 100644
--- a/code/modules/reagents/reagent_containers/glass_containers.dm
+++ b/code/modules/reagents/reagent_containers/glass_containers.dm
@@ -95,7 +95,6 @@
spawn(5) reagents.clear_reagents()
return
else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
-
if(target.reagents && !target.reagents.total_volume)
to_chat(user, "[target] is empty and can't be refilled!")
return
@@ -107,7 +106,7 @@
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
to_chat(user, "You fill [src] with [trans] unit\s of the contents of [target].")
- else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
+ else if(target.is_refillable() && is_drainable()) //Something like a glass. Player probably wants to transfer TO it.
if(!reagents.total_volume)
to_chat(user, "[src] is empty.")
return
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index 1206aa48dfc..f9c13a5c332 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 9016178f64b..9c2e5e7a110 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1475,6 +1475,7 @@
#include "code\modules\holiday\christmas.dm"
#include "code\modules\holiday\holiday.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"