From 6e8b414b496e942b1817d7172a1ef43bc4b91e19 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 27 Jun 2024 23:31:01 +0300 Subject: [PATCH] i don't wanna live --- baystation12.dme | 4 - code/game/machinery/kitchen/gibber.dm | 432 ------------------ code/game/machinery/kitchen/icecream.dm | 209 --------- code/game/machinery/kitchen/microwave.dm | 429 ----------------- code/game/machinery/kitchen/smartfridge.dm | 414 ----------------- .../cooking/coocking_appliances/grill.dm | 22 +- .../cooking/coocking_appliances/oven.dm | 22 +- .../cooking/coocking_appliances/stove.dm | 22 +- code/modules/cooking/cooking.dm | 44 +- code/modules/cooking/cooking_catalog.dm | 13 +- code/modules/cooking/cooking_init.dm | 8 +- .../cooking_items/cooking_containers.dm | 82 ++-- code/modules/cooking/cooking_items/dollop.dm | 8 +- code/modules/cooking/cooking_items/spatula.dm | 5 +- code/modules/cooking/cooking_tracker.dm | 116 ++--- .../cooking/recipes/example_recipes.dm | 22 +- code/modules/cooking/recipes/recipe.dm | 286 ++++++------ code/modules/cooking/recipes/recipe_donuts.dm | 10 +- code/modules/cooking/step_defines.dm | 28 +- code/modules/cooking/step_types/add_item.dm | 20 +- .../modules/cooking/step_types/add_produce.dm | 20 +- .../modules/cooking/step_types/add_reagent.dm | 18 +- .../cooking/step_types/recipe_start.dm | 6 +- code/modules/cooking/step_types/use_grill.dm | 17 +- code/modules/cooking/step_types/use_item.dm | 12 +- code/modules/cooking/step_types/use_oven.dm | 16 +- code/modules/cooking/step_types/use_stove.dm | 17 +- code/modules/cooking/step_types/use_tool.dm | 24 +- icons/obj/cooking/eris_kitchen.dmi | Bin 0 -> 1435 bytes icons/obj/cooking/grill.dmi | Bin 0 -> 2055 bytes icons/obj/cooking/kitchen.dmi | Bin 0 -> 4331 bytes icons/obj/cooking/oven.dmi | Bin 0 -> 1886 bytes icons/obj/cooking/scan.dmi | Bin 0 -> 4496 bytes icons/obj/cooking/stove.dmi | Bin 0 -> 9120 bytes 34 files changed, 425 insertions(+), 1901 deletions(-) delete mode 100644 code/game/machinery/kitchen/gibber.dm delete mode 100644 code/game/machinery/kitchen/icecream.dm delete mode 100644 code/game/machinery/kitchen/microwave.dm delete mode 100644 code/game/machinery/kitchen/smartfridge.dm create mode 100644 icons/obj/cooking/eris_kitchen.dmi create mode 100644 icons/obj/cooking/grill.dmi create mode 100644 icons/obj/cooking/kitchen.dmi create mode 100644 icons/obj/cooking/oven.dmi create mode 100644 icons/obj/cooking/scan.dmi create mode 100644 icons/obj/cooking/stove.dmi diff --git a/baystation12.dme b/baystation12.dme index e2a69e7a5dd..15c379afd1b 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -919,10 +919,6 @@ #include "code\game\machinery\embedded_controller\embedded_controller_base.dm" #include "code\game\machinery\embedded_controller\embedded_program_base.dm" #include "code\game\machinery\embedded_controller\simple_docking_controller.dm" -#include "code\game\machinery\kitchen\gibber.dm" -#include "code\game\machinery\kitchen\icecream.dm" -#include "code\game\machinery\kitchen\microwave.dm" -#include "code\game\machinery\kitchen\smartfridge.dm" #include "code\game\machinery\kitchen\cooking_machines\_cooker.dm" #include "code\game\machinery\kitchen\cooking_machines\_cooker_output.dm" #include "code\game\machinery\kitchen\cooking_machines\candy.dm" diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm deleted file mode 100644 index 0df342a4b25..00000000000 --- a/code/game/machinery/kitchen/gibber.dm +++ /dev/null @@ -1,432 +0,0 @@ -/obj/machinery/gibber - name = "gibber" - desc = "The name isn't descriptive enough?" - - icon = 'icons/obj/machines/gibber.dmi' - icon_state = "gibber" - layer = BELOW_OBJ_LAYER - - density = TRUE - anchored = TRUE - - idle_power_usage = 2 WATTS - active_power_usage = 500 WATTS - - component_types = list( - /obj/item/stock_parts/micro_laser, - /obj/item/stock_parts/matter_bin, - /obj/item/circuitboard/gibber - ) - - /// Direction to spit meat and gibs in. - var/gib_throw_dir = WEST - - /// Time to gib a single entity. - var/gib_time - /// Whether the machine is processing pigs. - var/operating = FALSE - /// Max mount of mobs that can fit into the machine. - var/mob_capacity - /// List of mobs to be gibbed. - var/list/mob/mobs_to_process - -/obj/machinery/gibber/on_update_icon() - ClearOverlays() - if(panel_open) - AddOverlays("gibber-panel") - - if(stat & (NOPOWER|BROKEN)) - return - - if(operating) - AddOverlays("gibber-use") - else if(length(mobs_to_process)) - AddOverlays("gibber-jam") - else - AddOverlays("gibber-idle") - - var/should_glow = update_glow() - if(should_glow) - AddOverlays(emissive_appearance(icon, "[icon_state]_ea")) - -/obj/machinery/gibber/proc/update_glow() - if(inoperable(MAINT)) - set_light(0) - return FALSE - - var/color = COLOR_YELLOW - if(operating) - color = COLOR_GREEN - if(length(mobs_to_process)) - color = COLOR_NT_RED - - set_light(0.7, 0.1, 1, 2, color) - return TRUE - -/obj/machinery/gibber/RefreshParts() - var/time_modifier = 0 - for(var/obj/item/stock_parts/micro_laser/ML in component_parts) - time_modifier += ML.rating - gib_time = max(4 SECONDS - 10 * (time_modifier - 1), 1 SECOND) - - var/capacity_modifier = 0 - for(var/obj/item/stock_parts/matter_bin/MB in component_parts) - capacity_modifier += MB.rating - mob_capacity = clamp(capacity_modifier * (capacity_modifier - 1), 1, 12) - -/obj/machinery/gibber/Initialize() - . = ..() - - add_think_ctx("finish_processing", CALLBACK(src, nameof(.proc/finish_processing)), 0) - update_icon() - RefreshParts() - -/obj/machinery/gibber/Destroy() - if(operating) - for(var/atom/A in contents - mobs_to_process - component_parts) - qdel(A) // No drops for cheaters... - if(length(mobs_to_process)) - for(var/mob/M in mobs_to_process) - M.forceMove(loc) - return ..() - -/obj/machinery/gibber/attack_hand(mob/user) - if(stat & (NOPOWER|BROKEN)) - return - - if(operating) - to_chat(user, SPAN("danger", "\The [src] is locked and running, wait for it to finish!")) - return - - if(!length(mobs_to_process)) - to_chat(user, SPAN("danger", "\The [src] has nothing grindable inside!")) - return - - process_mobs(user) - -/obj/machinery/gibber/attackby(obj/item/W, mob/user) - if(operating) - return ..() - - if(default_deconstruction_screwdriver(user, W)) - return - - if(default_deconstruction_crowbar(user, W)) - return - - if(default_part_replacement(user, W)) - return - - if(istype(W, /obj/item/grab)) - var/obj/item/grab/G = W - if(!G.force_danger()) - to_chat(user, SPAN("danger", "You need a better grip to do that!")) - return - - add_to_contents(user, G.affecting) - G.delete_self() - return - - if(istype(W, /obj/item/organ)) - if(!user.drop(W)) - return - - user.visible_message(SPAN("danger", "\The [user] feeds \the [W] into \the [src], obliterating it.")) - qdel(W) - return - - return ..() - -/obj/machinery/gibber/relaymove(mob/user) - if(!empty_contents()) - return - - user.visible_message( - SPAN("danger", "[user] flies out from \the [src], thus emptying its contents"), - SPAN("warning", "You successfully knock out \the [src]s hatch, thus saving your life!") - ) - -/obj/machinery/gibber/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.restrained()) - return - - add_to_contents(user, target) - -/obj/machinery/gibber/verb/eject() - set category = "Object" - set name = "Empty Gibber" - set src in oview(1) - - if(usr.is_ic_dead()) - return - - if(usr.loc == src) - return - - empty_contents() - add_fingerprint(usr) - -/obj/machinery/gibber/proc/empty_contents() - if(operating) - return FALSE - - for(var/mob/M in mobs_to_process) - M.dropInto(loc) - if(M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - - LAZYCLEARLIST(mobs_to_process) - update_icon() - return TRUE - -/obj/machinery/gibber/proc/move_inside(mob/victim) - victim.forceMove(src) - LAZYADD(mobs_to_process, victim) - - if(victim.client) - victim.client.perspective = EYE_PERSPECTIVE - victim.client.eye = src - -/obj/machinery/gibber/proc/do_move_inside_checks(mob/user, mob/living/victim, loud = TRUE) - if(isnull(user) && loud) - return FALSE - - if(isnull(victim)) - return FALSE - - if(length(mobs_to_process) >= mob_capacity) - if(loud) to_chat(user, SPAN("danger", "\The [src] is full, empty it first!")) - return FALSE - - if(operating) - if(loud) to_chat(user, SPAN("danger","\The [src] is locked and running, wait for it to finish.")) - return FALSE - - if(!iscarbon(victim) && !isanimal(victim)) - if(loud) to_chat(user, SPAN("danger","This is not suitable for \the [src]!")) - return FALSE - - if(victim.abiotic(TRUE)) - if(loud) to_chat(user, SPAN("danger","\The [victim] may not have any abiotic items on.")) - return FALSE - - return TRUE - -/obj/machinery/gibber/proc/add_to_contents(mob/user, mob/living/victim) - if(!do_move_inside_checks(user, victim)) - return - - user.visible_message(SPAN("danger", "\The [user] starts to put \the [victim] into \the [src]!")) - add_fingerprint(user) - if(do_after(user, 30, src) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && length(mobs_to_process) < mob_capacity) - user.visible_message(SPAN("danger", "\The [user] stuffs \the [victim] into \the [src]!")) - move_inside(victim) - update_icon() - -/obj/machinery/gibber/proc/process_mobs(mob/user = null) - if(operating) - return - - if(!length(mobs_to_process)) - visible_message(SPAN("danger", "You hear a loud metallic grinding sound.")) - playsound(loc, 'sound/signals/error4.ogg', 50, TRUE) - return - - visible_message(SPAN("danger", "You hear a loud squelchy grinding sound.")) - playsound(loc, 'sound/machines/juicer.ogg', 50, TRUE) - use_power_oneoff(1000) - update_icon() - - operating = TRUE - for(var/mob/pig in mobs_to_process) - create_mob_drop(pig) - - set_next_think_ctx("finish_processing", world.time + length(mobs_to_process) * gib_time, user) - -/obj/machinery/gibber/proc/create_mob_drop(mob/victim) - if(istype(victim, /mob/living/simple_animal/hostile/faithless)) - new /obj/item/ectoplasm(src) - return - - if(ismetroid(victim)) - var/mob/living/carbon/metroid/M = victim - var/extract_type = M.GetCoreType() - new extract_type(src) - return - - var/slab_owner = victim.name - - var/slab_count = 3 - var/slab_nutrition = 20 - var/robotic_slab_count = 0 - var/slab_type = /obj/item/reagent_containers/food/meat - - if(iscarbon(victim)) - var/mob/living/carbon/C = victim - slab_nutrition = C.nutrition / 15 - if(isanimal(victim)) - var/mob/living/simple_animal/S = victim - if(S.meat_amount) - slab_count = S.meat_amount - if(S.meat_type) - slab_type = S.meat_type - if(ishuman(victim)) - var/mob/living/carbon/human/H = victim - slab_count = 0 - slab_owner = H.real_name - slab_type = H.species.meat_type - for(var/obj/item/organ/external/O in H.organs) - if(O.is_stump()) - continue - - if(istype(O, /obj/item/organ/external/chest)) - var/obj/item/organ/external/chest/C = O - if(BP_IS_ROBOTIC(O)) - robotic_slab_count += C.butchering_capacity - else - slab_count += C.butchering_capacity - continue - - if(BP_IS_ROBOTIC(O)) - robotic_slab_count++ - else - slab_count++ - - if(slab_count > 0) - if(issmall(victim)) - slab_nutrition *= 0.5 - - slab_nutrition /= slab_count - - var/reagent_transfer_amt - if(victim.reagents) - reagent_transfer_amt = round(victim.reagents.total_volume / slab_count, 1) - - for(var/i = 1 to slab_count) - var/obj/item/reagent_containers/food/meat/new_meat = new slab_type(src, rand(3, 8)) - if(!istype(new_meat)) - continue - - new_meat.SetName("[slab_owner] [new_meat.name]") - new_meat.reagents.add_reagent(/datum/reagent/nutriment, slab_nutrition) - if(!victim.reagents) - continue - - victim.reagents.trans_to_obj(new_meat, reagent_transfer_amt) - - for(var/i = 1 to robotic_slab_count) - new /obj/item/stack/material/steel(src, rand(3, 5)) - -/obj/machinery/gibber/proc/finish_processing(mob/user, slipshod = TRUE, gore = TRUE) - for(var/mob/pig in mobs_to_process) - if(user) admin_attack_log(user, pig, "Gibbed the victim", "Was gibbed", "gibbed") - pig.gib(do_gibs = gore) - qdel(pig) - - operating = FALSE - - playsound(loc, 'sound/effects/splat.ogg', 50, 1) - LAZYCLEARLIST(mobs_to_process) - update_icon() - - for(var/obj/O in contents - component_parts) - if(istype(O, /obj/item/organ) && prob(80)) - qdel(O) - continue - - O.dropInto(loc) - if(!slipshod || !throw_dir) - continue - - O.throw_at(get_edge_target_turf(src, gib_throw_dir), rand(0, 3), 0.5) - -#define GIBBER_THINK_DELTA (15 SECONDS) - -/obj/machinery/gibber/industrial - name = "Industrial Gibber" - - icon_state = "ind_gibber" - - component_types = list( - /obj/item/circuitboard/industrial_gibber, - /obj/item/stock_parts/micro_laser, - /obj/item/stock_parts/manipulator, - /obj/item/stock_parts/matter_bin - ) - - gib_throw_dir = null - - var/scoops_per_attempt = 1 - -/obj/machinery/gibber/industrial/on_update_icon() - ClearOverlays() - if(stat & (NOPOWER|BROKEN)) - return - - if(operating) - AddOverlays("ind_gibber-use") - else if(length(mobs_to_process)) - AddOverlays("ind_gibber-jam") - - var/should_glow = update_glow() - if(should_glow) - if(operating || length(mobs_to_process)) - AddOverlays(emissive_appearance(icon, "[icon_state]_usejam_ea")) - else - AddOverlays(emissive_appearance(icon, "[icon_state]_ea")) - -/obj/machinery/gibber/industrial/update_glow() - if(stat & MAINT) - set_light(0) - return FALSE - - var/color = COLOR_NT_RED - if(operating) - color = COLOR_GREEN - - set_light(0.7, 0.1, 1, 2, color) - return TRUE - -/obj/machinery/gibber/industrial/Initialize() - . = ..() - - set_next_think(world.time) - add_think_ctx("pickup", CALLBACK(src, nameof(.proc/perform_pickup)), world.time + GIBBER_THINK_DELTA) - -/obj/machinery/gibber/industrial/RefreshParts() - . = ..() - - var/scoop_modifier = 0 - for(var/obj/item/stock_parts/manipulator/MM in component_parts) - scoop_modifier += MM.rating - scoops_per_attempt = scoop_modifier - -/obj/machinery/gibber/industrial/finish_processing(mob/user, slipshod = FALSE, gore = FALSE) - . = ..(user, slipshod, gore) - flick("ind_gibber-out", src) - set_next_think_ctx("pickup", world.time + GIBBER_THINK_DELTA) - -/obj/machinery/gibber/industrial/proc/perform_pickup() - if(operating) - return - - var/scoops_left = scoops_per_attempt - for(var/mob/living/possible_prey in range(1, src)) - if(scoops_left <= 0) - break - - if(!possible_prey?.is_ic_dead() || !do_move_inside_checks(null, possible_prey, FALSE)) - continue - - move_inside(possible_prey) - scoops_left-- - - if(scoops_left <= 0) - flick("ind_gibber-in", src) - process_mobs() - return - - set_next_think_ctx("pickup", world.time + GIBBER_THINK_DELTA) - -#undef GIBBER_THINK_DELTA diff --git a/code/game/machinery/kitchen/icecream.dm b/code/game/machinery/kitchen/icecream.dm deleted file mode 100644 index 9fdae51bf53..00000000000 --- a/code/game/machinery/kitchen/icecream.dm +++ /dev/null @@ -1,209 +0,0 @@ -#define ICECREAM_VANILLA 1 -#define ICECREAM_CHOCOLATE 2 -#define ICECREAM_STRAWBERRY 3 -#define ICECREAM_BLUE 4 -#define ICECREAM_CHERRY 5 -#define ICECREAM_BANANA 6 -#define CONE_WAFFLE 7 -#define CONE_CHOC 8 - -// Ported wholesale from Apollo Station. - -/obj/machinery/icecream_vat - name = "icecream vat" - desc = "A heavy metal container used to produce and store ice cream." - icon = 'icons/obj/kitchen.dmi' - icon_state = "icecream_vat" - density = 1 - anchored = 0 - atom_flags = ATOM_FLAG_NO_REACT | ATOM_FLAG_OPEN_CONTAINER - - var/list/product_types = list() - var/dispense_flavour = ICECREAM_VANILLA - var/flavour_name = "vanilla" - -/obj/machinery/icecream_vat/proc/get_ingredient_list(type) - switch(type) - if(ICECREAM_CHOCOLATE) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/nutriment/coco) - if(ICECREAM_STRAWBERRY) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/drink/juice/berry) - if(ICECREAM_BLUE) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/ethanol/singulo) - if(ICECREAM_CHERRY) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/nutriment/cherryjelly) - if(ICECREAM_BANANA) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/drink/juice/banana) - if(CONE_WAFFLE) - return list(/datum/reagent/nutriment/flour, /datum/reagent/sugar) - if(CONE_CHOC) - return list(/datum/reagent/nutriment/flour, /datum/reagent/sugar, /datum/reagent/nutriment/coco) - else - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice) - -/obj/machinery/icecream_vat/proc/get_flavour_name(flavour_type) - switch(flavour_type) - if(ICECREAM_CHOCOLATE) - return "chocolate" - if(ICECREAM_STRAWBERRY) - return "strawberry" - if(ICECREAM_BLUE) - return "blue" - if(ICECREAM_CHERRY) - return "cherry" - if(ICECREAM_BANANA) - return "banana" - if(CONE_WAFFLE) - return "waffle" - if(CONE_CHOC) - return "chocolate" - else - return "vanilla" - -/obj/machinery/icecream_vat/Initialize() - . = ..() - create_reagents(100) - while(product_types.len < 8) - product_types.Add(5) - reagents.add_reagent(/datum/reagent/drink/milk, 5) - reagents.add_reagent(/datum/reagent/nutriment/flour, 5) - reagents.add_reagent(/datum/reagent/sugar, 5) - reagents.add_reagent(/datum/reagent/drink/ice, 5) - -/obj/machinery/icecream_vat/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/obj/machinery/icecream_vat/interact(mob/user as mob) - var/dat - dat += "ICECREAM
" - dat += "Dispensing: [flavour_name] icecream

" - dat += "Vanilla icecream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
" - dat += "Strawberry icecream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
" - dat += "Chocolate icecream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
" - dat += "Blue icecream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
" - dat += "Cherry icecream: Select Make x5 [product_types[ICECREAM_CHERRY]] dollops left. (Ingredients: milk, ice, cherry jelly)
" - dat += "Banana icecream: Select Make x5 [product_types[ICECREAM_BANANA]] dollops left. (Ingredients: milk, ice, banana)
" - dat += "
CONES
" - dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
" - dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
" - dat += "
" - dat += "VAT CONTENT
" - for(var/datum/reagent/R in reagents.reagent_list) - dat += "[R.name]: [R.volume]" - dat += "Purge
" - dat += "Refresh Close" - - var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) - popup.set_content(dat) - popup.open() - -/obj/machinery/icecream_vat/attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/reagent_containers/food/icecream)) - var/obj/item/reagent_containers/food/icecream/I = O - if(!I.ice_creamed) - if(product_types[dispense_flavour] > 0) - src.visible_message("\icon[src] [user] scoops delicious [flavour_name] icecream into [I].") - product_types[dispense_flavour] -= 1 - I.add_ice_cream(flavour_name) - // if(beaker) - // beaker.reagents.trans_to(I, 10) - if(I.reagents.total_volume < 10) - I.reagents.add_reagent(/datum/reagent/sugar, 10 - I.reagents.total_volume) - else - to_chat(user, "There is not enough icecream left!") - else - to_chat(user, "[O] already has icecream in it.") - return 1 - else if(O.is_open_container()) - return - else - ..() - -/obj/machinery/icecream_vat/proc/make(mob/user, make_type, amount) - for(var/R in get_ingredient_list(make_type)) - if(reagents.has_reagent(R, amount)) - continue - amount = 0 - break - if(amount) - for(var/R in get_ingredient_list(make_type)) - reagents.remove_reagent(R, amount) - product_types[make_type] += amount - var/flavour = get_flavour_name(make_type) - if(make_type > 6) - src.visible_message("[user] cooks up some [flavour] cones.") - else - src.visible_message("[user] whips up some [flavour] icecream.") - else - to_chat(user, "You don't have the ingredients to make this.") - -/obj/machinery/icecream_vat/OnTopic(user, href_list) - if(href_list["close"]) - close_browser(usr, "window=icecreamvat") - return TOPIC_HANDLED - - if(href_list["select"]) - dispense_flavour = text2num(href_list["select"]) - flavour_name = get_flavour_name(dispense_flavour) - src.visible_message("[user] sets [src] to dispense [flavour_name] flavoured icecream.") - . = TOPIC_HANDLED - - else if(href_list["cone"]) - var/dispense_cone = text2num(href_list["cone"]) - var/cone_name = get_flavour_name(dispense_cone) - if(product_types[dispense_cone] >= 1) - product_types[dispense_cone] -= 1 - var/obj/item/reagent_containers/food/icecream/I = new(src.loc) - I.cone_type = cone_name - I.icon_state = "icecream_cone_[cone_name]" - I.desc = "Delicious [cone_name] cone, but no ice cream." - src.visible_message("[user] dispenses a crunchy [cone_name] cone from [src].") - else - to_chat(user, "There are no [cone_name] cones left!") - . = TOPIC_REFRESH - - else if(href_list["make"]) - var/amount = (text2num(href_list["amount"])) - var/C = text2num(href_list["make"]) - make(user, C, amount) - . = TOPIC_REFRESH - - else if(href_list["disposeI"]) - var/datum/reagent/R = locate(href_list["disposeI"]) in reagents.reagent_list - if(R) - reagents.del_reagent(R.type) - . = TOPIC_REFRESH - - if(href_list["refresh"] || . == TOPIC_REFRESH) - interact(user) - -/obj/item/reagent_containers/food/icecream - name = "ice cream cone" - desc = "Delicious waffle cone, but no ice cream." - icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time - layer = ABOVE_OBJ_LAYER - bitesize = 3 - - var/ice_creamed = 0 - var/cone_type - -/obj/item/reagent_containers/food/icecream/Initialize() - . = ..() - create_reagents(20) - reagents.add_reagent(/datum/reagent/nutriment, 5) - -/obj/item/reagent_containers/food/icecream/proc/add_ice_cream(flavour_name) - name = "[flavour_name] icecream" - AddOverlays("icecream_[flavour_name]") - desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream." - ice_creamed = 1 - -#undef ICECREAM_VANILLA -#undef ICECREAM_CHOCOLATE -#undef ICECREAM_STRAWBERRY -#undef ICECREAM_BLUE -#undef ICECREAM_CHERRY -#undef ICECREAM_BANANA -#undef CONE_WAFFLE -#undef CONE_CHOC diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm deleted file mode 100644 index a9da12d160d..00000000000 --- a/code/game/machinery/kitchen/microwave.dm +++ /dev/null @@ -1,429 +0,0 @@ - -/obj/machinery/microwave - name = "microwave" - icon = 'icons/obj/kitchen.dmi' - icon_state = "mw" - layer = BELOW_OBJ_LAYER - density = 1 - anchored = 1 - idle_power_usage = 5 WATTS - active_power_usage = 100 WATTS - atom_flags = ATOM_FLAG_NO_REACT - atom_flags = ATOM_FLAG_OPEN_CONTAINER - var/operating = 0 // Is it on? - var/dirty = 0 // = {0..100} Does it need cleaning? - var/broken = 0 // ={0,1,2} How broken is it??? - var/global/list/datum/recipe/available_recipes // List of the recipes you can use - var/global/list/acceptable_items // List of the items you can put in - var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 - var/cook_speed = 1 - - component_types = list( - /obj/item/circuitboard/microwave, - /obj/item/stock_parts/micro_laser = 3, - /obj/item/stock_parts/manipulator - ) - -// see code/modules/food/recipes_microwave.dm for recipes - -/******************* -* Initialising -********************/ - -/obj/machinery/microwave/Initialize() - . = ..() - create_reagents(100) - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe)-/datum/recipe)) - available_recipes+= new type - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items, length(recipe.items)) - // This will do until I can think of a fun recipe to use dionaea in - - // will also allow anything using the holder item to be microwaved into - // impure carbon. ~Z - acceptable_items |= /obj/item/holder - acceptable_items |= /obj/item/reagent_containers/food/grown - acceptable_items |= /obj/item/organ - -/******************* -* Item Adding -********************/ - -/obj/machinery/microwave/attackby(obj/item/O as obj, mob/user as mob) - if(src.broken > 0) - if(src.broken == 2 && isScrewdriver(O)) // If it's broken and they're using a screwdriver - user.visible_message( \ - SPAN("notice", "\The [user] starts to fix part of the microwave."), \ - SPAN("notice", "You start to fix part of the microwave.") \ - ) - if (do_after(user, 20, src)) - user.visible_message( \ - SPAN("notice", "\The [user] fixes part of the microwave."), \ - SPAN("notice", "You have fixed part of the microwave.") \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && isWrench(O)) // If it's broken and they're doing the wrench - user.visible_message( \ - SPAN("notice", "\The [user] starts to fix part of the microwave."), \ - SPAN("notice", "You start to fix part of the microwave.") \ - ) - if (do_after(user, 20, src)) - user.visible_message( \ - SPAN("notice", "\The [user] fixes the microwave."), \ - SPAN("notice", "You have fixed the microwave.") \ - ) - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.update_icon() - src.atom_flags = ATOM_FLAG_OPEN_CONTAINER - else - to_chat(user, SPAN("warning", "It's broken!")) - return 1 - else if(src.dirty == 100) // The microwave is all dirty so can't be used! - if(istype(O, /obj/item/reagent_containers/spray/cleaner) || istype(O, /obj/item/reagent_containers/rag)) // If they're trying to clean it then let them - user.visible_message( \ - SPAN("notice", "\The [user] starts to clean the microwave."), \ - SPAN("notice", "You start to clean the microwave.") \ - ) - if (do_after(user, 20, src)) - user.visible_message( \ - SPAN("notice", "\The [user] has cleaned the microwave."), \ - SPAN("notice", "You have cleaned the microwave.") \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.update_icon() - src.atom_flags = ATOM_FLAG_OPEN_CONTAINER - else //Otherwise bad luck!! - to_chat(user, SPAN("warning", "It's dirty!")) - return 1 - - else if(default_deconstruction_screwdriver(user, O)) - return - else if(default_deconstruction_crowbar(user, O)) - return - else if(default_part_replacement(user, O)) - return - - else if(isWrench(O)) - user.visible_message( \ - SPAN("notice", "\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave."), \ - SPAN("notice", "You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.") - ) - if(do_after(user,20, src)) - src.anchored = !src.anchored - user.visible_message( \ - SPAN("notice", "\The [user] [src.anchored ? "secures" : "unsecures"] the microwave."), \ - SPAN("notice", "You [src.anchored ? "secure" : "unsecure"] the microwave.") - ) - else - to_chat(user, SPAN("notice", "You decide not to do that.")) - return 1 - - else if(panel_open) // Don't cook with open panel - src.updateUsrDialog() - return - - else if(is_type_in_list(O,acceptable_items)) - if (length(InsertedContents()) >= max_n_of_items) - to_chat(user, SPAN("warning", "This [src] is full of ingredients, you cannot put more.")) - return 1 - if(istype(O, /obj/item/stack)) // This is bad, but I can't think of how to change it - var/obj/item/stack/S = O - if(S.get_amount() > 1) - new O.type(src) - S.use(1) - else if(!user.drop(O, src)) - return - user.visible_message( \ - SPAN("notice", "\The [user] has added one of [O] to \the [src]."), \ - SPAN("notice", "You add one of [O] to \the [src].")) - return - else - if(!user.drop(O, src)) - return - user.visible_message( \ - SPAN("notice", "\The [user] has added \the [O] to \the [src]."), \ - SPAN("notice", "You add \the [O] to \the [src].")) - return - else if(istype(O,/obj/item/reagent_containers/vessel)) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.type in acceptable_reagents)) - to_chat(user, SPAN("warning", "Your [O] contains components unsuitable for cookery.")) - return 1 - return - else if(istype(O,/obj/item/grab)) - var/obj/item/grab/G = O - to_chat(user, SPAN("warning", "This is ridiculous. You can not fit \the [G.affecting] in this [src].")) - return 1 - else - to_chat(user, SPAN("warning", "You have no idea what you can cook with this [O].")) - ..() - src.updateUsrDialog() - -/obj/machinery/microwave/attack_ai(mob/user as mob) - if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) - attack_hand(user) - -/obj/machinery/microwave/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* Microwave Menu -********************/ - -/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu - var/dat = list() - if(!anchored) - dat += "Secure the microwave first!" - else if(src.panel_open) - dat += "Panel is open!" - else if(src.broken > 0) - dat += "Bzzzzttttt" - else if(src.operating) - dat += "Microwaving in progress!
Please wait...!
" - else if(src.dirty==100) - dat += "This microwave is dirty!
Please clean it before use!
" - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - dat += "

Ingredients:

" - for(var/obj/O in InsertedContents()) - if(O in component_types) - continue - var/display_name = O.name - if(istype(O,/obj/item/reagent_containers/food/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if(istype(O,/obj/item/reagent_containers/food/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if(istype(O,/obj/item/reagent_containers/food/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if(istype(O,/obj/item/reagent_containers/food/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if(istype(O,/obj/item/reagent_containers/food/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for(var/O in items_counts) - var/N = items_counts[O] - if(!(O in items_measures)) - dat += "[capitalize(O)]: [N] [lowertext(O)]\s" - else - if(N == 1) - dat += "[capitalize(O)]: [N] [items_measures[O]]" - else - dat += "[capitalize(O)]: [N] [items_measures_p[O]]" - - for(var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if(R.type == /datum/reagent/capsaicin) - display_name = "Hotsauce" - if(R.type == /datum/reagent/frostoil) - display_name = "Coldsauce" - dat += "[display_name]: [R.volume] unit\s" - - if(!length(items_counts) && !length(reagents.reagent_list)) - dat += "The microwave is empty" - dat += "

Turn on!
Eject ingredients!" - - show_browser(user, "Microwave Controls[jointext(dat,"
")]
", "window=microwave") - onclose(user, "microwave") - return - - - -/*********************************** -* Microwave Menu Handling/Cooking -************************************/ - -/obj/machinery/microwave/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume == 0 && !length(InsertedContents())) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10, dirty * 5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.dropInto(loc) - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.dropInto(loc) - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.dropInto(loc) - return - else - var/halftime = round(recipe.time / 20) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.dropInto(loc) - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.dropInto(loc) - return - -/obj/machinery/microwave/proc/wzhzhzh(seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z - seconds = max(round(seconds / cook_speed), 1) - for (var/i = 1 to seconds) - if (stat & (NOPOWER|BROKEN)) - return 0 - use_power_oneoff(500) - sleep(10) - return 1 - -/obj/machinery/microwave/proc/has_extra_item() - for (var/obj/O in InsertedContents()) - if (!istype(O,/obj/item/reagent_containers/food) && !istype(O, /obj/item/grown)) - return 1 - return 0 - -/obj/machinery/microwave/proc/start() - src.visible_message(SPAN("notice", "The microwave turns on."), SPAN("notice", "You hear a microwave.")) - src.operating = 1 - src.updateUsrDialog() - src.update_icon() - -/obj/machinery/microwave/proc/abort() - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - src.update_icon() - -/obj/machinery/microwave/proc/stop() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - src.update_icon() - -/obj/machinery/microwave/proc/dispose() - for (var/obj/O in InsertedContents()) - O.dropInto(loc) - if (src.reagents.total_volume) - src.dirty++ - src.reagents.clear_reagents() - to_chat(usr, SPAN("notice", "You dispose of the microwave contents.")) - src.updateUsrDialog() - -/obj/machinery/microwave/proc/muck_start() - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound - src.update_icon() - -/obj/machinery/microwave/proc/muck_finish() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.visible_message(SPAN("warning", "The microwave gets covered in muck!")) - src.dirty = 100 // Make it dirty so it can't be used util cleaned - src.obj_flags = null //So you can't add condiments - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - src.update_icon() - -/obj/machinery/microwave/proc/broke() - var/datum/effect/effect/system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() - src.visible_message(SPAN("warning", "The microwave breaks!")) //Let them know they're stupid - src.broken = 2 // Make it broken so it can't be used util fixed - src.obj_flags = null //So you can't add condiments - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - src.update_icon() - -/obj/machinery/microwave/on_update_icon() - if(dirty == 100) - src.icon_state = "mwbloody[operating]" - else if(broken) - src.icon_state = "mwb" - else - src.icon_state = "mw[operating]" - -/obj/machinery/microwave/proc/fail() - var/amount = 0 - for (var/obj/O in InsertedContents()) - amount++ - if (O.reagents) - var/reagent_type = O.reagents.get_master_reagent_type() - if (reagent_type) - amount+=O.reagents.get_reagent_amount(reagent_type) - qdel(O) - src.reagents.clear_reagents() - var/obj/item/reagent_containers/food/badrecipe/ffuu = new(src) - ffuu.reagents.add_reagent(/datum/reagent/carbon, amount) - ffuu.reagents.add_reagent(/datum/reagent/toxin, amount/10) - return ffuu - -/obj/machinery/microwave/Topic(href, href_list) - if(..()) - return 1 - - usr.set_machine(src) - if(src.operating) - src.updateUsrDialog() - return - - switch(href_list["action"]) - if ("cook") - cook() - - if ("dispose") - dispose() - -/obj/machinery/microwave/RefreshParts() - ..() - var/ml_rating = 0 - var/man_rating = 0 - for(var/obj/item/stock_parts/P in component_parts) - if(ismicrolaser(P)) - ml_rating += P.rating - else if(ismanipulator(P)) - man_rating += P.rating - - active_power_usage = (100 WATTS) - ml_rating * 6 // Normally, 72 power usage with 10 max power usage with max micro lasers - cook_speed = man_rating // More -> better diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm deleted file mode 100644 index b77a66807bc..00000000000 --- a/code/game/machinery/kitchen/smartfridge.dm +++ /dev/null @@ -1,414 +0,0 @@ - -/* SmartFridge. Much todo -*/ -/obj/machinery/smartfridge - name = "\improper SmartFridge" - icon = 'icons/obj/machines/vending/smartfridge.dmi' - icon_state = "smartfridge" - layer = BELOW_OBJ_LAYER - density = 1 - anchored = 1 - idle_power_usage = 5 WATTS - active_power_usage = 100 WATTS - atom_flags = ATOM_FLAG_NO_REACT - var/global/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. - var/icon_on = "smartfridge" - var/icon_off = "smartfridge-off" - var/icon_panel = "smartfridge-panel" - var/list/item_records = list() - var/datum/stored_items/currently_vending = null //What we're putting out of the machine. - var/seconds_electrified = 0; - var/shoot_inventory = 0 - var/locked = 0 - var/scan_id = 1 - var/is_secure = 0 - var/shows_number_of_items = TRUE // Most machines of this type may show an approximate number of items in their storage - var/datum/wires/smartfridge/wires = null - -/obj/machinery/smartfridge/secure - is_secure = 1 - -/obj/machinery/smartfridge/New() - ..() - if(is_secure) - wires = new /datum/wires/smartfridge/secure(src) - else - wires = new /datum/wires/smartfridge(src) - -/obj/machinery/smartfridge/Destroy() - qdel(wires) - wires = null - for(var/datum/stored_items/S in item_records) - qdel(S) - item_records = null - return ..() - -/obj/machinery/smartfridge/proc/accept_check(obj/item/O as obj) - if(istype(O,/obj/item/reagent_containers/food/grown/) || istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/seeds - name = "\improper MegaSeed Servitor" - desc = "When you need seeds fast!" - icon = 'icons/obj/machines/vending/seeds.dmi' - icon_state = "seeds" - icon_on = "seeds" - icon_off = "seeds-off" - shows_number_of_items = FALSE - -/obj/machinery/smartfridge/seeds/accept_check(obj/item/O as obj) - if(istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/secure/extract - name = "\improper Metroid Extract Storage" - desc = "A refrigerated storage unit for metroid extracts." - req_access = list(access_research) - -/obj/machinery/smartfridge/secure/extract/accept_check(obj/item/O as obj) - if(istype(O,/obj/item/metroid_extract)) - return TRUE - - if(istype(O,/obj/item/metroidcross)) - return TRUE - - return FALSE - -/obj/machinery/smartfridge/secure/medbay - name = "\improper Refrigerated Medicine Storage" - desc = "A refrigerated storage unit for storing medicine and chemicals." - icon_state = "smartfridge" //To fix the icon in the map editor. - icon_on = "smartfridge_chem" - req_one_access = list(access_medical,access_chemistry) - -/obj/machinery/smartfridge/secure/medbay/accept_check(obj/item/O as obj) - if(istype(O, /obj/item/reagent_containers/vessel)) - return 1 - if(istype(O, /obj/item/storage/pill_bottle)) - return 1 - if(istype(O, /obj/item/reagent_containers/pill)) - return 1 - return 0 - -/obj/machinery/smartfridge/secure/virology - name = "\improper Refrigerated Virus Storage" - desc = "A refrigerated storage unit for storing viral material." - req_access = list(access_virology) - icon_state = "smartfridge_virology" - icon_on = "smartfridge_virology" - -/obj/machinery/smartfridge/secure/virology/accept_check(obj/item/O as obj) - if(istype(O,/obj/item/reagent_containers/vessel/beaker/vial/)) - return 1 - if(istype(O,/obj/item/virusdish/)) - return 1 - return 0 - -/obj/machinery/smartfridge/chemistry - name = "\improper Smart Chemical Storage" - desc = "A refrigerated storage unit for medicine and chemical storage." - -/obj/machinery/smartfridge/chemistry/accept_check(obj/item/O as obj) - if(istype(O,/obj/item/storage/pill_bottle) || istype(O,/obj/item/reagent_containers)) - return 1 - return 0 - -/obj/machinery/smartfridge/chemistry/virology - name = "\improper Smart Virus Storage" - desc = "A refrigerated storage unit for volatile sample storage." - -/obj/machinery/smartfridge/secure/blood - name = "\improper Smart Blood Storage" - desc = "A refrigerated storage unit for IV bags, usualy with blood." - icon_state = "smartfridge_blood" - icon_on = "smartfridge_blood" - icon_off = "smartfridge_blood-off" - req_one_access = list(access_medical,access_chemistry) - shows_number_of_items = FALSE - -/obj/machinery/smartfridge/secure/blood/filled/Initialize() - . = ..() - for(var/item_path in starts_with) - var/quantity = starts_with[item_path] - for(var/i = 1 to quantity) - stock_item(new item_path(src)) - -/obj/machinery/smartfridge/secure/blood/filled - var/list/starts_with = list( - /obj/item/reagent_containers/ivbag/blood/OPlus = 1, - /obj/item/reagent_containers/ivbag/blood/OMinus = 1, - /obj/item/reagent_containers/ivbag/blood/APlus = 2, - /obj/item/reagent_containers/ivbag/blood/AMinus = 2, - /obj/item/reagent_containers/ivbag/blood/BPlus = 2, - /obj/item/reagent_containers/ivbag/blood/BMinus = 2, - /obj/item/reagent_containers/ivbag = 2 - ) - -/obj/machinery/smartfridge/secure/blood/accept_check(obj/item/O) - if(istype(O, /obj/item/reagent_containers/ivbag)) - return TRUE - return FALSE - -/obj/machinery/smartfridge/drinks - name = "\improper Drink Showcase" - desc = "A refrigerated storage unit for tasty tasty alcohol." - -/obj/machinery/smartfridge/drinks/accept_check(obj/item/O as obj) - if(istype(O,/obj/item/reagent_containers/vessel)) - return 1 - -/obj/machinery/smartfridge/secure/food - name = "\improper Refrigerated Food Showcase" - desc = "A refrigerated storage unit for tasty tasty food." - req_access = list(access_kitchen) - -/obj/machinery/smartfridge/secure/food/accept_check(obj/item/O as obj) - if(istype(O,/obj/item/reagent_containers/food)) - return 1 - return 0 - -/obj/machinery/smartfridge/drying_rack - name = "\improper Drying Rack" - desc = "A machine for drying plants." - icon = 'icons/obj/machines/vending/drying.dmi' - icon_state = "drying_rack" - icon_on = "drying_rack_on" - icon_off = "drying_rack" - -/obj/machinery/smartfridge/drying_rack/accept_check(obj/item/O as obj) - if(istype(O, /obj/item/reagent_containers/food/)) - var/obj/item/reagent_containers/food/S = O - if (S.dried_type) - return 1 - return 0 - -/obj/machinery/smartfridge/drying_rack/Process() - ..() - if(inoperable()) - return - if(contents.len) - dry() - update_icon() - -/obj/machinery/smartfridge/drying_rack/on_update_icon() - ClearOverlays() - if(inoperable()) - icon_state = icon_off - else - icon_state = icon_on - if(contents.len) - AddOverlays("drying_rack_filled") - if(!inoperable()) - AddOverlays("drying_rack_drying") - -/obj/machinery/smartfridge/drying_rack/proc/dry() - for(var/datum/stored_items/I in item_records) - for(var/obj/item/reagent_containers/food/S in I.instances) - if(S.dry || !I.get_specific_product(get_turf(src), S)) continue - if(S.dried_type == S.type) - S.dry = 1 - S.SetName("dried [S.name]") - S.color = "#a38463" - stock_item(S) - else - var/D = S.dried_type - new D(get_turf(src)) - qdel(S) - return - -/obj/machinery/smartfridge/Process() - if(stat & (BROKEN|NOPOWER)) - return - if(src.seconds_electrified > 0) - src.seconds_electrified-- - if(src.shoot_inventory && prob(2)) - src.throw_item() - -/obj/machinery/smartfridge/on_update_icon() - if(stat & (BROKEN|NOPOWER)) - icon_state = icon_off // Some of them don't have any display cases thus not requiring an overlay - else - icon_state = icon_on - if(shows_number_of_items) - ClearOverlays() - if(stat & (BROKEN|NOPOWER)) - AddOverlays(icon_off) // The use of overlays allows us to see how much is stored inside, even if the machine happens to be unpowered - switch(contents.len) - if(0) - icon_state = icon_on - if(1 to 25) - icon_state = "[icon_on]1" // 1/4 loaded - if(26 to 75) - icon_state = "[icon_on]2" // half-loaded - if(76 to INFINITY) - icon_state = "[icon_on]3" // "full" - else -/******************* -* Item Adding -********************/ - -/obj/machinery/smartfridge/attackby(obj/item/O as obj, mob/user as mob) - if(isScrewdriver(O)) - panel_open = !panel_open - user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") - ClearOverlays() - if(panel_open) - AddOverlays(image(icon, icon_panel)) - SSnano.update_uis(src) - return - - if(isMultitool(O) || isWirecutter(O)) - if(panel_open) - attack_hand(user) - return - - if(stat & NOPOWER) - to_chat(user, SPAN_NOTICE("\The [src] is unpowered and useless.")) - return - - if(accept_check(O)) - if(!user.drop(O)) - return - stock_item(O) - update_icon() - user.visible_message(SPAN_NOTICE("\The [user] has added \the [O] to \the [src]."), SPAN_NOTICE("You add \the [O] to \the [src].")) - - else if(istype(O, /obj/item/storage)) - var/obj/item/storage/bag/P = O - var/plants_loaded = 0 - for(var/obj/G in P.contents) - if(accept_check(G) && P.remove_from_storage(G, src)) - plants_loaded++ - stock_item(G) - update_icon() - - if(plants_loaded) - user.visible_message(SPAN_NOTICE("\The [user] loads \the [src] with the contents of \the [P]."), SPAN_NOTICE("You load \the [src] with the contents of \the [P].")) - if(P.contents.len > 0) - to_chat(user, SPAN_NOTICE("Some items were refused.")) - - else - to_chat(user, SPAN_NOTICE("\The [src] smartly refuses [O].")) - return 1 - -/obj/machinery/smartfridge/secure/emag_act(remaining_charges, mob/user) - if(!emagged) - playsound(src.loc, 'sound/effects/computer_emag.ogg', 25) - emagged = 1 - locked = -1 - to_chat(user, "You short out the product lock on [src].") - return 1 - -/obj/machinery/smartfridge/proc/stock_item(obj/item/O) - for(var/datum/stored_items/I in item_records) - if(istype(O, I.item_path) && O.name == I.item_name) - stock(I, O) - return - - var/datum/stored_items/I = new /datum/stored_items(src, O.type, O.name) - dd_insertObjectList(item_records, I) - stock(I, O) - -/obj/machinery/smartfridge/proc/stock(datum/stored_items/I, obj/item/O) - I.add_product(O) - SSnano.update_uis(src) - -/obj/machinery/smartfridge/attack_ai(mob/user) - attack_hand(user) - -/obj/machinery/smartfridge/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - wires.Interact(user) - ui_interact(user) - -/******************* -* SmartFridge Menu -********************/ - -/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1) - user.set_machine(src) - - var/data[0] - data["contents"] = null - data["electrified"] = seconds_electrified > 0 - data["shoot_inventory"] = shoot_inventory - data["locked"] = locked - data["secure"] = is_secure - - var/list/items[0] - for (var/i=1 to length(item_records)) - var/datum/stored_items/I = item_records[i] - var/count = I.get_amount() - if(count > 0) - items.Add(list(list("display_name" = html_encode(capitalize(I.item_name)), "vend" = i, "quantity" = count))) - - if(items.len > 0) - data["contents"] = items - - ui = SSnano.try_update_ui(user, src, ui_key, ui, data, force_open) - if(!ui) - ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500) - ui.set_initial_data(data) - ui.open() - -/obj/machinery/smartfridge/Topic(href, href_list) - if(..()) return 0 - - var/mob/user = usr - var/datum/nanoui/ui = SSnano.get_open_ui(user, src, "main") - - if(href_list["close"]) - user.unset_machine() - ui.close() - return 0 - - if(href_list["vend"]) - var/index = text2num(href_list["vend"]) - var/amount = text2num(href_list["amount"]) - var/datum/stored_items/I = item_records[index] - var/count = I.get_amount() - - // Sanity check, there are probably ways to press the button when it shouldn't be possible. - if(count > 0) - if((count - amount) < 0) - amount = count - for(var/i = 1 to amount) - I.get_product(get_turf(src), user) - update_icon() - - return 1 - return 0 - -/obj/machinery/smartfridge/proc/throw_item() - var/obj/throw_item = null - var/mob/living/target = locate() in view(7,src) - if(!target) - return 0 - - for(var/datum/stored_items/I in src.item_records) - throw_item = I.get_product(loc) - if (!throw_item) - continue - break - - if(!throw_item) - return 0 - throw_item.throw_at(target, 16, null, src) - update_icon() - visible_message(SPAN_WARNING("[src] launches [throw_item.name] at [target.name]!")) - return 1 - -/************************ -* Secure SmartFridges -*************************/ - -/obj/machinery/smartfridge/secure/Topic(href, href_list) - if(stat & (NOPOWER|BROKEN)) return 0 - if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) - if(!allowed(usr) && !emagged && scan_id && href_list["vend"]) - to_chat(usr, SPAN_WARNING("Access denied.")) - return 0 - return ..() diff --git a/code/modules/cooking/coocking_appliances/grill.dm b/code/modules/cooking/coocking_appliances/grill.dm index ccf17dfa41d..8d8f42ad337 100644 --- a/code/modules/cooking/coocking_appliances/grill.dm +++ b/code/modules/cooking/coocking_appliances/grill.dm @@ -4,7 +4,7 @@ name = "Grill" desc = "A deep pit of charcoal for cooking food. A slot on the side of the machine takes wood and converts it into charcoal." description_info = "Ctrl+Click: Set Temperatures / Timers. \nShift+Ctrl+Click: Turn on a burner.\nAlt+Click: Empty container of physical food." - icon = 'icons/obj/cwj_cooking/grill.dmi' + icon = 'icons/obj/cooking/grill.dmi' icon_state = "grill" density = FALSE anchored = TRUE @@ -119,17 +119,17 @@ handle_ignition(input) /obj/machinery/cooking_with_jane/grill/proc/handle_burning(input) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] container.handle_burning() /obj/machinery/cooking_with_jane/grill/proc/handle_ignition(input) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] if(container.handle_ignition()) on_fire = TRUE @@ -173,10 +173,10 @@ var/input = getInput(params) if(items[input] != null) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] container.process_item(used_item, params) - else if(istype(used_item, /obj/item/reagent_containers/cooking_with_jane/cooking_container/grill_grate)) + else if(istype(used_item, /obj/item/reagent_containers/vessel/cooking_container/grill_grate)) to_chat(usr, SPAN_NOTICE("You put a [used_item] on the grill.")) if(usr.canUnEquip(used_item)) usr.unEquip(used_item, src) @@ -240,9 +240,9 @@ return var/input = getInput(params) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] #ifdef CWJ_DEBUG log_debug("/cooking_with_jane/grill/AltClick called on burner [input] [container]") @@ -314,10 +314,10 @@ /obj/machinery/cooking_with_jane/grill/proc/handle_cooking(var/mob/user, var/input, set_timer=FALSE) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] if(set_timer) reference_time = timer[input] else diff --git a/code/modules/cooking/coocking_appliances/oven.dm b/code/modules/cooking/coocking_appliances/oven.dm index 355bdc73d2a..e8a0754708f 100644 --- a/code/modules/cooking/coocking_appliances/oven.dm +++ b/code/modules/cooking/coocking_appliances/oven.dm @@ -4,7 +4,7 @@ name = "Convection Oven" desc = "A cozy oven for baking food." description_info = "Ctrl+Click: Set Temperatures / Timers. \nShift+Ctrl+Click: Turn on the oven.\nAlt+Click: Empty container of physical food." - icon = 'icons/obj/cwj_cooking/oven.dmi' + icon = 'icons/obj/cooking/oven.dmi' icon_state = "oven" density = TRUE anchored = TRUE @@ -87,17 +87,17 @@ handle_ignition() /obj/machinery/cooking_with_jane/oven/proc/handle_burning() - if(!(items && istype(items, /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items && istype(items, /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items + var/obj/item/reagent_containers/vessel/cooking_container/container = items container.handle_burning() /obj/machinery/cooking_with_jane/oven/proc/handle_ignition() - if(!(items && istype(items, /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items && istype(items, /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items + var/obj/item/reagent_containers/vessel/cooking_container/container = items if(container.handle_ignition()) on_fire = TRUE /obj/machinery/cooking_with_jane/oven/attackby(var/obj/item/used_item, var/mob/user, params) @@ -108,10 +108,10 @@ if(opened && center_selected) if(items != null) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items + var/obj/item/reagent_containers/vessel/cooking_container/container = items container.process_item(used_item, params) - else if(istype(used_item, /obj/item/reagent_containers/cooking_with_jane/cooking_container)) + else if(istype(used_item, /obj/item/reagent_containers/vessel/cooking_container)) to_chat(usr, SPAN_NOTICE("You put a [used_item] on the oven.")) if(usr.canUnEquip(used_item)) usr.unEquip(used_item, src) @@ -212,8 +212,8 @@ if(!opened) to_chat(user, SPAN_NOTICE("The oven must be open to retrieve the food.")) else - if((items != null && istype(items, /obj/item/reagent_containers/cooking_with_jane/cooking_container))) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items + if((items != null && istype(items, /obj/item/reagent_containers/vessel/cooking_container))) + var/obj/item/reagent_containers/vessel/cooking_container/container = items #ifdef CWJ_DEBUG log_debug("/cooking_with_jane/oven/AltClick called on [container]") @@ -297,10 +297,10 @@ /obj/machinery/cooking_with_jane/oven/proc/handle_cooking(var/mob/user, set_timer=FALSE) - if(!(items && istype(items, /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items && istype(items, /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items + var/obj/item/reagent_containers/vessel/cooking_container/container = items if(set_timer) reference_time = timer else diff --git a/code/modules/cooking/coocking_appliances/stove.dm b/code/modules/cooking/coocking_appliances/stove.dm index 22d55fc7941..39137fdf0c6 100644 --- a/code/modules/cooking/coocking_appliances/stove.dm +++ b/code/modules/cooking/coocking_appliances/stove.dm @@ -5,7 +5,7 @@ name = "Stovetop" desc = "A set of four burners for cooking food." description_info = "Ctrl+Click: Set Temperatures / Timers. \nShift+Ctrl+Click: Turn on a burner.\nAlt+Click: Empty container of physical food." - icon = 'icons/obj/cwj_cooking/stove.dmi' + icon = 'icons/obj/cooking/stove.dmi' icon_state = "stove" density = FALSE anchored = TRUE @@ -93,17 +93,17 @@ handle_ignition(input) /obj/machinery/cooking_with_jane/stove/proc/handle_burning(input) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] container.handle_burning() /obj/machinery/cooking_with_jane/stove/proc/handle_ignition(input) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] if(container.handle_ignition()) on_fire = TRUE @@ -134,10 +134,10 @@ var/input = getInput(params) if(items[input] != null) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] container.process_item(used_item, params) - else if(istype(used_item, /obj/item/reagent_containers/cooking_with_jane/cooking_container)) + else if(istype(used_item, /obj/item/reagent_containers/vessel/cooking_container)) to_chat(usr, SPAN_NOTICE("You put a [used_item] on the stove.")) if(usr.canUnEquip(used_item)) usr.unEquip(used_item, src) @@ -199,9 +199,9 @@ return var/input = getInput(params) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] #ifdef CWJ_DEBUG log_debug("/cooking_with_jane/stove/AltClick called on burner [input] [container]") @@ -273,10 +273,10 @@ /obj/machinery/cooking_with_jane/stove/proc/handle_cooking(var/mob/user, var/input, set_timer=FALSE) - if(!(items[input] && istype(items[input], /obj/item/reagent_containers/cooking_with_jane/cooking_container))) + if(!(items[input] && istype(items[input], /obj/item/reagent_containers/vessel/cooking_container))) return - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = items[input] + var/obj/item/reagent_containers/vessel/cooking_container/container = items[input] if(set_timer) reference_time = timer[input] else diff --git a/code/modules/cooking/cooking.dm b/code/modules/cooking/cooking.dm index cc98da8dddb..b9f422de264 100644 --- a/code/modules/cooking/cooking.dm +++ b/code/modules/cooking/cooking.dm @@ -390,93 +390,93 @@ Food quality is calculated based on the steps taken. //----------------------------------------------------------------------------------- //Add reagent step shortcut commands -/datum/cooking/recipe/proc/create_step_add_reagent(var/reagent_id, var/amount, var/optional) +/datum/cooking/recipe/proc/create_step_add_reagent(reagent_id, amount, optional) var/datum/cooking/recipe_step/add_reagent/step = new (reagent_id, amount, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Add item step shortcut commands -/datum/cooking/recipe/proc/create_step_add_item(var/item_type, var/optional) +/datum/cooking/recipe/proc/create_step_add_item(item_type, optional) var/datum/cooking/recipe_step/add_item/step = new (item_type, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Use item step shortcut commands -/datum/cooking/recipe/proc/create_step_use_item(var/item_type, var/optional) +/datum/cooking/recipe/proc/create_step_use_item(item_type, optional) var/datum/cooking/recipe_step/use_item/step = new (item_type, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Add produce step shortcut commands -/datum/cooking/recipe/proc/create_step_add_produce(var/produce, var/optional) +/datum/cooking/recipe/proc/create_step_add_produce(produce, optional) var/datum/cooking/recipe_step/add_produce/step = new /datum/cooking/recipe_step/add_produce(produce, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Use Tool step shortcut commands -/datum/cooking/recipe/proc/create_step_use_tool(var/type, var/quality, var/optional) +/datum/cooking/recipe/proc/create_step_use_tool(type, quality, optional) var/datum/cooking/recipe_step/use_tool/step = new (type, quality, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Use Stove step shortcut commands -/datum/cooking/recipe/proc/create_step_use_stove(var/heat, var/time, var/optional) +/datum/cooking/recipe/proc/create_step_use_stove(heat, time, optional) var/datum/cooking/recipe_step/use_stove/step = new (heat, time, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Use Grill step shortcut commands -/datum/cooking/recipe/proc/create_step_use_grill(var/heat, var/time, var/optional) +/datum/cooking/recipe/proc/create_step_use_grill(heat, time, optional) var/datum/cooking/recipe_step/use_grill/step = new (heat, time, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Use Oven step shortcut commands -/datum/cooking/recipe/proc/create_step_use_oven(var/heat, var/time, var/optional) +/datum/cooking/recipe/proc/create_step_use_oven(heat, time, optional) var/datum/cooking/recipe_step/use_oven/step = new (heat, time, src) return src.add_step(step, optional) //----------------------------------------------------------------------------------- //Customize the last step created -/datum/cooking/recipe/proc/set_step_desc(var/new_description) +/datum/cooking/recipe/proc/set_step_desc(new_description) last_created_step.desc = new_description -/datum/cooking/recipe/proc/set_step_max_quality(var/quality) +/datum/cooking/recipe/proc/set_step_max_quality(quality) last_created_step.flags |= CWJ_BASE_QUALITY_ENABLED last_created_step.max_quality_award = quality -/datum/cooking/recipe/proc/set_step_base_quality(var/quality) +/datum/cooking/recipe/proc/set_step_base_quality(quality) last_created_step.flags |= CWJ_MAX_QUALITY_ENABLED last_created_step.base_quality_award = quality -/datum/cooking/recipe/proc/set_step_custom_result_desc(var/new_description) +/datum/cooking/recipe/proc/set_step_custom_result_desc(new_description) last_created_step.custom_result_desc = new_description -/datum/cooking/recipe/proc/set_exact_type_required(var/boolean) +/datum/cooking/recipe/proc/set_exact_type_required(boolean) if((last_created_step.class == CWJ_ADD_ITEM) || (last_created_step.class == CWJ_USE_ITEM)) last_created_step?:exact_path = boolean return TRUE else return FALSE -/datum/cooking/recipe/proc/set_reagent_skip(var/boolean) +/datum/cooking/recipe/proc/set_reagent_skip(boolean) if((last_created_step.class == CWJ_ADD_ITEM) || (last_created_step.class == CWJ_ADD_PRODUCE)) last_created_step?:reagent_skip = boolean return TRUE else return FALSE -/datum/cooking/recipe/proc/set_exclude_reagents(var/list/exclude_list) +/datum/cooking/recipe/proc/set_exclude_reagents(list/exclude_list) if((last_created_step.class == CWJ_ADD_ITEM) || (last_created_step.class == CWJ_ADD_PRODUCE)) last_created_step?:exclude_reagents = exclude_list return TRUE else return FALSE -/datum/cooking/recipe/proc/set_inherited_quality_modifier(var/modifier) +/datum/cooking/recipe/proc/set_inherited_quality_modifier(modifier) if(last_created_step.class == CWJ_ADD_ITEM || last_created_step.class == CWJ_USE_TOOL || last_created_step.class == CWJ_ADD_PRODUCE) last_created_step?:inherited_quality_modifier = modifier return TRUE else return FALSE -/datum/cooking/recipe/proc/set_remain_percent_modifier(var/modifier) +/datum/cooking/recipe/proc/set_remain_percent_modifier(modifier) if(last_created_step.class == CWJ_ADD_REAGENT) last_created_step?:remain_percent = modifier return TRUE @@ -555,7 +555,7 @@ Food quality is calculated based on the steps taken. //----------------------------------------------------------------------------------- //Function that dynamically adds a step into a given recipe matrix. -/datum/cooking/recipe/proc/add_step(var/datum/cooking/recipe_step/step, var/optional) +/datum/cooking/recipe/proc/add_step(datum/cooking/recipe_step/step, optional) //Required steps can't have exclusive options. //If a given recipe needs to split into two branching required steps, it should be split into two different recipes. @@ -617,12 +617,12 @@ Food quality is calculated based on the steps taken. //----------------------------------------------------------------------------------- //default function for creating a product -/datum/cooking/recipe/proc/create_product(var/datum/cooking/recipe_pointer/pointer) +/datum/cooking/recipe/proc/create_product(datum/cooking/recipe_pointer/pointer) var/datum/cooking/recipe_tracker/parent = pointer.parent_ref.resolve() var/obj/item/container = parent.holder_ref.resolve() if(container) //Build up a list of reagents that went into this. - var/datum/reagents/slurry = new /datum/reagents(max=1000000, A=container) + var/datum/reagents/slurry = new /datum/reagents(1000000, container) //Filter out reagents based on settings if(GLOB.cwj_step_dictionary_ordered["[CWJ_ADD_REAGENT]"]) @@ -745,7 +745,7 @@ Food quality is calculated based on the steps taken. //Extra Reagents in a recipe take away recipe quality for every extra unit added to the concoction. //Reagents are calculated in two areas. Here and /datum/cooking/recipe_step/add_reagent/calculate_quality -/datum/cooking/recipe/proc/calculate_reagent_quality(var/datum/cooking/recipe_pointer/pointer) +/datum/cooking/recipe/proc/calculate_reagent_quality(datum/cooking/recipe_pointer/pointer) if(!GLOB.cwj_step_dictionary_ordered["[CWJ_ADD_REAGENT]"]) return 0 var/datum/cooking/recipe_tracker/parent = pointer.parent_ref.resolve() @@ -768,7 +768,7 @@ Food quality is calculated based on the steps taken. //----------------------------------------------------------------------------------- -/datum/cooking/proc/get_class_string(var/code) +/datum/cooking/proc/get_class_string(code) switch(code) if(CWJ_ADD_ITEM) return "Add Item" diff --git a/code/modules/cooking/cooking_catalog.dm b/code/modules/cooking/cooking_catalog.dm index 92ae1413e4e..c65af8bb448 100644 --- a/code/modules/cooking/cooking_catalog.dm +++ b/code/modules/cooking/cooking_catalog.dm @@ -1,3 +1,5 @@ +//FIXME SHIT I GOTTA REWORK SOME COMPUTER CATALOG +/* /datum/computer_file/program/cook_catalog filename = "cook_catalog" filedesc = "Cooking Assistant" @@ -36,7 +38,7 @@ return 0 //=================================================================================== /proc/createCookingCatalogs() - for(var/datum/cooking_with_jane/recipe/our_recipe in GLOB.cwj_recipe_list) + for(var/datum/cooking/recipe/our_recipe in GLOB.cwj_recipe_list) if(our_recipe.appear_in_default_catalog) create_cooking_catalog_entry(our_recipe) @@ -77,7 +79,7 @@ return cmp_catalog_entry_asc(a, b) -/proc/create_cooking_catalog_entry(var/datum/cooking_with_jane/recipe/our_recipe) +/proc/create_cooking_catalog_entry(var/datum/cooking/recipe/our_recipe) var/catalog_id = CATALOG_COOKING if(!GLOB.catalogs[catalog_id]) GLOB.catalogs[catalog_id] = new /datum/catalog(catalog_id) @@ -92,9 +94,9 @@ /datum/catalog_entry/cooking associated_template = "catalog_entry_cooking.tmpl" - var/datum/cooking_with_jane/recipe/recipe + var/datum/cooking/recipe/recipe -/datum/catalog_entry/cooking/New(var/datum/cooking_with_jane/recipe/our_recipe) +/datum/catalog_entry/cooking/New(var/datum/cooking/recipe/our_recipe) thing_type = our_recipe.type title = our_recipe.name recipe = our_recipe @@ -193,7 +195,7 @@ keep_local_name = FALSE /datum/asset/simple/cooking_icons/register() - for(var/datum/cooking_with_jane/recipe/our_recipe in GLOB.cwj_recipe_list) + for(var/datum/cooking/recipe/our_recipe in GLOB.cwj_recipe_list) var/icon/I = null var/filename = null if(our_recipe.product_type) @@ -212,3 +214,4 @@ log_debug("Created cooking icon under file name [filename]") #endif ..() +*/ diff --git a/code/modules/cooking/cooking_init.dm b/code/modules/cooking/cooking_init.dm index 2074490ed1c..70fda9dbc1f 100644 --- a/code/modules/cooking/cooking_init.dm +++ b/code/modules/cooking/cooking_init.dm @@ -1,11 +1,11 @@ /proc/initialize_cooking_recipes() //All combination path datums, save for the default recipes we don't want. - var/list/recipe_paths = typesof(/datum/cooking_with_jane/recipe) - recipe_paths -= /datum/cooking_with_jane/recipe + var/list/recipe_paths = typesof(/datum/cooking/recipe) + recipe_paths -= /datum/cooking/recipe for (var/path in recipe_paths) - var/datum/cooking_with_jane/recipe/example_recipe = new path() + var/datum/cooking/recipe/example_recipe = new path() if(!GLOB.cwj_recipe_dictionary[example_recipe.cooking_container]) GLOB.cwj_recipe_dictionary[example_recipe.cooking_container] = list() GLOB.cwj_recipe_dictionary[example_recipe.cooking_container]["[example_recipe.unique_id]"] = example_recipe - GLOB.cwj_recipe_list += example_recipe \ No newline at end of file + GLOB.cwj_recipe_list += example_recipe diff --git a/code/modules/cooking/cooking_items/cooking_containers.dm b/code/modules/cooking/cooking_items/cooking_containers.dm index b1ae309ef7d..62f022c49b8 100644 --- a/code/modules/cooking/cooking_items/cooking_containers.dm +++ b/code/modules/cooking/cooking_items/cooking_containers.dm @@ -7,32 +7,34 @@ //Holder for a portion of an incomplete meal, //allows a cook to temporarily offload recipes to work on things factory-style, eliminating the need for 20 plates to get things done fast. -/obj/item/reagent_containers/cooking_with_jane/cooking_container - icon = 'icons/obj/cwj_cooking/kitchen.dmi' +/obj/item/reagent_containers/vessel/cooking_container + icon = 'icons/obj/cooking/kitchen.dmi' description_info = "Can be emptied of physical food with alt-click." var/shortname var/place_verb = "into" var/appliancetype //string beans w_class = ITEM_SIZE_SMALL volume = 240 //Don't make recipes using reagents in larger quantities than this amount; they won't work. - var/datum/cooking_with_jane/recipe_tracker/tracker = null //To be populated the first time the plate is interacted with. + var/datum/cooking/recipe_tracker/tracker = null //To be populated the first time the plate is interacted with. var/lip //Icon state of the lip layer of the object var/removal_penalty = 0 //A flat quality reduction for removing an unfinished recipe from the container. possible_transfer_amounts = list(5,10,30,60,90,120,240) amount_per_transfer_from_this = 10 - reagent_flags = OPENCONTAINER | NO_REACT + atom_flags = ATOM_FLAG_NO_REACT + lid_type=null + var/list/stove_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what stove-cooking has been done on this food. var/list/grill_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what grill-cooking has been done on this food. var/list/oven_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what oven-cooking has been done on this food. -/obj/item/reagent_containers/cooking_with_jane/cooking_container/Initialize() +/obj/item/reagent_containers/vessel/cooking_container/Initialize() .=..() appearance_flags |= KEEP_TOGETHER -/obj/item/reagent_containers/cooking_with_jane/cooking_container/examine(var/mob/user) +/obj/item/reagent_containers/vessel/cooking_container/examine(mob/user) if(!..(user, 1)) return FALSE if(contents) @@ -40,15 +42,15 @@ if(reagents.total_volume) to_chat(user, get_reagent_info()) -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/get_content_info() +/obj/item/reagent_containers/vessel/cooking_container/proc/get_content_info() var/string = "It contains:
" return string -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/get_reagent_info() +/obj/item/reagent_containers/vessel/cooking_container/proc/get_reagent_info() return "It contains [reagents.total_volume] units of reagents." -/obj/item/reagent_containers/cooking_with_jane/cooking_container/attackby(var/obj/item/used_item, var/mob/user) +/obj/item/reagent_containers/vessel/cooking_container/attackby(obj/item/used_item, mob/user) #ifdef CWJ_DEBUG log_debug("cooking_container/attackby() called!") @@ -65,7 +67,7 @@ return TRUE -/obj/item/reagent_containers/cooking_with_jane/cooking_container/standard_pour_into(mob/user, atom/target) +/obj/item/reagent_containers/vessel/cooking_container/standard_pour_into(mob/user, atom/target) #ifdef CWJ_DEBUG @@ -88,7 +90,7 @@ . = ..(user, target) -/obj/item/reagent_containers/cooking_with_jane/cooking_container/afterattack(var/obj/target, var/mob/user, var/flag) +/obj/item/reagent_containers/vessel/cooking_container/afterattack(obj/target, mob/user, flag) if(!istype(target, /obj/item/reagent_containers)) return if(!flag) @@ -98,7 +100,7 @@ if(standard_pour_into(user, target)) return 1 -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/process_item(var/obj/I, var/mob/user, var/lower_quality_on_fail = 0, var/send_message = TRUE) +/obj/item/reagent_containers/vessel/cooking_container/proc/process_item(obj/I, mob/user, lower_quality_on_fail = 0, send_message = TRUE) #ifdef CWJ_DEBUG @@ -111,7 +113,7 @@ for (var/obj/item/contained in contents) contained?:food_quality -= lower_quality_on_fail else - tracker = new /datum/cooking_with_jane/recipe_tracker(src) + tracker = new /datum/cooking/recipe_tracker(src) var/return_value = 0 switch(tracker.process_item_wrap(I, user)) @@ -119,7 +121,7 @@ if(send_message) to_chat(user, "It doesn't seem like you can create a meal from that. Yet.") if(lower_quality_on_fail) - for (var/datum/cooking_with_jane/recipe_pointer/pointer in tracker.active_recipe_pointers) + for (var/datum/cooking/recipe_pointer/pointer in tracker.active_recipe_pointers) pointer?:tracked_quality -= lower_quality_on_fail if(CWJ_CHOICE_CANCEL) if(send_message) @@ -151,21 +153,21 @@ return return_value //TODO: Handle the contents of the container being ruined via burning. -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/handle_burning() +/obj/item/reagent_containers/vessel/cooking_container/proc/handle_burning() return //TODO: Handle the contents of the container lighting on actual fire. -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/handle_ignition() +/obj/item/reagent_containers/vessel/cooking_container/proc/handle_ignition() return FALSE -/obj/item/reagent_containers/cooking_with_jane/cooking_container/verb/empty() +/obj/item/reagent_containers/vessel/cooking_container/verb/empty() set src in view(1) set name = "Empty Container" set category = "Object" set desc = "Removes items from the container, excluding reagents." do_empty(usr) -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/do_empty(mob/user, var/atom/target = null, var/reagent_clear = TRUE) +/obj/item/reagent_containers/vessel/cooking_container/proc/do_empty(mob/user, atom/target = null, reagent_clear = TRUE) #ifdef CWJ_DEBUG log_debug("cooking_container/do_empty() called!") #endif @@ -206,12 +208,12 @@ to_chat(user, SPAN_NOTICE("You remove all the solid items from [src].")) -/obj/item/reagent_containers/cooking_with_jane/cooking_container/AltClick(var/mob/user) +/obj/item/reagent_containers/vessel/cooking_container/AltClick(mob/user) do_empty(user) //Deletes contents of container. //Used when food is burned, before replacing it with a burned mess -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/clear() +/obj/item/reagent_containers/vessel/cooking_container/proc/clear() QDEL_LIST(contents) contents=list() reagents.clear_reagents() @@ -221,11 +223,11 @@ clear_cooking_data() -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/clear_cooking_data() +/obj/item/reagent_containers/vessel/cooking_container/proc/clear_cooking_data() stove_data = list("High"=0 , "Medium" = 0, "Low"=0) grill_data = list("High"=0 , "Medium" = 0, "Low"=0) -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/label(var/number, var/CT = null) +/obj/item/reagent_containers/vessel/cooking_container/proc/label(number, CT = null) //This returns something like "Fryer basket 1 - empty" //The latter part is a brief reminder of contents //This is used in the removal menu @@ -238,8 +240,8 @@ return . + O.name //Just append the name of the first object return . + "empty" -/obj/item/reagent_containers/cooking_with_jane/cooking_container/update_icon() - cut_overlays() +/obj/item/reagent_containers/vessel/cooking_container/update_icon() + overlays.Cut() for(var/obj/item/our_item in vis_contents) src.remove_from_visible(our_item) @@ -247,9 +249,9 @@ var/obj/item/our_item = contents[i] src.add_to_visible(our_item) if(lip) - add_overlay(image(src.icon, icon_state=lip, layer=ABOVE_OBJ_LAYER)) + AddOverlays(image(src.icon, icon_state=lip, layer=ABOVE_OBJ_LAYER)) -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/add_to_visible(var/obj/item/our_item) +/obj/item/reagent_containers/vessel/cooking_container/proc/add_to_visible(obj/item/our_item) our_item.pixel_x = initial(our_item.pixel_x) our_item.pixel_y = initial(our_item.pixel_y) our_item.vis_flags = VIS_INHERIT_LAYER | VIS_INHERIT_PLANE | VIS_INHERIT_ID @@ -257,14 +259,14 @@ our_item.transform *= 0.6 src.vis_contents += our_item -/obj/item/reagent_containers/cooking_with_jane/cooking_container/proc/remove_from_visible(var/obj/item/our_item) +/obj/item/reagent_containers/vessel/cooking_container/proc/remove_from_visible(obj/item/our_item) our_item.vis_flags = 0 our_item.blend_mode = 0 our_item.transform = null src.vis_contents.Remove(our_item) -/obj/item/reagent_containers/cooking_with_jane/cooking_container/plate - icon = 'icons/obj/cwj_cooking/eris_kitchen.dmi' +/obj/item/reagent_containers/vessel/cooking_container/plate + icon = 'icons/obj/cooking/eris_kitchen.dmi' name = "serving plate" shortname = "plate" desc = "A shitty serving plate. You probably shouldn't be seeing this." @@ -272,7 +274,7 @@ matter = list(MATERIAL_STEEL = 5) appliancetype = PLATE -/obj/item/reagent_containers/cooking_with_jane/cooking_container/board +/obj/item/reagent_containers/vessel/cooking_container/board name = "cutting board" shortname = "cutting_board" desc = "Good for making sandwiches on, too." @@ -281,7 +283,7 @@ matter = list(MATERIAL_WOOD = 5) appliancetype = CUTTING_BOARD -/obj/item/reagent_containers/cooking_with_jane/cooking_container/oven +/obj/item/reagent_containers/vessel/cooking_container/oven name = "oven dish" shortname = "shelf" desc = "Put ingredients in this; designed for use with an oven. Warranty void if used." @@ -291,7 +293,7 @@ matter = list(MATERIAL_STEEL = 10) appliancetype = OVEN -/obj/item/reagent_containers/cooking_with_jane/cooking_container/pan +/obj/item/reagent_containers/vessel/cooking_container/pan name = "pan" desc = "An normal pan." @@ -299,10 +301,10 @@ lip = "pan_lip" item_state = "pan" matter = list(MATERIAL_PLASTEEL = 5) - hitsound = 'sound/weapons/smash.ogg' + hitsound = 'sound/effects/fighting/smash.ogg' appliancetype = PAN -/obj/item/reagent_containers/cooking_with_jane/cooking_container/pot +/obj/item/reagent_containers/vessel/cooking_container/pot name = "cooking pot" shortname = "pot" desc = "Boil things with this. Maybe even stick 'em in a stew." @@ -312,12 +314,12 @@ item_state = "pot" matter = list(MATERIAL_STEEL = 5) - hitsound = 'sound/weapons/smash.ogg' + hitsound = 'sound/effects/fighting/smash.ogg' removal_penalty = 5 appliancetype = POT - w_class = ITEM_SIZE_BULKY + w_class = ITEM_SIZE_HUGE -/obj/item/reagent_containers/cooking_with_jane/cooking_container/deep_basket +/obj/item/reagent_containers/vessel/cooking_container/deep_basket name = "deep fryer basket" shortname = "basket" desc = "Cwispy! Warranty void if used." @@ -328,7 +330,7 @@ removal_penalty = 5 appliancetype = DF_BASKET -/obj/item/reagent_containers/cooking_with_jane/cooking_container/air_basket +/obj/item/reagent_containers/vessel/cooking_container/air_basket name = "air fryer basket" shortname = "basket" desc = "Permanently laminated with dried oil and late-stage capitalism." @@ -339,7 +341,7 @@ removal_penalty = 5 appliancetype = AF_BASKET -/obj/item/reagent_containers/cooking_with_jane/cooking_container/grill_grate +/obj/item/reagent_containers/vessel/cooking_container/grill_grate name = "grill grate" shortname = "grate" place_verb = "onto" @@ -350,7 +352,7 @@ appliancetype = GRILL -/obj/item/reagent_containers/cooking_with_jane/cooking_container/bowl +/obj/item/reagent_containers/vessel/cooking_container/bowl name = "prep bowl" shortname = "bowl" desc = "A bowl for mixing, or tossing a salad. Not to be eaten out of" diff --git a/code/modules/cooking/cooking_items/dollop.dm b/code/modules/cooking/cooking_items/dollop.dm index 151d3009944..9c0d7d03e34 100644 --- a/code/modules/cooking/cooking_items/dollop.dm +++ b/code/modules/cooking/cooking_items/dollop.dm @@ -1,20 +1,20 @@ /obj/item/reagent_containers/food/dollop name = "dollop of frosting" desc = "A fresh serving of just frosting and nothing but frosting." - icon = 'icons/obj/cwj_cooking/kitchen.dmi' + icon = 'icons/obj/cooking/kitchen.dmi' icon_state = "dollop" bitesize = 4 var/reagent_id = "frosting" - preloaded_reagents = list("frosting" = 30) + startswith = list(/datum/reagent/organic/sugar/frosting = 30) -/obj/item/reagent_containers/food/dollop/New(var/loc, var/new_reagent_id = "frosting", var/new_amount = 30) +/obj/item/reagent_containers/food/dollop/New(loc, new_reagent_id = "frosting", new_amount = 30) . = ..() if(new_reagent_id) var/reagent_name = get_reagent_name_by_id(reagent_id) if(reagent_name) name = "dollop of [reagent_name]" desc = "A fresh serving of just [reagent_name] and nothing but [reagent_name]." - preloaded_reagents = list("[new_reagent_id]" = new_amount) + startswith = list("[new_reagent_id]" = new_amount) /obj/item/reagent_containers/food/dollop/Initialize() . = ..() diff --git a/code/modules/cooking/cooking_items/spatula.dm b/code/modules/cooking/cooking_items/spatula.dm index aea474a7146..4dc8bbb5ada 100644 --- a/code/modules/cooking/cooking_items/spatula.dm +++ b/code/modules/cooking/cooking_items/spatula.dm @@ -1,11 +1,10 @@ /obj/item/tool/shovel/spatula name = "spatula" desc = "A Hydrodynamic Spatula. Port and Starboard attachments not included." - icon = 'icons/obj/cwj_cooking/kitchen.dmi' + icon = 'icons/obj/cooking/kitchen.dmi' icon_state = "spatula" item_state = "spatula" - force = WEAPON_FORCE_WEAK + force = 7 w_class = ITEM_SIZE_SMALL attack_verb = list("smacked", "slapped", "spanked", "whapped", "whacked") hitsound = 'sound/weapons/punch3.ogg' - tool_qualities = list(QUALITY_SHOVELING = 5, QUALITY_DIGGING = 5, QUALITY_HAMMERING = 1) diff --git a/code/modules/cooking/cooking_tracker.dm b/code/modules/cooking/cooking_tracker.dm index 75f80fd6d58..127757e100a 100644 --- a/code/modules/cooking/cooking_tracker.dm +++ b/code/modules/cooking/cooking_tracker.dm @@ -1,8 +1,8 @@ //Datum held by objects that is the core component in a recipe. //You use other items on an items with this datum to advance its recipe. //Kept intentionally bare-bones because MANY of these objects are going to be made. -/datum/cooking_with_jane/recipe_tracker - var/datum/weakref/holder_ref //The parent object holding the recipe tracker. +/datum/cooking/recipe_tracker + var/weakref/holder_ref //The parent object holding the recipe tracker. var/step_flags //A collection of the classes of steps the recipe can take next. //This variable is a little complicated. //It specifically references recipe_pointer objects each pointing to a different point in a different recipe. @@ -11,30 +11,30 @@ var/list/completed_list = list()//List of recipes marked as complete. var/recipe_started = FALSE //Tells if steps have been taken for this recipe -/datum/cooking_with_jane/recipe_tracker/New(var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container) +/datum/cooking/recipe_tracker/New(obj/item/reagent_containers/vessel/cooking_container/container) #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_tracker/New") + log_debug("Called /datum/cooking/recipe_tracker/New") #endif - holder_ref = WEAKREF(container) + holder_ref = weakref(container) src.generate_pointers() src.populate_step_flags() //Call when a method is done incorrectly that provides a flat debuff to the whole meal. -/datum/cooking_with_jane/recipe_tracker/proc/apply_flat_penalty(var/penalty) +/datum/cooking/recipe_tracker/proc/apply_flat_penalty(penalty) if(active_recipe_pointers.len == 0) return - for (var/datum/cooking_with_jane/recipe_pointer/pointer in active_recipe_pointers) + for (var/datum/cooking/recipe_pointer/pointer in active_recipe_pointers) pointer.tracked_quality -= penalty //Generate recipe_pointer objects based on the global list -/datum/cooking_with_jane/recipe_tracker/proc/generate_pointers() +/datum/cooking/recipe_tracker/proc/generate_pointers() #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_tracker/proc/generate_pointers") + log_debug("Called /datum/cooking/recipe_tracker/proc/generate_pointers") #endif - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = holder_ref.resolve() + var/obj/item/reagent_containers/vessel/cooking_container/container = holder_ref.resolve() #ifdef CWJ_DEBUG log_debug("Loading all references to [container] of type [container.type] using [container.appliancetype]") @@ -45,30 +45,30 @@ #ifdef CWJ_DEBUG log_debug("Loading [container.appliancetype] , [key] into pointer.") #endif - active_recipe_pointers += new /datum/cooking_with_jane/recipe_pointer(container.appliancetype, key, src) + active_recipe_pointers += new /datum/cooking/recipe_pointer(container.appliancetype, key, src) //Generate next steps -/datum/cooking_with_jane/recipe_tracker/proc/get_step_options() +/datum/cooking/recipe_tracker/proc/get_step_options() #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_tracker/proc/get_step_options") + log_debug("Called /datum/cooking/recipe_tracker/proc/get_step_options") #endif var/list/options = list() - for (var/datum/cooking_with_jane/recipe_pointer/pointer in active_recipe_pointers) + for (var/datum/cooking/recipe_pointer/pointer in active_recipe_pointers) options += pointer.get_possible_steps() #ifdef CWJ_DEBUG - log_debug("/datum/cooking_with_jane/recipe_tracker/proc/get_step_options returned [options.len] options") + log_debug("/datum/cooking/recipe_tracker/proc/get_step_options returned [options.len] options") #endif return options -/datum/cooking_with_jane/recipe_tracker/proc/populate_step_flags() +/datum/cooking/recipe_tracker/proc/populate_step_flags() #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_tracker/proc/populate_step_flags") + log_debug("Called /datum/cooking/recipe_tracker/proc/populate_step_flags") #endif step_flags = 0 - for (var/datum/cooking_with_jane/recipe_pointer/pointer in active_recipe_pointers) + for (var/datum/cooking/recipe_pointer/pointer in active_recipe_pointers) var/flag_group = pointer.get_step_flags() #ifdef CWJ_DEBUG log_debug("Flag group returned with [flag_group]") @@ -76,17 +76,17 @@ step_flags |= flag_group //Check if a recipe tracker has recipes loaded. -/datum/cooking_with_jane/recipe_tracker/proc/has_recipes() +/datum/cooking/recipe_tracker/proc/has_recipes() #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_tracker/proc/has_recipes") + log_debug("Called /datum/cooking/recipe_tracker/proc/has_recipes") #endif return active_recipe_pointers.len //Wrapper function for analyzing process_item internally. -/datum/cooking_with_jane/recipe_tracker/proc/process_item_wrap(var/obj/used_object, var/mob/user) +/datum/cooking/recipe_tracker/proc/process_item_wrap(obj/used_object, mob/user) #ifdef CWJ_DEBUG - log_debug("/datum/cooking_with_jane/recipe_tracker/proc/process_item_wrap called!") + log_debug("/datum/cooking/recipe_tracker/proc/process_item_wrap called!") #endif var/response = process_item(used_object, user) @@ -97,13 +97,13 @@ return response //Core function that checks if a object meets all the requirements for certain recipe actions. -/datum/cooking_with_jane/recipe_tracker/proc/process_item(var/obj/used_object, var/mob/user) +/datum/cooking/recipe_tracker/proc/process_item(obj/used_object, mob/user) #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_tracker/proc/process_item") + log_debug("Called /datum/cooking/recipe_tracker/proc/process_item") #endif if(completion_lockout) #ifdef CWJ_DEBUG - log_debug("/datum/cooking_with_jane/recipe_tracker/proc/process_item held in lockout!") + log_debug("/datum/cooking/recipe_tracker/proc/process_item held in lockout!") #endif return CWJ_LOCKOUT var/list/valid_steps = list() @@ -111,10 +111,10 @@ var/use_class //Decide what action is being taken with the item, if any. - for (var/datum/cooking_with_jane/recipe_pointer/pointer in active_recipe_pointers) + for (var/datum/cooking/recipe_pointer/pointer in active_recipe_pointers) var/option_list = list() option_list += pointer.get_possible_steps() - for (var/datum/cooking_with_jane/recipe_step/step in option_list) + for (var/datum/cooking/recipe_step/step in option_list) var/class_string = get_class_string(step.class) var/is_valid = step.check_conditions_met(used_object, src) #ifdef CWJ_DEBUG @@ -159,10 +159,10 @@ var/has_traversed = FALSE //traverse and cull pointers - for (var/datum/cooking_with_jane/recipe_pointer/pointer in active_recipe_pointers) + for (var/datum/cooking/recipe_pointer/pointer in active_recipe_pointers) var/used_id = FALSE var/list/option_list = pointer.get_possible_steps() - for (var/datum/cooking_with_jane/recipe_step/step in option_list) + for (var/datum/cooking/recipe_step/step in option_list) if(!(step.unique_id in valid_unique_id_list)) continue else @@ -182,7 +182,7 @@ if(completed_list.len && (completed_list.len != active_recipe_pointers.len)) var/recipe_string = null - for(var/datum/cooking_with_jane/recipe_pointer/pointer in completed_list) + for(var/datum/cooking/recipe_pointer/pointer in completed_list) if(!recipe_string) recipe_string = "\a [pointer.current_recipe.name]" else @@ -190,13 +190,13 @@ if(user) if(alert(user, "If you finish cooking now, you will create [recipe_string]. However, you feel there are possibilities beyond even this. Continue cooking anyways?",,"Yes","No") == "Yes") //Cull finished recipe items - for (var/datum/cooking_with_jane/recipe_pointer/pointer in completed_list) + for (var/datum/cooking/recipe_pointer/pointer in completed_list) active_recipe_pointers.Remove(pointer) qdel(pointer) completed_list = list() //Check if we completed our recipe - var/datum/cooking_with_jane/recipe_pointer/chosen_pointer = null + var/datum/cooking/recipe_pointer/chosen_pointer = null if(completed_list.len >= 1) #ifdef CWJ_DEBUG log_debug("/recipe_tracker/proc/process_item YO WE ACTUALLY HAVE A COMPLETED A RECIPE!") @@ -211,7 +211,7 @@ chosen_pointer = completed_list[choice] //Call a proc that follows one of the steps in question, so we have all the nice to_chat calls. - var/datum/cooking_with_jane/recipe_step/sample_step = valid_steps[1] + var/datum/cooking/recipe_step/sample_step = valid_steps[1] #ifdef CWJ_DEBUG log_debug("/recipe_tracker/proc/process_item: Calling follow_step") #endif @@ -235,7 +235,7 @@ //Sleep... My precious, monsterous child.... /* -/datum/cooking_with_jane/recipe_tracker/proc/attempt_complete_recursive( +/datum/cooking/recipe_tracker/proc/attempt_complete_recursive( var/obj/used_object, var/use_class, var/depth = 1, @@ -247,12 +247,12 @@ ourlist = considered_steps.Copy() log_debug("/recipe_tracker/proc/attempt_complete_recursive entered second recursion!") - for (var/datum/cooking_with_jane/recipe_pointer/pointer in ourlist) + for (var/datum/cooking/recipe_pointer/pointer in ourlist) var/option_list = list() option_list += pointer.get_possible_steps() var/has_valid_step = FALSE var/had_traversal = FALSE - for (var/datum/cooking_with_jane/recipe_step/step in option_list) + for (var/datum/cooking/recipe_step/step in option_list) if(step.class != use_class) continue @@ -282,23 +282,23 @@ //Points to a specific step in a recipe while considering the optional paths that recipe can take. -/datum/cooking_with_jane/recipe_pointer - var/datum/cooking_with_jane/recipe/current_recipe //The recipe being followed here. - var/datum/cooking_with_jane/recipe_step/current_step //The current step in the recipe we are following. +/datum/cooking/recipe_pointer + var/datum/cooking/recipe/current_recipe //The recipe being followed here. + var/datum/cooking/recipe_step/current_step //The current step in the recipe we are following. - var/datum/weakref/parent_ref + var/weakref/parent_ref var/tracked_quality = 0 //The current level of quality within that recipe. var/list/steps_taken = list() //built over the course of following a recipe, tracks what has been done to the object. Format is unique_id:result -/datum/cooking_with_jane/recipe_pointer/New(start_type, recipe_id, var/datum/cooking_with_jane/recipe_tracker/parent) +/datum/cooking/recipe_pointer/New(start_type, recipe_id, datum/cooking/recipe_tracker/parent) #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_pointer/pointer/New([start_type], [recipe_id], parent)") + log_debug("Called /datum/cooking/recipe_pointer/pointer/New([start_type], [recipe_id], parent)") #endif - parent_ref = WEAKREF(parent) + parent_ref = weakref(parent) #ifdef CWJ_DEBUG if(!GLOB.cwj_recipe_dictionary[start_type][recipe_id]) @@ -319,10 +319,10 @@ #endif //A list returning the next possible steps in a given recipe -/datum/cooking_with_jane/recipe_pointer/proc/get_possible_steps() +/datum/cooking/recipe_pointer/proc/get_possible_steps() #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_pointer/proc/get_possible_steps") + log_debug("Called /datum/cooking/recipe_pointer/proc/get_possible_steps") if(!current_step) log_debug("Recipe pointer in [current_recipe] has no current_step assigned?") @@ -333,12 +333,12 @@ //Build a list of all possible steps while accounting for exclusive step relations. //Could be optimized, but keeps the amount of variables in the pointer low. var/list/return_list = list(current_step.next_step) - for(var/datum/cooking_with_jane/recipe_step/step in current_step.optional_step_list) + for(var/datum/cooking/recipe_step/step in current_step.optional_step_list) if(steps_taken["[step.unique_id]"]) //Traverse an option chain if one is present. if(step.flags & CWJ_IS_OPTION_CHAIN) - var/datum/cooking_with_jane/recipe_step/option_chain_step = step.next_step + var/datum/cooking/recipe_step/option_chain_step = step.next_step while(option_chain_step.unique_id != current_step.unique_id) if(!steps_taken["[option_chain_step.unique_id]"]) return_list += option_chain_step @@ -366,14 +366,14 @@ #ifdef CWJ_DEBUG - log_debug("/datum/cooking_with_jane/recipe_pointer/proc/get_possible_steps returned list of length [return_list.len]") + log_debug("/datum/cooking/recipe_pointer/proc/get_possible_steps returned list of length [return_list.len]") #endif return return_list //Get the classes of all applicable next-steps for a recipe in a bitmask. -/datum/cooking_with_jane/recipe_pointer/proc/get_step_flags() +/datum/cooking/recipe_pointer/proc/get_step_flags() #ifdef CWJ_DEBUG - log_debug("Called /datum/cooking_with_jane/recipe_pointer/proc/get_step_flags") + log_debug("Called /datum/cooking/recipe_pointer/proc/get_step_flags") if(!current_step) log_debug("Recipe pointer in [current_recipe] has no current_step assigned?") else if(!current_step.next_step) @@ -383,12 +383,12 @@ //Build a list of all possible steps while accounting for exclusive step relations. //Could be optimized, but keeps the amount of variables in the pointer low. var/return_flags = current_step.next_step.class - for(var/datum/cooking_with_jane/recipe_step/step in current_step.optional_step_list) + for(var/datum/cooking/recipe_step/step in current_step.optional_step_list) if(steps_taken["[step.unique_id]"]) //Traverse an option chain if one is present. if(step.flags & CWJ_IS_OPTION_CHAIN) - var/datum/cooking_with_jane/recipe_step/option_chain_step = step.next_step + var/datum/cooking/recipe_step/option_chain_step = step.next_step while(option_chain_step.unique_id != current_step.unique_id) if(!steps_taken["[option_chain_step.unique_id]"]) return_flags |= option_chain_step.class @@ -409,27 +409,27 @@ return_flags |= step.class return return_flags -/datum/cooking_with_jane/recipe_pointer/proc/has_option_by_id(var/id) +/datum/cooking/recipe_pointer/proc/has_option_by_id(id) if(!GLOB.cwj_step_dictionary["[id]"]) return FALSE - var/datum/cooking_with_jane/recipe_step/active_step = GLOB.cwj_step_dictionary["[id]"] + var/datum/cooking/recipe_step/active_step = GLOB.cwj_step_dictionary["[id]"] var/list/possible_steps = get_possible_steps() if(active_step in possible_steps) return TRUE return FALSE -/datum/cooking_with_jane/recipe_pointer/proc/traverse(var/id, var/obj/used_obj) +/datum/cooking/recipe_pointer/proc/traverse(id, obj/used_obj) #ifdef CWJ_DEBUG log_debug("/recipe_pointer/traverse: Traversing pointer from [current_step.unique_id] to [id].") #endif if(!GLOB.cwj_step_dictionary["[id]"]) return FALSE - var/datum/cooking_with_jane/recipe_tracker/tracker = parent_ref.resolve() - var/datum/cooking_with_jane/recipe_step/active_step = GLOB.cwj_step_dictionary["[id]"] + var/datum/cooking/recipe_tracker/tracker = parent_ref.resolve() + var/datum/cooking/recipe_step/active_step = GLOB.cwj_step_dictionary["[id]"] var/is_valid_step = FALSE var/list/possible_steps = get_possible_steps() - for(var/datum/cooking_with_jane/recipe_step/possible_step in possible_steps) + for(var/datum/cooking/recipe_step/possible_step in possible_steps) if(active_step.unique_id == possible_step.unique_id) is_valid_step = TRUE break diff --git a/code/modules/cooking/recipes/example_recipes.dm b/code/modules/cooking/recipes/example_recipes.dm index c0cbd42aabf..bfc0efc852e 100644 --- a/code/modules/cooking/recipes/example_recipes.dm +++ b/code/modules/cooking/recipes/example_recipes.dm @@ -2,7 +2,7 @@ /* //Example of the same recipe, but for the grill, just to show off how compact everything is. -/datum/cooking_with_jane/recipe/sandwich_basic_bowl +/datum/cooking/recipe/sandwich_basic_bowl cooking_container = BOWL product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -12,7 +12,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_deep_fryer +/datum/cooking/recipe/sandwich_deep_fryer cooking_container = DF_BASKET product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -22,7 +22,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_air_fryer +/datum/cooking/recipe/sandwich_air_fryer cooking_container = AF_BASKET product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -32,7 +32,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_pot +/datum/cooking/recipe/sandwich_pot cooking_container = POT product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -42,7 +42,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_oven +/datum/cooking/recipe/sandwich_oven cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -53,7 +53,7 @@ appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_bad_with_tomato +/datum/cooking/recipe/sandwich_bad_with_tomato cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -64,7 +64,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_tofu_bad +/datum/cooking/recipe/sandwich_tofu_bad cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -77,7 +77,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_bad_stacked +/datum/cooking/recipe/sandwich_bad_stacked cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -88,7 +88,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_salted +/datum/cooking/recipe/sandwich_salted cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -99,7 +99,7 @@ ) appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_split +/datum/cooking/recipe/sandwich_split cooking_container = PAN product_type = /obj/item/reagent_containers/food/sandwich product_count = 2 @@ -110,7 +110,7 @@ appear_in_default_catalog = FALSE -/datum/cooking_with_jane/recipe/sandwich_toasted +/datum/cooking/recipe/sandwich_toasted cooking_container = GRILL product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( diff --git a/code/modules/cooking/recipes/recipe.dm b/code/modules/cooking/recipes/recipe.dm index 08ac88559fd..96d9ff34761 100644 --- a/code/modules/cooking/recipes/recipe.dm +++ b/code/modules/cooking/recipes/recipe.dm @@ -1,6 +1,12 @@ +var/list/cutting_tools = list( +) + +var/list/hammering_tools = list( + +) //Example Recipes -/datum/cooking_with_jane/recipe/steak_stove +/datum/cooking/recipe/steak_stove //Name of the recipe. If not defined, it will just use the name of the product_type name="Stove-Top cooked Steak" @@ -60,7 +66,7 @@ //**Meat and Seafood**// //Missing: cubancarp, friedchicken, tonkatsu, enchiladas, monkeysdelight, fishandchips, katsudon, fishfingers, -/datum/cooking_with_jane/recipe/donkpocket //Special interactions in recipes_microwave.dm, not sure if this is going to function as expected +/datum/cooking/recipe/donkpocket //Special interactions in recipes_microwave.dm, not sure if this is going to function as expected cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/donkpocket @@ -70,7 +76,7 @@ list(CWJ_ADD_REAGENT, "thermite", 1) //So it cooks inhand, totally. ) -/datum/cooking_with_jane/recipe/cooked_cutlet +/datum/cooking/recipe/cooked_cutlet cooking_container = GRILL product_type = /obj/item/reagent_containers/food/cutlet step_builder = list( @@ -80,7 +86,7 @@ list(CWJ_USE_STOVE, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/cooked_meatball +/datum/cooking/recipe/cooked_meatball cooking_container = PAN product_type = /obj/item/reagent_containers/food/meatball step_builder = list( @@ -90,7 +96,7 @@ list(CWJ_USE_STOVE, J_LO, 20 SECONDS) ) -/datum/cooking_with_jane/recipe/cooked_patty +/datum/cooking/recipe/cooked_patty cooking_container = GRILL product_type = /obj/item/reagent_containers/food/patty step_builder = list( @@ -100,7 +106,7 @@ list(CWJ_USE_GRILL, J_LO, 10 SECONDS) ) -/datum/cooking_with_jane/recipe/chickensteak +/datum/cooking/recipe/chickensteak cooking_container = PAN product_type = /obj/item/reagent_containers/food/chickensteak @@ -128,7 +134,7 @@ list(CWJ_USE_STOVE, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/porkchops +/datum/cooking/recipe/porkchops cooking_container = PAN product_type = /obj/item/reagent_containers/food/porkchops @@ -157,7 +163,7 @@ list(CWJ_USE_STOVE, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/roastchicken +/datum/cooking/recipe/roastchicken cooking_container = OVEN product_type = /obj/item/reagent_containers/food/roastchicken step_builder = list( @@ -168,7 +174,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/tofurkey //Not quite meat but cooked similar to roast chicken +/datum/cooking/recipe/tofurkey //Not quite meat but cooked similar to roast chicken cooking_container = OVEN product_type = /obj/item/reagent_containers/food/tofurkey step_builder = list( @@ -180,7 +186,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/boiled_egg +/datum/cooking/recipe/boiled_egg cooking_container = POT product_type = /obj/item/reagent_containers/food/boiledegg step_builder = list( @@ -190,7 +196,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/friedegg_basic +/datum/cooking/recipe/friedegg_basic cooking_container = PAN product_type = /obj/item/reagent_containers/food/friedegg step_builder = list( @@ -207,7 +213,7 @@ list(CWJ_USE_STOVE, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/bacon +/datum/cooking/recipe/bacon cooking_container = PAN product_type = /obj/item/reagent_containers/food/bacon step_builder = list( @@ -219,7 +225,7 @@ list(CWJ_USE_OVEN, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/baconegg +/datum/cooking/recipe/baconegg cooking_container = PAN product_type = /obj/item/reagent_containers/food/baconeggs step_builder = list( @@ -232,7 +238,7 @@ list(CWJ_USE_OVEN, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/benedict +/datum/cooking/recipe/benedict cooking_container = PAN product_type = /obj/item/reagent_containers/food/benedict step_builder = list( @@ -248,7 +254,7 @@ list(CWJ_USE_OVEN, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/omelette +/datum/cooking/recipe/omelette cooking_container = PAN product_type = /obj/item/reagent_containers/food/omelette step_builder = list( @@ -264,7 +270,7 @@ list(CWJ_USE_OVEN, J_LO, 10 SECONDS) ) -/datum/cooking_with_jane/recipe/taco +/datum/cooking/recipe/taco cooking_container = PAN product_type = /obj/item/reagent_containers/food/taco step_builder = list( @@ -278,7 +284,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/hotdog +/datum/cooking/recipe/hotdog cooking_container = GRILL product_type = /obj/item/reagent_containers/food/hotdog step_builder = list( @@ -293,7 +299,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/sausage +/datum/cooking/recipe/sausage cooking_container = GRILL product_type = /obj/item/reagent_containers/food/sausage step_builder = list( @@ -305,7 +311,7 @@ list(CWJ_USE_GRILL, J_MED, 10 SECONDS) ) -/datum/cooking_with_jane/recipe/wingfangchu +/datum/cooking/recipe/wingfangchu cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/wingfangchu step_builder = list( @@ -314,7 +320,7 @@ list(CWJ_USE_TOOL, QUALITY_CUTTING, 1) ) -/datum/cooking_with_jane/recipe/sashimi +/datum/cooking/recipe/sashimi cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/sashimi step_builder = list( @@ -324,7 +330,7 @@ list(CWJ_USE_TOOL, QUALITY_CUTTING, 1) ) -/datum/cooking_with_jane/recipe/chawanmushi +/datum/cooking/recipe/chawanmushi cooking_container = OVEN product_type = /obj/item/reagent_containers/food/chawanmushi step_builder = list( @@ -336,7 +342,7 @@ list(CWJ_USE_OVEN, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/kabob +/datum/cooking/recipe/kabob cooking_container = GRILL product_type = /obj/item/reagent_containers/food/kabob step_builder = list( @@ -348,7 +354,7 @@ list(CWJ_USE_GRILL, J_MED, 20 SECONDS) ) -/datum/cooking_with_jane/recipe/tofukabob +/datum/cooking/recipe/tofukabob cooking_container = GRILL product_type = /obj/item/reagent_containers/food/tofukabob step_builder = list( @@ -360,7 +366,7 @@ list(CWJ_USE_GRILL, J_MED, 20 SECONDS) ) -/datum/cooking_with_jane/recipe/humankabob +/datum/cooking/recipe/humankabob cooking_container = GRILL product_type = /obj/item/reagent_containers/food/kabob step_builder = list( @@ -374,7 +380,7 @@ //**Cereals and Grains**// //missing: poppyprezel -/datum/cooking_with_jane/recipe/bread +/datum/cooking/recipe/bread cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/bread recipe_guide = "Put dough in an oven, bake for 30 seconds on medium." @@ -384,7 +390,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/meatbread +/datum/cooking/recipe/meatbread cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/meatbread recipe_guide = "Put dough in an oven, bake for 30 seconds on medium." @@ -398,7 +404,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/xenomeatbread +/datum/cooking/recipe/xenomeatbread cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/xenomeatbread recipe_guide = "Put dough in an oven, bake for 30 seconds on medium." @@ -412,7 +418,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/tofubread +/datum/cooking/recipe/tofubread cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/tofubread recipe_guide = "Put dough in an oven, bake for 30 seconds on medium." @@ -426,7 +432,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/creamcheesebread +/datum/cooking/recipe/creamcheesebread cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/creamcheesebread recipe_guide = "Put dough in an oven, bake for 30 seconds on medium." @@ -438,7 +444,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/bananabread +/datum/cooking/recipe/bananabread cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/bananabread @@ -453,7 +459,7 @@ list(CWJ_ADD_PRODUCE, "banana", 1), list(CWJ_USE_OVEN, J_MED, 40 SECONDS) ) -/datum/cooking_with_jane/recipe/baguette +/datum/cooking/recipe/baguette cooking_container = OVEN product_type = /obj/item/reagent_containers/food/baguette step_builder = list( @@ -465,7 +471,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/cracker +/datum/cooking/recipe/cracker cooking_container = OVEN product_type = /obj/item/reagent_containers/food/cracker step_builder = list( @@ -475,7 +481,7 @@ list(CWJ_USE_OVEN, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/bun +/datum/cooking/recipe/bun cooking_container = OVEN product_type = /obj/item/reagent_containers/food/bun product_count = 3 @@ -487,7 +493,7 @@ list(CWJ_USE_OVEN, J_HI, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/flatbread +/datum/cooking/recipe/flatbread cooking_container = OVEN product_type = /obj/item/reagent_containers/food/flatbread product_count = 3 @@ -497,7 +503,7 @@ list(CWJ_USE_OVEN, J_HI, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/twobread +/datum/cooking/recipe/twobread cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/twobread step_builder = list( @@ -506,7 +512,7 @@ list(CWJ_ADD_REAGENT, "wine", 5) ) -/datum/cooking_with_jane/recipe/pancakes +/datum/cooking/recipe/pancakes cooking_container = PAN product_type = /obj/item/reagent_containers/food/pancakes step_builder = list( @@ -520,7 +526,7 @@ list(CWJ_USE_OVEN, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/waffles +/datum/cooking/recipe/waffles cooking_container = PAN product_type = /obj/item/reagent_containers/food/waffles step_builder = list( @@ -535,7 +541,7 @@ list(CWJ_USE_OVEN, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/rofflewaffles +/datum/cooking/recipe/rofflewaffles cooking_container = PAN product_type = /obj/item/reagent_containers/food/rofflewaffles step_builder = list( @@ -552,7 +558,7 @@ list(CWJ_USE_OVEN, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/jelliedtoast +/datum/cooking/recipe/jelliedtoast cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jelliedtoast/cherry step_builder = list( @@ -561,7 +567,7 @@ list(CWJ_USE_TOOL, QUALITY_CUTTING, 1) ) -/datum/cooking_with_jane/recipe/amanitajellytoast +/datum/cooking/recipe/amanitajellytoast cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jelliedtoast/amanita step_builder = list( @@ -570,7 +576,7 @@ list(CWJ_USE_TOOL, QUALITY_CUTTING, 1) ) -/datum/cooking_with_jane/recipe/slimetoast +/datum/cooking/recipe/slimetoast cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jelliedtoast/slime step_builder = list( @@ -579,7 +585,7 @@ list(CWJ_USE_TOOL, QUALITY_CUTTING, 1) ) -/datum/cooking_with_jane/recipe/stuffing +/datum/cooking/recipe/stuffing cooking_container = BOWL product_type = /obj/item/reagent_containers/food/stuffing product_count = 3 @@ -591,7 +597,7 @@ list(CWJ_ADD_REAGENT, "water", 5), ) -/datum/cooking_with_jane/recipe/tortilla +/datum/cooking/recipe/tortilla cooking_container = OVEN product_type = /obj/item/reagent_containers/food/tortilla product_count = 3 @@ -602,7 +608,7 @@ list(CWJ_USE_OVEN, J_HI, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/muffin +/datum/cooking/recipe/muffin cooking_container = OVEN product_type = /obj/item/reagent_containers/food/muffin step_builder = list( @@ -613,7 +619,7 @@ list(CWJ_USE_STOVE, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/boiledrice +/datum/cooking/recipe/boiledrice cooking_container = POT product_type = /obj/item/reagent_containers/food/boiledrice step_builder = list( @@ -623,7 +629,7 @@ list(CWJ_USE_STOVE, J_HI, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/ricepudding +/datum/cooking/recipe/ricepudding cooking_container = BOWL product_type = /obj/item/reagent_containers/food/ricepudding step_builder = list( @@ -633,7 +639,7 @@ ) //**Burgers**// -/datum/cooking_with_jane/recipe/burger +/datum/cooking/recipe/burger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/monkeyburger @@ -651,7 +657,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/patty) ) -/datum/cooking_with_jane/recipe/humanburger +/datum/cooking/recipe/humanburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/human/burger @@ -669,7 +675,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/human) ) -/datum/cooking_with_jane/recipe/brainburger +/datum/cooking/recipe/brainburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/brainburger @@ -687,7 +693,7 @@ list(CWJ_ADD_ITEM, /obj/item/organ/internal/vital/brain) ) -/datum/cooking_with_jane/recipe/roburger +/datum/cooking/recipe/roburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/roburger @@ -705,7 +711,7 @@ list(CWJ_ADD_ITEM, /obj/item/robot_parts/head) ) -/datum/cooking_with_jane/recipe/xenoburger +/datum/cooking/recipe/xenoburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/xenoburger @@ -723,7 +729,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/xenomeat) ) -/datum/cooking_with_jane/recipe/fishburger +/datum/cooking/recipe/fishburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/fishburger @@ -741,7 +747,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/carp) ) -/datum/cooking_with_jane/recipe/tofuburger +/datum/cooking/recipe/tofuburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/tofuburger @@ -759,7 +765,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/tofu) ) -/datum/cooking_with_jane/recipe/clownburger +/datum/cooking/recipe/clownburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/clownburger @@ -777,7 +783,7 @@ list(CWJ_ADD_ITEM, /obj/item/clothing/mask/gas/clown_hat) ) -/datum/cooking_with_jane/recipe/mimeburger +/datum/cooking/recipe/mimeburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/mimeburger @@ -795,7 +801,7 @@ list(CWJ_ADD_ITEM, /obj/item/clothing/head/beret) ) -/datum/cooking_with_jane/recipe/bigbiteburger +/datum/cooking/recipe/bigbiteburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/bigbiteburger @@ -816,7 +822,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/boiledegg, qmod=0.5) ) -/datum/cooking_with_jane/recipe/superbiteburger +/datum/cooking/recipe/superbiteburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/superbiteburger @@ -836,7 +842,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/boiledegg, qmod=0.5) ) -/datum/cooking_with_jane/recipe/jellyburger +/datum/cooking/recipe/jellyburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jellyburger @@ -854,7 +860,7 @@ list(CWJ_ADD_REAGENT, "cherryjelly", 5) ) -/datum/cooking_with_jane/recipe/amanitajellyburger +/datum/cooking/recipe/amanitajellyburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jellyburger/amanita @@ -872,7 +878,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/jelly/amanita, qmod=0.5) ) -/datum/cooking_with_jane/recipe/slimeburger +/datum/cooking/recipe/slimeburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jellyburger/slime @@ -891,7 +897,7 @@ ) //**Sandwiches**// -/datum/cooking_with_jane/recipe/sandwich_basic +/datum/cooking/recipe/sandwich_basic cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/sandwich step_builder = list( @@ -905,7 +911,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/breadslice, qmod=0.5) ) -/datum/cooking_with_jane/recipe/slimesandwich +/datum/cooking/recipe/slimesandwich cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jellysandwich/slime step_builder = list( @@ -914,7 +920,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/breadslice, qmod=0.5) ) -/datum/cooking_with_jane/recipe/cherrysandwich +/datum/cooking/recipe/cherrysandwich cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jellysandwich/cherry step_builder = list( @@ -923,7 +929,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/breadslice, qmod=0.5) ) -/datum/cooking_with_jane/recipe/amanitajellysandwich +/datum/cooking/recipe/amanitajellysandwich cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jellysandwich/amanita step_builder = list( @@ -932,7 +938,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/breadslice, qmod=0.5) ) -/datum/cooking_with_jane/recipe/blt +/datum/cooking/recipe/blt cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/blt step_builder = list( @@ -946,7 +952,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/breadslice, qmod=0.5) ) -/datum/cooking_with_jane/recipe/grilledcheese +/datum/cooking/recipe/grilledcheese cooking_container = GRILL product_type = /obj/item/reagent_containers/food/grilledcheese step_builder = list( @@ -957,7 +963,7 @@ list(CWJ_USE_GRILL, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/toastedsandwich +/datum/cooking/recipe/toastedsandwich cooking_container = GRILL product_type = /obj/item/reagent_containers/food/toastedsandwich step_builder = list( @@ -968,7 +974,7 @@ //**Erisian Cuisine**// //Left out due to never having existed previously: Spider burgers, Kraftwerk, Benzin -/datum/cooking_with_jane/recipe/boiled_roach_egg +/datum/cooking/recipe/boiled_roach_egg cooking_container = POT product_type = /obj/item/reagent_containers/food/roach_egg step_builder = list( @@ -978,7 +984,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/kampferburger +/datum/cooking/recipe/kampferburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/kampferburger @@ -992,7 +998,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/roachmeat) ) -/datum/cooking_with_jane/recipe/seucheburger +/datum/cooking/recipe/seucheburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/seucheburger @@ -1006,7 +1012,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/roachmeat/seuche) ) -/datum/cooking_with_jane/recipe/panzerburger +/datum/cooking/recipe/panzerburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/panzerburger @@ -1020,7 +1026,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/roachmeat/panzer) ) -/datum/cooking_with_jane/recipe/jagerburger +/datum/cooking/recipe/jagerburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/jagerburger @@ -1034,7 +1040,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/roachmeat/jager) ) -/datum/cooking_with_jane/recipe/bigroachburger //Difference: Requires boiled roach egg +/datum/cooking/recipe/bigroachburger //Difference: Requires boiled roach egg cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/bigroachburger @@ -1052,7 +1058,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/roachmeat/jager) ) -/datum/cooking_with_jane/recipe/fuhrerburger //Difference: Requires boiled roach egg +/datum/cooking/recipe/fuhrerburger //Difference: Requires boiled roach egg cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/fuhrerburger @@ -1067,7 +1073,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/roachmeat/fuhrer) ) -/datum/cooking_with_jane/recipe/kaiserburger //Difference: Requires boiled roach egg +/datum/cooking/recipe/kaiserburger //Difference: Requires boiled roach egg cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/kaiserburger @@ -1082,7 +1088,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meat/roachmeat/kaiser) ) -/datum/cooking_with_jane/recipe/wormburger +/datum/cooking/recipe/wormburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/wormburger @@ -1096,7 +1102,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/moecube/worm) ) -/datum/cooking_with_jane/recipe/geneburger +/datum/cooking/recipe/geneburger cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/geneburger @@ -1111,7 +1117,7 @@ ) //**Pastas**// -/datum/cooking_with_jane/recipe/raw_spaghetti +/datum/cooking/recipe/raw_spaghetti cooking_container = CUTTING_BOARD product_type = /obj/item/reagent_containers/food/spaghetti step_builder = list( @@ -1120,7 +1126,7 @@ list(CWJ_USE_TOOL, QUALITY_CUTTING, 1) ) -/datum/cooking_with_jane/recipe/boiledspaghetti +/datum/cooking/recipe/boiledspaghetti cooking_container = POT product_type = /obj/item/reagent_containers/food/boiledspaghetti step_builder = list( @@ -1130,7 +1136,7 @@ list(CWJ_USE_STOVE, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/pastatomato +/datum/cooking/recipe/pastatomato cooking_container = PAN product_type = /obj/item/reagent_containers/food/pastatomato step_builder = list( @@ -1142,7 +1148,7 @@ list(CWJ_USE_STOVE, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/meatballspaghetti +/datum/cooking/recipe/meatballspaghetti cooking_container = PAN product_type = /obj/item/reagent_containers/food/meatballspaghetti step_builder = list( @@ -1155,7 +1161,7 @@ list(CWJ_USE_STOVE, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/spesslaw +/datum/cooking/recipe/spesslaw cooking_container = PAN product_type = /obj/item/reagent_containers/food/spesslaw step_builder = list( @@ -1171,7 +1177,7 @@ ) //**Pizzas**// -/datum/cooking_with_jane/recipe/pizzamargherita +/datum/cooking/recipe/pizzamargherita cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/pizza/margherita step_builder = list( @@ -1186,7 +1192,7 @@ list(CWJ_USE_OVEN, J_MED, 35 SECONDS) ) -/datum/cooking_with_jane/recipe/meatpizza +/datum/cooking/recipe/meatpizza cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/pizza/meatpizza step_builder = list( @@ -1201,7 +1207,7 @@ list(CWJ_USE_OVEN, J_MED, 35 SECONDS) ) -/datum/cooking_with_jane/recipe/mushroompizza +/datum/cooking/recipe/mushroompizza cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/pizza/mushroompizza step_builder = list( @@ -1218,7 +1224,7 @@ list(CWJ_USE_OVEN, J_MED, 35 SECONDS) ) -/datum/cooking_with_jane/recipe/vegetablepizza +/datum/cooking/recipe/vegetablepizza cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/pizza/vegetablepizza step_builder = list( @@ -1235,7 +1241,7 @@ ) //**Pies**// -/datum/cooking_with_jane/recipe/meatpie +/datum/cooking/recipe/meatpie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/meatpie step_builder = list( @@ -1245,7 +1251,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/tofupie +/datum/cooking/recipe/tofupie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/tofupie step_builder = list( @@ -1255,7 +1261,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/xemeatpie +/datum/cooking/recipe/xemeatpie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/xemeatpie step_builder = list( @@ -1265,7 +1271,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/pie +/datum/cooking/recipe/pie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/pie step_builder = list( @@ -1277,7 +1283,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/cherrypie +/datum/cooking/recipe/cherrypie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/cherrypie step_builder = list( @@ -1289,7 +1295,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/berryclafoutis +/datum/cooking/recipe/berryclafoutis cooking_container = OVEN product_type = /obj/item/reagent_containers/food/berryclafoutis step_builder = list( @@ -1301,7 +1307,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/amanita_pie +/datum/cooking/recipe/amanita_pie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/amanita_pie step_builder = list( @@ -1312,7 +1318,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/plump_pie +/datum/cooking/recipe/plump_pie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/plump_pie step_builder = list( @@ -1323,7 +1329,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/pumpkinpie +/datum/cooking/recipe/pumpkinpie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/pumpkinpie step_builder = list( @@ -1334,7 +1340,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/applepie +/datum/cooking/recipe/applepie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/applepie step_builder = list( @@ -1346,7 +1352,7 @@ ) //**Salads**// -/datum/cooking_with_jane/recipe/tossedsalad +/datum/cooking/recipe/tossedsalad cooking_container = BOWL product_type = /obj/item/reagent_containers/food/tossedsalad step_builder = list( @@ -1361,7 +1367,7 @@ list(CWJ_ADD_PRODUCE, "tomato", qmod=0.2), ) -/datum/cooking_with_jane/recipe/aesirsalad +/datum/cooking/recipe/aesirsalad cooking_container = BOWL product_type = /obj/item/reagent_containers/food/aesirsalad step_builder = list( @@ -1373,7 +1379,7 @@ list(CWJ_ADD_PRODUCE, "goldapple", qmod=0.2), ) -/datum/cooking_with_jane/recipe/validsalad +/datum/cooking/recipe/validsalad cooking_container = BOWL product_type = /obj/item/reagent_containers/food/validsalad step_builder = list( @@ -1388,7 +1394,7 @@ list(CWJ_ADD_ITEM, /obj/item/reagent_containers/food/meatball, qmod=0.5), ) //**Soups**// Possibly replaced by Handyman's Soup project, which'll be based on cauldron soup kitchen aesthetic -/datum/cooking_with_jane/recipe/tomatosoup +/datum/cooking/recipe/tomatosoup cooking_container = POT product_type = /obj/item/reagent_containers/food/tomatosoup step_builder = list( @@ -1403,7 +1409,7 @@ list(CWJ_USE_STOVE, J_LO, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/meatballsoup +/datum/cooking/recipe/meatballsoup cooking_container = POT product_type = /obj/item/reagent_containers/food/meatballsoup step_builder = list( @@ -1416,7 +1422,7 @@ list(CWJ_USE_STOVE, J_LO, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/vegetablesoup +/datum/cooking/recipe/vegetablesoup cooking_container = POT product_type = /obj/item/reagent_containers/food/vegetablesoup step_builder = list( @@ -1429,7 +1435,7 @@ list(CWJ_USE_STOVE, J_LO, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/nettlesoup +/datum/cooking/recipe/nettlesoup cooking_container = POT product_type = /obj/item/reagent_containers/food/nettlesoup step_builder = list( @@ -1440,7 +1446,7 @@ list(CWJ_USE_STOVE, J_LO, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/wishsoup +/datum/cooking/recipe/wishsoup cooking_container = POT product_type = /obj/item/reagent_containers/food/wishsoup step_builder = list( @@ -1449,7 +1455,7 @@ list(CWJ_USE_STOVE, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/coldchili +/datum/cooking/recipe/coldchili cooking_container = POT product_type = /obj/item/reagent_containers/food/coldchili step_builder = list( @@ -1461,7 +1467,7 @@ list(CWJ_USE_STOVE, J_LO, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/hotchili +/datum/cooking/recipe/hotchili cooking_container = POT product_type = /obj/item/reagent_containers/food/coldchili step_builder = list( @@ -1473,7 +1479,7 @@ list(CWJ_USE_STOVE, J_LO, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/bearchili +/datum/cooking/recipe/bearchili cooking_container = POT product_type = /obj/item/reagent_containers/food/bearchili step_builder = list( @@ -1485,7 +1491,7 @@ list(CWJ_USE_STOVE, J_LO, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/stew +/datum/cooking/recipe/stew cooking_container = POT product_type = /obj/item/reagent_containers/food/stew step_builder = list( @@ -1499,7 +1505,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/milosoup +/datum/cooking/recipe/milosoup cooking_container = POT product_type = /obj/item/reagent_containers/food/milosoup step_builder = list( @@ -1512,7 +1518,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/beetsoup +/datum/cooking/recipe/beetsoup cooking_container = POT product_type = /obj/item/reagent_containers/food/beetsoup step_builder = list( @@ -1527,7 +1533,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/mushroomsoup +/datum/cooking/recipe/mushroomsoup cooking_container = POT product_type = /obj/item/reagent_containers/food/mushroomsoup step_builder = list( @@ -1547,7 +1553,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/mysterysoup +/datum/cooking/recipe/mysterysoup cooking_container = POT product_type = /obj/item/reagent_containers/food/mysterysoup step_builder = list( @@ -1561,7 +1567,7 @@ list(CWJ_USE_STOVE, J_MED, 20 SECONDS) ) -/datum/cooking_with_jane/recipe/bloodsoup +/datum/cooking/recipe/bloodsoup cooking_container = POT product_type = /obj/item/reagent_containers/food/bloodsoup step_builder = list( @@ -1570,7 +1576,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/slimesoup +/datum/cooking/recipe/slimesoup cooking_container = POT product_type = /obj/item/reagent_containers/food/slimesoup step_builder = list( @@ -1580,7 +1586,7 @@ list(CWJ_USE_STOVE, J_MED, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/beefcurry +/datum/cooking/recipe/beefcurry cooking_container = POT product_type = /obj/item/reagent_containers/food/beefcurry @@ -1599,7 +1605,7 @@ list(CWJ_USE_STOVE, J_MED, 40 SECONDS) ) -/datum/cooking_with_jane/recipe/chickencurry +/datum/cooking/recipe/chickencurry cooking_container = POT product_type = /obj/item/reagent_containers/food/chickencurry @@ -1620,7 +1626,7 @@ //**Vegetables**// //missing: soylenviridians, soylentgreen -/datum/cooking_with_jane/recipe/mashpotato +/datum/cooking/recipe/mashpotato cooking_container = BOWL product_type = /obj/item/reagent_containers/food/mashpotatoes @@ -1634,7 +1640,7 @@ list(CWJ_USE_TOOL, QUALITY_HAMMERING, 15) ) -/datum/cooking_with_jane/recipe/loadedbakedpotato +/datum/cooking/recipe/loadedbakedpotato cooking_container = OVEN product_type = /obj/item/reagent_containers/food/loadedbakedpotato @@ -1648,7 +1654,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/fries +/datum/cooking/recipe/fries cooking_container = PAN product_type = /obj/item/reagent_containers/food/fries step_builder = list( @@ -1658,7 +1664,7 @@ list(CWJ_USE_STOVE, J_HI, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/cheesyfries +/datum/cooking/recipe/cheesyfries cooking_container = PAN product_type = /obj/item/reagent_containers/food/cheesyfries step_builder = list( @@ -1667,7 +1673,7 @@ list(CWJ_USE_STOVE, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/eggplantparm +/datum/cooking/recipe/eggplantparm cooking_container = OVEN product_type = /obj/item/reagent_containers/food/eggplantparm step_builder = list( @@ -1684,7 +1690,7 @@ list(CWJ_USE_STOVE, J_HI, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/stewedsoymeat +/datum/cooking/recipe/stewedsoymeat cooking_container = POT product_type = /obj/item/reagent_containers/food/stewedsoymeat step_builder = list( @@ -1698,7 +1704,7 @@ ) //**Cakes**// -/datum/cooking_with_jane/recipe/plaincake +/datum/cooking/recipe/plaincake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/plaincake step_builder = list( @@ -1711,7 +1717,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/carrotcake +/datum/cooking/recipe/carrotcake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/carrotcake step_builder = list( @@ -1723,7 +1729,7 @@ list(CWJ_USE_STOVE, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/cheesecake +/datum/cooking/recipe/cheesecake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/cheesecake step_builder = list( @@ -1734,7 +1740,7 @@ list(CWJ_USE_STOVE, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/orangecake +/datum/cooking/recipe/orangecake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/orangecake step_builder = list( @@ -1744,7 +1750,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/limecake +/datum/cooking/recipe/limecake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/limecake step_builder = list( @@ -1754,7 +1760,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/lemoncake +/datum/cooking/recipe/lemoncake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/lemoncake step_builder = list( @@ -1764,7 +1770,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/chocolatecake +/datum/cooking/recipe/chocolatecake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/chocolatecake step_builder = list( @@ -1775,7 +1781,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/applecake +/datum/cooking/recipe/applecake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/applecake step_builder = list( @@ -1786,7 +1792,7 @@ list(CWJ_USE_STOVE, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/birthdaycake +/datum/cooking/recipe/birthdaycake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/birthdaycake step_builder = list( @@ -1796,7 +1802,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/braincake +/datum/cooking/recipe/braincake cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/braincake step_builder = list( @@ -1807,7 +1813,7 @@ list(CWJ_USE_OVEN, J_MED, 30 SECONDS) ) -/datum/cooking_with_jane/recipe/brownies +/datum/cooking/recipe/brownies cooking_container = OVEN product_type = /obj/item/reagent_containers/food/sliceable/brownie step_builder = list( @@ -1824,7 +1830,7 @@ //**Desserts and Sweets**// //missing: fortunecookie, honey_bun, honey_pudding //Changes: Now a chemical reaction: candy_corn, mint, -/datum/cooking_with_jane/recipe/chocolateegg +/datum/cooking/recipe/chocolateegg cooking_container = POT product_type = /obj/item/reagent_containers/food/chocolateegg step_builder = list( @@ -1834,7 +1840,7 @@ list(CWJ_USE_STOVE, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/candiedapple +/datum/cooking/recipe/candiedapple cooking_container = PAN product_type = /obj/item/reagent_containers/food/candiedapple step_builder = list( @@ -1845,7 +1851,7 @@ list(CWJ_USE_STOVE, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/cookie +/datum/cooking/recipe/cookie cooking_container = OVEN product_type = /obj/item/reagent_containers/food/cookie step_builder = list( @@ -1858,7 +1864,7 @@ list(CWJ_USE_STOVE, J_LO, 5 SECONDS) ) -/datum/cooking_with_jane/recipe/appletart +/datum/cooking/recipe/appletart cooking_container = OVEN product_type = /obj/item/reagent_containers/food/appletart step_builder = list( @@ -1872,7 +1878,7 @@ list(CWJ_USE_OVEN, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/plumphelmetbiscuit +/datum/cooking/recipe/plumphelmetbiscuit cooking_container = OVEN product_type = /obj/item/reagent_containers/food/plumphelmetbiscuit step_builder = list( @@ -1884,7 +1890,7 @@ list(CWJ_USE_OVEN, J_LO, 15 SECONDS) ) -/datum/cooking_with_jane/recipe/popcorn +/datum/cooking/recipe/popcorn cooking_container = PAN product_type = /obj/item/reagent_containers/food/popcorn step_builder = list( @@ -1897,7 +1903,7 @@ //UNSORTED //missing: spacylibertyduff -/datum/cooking_with_jane/recipe/boiledslimeextract +/datum/cooking/recipe/boiledslimeextract cooking_container = POT product_type = /obj/item/reagent_containers/food/boiledslimecore step_builder = list( diff --git a/code/modules/cooking/recipes/recipe_donuts.dm b/code/modules/cooking/recipes/recipe_donuts.dm index a1c0b26f555..19c98128fc2 100644 --- a/code/modules/cooking/recipes/recipe_donuts.dm +++ b/code/modules/cooking/recipes/recipe_donuts.dm @@ -1,4 +1,4 @@ -/datum/cooking_with_jane/recipe/medialuna //This is 100% a donut but with extra layers +/datum/cooking/recipe/medialuna //This is 100% a donut but with extra layers cooking_container = OVEN product_type = /obj/item/reagent_containers/food/medialuna step_builder = list( @@ -11,7 +11,7 @@ list(CWJ_USE_TOOL, QUALITY_CUTTING, 1) ) -/datum/cooking_with_jane/recipe/donut +/datum/cooking/recipe/donut cooking_container = OVEN product_type = /obj/item/reagent_containers/food/donut step_builder = list( @@ -22,7 +22,7 @@ list(CWJ_USE_OVEN, J_LO, 10 SECONDS) ) -/datum/cooking_with_jane/recipe/jellydonut +/datum/cooking/recipe/jellydonut cooking_container = OVEN product_type = /obj/item/reagent_containers/food/donut/jelly step_builder = list( @@ -34,7 +34,7 @@ list(CWJ_USE_OVEN, J_LO, 20 SECONDS) ) -/datum/cooking_with_jane/recipe/slime_jellydonut +/datum/cooking/recipe/slime_jellydonut cooking_container = OVEN product_type = /obj/item/reagent_containers/food/donut/slimejelly step_builder = list( @@ -46,7 +46,7 @@ list(CWJ_USE_OVEN, J_LO, 20 SECONDS) ) -/datum/cooking_with_jane/recipe/cinnamonroll +/datum/cooking/recipe/cinnamonroll cooking_container = OVEN product_type = /obj/item/reagent_containers/food/cinnamonroll step_builder = list( diff --git a/code/modules/cooking/step_defines.dm b/code/modules/cooking/step_defines.dm index 2c1c87da2e9..f4f35e35461 100644 --- a/code/modules/cooking/step_defines.dm +++ b/code/modules/cooking/step_defines.dm @@ -1,5 +1,5 @@ //A step in a recipe, whether optional or required -/datum/cooking_with_jane/recipe_step +/datum/cooking/recipe_step var/unique_id //Special ID for a given recipe, allows for referencing later by food objects to save on memory. var/class = CWJ_USE_OTHER //The classificaiton of the step involved. @@ -24,16 +24,16 @@ //The next required step for the parent recipe - var/datum/cooking_with_jane/recipe_step/next_step + var/datum/cooking/recipe_step/next_step //The previous required step for the current recipe - var/datum/cooking_with_jane/recipe_step/previous_step + var/datum/cooking/recipe_step/previous_step var/auto_complete_enabled = FALSE //If the step can be completed without any further input. -/datum/cooking_with_jane/recipe_step/New(var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/New(datum/cooking/recipe/our_recipe) parent_recipe = our_recipe unique_id = sequential_id("recipe_step") @@ -46,25 +46,25 @@ GLOB.cwj_step_dictionary_ordered["[class]"]["[unique_id]"] = src GLOB.cwj_step_dictionary["[unique_id]"] = src -/datum/cooking_with_jane/recipe_step/proc/set_image() +/datum/cooking/recipe_step/proc/set_image() tooltip_image = image('icons/emoji.dmi', icon_state="gear") //Calculate how well the recipe step was followed to the letter. -/datum/cooking_with_jane/recipe_step/proc/calculate_quality(var/obj/added_item, var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container) +/datum/cooking/recipe_step/proc/calculate_quality(obj/added_item, obj/item/reagent_containers/vessel/cooking_container/container) return 0 //Check if the conditions of a recipe step was followed correctly. -/datum/cooking_with_jane/recipe_step/proc/check_conditions_met() +/datum/cooking/recipe_step/proc/check_conditions_met() return CWJ_CHECK_VALID //Check if a given step is in the same option chain as another step. -/datum/cooking_with_jane/recipe_step/proc/in_option_chain(var/datum/cooking_with_jane/recipe_step/step) +/datum/cooking/recipe_step/proc/in_option_chain(datum/cooking/recipe_step/step) if(!step) return FALSE if(!(flags & CWJ_IS_OPTION_CHAIN) || !(step.flags & CWJ_IS_OPTION_CHAIN)) return FALSE - var/datum/cooking_with_jane/recipe_step/target_step = src.previous_step + var/datum/cooking/recipe_step/target_step = src.previous_step //traverse backwards on the chain. while(target_step && !(target_step & CWJ_IS_OPTION_CHAIN)) if(step.unique_id == target_step.unique_id) @@ -82,24 +82,24 @@ return FALSE //Automatically clamps food based on their maximum and minimum quality, if they are set. -/datum/cooking_with_jane/recipe_step/proc/clamp_quality(var/raw_quality) +/datum/cooking/recipe_step/proc/clamp_quality(raw_quality) if((flags & CWJ_BASE_QUALITY_ENABLED) && (flags & CWJ_MAX_QUALITY_ENABLED)) - return CLAMP(raw_quality, base_quality_award, max_quality_award) + return Clamp(raw_quality, base_quality_award, max_quality_award) if(flags & CWJ_BASE_QUALITY_ENABLED) return max(raw_quality, base_quality_award) if(flags & CWJ_MAX_QUALITY_ENABLED) return min(raw_quality, max_quality_award) return raw_quality -/datum/cooking_with_jane/recipe_step/proc/get_step_result_text(var/obj/used_obj, step_quality) +/datum/cooking/recipe_step/proc/get_step_result_text(obj/used_obj, step_quality) if(custom_result_desc) return custom_result_desc else return "skip" -/datum/cooking_with_jane/recipe_step/proc/follow_step(var/obj/added_item, var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container) +/datum/cooking/recipe_step/proc/follow_step(obj/added_item, obj/item/reagent_containers/vessel/cooking_container/container) return CWJ_SUCCESS //Special function to check if the step has been satisfied. Sometimed just following the step is enough, but not always. -/datum/cooking_with_jane/recipe_step/proc/is_complete(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/proc/is_complete(obj/added_item, datum/cooking/recipe_tracker/tracker) return TRUE diff --git a/code/modules/cooking/step_types/add_item.dm b/code/modules/cooking/step_types/add_item.dm index 53d98ca1dc0..d0724ef571d 100644 --- a/code/modules/cooking/step_types/add_item.dm +++ b/code/modules/cooking/step_types/add_item.dm @@ -2,7 +2,7 @@ //This basically deletes the food used on it. //ENSURE THE INCOMING ITEM HAS var/quality DEFINED! -/datum/cooking_with_jane/recipe_step/add_item +/datum/cooking/recipe_step/add_item class = CWJ_ADD_ITEM var/required_item_type //Item required for the recipe step @@ -17,11 +17,11 @@ //item_type: The type path of the object we are looking for. //our_recipe: The parent recipe object, -/datum/cooking_with_jane/recipe_step/add_item/New(var/item_type, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/add_item/New(item_type, datum/cooking/recipe/our_recipe) #ifdef CWJ_DEBUG if(!ispath(item_type, /obj/item)) - log_debug("/datum/cooking_with_jane/recipe_step/add_item/New(): item [item_type] is not a valid path") + log_debug("/datum/cooking/recipe_step/add_item/New(): item [item_type] is not a valid path") #endif var/obj/item/example_item = new item_type() @@ -34,12 +34,12 @@ QDEL_NULL(example_item) #ifdef CWJ_DEBUG else - log_debug("/datum/cooking_with_jane/recipe_step/add_item/New(): item [item_type] couldn't be created.") + log_debug("/datum/cooking/recipe_step/add_item/New(): item [item_type] couldn't be created.") #endif ..(our_recipe) -/datum/cooking_with_jane/recipe_step/add_item/check_conditions_met(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_item/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker) #ifdef CWJ_DEBUG log_debug("Called add_item/check_conditions_met for [added_item], checking against item type [required_item_type]. Exact_path = [exact_path]") #endif @@ -56,18 +56,18 @@ //The quality of add_item is special, in that it inherits the quality level of its parent and //passes it along. //May need "Balancing" with var/inherited_quality_modifier -/datum/cooking_with_jane/recipe_step/add_item/calculate_quality(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_item/calculate_quality(obj/added_item, datum/cooking/recipe_tracker/tracker) var/raw_quality = added_item?:food_quality * inherited_quality_modifier return clamp_quality(raw_quality) -/datum/cooking_with_jane/recipe_step/add_item/follow_step(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_item/follow_step(obj/added_item, datum/cooking/recipe_tracker/tracker) #ifdef CWJ_DEBUG - log_debug("Called: /datum/cooking_with_jane/recipe_step/add_item/follow_step") + log_debug("Called: /datum/cooking/recipe_step/add_item/follow_step") #endif var/obj/item/container = tracker.holder_ref.resolve() if(container) - if(usr.canUnEquip(added_item)) - usr.unEquip(added_item, container) + if(usr.can_unequip(added_item)) + usr.__unequip(added_item) else added_item.forceMove(container) return CWJ_SUCCESS diff --git a/code/modules/cooking/step_types/add_produce.dm b/code/modules/cooking/step_types/add_produce.dm index 831a5573ce4..ce71fc20acc 100644 --- a/code/modules/cooking/step_types/add_produce.dm +++ b/code/modules/cooking/step_types/add_produce.dm @@ -1,5 +1,5 @@ //A cooking step that involves using SPECIFICALLY Grown foods -/datum/cooking_with_jane/recipe_step/add_produce +/datum/cooking/recipe_step/add_produce class=CWJ_ADD_PRODUCE var/required_produce_type var/base_potency @@ -8,9 +8,9 @@ var/list/exclude_reagents = list() -/datum/cooking_with_jane/recipe_step/add_produce/New(var/produce, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/add_produce/New(produce, datum/cooking/recipe/our_recipe) if(!plant_controller) - CRASH("/datum/cooking_with_jane/recipe_step/add_produce/New: Plant controller not initialized! Exiting.") + CRASH("/datum/cooking/recipe_step/add_produce/New: Plant controller not initialized! Exiting.") if(produce && plant_controller && plant_controller.seeds[produce]) desc = "Add \a [produce] into the recipe." required_produce_type = produce @@ -25,10 +25,10 @@ log_debug("[seed] is missing it's icon to add to tooltip_image") base_potency = seed.get_trait(TRAIT_POTENCY) else - CRASH("/datum/cooking_with_jane/recipe_step/add_produce/New: Seed [produce] not found. Exiting.") + CRASH("/datum/cooking/recipe_step/add_produce/New: Seed [produce] not found. Exiting.") ..(base_quality_award, our_recipe) -/datum/cooking_with_jane/recipe_step/add_produce/check_conditions_met(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_produce/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker) #ifdef CWJ_DEBUG log_debug("Called add_produce/check_conditions_met for [added_item] against [required_produce_type]") #endif @@ -43,7 +43,7 @@ return CWJ_CHECK_INVALID -/datum/cooking_with_jane/recipe_step/add_produce/calculate_quality(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_produce/calculate_quality(obj/added_item, datum/cooking/recipe_tracker/tracker) var/obj/item/reagent_containers/food/grown/added_produce = added_item @@ -51,14 +51,14 @@ return clamp_quality(potency_raw) -/datum/cooking_with_jane/recipe_step/add_produce/follow_step(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_produce/follow_step(obj/added_item, datum/cooking/recipe_tracker/tracker) #ifdef CWJ_DEBUG - log_debug("Called: /datum/cooking_with_jane/recipe_step/add_produce/follow_step") + log_debug("Called: /datum/cooking/recipe_step/add_produce/follow_step") #endif var/obj/item/container = tracker.holder_ref.resolve() if(container) - if(usr.canUnEquip(added_item)) - usr.unEquip(added_item, container) + if(usr.can_unequip(added_item)) + usr.__unequip(added_item) else added_item.forceMove(container) return CWJ_SUCCESS diff --git a/code/modules/cooking/step_types/add_reagent.dm b/code/modules/cooking/step_types/add_reagent.dm index 2c14da9b4ee..0fdab4783c8 100644 --- a/code/modules/cooking/step_types/add_reagent.dm +++ b/code/modules/cooking/step_types/add_reagent.dm @@ -1,5 +1,5 @@ //A cooking step that involves adding a reagent to the food. -/datum/cooking_with_jane/recipe_step/add_reagent +/datum/cooking/recipe_step/add_reagent class=CWJ_ADD_REAGENT auto_complete_enabled = TRUE var/expected_total @@ -11,7 +11,7 @@ //amount: The amount of the required reagent that needs to be added. //base_quality_award: The quality awarded by following this step. //our_recipe: The parent recipe object, -/datum/cooking_with_jane/recipe_step/add_reagent/New(var/reagent_id, var/amount, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/add_reagent/New(reagent_id, amount, datum/cooking/recipe/our_recipe) var/datum/reagent/global_reagent = GLOB.chemical_reagents_list[reagent_id] if(global_reagent) @@ -22,12 +22,12 @@ required_reagent_amount = amount else - CRASH("/datum/cooking_with_jane/recipe_step/add/reagent/New(): Reagent [reagent_id] not found. Recipe: [our_recipe]") + CRASH("/datum/cooking/recipe_step/add/reagent/New(): Reagent [reagent_id] not found. Recipe: [our_recipe]") ..(our_recipe) -/datum/cooking_with_jane/recipe_step/add_reagent/check_conditions_met(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_reagent/check_conditions_met(obj/used_item, datum/cooking/recipe_tracker/tracker) var/obj/item/container = tracker.holder_ref.resolve() @@ -36,7 +36,7 @@ if(!istype(used_item, /obj/item/reagent_containers)) return CWJ_CHECK_INVALID - if(!(used_item.reagent_flags & OPENCONTAINER)) + if(!(used_item.atom_flags & ATOM_FLAG_OPEN_CONTAINER)) return CWJ_CHECK_INVALID var/obj/item/reagent_containers/our_item = used_item @@ -47,8 +47,8 @@ return CWJ_CHECK_VALID -//Reagents are calculated in two areas. Here and /datum/cooking_with_jane/recipe/proc/calculate_reagent_quality -/datum/cooking_with_jane/recipe_step/add_reagent/calculate_quality(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +//Reagents are calculated in two areas. Here and /datum/cooking/recipe/proc/calculate_reagent_quality +/datum/cooking/recipe_step/add_reagent/calculate_quality(obj/used_item, datum/cooking/recipe_tracker/tracker) var/obj/item/container = tracker.holder_ref.resolve() var/data = container.reagents.get_data(required_reagent_id) var/cooked_quality = 0 @@ -57,7 +57,7 @@ return cooked_quality -/datum/cooking_with_jane/recipe_step/add_reagent/follow_step(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_reagent/follow_step(obj/used_item, datum/cooking/recipe_tracker/tracker) var/obj/item/reagent_containers/our_item = used_item var/obj/item/container = tracker.holder_ref.resolve() @@ -68,7 +68,7 @@ return CWJ_SUCCESS -/datum/cooking_with_jane/recipe_step/add_reagent/is_complete(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/add_reagent/is_complete(obj/used_item, datum/cooking/recipe_tracker/tracker) var/obj/item/reagent_containers/our_item = used_item var/obj/item/container = tracker.holder_ref.resolve() var/part = our_item.reagents.get_reagent_amount(required_reagent_id) / our_item.reagents.total_volume diff --git a/code/modules/cooking/step_types/recipe_start.dm b/code/modules/cooking/step_types/recipe_start.dm index a03b5c953a4..2acfc32537f 100644 --- a/code/modules/cooking/step_types/recipe_start.dm +++ b/code/modules/cooking/step_types/recipe_start.dm @@ -1,11 +1,9 @@ //The default starting step. //Doesn't do anything, just holds the item. -/datum/cooking_with_jane/recipe_step/start +/datum/cooking/recipe_step/start class = CWJ_START var/required_container -/datum/cooking_with_jane/recipe_step/start/New(var/container) +/datum/cooking/recipe_step/start/New(container) required_container = container - - diff --git a/code/modules/cooking/step_types/use_grill.dm b/code/modules/cooking/step_types/use_grill.dm index 45b47d6a54e..0e13f987203 100644 --- a/code/modules/cooking/step_types/use_grill.dm +++ b/code/modules/cooking/step_types/use_grill.dm @@ -1,5 +1,5 @@ //A cooking step that involves adding a reagent to the food. -/datum/cooking_with_jane/recipe_step/use_grill +/datum/cooking/recipe_step/use_grill class=CWJ_USE_GRILL auto_complete_enabled = TRUE var/time @@ -9,7 +9,7 @@ //amount: The amount of the required reagent that needs to be added. //base_quality_award: The quality awarded by following this step. //our_recipe: The parent recipe object, -/datum/cooking_with_jane/recipe_step/use_grill/New(var/set_heat, var/set_time, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/use_grill/New(set_heat, set_time, datum/cooking/recipe/our_recipe) @@ -21,7 +21,7 @@ ..(our_recipe) -/datum/cooking_with_jane/recipe_step/use_grill/check_conditions_met(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_grill/check_conditions_met(obj/used_item, datum/cooking/recipe_tracker/tracker) if(!istype(used_item, /obj/machinery/cooking_with_jane/grill)) return CWJ_CHECK_INVALID @@ -29,8 +29,8 @@ return CWJ_CHECK_VALID //Reagents are calculated prior to object creation -/datum/cooking_with_jane/recipe_step/use_grill/calculate_quality(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = tracker.holder_ref.resolve() +/datum/cooking/recipe_step/use_grill/calculate_quality(obj/used_item, datum/cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/vessel/cooking_container/container = tracker.holder_ref.resolve() var/obj/machinery/cooking_with_jane/grill/our_grill = used_item @@ -47,12 +47,12 @@ return clamp_quality(good_cooking) -/datum/cooking_with_jane/recipe_step/use_grill/follow_step(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_grill/follow_step(obj/used_item, datum/cooking/recipe_tracker/tracker) return CWJ_SUCCESS -/datum/cooking_with_jane/recipe_step/use_grill/is_complete(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_grill/is_complete(obj/used_item, datum/cooking/recipe_tracker/tracker) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = tracker.holder_ref.resolve() + var/obj/item/reagent_containers/vessel/cooking_container/container = tracker.holder_ref.resolve() if(container.grill_data[heat] >= time) #ifdef CWJ_DEBUG @@ -64,4 +64,3 @@ log_debug("use_grill/is_complete() Returned False; comparing [heat]: [container.grill_data[heat]] to [time]") #endif return FALSE - diff --git a/code/modules/cooking/step_types/use_item.dm b/code/modules/cooking/step_types/use_item.dm index 726f47df9ee..42e7bf65c9f 100644 --- a/code/modules/cooking/step_types/use_item.dm +++ b/code/modules/cooking/step_types/use_item.dm @@ -1,5 +1,5 @@ //A cooking step that involves using an item on the food. -/datum/cooking_with_jane/recipe_step/use_item +/datum/cooking/recipe_step/use_item class=CWJ_USE_ITEM var/required_item_type var/exact_path = FALSE //Tests if the item has to be the EXACT ITEM PATH, or just a child of the item path. @@ -7,10 +7,10 @@ //item_type: The type path of the object we are looking for. //base_quality_award: The quality awarded by following this step. //our_recipe: The parent recipe object -/datum/cooking_with_jane/recipe_step/use_item/New(var/item_type, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/use_item/New(item_type, datum/cooking/recipe/our_recipe) #ifdef CWJ_DEBUG if(!ispath(item_type)) - log_debug("/datum/cooking_with_jane/recipe_step/add_item/New(): item [item_type] is not a valid path") + log_debug("/datum/cooking/recipe_step/add_item/New(): item [item_type] is not a valid path") #endif var/example_item = new item_type() @@ -23,12 +23,12 @@ QDEL_NULL(example_item) #ifdef CWJ_DEBUG else - log_debug("/datum/cooking_with_jane/recipe_step/add_item/New(): item [item_type] couldn't be created.") + log_debug("/datum/cooking/recipe_step/add_item/New(): item [item_type] couldn't be created.") #endif ..(our_recipe) -/datum/cooking_with_jane/recipe_step/use_item/check_conditions_met(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_item/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker) if(src.exact_path) if(added_item.type == required_item_type) return CWJ_CHECK_VALID @@ -38,5 +38,5 @@ return CWJ_CHECK_INVALID //Think about a way to make this more intuitive? -/datum/cooking_with_jane/recipe_step/use_item/calculate_quality(var/obj/added_item) +/datum/cooking/recipe_step/use_item/calculate_quality(obj/added_item) return clamp_quality(0) diff --git a/code/modules/cooking/step_types/use_oven.dm b/code/modules/cooking/step_types/use_oven.dm index 985acfd0de9..fe2a73eb687 100644 --- a/code/modules/cooking/step_types/use_oven.dm +++ b/code/modules/cooking/step_types/use_oven.dm @@ -1,5 +1,5 @@ //A cooking step that involves adding a reagent to the food. -/datum/cooking_with_jane/recipe_step/use_oven +/datum/cooking/recipe_step/use_oven class=CWJ_USE_OVEN auto_complete_enabled = TRUE var/time @@ -8,7 +8,7 @@ //set_heat: The temperature the oven must bake at. //set_time: How long something must be baked in the overn //our_recipe: The parent recipe object -/datum/cooking_with_jane/recipe_step/use_oven/New(var/set_heat, var/set_time, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/use_oven/New(set_heat, set_time, datum/cooking/recipe/our_recipe) @@ -20,7 +20,7 @@ ..(our_recipe) -/datum/cooking_with_jane/recipe_step/use_oven/check_conditions_met(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_oven/check_conditions_met(obj/used_item, datum/cooking/recipe_tracker/tracker) if(!istype(used_item, /obj/machinery/cooking_with_jane/oven)) return CWJ_CHECK_INVALID @@ -28,8 +28,8 @@ return CWJ_CHECK_VALID //Reagents are calculated prior to object creation -/datum/cooking_with_jane/recipe_step/use_oven/calculate_quality(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = tracker.holder_ref.resolve() +/datum/cooking/recipe_step/use_oven/calculate_quality(obj/used_item, datum/cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/vessel/cooking_container/container = tracker.holder_ref.resolve() var/obj/machinery/cooking_with_jane/oven/our_oven = used_item @@ -46,12 +46,12 @@ return clamp_quality(good_cooking) -/datum/cooking_with_jane/recipe_step/use_oven/follow_step(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_oven/follow_step(obj/used_item, datum/cooking/recipe_tracker/tracker) return CWJ_SUCCESS -/datum/cooking_with_jane/recipe_step/use_oven/is_complete(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_oven/is_complete(obj/used_item, datum/cooking/recipe_tracker/tracker) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = tracker.holder_ref.resolve() + var/obj/item/reagent_containers/vessel/cooking_container/container = tracker.holder_ref.resolve() if(container.oven_data[heat] >= time) #ifdef CWJ_DEBUG diff --git a/code/modules/cooking/step_types/use_stove.dm b/code/modules/cooking/step_types/use_stove.dm index e2561ac8f92..4f3be043f8c 100644 --- a/code/modules/cooking/step_types/use_stove.dm +++ b/code/modules/cooking/step_types/use_stove.dm @@ -1,5 +1,5 @@ //A cooking step that involves adding a reagent to the food. -/datum/cooking_with_jane/recipe_step/use_stove +/datum/cooking/recipe_step/use_stove class=CWJ_USE_STOVE auto_complete_enabled = TRUE var/time @@ -8,7 +8,7 @@ //set_heat: The temperature the stove must cook at. //set_time: How long something must be cook in the stove //our_recipe: The parent recipe object -/datum/cooking_with_jane/recipe_step/use_stove/New(var/set_heat, var/set_time, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/use_stove/New(set_heat, set_time, datum/cooking/recipe/our_recipe) @@ -20,7 +20,7 @@ ..(our_recipe) -/datum/cooking_with_jane/recipe_step/use_stove/check_conditions_met(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_stove/check_conditions_met(obj/used_item, datum/cooking/recipe_tracker/tracker) if(!istype(used_item, /obj/machinery/cooking_with_jane/stove)) return CWJ_CHECK_INVALID @@ -28,8 +28,8 @@ return CWJ_CHECK_VALID //Reagents are calculated prior to object creation -/datum/cooking_with_jane/recipe_step/use_stove/calculate_quality(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = tracker.holder_ref.resolve() +/datum/cooking/recipe_step/use_stove/calculate_quality(obj/used_item, datum/cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/vessel/cooking_container/container = tracker.holder_ref.resolve() var/obj/machinery/cooking_with_jane/stove/our_stove = used_item @@ -46,12 +46,12 @@ return clamp_quality(good_cooking) -/datum/cooking_with_jane/recipe_step/use_stove/follow_step(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_stove/follow_step(obj/used_item, datum/cooking/recipe_tracker/tracker) return CWJ_SUCCESS -/datum/cooking_with_jane/recipe_step/use_stove/is_complete(var/obj/used_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_stove/is_complete(obj/used_item, datum/cooking/recipe_tracker/tracker) - var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container = tracker.holder_ref.resolve() + var/obj/item/reagent_containers/vessel/cooking_container/container = tracker.holder_ref.resolve() if(container.stove_data[heat] >= time) #ifdef CWJ_DEBUG @@ -63,4 +63,3 @@ log_debug("use_stove/is_complete() Returned False; comparing [heat]: [container.stove_data[heat]] to [time]") #endif return FALSE - diff --git a/code/modules/cooking/step_types/use_tool.dm b/code/modules/cooking/step_types/use_tool.dm index 9edf6ddfc8b..d60e6df1382 100644 --- a/code/modules/cooking/step_types/use_tool.dm +++ b/code/modules/cooking/step_types/use_tool.dm @@ -1,14 +1,14 @@ //A cooking step that involves using an item on the food. -/datum/cooking_with_jane/recipe_step/use_tool +/datum/cooking/recipe_step/use_tool class=CWJ_USE_ITEM - var/tool_type + var/list/tool_type var/tool_quality var/inherited_quality_modifier = 0.1 //item_type: The type path of the object we are looking for. //base_quality_award: The quality awarded by following this step. //our_recipe: The parent recipe object -/datum/cooking_with_jane/recipe_step/use_tool/New(var/type, var/quality, var/datum/cooking_with_jane/recipe/our_recipe) +/datum/cooking/recipe_step/use_tool/New(type, quality, datum/cooking/recipe/our_recipe) desc = "Use \a [type] tool of quality [quality] or higher." @@ -18,29 +18,35 @@ ..(our_recipe) -/datum/cooking_with_jane/recipe_step/use_tool/check_conditions_met(var/obj/added_item, var/datum/cooking_with_jane/recipe_tracker/tracker) +/datum/cooking/recipe_step/use_tool/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker) if(!istype(added_item, /obj/item/tool )) return CWJ_CHECK_INVALID var/obj/item/tool/our_tool = added_item - if(!our_tool.has_quality(tool_type)) + // REVIEW make tool quality list + if(!(our_tool in tool_type)) return CWJ_CHECK_INVALID return CWJ_CHECK_VALID -/datum/cooking_with_jane/recipe_step/use_tool/follow_step(var/obj/added_item, var/obj/item/reagent_containers/cooking_with_jane/cooking_container/container) +/datum/cooking/recipe_step/use_tool/follow_step(obj/added_item, obj/item/reagent_containers/vessel/cooking_container/container) var/obj/item/tool/our_tool = added_item - if(our_tool.worksound && our_tool.worksound != NO_WORKSOUND) - playsound(usr.loc, our_tool.worksound, 50, 1) + if(our_tool.tool_sound) + playsound(usr.loc, our_tool.tool_sound, 50, 1) to_chat(usr, SPAN_NOTICE("You use the [added_item] according to the recipe.")) + /*REVIEW - No tool quality so comment that shit if(our_tool.get_tool_quality(tool_type) < tool_quality) return to_chat(usr, SPAN_NOTICE("The low quality of the tool hurts the quality of the dish.")) + */ return CWJ_SUCCESS //Think about a way to make this more intuitive? -/datum/cooking_with_jane/recipe_step/use_tool/calculate_quality(var/obj/added_item) +/datum/cooking/recipe_step/use_tool/calculate_quality(obj/added_item) var/obj/item/tool/our_tool = added_item + /*REVIEW - No tool quality so comment that shit var/raw_quality = (our_tool.get_tool_quality(tool_type) - tool_quality) * inherited_quality_modifier + */ + var/raw_quality = tool_quality * inherited_quality_modifier return clamp_quality(raw_quality) diff --git a/icons/obj/cooking/eris_kitchen.dmi b/icons/obj/cooking/eris_kitchen.dmi new file mode 100644 index 0000000000000000000000000000000000000000..bd7988fa43623ffb4a806237209d2a3f5fa25ec8 GIT binary patch literal 1435 zcmV;M1!Ve(P)O+@uNiQ+k?1-Fy6L3e6-on=jt^+dp~)>V<fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t zGfE(w;*!LYR3K9+y(lv$M~RCwC9|j)$T#HTOe;#vO@**gRmJD$5mcCxnpzN_R#cf< zL{Mo`VsUnANqkx<5%xpW5>{54S4@N>DOXUCNZ6Kw93X?Rs(hT@QdV&Fa{)&x023L8 z53zO!Pyhe~O-V#SRA_ZZqY0OKA zfnb~F)y@RrCi0MIe8 zE)UGy1t1P+(jQ0sKLj3Fp9kgvj)?=_0)Xe|0Z<(Vf$KY2KXjdnV_+SC%m4%X)|FY+m?F;p(iBkc^gw)fFa~5mWO-DgeAWV z#-j0nd&l)a*L5KA0GzajiA2$RZWlm~2U35^19(5Z8vs3&W;JEral25u37G1q(@6ug ziKGA>PNH6pUEqO22r~gBd20>8+M7t=&~pHAHVN#%9X10{3U~l|HnV~-n|olaUzJG~ z1Gt+*SmJ< zn<2Q6^}eSO$OH6tsS4wE@_+G9FkN+T?t#hreE=}!j)*G%jXW?}zx!{vR9e^r#jfcdUb6P5+o$UH0YHF>j`GF< zUA$y|w!K)tdw|-FgE}eJ?-n2qkY`Tnc`@~u9)U$u)oL;ECvG= zz~?8vJRU`W?{5yk*9rjgz@zMe?+*^Z&jJ8beaPDlW8i*&K@242&));=HP0@)?6S)) zyP*6I@>=V!U`VZ(7|NRmo7neNL7u>D!%@+&6rs=oXWjSRy@|C=?FRJ3YY{=I1IA+N zfAfj^4q5~e{1gjU&6%yR8T*9}XluC;2nm$5_TAc5fvg137jSFdaM@q7Z$5SajZ`uM zkWD3kh#o$A<+A;dK#Il!*!n>%A3*b5sjo)vHAW8%q z0MJheoO;xtjm;#Y4FE7~-J{F2$r_wX#WDa`X200z%}!26`p0J^3u@;{`~2zHKJl$K pPl|I|^VZi0kNR2GciH7XmwylOTC;4|Lec;L002ovPDHLkV1gGvhn4^U literal 0 HcmV?d00001 diff --git a/icons/obj/cooking/grill.dmi b/icons/obj/cooking/grill.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5b999f1c6a4cb4ddba6181c037d3cb093d58e2b7 GIT binary patch literal 2055 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 literal 0 HcmV?d00001 diff --git a/icons/obj/cooking/kitchen.dmi b/icons/obj/cooking/kitchen.dmi new file mode 100644 index 0000000000000000000000000000000000000000..259f358e19ac1cf3e1c9451c64a39156b22d40b7 GIT binary patch literal 4331 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 literal 0 HcmV?d00001 diff --git a/icons/obj/cooking/oven.dmi b/icons/obj/cooking/oven.dmi new file mode 100644 index 0000000000000000000000000000000000000000..115df9f185eb9e76b3c0cd23f091ec48e51db490 GIT binary patch literal 1886 zcmV-k2ch_hP)V=-0C=30&%Fx5FcbygIrk|J?JoYUStO-oXkVek=4t}kD@mxY@6gFXh}${v z4d=ADbiEy621_fa9A$yVdABF^j=ltFoQ|Xd$9pJS$;B0hMk6aP4JjW}hQ@)^Ex9Le z`3p@~m$^;`SLW~souqQY{E*DP&dTfeu@>EEU5Exx3`K z`{eig<@tNhud7!FSMBFeXJ z+wO1IA+q_R)a6zKDsy+uRt6U?UjYE*#ztMQomz8UN5VICM8eSJ;++rIs-Y@O>1^T-@K z;d+0&lFb*PmH`0Vjc(KzUCSntX-{WtRI>R&iw(d^(>f(ayBVx$8Wcsbojc3X&Tu~4 zQ?mJj#qKWkZitaF##x-%TQGn zjryXe@kIK4E|;0_!^Rga+c0$C(4a|%Y^na;*5{=l@t^`9B{%a2*cH=F5=P2N2^E$uzLigkdzH>pI(xu8B6-IbxwdNTpIx6a|E}y1Lp0z{VFLC!bcWRx^XNe`sjP#Sgf0D5ElJGC7E@T&RL7oQffA3d?x&gfxiAd+~6;s|Bdc#J8Yk=wZYao&F_uv$KcT0-1rY_ zzcT@)`7*`Kgo98!!Q|<9=QD$NcBgV(4ei^v2hr_OuAshs?FAtok8|aR(fL4&<>>b^ z@1VK7%motLwF^Hzd*-WbJRZl=(h|-N^Bsy7E`QT@P#g8fT-dGp6W0J7KY9ecu{cbV z&qT2|whPCP9>Ejik+1T(vGcy)|N2#K>^w?0!nYXb8i1X#IJQQ*5s7qjfozR*V`t3Y zzwhj@ibOJv?a^K?Y@$RmjkCkyTM^v?uxsv-NH@3U2LPJO%S{icmtpSO@XHt)T7CX0x{I2mqWpa|Qq~J3AXFoG=tcv6!Oy z02n^43l}a3eMw`z6CNKQH@$uoZ(X}~4aH*7W~gkwEV=Ft-IO>9S&ZA1x7OX77#7LS z4+x4M+5pJT4-mx;@6Kz4qBXnyDdAUi)mG(S|sP}%tbGWenC17zn1$l`~h2FT72kjZBP5ZL~B09a`< zyMqCU$xi@~>fgO?euCS6QJ!+Lm;i|09}n2`15TYf1%TZt-Kof%w%OU)miY-mzmU0j z@uErdTLysJ{&?y=saFjMGCzUlua}?T%wXZITCHZ%e9vJh*&l!B&cJl1N577A%TLH0 zJ2Bnqk>{oC)8bnc)K2Xn!JNf4*#O)&R-c41i>L27p)d z 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