Adds Tapioca and Cassava plants (#30937)

* dat

* Fixes a few issues and makes the pudding look good

* fixes all sprites with hope

* actually should fix the sprites

* fixes cassava sprites and dough recipe oversight

* fixes tabbing issues and prevents botany gaming

* makes the linter happier + deletes duplicate file

* changes many things about the order

* generalizes the food reagentcontainer + linter gud

* fixes the merge conflict

* removes the settings on my vs code from my pr

Signed-off-by: funglios8s <167113955+funglios8s@users.noreply.github.com>

* Adds suggested changes

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: funglios8s <167113955+funglios8s@users.noreply.github.com>

* adds an abstract description

* fixes an accidental deletion of vscodesettings

* Update code/modules/reagents/reagent_containers/food.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: funglios8s <167113955+funglios8s@users.noreply.github.com>

* adds a missing typepath

* Apply suggestions from code review

Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Signed-off-by: funglios8s <167113955+funglios8s@users.noreply.github.com>

* Propose 2 tapioca pudding sprites.

* removes unused tapioca pudding sprite

* fixes my paradise.dme file

* Add new teas to the bar manual.

* adds alfalfa scout's recommended mix message

* attempts a fix for the .dme file

* removes a deconflicter mistake

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: funglios8s <167113955+funglios8s@users.noreply.github.com>

---------

Signed-off-by: funglios8s <167113955+funglios8s@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Co-authored-by: Alfalfa Scout <alfalfascout@proton.me>
This commit is contained in:
funglios8s
2025-12-01 19:12:50 +00:00
committed by GitHub
co-authored by DGamerL PollardTheDragon Alfalfa Scout
parent a1fc8db55f
commit 6a6f81131e
21 changed files with 275 additions and 9 deletions
@@ -586,3 +586,11 @@
PCWJ_ADD_ITEM(/obj/item/food/sliced/tomato),
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
)
/datum/cooking/recipe/drytapioca_pearls
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/reagent_containers/food/drytapioca_pearls
catalog_category = COOKBOOK_CATEGORY_SIDES
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/tapiocadough)
)
@@ -1181,3 +1181,12 @@
PCWJ_ADD_ITEM(/obj/item/food/meatball),
PCWJ_USE_OVEN(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/tapiocaflatbread
container_type = /obj/item/reagent_containers/cooking/oven
product_type = /obj/item/food/tapiocaflatbread
catalog_category = COOKBOOK_CATEGORY_BREAD
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/tapiocadough),
PCWJ_USE_OVEN(J_MED, 15 SECONDS),
)
@@ -810,3 +810,14 @@
PCWJ_ADD_ITEM(/obj/item/food/choc_pile),
PCWJ_USE_STOVE(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/tapioca_pudding
container_type =/obj/item/reagent_containers/cooking/pot
product_type = /obj/item/food/tapioca_pudding
catalog_category = COOKBOOK_CATEGORY_DESSERTS
steps = list(
PCWJ_ADD_REAGENT("tapioca", 5),
PCWJ_ADD_REAGENT("milk", 5),
PCWJ_ADD_REAGENT("sugar", 5),
PCWJ_USE_STOVE(J_MED, 20 SECONDS),
)
@@ -1341,3 +1341,15 @@
#undef DONUT_NORMAL
#undef DONUT_FROSTED
/obj/item/food/tapiocaflatbread
name = "tapioca flatbread"
desc = "A delicious flatbread made from tapioca."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "tapioca_flatbread"
bitesize = 4
filling_color = "#ecb54f"
list_reagents = list("nutriment" = 4, "sugar" = 2)
tastes = list("tapioca" = 0.5, "flat" = 0.25, "bread" = 0.25)
goal_difficulty = FOOD_GOAL_HARD
@@ -59,3 +59,13 @@
filling_color = "#F2F2F2"
list_reagents = list("minttoxin" = 1)
goal_difficulty = FOOD_GOAL_NORMAL
/obj/item/food/tapioca_pudding
name = "tapioca pudding"
desc = "A bubbly and sweet pudding."
icon_state = "tapiocapudding"
bitesize = 4
filling_color = "#c4c5bb"
list_reagents = list("sugar" = 3, "milk" = 2)
tastes = list("vanilla" = 2, "chewiness" = 1)
goal_difficulty = FOOD_GOAL_HARD
@@ -294,7 +294,6 @@
return ITEM_INTERACT_COMPLETE
return NONE
/obj/item/food/rawcookies/chocochips
desc = "Ready for oven! They have little pieces of chocolate all over them"
@@ -302,6 +301,14 @@
list_reagents = list("nutriment" = 5, "sugar" = 5, "chocolate" = 5)
tastes = list("dough" = 1, "sugar" = 1, "chocolate" = 1)
/obj/item/food/tapiocadough
name = "uncooked tapioca dough"
desc = "A flat piece of uncooked tapioca dough."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "tapioca_dough"
list_reagents = list("tapioca" = 5, "water" = 2)
tastes = list ("raw dough" = 1)
//////////////////////
// Chocolate //
//////////////////////
+44
View File
@@ -0,0 +1,44 @@
// cassava root
/obj/item/seeds/cassava
name = "pack of cassava seeds"
desc = "These seeds grow into Cassava."
icon_state = "seed-cassava"
species = "cassava"
plantname = "Cassava"
product = /obj/item/food/grown/cassava
lifespan = 50
endurance = 35
yield = 5
growthstages = 3
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
icon_grow = "cassava-grow"
icon_dead = "cassava-dead"
mutatelist = list(/obj/item/seeds/cassava/iron)
reagents_add = list("tapioca" = 0.4, "nutriment" = 0.1)
/obj/item/food/grown/cassava
seed = /obj/item/seeds/cassava
name = "cassava root"
desc = "The root of the cassava plant. Nice."
icon_state = "cassava"
filling_color = "#d1d1bcff"
bitesize = 5
tastes = list("dirt" = 0.75, "starch" = 0.25)
// Cast-ava root (cast iron, i really was trying to think of puns for this but :shrug:)
/obj/item/seeds/cassava/iron
name = "pack of cast-ava seeds."
desc = "These grow into cassava that are made of softened cast-iron steel."
species = "ironcassava"
plantname = "Cast-ava"
product = /obj/item/food/grown/cassava/iron
mutatelist = list()
reagents_add = list("nutriment" = 0.4, "tapioca" = 0.1)
/obj/item/food/grown/cassava/iron
seed = /obj/item/seeds/cassava/iron
name = "cast-ava root"
desc = "A cassava root that looks like it was forged out of cast-iron."
icon_state = "ironcassava"
filling_color = "#333333ff"
distill_reagent = null
@@ -822,6 +822,47 @@
M.satiety += 5
return ..()
/datum/reagent/consumable/drink/tapioca_pearls
name = "Tapioca Pearls"
description = "Tapioca pearls made from starch ground by cassava root. Tastes pretty good in tea."
id = "tapiocapearls"
color = "#222222"
drink_icon = "tapiocapearl"
drink_name = "Tapioca Pearls"
drink_desc = "This would go great with sugar, milk, and tea."
taste_description = "chewy starch"
/datum/reagent/consumable/drink/bubbletea
name = "Bubble Tea"
description = "A tea-based drink made with tapioca pearls. Known by some as boba tea."
id = "bubbletea"
color = "#c79a47"
drink_icon = "bubbletea"
drink_name = "Bubble Tea"
drink_desc = "You feel trendy for drinking this."
taste_description = "sweet tea with chewy pearls"
/datum/reagent/consumable/drink/milktea
name = "Milk Tea"
description = "Tea and milk mixed together. Both sweet and creamy."
id = "milktea"
color = "#bfa46f"
drink_icon = "milktea"
drink_name = "Milk Tea"
drink_desc = "A refreshing and sweet beverage."
taste_description = "sweet milky tea"
/datum/reagent/consumable/drink/bubblemilktea
name = "Bubble Milk Tea"
description = "A tea-based drink made with milk and tapioca pearls. Known by some as boba milk tea."
id = "bubblemilktea"
color = "#d4b483"
drink_icon = "bubblemilktea"
drink_name = "Bubble Milk Tea"
drink_desc = "You feel extra trendy for drinking this."
taste_description = "sweet milky tea with chewy pearls"
/datum/reagent/consumable/drink/royrogers
name = "Roy Rogers"
description = "A cola classic from the days of Earth."
@@ -1034,3 +1034,17 @@
color = "#ffffff"
goal_department = "Kitchen"
goal_difficulty = REAGENT_GOAL_NORMAL
/datum/reagent/consumable/tapioca_powder
name = "Tapioca Powder"
id = "tapioca"
description = "A starchy powder made by grinding up cassava. Would be good mixed with water."
color = "#DFDFDF" // rgb: 223, 223, 223
taste_description = "starchy powder"
/datum/reagent/consumable/drytapioca_pearls
name = "Dry Tapioca Pearls"
id = "drytapioca"
description = "Small, hard balls of dried tapioca powder."
color = "#DFDFDF" // rgb: 223, 223, 223
taste_description = "dry starchy pearls"
@@ -1158,6 +1158,41 @@
result_amount = 5
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/tapioca_pearls
name = "Tapioca Pearls"
id = "tapiocapearls"
result = "tapiocapearls"
required_reagents = list("drytapioca" = 1, "water" = 1)
result_amount = 2
min_temp = T0C + 100
mix_message = "The pearls turn plump and translucent as they cook through."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/bubbletea
name = "Bubble Tea"
id = "bubbletea"
result = "bubbletea"
required_reagents = list("tea" = 2, "sugar" = 1, "tapiocapearls" = 1)
result_amount = 4
mix_message = "The pearls fall to the bottom of the glass as the tea mixes with the sugar."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/milktea
name = "Milk Tea"
id = "milktea"
result = "milktea"
required_reagents = list("tea" = 1, "sugar" = 1, "milk" = 1)
result_amount = 3
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/bubblemilktea
name = "Bubble Milk Tea"
id = "bubblemilktea"
result = "bubblemilktea"
required_reagents = list("milktea" = 3, "tapiocapearls" = 1)
result_amount = 4
/datum/chemical_reaction/royrogers
name = "Roy Rogers"
id = "royrogers"
@@ -258,3 +258,16 @@
result = "vinegar"
required_reagents = list("acetic_acid" = 1, "water" = 9)
result_amount = 10
/datum/chemical_reaction/tapiocadough
name = "Tapioca dough"
id = "tapiocadough"
result = null
required_reagents = list("water" = 10, "tapioca" = 15)
result_amount = 1
mix_message = "The ingredients form a flat dough."
/datum/chemical_reaction/tapiocadough/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i in 1 to created_volume)
new /obj/item/food/tapiocadough(location)
@@ -0,0 +1,53 @@
// This is a base used for food ingredients that is to be turned into a reagent, it's mainly pill code, with no swallowing function.
/obj/item/reagent_containers/food
name = "food item"
desc = ABSTRACT_TYPE_DESC
inhand_icon_state = "tapioca_drypearls" // placeholder
possible_transfer_amounts = null
visible_transfer_rate = FALSE
volume = 10
/obj/item/reagent_containers/food/activate_self(mob/user)
if(..())
return FINISH_ATTACK
apply(user, user)
/obj/item/reagent_containers/food/proc/apply(mob/living/carbon/C, mob/user)
if(!istype(C))
return FALSE
if(!reagents.total_volume)
qdel(src)
return TRUE
/obj/item/reagent_containers/food/interact_with_atom(atom/target, mob/living/user, list/modifiers)
if(isnull(target.reagents))
return
return ..()
/obj/item/reagent_containers/food/mob_act(mob/target, mob/living/user)
apply(target, user)
return TRUE
/obj/item/reagent_containers/food/normal_act(atom/target, mob/living/user)
. = TRUE
if(!target.is_refillable())
return
if(target.reagents.holder_full())
to_chat(user, "<span class='warning'>[target] is full.</span>")
return
to_chat(user, "<span class='notice'>You [!target.reagents.total_volume ? "pour" : "dump"] [src] in [target].</span>")
for(var/mob/O as anything in oviewers(2, user))
O.show_message("<span class='warning'>[user] puts something in [target].</span>", 1)
reagents.trans_to(target, reagents.total_volume)
qdel(src)
/obj/item/reagent_containers/food/drytapioca_pearls
name = "dry tapioca pearls"
desc = "Small, hard balls of dried tapioca powder."
icon = 'icons/obj/food/food_ingredients.dmi'
icon_state = "tapioca_drypearls"
list_reagents = list("drytapioca" = 10)