diff --git a/code/datums/components/grillable.dm b/code/datums/components/grillable.dm index 859b25dff27..2f7d1e1b831 100644 --- a/code/datums/components/grillable.dm +++ b/code/datums/components/grillable.dm @@ -1,4 +1,5 @@ /datum/component/grillable + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS // So you can change grill results with various cookstuffs ///Result atom type of grilling this object var/atom/cook_result ///Amount of time required to cook the food @@ -28,6 +29,19 @@ RegisterSignal(parent, COMSIG_ITEM_GRILLED, .proc/OnGrill) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine) +// Inherit the new values passed to the component +/datum/component/grillable/InheritComponent(datum/component/grillable/new_comp, original, cook_result, required_cook_time, positive_result, use_large_steam_sprite) + if(!original) + return + if(cook_result) + src.cook_result = cook_result + if(required_cook_time) + src.required_cook_time = required_cook_time + if(positive_result) + src.positive_result = positive_result + if(use_large_steam_sprite) + src.use_large_steam_sprite = use_large_steam_sprite + ///Ran every time an item is grilled by something /datum/component/grillable/proc/OnGrill(datum/source, atom/used_grill, delta_time = 1) SIGNAL_HANDLER diff --git a/code/game/objects/items/food/pastries.dm b/code/game/objects/items/food/pastries.dm index 4528e9fb141..f6ded74284f 100644 --- a/code/game/objects/items/food/pastries.dm +++ b/code/game/objects/items/food/pastries.dm @@ -710,6 +710,47 @@ tastes = list("pancakes" = 1) foodtypes = GRAIN | SUGAR | BREAKFAST w_class = WEIGHT_CLASS_SMALL + burns_on_grill = TRUE + +/obj/item/food/pancakes/raw + name = "goopy pancake" + desc = "A barely cooked mess that some may mistake for a pancake. It longs for the griddle." + icon_state = "rawpancakes_1" + inhand_icon_state = "rawpancakes" + food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + tastes = list("milky batter" = 1) + burns_on_grill = FALSE + +/obj/item/food/pancakes/raw/MakeGrillable() + AddComponent(/datum/component/grillable,\ + cook_result = /obj/item/food/pancakes,\ + required_cook_time = rand(30 SECONDS, 40 SECONDS),\ + positive_result = TRUE,\ + use_large_steam_sprite = TRUE) + +/obj/item/food/pancakes/raw/attackby(obj/item/garnish, mob/living/user, params) + var/newresult + if(istype(garnish, /obj/item/food/grown/berries)) + newresult = /obj/item/food/pancakes/blueberry + name = "raw blueberry pancake" + icon_state = "rawbbpancakes_1" + inhand_icon_state = "rawbbpancakes" + else if(istype(garnish, /obj/item/food/chocolatebar)) + newresult = /obj/item/food/pancakes/chocolatechip + name = "raw chocolate chip pancake" + icon_state = "rawccpancakes_1" + inhand_icon_state = "rawccpancakes" + else + return ..() + if(newresult) + qdel(garnish) + to_chat(user, "You add [garnish] to [src].") + AddComponent(/datum/component/grillable, cook_result = newresult) + +/obj/item/food/pancakes/raw/examine(mob/user) + . = ..() + if(name == initial(name)) + . += "You can modify the pancake by adding blueberries or chocolate before finishing the griddle." /obj/item/food/pancakes/blueberry name = "blueberry pancake" diff --git a/code/modules/food_and_drinks/kitchen_machinery/griddle.dm b/code/modules/food_and_drinks/kitchen_machinery/griddle.dm index 4a28b98e9fe..ee36861754b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/griddle.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/griddle.dm @@ -26,6 +26,23 @@ . = ..() grill_loop = new(list(src), FALSE) variant = rand(1,3) + RegisterSignal(src, COMSIG_ATOM_EXPOSE_REAGENT, .proc/on_expose_reagent) + +/obj/machinery/griddle/proc/on_expose_reagent(atom/parent_atom, datum/reagent/exposing_reagent, reac_volume) + SIGNAL_HANDLER + + if(griddled_objects.len >= max_items || !istype(exposing_reagent, /datum/reagent/consumable/pancakebatter) || reac_volume < 5) + return NONE //make sure you have space... it's actually batter... and a proper amount of it. + + for(var/pancakes in 1 to FLOOR(reac_volume, 5) step 5) //this adds as many pancakes as you possibly could make, with 5u needed per pancake + var/obj/item/food/pancakes/raw/new_pancake = new(src) + new_pancake.pixel_x = rand(16,-16) + new_pancake.pixel_y = rand(16,-16) + AddToGrill(new_pancake) + if(griddled_objects.len >= max_items) + break + visible_message("[exposing_reagent] begins to cook on [src].") + return NONE /obj/machinery/griddle/crowbar_act(mob/living/user, obj/item/I) . = ..() diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index dcf82185f37..55634919cd9 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -125,6 +125,10 @@ /datum/chemical_reaction/cakebatter/vegan required_reagents = list(/datum/reagent/consumable/soymilk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) +/datum/chemical_reaction/pancakebatter + results = list(/datum/reagent/consumable/pancakebatter = 15) + required_reagents = list(/datum/reagent/consumable/eggyolk = 12, /datum/reagent/consumable/milk = 10, /datum/reagent/consumable/flour = 5) + /datum/chemical_reaction/ricebowl required_reagents = list(/datum/reagent/consumable/rice = 10, /datum/reagent/water = 10) required_container = /obj/item/reagent_containers/glass/bowl @@ -149,3 +153,7 @@ /datum/chemical_reaction/bbqsauce results = list(/datum/reagent/consumable/bbqsauce = 5) required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/medicine/salglu_solution = 3, /datum/reagent/consumable/blackpepper = 1) + +/datum/chemical_reaction/gravy + results = list(/datum/reagent/consumable/gravy = 3) + required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/flour = 1) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index b64e9e60978..aab8a45528c 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -272,7 +272,7 @@ ) result = /obj/item/food/donut/jelly/slimejelly/laugh -////////////////////////////////////////////////WAFFLES AND PANCAKES//////////////////////////////////////////////// +////////////////////////////////////////////////WAFFLES//////////////////////////////////////////////// /datum/crafting_recipe/food/waffles time = 15 @@ -312,33 +312,6 @@ result = /obj/item/food/rofflewaffles subcategory = CAT_PASTRY -/datum/crafting_recipe/food/pancakes - name = "Pancake" - reqs = list( - /obj/item/food/pastrybase = 1 - ) - result = /obj/item/food/pancakes - subcategory = CAT_PASTRY - -/datum/crafting_recipe/food/bbpancakes - name = "Blueberry pancake" - reqs = list( - /obj/item/food/pastrybase = 1, - /obj/item/food/grown/berries = 1 - ) - result = /obj/item/food/pancakes/blueberry - subcategory = CAT_PASTRY - -/datum/crafting_recipe/food/ccpancakes - name = "Chocolate chip pancake" - reqs = list( - /obj/item/food/pastrybase = 1, - /obj/item/food/chocolatebar = 1 - ) - result = /obj/item/food/pancakes/chocolatechip - subcategory = CAT_PASTRY - - ////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// /datum/crafting_recipe/food/donkpocket diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 32394d571c1..9fae1a42719 100755 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -861,3 +861,16 @@ nutriment_factor = 5 * REAGENTS_METABOLISM taste_mult = 2 taste_description = "fizzy sweetness" + +/datum/reagent/consumable/gravy + name = "Gravy" + description = "A mixture of flour, water, and the juices of cooked meat." + taste_description = "gravy" + color = "#623301" + taste_mult = 1.2 + +/datum/reagent/consumable/pancakebatter + name = "pancake batter" + description = "A very milky batter. 5 units of this on the griddle makes a mean pancake." + taste_description = "milky batter" + color = "#fccc98" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 4b3df00c47c..d0520401ddc 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2324,13 +2324,6 @@ color = "#E6E6DA" taste_mult = 0 -/datum/reagent/consumable/gravy - name = "Gravy" - description = "A mixture of flour, water, and the juices of cooked meat." - taste_description = "gravy" - color = "#623301" - taste_mult = 1.2 - /datum/reagent/determination name = "Determination" description = "For when you need to push on a little more. Do NOT allow near plants." diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 508f5305854..978e23daa6d 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -582,10 +582,6 @@ required_reagents = list(/datum/reagent/water/hollowwater = 1) required_catalysts = list(/datum/reagent/water/holywater = 1) -/datum/chemical_reaction/gravy - results = list(/datum/reagent/consumable/gravy = 3) - required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/flour = 1) - /datum/chemical_reaction/exotic_stabilizer results = list(/datum/reagent/exotic_stabilizer = 2) required_reagents = list(/datum/reagent/plasma_oxide = 1,/datum/reagent/stabilizing_agent = 1) @@ -599,3 +595,4 @@ var/location = get_turf(holder.my_atom) for(var/i in 1 to created_volume) new /obj/item/stack/sheet/mineral/silver(location) + diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 3fd9835e314..d6ecc13164b 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ