diff --git a/code/datums/supplypacks/hospitality.dm b/code/datums/supplypacks/hospitality.dm index 6547b25e70..fa7f09ebd9 100644 --- a/code/datums/supplypacks/hospitality.dm +++ b/code/datums/supplypacks/hospitality.dm @@ -45,6 +45,13 @@ cost = 10 containertype = /obj/structure/closet/crate containername = "crate of bar supplies" + +/datum/supply_pack/hospitality/cookingoil + name = "Cooking oil tank crate" + contains = list(/obj/structure/reagent_dispensers/cookingoil) + cost = 10 + containertype = /obj/structure/largecrate + containername = "cooking oil tank crate" /datum/supply_pack/randomised/hospitality/ group = "Hospitality" diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index bcb69d7c79..2697595b59 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -81,6 +81,31 @@ frame_class = FRAME_CLASS_MACHINE frame_size = 4 +/datum/frame/frame_types/oven + name = "Oven" + frame_class = FRAME_CLASS_MACHINE + frame_size = 4 + +/datum/frame/frame_types/fryer + name = "Fryer" + frame_class = FRAME_CLASS_MACHINE + frame_size = 4 + +/datum/frame/frame_types/grill + name = "Grill" + frame_class = FRAME_CLASS_MACHINE + frame_size = 4 + +/datum/frame/frame_types/cerealmaker + name = "Cereal Maker" + frame_class = FRAME_CLASS_MACHINE + frame_size = 4 + +/datum/frame/frame_types/candymachine + name = "Candy Machine" + frame_class = FRAME_CLASS_MACHINE + frame_size = 4 + /datum/frame/frame_types/fax name = "Fax" frame_class = FRAME_CLASS_MACHINE diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 84c55decb8..85f81b1058 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -121,16 +121,6 @@ /obj/item/weapon/stock_parts/motor = 2, /obj/item/stack/cable_coil = 5) -/obj/item/weapon/circuitboard/microwave - name = T_BOARD("microwave") - build_path = /obj/machinery/microwave - board_type = new /datum/frame/frame_types/microwave - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - req_components = list( - /obj/item/weapon/stock_parts/console_screen = 1, - /obj/item/weapon/stock_parts/motor = 1, - /obj/item/weapon/stock_parts/capacitor = 1) - /obj/item/weapon/circuitboard/recharger name = T_BOARD("recharger") build_path = /obj/machinery/recharger @@ -250,13 +240,3 @@ /obj/item/weapon/stock_parts/spring = 1, /obj/item/stack/cable_coil = 5) -/obj/item/weapon/circuitboard/microwave/advanced - name = T_BOARD("deluxe microwave") - build_path = /obj/machinery/microwave/advanced - board_type = new /datum/frame/frame_types/microwave - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - req_components = list( - /obj/item/weapon/stock_parts/console_screen = 1, - /obj/item/weapon/stock_parts/motor = 1, - /obj/item/weapon/stock_parts/capacitor = 1) - diff --git a/code/game/objects/items/weapons/circuitboards/machinery/kitchen_appliances.dm b/code/game/objects/items/weapons/circuitboards/machinery/kitchen_appliances.dm new file mode 100644 index 0000000000..1af9476aff --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/machinery/kitchen_appliances.dm @@ -0,0 +1,74 @@ +/obj/item/weapon/circuitboard/microwave + name = T_BOARD("microwave") + desc = "The circuitboard for a microwave." + build_path = /obj/machinery/microwave + board_type = new /datum/frame/frame_types/microwave + contain_parts = 0 + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + req_components = list( + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/weapon/stock_parts/capacitor = 3, // Original Capacitor count was 1 + /obj/item/weapon/stock_parts/motor = 1, + /obj/item/weapon/stock_parts/scanning_module = 1, + /obj/item/weapon/stock_parts/matter_bin = 2) + +/obj/item/weapon/circuitboard/oven + name = T_BOARD("oven") + desc = "The circuitboard for an oven." + build_path = /obj/machinery/appliance/cooker/oven + board_type = new /datum/frame/frame_types/oven + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 3, + /obj/item/weapon/stock_parts/scanning_module = 1, + /obj/item/weapon/stock_parts/matter_bin = 2) + +/obj/item/weapon/circuitboard/fryer + name = T_BOARD("deep fryer") + desc = "The circuitboard for a deep fryer." + build_path = /obj/machinery/appliance/cooker/fryer + board_type = new /datum/frame/frame_types/fryer + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 3, + /obj/item/weapon/stock_parts/scanning_module = 1, + /obj/item/weapon/stock_parts/matter_bin = 2) + +/obj/item/weapon/circuitboard/grill + name = T_BOARD("grill") + desc = "The circuitboard for an industrial grill." + build_path = /obj/machinery/appliance/cooker/grill + board_type = new /datum/frame/frame_types/grill + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 3, + /obj/item/weapon/stock_parts/scanning_module = 1, + /obj/item/weapon/stock_parts/matter_bin = 2) + +/obj/item/weapon/circuitboard/cerealmaker + name = T_BOARD("cereal maker") + desc = "The circuitboard for a cereal maker." + build_path = /obj/machinery/appliance/mixer/cereal + board_type = new /datum/frame/frame_types/cerealmaker + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 3, + /obj/item/weapon/stock_parts/scanning_module = 1, + /obj/item/weapon/stock_parts/matter_bin = 2) + +/obj/item/weapon/circuitboard/candymachine + name = T_BOARD("candy machine") + desc = "The circuitboard for a candy machine." + build_path = /obj/machinery/appliance/mixer/candy + board_type = new /datum/frame/frame_types/candymachine + req_components = list( + /obj/item/weapon/stock_parts/capacitor = 3, + /obj/item/weapon/stock_parts/scanning_module = 1, + /obj/item/weapon/stock_parts/matter_bin = 2) + +/obj/item/weapon/circuitboard/microwave/advanced + name = T_BOARD("deluxe microwave") + build_path = /obj/machinery/microwave/advanced + board_type = new /datum/frame/frame_types/microwave + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + req_components = list( + /obj/item/weapon/stock_parts/console_screen = 1, + /obj/item/weapon/stock_parts/motor = 1, + /obj/item/weapon/stock_parts/capacitor = 1) \ No newline at end of file diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 77c4411ce2..abebd0b232 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -4366,7 +4366,7 @@ //Code for dipping food in batter /obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/O as obj, mob/user as mob, proximity) - if(O.is_open_container() && O.reagents && !(istype(O, /obj/item/weapon/reagent_containers/food))) + if(O.is_open_container() && O.reagents && !(istype(O, /obj/item/weapon/reagent_containers/food)) && proximity) for (var/r in O.reagents.reagent_list) var/datum/reagent/R = r diff --git a/code/modules/food/kitchen/cooking_machines/_appliance.dm b/code/modules/food/kitchen/cooking_machines/_appliance.dm index a182d9edb2..265b0c95bc 100644 --- a/code/modules/food/kitchen/cooking_machines/_appliance.dm +++ b/code/modules/food/kitchen/cooking_machines/_appliance.dm @@ -16,10 +16,10 @@ use_power = USE_POWER_IDLE idle_power_usage = 5 // Power used when turned on, but not processing anything active_power_usage = 1000 // Power used when turned on and actively cooking something - var/initial_active_power_usage = 1000 - - var/cooking_power = 1 - var/initial_cooking_power = 1 + + var/cooking_power = 0 // Effectiveness/speed at cooking + var/cooking_coeff = 0 // Optimal power * proximity to optimal temp; used to calc. cooking power. + var/heating_power = 1000 // Effectiveness at heating up; not used for mixers, should be equal to active_power_usage var/max_contents = 1 // Maximum number of things this appliance can simultaneously cook var/on_icon // Icon state used when cooking. var/off_icon // Icon state used when not cooking. @@ -29,7 +29,7 @@ var/mobdamagetype = BRUTE // Burn damage for cooking appliances, brute for cereal/candy var/food_color // Colour of resulting food item. var/cooked_sound = 'sound/machines/ding.ogg' // Sound played when cooking completes. - var/can_burn_food // Can the object burn food that is left inside? + var/can_burn_food = FALSE // Can the object burn food that is left inside? var/burn_chance = 10 // How likely is the food to burn? var/list/cooking_objs = list() // List of things being cooked @@ -40,18 +40,13 @@ var/container_type = null - var/combine_first = 0//If 1, this appliance will do combinaiton cooking before checking recipes + var/combine_first = FALSE // If TRUE, this appliance will do combination cooking before checking recipes /obj/machinery/appliance/Initialize() . = ..() - component_parts = list() - component_parts += /obj/item/weapon/circuitboard/cooking - component_parts += /obj/item/weapon/stock_parts/capacitor - component_parts += /obj/item/weapon/stock_parts/capacitor - component_parts += /obj/item/weapon/stock_parts/capacitor - component_parts += /obj/item/weapon/stock_parts/scanning_module - component_parts += /obj/item/weapon/stock_parts/matter_bin - component_parts += /obj/item/weapon/stock_parts/matter_bin + + default_apply_parts() + if(output_options.len) verbs += /obj/machinery/appliance/proc/choose_output @@ -228,7 +223,7 @@ else if(istype(check, /obj/item/weapon/disk/nuclear)) to_chat(user, "You can't cook that.") return 0 - else if(I.is_crowbar() || I.is_screwdriver()) // You can't cook tools, dummy. + else if(I.is_crowbar() || I.is_screwdriver() || istype(I, /obj/item/weapon/storage/part_replacer)) // You can't cook tools, dummy. return 0 else if(!istype(check) && !istype(check, /obj/item/weapon/holder)) to_chat(user, "That's not edible.") @@ -301,7 +296,7 @@ /obj/machinery/appliance/proc/get_cooking_work(var/datum/cooking_item/CI) for (var/obj/item/J in CI.container) - oilwork(J, CI) + cookwork_by_item(J, CI) for (var/r in CI.container.reagents.reagent_list) var/datum/reagent/R = r @@ -328,7 +323,7 @@ CI.max_cookwork += buffer*multiplier //Just a helper to save code duplication in the above -/obj/machinery/appliance/proc/oilwork(var/obj/item/I, var/datum/cooking_item/CI) +/obj/machinery/appliance/proc/cookwork_by_item(var/obj/item/I, var/datum/cooking_item/CI) var/obj/item/weapon/reagent_containers/food/snacks/S = I var/work = 0 if (istype(S)) @@ -725,18 +720,13 @@ for(var/obj/item/weapon/stock_parts/P in src.component_parts) if(istype(P, /obj/item/weapon/stock_parts/scanning_module)) - scan_rating += P.rating + scan_rating += P.rating - 1 // Default parts shouldn't mess with stats + // to_world("RefreshParts returned scan rating of [scan_rating] during this step.") // Debug lines, uncomment if you need to test. else if(istype(P, /obj/item/weapon/stock_parts/capacitor)) - cap_rating += P.rating + cap_rating += P.rating - 1 // Default parts shouldn't mess with stats + // to_world("RefreshParts returned cap rating of [cap_rating] during this step.") // Debug lines, uncomment if you need to test. - active_power_usage = initial(active_power_usage) - scan_rating*10 - cooking_power = initial(cooking_power) + (scan_rating+cap_rating)/10 - -/obj/item/weapon/circuitboard/cooking - name = "kitchen appliance circuitry" - desc = "The circuitboard for many kitchen appliances. Not of much use." - origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) - req_components = list( - /obj/item/weapon/stock_parts/capacitor = 3, - /obj/item/weapon/stock_parts/scanning_module = 1, - /obj/item/weapon/stock_parts/matter_bin = 2) \ No newline at end of file + active_power_usage = initial(active_power_usage) - scan_rating * 25 + heating_power = initial(heating_power) + cap_rating * 25 + cooking_power = cooking_coeff * (1 + (scan_rating + cap_rating) / 20) // 100% eff. becomes 120%, 140%, 160% w/ better parts, thus rewarding upgrading the appliances during your shift. + // to_world("RefreshParts returned cooking power of [cooking_power] during this step.") // Debug lines, uncomment if you need to test. diff --git a/code/modules/food/kitchen/cooking_machines/_cooker.dm b/code/modules/food/kitchen/cooking_machines/_cooker.dm index d67c0819c3..1e7193f166 100644 --- a/code/modules/food/kitchen/cooking_machines/_cooker.dm +++ b/code/modules/food/kitchen/cooking_machines/_cooker.dm @@ -2,27 +2,29 @@ var/temperature = T20C var/min_temp = 80 + T0C //Minimum temperature to do any cooking var/optimal_temp = 200 + T0C //Temperature at which we have 100% efficiency. efficiency is lowered on either side of this - var/optimal_power = 0.1//cooking power at 100% + var/optimal_power = 0.6 //cooking power at 100% - This variable determines the MAXIMUM increase in do_cooking_ticks, once math goes through. If you want ticks of 0.5, set it to 0.5, etc. var/loss = 1 //Temp lost per proc when equalising - var/resistance = 32000 //Resistance to heating. combines with active power usage to determine how long heating takes. 32k by default. + var/resistance = 32000 //Resistance to heating. combines with heating power to determine how long heating takes. 32k by default. var/light_x = 0 var/light_y = 0 + cooking_coeff = 0 cooking_power = 0 mobdamagetype = BURN + can_burn_food = TRUE /obj/machinery/appliance/cooker/examine(var/mob/user) . = ..() if(.) //no need to duplicate adjacency check if(!stat) if (temperature < min_temp) - to_chat(user, span("warning", "\The [src] is still heating up and is too cold to cook anything yet.")) + to_chat(user, "\The [src] is still heating up and is too cold to cook anything yet.") else - to_chat(user, span("notice", "It is running at [round(get_efficiency(), 0.1)]% efficiency!")) + to_chat(user, "It is running at [round(get_efficiency(), 0.1)]% efficiency!") to_chat(user, "Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C") else - to_chat(user, span("warning", "It is switched off.")) + to_chat(user, "It is switched off.") /obj/machinery/appliance/cooker/list_contents(var/mob/user) if (cooking_objs.len) @@ -35,10 +37,10 @@ string += "- [CI.container.label(num)], [report_progress(CI)]
" to_chat(user, string) else - to_chat(user, span("notice","It is empty.")) + to_chat(user, "It's empty.") /obj/machinery/appliance/cooker/proc/get_efficiency() - //RefreshParts() + // to_world("Our cooking_power is [cooking_power] and our efficiency is [(cooking_power / optimal_power) * 100].") // Debug lines, uncomment if you need to test. return (cooking_power / optimal_power) * 100 /obj/machinery/appliance/cooker/Initialize() @@ -80,16 +82,25 @@ /obj/machinery/appliance/cooker/proc/update_cooking_power() var/temp_scale = 0 if(temperature > min_temp) + if(temperature >= optimal_temp) // If we're at or above optimal temp, then we're going to be at 1 for temp scale. No use penalizing you for the cookers increasing heat constantly (until we implement setting a temp on the oven via a menu.) + temp_scale = 1 + else + temp_scale = (temperature - min_temp) / (optimal_temp - min_temp) // If we're between min and optimal this will yield a value in the range 0-1 + + /* // old code for reference, will be useful if/when we implement ovens with configurable temperatures - TODO recipes with optimal temps for cooking per-recipe?? temp_scale = (temperature - min_temp) / (optimal_temp - min_temp) // If we're between min and optimal this will yield a value in the range 0-1 - + if(temp_scale > 1) // We're above optimal, efficiency goes down as we pass too much over it if(temp_scale >= 2) temp_scale = 0 else temp_scale = 1 - (temp_scale - 1) + */ - cooking_power = optimal_power * temp_scale - // RefreshParts() + cooking_coeff = optimal_power * temp_scale + // to_world("Our cooking_power is [cooking_power] and our tempscale is [temp_scale], and our cooking_coeff is [cooking_coeff] before RefreshParts.") // Debug lines, uncomment if you need to test. + RefreshParts() + // to_world("Our cooking_power is [cooking_power] after RefreshParts.") // Debug lines, uncomment if you need to test. /obj/machinery/appliance/cooker/proc/heat_up() if(temperature < optimal_temp) @@ -97,7 +108,7 @@ playsound(src, 'sound/machines/click.ogg', 20, 1) use_power = 2.//If we're heating we use the active power update_icon() - temperature += active_power_usage / resistance + temperature += heating_power / resistance update_cooking_power() return 1 else diff --git a/code/modules/food/kitchen/cooking_machines/_mixer.dm b/code/modules/food/kitchen/cooking_machines/_mixer.dm index aee823befd..18b75998d9 100644 --- a/code/modules/food/kitchen/cooking_machines/_mixer.dm +++ b/code/modules/food/kitchen/cooking_machines/_mixer.dm @@ -10,7 +10,7 @@ fundamental differences /obj/machinery/appliance/mixer max_contents = 1 stat = POWEROFF - cooking_power = 0.4 + cooking_coeff = 0.75 // Original value 0.4 active_power_usage = 3000 idle_power_usage = 50 diff --git a/code/modules/food/kitchen/cooking_machines/candy.dm b/code/modules/food/kitchen/cooking_machines/candy.dm index 4a4cf073a5..f80b1c4940 100644 --- a/code/modules/food/kitchen/cooking_machines/candy.dm +++ b/code/modules/food/kitchen/cooking_machines/candy.dm @@ -6,7 +6,8 @@ on_icon = "mixer_on" cook_type = "candied" appliancetype = CANDYMAKER - cooking_power = 0.6 + circuit = /obj/item/weapon/circuitboard/candymachine + cooking_coeff = 1.0 // Original Value 0.6 cooked_sound = 'sound/machines/ding.ogg' output_options = list( diff --git a/code/modules/food/kitchen/cooking_machines/cereal.dm b/code/modules/food/kitchen/cooking_machines/cereal.dm index 0210fe7e3e..64a7c4b812 100644 --- a/code/modules/food/kitchen/cooking_machines/cereal.dm +++ b/code/modules/food/kitchen/cooking_machines/cereal.dm @@ -8,11 +8,12 @@ off_icon = "cereal_off" cooked_sound = 'sound/machines/ding.ogg' appliancetype = CEREALMAKER + circuit = /obj/item/weapon/circuitboard/cerealmaker output_options = list( "Cereal" = /obj/item/weapon/reagent_containers/food/snacks/variable/cereal ) - + /* /obj/machinery/appliance/mixer/cereal/change_product_strings(var/obj/item/weapon/reagent_containers/food/snacks/product, var/datum/cooking_item/CI) . = ..() diff --git a/code/modules/food/kitchen/cooking_machines/container.dm b/code/modules/food/kitchen/cooking_machines/container.dm index 4fc015668f..2ebb2ed7f0 100644 --- a/code/modules/food/kitchen/cooking_machines/container.dm +++ b/code/modules/food/kitchen/cooking_machines/container.dm @@ -150,6 +150,15 @@ max_space = 30 max_reagents = 120 +/obj/item/weapon/reagent_containers/cooking_container/oven/Initialize() + . = ..() + + // We add to the insertable list specifically for the oven trays, to allow specialty cakes. + insertable += list( + /obj/item/clothing/head/cakehat, // This is because we want to allow birthday cakes to be makeable. + /obj/item/organ/internal/brain // As before, needed for braincake + ) + /obj/item/weapon/reagent_containers/cooking_container/fryer name = "fryer basket" shortname = "basket" diff --git a/code/modules/food/kitchen/cooking_machines/fryer.dm b/code/modules/food/kitchen/cooking_machines/fryer.dm index 14606e14bc..f3ab3df0bb 100644 --- a/code/modules/food/kitchen/cooking_machines/fryer.dm +++ b/code/modules/food/kitchen/cooking_machines/fryer.dm @@ -9,18 +9,20 @@ food_color = "#FFAD33" cooked_sound = 'sound/machines/ding.ogg' var/datum/looping_sound/deep_fryer/fry_loop + circuit = /obj/item/weapon/circuitboard/fryer appliancetype = FRYER active_power_usage = 12 KILOWATTS + heating_power = 12000 min_temp = 140 + T0C // Same as above, increasing this to just under 2x to make the % increase on efficiency not quite so painful as it would be at 80. optimal_temp = 400 + T0C // Increasing this to be 2x Oven to allow for a much higher/realistic frying temperatures. Doesn't really do anything but make heating the fryer take a bit longer. - optimal_power = 0.35 + optimal_power = 0.95 // .35 higher than the default to give fryers faster cooking speed. idle_power_usage = 3.6 KILOWATTS // Power used to maintain temperature once it's heated. // Going with 25% of the active power. This is a somewhat arbitrary value. - resistance = 20000 // Approx. 8-9 minutes to heat up. + resistance = 60000 // Approx. 10 minutes to heat up. max_contents = 2 container_type = /obj/item/weapon/reagent_containers/cooking_container/fryer @@ -29,7 +31,7 @@ var/datum/reagents/oil var/optimal_oil = 9000 //90 litres of cooking oil - + /obj/machinery/appliance/cooker/fryer/Initialize() . = ..() fry_loop = new(list(src), FALSE) diff --git a/code/modules/food/kitchen/cooking_machines/grill.dm b/code/modules/food/kitchen/cooking_machines/grill.dm index ba269773cd..1023c0a529 100644 --- a/code/modules/food/kitchen/cooking_machines/grill.dm +++ b/code/modules/food/kitchen/cooking_machines/grill.dm @@ -3,24 +3,30 @@ desc = "Backyard grilling, IN SPACE." icon_state = "grill_off" cook_type = "grilled" + appliancetype = GRILL food_color = "#A34719" on_icon = "grill_on" off_icon = "grill_off" - can_burn_food = 1 + can_burn_food = TRUE + circuit = /obj/item/weapon/circuitboard/grill cooked_sound = 'sound/machines/ding.ogg' - stat = POWEROFF - appliancetype = GRILL - active_power_usage = 4 KILOWATTS + heating_power = 4000 idle_power_usage = 2 KILOWATTS + optimal_power = 1.2 // Things on the grill cook .6 faster - this is now the fastest appliance to heat and to cook on. BURGERS GO SIZZLE. + + stat = POWEROFF // Starts turned off. + // Grill is faster to heat and setup than the rest. optimal_temp = 120 + T0C min_temp = 60 + T0C + max_contents = 3 // Arbitrary number, 3 grill 'racks' resistance = 8 KILOWATTS // Very fast to heat up. container_type = /obj/item/weapon/reagent_containers/cooking_container/grill +/* // Test Comment this out too, /cooker does this for us, and this path '/obj/machinery/appliance/grill' is invalid anyways, meaning it does jack shit. - Updated the paths, but I'm basically commenting all this shit out and if the grill works as-normal, none of this stuff is needed. /obj/machinery/appliance/grill/toggle_power() set src in view() set name = "Toggle Power" @@ -42,12 +48,13 @@ playsound(src, 'sound/machines/click.ogg', 40, 1) update_icon() -/obj/machinery/appliance/grill/Initialize() + +/obj/machinery/appliance/cooker/grill/Initialize() . = ..() // cooking_objs += new /datum/cooking_item(new /obj/item/weapon/reagent_containers/cooking_container(src)) cooking = FALSE -/obj/machinery/appliance/grill/has_space(var/obj/item/I) +/obj/machinery/appliance/cooker/grill/has_space(var/obj/item/I) var/datum/cooking_item/CI = cooking_objs[1] if (!CI || !CI.container) return 0 @@ -56,7 +63,8 @@ return CI return 0 - +*/ +/* // Test comment this out, I don't think this is doing shit anyways. //Container is not removable /obj/machinery/appliance/grill/removal_menu(var/mob/user) if (can_remove_items(user)) @@ -79,14 +87,17 @@ update_icon() return 1 return 0 +*/ -/obj/machinery/appliance/grill/update_icon() +/obj/machinery/appliance/grill/update_icon() // TODO: Cooking icon if(!stat) icon_state = on_icon else icon_state = off_icon +/* // Test remove this too. /obj/machinery/appliance/grill/process() if (!stat) for (var/i in cooking_objs) - do_cooking_tick(i) \ No newline at end of file + do_cooking_tick(i) +*/ \ No newline at end of file diff --git a/code/modules/food/kitchen/cooking_machines/oven.dm b/code/modules/food/kitchen/cooking_machines/oven.dm index 4dffdd3d6d..394f05ee0d 100644 --- a/code/modules/food/kitchen/cooking_machines/oven.dm +++ b/code/modules/food/kitchen/cooking_machines/oven.dm @@ -6,15 +6,17 @@ cook_type = "baked" appliancetype = OVEN food_color = "#A34719" - can_burn_food = 1 + can_burn_food = TRUE + circuit = /obj/item/weapon/circuitboard/oven cooked_sound = 'sound/machines/ding.ogg' active_power_usage = 6 KILOWATTS + heating_power = 6000 //Based on a double deck electric convection oven - resistance = 16000 + resistance = 30000 // Approx. 12 minutes to heat up. idle_power_usage = 2 KILOWATTS //uses ~30% power to stay warm - optimal_power = 0.2 + optimal_power = 0.8 // Oven cooks .2 faster than the default speed. light_x = 2 max_contents = 5 @@ -75,19 +77,27 @@ if(open) open = FALSE - loss = (active_power_usage / resistance)*0.5 + loss = (heating_power / resistance) * 0.5 cooking = TRUE else open = TRUE - loss = (active_power_usage / resistance)*4 + loss = (heating_power / resistance) * 4 //When the oven door is opened, heat is lost MUCH faster and you stop cooking (because the door is open) cooking = FALSE playsound(src, 'sound/machines/hatch_open.ogg', 20, 1) update_icon() + +/obj/machinery/appliance/cooker/oven/proc/manip(var/obj/item/I) + // check if someone's trying to manipulate the machine + + if(I.is_crowbar() || I.is_screwdriver() || istype(I, /obj/item/weapon/storage/part_replacer)) + return TRUE + else + return FALSE /obj/machinery/appliance/cooker/oven/can_insert(var/obj/item/I, var/mob/user) - if(!open) + if(!open && !manip(I)) to_chat(user, "You can't put anything in while the door is closed!") return 0 @@ -118,6 +128,7 @@ /obj/machinery/appliance/cooker/oven/finish_cooking(var/datum/cooking_item/CI) if(CI.combine_target) CI.result_type = 3//Combination type. We're making something out of our ingredients + visible_message("\The [src] pings!") combination_cook(CI) return else diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 5fd6fa34b7..3e40412b1b 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -35,6 +35,7 @@ /obj/machinery/microwave/Initialize() . = ..() + reagents = new/datum/reagents(100) reagents.my_atom = src @@ -156,19 +157,27 @@ var/obj/item/weapon/grab/G = O to_chat(user, "This is ridiculous. You can not fit \the [G.affecting] in this [src].") return 1 + else if(O.is_screwdriver()) + default_deconstruction_screwdriver(user, O) + return else if(O.is_crowbar()) - user.visible_message( \ - "\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.", \ - "You attempt to [src.anchored ? "unsecure" : "secure"] the microwave." - ) - if (do_after(user,20)) - user.visible_message( \ - "\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.", \ - "You [src.anchored ? "unsecure" : "secure"] the microwave." - ) - src.anchored = !src.anchored + if(default_deconstruction_crowbar(user, O)) + return else - to_chat(user, "You decide not to do that.") + user.visible_message( \ + "\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.", \ + "You attempt to [src.anchored ? "unsecure" : "secure"] the microwave." + ) + if (do_after(user,20/O.toolspeed)) + user.visible_message( \ + "\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.", \ + "You [src.anchored ? "unsecure" : "secure"] the microwave." + ) + src.anchored = !src.anchored + else + to_chat(user, "You decide not to do that.") + else if(default_part_replacement(user, O)) + return else to_chat(user, "You have no idea what you can cook with this [O].") ..() diff --git a/code/modules/food/recipe.dm b/code/modules/food/recipe.dm index 813dff118a..e27b102387 100644 --- a/code/modules/food/recipe.dm +++ b/code/modules/food/recipe.dm @@ -194,25 +194,25 @@ if(!result) log_runtime(EXCEPTION("Recipe [type] is defined without a result, please bug report this.")) return - -// We will subtract all the ingredients from the container, and transfer their reagents into a holder -// We will not touch things which are not required for this recipe. They will be left behind for the caller -// to decide what to do. They may be used again to make another recipe or discarded, or merged into the results, -// thats no longer the concern of this proc - var/obj/temp = new /obj(src) - temp.create_reagents(999999999) - // Find items we need - if(items && items.len) +//We will subtract all the ingredients from the container, and transfer their reagents into a holder +//We will not touch things which are not required for this recipe. They will be left behind for the caller +//to decide what to do. They may be used again to make another recipe or discarded, or merged into the results, +//thats no longer the concern of this proc + var/datum/reagents/buffer = new /datum/reagents(10000000000, null)// + + + //Find items we need + if (items && items.len) for (var/i in items) var/obj/item/I = locate(i) in container if (I && I.reagents) - I.reagents.trans_to_holder(temp.reagents,I.reagents.total_volume) + I.reagents.trans_to_holder(buffer,I.reagents.total_volume) qdel(I) - // Find fruits - if(fruit && fruit.len) + //Find fruits + if (fruit && fruit.len) var/list/checklist = list() checklist = fruit.Copy() @@ -220,18 +220,18 @@ if(!G.seed || !G.seed.kitchen_tag || isnull(checklist[G.seed.kitchen_tag])) continue - if(checklist[G.seed.kitchen_tag] > 0) + if (checklist[G.seed.kitchen_tag] > 0) //We found a thing we need checklist[G.seed.kitchen_tag]-- - if(G && G.reagents) - G.reagents.trans_to_holder(temp.reagents,G.reagents.total_volume) + if (G && G.reagents) + G.reagents.trans_to_holder(buffer,G.reagents.total_volume) qdel(G) - // And lastly deduct necessary quantities of reagents - if(reagents && reagents.len) + //And lastly deduct necessary quantities of reagents + if (reagents && reagents.len) for (var/r in reagents) - // Doesnt matter whether or not there's enough, we assume that check is done before - container.reagents.trans_id_to(temp, r, reagents[r]) + //Doesnt matter whether or not there's enough, we assume that check is done before + container.reagents.trans_type_to(buffer, r, reagents[r]) /* Now we've removed all the ingredients that were used and we have the buffer containing the total of @@ -245,64 +245,62 @@ If, as in the most common case, there is only a single result, then it will just be a reference to the single-result's reagents */ - var/obj/tempholder = new(src) - tempholder.create_reagents(999999999) + var/datum/reagents/holder = new/datum/reagents(10000000000) var/list/results = list() while (tally < result_quantity) var/obj/result_obj = new result(container) results.Add(result_obj) - if(!result_obj.reagents)//This shouldn't happen + if (!result_obj.reagents)//This shouldn't happen //If the result somehow has no reagents defined, then create a new holder - log_runtime(EXCEPTION("[result_obj] had no reagents!")) - result_obj.create_reagents(temp.reagents.total_volume*1.5) + result_obj.reagents = new /datum/reagents(buffer.total_volume*1.5, result_obj) - if(result_quantity == 1) - qdel(tempholder.reagents) - tempholder.reagents = result_obj.reagents + if (result_quantity == 1) + qdel(holder) + holder = result_obj.reagents else - log_runtime(EXCEPTION("[result_quantity] was greater than 1! Check [result_obj]!")) - result_obj.reagents.trans_to(tempholder.reagents, result_obj.reagents.total_volume) + result_obj.reagents.trans_to(holder, result_obj.reagents.total_volume) tally++ switch(reagent_mix) - if(RECIPE_REAGENT_REPLACE) + if (RECIPE_REAGENT_REPLACE) //We do no transferring - if(RECIPE_REAGENT_SUM) + if (RECIPE_REAGENT_SUM) //Sum is easy, just shove the entire buffer into the result - temp.reagents.trans_to_holder(tempholder.reagents, temp.reagents.total_volume) - if(RECIPE_REAGENT_MAX) + buffer.trans_to_holder(holder, buffer.total_volume) + if (RECIPE_REAGENT_MAX) //We want the highest of each. //Iterate through everything in buffer. If the target has less than the buffer, then top it up - for (var/datum/reagent/R in temp.reagents.reagent_list) - var/rvol = tempholder.reagents.get_reagent_amount(R.id) + for (var/datum/reagent/R in buffer.reagent_list) + var/rvol = holder.get_reagent_amount(R.type) if (rvol < R.volume) //Transfer the difference - temp.reagents.trans_id_to(tempholder, R.id, R.volume-rvol) + buffer.trans_type_to(holder, R.type, R.volume-rvol) - if(RECIPE_REAGENT_MIN) + if (RECIPE_REAGENT_MIN) //Min is slightly more complex. We want the result to have the lowest from each side //But zero will not count. Where a side has zero its ignored and the side with a nonzero value is used - for (var/datum/reagent/R in temp.reagents.reagent_list) - var/rvol = tempholder.reagents.get_reagent_amount(R.id) - if(rvol == 0) //If the target has zero of this reagent - temp.reagents.trans_id_to(tempholder, R.id, R.volume) + for (var/datum/reagent/R in buffer.reagent_list) + var/rvol = holder.get_reagent_amount(R.type) + if (rvol == 0) //If the target has zero of this reagent + buffer.trans_type_to(holder, R.type, R.volume) //Then transfer all of ours - else if(rvol > R.volume) + else if (rvol > R.volume) //if the target has more than ours //Remove the difference - tempholder.reagents.remove_reagent(R.id, rvol-R.volume) + holder.remove_reagent(R.type, rvol-R.volume) - if(results.len > 1) + if (results.len > 1) //If we're here, then holder is a buffer containing the total reagents for all the results. //So now we redistribute it among them - var/total = tempholder.reagents.total_volume + var/total = holder.total_volume for (var/i in results) var/atom/a = i //optimisation - tempholder.reagents.trans_to(a, total / results.len) + holder.trans_to(a, total / results.len) + return results // When exact is false, extraneous ingredients are ignored diff --git a/code/modules/food/recipes_fryer.dm b/code/modules/food/recipes_fryer.dm index 82a6bae362..3328663be6 100644 --- a/code/modules/food/recipes_fryer.dm +++ b/code/modules/food/recipes_fryer.dm @@ -77,28 +77,36 @@ //Sweet Recipes. //================== +// All donuts were given reagents of 5 to equal old recipes and make for faster cook times. /datum/recipe/jellydonut appliance = FRYER - reagents = list("berryjuice" = 10, "sugar" = 10) + reagents = list("berryjuice" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly result_quantity = 2 + +/datum/recipe/jellydonut/poisonberry + reagents = list("poisonberryjuice" = 5, "sugar" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry /datum/recipe/jellydonut/slime appliance = FRYER - reagents = list("slimejelly" = 10, "sugar" = 10) + reagents = list("slimejelly" = 5, "sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly /datum/recipe/jellydonut/cherry appliance = FRYER - reagents = list("cherryjelly" = 10, "sugar" = 10) + reagents = list("cherryjelly" = 5, "sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly /datum/recipe/donut appliance = FRYER - reagents = list("sugar" = 10) + reagents = list("sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice ) diff --git a/code/modules/food/recipes_grill.dm b/code/modules/food/recipes_grill.dm new file mode 100644 index 0000000000..6f84348655 --- /dev/null +++ b/code/modules/food/recipes_grill.dm @@ -0,0 +1,231 @@ +/datum/recipe/humanburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/human, + /obj/item/weapon/reagent_containers/food/snacks/bun + ) + result = /obj/item/weapon/reagent_containers/food/snacks/human/burger + +/datum/recipe/plainburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/humanburger + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger + +/datum/recipe/syntiburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger + +/datum/recipe/brainburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/organ/internal/brain + ) + result = /obj/item/weapon/reagent_containers/food/snacks/brainburger + +/datum/recipe/roburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/robot_parts/head + ) + result = /obj/item/weapon/reagent_containers/food/snacks/roburger + +/datum/recipe/xenoburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/xenoburger + +/datum/recipe/fishburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fishburger + +/datum/recipe/tofuburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/tofuburger + +/datum/recipe/ghostburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/ectoplasm //where do you even find this stuff + ) + result = /obj/item/weapon/reagent_containers/food/snacks/ghostburger + +/datum/recipe/clownburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/clothing/mask/gas/clown_hat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/clownburger + +/datum/recipe/mimeburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/clothing/head/beret + ) + result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger + +/datum/recipe/mouseburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/holder/mouse + ) + result = /obj/item/weapon/reagent_containers/food/snacks/mouseburger + +/datum/recipe/bunbun + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/bun + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bunbun + +/datum/recipe/hotdog + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/sausage + ) + result = /obj/item/weapon/reagent_containers/food/snacks/hotdog + +/datum/recipe/humankabob + appliance = GRILL + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat/human, + /obj/item/weapon/reagent_containers/food/snacks/meat/human, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/human/kabob + +/datum/recipe/kabob //Do not put before humankabob + appliance = GRILL + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob + +/datum/recipe/monkeykabob + appliance = GRILL + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob + +/datum/recipe/syntikabob + appliance = GRILL + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob + +/datum/recipe/tofukabob + appliance = GRILL + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob + +/datum/recipe/spellburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, + /obj/item/clothing/head/wizard/fake, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/spellburger + +/datum/recipe/spellburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, + /obj/item/clothing/head/wizard, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/spellburger + +/datum/recipe/bigbiteburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + ) + reagents = list("egg" = 3) + reagent_mix = RECIPE_REAGENT_REPLACE + result = /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger + +/datum/recipe/superbiteburger + appliance = GRILL + fruit = list("tomato" = 1) + reagents = list("sodiumchloride" = 5, "blackpepper" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/boiledegg, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/superbiteburger + +/datum/recipe/slimeburger + appliance = GRILL + reagents = list("slimejelly" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun + ) + result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime + +/datum/recipe/jellyburger + appliance = GRILL + reagents = list("cherryjelly" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun + ) + result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry + +/datum/recipe/bearburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/bearmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bearburger + +/datum/recipe/baconburger + appliance = GRILL + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/bacon \ No newline at end of file diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 312691e284..974a661192 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -43,47 +43,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/devilledegg -/datum/recipe/dionaroast - fruit = list("apple" = 1) - reagents = list("pacid" = 5) //It dissolves the carapace. Still poisonous, though. - items = list(/obj/item/weapon/holder/diona) - result = /obj/item/weapon/reagent_containers/food/snacks/dionaroast -/* // These should be fryer recipes, as should the other donuts, TODO Conversions -/datum/recipe/jellydonut - reagents = list("berryjuice" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly - -/datum/recipe/jellydonut/poisonberry - reagents = list("poisonberryjuice" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry - -/datum/recipe/jellydonut/slime - reagents = list("slimejelly" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly - -/datum/recipe/jellydonut/cherry - reagents = list("cherryjelly" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly - -/datum/recipe/donut - reagents = list("sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal -*/ +/* // Test remove these in favor of grillin' on the grill, bby. /datum/recipe/humanburger items = list( /obj/item/weapon/reagent_containers/food/snacks/meat/human, @@ -167,6 +127,7 @@ I said no! /obj/item/weapon/holder/mouse ) result = /obj/item/weapon/reagent_containers/food/snacks/mouseburger +*/ /datum/recipe/bunbun items = list( @@ -211,44 +172,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL -/datum/recipe/meatbread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread - -/datum/recipe/xenomeatbread - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread - -/datum/recipe/bananabread - fruit = list("banana" = 1) - reagents = list("milk" = 5, "sugar" = 15) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough, - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread - /datum/recipe/omelette items = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, @@ -289,41 +212,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen -/datum/recipe/meatpie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/meat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatpie - -/datum/recipe/tofupie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/tofupie - -/datum/recipe/xemeatpie - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie - -/datum/recipe/pie - fruit = list("banana" = 1) - reagents = list("sugar" = 5) - items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) - result = /obj/item/weapon/reagent_containers/food/snacks/pie - -/datum/recipe/cherrypie - fruit = list("cherries" = 1) - reagents = list("sugar" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie - /datum/recipe/berryclafoutis fruit = list("berries" = 1) items = list( @@ -344,14 +232,8 @@ I said no! /obj/item/weapon/reagent_containers/food/snacks/xenomeat ) result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu -/* - TODO: Port this to Fryer -/datum/recipe/chaosdonut - reagents = list("frostoil" = 5, "capsaicin" = 5, "sugar" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/dough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos -*/ + +/* // Test remove these in favor of grillin' on the grill, bby. /datum/recipe/humankabob items = list( /obj/item/stack/rods, @@ -391,6 +273,7 @@ I said no! /obj/item/weapon/reagent_containers/food/snacks/tofu, ) result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob +*/ /datum/recipe/tofubread items = list( @@ -593,16 +476,7 @@ I said no! items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) result = /obj/item/weapon/reagent_containers/food/snacks/coldchili -/datum/recipe/amanita_pie - reagents = list("amatoxin" = 5) - items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) - result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie - -/datum/recipe/plump_pie - fruit = list("plumphelmet" = 1) - items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) - result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie - +/* // Testremove to swap to grill /datum/recipe/spellburger items = list( /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, @@ -627,7 +501,7 @@ I said no! reagents = list("egg" = 3) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger - +*/ /datum/recipe/enchiladas fruit = list("chili" = 2, "corn" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/cutlet) @@ -808,7 +682,7 @@ I said no! /obj/item/weapon/reagent_containers/food/snacks/meatball, ) result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw - +/* /datum/recipe/superbiteburger fruit = list("tomato" = 1) reagents = list("sodiumchloride" = 5, "blackpepper" = 5) @@ -820,7 +694,7 @@ I said no! /obj/item/weapon/reagent_containers/food/snacks/boiledegg, ) result = /obj/item/weapon/reagent_containers/food/snacks/superbiteburger - +*/ /datum/recipe/candiedapple fruit = list("apple" = 1) reagents = list("water" = 5, "sugar" = 5) @@ -942,11 +816,6 @@ I said no! reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/mysterysoup -/datum/recipe/pumpkinpie - fruit = list("pumpkin" = 1) - reagents = list("milk" = 5, "sugar" = 5, "egg" = 3, "flour" = 10) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie - /datum/recipe/plumphelmetbiscuit fruit = list("plumphelmet" = 1) reagents = list("water" = 5, "flour" = 5) @@ -972,14 +841,6 @@ I said no! reagents = list("water" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/beetsoup -/datum/recipe/appletart - fruit = list("goldapple" = 1) - reagents = list("sugar" = 5, "milk" = 5, "flour" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) - result = /obj/item/weapon/reagent_containers/food/snacks/appletart - /datum/recipe/tossedsalad fruit = list("cabbage" = 2, "tomato" = 1, "carrot" = 1, "apple" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/tossedsalad @@ -1012,13 +873,6 @@ I said no! for (var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked in .) being_cooked.reagents.del_reagent("toxin") -/datum/recipe/cracker - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice - ) - result = /obj/item/weapon/reagent_containers/food/snacks/cracker - /datum/recipe/stuffing reagents = list("water" = 5, "sodiumchloride" = 1, "blackpepper" = 1) items = list( @@ -1292,64 +1146,6 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/piginblanket -// Cakes. -/datum/recipe/cake - reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9, "vanilla" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake - -/datum/recipe/cake/carrot - fruit = list("carrot" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake - -/datum/recipe/cake/cheese - reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake - -/datum/recipe/cake/peanut - fruit = list("peanut" = 3) - reagents = list("milk" = 5, "flour" = 10, "sugar" = 5, "egg" = 6, "peanutbutter" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/peanutcake - -/datum/recipe/cake/orange - fruit = list("orange" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake - -/datum/recipe/cake/lime - fruit = list("lime" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake - -/datum/recipe/cake/lemon - fruit = list("lemon" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake - -/datum/recipe/cake/chocolate - items = list(/obj/item/weapon/reagent_containers/food/snacks/chocolatebar) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake - -/datum/recipe/cake/birthday - reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) - items = list(/obj/item/clothing/head/cakehat) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake - -/datum/recipe/cake/apple - fruit = list("apple" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake - -/datum/recipe/cake/brain - reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) - items = list(/obj/item/organ/internal/brain) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake - /datum/recipe/bagelplain reagents = list("water" = 5) items = list( @@ -1439,13 +1235,14 @@ I said no! fruit = list("peanut" = 2, "potato" = 1) reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/weapon/reagent_containers/food/snacks/yellowcurry - +/* /datum/recipe/bearburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/reagent_containers/food/snacks/bearmeat ) result = /obj/item/weapon/reagent_containers/food/snacks/bearburger +*/ /datum/recipe/bearchili fruit = list("chili" = 1, "tomato" = 1) @@ -1808,7 +1605,7 @@ I said no! /obj/item/weapon/reagent_containers/food/snacks/friedegg ) result = /obj/item/weapon/reagent_containers/food/snacks/bacon_and_eggs - +/* /datum/recipe/baconburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, @@ -1817,6 +1614,7 @@ I said no! /obj/item/weapon/reagent_containers/food/snacks/bacon ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/bacon +*/ /datum/recipe/ntmuffin items = list( diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index 268c11914e..65310fb48c 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -9,23 +9,8 @@ result = /obj/item/weapon/reagent_containers/food/snacks/path_to_some_food */ // All of this shit needs to be gone through and reorganized into different recipes per machine - Rykka 7/16/2020 -/datum/recipe/jellydonut - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice) -/datum/recipe/jellydonut/slime - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice) - -/datum/recipe/jellydonut/cherry - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice) - -/datum/recipe/donut - items = list( - /obj/item/weapon/reagent_containers/food/snacks/doughslice) - -/datum/recipe/sushi +/datum/recipe/carpsushi fruit = list("cabbage" = 1) reagents = list("rice" = 20) items = list( @@ -45,37 +30,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/lasagna -/datum/recipe/goulash - fruit = list("tomato" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/cutlet, - /obj/item/weapon/reagent_containers/food/snacks/spagetti - ) - result = /obj/item/weapon/reagent_containers/food/snacks/goulash - -/datum/recipe/donerkebab - fruit = list("tomato" = 1, "cabbage" = 1) - reagents = list("sodiumchloride" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meatsteak, - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough - ) - result = /obj/item/weapon/reagent_containers/food/snacks/donerkebab - -/datum/recipe/roastbeef - fruit = list("carrot" = 2, "potato" = 2) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/roastbeef - -/datum/recipe/reishicup - reagents = list("psilocybin" = 3, "sugar" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/chocolatebar - ) - result = /obj/item/weapon/reagent_containers/food/snacks/reishicup - /datum/recipe/chickenwings reagents = list("capsaicin" = 5, "flour" = 10) items = list( @@ -86,22 +40,6 @@ ) result = /obj/item/weapon/storage/box/wings //This is kinda like the donut box. -/datum/recipe/hotandsoursoup - fruit = list("cabbage" = 1, "mushroom" = 1) - reagents = list("sodiumchloride" = 2, "blackpepper" = 2, "water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/tofu - ) - result = /obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup - -/datum/recipe/kitsuneudon - reagents = list("egg" = 3) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/spagetti, - /obj/item/weapon/reagent_containers/food/snacks/tofu - ) - result = /obj/item/weapon/reagent_containers/food/snacks/kitsuneudon - /datum/recipe/generalschicken reagents = list("capsaicin" = 2, "sugar" = 2, "flour" = 10) items = list( @@ -131,28 +69,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz -/datum/recipe/pillbugball - reagents = list("carbon" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat - ) - result = /obj/item/weapon/reagent_containers/food/snacks/bugball - -/datum/recipe/mammi - fruit = list("orange" = 1) - reagents = list("water" = 10, "flour" = 10, "milk" = 5, "sodiumchloride" = 1) - result = /obj/item/weapon/reagent_containers/food/snacks/mammi - -/datum/recipe/makaroni - reagents = list("flour" = 15, "milk" = 5) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat, - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, - /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - ) - result = /obj/item/weapon/reagent_containers/food/snacks/makaroni - /datum/recipe/lobster fruit = list("lemon" = 1, "cabbage" = 1) items = list( diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm index 1489ba72ad..989c118d50 100644 --- a/code/modules/food/recipes_oven.dm +++ b/code/modules/food/recipes_oven.dm @@ -421,27 +421,34 @@ //============ /datum/recipe/cake appliance = OVEN - reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) + reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9, "vanilla" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake reagent_mix = RECIPE_REAGENT_REPLACE /datum/recipe/cake/carrot appliance = OVEN fruit = list("carrot" = 3) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake /datum/recipe/cake/cheese appliance = OVEN + reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) items = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake + +/datum/recipe/cake/peanut + fruit = list("peanut" = 3) + reagents = list("milk" = 5, "flour" = 10, "sugar" = 5, "egg" = 6, "peanutbutter" = 5) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/peanutcake /datum/recipe/cake/orange appliance = OVEN fruit = list("orange" = 1) - reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "orangejuice" = 3, "sugar" = 5) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake /datum/recipe/cake/lime @@ -464,16 +471,19 @@ /datum/recipe/cake/birthday appliance = OVEN + reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) items = list(/obj/item/clothing/head/cakehat) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake /datum/recipe/cake/apple appliance = OVEN fruit = list("apple" = 2) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake /datum/recipe/cake/brain appliance = OVEN + reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) items = list(/obj/item/organ/internal/brain) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index b52028d542..a27e2a3f5f 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -153,7 +153,9 @@ /obj/item/weapon/reagent_containers/glass, /obj/item/weapon/reagent_containers/food, /obj/item/seeds, - /obj/item/weapon/grown + /obj/item/weapon/grown, + /obj/item/trash, + /obj/item/weapon/reagent_containers/cooking_container ) /obj/item/weapon/gripper/gravekeeper //Used for handling grave things, flowers, etc. diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index e93c2c1e83..9d7b01fc77 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -282,6 +282,34 @@ trans_to(target, amount, multiplier, copy) +/datum/reagents/proc/trans_type_to(var/target, var/rtype, var/amount = 1) + if (!target) + return + + var/datum/reagent/transfering_reagent = get_reagent(rtype) + + if (istype(target, /atom)) + var/atom/A = target + if (!A.reagents || !A.simulated) + return + + amount = min(amount, transfering_reagent.volume) + + if(!amount) + return + + + var/datum/reagents/F = new /datum/reagents(amount) + var/tmpdata = get_data(rtype) + F.add_reagent(rtype, amount, tmpdata) + remove_reagent(rtype, amount) + + + if (istype(target, /atom)) + return F.trans_to(target, amount) // Let this proc check the atom's type + else if (istype(target, /datum/reagents)) + return F.trans_to_holder(target, amount) + /datum/reagents/proc/trans_id_to(var/atom/target, var/id, var/amount = 1) if (!target || !target.reagents) return diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm index 4717e14bdc..28e76ceac9 100644 --- a/code/modules/research/designs/circuits/circuits.dm +++ b/code/modules/research/designs/circuits/circuits.dm @@ -583,13 +583,48 @@ CIRCUITS BELOW req_tech = list(TECH_DATA = 4, TECH_BIO = 3) build_path = /obj/item/weapon/circuitboard/aicore sort_string = "XAAAA" +// Cooking Appliances +/datum/design/circuit/microwave + name = "microwave board" + id = "microwave_board" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/microwave + sort_string = "HACAM" + +/datum/design/circuit/oven + name = "oven board" + id = "oven_board" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/oven + sort_string = "HACAN" + +/datum/design/circuit/fryer + name = "deep fryer board" + id = "fryer_board" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/fryer + sort_string = "HACAO" + +/datum/design/circuit/cerealmaker + name = "cereal maker board" + id = "cerealmaker_board" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/cerealmaker + sort_string = "HACAP" + +/datum/design/circuit/candymaker + name = "candy machine board" + id = "candymachine_board" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/candymachine + sort_string = "HACAQ" /datum/design/circuit/microwave/advanced name = "deluxe microwave" id = "deluxe microwave" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4) build_path = /obj/item/weapon/circuitboard/microwave/advanced - sort_string = "MAAAC" + sort_string = "HACAA" /datum/design/circuit/shield_generator name = "shield generator" diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 6973896c3c..5b19f0d43b 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 8c178d7a6b..65ea343892 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1293,6 +1293,7 @@ #include "code\game\objects\items\weapons\circuitboards\machinery\cloning.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\engineering.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\jukebox.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\kitchen_appliances.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\mech_recharger.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm" @@ -2182,6 +2183,7 @@ #include "code\modules\food\recipe.dm" #include "code\modules\food\recipe_dump.dm" #include "code\modules\food\recipes_fryer.dm" +#include "code\modules\food\recipes_grill.dm" #include "code\modules\food\recipes_microwave.dm" #include "code\modules\food\recipes_microwave_ch.dm" #include "code\modules\food\recipes_microwave_vr.dm"