diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm deleted file mode 100644 index a70199887c..0000000000 --- a/code/datums/recipe.dm +++ /dev/null @@ -1,166 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * - * /datum/recipe by rastaf0 13 apr 2011 * - * * * * * * * * * * * * * * * * * * * * * * * * * * - * This is powerful and flexible recipe system. - * It exists not only for food. - * supports both reagents and objects as prerequisites. - * In order to use this system you have to define a deriative from /datum/recipe - * * reagents are reagents. Acid, milc, booze, etc. - * * items are objects. Fruits, tools, circuit boards. - * * result is type to create as new object - * * time is optional parameter, you shall use in in your machine, - default /datum/recipe/ procs does not rely on this parameter. - * - * Functions you need: - * /datum/recipe/proc/make(var/obj/container as obj) - * Creates result inside container, - * deletes prerequisite reagents, - * transfers reagents from prerequisite objects, - * deletes all prerequisite objects (even not needed for recipe at the moment). - * - * /proc/select_recipe(list/datum/recipe/avaiable_recipes, obj/obj as obj, exact = 1) - * Wonderful function that select suitable recipe for you. - * obj is a machine (or magik hat) with prerequisites, - * exact = 0 forces algorithm to ignore superfluous stuff. - * - * - * Functions you do not need to call directly but could: - * /datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) - * /datum/recipe/proc/check_items(var/obj/container as obj) - * - * */ - -/datum/recipe - var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice - var/list/items // example: = list(/obj/item/weapon/tool/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo - var/list/fruit // example: = list("fruit" = 3) - var/result // example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal - var/time = 100 // 1/10 part of second - -/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) - . = 1 - for (var/r_r in reagents) - var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r) - if (!(abs(aval_r_amnt - reagents[r_r])<0.5)) //if NOT equals - if (aval_r_amnt>reagents[r_r]) - . = 0 - else - return -1 - if ((reagents?(reagents.len):(0)) < avail_reagents.reagent_list.len) - return 0 - return . - -/datum/recipe/proc/check_fruit(var/obj/container) - . = 1 - if(fruit && fruit.len) - var/list/checklist = list() - // You should trust Copy(). - checklist = fruit.Copy() - for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in container) - if(!G.seed || !G.seed.kitchen_tag || isnull(checklist[G.seed.kitchen_tag])) - continue - checklist[G.seed.kitchen_tag]-- - for(var/ktag in checklist) - if(!isnull(checklist[ktag])) - if(checklist[ktag] < 0) - . = 0 - else if(checklist[ktag] > 0) - . = -1 - break - return . - -/datum/recipe/proc/check_items(var/obj/container as obj) - . = 1 - if (items && items.len) - var/list/checklist = list() - checklist = items.Copy() // You should really trust Copy - if(istype(container, /obj/machinery)) - var/obj/machinery/machine = container - for(var/obj/O in ((machine.contents - machine.component_parts) - machine.circuit)) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown)) - continue // Fruit is handled in check_fruit(). - var/found = 0 - for(var/i = 1; i < checklist.len+1; i++) - var/item_type = checklist[i] - if (istype(O,item_type)) - checklist.Cut(i, i+1) - found = 1 - break - if (!found) - . = 0 - else - for(var/obj/O in container.contents) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown)) - continue // Fruit is handled in check_fruit(). - var/found = 0 - for(var/i = 1; i < checklist.len+1; i++) - var/item_type = checklist[i] - if (istype(O,item_type)) - checklist.Cut(i, i+1) - found = 1 - break - if (!found) - . = 0 - if (checklist.len) - . = -1 - return . - -//general version -/datum/recipe/proc/make(var/obj/container as obj) - var/obj/result_obj = new result(container) - if(istype(container, /obj/machinery)) - var/obj/machinery/machine = container - for (var/obj/O in ((machine.contents-result_obj - machine.component_parts) - machine.circuit)) - O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) - qdel(O) - else - for (var/obj/O in (container.contents-result_obj)) - O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) - qdel(O) - container.reagents.clear_reagents() - return result_obj - -// food-related -/datum/recipe/proc/make_food(var/obj/container as obj) - if(!result) - to_world("Recipe [type] is defined without a result, please bug report this.") - return - var/obj/result_obj = new result(container) - if(istype(container, /obj/machinery)) - var/obj/machinery/machine = container - for (var/obj/O in ((machine.contents-result_obj - machine.component_parts) - machine.circuit)) - if (O.reagents) - O.reagents.del_reagent("nutriment") - O.reagents.update_total() - O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) - qdel(O) - else - for (var/obj/O in (container.contents-result_obj)) - if (O.reagents) - O.reagents.del_reagent("nutriment") - O.reagents.update_total() - O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) - qdel(O) - container.reagents.clear_reagents() - return result_obj - -/proc/select_recipe(var/list/datum/recipe/avaiable_recipes, var/obj/obj as obj, var/exact) - var/list/datum/recipe/possible_recipes = new - var/target = exact ? 0 : 1 - for (var/datum/recipe/recipe in avaiable_recipes) - if((recipe.check_reagents(obj.reagents) < target) || (recipe.check_items(obj) < target) || (recipe.check_fruit(obj) < target)) - continue - possible_recipes |= recipe - if (possible_recipes.len==0) - return null - else if (possible_recipes.len==1) - return possible_recipes[1] - else //okay, let's select the most complicated recipe - var/highest_count = 0 - . = possible_recipes[1] - for (var/datum/recipe/recipe in possible_recipes) - var/count = ((recipe.items)?(recipe.items.len):0) + ((recipe.reagents)?(recipe.reagents.len):0) + ((recipe.fruit)?(recipe.fruit.len):0) - if (count >= highest_count) - highest_count = count - . = recipe - return . diff --git a/code/game/machinery/vending_machines.dm b/code/game/machinery/vending_machines.dm index 7cfb77d541..59524f869a 100644 --- a/code/game/machinery/vending_machines.dm +++ b/code/game/machinery/vending_machines.dm @@ -365,7 +365,7 @@ /obj/item/weapon/reagent_containers/food/condiment/cornoil = 5, /obj/item/weapon/tray = 8, /obj/item/weapon/material/kitchen/utensil/fork = 6, - /obj/item/weapon/material/knife = 6, + /obj/item/weapon/material/knife/plastic = 6, /obj/item/weapon/material/kitchen/utensil/spoon = 6, /obj/item/weapon/material/knife = 3, /obj/item/weapon/material/kitchen/rollingpin = 2, @@ -383,6 +383,8 @@ /obj/item/weapon/storage/toolbox/lunchbox/cti = 3, /obj/item/weapon/storage/toolbox/lunchbox/nymph = 3, /obj/item/weapon/storage/toolbox/lunchbox/syndicate = 3, + /obj/item/weapon/reagent_containers/cooking_container/oven = 5, + /obj/item/weapon/reagent_containers/cooking_container/fryer = 4, /obj/item/trash/bowl = 10) //VOREStation Add contraband = list(/obj/item/weapon/material/knife/butch = 2) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index b72a73f34e..9b4c15605d 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -91,5 +91,22 @@ name = "bread tube" icon_state = "tastybread" +// Aurora Food Port +/obj/item/trash/brownies + name = "brownie tray" + icon_state = "brownies" + +/obj/item/trash/snacktray + name = "snacktray" + icon_state = "snacktray" + +/obj/item/trash/dipbowl + name = "dip bowl" + icon_state = "dipbowl" + +/obj/item/trash/chipbasket + name = "empty basket" + icon_state = "chipbasket_empty" + /obj/item/trash/attack(mob/M as mob, mob/living/user as mob) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index afb8b1c3ba..e1addc7b2f 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -4,7 +4,9 @@ starts_with = list( /obj/item/weapon/reagent_containers/food/condiment/flour = 7, - /obj/item/weapon/reagent_containers/food/condiment/sugar = 2) + /obj/item/weapon/reagent_containers/food/condiment/sugar = 2, + /obj/item/weapon/reagent_containers/food/condiment/spacespice = 2 + ) /obj/structure/closet/secure_closet/freezer/kitchen/mining req_access = list() diff --git a/code/modules/food/kitchen/cooking_machines/fryer.dm b/code/modules/food/kitchen/cooking_machines/fryer.dm index bec146218b..1cdda7f8bc 100644 --- a/code/modules/food/kitchen/cooking_machines/fryer.dm +++ b/code/modules/food/kitchen/cooking_machines/fryer.dm @@ -63,13 +63,6 @@ if (OL && istype(OL)) OL.data["temperature"] = temperature -/obj/machinery/appliance/cooker/fryer/set_cooking(new_setting) - ..() - if(new_setting) - fry_loop.start() - else - fry_loop.stop() - /obj/machinery/appliance/cooker/fryer/update_cooking_power() ..()//In addition to parent temperature calculation //Fryer efficiency also drops when oil levels arent optimal @@ -92,8 +85,10 @@ /obj/machinery/appliance/cooker/fryer/update_icon() if(cooking) icon_state = on_icon + fry_loop.start() else icon_state = off_icon + fry_loop.stop(src) ..() //Fryer gradually infuses any cooked food with oil. Moar calories diff --git a/code/modules/food/kitchen/cooking_machines/grill.dm b/code/modules/food/kitchen/cooking_machines/grill.dm index 663cffe62b..484d428bb7 100644 --- a/code/modules/food/kitchen/cooking_machines/grill.dm +++ b/code/modules/food/kitchen/cooking_machines/grill.dm @@ -3,8 +3,78 @@ desc = "Backyard grilling, IN SPACE." icon_state = "grill_off" cook_type = "grilled" - cook_time = 100 food_color = "#A34719" on_icon = "grill_on" off_icon = "grill_off" - can_burn_food = 1 \ No newline at end of file + can_burn_food = 1 + stat = POWEROFF + +/obj/machinery/appliance/grill/toggle_power() + set src in view() + set name = "Toggle Power" + set category = "Object" + + var/datum/cooking_item/CI = cooking_objs[1] + + if (stat & POWEROFF)//Its turned off + stat &= ~POWEROFF + if (usr) + usr.visible_message("[usr] turns \the [src] on", "You turn on \the [src].") + get_cooking_work(CI) + use_power = 2 + else //It's on, turn it off + stat |= POWEROFF + use_power = 0 + if (usr) + usr.visible_message("[usr] turns \the [src] off", "You turn off \the [src].") + playsound(src, 'sound/machines/click.ogg', 40, 1) + update_icon() + +/obj/machinery/appliance/grill/initialize() + . = ..() + cooking_objs += new /datum/cooking_item(new /obj/item/weapon/reagent_containers/cooking_container(src)) + cooking = 0 + +/obj/machinery/appliance/grill/has_space(var/obj/item/I) + var/datum/cooking_item/CI = cooking_objs[1] + if (!CI || !CI.container) + return 0 + + if (CI.container.can_fit(I)) + return CI + + return 0 + +//Container is not removable +/obj/machinery/appliance/grill/removal_menu(var/mob/user) + if (can_remove_items(user)) + var/list/menuoptions = list() + for (var/a in cooking_objs) + var/datum/cooking_item/CI = a + if (CI.container) + if (!CI.container.check_contents()) + to_chat(user, "There's nothing in the [src] you can remove!") + return + + for (var/obj/item/I in CI.container) + menuoptions[I.name] = I + + var/selection = input(user, "Which item would you like to remove? If you want to remove chemicals, use an empty beaker.", "Remove ingredients") as null|anything in menuoptions + if (selection) + var/obj/item/I = menuoptions[selection] + if (!user || !user.put_in_hands(I)) + I.forceMove(get_turf(src)) + update_icon() + return 1 + return 0 + +/obj/machinery/appliance/grill/update_icon() + if (!stat) + icon_state = on_icon + else + icon_state = off_icon + +/obj/machinery/appliance/grill/process() + if (!stat) + for (var/i in cooking_objs) + do_cooking_tick(i) \ No newline at end of file diff --git a/code/modules/food/kitchen/cooking_machines/oven.dm b/code/modules/food/kitchen/cooking_machines/oven.dm index c1d0ccf535..7fb5a2af02 100644 --- a/code/modules/food/kitchen/cooking_machines/oven.dm +++ b/code/modules/food/kitchen/cooking_machines/oven.dm @@ -2,22 +2,116 @@ name = "oven" desc = "Cookies are ready, dear." icon = 'icons/obj/cooking_machines.dmi' - icon_state = "oven_off" - on_icon = "oven_on" - off_icon = "oven_off" + icon_state = "ovenopen" cook_type = "baked" - cook_time = 300 + appliancetype = OVEN food_color = "#A34719" can_burn_food = 1 + active_power_usage = 6 KILOWATTS + //Based on a double deck electric convection oven + + resistance = 16000 + idle_power_usage = 2 KILOWATTS + //uses ~30% power to stay warm + optimal_power = 0.2 + + light_x = 2 + max_contents = 5 + container_type = /obj/item/weapon/reagent_containers/cooking_container/oven + + stat = POWEROFF //Starts turned off + + var/open = TRUE output_options = list( - "Personal Pizza" = /obj/item/weapon/reagent_containers/food/snacks/variable/pizza, + "Pizza" = /obj/item/weapon/reagent_containers/food/snacks/variable/pizza, "Bread" = /obj/item/weapon/reagent_containers/food/snacks/variable/bread, "Pie" = /obj/item/weapon/reagent_containers/food/snacks/variable/pie, - "Small Cake" = /obj/item/weapon/reagent_containers/food/snacks/variable/cake, + "Cake" = /obj/item/weapon/reagent_containers/food/snacks/variable/cake, "Hot Pocket" = /obj/item/weapon/reagent_containers/food/snacks/variable/pocket, "Kebab" = /obj/item/weapon/reagent_containers/food/snacks/variable/kebab, "Waffles" = /obj/item/weapon/reagent_containers/food/snacks/variable/waffles, "Cookie" = /obj/item/weapon/reagent_containers/food/snacks/variable/cookie, "Donut" = /obj/item/weapon/reagent_containers/food/snacks/variable/donut, - ) \ No newline at end of file + ) + +/obj/machinery/appliance/cooker/oven/update_icon() + if(!open) + if(!stat) + icon_state = "ovenclosed_on" + else + icon_state = "ovenclosed_off" + else + icon_state = "ovenopen" + ..() + +/obj/machinery/appliance/cooker/oven/AltClick(var/mob/user) + try_toggle_door(user) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + +/obj/machinery/appliance/cooker/oven/verb/toggle_door() + set src in oview(1) + set category = "Object" + set name = "Open/close oven door" + + try_toggle_door(usr) + +/obj/machinery/appliance/cooker/oven/proc/try_toggle_door(mob/user) + if(!isliving(usr) || isAI(user)) + return + + if(!usr.IsAdvancedToolUser()) + to_chat(user, "You lack the dexterity to do that.") + return + + if(!Adjacent(usr)) + to_chat(user, "You can't reach the [src] from there, get closer!") + return + + if(open) + open = FALSE + loss = (active_power_usage / resistance)*0.5 + else + open = TRUE + loss = (active_power_usage / resistance)*4 + //When the oven door is opened, heat is lost MUCH faster + + playsound(src, 'sound/machines/hatch_open.ogg', 20, 1) + update_icon() + +/obj/machinery/appliance/cooker/oven/can_insert(var/obj/item/I, var/mob/user) + if(!open) + to_chat(user, "You can't put anything in while the door is closed!") + return 0 + + else + return ..() + + +//If an oven's door is open it will lose heat every proc, even if it also gained it +//But dont call equalize twice in one stack. A return value of -1 from the parent indicates equalize was already called +/obj/machinery/appliance/cooker/oven/heat_up() + .=..() + if(open && . != -1) + var/turf/T = get_turf(src) + if(temperature > T.temperature) + equalize_temperature() + +/obj/machinery/appliance/cooker/oven/can_remove_items(var/mob/user) + if(!open) + to_chat(user, "You can't take anything out while the door is closed!") + return 0 + + else + return ..() + + +//Oven has lots of recipes and combine options. The chance for interference is high, so +//If a combine target is set the oven will do it instead of checking recipes +/obj/machinery/appliance/cooker/oven/finish_cooking(var/datum/cooking_item/CI) + if(CI.combine_target) + CI.result_type = 3//Combination type. We're making something out of our ingredients + combination_cook(CI) + return + else + ..() \ No newline at end of file diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 8f27afe2b1..828847fca1 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -1,13 +1,14 @@ /obj/machinery/microwave - name = "microwave" + name = "Microwave" desc = "Studies are inconclusive on whether pressing your face against the glass is harmful." icon = 'icons/obj/kitchen.dmi' icon_state = "mw" + layer = 2.9 density = 1 anchored = 1 use_power = USE_POWER_IDLE idle_power_usage = 5 - active_power_usage = 100 + active_power_usage = 2000 clicksound = "button" clickvol = "30" flags = OPENCONTAINER | NOREACT @@ -20,7 +21,9 @@ var/global/list/acceptable_items // List of the items you can put in var/global/list/datum/recipe/microwave/available_recipes // List of the recipes you can use var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 + + var/global/max_n_of_items = 20 + var/appliancetype = MICROWAVE var/datum/looping_sound/microwave/soundloop @@ -37,10 +40,14 @@ default_apply_parts() - if (!available_recipes) + if(!available_recipes) available_recipes = new for (var/type in (typesof(/datum/recipe/microwave)-/datum/recipe/microwave)) - available_recipes+= new type + var/datum/recipe/test = new type + if((test.appliance & appliancetype)) + available_recipes += test + else + qdel(test) acceptable_items = new acceptable_reagents = new for (var/datum/recipe/microwave/recipe in available_recipes) @@ -48,8 +55,6 @@ acceptable_items |= item for (var/reagent in recipe.reagents) acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.items.len) // 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 @@ -95,16 +100,10 @@ src.icon_state = "mw" src.broken = 0 // Fix it! src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER | NOREACT + src.flags = OPENCONTAINER else to_chat(user, "It's broken!") return 1 - else if(default_deconstruction_screwdriver(user, O)) - return - else if(default_deconstruction_crowbar(user, O)) - return - else if(default_unfasten_wrench(user, O, 10)) - return else if(src.dirty==100) // The microwave is all dirty so can't be used! if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them @@ -120,12 +119,12 @@ src.dirty = 0 // It's clean! src.broken = 0 // just to be sure src.icon_state = "mw" - src.flags = OPENCONTAINER | NOREACT + src.flags = OPENCONTAINER else //Otherwise bad luck!! to_chat(user, "It's dirty!") return 1 else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var. + if(contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var. to_chat(user, "This [src] is full of ingredients, you cannot put more.") return 1 if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it @@ -137,9 +136,8 @@ "You add one of [O] to \the [src].") return else - // user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete - user.drop_item() - O.loc = src + // user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete - Man whoever you are, it's been years. o7 + user.drop_from_inventory(O,src) user.visible_message( \ "\The [user] has added \the [O] to \the [src].", \ "You add \the [O] to \the [src].") @@ -159,6 +157,19 @@ var/obj/item/weapon/grab/G = O to_chat(user, "This is ridiculous. You can not fit \the [G.affecting] in this [src].") return 1 + else if(O.is_crowbar()) + user.visible_message( \ + "\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.", \ + "You attempt to [src.anchored ? "unsecure" : "secure"] the microwave." + ) + if (do_after(user,20)) + user.visible_message( \ + "\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.", \ + "You [src.anchored ? "unsecure" : "secure"] the microwave." + ) + src.anchored = !src.anchored + else + to_chat(user, "You decide not to do that.") else to_chat(user, "You have no idea what you can cook with this [O].") ..() @@ -248,8 +259,8 @@ if(stat & (NOPOWER|BROKEN)) return start() - if (reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run - if (!wzhzhzh(5)) //VOREStation Edit - Quicker Microwaves + if(reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run + if(!wzhzhzh(5)) //VOREStation Edit - Quicker Microwaves abort() return abort() @@ -257,55 +268,93 @@ var/datum/recipe/microwave/recipe = select_recipe(available_recipes,src) var/obj/cooked - if (!recipe) + if(!recipe) dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(2)) //VOREStation Edit - Quicker Microwaves + if(prob(max(10,dirty*5))) + if(!wzhzhzh(2)) //VOREStation Edit - Quicker Microwaves abort() return muck_start() wzhzhzh(2) //VOREStation Edit - Quicker Microwaves muck_finish() cooked = fail() - cooked.loc = src.loc + cooked.forceMove(src.loc) return - else if (has_extra_item()) - if (!wzhzhzh(2)) //VOREStation Edit - Quicker Microwaves + else if(has_extra_item()) + if(!wzhzhzh(2)) //VOREStation Edit - Quicker Microwaves abort() return broke() cooked = fail() - cooked.loc = src.loc + cooked.forceMove(src.loc) return else - if (!wzhzhzh(5)) //VOREStation Edit - Quicker Microwaves + if(!wzhzhzh(5)) //VOREStation Edit - Quicker Microwaves abort() return abort() cooked = fail() - cooked.loc = src.loc + cooked.forceMove(src.loc) return else var/halftime = round(recipe.time/20/2) //VOREStation Edit - Quicker Microwaves - if (!wzhzhzh(halftime)) + if(!wzhzhzh(halftime)) abort() return - if (!wzhzhzh(halftime)) + if(!wzhzhzh(halftime)) abort() cooked = fail() - cooked.loc = src.loc + cooked.forceMove(src.loc) return cooked = recipe.make_food(src) abort() if(cooked) - cooked.loc = src.loc + cooked.forceMove(src.loc) return + + //Making multiple copies of a recipe + var/result = recipe.result + var/valid = 1 + var/list/cooked_items = list() + var/obj/temp = new /obj(src) //To prevent infinite loops, all results will be moved into a temporary location so they're not considered as inputs for other recipes + while(valid) + var/list/things = list() + things.Add(recipe.make_food(src)) + cooked_items += things + //Move cooked things to the buffer so they're not considered as ingredients + for(var/atom/movable/AM in things) + AM.forceMove(temp) + + valid = 0 + recipe = select_recipe(available_recipes,src) + if(recipe && recipe.result == result) + sleep(2) + valid = 1 + + for(var/r in cooked_items) + var/atom/movable/R = r + R.forceMove(src) //Move everything from the buffer back to the container + + QDEL_NULL(temp)//Delete buffer object + + //Any leftover reagents are divided amongst the foods + var/total = reagents.total_volume + for(var/obj/item/weapon/reagent_containers/food/snacks/S in cooked_items) + reagents.trans_to_holder(S.reagents, total/cooked_items.len) + + for(var/obj/item/weapon/reagent_containers/food/snacks/S in contents) + S.cook() + + dispose(0) //clear out anything left + stop() + + return /obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z for (var/i=1 to seconds) if (stat & (NOPOWER|BROKEN)) return 0 - use_power(500) + use_power(active_power_usage) sleep(5) //VOREStation Edit - Quicker Microwaves return 1 @@ -343,13 +392,14 @@ updateUsrDialog() soundloop.stop() -/obj/machinery/microwave/proc/dispose() - for (var/obj/O in ((contents-component_parts)-circuit)) - O.loc = src.loc +/obj/machinery/microwave/proc/dispose(var/message = 1) + for (var/atom/movable/A in ((contents-component_parts)-circuit)) + A.forceMove(loc) if (src.reagents.total_volume) src.dirty++ src.reagents.clear_reagents() - to_chat(usr, "You dispose of the microwave contents.") + if(message) + to_chat(usr, "You dispose of the microwave contents.") src.updateUsrDialog() /obj/machinery/microwave/proc/muck_start() @@ -409,6 +459,32 @@ if ("dispose") dispose() return + +/obj/machinery/microwave/verb/Eject() + set src in oview(1) + set category = "Object" + set name = "Eject content" + usr.visible_message( + "[usr] tries to open [src] and remove its contents." , + "You try to open [src] and remove its contents." + ) + + if(!do_after(usr, 1 SECONDS, target = src)) + return + + usr.visible_message( + "[usr] opened [src] and has taken out [english_list(contents)]." , + "You have opened [src] and taken out [english_list(contents)]." + ) + dispose() + +/obj/machinery/microwave/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(!mover) + return 1 + if(mover.checkpass(PASSTABLE)) + //Animals can run under them, lots of empty space + return 1 + return ..() /obj/machinery/microwave/advanced // specifically for complex recipes name = "deluxe microwave" diff --git a/code/modules/food/recipe.dm b/code/modules/food/recipe.dm new file mode 100644 index 0000000000..77e8d04c77 --- /dev/null +++ b/code/modules/food/recipe.dm @@ -0,0 +1,321 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * /datum/recipe by rastaf0 13 apr 2011 * + * * * * * * * * * * * * * * * * * * * * * * * * * * + * This is powerful and flexible recipe system. + * It exists not only for food. + * supports both reagents and objects as prerequisites. + * In order to use this system you have to define a deriative from /datum/recipe + * * reagents are reagents. Acid, milc, booze, etc. + * * items are objects. Fruits, tools, circuit boards. + * * result is type to create as new object + * * time is optional parameter, you shall use in in your machine, + default /datum/recipe/ procs does not rely on this parameter. + * + * Functions you need: + * /datum/recipe/proc/make(var/obj/container as obj) + * Creates result inside container, + * deletes prerequisite reagents, + * transfers reagents from prerequisite objects, + * deletes all prerequisite objects (even not needed for recipe at the moment). + * + * /proc/select_recipe(list/datum/recipe/available_recipes, obj/obj as obj, exact = 1) + * Wonderful function that select suitable recipe for you. + * obj is a machine (or magik hat) with prerequisites, + * exact = 0 forces algorithm to ignore superfluous stuff. + * + * + * Functions you do not need to call directly but could: + * /datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) + * /datum/recipe/proc/check_items(var/obj/container as obj) + * + * */ + +// Recipe type defines. Used to determine what machine makes them. TODO: Add Grill to the list. +#define MICROWAVE 0x1 +#define FRYER 0x2 +#define OVEN 0x4 +#define CANDYMAKER 0x8 +#define CEREALMAKER 0x10 + +/datum/recipe + var/list/reagents // Example: = list("berryjuice" = 5) // do not list same reagent twice + var/list/items // Example: = list(/obj/item/weapon/tool/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo + var/list/fruit // Example: = list("fruit" = 3) + var/coating = null // Required coating on all items in the recipe. The default value of null explitly requires no coating + // A value of -1 is permissive and cares not for any coatings + // Any typepath indicates a specific coating that should be present + // Coatings are used for batter, breadcrumbs, beer-batter, colonel's secret coating, etc + + var/result // Example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal + var/result_quantity = 1 // Number of instances of result that are created. + var/time = 100 // 1/10 part of second + + #define RECIPE_REAGENT_REPLACE 0 //Reagents in the ingredients are discarded. + //Only the reagents present in the result at compiletime are used + #define RECIPE_REAGENT_MAX 1 //The result will contain the maximum of each reagent present between the two pools. Compiletime result, and sum of ingredients + #define RECIPE_REAGENT_MIN 2 //As above, but the minimum, ignoring zero values. + #define RECIPE_REAGENT_SUM 3 //The entire quantity of the ingredients are added to the result + + var/reagent_mix = RECIPE_REAGENT_MAX //How to handle reagent differences between the ingredients and the results + + var/appliance = MICROWAVE // Which apppliances this recipe can be made in. New Recipes will DEFAULT to using the Microwave, as a catch-all (and just in case) + // List of defines is in _defines/misc.dm. But for reference they are: + /* + MICROWAVE + FRYER + OVEN + CANDYMAKER + CEREALMAKER + */ + // This is a bitfield, more than one type can be used + // Grill is presently unused and not listed + +/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) + if(!reagents || !reagents.len) + return 1 + + if(!avail_reagents) + return 0 + + . = 1 + for(var/r_r in reagents) + var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r) + if(aval_r_amnt - reagents[r_r] >= 0) + if(aval_r_amnt>reagents[r_r]) + . = 0 + else + return -1 + + if((reagents?(reagents.len):(0)) < avail_reagents.reagent_list.len) + return 0 + return . + +/datum/recipe/proc/check_fruit(var/obj/container) + if (!fruit || !fruit.len) + return 1 + + . = 1 + if(fruit && fruit.len) + var/list/checklist = list() + // You should trust Copy(). + checklist = fruit.Copy() + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in container) + if(!G.seed || !G.seed.kitchen_tag || isnull(checklist[G.seed.kitchen_tag])) + continue + if(check_coating(G)) + checklist[G.seed.kitchen_tag]-- + for(var/ktag in checklist) + if(!isnull(checklist[ktag])) + if(checklist[ktag] < 0) + . = 0 + else if(checklist[ktag] > 0) + . = -1 + break + return . + +/datum/recipe/proc/check_items(var/obj/container as obj) + if(!items || !items.len) + return 1 + + . = 1 + if(items && items.len) + var/list/checklist = list() + checklist = items.Copy() // You should really trust Copy + if(istype(container, /obj/machinery)) + var/obj/machinery/machine = container + for(var/obj/O in ((machine.contents - machine.component_parts) - machine.circuit)) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown)) + continue // Fruit is handled in check_fruit(). + var/found = 0 + for(var/i = 1; i < checklist.len+1; i++) + var/item_type = checklist[i] + if (istype(O,item_type)) + checklist.Cut(i, i+1) + found = 1 + break + if(!found) + . = 0 + else + for(var/obj/O in container.contents) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown)) + continue // Fruit is handled in check_fruit(). + var/found = 0 + for(var/i = 1; i < checklist.len+1; i++) + var/item_type = checklist[i] + if (istype(O,item_type)) + if(check_coating(O)) + checklist.Cut(i, i+1) + found = 1 + break + if (!found) + . = 0 + if(checklist.len) + . = -1 + return . + +//This is called on individual items within the container. +/datum/recipe/proc/check_coating(var/obj/O) + if(!istype(O,/obj/item/weapon/reagent_containers/food/snacks)) + return 1//Only snacks can be battered + + if (coating == -1) + return 1 //-1 value doesnt care + + var/obj/item/weapon/reagent_containers/food/snacks/S = O + if (!S.coating) + if (!coating) + return 1 + return 0 + else if (S.coating.type == coating) + return 1 + + return 0 + +//general version +/datum/recipe/proc/make(var/obj/container as obj) + var/obj/result_obj = new result(container) + if(istype(container, /obj/machinery)) + var/obj/machinery/machine = container + for (var/obj/O in ((machine.contents-result_obj - machine.component_parts) - machine.circuit)) + O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) + qdel(O) + else + for (var/obj/O in (container.contents-result_obj)) + O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) + qdel(O) + container.reagents.clear_reagents() + return result_obj + +// food-related +// This proc is called under the assumption that the container has already been checked and found to contain the necessary ingredients +/datum/recipe/proc/make_food(var/obj/container as obj) + if(!result) + to_world("Recipe [type] is defined without a result, please bug report this.") + return + + +// We will subtract all the ingredients from the container, and transfer their reagents into a holder +// We will not touch things which are not required for this recipe. They will be left behind for the caller +// to decide what to do. They may be used again to make another recipe or discarded, or merged into the results, +// thats no longer the concern of this proc + var/obj/temp = new /obj(src) + temp.create_reagents(9999999999) + + // Find items we need + if(items && items.len) + for (var/i in items) + var/obj/item/I = locate(i) in container + if (I && I.reagents) + I.reagents.trans_to_holder(temp.reagents,I.reagents.total_volume) + qdel(I) + + // Find fruits + if(fruit && fruit.len) + var/list/checklist = list() + checklist = fruit.Copy() + + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in container) + if(!G.seed || !G.seed.kitchen_tag || isnull(checklist[G.seed.kitchen_tag])) + continue + + if(checklist[G.seed.kitchen_tag] > 0) + //We found a thing we need + checklist[G.seed.kitchen_tag]-- + if(G && G.reagents) + G.reagents.trans_to_holder(temp.reagents,G.reagents.total_volume) + qdel(G) + + // And lastly deduct necessary quantities of reagents + if(reagents && reagents.len) + for (var/r in reagents) + // Doesnt matter whether or not there's enough, we assume that check is done before + container.reagents.trans_id_to(temp, r, reagents[r]) + + /* + Now we've removed all the ingredients that were used and we have the buffer containing the total of + all their reagents. + Next up we create the result, and then handle the merging of reagents depending on the mix setting + */ + var/tally = 0 + + /* + If we have multiple results, holder will be used as a buffer to hold reagents for the result objects. + If, as in the most common case, there is only a single result, then it will just be a reference to + the single-result's reagents + */ + var/obj/tempholder = new(src) + tempholder.create_reagents(9999999999) + var/list/results = list() + while (tally < result_quantity) + var/obj/result_obj = new result(container) + results.Add(result_obj) + + if(!result_obj.reagents)//This shouldn't happen + //If the result somehow has no reagents defined, then create a new holder + world << "[result_obj] had no reagents!" + result_obj.create_reagents(temp.reagents.total_volume*1.5) + + if(result_quantity == 1) + qdel(tempholder.reagents) + tempholder.reagents = result_obj.reagents + else + world << result_obj + result_obj.reagents.trans_to(tempholder.reagents, result_obj.reagents.total_volume) + tally++ + + + switch(reagent_mix) + if(RECIPE_REAGENT_REPLACE) + //We do no transferring + if(RECIPE_REAGENT_SUM) + //Sum is easy, just shove the entire buffer into the result + temp.reagents.trans_to_holder(tempholder.reagents, temp.reagents.total_volume) + if(RECIPE_REAGENT_MAX) + //We want the highest of each. + //Iterate through everything in buffer. If the target has less than the buffer, then top it up + for (var/datum/reagent/R in temp.reagents.reagent_list) + var/rvol = tempholder.reagents.get_reagent_amount(R.id) + if (rvol < R.volume) + //Transfer the difference + temp.reagents.trans_id_to(tempholder, R.id, R.volume-rvol) + + if(RECIPE_REAGENT_MIN) + //Min is slightly more complex. We want the result to have the lowest from each side + //But zero will not count. Where a side has zero its ignored and the side with a nonzero value is used + for (var/datum/reagent/R in temp.reagents.reagent_list) + var/rvol = tempholder.reagents.get_reagent_amount(R.id) + if(rvol == 0) //If the target has zero of this reagent + temp.reagents.trans_id_to(tempholder, R.id, R.volume) + //Then transfer all of ours + + else if(rvol > R.volume) + //if the target has more than ours + //Remove the difference + tempholder.reagents.remove_reagent(R.id, rvol-R.volume) + + + if(results.len > 1) + //If we're here, then holder is a buffer containing the total reagents for all the results. + //So now we redistribute it among them + var/total = tempholder.reagents.total_volume + for (var/i in results) + var/atom/a = i //optimisation + tempholder.reagents.trans_to(a, total / results.len) + return results + +// When exact is false, extraneous ingredients are ignored +// When exact is true, extraneous ingredients will fail the recipe +// In both cases, the full complement of required inredients is still needed +/proc/select_recipe(var/list/datum/recipe/available_recipes, var/obj/obj as obj, var/exact) + var/list/datum/recipe/possible_recipes = list() + for (var/datum/recipe/recipe in available_recipes) + if((recipe.check_reagents(obj.reagents) < exact) || (recipe.check_items(obj) < exact) || (recipe.check_fruit(obj) < exact)) + continue + possible_recipes |= recipe + if (!possible_recipes.len) + return null + else if (possible_recipes.len == 1) + return possible_recipes[1] + else //okay, let's select the most complicated recipe + sortTim(possible_recipes, /proc/cmp_recipe_complexity_dsc) + return possible_recipes[1] diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm index d70fc09bfd..71e6686eb6 100644 --- a/code/modules/food/recipe_dump.dm +++ b/code/modules/food/recipe_dump.dm @@ -32,6 +32,7 @@ "Reagents" = R.reagents, "Fruit" = R.fruit, "Ingredients" = R.items, + "Appliance" = R.appliance, "Image" = result_icon ) @@ -80,6 +81,20 @@ var/amt = drink_recipes[Rp]["Reagents"][rid] drink_recipes[Rp]["Reagents"] -= rid drink_recipes[Rp]["Reagents"][R_name] = amt + + //We can also change the appliance to its proper name. + for(var/Rp in food_recipes) + switch(food_recipes[Rp]["Appliance"]) + if(1) + food_recipes[Rp]["Appliance"] = "Microwave" + if(2) + food_recipes[Rp]["Appliance"] = "Fryer" + if(4) + food_recipes[Rp]["Appliance"] = "Oven" + if(8) + food_recipes[Rp]["Appliance"] = "Candy Maker" + if(16) + food_recipes[Rp]["Appliance"] = "Cereal Maker" //////////////////////// SORTING var/list/foods_to_paths = list() @@ -119,7 +134,7 @@ html += "

Food Recipes (as of [time2text(world.realtime,"MMM DD, YYYY")])


" html += "" - html += "" + html += "" for(var/Rp in food_recipes) //Open this row html += "" @@ -135,6 +150,9 @@ //Name html += "" + + //Appliance + html += "" //Ingredients html += "
IconNameIngredients
IconNameApplianceIngredients
[food_recipes[Rp]["Result"]][food_recipes[Rp]["Appliance"]]
    " diff --git a/code/modules/food/recipes_fryer.dm b/code/modules/food/recipes_fryer.dm new file mode 100644 index 0000000000..82a6bae362 --- /dev/null +++ b/code/modules/food/recipes_fryer.dm @@ -0,0 +1,166 @@ +/datum/recipe/fries + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/rawsticks + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fries + + +/datum/recipe/jpoppers + appliance = FRYER + fruit = list("chili" = 1) + coating = /datum/reagent/nutriment/coating/batter + result = /obj/item/weapon/reagent_containers/food/snacks/jalapeno_poppers + +/datum/recipe/risottoballs + appliance = FRYER + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/risotto) + coating = /datum/reagent/nutriment/coating/batter + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/risottoballs + + +//Meaty Recipes +//==================== +/datum/recipe/cubancarp + appliance = FRYER + fruit = list("chili" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp + +/datum/recipe/batteredsausage + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sausage + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sausage/battered + coating = /datum/reagent/nutriment/coating/batter + + +/datum/recipe/katsu + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/chicken + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chickenkatsu + coating = /datum/reagent/nutriment/coating/beerbatter + + +/datum/recipe/pizzacrunch_1 + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/crunch + coating = /datum/reagent/nutriment/coating/batter + +//Alternate pizza crunch recipe for combination pizzas made in oven +/datum/recipe/pizzacrunch_2 + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/variable/pizza + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/crunch + coating = /datum/reagent/nutriment/coating/batter + +/datum/recipe/friedmushroom + appliance = FRYER + fruit = list("plumphelmet" = 1) + coating = /datum/reagent/nutriment/coating/beerbatter + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/friedmushroom + + +//Sweet Recipes. +//================== +/datum/recipe/jellydonut + appliance = FRYER + reagents = list("berryjuice" = 10, "sugar" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly + result_quantity = 2 + +/datum/recipe/jellydonut/slime + appliance = FRYER + reagents = list("slimejelly" = 10, "sugar" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly + +/datum/recipe/jellydonut/cherry + appliance = FRYER + reagents = list("cherryjelly" = 10, "sugar" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly + +/datum/recipe/donut + appliance = FRYER + reagents = list("sugar" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal + result_quantity = 2 + +/datum/recipe/chaosdonut + appliance = FRYER + reagents = list("frostoil" = 10, "capsaicin" = 10, "sugar" = 10) + reagent_mix = RECIPE_REAGENT_REPLACE //This creates its own reagents + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos + result_quantity = 2 + +/datum/recipe/funnelcake + appliance = FRYER + reagents = list("sugar" = 5, "batter" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/funnelcake + +/datum/recipe/pisanggoreng + appliance = FRYER + fruit = list("banana" = 2) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/pisanggoreng + coating = /datum/reagent/nutriment/coating/batter + +/datum/recipe/corn_dog + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sausage + ) + fruit = list("corn" = 1) + coating = /datum/reagent/nutriment/coating/batter + result = /obj/item/weapon/reagent_containers/food/snacks/corn_dog + +/datum/recipe/sweet_and_sour + appliance = FRYER + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/cutlet + ) + reagents = list("soysauce" = 5, "batter" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/sweet_and_sour + +/datum/recipe/generalschicken + appliance = FRYER + reagents = list("capsaicin" = 2, "sugar" = 2, "batter" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/generalschicken + +/datum/recipe/chickenwings + appliance = FRYER + reagents = list("capsaicin" = 5, "batter" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/storage/box/wings //This is kinda like the donut box. \ No newline at end of file diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 0877869870..ecdd1a1a0e 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -3,7 +3,7 @@ /* No telebacon. just no... -/datum/recipe/microwave/telebacon +/datum/recipe/telebacon items = list( /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/device/assembly/signaler @@ -11,7 +11,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/telebacon I said no! -/datum/recipe/microwave/syntitelebacon +/datum/recipe/syntitelebacon items = list( /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, /obj/item/device/assembly/signaler @@ -19,21 +19,22 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/telebacon */ -/datum/recipe/microwave/friedegg +/datum/recipe/friedegg reagents = list("sodiumchloride" = 1, "blackpepper" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/egg ) result = /obj/item/weapon/reagent_containers/food/snacks/friedegg -/datum/recipe/microwave/boiledegg +/datum/recipe/boiledegg reagents = list("water" = 5) + reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/weapon/reagent_containers/food/snacks/egg ) result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg -/datum/recipe/microwave/devilledegg +/datum/recipe/devilledegg fruit = list("chili" = 1) reagents = list("sodiumchloride" = 2, "mayo" = 5) items = list( @@ -42,132 +43,146 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/devilledegg -/datum/recipe/microwave/dionaroast +/datum/recipe/dionaroast fruit = list("apple" = 1) reagents = list("pacid" = 5) //It dissolves the carapace. Still poisonous, though. items = list(/obj/item/weapon/holder/diona) result = /obj/item/weapon/reagent_containers/food/snacks/dionaroast - -/datum/recipe/microwave/jellydonut +/* // These should be fryer recipes, as should the other donuts, TODO Conversions +/datum/recipe/jellydonut reagents = list("berryjuice" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly -/datum/recipe/microwave/jellydonut/poisonberry +/datum/recipe/jellydonut/poisonberry reagents = list("poisonberryjuice" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/poisonberry -/datum/recipe/microwave/jellydonut/slime +/datum/recipe/jellydonut/slime reagents = list("slimejelly" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly -/datum/recipe/microwave/jellydonut/cherry +/datum/recipe/jellydonut/cherry reagents = list("cherryjelly" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly -/datum/recipe/microwave/donut +/datum/recipe/donut reagents = list("sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal - -/datum/recipe/microwave/humanburger +*/ +/datum/recipe/humanburger items = list( /obj/item/weapon/reagent_containers/food/snacks/meat/human, /obj/item/weapon/reagent_containers/food/snacks/bun ) result = /obj/item/weapon/reagent_containers/food/snacks/human/burger -/datum/recipe/microwave/plainburger +/datum/recipe/plainburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, - /obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/microwave/humanburger + /obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/humanburger + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger + +/datum/recipe/syntiburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh ) result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger -/datum/recipe/microwave/brainburger +/datum/recipe/brainburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/organ/internal/brain ) result = /obj/item/weapon/reagent_containers/food/snacks/brainburger -/datum/recipe/microwave/roburger +/datum/recipe/roburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/robot_parts/head ) result = /obj/item/weapon/reagent_containers/food/snacks/roburger -/datum/recipe/microwave/xenoburger +/datum/recipe/xenoburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/reagent_containers/food/snacks/xenomeat ) result = /obj/item/weapon/reagent_containers/food/snacks/xenoburger -/datum/recipe/microwave/fishburger +/datum/recipe/fishburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/reagent_containers/food/snacks/carpmeat ) result = /obj/item/weapon/reagent_containers/food/snacks/fishburger -/datum/recipe/microwave/tofuburger +/datum/recipe/tofuburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/reagent_containers/food/snacks/tofu ) result = /obj/item/weapon/reagent_containers/food/snacks/tofuburger -/datum/recipe/microwave/ghostburger +/datum/recipe/ghostburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/ectoplasm //where do you even find this stuff ) result = /obj/item/weapon/reagent_containers/food/snacks/ghostburger -/datum/recipe/microwave/clownburger +/datum/recipe/clownburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/clothing/mask/gas/clown_hat ) result = /obj/item/weapon/reagent_containers/food/snacks/clownburger -/datum/recipe/microwave/mimeburger +/datum/recipe/mimeburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/clothing/head/beret ) result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger + +/datum/recipe/mouseburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/holder/mouse + ) + result = /obj/item/weapon/reagent_containers/food/snacks/mouseburger -/datum/recipe/microwave/bunbun +/datum/recipe/bunbun items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/reagent_containers/food/snacks/bun ) result = /obj/item/weapon/reagent_containers/food/snacks/bunbun -/datum/recipe/microwave/hotdog +/datum/recipe/hotdog items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/weapon/reagent_containers/food/snacks/sausage ) result = /obj/item/weapon/reagent_containers/food/snacks/hotdog -/datum/recipe/microwave/waffles +/datum/recipe/waffles reagents = list("sugar" = 10) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -175,7 +190,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/waffles -/datum/recipe/microwave/donkpocket +/datum/recipe/donkpocket items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/meatball @@ -184,23 +199,19 @@ I said no! proc/warm_up(var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked) being_cooked.heat() make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = ..(container) - warm_up(being_cooked) - return being_cooked + . = ..(container) + for (var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/D in .) + if (!D.warm) + warm_up(D) -/datum/recipe/microwave/donkpocket/warm +/datum/recipe/donkpocket/warm reagents = list() //This is necessary since this is a child object of the above recipe and we don't want donk pockets to need flour items = list( /obj/item/weapon/reagent_containers/food/snacks/donkpocket ) result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = locate() in container - if(being_cooked && !being_cooked.warm) - warm_up(being_cooked) - return being_cooked -/datum/recipe/microwave/meatbread +/datum/recipe/meatbread items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -214,7 +225,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread -/datum/recipe/microwave/xenomeatbread +/datum/recipe/xenomeatbread items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -228,7 +239,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread -/datum/recipe/microwave/bananabread +/datum/recipe/bananabread fruit = list("banana" = 1) reagents = list("milk" = 5, "sugar" = 15) items = list( @@ -238,23 +249,24 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread -/datum/recipe/microwave/omelette +/datum/recipe/omelette items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, - /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) + reagents = list("egg" = 6) + reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/omelette -/datum/recipe/microwave/muffin +/datum/recipe/muffin reagents = list("milk" = 5, "sugar" = 5) + reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, ) result = /obj/item/weapon/reagent_containers/food/snacks/muffin -/datum/recipe/microwave/eggplantparm +/datum/recipe/eggplantparm fruit = list("eggplant" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, @@ -262,47 +274,49 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm -/datum/recipe/microwave/soylenviridians +/datum/recipe/soylenviridians fruit = list("soybeans" = 1) reagents = list("flour" = 10) + reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians -/datum/recipe/microwave/soylentgreen +/datum/recipe/soylentgreen reagents = list("flour" = 10) + reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/weapon/reagent_containers/food/snacks/meat/human, /obj/item/weapon/reagent_containers/food/snacks/meat/human ) result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen -/datum/recipe/microwave/meatpie +/datum/recipe/meatpie items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/meat, ) result = /obj/item/weapon/reagent_containers/food/snacks/meatpie -/datum/recipe/microwave/tofupie +/datum/recipe/tofupie items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/tofu, ) result = /obj/item/weapon/reagent_containers/food/snacks/tofupie -/datum/recipe/microwave/xemeatpie +/datum/recipe/xemeatpie items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/xenomeat, ) result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie -/datum/recipe/microwave/pie +/datum/recipe/pie fruit = list("banana" = 1) reagents = list("sugar" = 5) items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/weapon/reagent_containers/food/snacks/pie -/datum/recipe/microwave/cherrypie +/datum/recipe/cherrypie fruit = list("cherries" = 1) reagents = list("sugar" = 10) items = list( @@ -310,35 +324,35 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie -/datum/recipe/microwave/berryclafoutis +/datum/recipe/berryclafoutis fruit = list("berries" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough ) result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/berry -/datum/recipe/microwave/poisonberryclafoutis +/datum/recipe/poisonberryclafoutis fruit = list("poisonberries" = 1) items = list( - /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough ) result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/poison -/datum/recipe/microwave/wingfangchu +/datum/recipe/wingfangchu reagents = list("soysauce" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/xenomeat, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat ) result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu - -/datum/recipe/microwave/chaosdonut +/* - TODO: Port this to Fryer +/datum/recipe/chaosdonut reagents = list("frostoil" = 5, "capsaicin" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos - -/datum/recipe/microwave/humankabob +*/ +/datum/recipe/humankabob items = list( /obj/item/stack/rods, /obj/item/weapon/reagent_containers/food/snacks/meat/human, @@ -346,15 +360,31 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/human/kabob -/datum/recipe/microwave/kabob //Do not put before humankabob +/datum/recipe/kabob //Do not put before humankabob items = list( /obj/item/stack/rods, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/meat, ) result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob + +/datum/recipe/monkeykabob + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey, + /obj/item/weapon/reagent_containers/food/snacks/meat/monkey + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob -/datum/recipe/microwave/tofukabob +/datum/recipe/syntikabob + items = list( + /obj/item/stack/rods, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeykabob + +/datum/recipe/tofukabob items = list( /obj/item/stack/rods, /obj/item/weapon/reagent_containers/food/snacks/tofu, @@ -362,7 +392,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob -/datum/recipe/microwave/tofubread +/datum/recipe/tofubread items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -376,44 +406,51 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread -/datum/recipe/microwave/loadedbakedpotato +/datum/recipe/loadedbakedpotato fruit = list("potato" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/cheesewedge) result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + +/datum/recipe/microchips + appliance = MICROWAVE + items = list( + /obj/item/weapon/reagent_containers/food/snacks/rawsticks + ) + result = /obj/item/weapon/reagent_containers/food/snacks/microchips -/datum/recipe/microwave/mashedpotato +/datum/recipe/mashedpotato fruit = list("potato" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/mashedpotato -/datum/recipe/microwave/bangersandmash +/datum/recipe/bangersandmash items = list( /obj/item/weapon/reagent_containers/food/snacks/mashedpotato, /obj/item/weapon/reagent_containers/food/snacks/sausage, ) result = /obj/item/weapon/reagent_containers/food/snacks/bangersandmash -/datum/recipe/microwave/cheesymash +/datum/recipe/cheesymash items = list( /obj/item/weapon/reagent_containers/food/snacks/mashedpotato, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) result = /obj/item/weapon/reagent_containers/food/snacks/cheesymash -/datum/recipe/microwave/blackpudding +/datum/recipe/blackpudding reagents = list("blood" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/sausage, ) result = /obj/item/weapon/reagent_containers/food/snacks/blackpudding -/datum/recipe/microwave/cheesyfries +/datum/recipe/cheesyfries items = list( /obj/item/weapon/reagent_containers/food/snacks/fries, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries -/datum/recipe/microwave/cubancarp +/datum/recipe/cubancarp fruit = list("chili" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -421,11 +458,11 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp -/datum/recipe/microwave/popcorn +/datum/recipe/popcorn fruit = list("corn" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/popcorn -/datum/recipe/microwave/cookie +/datum/recipe/cookie reagents = list("milk" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -433,7 +470,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/cookie -/datum/recipe/microwave/fortunecookie +/datum/recipe/fortunecookie reagents = list("sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice, @@ -457,12 +494,17 @@ I said no! return 0 return . -/datum/recipe/microwave/meatsteak +/datum/recipe/meatsteak reagents = list("sodiumchloride" = 1, "blackpepper" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak + +/datum/recipe/syntisteak + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh) + result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak -/datum/recipe/microwave/pizzamargherita +/datum/recipe/pizzamargherita fruit = list("tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, @@ -473,7 +515,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita -/datum/recipe/microwave/pizzahawaiian +/datum/recipe/pizzahawaiian fruit = list("tomato" = 1, "pineapple" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, @@ -482,7 +524,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple -/datum/recipe/microwave/meatpizza +/datum/recipe/meatpizza fruit = list("tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, @@ -493,7 +535,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza -/datum/recipe/microwave/mushroompizza +/datum/recipe/mushroompizza fruit = list("mushroom" = 5, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, @@ -501,7 +543,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza -/datum/recipe/microwave/vegetablepizza +/datum/recipe/vegetablepizza fruit = list("eggplant" = 1, "carrot" = 1, "corn" = 1, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, @@ -509,91 +551,89 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza -/datum/recipe/microwave/spacylibertyduff +/datum/recipe/spacylibertyduff reagents = list("water" = 5, "vodka" = 5, "psilocybin" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff -/datum/recipe/microwave/amanitajelly +/datum/recipe/amanitajelly reagents = list("water" = 5, "vodka" = 5, "amatoxin" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/amanitajelly make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..(container) - being_cooked.reagents.del_reagent("amatoxin") - return being_cooked + . = ..(container) + for(var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked in .) + being_cooked.reagents.del_reagent("amatoxin") -/datum/recipe/microwave/meatballsoup +/datum/recipe/meatballsoup fruit = list("carrot" = 1, "potato" = 1) reagents = list("water" = 10) items = list(/obj/item/weapon/reagent_containers/food/snacks/meatball) result = /obj/item/weapon/reagent_containers/food/snacks/meatballsoup -/datum/recipe/microwave/vegetablesoup +/datum/recipe/vegetablesoup fruit = list("carrot" = 1, "potato" = 1, "corn" = 1, "eggplant" = 1) reagents = list("water" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup -/datum/recipe/microwave/nettlesoup +/datum/recipe/nettlesoup fruit = list("nettle" = 1, "potato" = 1) - reagents = list("water" = 10) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg - ) + reagents = list("water" = 10, "egg" = 3) result = /obj/item/weapon/reagent_containers/food/snacks/nettlesoup -/datum/recipe/microwave/wishsoup +/datum/recipe/wishsoup reagents = list("water" = 20) result= /obj/item/weapon/reagent_containers/food/snacks/wishsoup -/datum/recipe/microwave/hotchili +/datum/recipe/hotchili fruit = list("chili" = 1, "tomato" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) result = /obj/item/weapon/reagent_containers/food/snacks/hotchili -/datum/recipe/microwave/coldchili +/datum/recipe/coldchili fruit = list("icechili" = 1, "tomato" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) result = /obj/item/weapon/reagent_containers/food/snacks/coldchili -/datum/recipe/microwave/amanita_pie +/datum/recipe/amanita_pie reagents = list("amatoxin" = 5) items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie -/datum/recipe/microwave/plump_pie +/datum/recipe/plump_pie fruit = list("plumphelmet" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie -/datum/recipe/microwave/spellburger +/datum/recipe/spellburger items = list( /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, /obj/item/clothing/head/wizard/fake, ) result = /obj/item/weapon/reagent_containers/food/snacks/spellburger -/datum/recipe/microwave/spellburger +/datum/recipe/spellburger items = list( /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, /obj/item/clothing/head/wizard, ) result = /obj/item/weapon/reagent_containers/food/snacks/spellburger -/datum/recipe/microwave/bigbiteburger +/datum/recipe/bigbiteburger items = list( /obj/item/weapon/reagent_containers/food/snacks/monkeyburger, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/egg, ) + reagents = list("egg" = 3) + reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger -/datum/recipe/microwave/enchiladas +/datum/recipe/enchiladas fruit = list("chili" = 2, "corn" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/cutlet) result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas -/datum/recipe/microwave/creamcheesebread +/datum/recipe/creamcheesebread items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -602,7 +642,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread -/datum/recipe/microwave/monkeysdelight +/datum/recipe/monkeysdelight fruit = list("banana" = 1) reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 10) items = list( @@ -610,7 +650,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight -/datum/recipe/microwave/baguette +/datum/recipe/baguette reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "yeast" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -618,24 +658,24 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/baguette -/datum/recipe/microwave/croissant +/datum/recipe/croissant reagents = list("sodiumchloride" = 1, "water" = 5, "milk" = 5, "yeast" = 5) items = list(/obj/item/weapon/reagent_containers/food/snacks/dough) result = /obj/item/weapon/reagent_containers/food/snacks/croissant -/datum/recipe/microwave/fishandchips +/datum/recipe/fishandchips items = list( /obj/item/weapon/reagent_containers/food/snacks/fries, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, ) result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips -/datum/recipe/microwave/bread +/datum/recipe/bread reagents = list("yeast" = 5) items = list(/obj/item/weapon/reagent_containers/food/snacks/dough) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread -/datum/recipe/microwave/sandwich +/datum/recipe/sandwich items = list( /obj/item/weapon/reagent_containers/food/snacks/meatsteak, /obj/item/weapon/reagent_containers/food/snacks/slice/bread, @@ -644,13 +684,13 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sandwich -/datum/recipe/microwave/toastedsandwich +/datum/recipe/toastedsandwich items = list( /obj/item/weapon/reagent_containers/food/snacks/sandwich ) result = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich -/datum/recipe/microwave/peanutbutterjellysandwich +/datum/recipe/peanutbutterjellysandwich reagents = list("cherryjelly" = 5, "peanutbutter" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, @@ -658,7 +698,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/peanutbutter -/datum/recipe/microwave/grilledcheese +/datum/recipe/grilledcheese items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, /obj/item/weapon/reagent_containers/food/snacks/slice/bread, @@ -666,12 +706,12 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese -/datum/recipe/microwave/tomatosoup +/datum/recipe/tomatosoup fruit = list("tomato" = 2) reagents = list("water" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/tomatosoup -/datum/recipe/microwave/rofflewaffles +/datum/recipe/rofflewaffles reagents = list("psilocybin" = 5, "sugar" = 10) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -679,27 +719,27 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles -/datum/recipe/microwave/stew +/datum/recipe/stew fruit = list("potato" = 1, "tomato" = 1, "carrot" = 1, "eggplant" = 1, "mushroom" = 1) reagents = list("water" = 10) items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) result = /obj/item/weapon/reagent_containers/food/snacks/stew -/datum/recipe/microwave/slimetoast +/datum/recipe/slimetoast reagents = list("slimejelly" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime -/datum/recipe/microwave/jelliedtoast +/datum/recipe/jelliedtoast reagents = list("cherryjelly" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry -/datum/recipe/microwave/milosoup +/datum/recipe/milosoup reagents = list("water" = 10) items = list( /obj/item/weapon/reagent_containers/food/snacks/soydope, @@ -709,7 +749,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/milosoup -/datum/recipe/microwave/stewedsoymeat +/datum/recipe/stewedsoymeat fruit = list("carrot" = 1, "tomato" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/soydope, @@ -717,39 +757,39 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat -/*/datum/recipe/microwave/spagetti We have the processor now +/*/datum/recipe/spagetti We have the processor now items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice ) result= /obj/item/weapon/reagent_containers/food/snacks/spagetti*/ -/datum/recipe/microwave/boiledspagetti +/datum/recipe/boiledspagetti reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/spagetti, ) result = /obj/item/weapon/reagent_containers/food/snacks/boiledspagetti -/datum/recipe/microwave/boiledrice +/datum/recipe/boiledrice reagents = list("water" = 5, "rice" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/boiledrice -/datum/recipe/microwave/ricepudding +/datum/recipe/ricepudding reagents = list("milk" = 5, "rice" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/ricepudding -/datum/recipe/microwave/pastatomato +/datum/recipe/pastatomato fruit = list("tomato" = 2) reagents = list("water" = 5) items = list(/obj/item/weapon/reagent_containers/food/snacks/spagetti) result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato -/datum/recipe/microwave/poppypretzel +/datum/recipe/poppypretzel fruit = list("poppy" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/dough) result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel -/datum/recipe/microwave/meatballspagetti +/datum/recipe/meatballspagetti reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/spagetti, @@ -758,7 +798,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/meatballspagetti -/datum/recipe/microwave/spesslaw +/datum/recipe/spesslaw reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/spagetti, @@ -769,7 +809,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw -/datum/recipe/microwave/superbiteburger +/datum/recipe/superbiteburger fruit = list("tomato" = 1) reagents = list("sodiumchloride" = 5, "blackpepper" = 5) items = list( @@ -781,31 +821,31 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/superbiteburger -/datum/recipe/microwave/candiedapple +/datum/recipe/candiedapple fruit = list("apple" = 1) reagents = list("water" = 5, "sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple -/datum/recipe/microwave/applepie +/datum/recipe/applepie fruit = list("apple" = 1) items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/weapon/reagent_containers/food/snacks/applepie -/datum/recipe/microwave/slimeburger +/datum/recipe/slimeburger reagents = list("slimejelly" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun ) result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime -/datum/recipe/microwave/jellyburger +/datum/recipe/jellyburger reagents = list("cherryjelly" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun ) result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry -/datum/recipe/microwave/twobread +/datum/recipe/twobread reagents = list("wine" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, @@ -813,7 +853,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/twobread -/datum/recipe/microwave/slimesandwich +/datum/recipe/slimesandwich reagents = list("slimejelly" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, @@ -821,7 +861,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime -/datum/recipe/microwave/cherrysandwich +/datum/recipe/cherrysandwich reagents = list("cherryjelly" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/slice/bread, @@ -829,45 +869,46 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry -/datum/recipe/microwave/bloodsoup +/datum/recipe/bloodsoup reagents = list("blood" = 30) result = /obj/item/weapon/reagent_containers/food/snacks/bloodsoup -/datum/recipe/microwave/slimesoup +/datum/recipe/slimesoup reagents = list("water" = 10, "slimejelly" = 5) items = list() result = /obj/item/weapon/reagent_containers/food/snacks/slimesoup -/datum/recipe/microwave/boiledslimeextract +/datum/recipe/boiledslimeextract reagents = list("water" = 5) items = list( /obj/item/slime_extract, ) result = /obj/item/weapon/reagent_containers/food/snacks/boiledslimecore -/datum/recipe/microwave/chocolateegg +/datum/recipe/chocolateegg items = list( /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, ) result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg -/datum/recipe/microwave/sausage +/datum/recipe/sausage items = list( /obj/item/weapon/reagent_containers/food/snacks/meatball, /obj/item/weapon/reagent_containers/food/snacks/cutlet, ) result = /obj/item/weapon/reagent_containers/food/snacks/sausage + resut_quantity = 2 -/datum/recipe/microwave/fishfingers - reagents = list("flour" = 10) +/datum/recipe/fishfingers + reagents = list("flour" = 10, "egg" = 3) items = list( - /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, ) result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers + reagent_mix = RECIPE_REAGENT_REPLACE -/datum/recipe/microwave/zestfish +/datum/recipe/zestfish fruit = list("lemon" = 1) reagents = list("sodiumchloride" = 3) items = list( @@ -875,7 +916,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/zestfish -/datum/recipe/microwave/limezestfish +/datum/recipe/limezestfish fruit = list("lime" = 1) reagents = list("sodiumchloride" = 3) items = list( @@ -883,7 +924,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/zestfish -/datum/recipe/microwave/kudzudonburi +/datum/recipe/kudzudonburi fruit = list("kudzu" = 1) reagents = list("rice" = 10) items = list( @@ -891,32 +932,33 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/kudzudonburi -/datum/recipe/microwave/mysterysoup - reagents = list("water" = 10) +/datum/recipe/mysterysoup + reagents = list("water" = 10, "egg" = 3) items = list( /obj/item/weapon/reagent_containers/food/snacks/badrecipe, /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) + reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/mysterysoup -/datum/recipe/microwave/pumpkinpie +/datum/recipe/pumpkinpie fruit = list("pumpkin" = 1) reagents = list("milk" = 5, "sugar" = 5, "egg" = 3, "flour" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie -/datum/recipe/microwave/plumphelmetbiscuit +/datum/recipe/plumphelmetbiscuit fruit = list("plumphelmet" = 1) reagents = list("water" = 5, "flour" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit -/datum/recipe/microwave/mushroomsoup +/datum/recipe/mushroomsoup fruit = list("mushroom" = 1) reagents = list("water" = 5, "milk" = 5) + reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/weapon/reagent_containers/food/snacks/mushroomsoup -/datum/recipe/microwave/chawanmushi +/datum/recipe/chawanmushi fruit = list("mushroom" = 1) reagents = list("water" = 5, "soysauce" = 5) items = list( @@ -925,12 +967,12 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/chawanmushi -/datum/recipe/microwave/beetsoup +/datum/recipe/beetsoup fruit = list("whitebeet" = 1, "cabbage" = 1) reagents = list("water" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/beetsoup -/datum/recipe/microwave/appletart +/datum/recipe/appletart fruit = list("goldapple" = 1) reagents = list("sugar" = 5, "milk" = 5, "flour" = 10) items = list( @@ -938,72 +980,87 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/appletart -/datum/recipe/microwave/tossedsalad +/datum/recipe/tossedsalad fruit = list("cabbage" = 2, "tomato" = 1, "carrot" = 1, "apple" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/tossedsalad -/datum/recipe/microwave/flowersalad +/datum/recipe/flowersalad fruit = list("harebell" = 1, "poppy" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower ) result = /obj/item/weapon/reagent_containers/food/snacks/flowerchildsalad -/datum/recipe/microwave/rosesalad +/datum/recipe/rosesalad fruit = list("harebell" = 1, "rose" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower ) result = /obj/item/weapon/reagent_containers/food/snacks/rosesalad -/datum/recipe/microwave/aesirsalad +/datum/recipe/aesirsalad fruit = list("goldapple" = 1, "ambrosiadeus" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/aesirsalad -/datum/recipe/microwave/validsalad +/datum/recipe/validsalad fruit = list("potato" = 1, "ambrosia" = 3) items = list(/obj/item/weapon/reagent_containers/food/snacks/meatball) result = /obj/item/weapon/reagent_containers/food/snacks/validsalad make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked = ..(container) - being_cooked.reagents.del_reagent("toxin") - return being_cooked -/datum/recipe/microwave/cracker + . = ..(container) + for (var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked in .) + being_cooked.reagents.del_reagent("toxin") + +/datum/recipe/cracker reagents = list("sodiumchloride" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice ) result = /obj/item/weapon/reagent_containers/food/snacks/cracker -/datum/recipe/microwave/stuffing +/datum/recipe/stuffing reagents = list("water" = 5, "sodiumchloride" = 1, "blackpepper" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread, ) result = /obj/item/weapon/reagent_containers/food/snacks/stuffing -/datum/recipe/microwave/tofurkey +/datum/recipe/tofurkey items = list( /obj/item/weapon/reagent_containers/food/snacks/tofu, /obj/item/weapon/reagent_containers/food/snacks/tofu, /obj/item/weapon/reagent_containers/food/snacks/stuffing, ) result = /obj/item/weapon/reagent_containers/food/snacks/tofurkey + +/datum/recipe/mashedpotato + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spreads/butter // to prevent conflicts with yellow curry + ) + fruit = list("potato" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/mashedpotato + +/datum/recipe/icecreamsandwich + reagents = list("milk" = 5, "ice" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/icecream + ) + result = /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich // Fuck Science! -/datum/recipe/microwave/ruinedvirusdish +/datum/recipe/ruinedvirusdish items = list( /obj/item/weapon/virusdish ) result = /obj/item/weapon/ruinedvirusdish -/datum/recipe/microwave/onionrings +/datum/recipe/onionrings fruit = list("onion" = 1) reagents = list("flour" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/onionrings -/datum/recipe/microwave/onionsoup +/datum/recipe/onionsoup fruit = list("onion" = 1) reagents = list("water" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/onionsoup @@ -1012,7 +1069,7 @@ I said no! // bs12 food port stuff ////////////////////////////////////////// -/datum/recipe/microwave/taco +/datum/recipe/taco items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/cutlet, @@ -1020,56 +1077,56 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/taco -/datum/recipe/microwave/bun +/datum/recipe/bun items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) result = /obj/item/weapon/reagent_containers/food/snacks/bun -/datum/recipe/microwave/flatbread +/datum/recipe/flatbread items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough ) result = /obj/item/weapon/reagent_containers/food/snacks/flatbread -/datum/recipe/microwave/meatball +/datum/recipe/meatball items = list( /obj/item/weapon/reagent_containers/food/snacks/rawmeatball ) result = /obj/item/weapon/reagent_containers/food/snacks/meatball -/datum/recipe/microwave/cutlet +/datum/recipe/cutlet items = list( /obj/item/weapon/reagent_containers/food/snacks/rawcutlet ) result = /obj/item/weapon/reagent_containers/food/snacks/cutlet -/datum/recipe/microwave/fries +/datum/recipe/fries items = list( /obj/item/weapon/reagent_containers/food/snacks/rawsticks ) result = /obj/item/weapon/reagent_containers/food/snacks/fries -/datum/recipe/microwave/roastedsunflowerseeds +/datum/recipe/roastedsunflowerseeds reagents = list("sodiumchloride" = 1, "cornoil" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/rawsunflower ) result = /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower -/datum/recipe/microwave/roastedpeanutsunflowerseeds +/datum/recipe/roastedpeanutsunflowerseeds reagents = list("sodiumchloride" = 1, "peanutoil" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/rawsunflower ) result = /obj/item/weapon/reagent_containers/food/snacks/roastedsunflower -/datum/recipe/microwave/roastedpeanuts +/datum/recipe/roastedpeanuts fruit = list("peanut" = 2) reagents = list("sodiumchloride" = 2, "cornoil" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/roastedpeanuts -/datum/recipe/microwave/mint +/datum/recipe/mint reagents = list("sugar" = 5, "frostoil" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/mint @@ -1077,7 +1134,7 @@ I said no! // TGstation food ports //////////////////////// -/datum/recipe/microwave/meatbun +/datum/recipe/meatbun fruit = list("cabbage" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/meatball, @@ -1085,14 +1142,14 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/meatbun -/datum/recipe/microwave/sashimi +/datum/recipe/sashimi reagents = list("soysauce" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/carpmeat ) result = /obj/item/weapon/reagent_containers/food/snacks/sashimi -/datum/recipe/microwave/benedict +/datum/recipe/benedict items = list( /obj/item/weapon/reagent_containers/food/snacks/cutlet, /obj/item/weapon/reagent_containers/food/snacks/friedegg, @@ -1100,19 +1157,19 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/benedict -/datum/recipe/microwave/bakedbeans +/datum/recipe/bakedbeans fruit = list("soybeans" = 2) reagents = list("ketchup" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/beans -/datum/recipe/microwave/sugarcookie +/datum/recipe/sugarcookie items = list( /obj/item/weapon/reagent_containers/food/snacks/dough ) reagents = list("sugar" = 5, "egg" = 3) result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie -/datum/recipe/microwave/berrymuffin +/datum/recipe/berrymuffin reagents = list("milk" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough @@ -1120,7 +1177,7 @@ I said no! fruit = list("berries" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/berrymuffin/berry -/datum/recipe/microwave/poisonberrymuffin +/datum/recipe/poisonberrymuffin reagents = list("milk" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough @@ -1128,7 +1185,7 @@ I said no! fruit = list("poisonberries" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/berrymuffin/poison -/datum/recipe/microwave/ghostmuffin +/datum/recipe/ghostmuffin reagents = list("milk" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -1137,7 +1194,7 @@ I said no! fruit = list("berries" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/berry -/datum/recipe/microwave/poisonghostmuffin +/datum/recipe/poisonghostmuffin reagents = list("milk" = 5, "sugar" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/dough, @@ -1146,7 +1203,7 @@ I said no! fruit = list("poisonberries" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/poison -/datum/recipe/microwave/eggroll +/datum/recipe/eggroll reagents = list("soysauce" = 10) items = list( /obj/item/weapon/reagent_containers/food/snacks/friedegg @@ -1154,28 +1211,28 @@ I said no! fruit = list("cabbage" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/eggroll -/datum/recipe/microwave/fruitsalad +/datum/recipe/fruitsalad fruit = list("orange" = 1, "apple" = 1, "grapes" = 1, "watermelon" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/fruitsalad -/datum/recipe/microwave/eggbowl +/datum/recipe/eggbowl reagents = list("water" = 5, "rice" = 10, "egg" = 3) result = /obj/item/weapon/reagent_containers/food/snacks/eggbowl -/datum/recipe/microwave/porkbowl +/datum/recipe/porkbowl reagents = list("water" = 5, "rice" = 10) items = list( /obj/item/weapon/reagent_containers/food/snacks/cutlet ) result = /obj/item/weapon/reagent_containers/food/snacks/porkbowl -/datum/recipe/microwave/tortilla +/datum/recipe/tortilla items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough ) result = /obj/item/weapon/reagent_containers/food/snacks/tortilla -/datum/recipe/microwave/meatburrito +/datum/recipe/meatburrito fruit = list("soybeans" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla, @@ -1184,7 +1241,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/meatburrito -/datum/recipe/microwave/cheeseburrito +/datum/recipe/cheeseburrito fruit = list("soybeans" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla, @@ -1193,21 +1250,21 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/cheeseburrito -/datum/recipe/microwave/fuegoburrito +/datum/recipe/fuegoburrito fruit = list("soybeans" = 1, "chili" = 2) items = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla ) result = /obj/item/weapon/reagent_containers/food/snacks/fuegoburrito -/datum/recipe/microwave/nachos +/datum/recipe/nachos reagents = list("sodiumchloride" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla ) result = /obj/item/weapon/reagent_containers/food/snacks/nachos -/datum/recipe/microwave/cheesenachos +/datum/recipe/cheesenachos reagents = list("sodiumchloride" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla, @@ -1215,7 +1272,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/cheesenachos -/datum/recipe/microwave/cubannachos +/datum/recipe/cubannachos fruit = list("chili" = 1) reagents = list("ketchup" = 5) items = list( @@ -1223,12 +1280,12 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/cubannachos -/datum/recipe/microwave/curryrice +/datum/recipe/curryrice fruit = list("chili" = 1) reagents = list("rice" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/curryrice -/datum/recipe/microwave/piginblanket +/datum/recipe/piginblanket items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/sausage @@ -1236,16 +1293,16 @@ I said no! result = /obj/item/weapon/reagent_containers/food/snacks/piginblanket // Cakes. -/datum/recipe/microwave/cake +/datum/recipe/cake reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9, "vanilla" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake -/datum/recipe/microwave/cake/carrot +/datum/recipe/cake/carrot fruit = list("carrot" = 1) reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake -/datum/recipe/microwave/cake/cheese +/datum/recipe/cake/cheese reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) items = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, @@ -1253,54 +1310,54 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake -/datum/recipe/microwave/cake/peanut +/datum/recipe/cake/peanut fruit = list("peanut" = 3) reagents = list("milk" = 5, "flour" = 10, "sugar" = 5, "egg" = 6, "peanutbutter" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/peanutcake -/datum/recipe/microwave/cake/orange +/datum/recipe/cake/orange fruit = list("orange" = 1) reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake -/datum/recipe/microwave/cake/lime +/datum/recipe/cake/lime fruit = list("lime" = 1) reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake -/datum/recipe/microwave/cake/lemon +/datum/recipe/cake/lemon fruit = list("lemon" = 1) reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake -/datum/recipe/microwave/cake/chocolate +/datum/recipe/cake/chocolate items = list(/obj/item/weapon/reagent_containers/food/snacks/chocolatebar) reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake -/datum/recipe/microwave/cake/birthday +/datum/recipe/cake/birthday reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) items = list(/obj/item/clothing/head/cakehat) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake -/datum/recipe/microwave/cake/apple +/datum/recipe/cake/apple fruit = list("apple" = 1) reagents = list("milk" = 5, "flour" = 15, "egg" = 9,"sugar" = 5) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake -/datum/recipe/microwave/cake/brain +/datum/recipe/cake/brain reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) items = list(/obj/item/organ/internal/brain) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake -/datum/recipe/microwave/bagelplain +/datum/recipe/bagelplain reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun ) result = /obj/item/weapon/reagent_containers/food/snacks/bagelplain -/datum/recipe/microwave/bagelsunflower +/datum/recipe/bagelsunflower reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, @@ -1308,7 +1365,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/bagelsunflower -/datum/recipe/microwave/bagelcheese +/datum/recipe/bagelcheese reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, @@ -1316,7 +1373,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/bagelcheese -/datum/recipe/microwave/bagelraisin +/datum/recipe/bagelraisin reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, @@ -1324,7 +1381,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/bagelraisin -/datum/recipe/microwave/bagelpoppy +/datum/recipe/bagelpoppy fruit = list("poppy" = 1) reagents = list("water" = 5) items = list( @@ -1332,7 +1389,7 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/bagelpoppy -/datum/recipe/microwave/bageleverything +/datum/recipe/bageleverything reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, @@ -1340,10 +1397,559 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/bageleverything -/datum/recipe/microwave/bageltwo +/datum/recipe/bageltwo reagents = list("water" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/device/soulstone ) result = /obj/item/weapon/reagent_containers/food/snacks/bageltwo + +///////////////////////////////////////////////////////////// +//Synnono Meme Foods +// +//Most recipes replace reagents with RECIPE_REAGENT_REPLACE +//to simplify the end product and balance the amount of reagents +//in some foods. Many require the space spice reagent/condiment +//to reduce the risk of future recipe conflicts. +///////////////////////////////////////////////////////////// + + +/datum/recipe/redcurry + reagents = list("cream" = 5, "spacespice" = 2, "rice" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/cutlet + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/redcurry + +/datum/recipe/greencurry + reagents = list("cream" = 5, "spacespice" = 2, "rice" = 5) + fruit = list("chili" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/greencurry + +/datum/recipe/yellowcurry + reagents = list("cream" = 5, "spacespice" = 2, "rice" = 5) + fruit = list("peanut" = 2, "potato" = 1) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/yellowcurry + +/datum/recipe/bearburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/bearmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bearburger + +/datum/recipe/bearchili + fruit = list("chili" = 1, "tomato" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/bearmeat) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/bearchili + +/datum/recipe/bearstew + fruit = list("potato" = 1, "tomato" = 1, "carrot" = 1, "eggplant" = 1, "mushroom" = 1) + reagents = list("water" = 10) + items = list(/obj/item/weapon/reagent_containers/food/snacks/bearmeat) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/bearstew + +/datum/recipe/bibimbap + fruit = list("carrot" = 1, "cabbage" = 1, "mushroom" = 1) + reagents = list("rice" = 5, "spacespice" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/cutlet + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/bibimbap + +/datum/recipe/friedrice + reagents = list("water" = 5, "rice" = 10, "soysauce" = 5) + fruit = list("carrot" = 1, "cabbage" = 1) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/friedrice + +/datum/recipe/lomein + reagents = list("water" = 5, "soysauce" = 5) + fruit = list("carrot" = 1, "cabbage" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spagetti + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/lomein + +/datum/recipe/chickenfillet //Also just combinable, like burgers and hot dogs. + items = list( + /obj/item/weapon/reagent_containers/food/snacks/chickenkatsu, + /obj/item/weapon/reagent_containers/food/snacks/bun + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chickenfillet + +/datum/recipe/chilicheesefries + items = list( + /obj/item/weapon/reagent_containers/food/snacks/fries, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/hotchili + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/chilicheesefries + +/datum/recipe/meatbun + reagents = list("spacespice" = 1, "water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/rawcutlet + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Water used up in cooking + result = /obj/item/weapon/reagent_containers/food/snacks/meatbun + +/datum/recipe/custardbun + reagents = list("spacespice" = 1, "water" = 5, "egg" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Water, egg used up in cooking + result = /obj/item/weapon/reagent_containers/food/snacks/custardbun + +/datum/recipe/chickenmomo + reagents = list("spacespice" = 2, "water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/meat/chicken + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/chickenmomo + +/datum/recipe/veggiemomo + reagents = list("spacespice" = 2, "water" = 5) + fruit = list("carrot" = 1, "cabbage" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Get that water outta here + result = /obj/item/weapon/reagent_containers/food/snacks/veggiemomo + +/datum/recipe/risotto + reagents = list("wine" = 5, "rice" = 10, "spacespice" = 1) + fruit = list("mushroom" = 1) + reagent_mix = RECIPE_REAGENT_REPLACE //Get that rice and wine outta here + result = /obj/item/weapon/reagent_containers/food/snacks/risotto + +/datum/recipe/poachedegg + reagents = list("spacespice" = 1, "sodiumchloride" = 1, "blackpepper" = 1, "water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/egg + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Get that water outta here + result = /obj/item/weapon/reagent_containers/food/snacks/poachedegg + +/datum/recipe/honeytoast + reagents = list("honey" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/slice/bread + ) + reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product + result = /obj/item/weapon/reagent_containers/food/snacks/honeytoast + + +/datum/recipe/donerkebab + fruit = list("tomato" = 1, "cabbage" = 1) + reagents = list("sodiumchloride" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meatsteak, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donerkebab + + +/datum/recipe/sashimi + reagents = list("soysauce" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sashimi + + +/datum/recipe/nugget + reagents = list("flour" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/chicken + ) + reagent_mix = RECIPE_REAGENT_REPLACE + result = /obj/item/weapon/reagent_containers/food/snacks/nugget + +// Chip update +/datum/recipe/tortila + reagents = list("flour" = 5,"water" = 5) + result = /obj/item/weapon/reagent_containers/food/snacks/tortilla + reagent_mix = RECIPE_REAGENT_REPLACE //no gross flour or water + +/datum/recipe/taconew + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/taco + +/datum/recipe/chips + reagents = list("sodiumchloride" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tortilla + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chipplate + +/datum/recipe/nachos + items = list( + /obj/item/weapon/reagent_containers/food/snacks/chipplate, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chipplate/nachos + +/datum/recipe/salsa + fruit = list("chili" = 1, "tomato" = 1, "lime" = 1) + reagents = list("spacespice" = 1, "blackpepper" = 1,"sodiumchloride" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/dip/salsa + reagent_mix = RECIPE_REAGENT_REPLACE //Ingredients are mixed together. + +/datum/recipe/guac + fruit = list("chili" = 1, "lime" = 1) + reagents = list("spacespice" = 1, "blackpepper" = 1,"sodiumchloride" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/dip/guac + reagent_mix = RECIPE_REAGENT_REPLACE //Ingredients are mixed together. + +/datum/recipe/cheesesauce + fruit = list("chili" = 1, "tomato" = 1) + reagents = list("spacespice" = 1, "blackpepper" = 1,"sodiumchloride" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/dip + reagent_mix = RECIPE_REAGENT_REPLACE //Ingredients are mixed together. + +/datum/recipe/burrito + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/meatball + ) + reagents = list("spacespice" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/burrito + +/datum/recipe/burrito_vegan + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burrito_vegan + +/datum/recipe/burrito_spicy + fruit = list("chili" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/burrito + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burrito_spicy + +/datum/recipe/burrito_cheese + items = list( + /obj/item/weapon/reagent_containers/food/snacks/burrito, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burrito_cheese + +/datum/recipe/burrito_cheese_spicy + fruit = list("chili" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/burrito, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burrito_cheese_spicy + +/datum/recipe/burrito_hell + fruit = list("chili" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/burrito_spicy + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burrito_hell + reagent_mix = RECIPE_REAGENT_REPLACE //Already hot sauce + +/datum/recipe/breakfast_wrap + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/tortilla, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/egg + ) + result = /obj/item/weapon/reagent_containers/food/snacks/breakfast_wrap + +/datum/recipe/burrito_mystery + items = list( + /obj/item/weapon/reagent_containers/food/snacks/burrito, + /obj/item/weapon/reagent_containers/food/snacks/mysterysoup + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burrito_mystery + +//Ligger food, and also bacon. + +/datum/recipe/bacon + items = list( + /obj/item/weapon/reagent_containers/food/snacks/rawbacon + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bacon + +/datum/recipe/chilied_eggs + items = list( + /obj/item/weapon/reagent_containers/food/snacks/hotchili, + /obj/item/weapon/reagent_containers/food/snacks/boiledegg, + /obj/item/weapon/reagent_containers/food/snacks/boiledegg, + /obj/item/weapon/reagent_containers/food/snacks/boiledegg + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chilied_eggs + +/datum/recipe/red_sun_special + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sausage, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + + ) + result = /obj/item/weapon/reagent_containers/food/snacks/red_sun_special + +/datum/recipe/hatchling_suprise + items = list( + /obj/item/weapon/reagent_containers/food/snacks/poachedegg, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon + + ) + result = /obj/item/weapon/reagent_containers/food/snacks/hatchling_suprise + +/datum/recipe/riztizkzi_sea + items = list( + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg + ) + reagents = list("blood" = 15) + result = /obj/item/weapon/reagent_containers/food/snacks/riztizkzi_sea + +/datum/recipe/father_breakfast + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sausage, + /obj/item/weapon/reagent_containers/food/snacks/omelette, + /obj/item/weapon/reagent_containers/food/snacks/meatsteak + ) + result = /obj/item/weapon/reagent_containers/food/snacks/father_breakfast + +/datum/recipe/stuffed_meatball + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + fruit = list("cabbage" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/stuffed_meatball + +/datum/recipe/egg_pancake + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/omelette + ) + result = /obj/item/weapon/reagent_containers/food/snacks/egg_pancake + +/datum/recipe/grilled_carp + items = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/carpmeat + ) + reagents = list("spacespice" = 1) + fruit = list("cabbage" = 1, "lime" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/grilled_carp + +/datum/recipe/bacon_stick + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/boiledegg + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bacon_stick + +/datum/recipe/cheese_cracker + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spreads/butter, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + reagents = list("spacespice" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/cheese_cracker + result_quantity = 4 + +/datum/recipe/bacon_and_eggs + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/friedegg + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bacon_and_eggs + +/datum/recipe/baconburger + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon + ) + result = /obj/item/weapon/reagent_containers/food/snacks/burger/bacon + +/datum/recipe/ntmuffin + items = list( + /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit, + /obj/item/weapon/reagent_containers/food/snacks/sausage, + /obj/item/weapon/reagent_containers/food/snacks/friedegg, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/nt_muffin + +/datum/recipe/fish_taco + fruit = list("chili" = 1, "lemon" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/carpmeat, + /obj/item/weapon/reagent_containers/food/snacks/tortilla + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fish_taco + +/datum/recipe/blt + fruit = list("tomato" = 1, "cabbage" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/slice/bread, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon + ) + result = /obj/item/weapon/reagent_containers/food/snacks/blt + +/datum/recipe/onionrings + fruit = list("onion" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + result = /obj/item/weapon/reagent_containers/food/snacks/onionrings + +/datum/recipe/berrymuffin + reagents = list("milk" = 5, "sugar" = 5) + reagent_mix = RECIPE_REAGENT_REPLACE + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + fruit = list("berries" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/muffin + +/datum/recipe/onionsoup + fruit = list("onion" = 1) + reagents = list("water" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/soup/onion + +/datum/recipe/porkbowl + reagents = list("water" = 5, "rice" = 10) + reagent_mix = RECIPE_REAGENT_REPLACE + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bacon + ) + result = /obj/item/weapon/reagent_containers/food/snacks/porkbowl + +/datum/recipe/sushi + fruit = list("cabbage" = 1) + reagents = list("rice" = 20) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi + +/datum/recipe/goulash + fruit = list("tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/spagetti + ) + result = /obj/item/weapon/reagent_containers/food/snacks/goulash + +/datum/recipe/donerkebab + fruit = list("tomato" = 1, "cabbage" = 1) + reagents = list("sodiumchloride" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meatsteak, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/donerkebab + +/datum/recipe/roastbeef + fruit = list("carrot" = 2, "potato" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/roastbeef + +/datum/recipe/reishicup + reagents = list("psilocybin" = 3, "sugar" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar + ) + result = /obj/item/weapon/reagent_containers/food/snacks/reishicup + +/datum/recipe/hotandsoursoup + fruit = list("cabbage" = 1, "mushroom" = 1) + reagents = list("sodiumchloride" = 2, "blackpepper" = 2, "water" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup + +/datum/recipe/kitsuneudon + reagents = list("egg" = 3) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spagetti, + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/kitsuneudon + +/datum/recipe/pillbugball + reagents = list("carbon" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bugball + +/datum/recipe/mammi + fruit = list("orange" = 1) + reagents = list("water" = 10, "flour" = 10, "milk" = 5, "sodiumchloride" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/mammi + +/datum/recipe/makaroni + reagents = list("flour" = 15, "milk" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat, + /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/makaroni + diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index 74511cac5b..f152645afb 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -8,7 +8,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/path_to_some_food */ - +// All of this shit needs to be gone through and reorganized into different recipes per machine - Rykka 7/16/2020 /datum/recipe/microwave/jellydonut items = list( /obj/item/weapon/reagent_containers/food/snacks/doughslice) diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm new file mode 100644 index 0000000000..1489ba72ad --- /dev/null +++ b/code/modules/food/recipes_oven.dm @@ -0,0 +1,581 @@ +/datum/recipe/ovenchips + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/rawsticks + ) + result = /obj/item/weapon/reagent_containers/food/snacks/ovenchips + + + +/datum/recipe/dionaroast + appliance = OVEN + fruit = list("apple" = 1) + reagents = list("pacid" = 5) //It dissolves the carapace. Still poisonous, though. + items = list(/obj/item/weapon/holder/diona) + result = /obj/item/weapon/reagent_containers/food/snacks/dionaroast + reagent_mix = RECIPE_REAGENT_REPLACE //No eating polyacid + + +/datum/recipe/ribplate //Putting this here for not seeing a roast section. + appliance = OVEN + reagents = list("honey" = 5, "spacespice" = 2, "blackpepper" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/meat) + reagent_mix = RECIPE_REAGENT_REPLACE + result = /obj/item/weapon/reagent_containers/food/snacks/ribplate + + + + +//Predesigned breads +//================================ +/datum/recipe/bread + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + reagents = list("sodiumchloride" = 1) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread + +/datum/recipe/baguette + appliance = OVEN + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/baguette + + +/datum/recipe/tofubread + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/tofu, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread + + +/datum/recipe/creamcheesebread + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread + +/datum/recipe/flatbread + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/flatbread + +/datum/recipe/meatbread + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread + +/datum/recipe/syntibread + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread + +/datum/recipe/xenomeatbread + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread + +/datum/recipe/bananabread + appliance = OVEN + fruit = list("banana" = 1) + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread + + +/datum/recipe/bun + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bun + +//Predesigned pies +//======================= + +/datum/recipe/meatpie + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/meat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/meatpie + +/datum/recipe/tofupie + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/tofu + ) + result = /obj/item/weapon/reagent_containers/food/snacks/tofupie + +/datum/recipe/xemeatpie + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/xenomeat + ) + result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie + +/datum/recipe/pie + appliance = OVEN + fruit = list("banana" = 1) + reagents = list("sugar" = 5) + items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) + result = /obj/item/weapon/reagent_containers/food/snacks/pie + +/datum/recipe/cherrypie + appliance = OVEN + fruit = list("cherries" = 1) + reagents = list("sugar" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cherrypie + + +/datum/recipe/amanita_pie + appliance = OVEN + reagents = list("amatoxin" = 5) + items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) + result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie + +/datum/recipe/plump_pie + appliance = OVEN + fruit = list("plumphelmet" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough) + result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie + + +/datum/recipe/pumpkinpie + appliance = OVEN + fruit = list("pumpkin" = 1) + reagents = list("milk" = 5, "sugar" = 5, "egg" = 3, "flour" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie + reagent_mix = RECIPE_REAGENT_REPLACE //We dont want raw egg in the result + +/datum/recipe/appletart + appliance = OVEN + fruit = list("goldapple" = 1) + reagents = list("sugar" = 5, "milk" = 5, "flour" = 10, "egg" = 3) + result = /obj/item/weapon/reagent_containers/food/snacks/appletart + reagent_mix = RECIPE_REAGENT_REPLACE + +/datum/recipe/keylimepie + appliance = OVEN + fruit = list("lime" = 2) + reagents = list("milk" = 5, "sugar" = 5, "egg" = 3, "flour" = 10) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/keylimepie + reagent_mix = RECIPE_REAGENT_REPLACE //No raw egg in finished product, protein after cooking causes magic meatballs otherwise + +/datum/recipe/quiche + appliance = OVEN + reagents = list("milk" = 5, "egg" = 9, "flour" = 10) + items = list(/obj/item/weapon/reagent_containers/food/snacks/cheesewedge) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/quiche + reagent_mix = RECIPE_REAGENT_REPLACE //No raw egg in finished product, protein after cooking causes magic meatballs otherwise + +//Baked sweets: +//--------------- + +/datum/recipe/cookie + appliance = OVEN + reagents = list("milk" = 10, "sugar" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cookie + result_quantity = 4 + reagent_mix = RECIPE_REAGENT_REPLACE + +/datum/recipe/fortunecookie + appliance = OVEN + reagents = list("sugar" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice, + /obj/item/weapon/paper + ) + result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie + make_food(var/obj/container as obj) + + var/obj/item/weapon/paper/paper + + //Fuck fortune cookies. This is a quick hack + //Duplicate the item searching code with a special case for paper + for (var/i in items) + var/obj/item/I = locate(i) in container + if (!paper && istype(I, /obj/item/weapon/paper)) + paper = I + continue + + if (I) + qdel(I) + + //Then store and null out the items list so it wont delete any paper + var/list/L = items.Copy() + items = null + . = ..(container) + + //Restore items list, so that making fortune cookies once doesnt break the oven + items = L + + + for (var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked in .) + paper.forceMove(being_cooked) + being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn + return + + + check_items(var/obj/container as obj) + . = ..() + if (.) + var/obj/item/weapon/paper/paper = locate() in container + if (!paper || !istype(paper)) + return 0 + if (!paper.info) + return 0 + return . + +/datum/recipe/poppypretzel + appliance = OVEN + fruit = list("poppy" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/dough) + result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel + result_quantity = 2 + + +/datum/recipe/cracker + appliance = OVEN + reagents = list("sodiumchloride" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cracker + +/datum/recipe/brownies + appliance = OVEN + reagents = list("browniemix" = 10, "egg" = 3) + reagent_mix = RECIPE_REAGENT_REPLACE //No egg or mix in final recipe + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/brownies + + +/datum/recipe/cosmicbrownies + appliance = OVEN + reagents = list("browniemix" = 10, "egg" = 3) + fruit = list("ambrosia" = 1) + reagent_mix = RECIPE_REAGENT_REPLACE //No egg or mix in final recipe + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cosmicbrownies + + + + +//Pizzas +//========================= +/datum/recipe/pizzamargherita + appliance = OVEN + fruit = list("tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + +/datum/recipe/meatpizza + appliance = OVEN + fruit = list("tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza + +/datum/recipe/syntipizza + appliance = OVEN + fruit = list("tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza + +/datum/recipe/mushroompizza + appliance = OVEN + fruit = list("mushroom" = 5, "tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + + reagent_mix = RECIPE_REAGENT_REPLACE //No vomit taste in finished product from chanterelles + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza + +/datum/recipe/vegetablepizza + appliance = OVEN + fruit = list("eggplant" = 1, "carrot" = 1, "corn" = 1, "tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza + +/datum/recipe/pineapplepizza + appliance = OVEN + fruit = list("tomato" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring, + /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple + +//Spicy +//================ +/datum/recipe/enchiladas + appliance = OVEN + fruit = list("chili" = 2, "corn" = 1) + items = list(/obj/item/weapon/reagent_containers/food/snacks/cutlet) + result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas + +/datum/recipe/monkeysdelight + appliance = OVEN + fruit = list("banana" = 1) + reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 10) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/monkeycube + ) + result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight + reagent_mix = RECIPE_REAGENT_REPLACE + + + + + +// Cakes. +//============ +/datum/recipe/cake + appliance = OVEN + reagents = list("milk" = 5, "flour" = 15, "sugar" = 15, "egg" = 9) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake + reagent_mix = RECIPE_REAGENT_REPLACE + +/datum/recipe/cake/carrot + appliance = OVEN + fruit = list("carrot" = 3) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake + +/datum/recipe/cake/cheese + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake + +/datum/recipe/cake/orange + appliance = OVEN + fruit = list("orange" = 1) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "orangejuice" = 3, "sugar" = 5) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake + +/datum/recipe/cake/lime + appliance = OVEN + fruit = list("lime" = 1) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "limejuice" = 3, "sugar" = 5) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake + +/datum/recipe/cake/lemon + appliance = OVEN + fruit = list("lemon" = 1) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "lemonjuice" = 3, "sugar" = 5) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake + +/datum/recipe/cake/chocolate + appliance = OVEN + items = list(/obj/item/weapon/reagent_containers/food/snacks/chocolatebar) + reagents = list("milk" = 5, "flour" = 15, "egg" = 9, "coco" = 4, "sugar" = 5) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake + +/datum/recipe/cake/birthday + appliance = OVEN + items = list(/obj/item/clothing/head/cakehat) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake + +/datum/recipe/cake/apple + appliance = OVEN + fruit = list("apple" = 2) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake + +/datum/recipe/cake/brain + appliance = OVEN + items = list(/obj/item/organ/internal/brain) + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake + +/datum/recipe/pancakes + appliance = OVEN + fruit = list("blueberries" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + ) + result = /obj/item/weapon/reagent_containers/food/snacks/pancakes + +/datum/recipe/lasagna + appliance = OVEN + fruit = list("tomato" = 2, "eggplant" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/cutlet + ) + result = /obj/item/weapon/reagent_containers/food/snacks/lasagna + reagent_mix = RECIPE_REAGENT_REPLACE + +/datum/recipe/honeybun + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/dough + ) + reagents = list("honey" = 5) + result = /obj/item/weapon/reagent_containers/food/snacks/honeybun + +/datum/recipe/enchiladas_new + appliance = OVEN + fruit = list("chili" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/cutlet, + /obj/item/weapon/reagent_containers/food/snacks/tortilla + ) + result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas + +//Bacon +/datum/recipe/bacon_oven + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/rawbacon, + /obj/item/weapon/reagent_containers/food/snacks/rawbacon, + /obj/item/weapon/reagent_containers/food/snacks/rawbacon, + /obj/item/weapon/reagent_containers/food/snacks/rawbacon, + /obj/item/weapon/reagent_containers/food/snacks/rawbacon, + /obj/item/weapon/reagent_containers/food/snacks/rawbacon, + /obj/item/weapon/reagent_containers/food/snacks/spreads + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bacon/oven + result_quantity = 6 + +/datum/recipe/meat_pocket + appliance = OVEN + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/meatball, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/meat_pocket + result_quantity = 2 + +/datum/recipe/bacon_flatbread + appliance = OVEN + fruit = list("tomato" = 2) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon, + /obj/item/weapon/reagent_containers/food/snacks/bacon + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bacon_flatbread + +/datum/recipe/truffle + appliance = OVEN + reagents = list("sugar" = 5, "cream" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar + ) + reagent_mix = RECIPE_REAGENT_REPLACE + result = /obj/item/weapon/reagent_containers/food/snacks/truffle + result_quantity = 4 + +/datum/recipe/croissant + appliance = OVEN + reagents = list("sodiumchloride" = 1, "water" = 5, "milk" = 5) + reagent_mix = RECIPE_REAGENT_REPLACE + items = list(/obj/item/weapon/reagent_containers/food/snacks/dough) + result = /obj/item/weapon/reagent_containers/food/snacks/croissant + +/datum/recipe/macncheese + appliance = OVEN + reagents = list("milk" = 5) + reagent_mix = RECIPE_REAGENT_REPLACE + items = list( + /obj/item/weapon/reagent_containers/food/snacks/spagetti, + /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + ) + result = /obj/item/weapon/reagent_containers/food/snacks/macncheese \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 467d7c37a9..5953c64ba2 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -396,3 +396,61 @@ /atom/proc/create_reagents(var/max_vol) reagents = new/datum/reagents(max_vol, src) + +// Aurora Cooking Port +/datum/reagents/proc/get_reagent(var/id) // Returns reference to reagent matching passed ID + for(var/datum/reagent/A in reagent_list) + if (A.id == id) + return A + + return null + +//Spreads the contents of this reagent holder all over the vicinity of the target turf. +/datum/reagents/proc/splash_area(var/turf/epicentre, var/range = 3, var/portion = 1.0, var/multiplier = 1, var/copy = 0) + var/list/things = dview(range, epicentre, INVISIBILITY_LIGHTING) + var/list/turfs = list() + for (var/turf/T in things) + turfs += T + if (!turfs.len) + return//Nowhere to splash to, somehow + //Create a temporary holder to hold all the amount that will be spread + var/datum/reagents/R = new /datum/reagents(total_volume * portion * multiplier) + trans_to_holder(R, total_volume * portion, multiplier, copy) + //The exact amount that will be given to each turf + var/turfportion = R.total_volume / turfs.len + for (var/turf/T in turfs) + var/datum/reagents/TR = new /datum/reagents(turfportion) + R.trans_to_holder(TR, turfportion, 1, 0) + TR.splash_turf(T) + qdel(R) + + +//Spreads the contents of this reagent holder all over the target turf, dividing among things in it. +//50% is divided between mobs, 20% between objects, and whatever is left on the turf itself +/datum/reagents/proc/splash_turf(var/turf/T, var/amount = null, var/multiplier = 1, var/copy = 0) + if (isnull(amount)) + amount = total_volume + else + amount = min(amount, total_volume) + if (amount <= 0) + return + var/list/mobs = list() + for (var/mob/M in T) + mobs += M + var/list/objs = list() + for (var/obj/O in T) + objs += O + if (objs.len) + var/objportion = (amount * 0.2) / objs.len + for (var/o in objs) + var/obj/O = o + trans_to(O, objportion, multiplier, copy) + amount = min(amount, total_volume) + if (mobs.len) + var/mobportion = (amount * 0.5) / mobs.len + for (var/m in mobs) + var/mob/M = m + trans_to(M, mobportion, multiplier, copy) + trans_to(T, total_volume, multiplier, copy) + if (total_volume <= 0) + qdel(src) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index d528f7bda5..ead914c3f0 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -50,6 +50,172 @@ M.adjust_nutrition(nutriment_factor * removed) // For hunger and fatness M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) +// Aurora Cooking Port Insertion Begin + +/* + Coatings are used in cooking. Dipping food items in a reagent container with a coating in it + allows it to be covered in that, which will add a masked overlay to the sprite. + Coatings have both a raw and a cooked image. Raw coating is generally unhealthy + Generally coatings are intended for deep frying foods +*/ +/datum/reagent/nutriment/coating + nutriment_factor = 6 //Less dense than the food itself, but coatings still add extra calories + var/messaged = 0 + var/icon_raw + var/icon_cooked + var/coated_adj = "coated" + var/cooked_name = "coating" + +/datum/reagent/nutriment/coating/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + + //We'll assume that the batter isnt going to be regurgitated and eaten by someone else. Only show this once + if (data["cooked"] != 1) + if (!messaged) + M << "Ugh, this raw [name] tastes disgusting." + nutriment_factor *= 0.5 + messaged = 1 + + //Raw coatings will sometimes cause vomiting + if (prob(1)) + M.vomit() + ..() + +/datum/reagent/nutriment/coating/initialize_data(var/newdata) // Called when the reagent is created. + ..() + if (!data) + data = list() + else + if (isnull(data["cooked"])) + data["cooked"] = 0 + return + data["cooked"] = 0 + if (holder && holder.my_atom && istype(holder.my_atom,/obj/item/weapon/reagent_containers/food/snacks)) + data["cooked"] = 1 + name = cooked_name + + //Batter which is part of objects at compiletime spawns in a cooked state + + +//Handles setting the temperature when oils are mixed +/datum/reagent/nutriment/coating/mix_data(var/newdata, var/newamount) + if (!data) + data = list() + + data["cooked"] = newdata["cooked"] + +/datum/reagent/nutriment/coating/batter + name = "batter mix" + cooked_name = "batter" + id = "batter" + color = "#f5f4e9" + reagent_state = LIQUID + icon_raw = "batter_raw" + icon_cooked = "batter_cooked" + coated_adj = "battered" + +/datum/reagent/nutriment/coating/beerbatter + name = "beer batter mix" + cooked_name = "beer batter" + id = "beerbatter" + color = "#f5f4e9" + reagent_state = LIQUID + icon_raw = "batter_raw" + icon_cooked = "batter_cooked" + coated_adj = "beer-battered" + +/datum/reagent/nutriment/coating/beerbatter/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + M.add_chemical_effect(CE_ALCOHOL, 0.02) //Very slightly alcoholic + +//========================= +//Fats +//========================= +/datum/reagent/nutriment/triglyceride + name = "triglyceride" + id = "triglyceride" + description = "More commonly known as fat, the third macronutrient, with over double the energy content of carbs and protein" + + reagent_state = SOLID + nutriment_factor = 27//The caloric ratio of carb/protein/fat is 4:4:9 + color = "#CCCCCC" + +/datum/reagent/nutriment/triglyceride/oil + //Having this base class incase we want to add more variants of oil + name = "Oil" + id = "oil" + description = "Oils are liquid fats." + reagent_state = LIQUID + color = "#c79705" + touch_met = 1.5 + var/lastburnmessage = 0 + +/datum/reagent/nutriment/triglyceride/oil/touch_turf(var/turf/simulated/T) + if(!istype(T)) + return + + if(volume >= 3) + T.wet_floor(2) + +/datum/reagent/nutriment/triglyceride/oil/initialize_data(var/newdata) // Called when the reagent is created. + ..() + if (!data) + data = list("temperature" = T20C) + +//Handles setting the temperature when oils are mixed +/datum/reagent/nutriment/triglyceride/oil/mix_data(var/newdata, var/newamount) + + if (!data) + data = list() + + var/ouramount = volume - newamount + if (ouramount <= 0 || !data["temperature"] || !volume) + //If we get here, then this reagent has just been created, just copy the temperature exactly + data["temperature"] = newdata["temperature"] + + else + //Our temperature is set to the mean of the two mixtures, taking volume into account + var/total = (data["temperature"] * ouramount) + (newdata["temperature"] * newamount) + data["temperature"] = total / volume + + return ..() + + +//Calculates a scaling factor for scalding damage, based on the temperature of the oil and creature's heat resistance +/datum/reagent/nutriment/triglyceride/oil/proc/heatdamage(var/mob/living/carbon/M) + var/threshold = 360//Human heatdamage threshold + var/datum/species/S = M.get_species(1) + if (S && istype(S)) + threshold = S.heat_level_1 + + //If temperature is too low to burn, return a factor of 0. no damage + if (data["temperature"] < threshold) + return 0 + + //Step = degrees above heat level 1 for 1.0 multiplier + var/step = 60 + if (S && istype(S)) + step = (S.heat_level_2 - S.heat_level_1)*1.5 + + . = data["temperature"] - threshold + . /= step + . = min(., 2.5)//Cap multiplier at 2.5 + +/datum/reagent/nutriment/triglyceride/oil/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) + var/dfactor = heatdamage(M) + if (dfactor) + M.take_organ_damage(0, removed * 1.5 * dfactor) + data["temperature"] -= (6 * removed) / (1 + volume*0.1)//Cools off as it burns you + if (lastburnmessage+100 < world.time ) + M << span("danger", "Searing hot oil burns you, wash it off quick!") + lastburnmessage = world.time + +/datum/reagent/nutriment/triglyceride/oil/corn + name = "Corn Oil" + id = "cornoil" + description = "An oil derived from various types of corn." + +// Aurora Cooking Port Insertion End + /datum/reagent/nutriment/glucose name = "Glucose" id = "glucose" @@ -85,6 +251,24 @@ return ..() +/datum/reagent/nutriment/protein/tofu + name = "tofu protein" + id = "tofu" + color = "#fdffa8" + taste_description = "tofu" + +/datum/reagent/nutriment/protein/seafood + name = "seafood protein" + id = "seafood" + color = "#f5f4e9" + taste_description = "fish" + +/datum/reagent/nutriment/protein/cheese // Also bad for skrell. + name = "cheese" + id = "cheese" + color = "#EDB91F" + taste_description = "cheese" + /datum/reagent/nutriment/protein/egg // Also bad for skrell. name = "egg yolk" id = "egg" @@ -256,7 +440,7 @@ reagent_state = LIQUID nutriment_factor = 1 color = "#801E28" - +/* TEMPORARY REMOVAL DUE TO AURORA COOKING PORT - WILL REVISIT LATER 7/16/2020 /datum/reagent/nutriment/cornoil name = "Corn Oil" id = "cornoil" @@ -306,7 +490,7 @@ if(volume >= 5) T.wet_floor() - +*/ /datum/reagent/nutriment/peanutbutter name = "Peanut Butter" id = "peanutbutter" @@ -430,6 +614,22 @@ reagent_state = LIQUID color = "#365E30" overdose = REAGENTS_OVERDOSE + +//SYNNONO MEME FOODS EXPANSION - Credit to Synnono + +/datum/reagent/spacespice + name = "Space Spice" + id = "spacespice" + description = "An exotic blend of spices for cooking. Definitely not worms." + reagent_state = SOLID + color = "#e08702" + +/datum/reagent/browniemix + name = "Brownie Mix" + id = "browniemix" + description = "A dry mix for making delicious brownies." + reagent_state = SOLID + color = "#441a03" /datum/reagent/frostoil name = "Frost Oil" @@ -475,6 +675,12 @@ /datum/reagent/capsaicin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return + if(alien == IS_ALRAUNE) // VOREStation Edit: It wouldn't affect plants that much. + if(prob(5)) + M << "You feel a pleasant sensation in your mouth." + to_chat(M, span("rose","You feel a pleasant sensation in your mouth.")) + M.bodytemperature += rand(10, 25) + return if(ishuman(M)) var/mob/living/carbon/human/H = M if(!H.can_feel_pain()) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index b2591d992f..8074d45972 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -2619,3 +2619,52 @@ required_reagents = list("radium" = 1, "spidertoxin" = 1, "sifsap" = 1) catalysts = list("sifsap" = 10) result_amount = 2 + +/* +==================== + Aurora Food +==================== +*/ +/datum/chemical_reaction/dough + inhibitors = list("water" = 1, "beer" = 1) //To prevent it messing with batter recipes + +/datum/chemical_reaction/coating/batter + name = "Batter" + id = "batter" + result = "batter" + required_reagents = list("egg" = 3, "flour" = 10, "water" = 5, "sodiumchloride" = 2) + result_amount = 20 + +/datum/chemical_reaction/coating/beerbatter + name = "Beer Batter" + id = "beerbatter" + result = "beerbatter" + required_reagents = list("egg" = 3, "flour" = 10, "beer" = 5, "sodiumchloride" = 2) + result_amount = 20 + +/datum/chemical_reaction/browniemix + name = "Brownie Mix" + id = "browniemix" + result = "browniemix" + required_reagents = list("flour" = 5, "coco" = 5, "sugar" = 5) + result_amount = 15 + +/datum/chemical_reaction/butter + name = "Butter" + id = "butter" + result = null + required_reagents = list("cream" = 20, "sodiumchloride" = 1) + result_amount = 1 + +/datum/chemical_reaction/butter/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/spreads/butter(location) + return + +/datum/chemical_reaction/browniemix + name = "Brownie Mix" + id = "browniemix" + result = "browniemix" + required_reagents = list("flour" = 5, "coco" = 5, "sugar" = 5) + result_amount = 15 \ No newline at end of file diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index ee24c5b498..742f89734c 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -413,3 +413,27 @@ /obj/structure/reagent_dispensers/acid/Initialize() . = ..() reagents.add_reagent("sacid", 1000) + +//Cooking oil refill tank +/obj/structure/reagent_dispensers/cookingoil + name = "cooking oil tank" + desc = "A fifty-litre tank of commercial-grade corn oil, intended for use in large scale deep fryers. Store in a cool, dark place" + icon = 'icons/obj/objects.dmi' + icon_state = "oiltank" + amount_per_transfer_from_this = 120 + +/obj/structure/reagent_dispensers/cookingoil/New() + ..() + reagents.add_reagent("cornoil",5000) + +/obj/structure/reagent_dispensers/cookingoil/bullet_act(var/obj/item/projectile/Proj) + if(Proj.get_structure_damage()) + explode() + +/obj/structure/reagent_dispensers/cookingoil/ex_act() + explode() + +/obj/structure/reagent_dispensers/cookingoil/proc/explode() + reagents.splash_area(get_turf(src), 3) + visible_message(span("danger", "The [src] bursts open, spreading oil all over the area.")) + qdel(src) diff --git a/sound/machines/hatch_open.ogg b/sound/machines/hatch_open.ogg new file mode 100644 index 0000000000..142248416c Binary files /dev/null and b/sound/machines/hatch_open.ogg differ diff --git a/vorestation.dme b/vorestation.dme index be1efea2c3..3cfe5edcdc 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -299,7 +299,6 @@ #include "code\datums\organs.dm" #include "code\datums\position_point_vector.dm" #include "code\datums\progressbar.dm" -#include "code\datums\recipe.dm" #include "code\datums\riding.dm" #include "code\datums\soul_link.dm" #include "code\datums\sun.dm" @@ -2063,9 +2062,12 @@ #include "code\modules\flufftext\look_up.dm" #include "code\modules\flufftext\TextFilters.dm" #include "code\modules\food\food.dm" +#include "code\modules\food\recipe.dm" #include "code\modules\food\recipe_dump.dm" +#include "code\modules\food\recipes_fryer.dm" #include "code\modules\food\recipes_microwave.dm" #include "code\modules\food\recipes_microwave_vr.dm" +#include "code\modules\food\recipes_oven.dm" #include "code\modules\food\drinkingglass\drinkingglass.dm" #include "code\modules\food\drinkingglass\extras.dm" #include "code\modules\food\drinkingglass\glass_boxes.dm"