Cooking with Konyang (New foods, food upgrades, and food tweaks) (#20570)

-Adds 8 new food dishes, among them 6 Asian/Konyanger from cuisine (Moss
burger, moss big bite burger, sweet chili chicken, crimson lime,
vegetable eggrolls, and meat eggrolls) and 2 other dishes (dodo ikire
and mozzarella sticks)
-Adds sweet chili sauce
-Adds Macarons to the custom foods you can make with the oven
-Waffles and fries now visually change based on specific syrups or
condiments you pour onto them much like pancakes already do.
-Removed the aspect of batter that makes people nauseous after consuming
it because it was breaking a lot of fried foods.
-Rearranges a bit of code so things are in the right category
-Makes produce boxes more likely to have onions and garlic in them since
there are a lot of recipes that require them.

(NOTE: If/when giving feedback please keep in mind my knowledge of code
is very limited, I may not know some terms you refer to, and some of the
code for more advanced mechanics has been copied and edited from other,
pre-existing bits in the code.)

---------

Signed-off-by: tomixcomics <11053204+tomixcomics@users.noreply.github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
This commit is contained in:
tomixcomics
2025-03-10 08:08:01 +00:00
committed by GitHub
co-authored by Fluffy
parent 7a7999b58d
commit c2f17a187d
20 changed files with 493 additions and 24 deletions
@@ -159,14 +159,6 @@
M.add_chemical_effect(CE_BLOODRESTORE, blood_factor * removed)
M.intoxication -= min(M.intoxication,nut_fact*removed*0.05) //Nutrients can absorb alcohol.
/singleton/reagent/nutriment/coating/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if (!holder.reagent_data[type]["cooked"])
//Raw coatings will sometimes cause vomiting
if (ishuman(M) && prob(1))
var/mob/living/carbon/human/H = M
H.delayed_vomit()
. = ..()
/singleton/reagent/nutriment/coating/initialize_data(var/list/newdata, var/datum/reagents/holder) // Called when the reagent is created.
var/list/data = ..()
LAZYSET(data, "cooked", istype(holder?.my_atom,/obj/item/reagent_containers/food/snacks))
@@ -754,6 +746,18 @@
if(.)
M.add_chemical_effect(CE_ANTIPARASITE, 10)
/singleton/reagent/nutriment/sweet_chili
name = "Sweet Chili Sauce"
description = "Spicy AND sweet!"
reagent_state = LIQUID
color = "#dd4103"
taste_description = "sweet chili"
taste_mult = 1.5
value = 0.2
condiment_name = "sweet chili"
condiment_desc = "Sweet chili sauce, for those who want spicy food but are afraid to commit."
condiment_icon_state = "sweet_chili"
/singleton/reagent/nutriment/mayonnaise
name = "Mayonnaise"
description = "Mayonnaise, a staple classic for sandwiches."
@@ -1851,6 +1851,13 @@
required_reagents = list(/singleton/reagent/drink/garlicjuice = 1, /singleton/reagent/nutriment/triglyceride/oil/corn = 1)
result_amount = 2
/datum/chemical_reaction/sweet_chili
name = "Sweet Chili Sauce"
id = "sweet_chili"
result = /singleton/reagent/nutriment/sweet_chili
required_reagents = list(/singleton/reagent/sugar = 1, /singleton/reagent/capsaicin = 1)
result_amount = 2
/datum/chemical_reaction/peanutbutter // Yes, this doesn't make sense. No, I don't know how to do this better
name = "Peanut Butter"
id = "peanutbutter"
@@ -441,3 +441,10 @@
desc = "Contains 5u of phoron."
icon_state = "packet_small_yellow"
reagents_to_add = list(/singleton/reagent/toxin/phoron = 5)
/obj/item/reagent_containers/food/condiment/sweet_chili
icon_state = "sweet_chili"
name = "sweet chili"
empty_icon_state = "sweet_chili_empty"
reagents_to_add = list(/singleton/reagent/nutriment/sweet_chili = 50)
amount_per_transfer_from_this = 1
@@ -10,7 +10,7 @@
reagent_data = list(/singleton/reagent/nutriment = list("bun" = 3))
bitesize = 2
// Burger + cheese wedge = cheeseburger
// Burger + specific toppings = special burger
/obj/item/reagent_containers/food/snacks/burger/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/reagent_containers/food/snacks/cheesewedge))// && !istype(src,/obj/item/reagent_containers/food/snacks/cheesewedge))
new /obj/item/reagent_containers/food/snacks/burger/cheese(src)
@@ -24,6 +24,14 @@
qdel(attacking_item)
qdel(src)
return
else if(istype(attacking_item, /obj/item/reagent_containers/food/snacks/grown)) // Burger + Moss = A "less authentic" mossburger
var/obj/item/reagent_containers/food/snacks/grown/S = attacking_item
if(istype(S.seed, /datum/seed/grass/moss))
new /obj/item/reagent_containers/food/snacks/burger/moss/sad(src)
to_chat(user, "You sprinkle some moss on top of the burger.")
qdel(attacking_item)
qdel(src)
return
else if(istype(attacking_item, /obj/item/reagent_containers/food/snacks))
var/obj/item/reagent_containers/food/snacks/csandwich/burger/B = new(get_turf(src))
B.attackby(attacking_item, user)
@@ -247,3 +255,26 @@
/obj/item/reagent_containers/food/snacks/burger/nakarka_hamburger/ungrilled
reagents_to_add = list(/singleton/reagent/nutriment = 4, /singleton/reagent/nakarka = 2, /singleton/reagent/nutriment/protein = 3)
/obj/item/reagent_containers/food/snacks/burger/moss
name = "mossburger"
desc = "A Konyanger staple, popularized by the fast food chain 'UP! Burger'. The moss is cooked along with the meat, giving it a unique flavor."
icon_state = "mossburger"
filling_color = "#8eb866"
center_of_mass = list("x"=16, "y"=11)
reagents_to_add = list(/singleton/reagent/nutriment = 4)
reagent_data = list(/singleton/reagent/nutriment = list("mossy crunch" = 4))
/obj/item/reagent_containers/food/snacks/burger/moss/sad //The result of making the burger without cooking the moss together with the meat. Basically the same, but looks less impressive.
desc = "A Konyanger staple, popularized by the fast food chain UP! Burger. The moss is TYPICALLY cooked along with the meat, giving it a unique flavor, but here it's just... limply sitting on top of the burger, as if added in as an afterthought. It might be fine, just don't let anyone from Konyang see this. Or the health inspector, for that matter."
icon_state = "mossburger_sad"
/obj/item/reagent_containers/food/snacks/burger/bigbite/moss
name = "big bite mossburger"
desc = "Available now at an 'UP! Burger' near you!"
icon_state = "mossburger_big"
filling_color = "#b1a15c"
center_of_mass = list("x"=16, "y"=11)
reagents_to_add = list(/singleton/reagent/nutriment = 4, /singleton/reagent/nutriment/protein = 10)
reagent_data = list(/singleton/reagent/nutriment = list("mossy crunch" = 5, "buns" = 3), /singleton/reagent/nutriment/protein = list("meat" = 5, "egg" = 3, "cheese" = 3))
bitesize = 3
@@ -268,18 +268,33 @@
if(50 to INFINITY)
icon_state = "gravybiscuits"
/obj/item/reagent_containers/food/snacks/elotes
name = "elotes"
/obj/item/reagent_containers/food/snacks/bowl/mozzarella_sticks
name = "mozzarella sticks"
gender = PLURAL
desc = "Grilled mexican sweet corn with chili powder, mayonnaise, cheese, sour cream, and seasonings."
desc = "Fried sticks of molten mozzarrella cheese hidden in a deep fried breaded coating. "
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "elotes"
icon_state = "mozzarella_sticks"
unitname = "mozzarella stick"
filling_color = "#fabe17"
trash = /obj/item/trash/plate
vendingobject = /obj/item/reagent_containers/food/snacks/mozzarella_stick
bitesize = 1
reagents_to_add = list(/singleton/reagent/nutriment/protein/cheese = 4, /singleton/reagent/nutriment = 4)
reagent_data = list(/singleton/reagent/nutriment/protein/cheese = list("molten cheese" = 5), /singleton/reagent/nutriment = list("crunchy coating" = 5))
reagents_to_add = list(/singleton/reagent/nutriment = 6, /singleton/reagent/nutriment/protein = 3)
reagent_data = list(/singleton/reagent/nutriment = list("corn" = 5, "zesty seasoning" = 3, "lime" = 3), /singleton/reagent/nutriment/protein = list("cheese" = 5))
bitesize = 2
filling_color = "#d8ab18"
/obj/item/reagent_containers/food/snacks/bowl/mozzarella_sticks/update_icon()
switch(reagents.total_volume)
if(1 to 3)
icon_state = "mozzarella_sticks_half"
if(4 to INFINITY)
icon_state = "mozzarella_sticks"
/obj/item/reagent_containers/food/snacks/mozzarella_stick
name = "mozzarella stick"
desc = "A cheese stick by any other name would taste as savory."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "mozzarella_stick"
filling_color = "#fabe17"
// Konyang
@@ -409,6 +424,73 @@
if(91 to INFINITY)
icon_state = "riceball"
/obj/item/reagent_containers/food/snacks/sweet_chili_chicken
name = "sweet chili chicken"
desc = "Konyanger style chicken bursting with flavor served over a bed of rice, covered in sesame and green onions with a healthy helping of sweet chili sauce. A little bit spicy, a little bit sweet, a little bit connected to it's roots in Asia, and a little bit modern. In other words - Very Konyang."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "sweetchilichicken"
filling_color = "#C97F02"
trash = /obj/item/trash/bowl_small
reagents_to_add = list(/singleton/reagent/nutriment/protein = 4, /singleton/reagent/nutriment = 1, /singleton/reagent/nutriment/rice = 3, /singleton/reagent/capsaicin = 1)
reagent_data = list(/singleton/reagent/nutriment = list("rice" = 4), /singleton/reagent/nutriment/protein = list("sweet and spicy chicken" = 5))
bitesize = 2
/obj/item/reagent_containers/food/snacks/bowl/eggrolls_vegetable
name = "vegetable eggrolls"
gender = PLURAL
desc = "Fried, crispy eggrolls full of carrots, cabbage and ginger. Contrary to popular belief, eggrolls are frequently made without any eggs, using rice paper or wheat based wraps instead."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "eggrolls_veg_full"
unitname = "eggroll"
filling_color = "#b19445"
trash = /obj/item/trash/plate
vendingobject = /obj/item/reagent_containers/food/snacks/eggroll_vegetable
bitesize = 2
reagents_to_add = list(/singleton/reagent/nutriment = 6)
reagent_data = list(/singleton/reagent/nutriment = list("vegetables" = 5, "crunchy coating" = 5, "ginger" = 3))
/obj/item/reagent_containers/food/snacks/bowl/eggrolls_vegetable/update_icon()
switch(reagents.total_volume)
if(1 to 2)
icon_state = "eggrolls_veg_one"
if(3 to INFINITY)
icon_state = "eggrolls_veg_full"
/obj/item/reagent_containers/food/snacks/eggroll_vegetable
name = "vegetable eggroll"
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
desc = "A crunchy eggroll full of crispy veggies."
icon_state = "eggroll_veg"
filling_color = "#b19445"
/obj/item/reagent_containers/food/snacks/bowl/eggrolls_meat
name = "meat eggrolls"
gender = PLURAL
desc = "Fried, crispy eggrolls full of meat, traditionally either pork or chicken, although other kinds exist around the spur. Contrary to popular belief, eggrolls are frequently made without any eggs, using rice paper or wheat based wraps instead."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "eggrolls_meat_full"
unitname = "eggroll"
filling_color = "#613e16"
trash = /obj/item/trash/plate
vendingobject = /obj/item/reagent_containers/food/snacks/eggroll_meat
bitesize = 2
reagents_to_add = list(/singleton/reagent/nutriment/protein = 3, /singleton/reagent/nutriment = 3)
reagent_data = list(/singleton/reagent/nutriment/protein = list("meat" = 5), /singleton/reagent/nutriment = list("crunchy coating" = 5, "ginger" = 3))
/obj/item/reagent_containers/food/snacks/bowl/eggrolls_meat/update_icon()
switch(reagents.total_volume)
if(1 to 2)
icon_state = "eggrolls_meat_one"
if(3 to INFINITY)
icon_state = "eggrolls_meat_full"
/obj/item/reagent_containers/food/snacks/eggroll_meat
name = "meat eggroll"
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
desc = "A crunchy eggroll full of meat and ginger."
icon_state = "eggroll_meat"
filling_color = "#613e16"
// Mictlani
/obj/item/reagent_containers/food/snacks/soup/pozole
@@ -419,6 +501,18 @@
reagent_data = list(/singleton/reagent/nutriment = list("peppermint" = 2, "salad" = 4, "hot stew" = 2))
reagents_to_add = list(/singleton/reagent/nutriment = 8, /singleton/reagent/water = 5, /singleton/reagent/drink/dynjuice =2)
/obj/item/reagent_containers/food/snacks/elotes
name = "elotes"
gender = PLURAL
desc = "Grilled mexican sweet corn with chili powder, mayonnaise, cheese, sour cream, and seasonings."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "elotes"
trash = /obj/item/trash/plate
reagents_to_add = list(/singleton/reagent/nutriment = 6, /singleton/reagent/nutriment/protein = 3)
reagent_data = list(/singleton/reagent/nutriment = list("corn" = 5, "zesty seasoning" = 3, "lime" = 3), /singleton/reagent/nutriment/protein = list("cheese" = 5))
bitesize = 2
filling_color = "#d8ab18"
// Dominia
/obj/item/reagent_containers/food/snacks/moroz_flatbread
name = "morozian flatbread"
@@ -625,6 +719,35 @@ ABSTRACT_TYPE(/obj/item/reagent_containers/food/snacks/bowl)
bitesize = 2
filling_color = "#eee0b1"
/obj/item/reagent_containers/food/snacks/dodo_ikire
name = "dodo ikire"
desc = "Originally a Nigerian dish, dodo ikire is traditionally made of over-ripe plantains fried in palm oil with crushed chili, sometimes with onion or ginger for additional flavoring. an Eridanian favorite!"
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "dodo"
filling_color = "#331d13"
reagents_to_add = list(/singleton/reagent/nutriment/ = 5, /singleton/reagent/capsaicin = 2)
bitesize = 2
trash = /obj/item/trash/plate
reagent_data = list(/singleton/reagent/nutriment = list("plantains" = 5, "chili" = 3, "zest" = 2))
/obj/item/reagent_containers/food/snacks/dodo_ikire/update_icon()
var/percent_dodo = round((reagents.total_volume / 7) * 100)
switch(percent_dodo)
if(0 to 49)
icon_state = "dodo_half"
if(50 to INFINITY)
icon_state = "dodo"
/obj/item/reagent_containers/food/snacks/crimson_lime
name = "crimson lime"
desc = "Possibly named after the presidential crimson house of Suwong, the Konyanger city this dessert originates from, or possibly named after the hint of chili that's mixed into this dessert. Crimson fruit are typically various jungle or citrus fruits coated in dark chili chocolate. It typically favors fruit that is less aggressively sweet so the opposite flavors can play off of each other without overpowering one another."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "crimson_lime"
filling_color = "#2d460d"
trash = /obj/item/trash/plate
reagents_to_add = list(/singleton/reagent/nutriment/ = 4)
reagent_data = list(/singleton/reagent/nutriment = list("lime" = 5, "chocolate" = 5, "chili" = 2))
/obj/item/reagent_containers/food/snacks/bowl/alfajores
name = "alfajores"
desc = "A plate of delicious vanilla sandwich cookies filled with dulche de leche and covered in coconut shavings. A sweet South American treat!"
@@ -10,6 +10,44 @@
reagent_data = list(/singleton/reagent/nutriment = list("fresh fries" = 4))
bitesize = 2//This is mainly for the benefit of adminspawning
///makes fries gain the visual look of whatever sauce you add to them
/obj/item/reagent_containers/food/snacks/fries/on_reagent_change()
if(reagents.has_any_reagent(list(/singleton/reagent/nutriment/flour, /singleton/reagent/spacecleaner, /singleton/reagent/antidexafen, /singleton/reagent/carbon))) //For when the scrubbers inevitably attack the kitchen.
name = "ruined fries"
desc = "A tragic, innocent casualty in the war against scrubbers."
icon_state = "fries_ruined"
else if(reagents.has_reagent(/singleton/reagent/nutriment/ketchup))
name = "fries with ketchup"
desc = "A classic."
icon_state = "fries_redsauce"
else if(reagents.has_reagent(/singleton/reagent/nutriment/mayonnaise))
name = "fries with mayonnaise"
desc = "A European classic."
icon_state = "fries_whitesauce"
else if(reagents.has_reagent(/singleton/reagent/nutriment/garlicsauce))
name = "fries with garlic sauce"
desc = "Delicious! Just... Don't breathe in anyone's direction for a while after eating them."
icon_state = "fries_garlicsauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_chocolate))
name = "fries with chocolate sauce"
desc = "Someone has a case of the munchies."
icon_state = "fries_brownsauce"
else if(reagents.has_reagent(/singleton/reagent/nutriment/barbecue))
name = "fries with barbecue sauce"
desc = "As you stare deep into this plate of fries, somewhere in the distance you think you hear a faint 'yee haw'."
icon_state = "fries_brownsauce"
else if(reagents.has_reagent(/singleton/reagent/nutriment/sweet_chili))
name = "fries with sweet chili sauce"
desc = "A plate of fries giving off those mid-tier mall food court vibes."
icon_state = "fries_redsauce"
/obj/item/reagent_containers/food/snacks/microchips
name = "micro chips"
desc = "Soft and rubbery. should have fried them"
@@ -152,6 +152,87 @@
reagent_data = list(/singleton/reagent/nutriment = list("waffle" = 8))
bitesize = 2
///makes waffles change their look based on which syrup they have applied to them
/obj/item/reagent_containers/food/snacks/waffles/on_reagent_change()
if(reagents.has_any_reagent(list(/singleton/reagent/nutriment/flour, /singleton/reagent/spacecleaner, /singleton/reagent/antidexafen, /singleton/reagent/carbon))) //For when the scrubbers inevitably attack the kitchen.
name = "ruined waffles"
desc = "Oh boy! Look at all that powdered suga- wait, wait, no, that's... no, that's not sugar. Oh, these poor waffles."
icon_state = "waffles_ruined"
else if(reagents.has_reagent(/singleton/reagent/nutriment/ketchup))
name = "waffles with ketchup"
desc = "Why? Just why?"
icon_state = "waffles_redsauce"
else if(reagents.has_reagent(/singleton/reagent/nutriment/mayonnaise))
name = "waffles with mayonnaise"
desc = "All of the cholesterol with none of the joy."
icon_state = "waffles_vanilla"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_chocolate))
name = "waffles with chocolate sauce"
desc = "Mmm, waffles with chocolate sauce."
icon_state = "waffles_chocolate"
if(reagents.has_reagent(/singleton/reagent/condiment/syrup_vanilla))
name = "checkerboard waffles"
desc = "Waffles with chocolate and vanilla sauces carefully applied in a checkerboard pattern. Extremely fancy, in a 12 year old birthday party kind of way."
icon_state = "waffles_checkers"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_vanilla))
name = "Mmm, waffles with vanilla sauce."
icon_state = "waffles_vanilla"
if(reagents.has_reagent(/singleton/reagent/condiment/syrup_chocolate))
name = "checkerboard waffles"
desc = "Waffles with chocolate and vanilla sauces carefully applied in a checkerboard pattern. Extremely fancy, in a 12 year old birthday party kind of way."
icon_state = "waffles_checkers"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_strawberry))
name = "waffles with strawberry sauce"
desc = "Don't worry! They're so neon red, there's no CHANCE anything nutritious got through to them!"
icon_state = "waffles_redsauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_berry))
name = "waffles with berry sauce"
desc = "Waffles with neon red berry sauce. Stretching the term 'berries' to the absolute furthest limits allowed by food health and safety regulations."
icon_state = "waffles_redsauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_caramel))
name = "waffles with caramel sauce"
desc = "Because some people just want to chug a whole keg of sugar and get away with calling it breakfast."
icon_state = "waffles_lightbrownsauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_pumpkin))
name = "waffles with pumpkin spice sauce"
desc = "For that perfect social media breakfast photo on an autumn morning."
icon_state = "waffles_lightbrownsauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_dirtberry))
name = "waffles with dirtberry sauce"
desc = "Parrrt of this complete brrreakfast!"
icon_state = "waffles_lightbrownsauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_blueberry))
name = "waffles with blueberry sauce"
desc = "You could have had waffles with actual blueberries to maybe get just a little bit of nutrition in there along with the flavor, but no. You chose this."
icon_state = "waffles_bluesauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_blueraspberry))
name = "waffles with blue raspberry sauce"
desc = "Introducing breakfast to colors it was never meant to be! Wow!"
icon_state = "waffles_bluesauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_raspberry))
name = "waffles with raspberry sauce"
desc = "Glamour waffles."
icon_state = "waffles_pinksauce"
else if(reagents.has_reagent(/singleton/reagent/condiment/syrup_ylphaberry))
name = "waffles with ylpha sauce"
desc = "How delicious is this? Ylpha-nd out soon enough!" //Hurr hurr
icon_state = "waffles_pinksauce"
/obj/item/reagent_containers/food/snacks/soywafers
name = "Soy Wafers"
desc = "Simple pressed soy wafers."