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"