From 0a3ddc886cdec6114bccd133850c0d2f67bfbe09 Mon Sep 17 00:00:00 2001 From: Razharas Date: Mon, 9 May 2016 19:14:48 +0300 Subject: [PATCH] Turns tablecrafting into personal crafting (#17341) * Converts tablecrafting to datums * Adds crafting.dm Adds crafting.dm * Fix merge conflicts Fix merge conflicts * Fixes dme * Fixes returns Fixes returns * Only check hands and remove old paths Only check hands and remove old paths * Recipe fixes Recipe fixes * Removed action button Removed action button Added small ui button to inventory near the intent wheel Removed debug href_list is not longer /list * Added adjucent checks Added adjucent checks * Snacks now get chems from parts Snacks now get chems from parts * Complex food fuckery fixed Complex food fuckery fixed * Fixes old recipe Fixes old recipe * Fix to infinite loops in reagent extraction Fix to infinite loops in reagent extraction It was finding old empty containers and tries to extract from them * Fixes hands not checking Fixes hands not checking * Fixes reagents fucking up Fixes reagents fucking up * Even more reagent fuck ups fixed and comments Even more reagent fuck ups fixed and comments * Fixes all the shit i could find Fixes all the shit i could find * Removes debug and mechs Removes debug and mechs * Argument renaming Argument renaming * Fixes all argument names Fixes all argument names * Final fix of arguments Final fix of arguments --- code/__HELPERS/global_lists.dm | 2 +- code/_globalvars/lists/objects.dm | 2 +- code/_onclick/hud/_defines.dm | 1 + code/_onclick/hud/drones.dm | 4 + code/_onclick/hud/human.dm | 7 +- code/_onclick/hud/screen_objects.dm | 9 + code/datums/action.dm | 2 - code/game/atoms.dm | 15 +- code/game/machinery/machinery.dm | 4 +- code/game/machinery/syndicatebomb.dm | 3 +- code/game/mecha/combat/combat.dm | 1 + code/game/objects/items/weapons/defib.dm | 3 +- .../objects/items/weapons/flamethrower.dm | 3 +- .../items/weapons/grenades/ghettobomb.dm | 3 +- .../objects/items/weapons/pneumaticCannon.dm | 2 +- code/game/objects/items/weapons/signs.dm | 2 +- code/game/objects/items/weapons/twohanded.dm | 3 +- code/modules/crafting/craft.dm | 345 ++++++++++++++++++ code/modules/crafting/recipes.dm | 82 ++--- code/modules/crafting/table.dm | 295 --------------- .../food&drinks/drinks/drinks/bottle.dm | 3 +- code/modules/food&drinks/food/snacks.dm | 14 +- .../food&drinks/food/snacks_burgers.dm | 5 +- .../food&drinks/recipes/food_mixtures.dm | 2 + .../recipes/tablecraft/recipes_bread.dm | 14 +- .../recipes/tablecraft/recipes_burger.dm | 54 +-- .../recipes/tablecraft/recipes_cake.dm | 22 +- .../recipes/tablecraft/recipes_egg.dm | 8 +- .../recipes/tablecraft/recipes_meat.dm | 30 +- .../recipes/tablecraft/recipes_misc.dm | 54 +-- .../recipes/tablecraft/recipes_pastry.dm | 54 +-- .../recipes/tablecraft/recipes_pie.dm | 32 +- .../recipes/tablecraft/recipes_pizza.dm | 14 +- .../recipes/tablecraft/recipes_salad.dm | 22 +- .../recipes/tablecraft/recipes_sandwich.dm | 12 +- .../recipes/tablecraft/recipes_soup.dm | 40 +- .../recipes/tablecraft/recipes_spaghetti.dm | 12 +- code/modules/holiday/easter.dm | 10 +- .../mining/lavaland/necropolis_chests.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 5 + .../mob/living/carbon/human/human_defines.dm | 1 + code/modules/mob/living/living.dm | 3 + .../simple_animal/friendly/drone/_drone.dm | 6 +- code/modules/paperwork/photography.dm | 3 +- code/modules/projectiles/gun.dm | 3 +- code/modules/reagents/chemistry/holder.dm | 3 + icons/mob/screen_midnight.dmi | Bin 25456 -> 25609 bytes icons/mob/screen_operative.dmi | Bin 28311 -> 28451 bytes icons/mob/screen_plasmafire.dmi | Bin 27589 -> 27735 bytes icons/mob/screen_retro.dmi | Bin 10808 -> 10914 bytes icons/mob/screen_slimecore.dmi | Bin 26064 -> 26203 bytes tgstation.dme | 2 +- 52 files changed, 666 insertions(+), 554 deletions(-) create mode 100644 code/modules/crafting/craft.dm delete mode 100644 code/modules/crafting/table.dm diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 436b4c76c78..7fedc48428d 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -38,7 +38,7 @@ for(var/path in (subtypesof(/datum/surgery))) surgeries_list += new path() - init_subtypes(/datum/table_recipe, table_recipes) + init_subtypes(/datum/crafting_recipe, crafting_recipes) /* // Uncomment to debug chemical reaction list. /client/verb/debug_chemical_list() diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 476a1d36ba9..2be17154cd3 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -13,7 +13,7 @@ var/global/list/nuke_tiles = list() //list of all turfs that turn to animate var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path. -var/global/list/table_recipes = list() //list of all table craft recipes +var/global/list/crafting_recipes = list() //list of all table craft recipes var/global/list/rcd_list = list() //list of Rapid Construction Devices. var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed. var/global/list/tracked_implants = list() //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented... diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 29eea4900da..00e6e610f74 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -23,6 +23,7 @@ //Middle left indicators #define ui_lingchemdisplay "WEST:6,CENTER-1:15" #define ui_lingstingdisplay "WEST:6,CENTER-3:11" +#define ui_crafting "12:-10,1:5" //Lower center, persistant menu #define ui_sstore1 "CENTER-5:10,SOUTH:5" diff --git a/code/_onclick/hud/drones.dm b/code/_onclick/hud/drones.dm index de79a28c5a2..631686b089b 100644 --- a/code/_onclick/hud/drones.dm +++ b/code/_onclick/hud/drones.dm @@ -64,6 +64,10 @@ zone_select.icon = ui_style zone_select.update_icon(mymob) + using = new /obj/screen/inventory/craft + using.icon = ui_style + static_inventory += using + for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory)) if(inv.slot_id) inv.hud = src diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index e7baed52506..0632c5ff809 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -41,9 +41,6 @@ icon_state = "power_display" screen_loc = ui_lingchemdisplay - - - /mob/living/carbon/human/create_mob_hud() if(client && !hud_used) hud_used = new /datum/hud/human(src, ui_style2icon(client.prefs.UI_style)) @@ -55,6 +52,10 @@ var/obj/screen/using var/obj/screen/inventory/inv_box + using = new /obj/screen/inventory/craft + using.icon = ui_style + static_inventory += using + using = new /obj/screen/act_intent() using.icon_state = mymob.a_intent static_inventory += using diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index ef8ecf90a8b..72e5ae3c0f9 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -46,6 +46,15 @@ M.swap_hand() return 1 +/obj/screen/inventory/craft + name = "crafting menu" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "craft" + screen_loc = ui_crafting + +/obj/screen/inventory/craft/Click() + var/mob/living/M = usr + M.OpenCraftingMenu() /obj/screen/inventory var/slot_id // The indentifier for the slot. It has nothing to do with ID cards. diff --git a/code/datums/action.dm b/code/datums/action.dm index 677ccc18254..5aa5ced5756 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -365,8 +365,6 @@ /datum/action/innate/proc/Deactivate() return - - //Preset for action that call specific procs (consider innate). /datum/action/generic check_flags = 0 diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 61366698333..99e5a8205b7 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -66,8 +66,19 @@ hulk.do_attack_animation(src) return -/atom/proc/CheckParts() - return +/atom/proc/CheckParts(list/parts_list) + for(var/A in parts_list) + if(istype(A, /datum/reagent)) + if(!reagents) + reagents = new() + reagents.reagent_list.Add(A) + reagents.conditional_update() + else if(istype(A, /atom/movable)) + var/atom/movable/M = A + if(istype(M.loc, /mob/living)) + var/mob/living/L = M.loc + L.unEquip(M) + M.loc = src /atom/proc/assume_air(datum/gas_mixture/giver) qdel(giver) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 77028a43d1a..d3e9e6727dc 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -323,9 +323,9 @@ Class Procs: add_fingerprint(user) return 0 -/obj/machinery/CheckParts() +/obj/machinery/CheckParts(list/parts_list) + ..() RefreshParts() - return /obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames. return diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 79bc642c579..a947c472511 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -413,7 +413,8 @@ return ..() -/obj/item/weapon/bombcore/chemical/CheckParts() +/obj/item/weapon/bombcore/chemical/CheckParts(list/parts_list) + ..() // Using different grenade casings, causes the payload to have different properties. var/obj/item/weapon/stock_parts/matter_bin/MB = locate(/obj/item/weapon/stock_parts/matter_bin) in src if(MB) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 17aa0d4288b..7bb81bc54e0 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -4,6 +4,7 @@ damage_absorption = list("brute"=0.7,"fire"=1,"bullet"=0.7,"laser"=0.85,"energy"=1,"bomb"=0.8) /obj/mecha/combat/CheckParts(atom/holder) + ..() var/obj/item/weapon/stock_parts/capacitor/C = locate() in holder var/obj/item/weapon/stock_parts/scanning_module/SM = locate() in holder step_energy_drain = 20 - (5 * SM.rating) //10 is normal, so on lowest part its worse, on second its ok and on higher its real good up to 0 on best diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 5517716c4bf..c04ead47e26 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -65,7 +65,8 @@ ratio = Ceiling(ratio*4) * 25 overlays += "[initial(icon_state)]-charge[ratio]" -/obj/item/weapon/defibrillator/CheckParts() +/obj/item/weapon/defibrillator/CheckParts(list/parts_list) + ..() bcell = locate(/obj/item/weapon/stock_parts/cell) in contents update_icon() diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index fdfd0f7c4d6..218f2fba57c 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -170,7 +170,8 @@ update_icon() return -/obj/item/weapon/flamethrower/CheckParts() +/obj/item/weapon/flamethrower/CheckParts(list/parts_list) + ..() weldtool = locate(/obj/item/weapon/weldingtool) in contents igniter = locate(/obj/item/device/assembly/igniter) in contents weldtool.status = 0 diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 8339ed98c7c..e8ae2498982 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -29,7 +29,8 @@ else range = pick(2,2,2,3,3,3,4) -/obj/item/weapon/grenade/iedcasing/CheckParts() +/obj/item/weapon/grenade/iedcasing/CheckParts(list/parts_list) + ..() var/obj/item/weapon/reagent_containers/food/drinks/soda_cans/can = locate() in contents if(can) var/muh_layer = can.layer diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 3937889f8c1..9823294dcad 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -123,7 +123,7 @@ maxWeightClass = 7 gasPerThrow = 5 -/datum/table_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but +/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but name = "Pneumatic Cannon" result = /obj/item/weapon/pneumatic_cannon/ghetto tools = list(/obj/item/weapon/weldingtool, diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm index 4454169fdd3..622f4225166 100644 --- a/code/game/objects/items/weapons/signs.dm +++ b/code/game/objects/items/weapons/signs.dm @@ -29,7 +29,7 @@ user.visible_message("[user] waves around blank sign.") user.changeNext_move(CLICK_CD_MELEE) -/datum/table_recipe/picket_sign +/datum/crafting_recipe/picket_sign name = "Picket Sign" result = /obj/item/weapon/picket_sign reqs = list(/obj/item/stack/rods = 1, diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 7c0860f9506..7298345b61b 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -339,7 +339,8 @@ if(input) src.war_cry = input -/obj/item/weapon/twohanded/spear/CheckParts() +/obj/item/weapon/twohanded/spear/CheckParts(list/parts_list) + ..() if(explosive) explosive.loc = get_turf(src.loc) explosive = null diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm new file mode 100644 index 00000000000..dc4b405d5e6 --- /dev/null +++ b/code/modules/crafting/craft.dm @@ -0,0 +1,345 @@ +/datum/personal_crafting + var/busy + var/viewing_category = 1 //typical powergamer starting on the Weapons tab + var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL) + var/datum/action/innate/crafting/button + + + + + +/* This is what procs do: + get_environment - gets a list of things accessable for crafting by user + get_surroundings - takes a list of things and makes a list of key-types to values-amounts of said type in the list + check_contents - takes a recipe and a key-type list and checks if said recipe can be done with available stuff + check_tools - takes recipe, a key-type list, and a user and checks if there are enough tools to do the stuff, checks bugs one level deep + construct_item - takes a recipe and a user, call all the checking procs, calls do_after, checks all the things again, calls del_reqs, creates result, calls CheckParts of said result with argument being list returned by deel_reqs + del_reqs - takes recipe and a user, loops over the recipes reqs var and tries to find everything in the list make by get_environment and delete it/add to parts list, then returns the said list +*/ + + + + +/datum/personal_crafting/proc/check_contents(datum/crafting_recipe/R, list/contents) + main_loop: + for(var/A in R.reqs) + var/needed_amount = R.reqs[A] + for(var/B in contents) + if(ispath(B, A)) + if(contents[B] >= R.reqs[A]) + continue main_loop + else + needed_amount -= contents[B] + if(needed_amount <= 0) + continue main_loop + else + continue + return 0 + for(var/A in R.chem_catalysts) + if(contents[A] < R.chem_catalysts[A]) + return 0 + return 1 + +/datum/personal_crafting/proc/get_environment(mob/user) + . = list() + . += user.r_hand + . += user.l_hand + if(!istype(user.loc, /turf)) + return + var/list/L = block(get_step(user, SOUTHWEST), get_step(user, NORTHEAST)) + for(var/A in L) + var/turf/T = A + if(T.Adjacent(user)) + . += T.contents + + +/datum/personal_crafting/proc/get_surroundings(mob/user) + . = list() + for(var/obj/item/I in get_environment(user)) + if(istype(I, /obj/item/stack)) + var/obj/item/stack/S = I + .[I.type] += S.amount + else + if(istype(I, /obj/item/weapon/reagent_containers)) + var/obj/item/weapon/reagent_containers/RC = I + if(RC.flags & OPENCONTAINER) + for(var/datum/reagent/A in RC.reagents.reagent_list) + .[A.type] += A.volume + .[I.type] += 1 + +/datum/personal_crafting/proc/check_tools(mob/user, datum/crafting_recipe/R, list/contents) + if(!R.tools.len) + return 1 + var/list/possible_tools = list() + for(var/obj/item/I in user.contents) + if(istype(I, /obj/item/weapon/storage)) + for(var/obj/item/SI in I.contents) + possible_tools += SI.type + possible_tools += I.type + possible_tools += contents + + main_loop: + for(var/A in R.tools) + for(var/I in possible_tools) + if(ispath(I,A)) + continue main_loop + return 0 + return 1 + +/datum/personal_crafting/proc/construct_item(mob/user, datum/crafting_recipe/R) + for(var/A in R.parts) + var/list/contents = get_surroundings(user) + var/send_feedback = 1 + if(check_contents(R, contents)) + if(check_tools(user, R, contents)) + if(do_after(user, R.time, target = user)) + contents = get_surroundings(user) + if(!check_contents(R, contents)) + return ", missing component." + if(!check_tools(user, R, contents)) + return ", missing tool." + var/list/parts = del_reqs(R, user) + var/atom/movable/I = new R.result (get_turf(user.loc)) + I.CheckParts(parts, R) + if(send_feedback) + feedback_add_details("object_crafted","[I.type]") + return 0 + return "." + return ", missing tool." + return ", missing component." + + +/*Del reqs works like this: + + Loop over reqs var of the recipe + Set var amt to the value current cycle req is pointing to, its amount of type we need to delete + Get var/surroundings list of things accessable to crafting by get_environment() + Check the type of the current cycle req + If its reagent then do a while loop, inside it try to locate() reagent containers, inside such containers try to locate needed reagent, if there isnt remove thing from surroundings + If there is enough reagent in the search result then delete the needed amount, create the same type of reagent with the same data var and put it into deletion list + If there isnt enough take all of that reagent from the container, put into deletion list, substract the amt var by the volume of reagent, remove the container from surroundings list and keep searching + While doing above stuff check deletion list if it already has such reagnet, if yes merge instead of adding second one + If its stack check if it has enough amount + If yes create new stack with the needed amount and put in into deletion list, substract taken amount from the stack + If no put all of the stack in the deletion list, substract its amount from amt and keep searching + While doing above stuff check deletion list if it already has such stack type, if yes try to merge them instead of adding new one + If its anything else just locate() in in the list in a while loop, each find --s the amt var and puts the found stuff in deletion loop + + Then do a loop over parts var of the recipe + Do similar stuff to what we have done above, but now in deletion list, until the parts conditions are satisfied keep taking from the deletion list and putting it into parts list for return + + After its done loop over deletion list and delete all the shit that wasnt taken by parts loop + + del_reqs return the list of parts resulting object will recieve as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already +*/ + +/datum/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, mob/user) + var/list/surroundings + var/list/Deletion = list() + . = list() + var/data + var/amt + main_loop: + for(var/A in R.reqs) + amt = R.reqs[A] + surroundings = get_environment(user) + surroundings -= Deletion + if(ispath(A, /datum/reagent)) + var/datum/reagent/RG = new A + var/datum/reagent/RGNT + while(amt > 0) + var/obj/item/weapon/reagent_containers/RC = locate() in surroundings + RG = RC.reagents.get_reagent(A) + if(RG) + if(!locate(RG.type) in Deletion) + Deletion += new RG.type() + if(RG.volume > amt) + RG.volume -= amt + data = RG.data + RC.reagents.conditional_update(RC) + RG = locate(RG.type) in Deletion + RG.volume = amt + RG.data += data + continue main_loop + else + surroundings -= RC + amt -= RG.volume + RC.reagents.reagent_list -= RG + RC.reagents.conditional_update(RC) + RGNT = locate(RG.type) in Deletion + RGNT.volume += RG.volume + RGNT.data += RG.data + qdel(RG) + else + surroundings -= RC + else if(ispath(A, /obj/item/stack)) + var/obj/item/stack/S + var/obj/item/stack/SD + while(amt > 0) + S = locate(A) in surroundings + if(S.amount >= amt) + if(!locate(S.type) in Deletion) + SD = new S.type() + Deletion += SD + S.use(amt) + SD = locate(S.type) in Deletion + SD.amount += amt + continue main_loop + else + amt -= S.amount + if(!locate(S.type) in Deletion) + Deletion += S + else + data = S.amount + S = locate(S.type) in Deletion + S.add(data) + surroundings -= S + else + var/atom/movable/I + while(amt > 0) + I = locate(A) in surroundings + Deletion += I + surroundings -= I + amt-- + var/list/partlist = list(R.parts.len) + for(var/M in R.parts) + partlist[M] = R.parts[M] + for(var/A in R.parts) + if(istype(A, /datum/reagent)) + var/datum/reagent/RG = locate(A) in Deletion + if(RG.volume > partlist[A]) + RG.volume = partlist[A] + . += RG + Deletion -= RG + continue + else if(istype(A, /obj/item/stack)) + var/obj/item/stack/ST = locate(A) in Deletion + if(ST.amount > partlist[A]) + ST.amount = partlist[A] + . += ST + Deletion -= ST + continue + else + while(partlist[A] > 0) + var/atom/movable/AM = locate(A) in Deletion + . += AM + Deletion -= AM + partlist[A] -= 1 + while(Deletion.len) + var/DL = Deletion[Deletion.len] + Deletion.Cut(Deletion.len) + qdel(DL) + +/datum/personal_crafting/proc/craft(mob/user) + if(user.incapacitated() || user.lying || istype(user.loc, /obj/mecha)) + return + var/list/surroundings = get_surroundings(user) + var/dat = "

Crafting menu

" + if(busy) + dat += "
" + dat += "Crafting in progress...
" + else + dat += "<--" + dat += " [categories[prev_cat()]] |" + dat += " [categories[viewing_category]] " + dat += "| [categories[next_cat()]] " + dat += "-->

" + + dat += "
" + + //Filter the recipes we can craft to the top + var/list/can_craft = list() + var/list/cant_craft = list() + for(var/datum/crafting_recipe/R in crafting_recipes) + if(R.category != categories[viewing_category]) + continue + if(check_contents(R, surroundings)) + can_craft += R + else + cant_craft += R + + for(var/datum/crafting_recipe/R in can_craft) + dat += build_recipe_text(R, surroundings) + for(var/datum/crafting_recipe/R in cant_craft) + dat += build_recipe_text(R, surroundings) + + + dat += "
" + + var/datum/browser/popup = new(user, "crafting", "Crafting", 500, 500) + popup.set_content(dat) + popup.open() + return + +/datum/personal_crafting/Topic(href, href_list) + if(usr.stat || usr.lying) + return + if(href_list["make"]) + var/datum/crafting_recipe/TR = locate(href_list["make"]) + busy = 1 + craft(usr) + var/fail_msg = construct_item(usr, TR) + if(!fail_msg) + usr << "[TR.name] constructed." + else + usr << "Construction failed[fail_msg]" + busy = 0 + craft(usr) + if(href_list["forwardCat"]) + viewing_category = next_cat() + usr << "Category is now [categories[viewing_category]]." + craft(usr) + if(href_list["backwardCat"]) + viewing_category = prev_cat() + usr << "Category is now [categories[viewing_category]]." + craft(usr) + +//Next works nicely with modular arithmetic +/datum/personal_crafting/proc/next_cat() + . = viewing_category % categories.len + 1 + +//Previous can go fuck itself +/datum/personal_crafting/proc/prev_cat() + if(viewing_category == categories.len) + . = viewing_category-1 + else + . = viewing_category % categories.len - 1 + if(. <= 0) + . = categories.len + +/datum/personal_crafting/proc/build_recipe_text(datum/crafting_recipe/R, list/contents) + . = "" + var/name_text = "" + var/req_text = "" + var/tool_text = "" + var/catalist_text = "" + if(check_contents(R, contents)) + name_text ="[R.name]" + + else + name_text = "[R.name]" + + if(name_text) + for(var/A in R.reqs) + if(ispath(A, /obj)) + var/obj/O = A + req_text += " [R.reqs[A]] [initial(O.name)]" + else if(ispath(A, /datum/reagent)) + var/datum/reagent/RE = A + req_text += " [R.reqs[A]] [initial(RE.name)]" + + if(R.chem_catalysts.len) + catalist_text += ", Catalysts:" + for(var/C in R.chem_catalysts) + if(ispath(C, /datum/reagent)) + var/datum/reagent/RE = C + catalist_text += " [R.chem_catalysts[C]] [initial(RE.name)]" + + if(R.tools.len) + tool_text += ", Tools:" + for(var/O in R.tools) + if(ispath(O, /obj)) + var/obj/T = O + tool_text += " [R.tools[O]] [initial(T.name)]" + + . = "[name_text][req_text][tool_text][catalist_text]
" \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 2c68ecb4ff9..50f9bb46455 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -1,5 +1,5 @@ -/datum/table_recipe +/datum/crafting_recipe var/name = "" //in-game display name var/reqs[] = list() //type paths of items consumed associated with how many are needed var/result //type path of item resulting from this craft @@ -10,7 +10,7 @@ var/category = CAT_NONE //where it shows up in the crafting UI -/datum/table_recipe/pin_removal +/datum/crafting_recipe/pin_removal name = "Pin Removal" result = /obj/item/weapon/gun reqs = list(/obj/item/weapon/gun = 1) @@ -19,7 +19,7 @@ time = 50 category = CAT_WEAPON -/datum/table_recipe/IED +/datum/crafting_recipe/IED name = "IED" result = /obj/item/weapon/grenade/iedcasing reqs = list(/datum/reagent/fuel = 50, @@ -30,8 +30,8 @@ time = 15 category = CAT_WEAPON -/datum/table_recipe/lance - name = "explosive lance" +/datum/crafting_recipe/lance + name = "explosive lance (grenade)" result = /obj/item/weapon/twohanded/spear reqs = list(/obj/item/weapon/twohanded/spear = 1, /obj/item/weapon/grenade = 1) @@ -39,8 +39,7 @@ time = 15 category = CAT_WEAPON - -/datum/table_recipe/molotov +/datum/crafting_recipe/molotov name = "Molotov" result = /obj/item/weapon/reagent_containers/food/drinks/bottle/molotov reqs = list(/obj/item/weapon/reagent_containers/glass/rag = 1, @@ -49,7 +48,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/stunprod +/datum/crafting_recipe/stunprod name = "Stunprod" result = /obj/item/weapon/melee/baton/cattleprod reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1, @@ -58,7 +57,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/teleprod +/datum/crafting_recipe/teleprod name = "Teleprod" result = /obj/item/weapon/melee/baton/cattleprod/teleprod reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1, @@ -68,7 +67,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/bola +/datum/crafting_recipe/bola name = "Bola" result = /obj/item/weapon/restraints/legcuffs/bola reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1, @@ -76,7 +75,7 @@ time = 20//15 faster than crafting them by hand! category= CAT_WEAPON -/datum/table_recipe/tailclub +/datum/crafting_recipe/tailclub name = "Tail Club" result = /obj/item/weapon/tailclub reqs = list(/obj/item/severedtail = 1, @@ -84,7 +83,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/tailwhip +/datum/crafting_recipe/tailwhip name = "Liz O' Nine Tails" result = /obj/item/weapon/melee/chainofcommand/tailwhip reqs = list(/obj/item/severedtail = 1, @@ -92,7 +91,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/ed209 +/datum/crafting_recipe/ed209 name = "ED209" result = /mob/living/simple_animal/bot/ed209 reqs = list(/obj/item/robot_parts/robot_suit = 1, @@ -110,7 +109,7 @@ time = 60 category = CAT_ROBOT -/datum/table_recipe/secbot +/datum/crafting_recipe/secbot name = "Secbot" result = /mob/living/simple_animal/bot/secbot reqs = list(/obj/item/device/assembly/signaler = 1, @@ -122,7 +121,7 @@ time = 60 category = CAT_ROBOT -/datum/table_recipe/cleanbot +/datum/crafting_recipe/cleanbot name = "Cleanbot" result = /mob/living/simple_animal/bot/cleanbot reqs = list(/obj/item/weapon/reagent_containers/glass/bucket = 1, @@ -131,7 +130,7 @@ time = 40 category = CAT_ROBOT -/datum/table_recipe/floorbot +/datum/crafting_recipe/floorbot name = "Floorbot" result = /mob/living/simple_animal/bot/floorbot reqs = list(/obj/item/weapon/storage/toolbox/mechanical = 1, @@ -141,7 +140,7 @@ time = 40 category = CAT_ROBOT -/datum/table_recipe/medbot +/datum/crafting_recipe/medbot name = "Medbot" result = /mob/living/simple_animal/bot/medbot reqs = list(/obj/item/device/healthanalyzer = 1, @@ -151,7 +150,7 @@ time = 40 category = CAT_ROBOT -/datum/table_recipe/flamethrower +/datum/crafting_recipe/flamethrower name = "Flamethrower" result = /obj/item/weapon/flamethrower reqs = list(/obj/item/weapon/weldingtool = 1, @@ -163,7 +162,7 @@ time = 10 category = CAT_WEAPON -/datum/table_recipe/meteorshot +/datum/crafting_recipe/meteorshot name = "Meteorshot Shell" result = /obj/item/ammo_casing/shotgun/meteorshot reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -173,7 +172,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/pulseslug +/datum/crafting_recipe/pulseslug name = "Pulse Slug Shell" result = /obj/item/ammo_casing/shotgun/pulseslug reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -183,7 +182,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/dragonsbreath +/datum/crafting_recipe/dragonsbreath name = "Dragonsbreath Shell" result = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -192,7 +191,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/frag12 +/datum/crafting_recipe/frag12 name = "FRAG-12 Shell" result = /obj/item/ammo_casing/shotgun/frag12 reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -203,7 +202,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/ionslug +/datum/crafting_recipe/ionslug name = "Ion Scatter Shell" result = /obj/item/ammo_casing/shotgun/ion reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -213,7 +212,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/improvisedslug +/datum/crafting_recipe/improvisedslug name = "Improvised Shotgun Shell" result = /obj/item/ammo_casing/shotgun/improvised reqs = list(/obj/item/weapon/grenade/chem_grenade = 1, @@ -224,7 +223,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/improvisedslugoverload +/datum/crafting_recipe/improvisedslugoverload name = "Overload Improvised Shell" result = /obj/item/ammo_casing/shotgun/improvised/overload reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1, @@ -234,7 +233,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/laserslug +/datum/crafting_recipe/laserslug name = "Laser Slug Shell" result = /obj/item/ammo_casing/shotgun/laserslug reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -244,7 +243,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/ishotgun +/datum/crafting_recipe/ishotgun name = "Improvised Shotgun" result = /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised reqs = list(/obj/item/weaponcrafting/reciever = 1, @@ -255,7 +254,7 @@ time = 100 category = CAT_WEAPON -/datum/table_recipe/chainsaw +/datum/crafting_recipe/chainsaw name = "Chainsaw" result = /obj/item/weapon/twohanded/required/chainsaw reqs = list(/obj/item/weapon/circular_saw = 1, @@ -265,7 +264,7 @@ time = 50 category = CAT_WEAPON -/datum/table_recipe/spooky_camera +/datum/crafting_recipe/spooky_camera name = "Camera Obscura" result = /obj/item/device/camera/spooky time = 15 @@ -274,21 +273,21 @@ parts = list(/obj/item/device/camera = 1) category = CAT_MISC -/datum/table_recipe/lizardhat +/datum/crafting_recipe/lizardhat name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard time = 10 reqs = list(/obj/item/severedtail = 1) category = CAT_MISC -/datum/table_recipe/lizardhat_alternate +/datum/crafting_recipe/lizardhat_alternate name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard time = 10 reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1) category = CAT_MISC -/datum/table_recipe/skateboard +/datum/crafting_recipe/skateboard name = "Skateboard" result = /obj/vehicle/scooter/skateboard time = 60 @@ -296,7 +295,7 @@ /obj/item/stack/rods = 10) category = CAT_MISC -/datum/table_recipe/scooter +/datum/crafting_recipe/scooter name = "Scooter" result = /obj/vehicle/scooter time = 65 @@ -304,14 +303,15 @@ /obj/item/stack/rods = 12) category = CAT_MISC -/datum/table_recipe/papersack +/datum/crafting_recipe/papersack name = "Paper Sack" result = /obj/item/weapon/storage/box/papersack time = 10 reqs = list(/obj/item/weapon/paper = 5) category = CAT_MISC -/datum/table_recipe/chemical_payload + +/datum/crafting_recipe/chemical_payload name = "Chemical Payload (C4)" result = /obj/item/weapon/bombcore/chemical reqs = list( @@ -323,7 +323,7 @@ time = 30 category = CAT_WEAPON -/datum/table_recipe/chemical_payload2 +/datum/crafting_recipe/chemical_payload2 name = "Chemical Payload (gibtonite)" result = /obj/item/weapon/bombcore/chemical reqs = list( @@ -335,14 +335,14 @@ time = 50 category = CAT_WEAPON -/datum/table_recipe/bonearmor +/datum/crafting_recipe/bonearmor name = "Bone Armor" result = /obj/item/clothing/suit/armor/bone time = 30 reqs = list(/obj/item/stack/sheet/bone = 6) category = CAT_PRIMAL -/datum/table_recipe/bonetalisman +/datum/crafting_recipe/bonetalisman name = "Bone Talisman" result = /obj/item/clothing/tie/talisman time = 20 @@ -350,7 +350,7 @@ /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL -/datum/table_recipe/bracers +/datum/crafting_recipe/bracers name = "Bone Bracers" result = /obj/item/clothing/gloves/bracer time = 20 @@ -358,14 +358,14 @@ /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL -/datum/table_recipe/skullhelm +/datum/crafting_recipe/skullhelm name = "Skull Helmet" result = /obj/item/clothing/head/helmet/skull time = 30 reqs = list(/obj/item/stack/sheet/bone = 4) category = CAT_PRIMAL -/datum/table_recipe/drakecloak +/datum/crafting_recipe/drakecloak name = "Ash Drake Cloak" result = /obj/item/clothing/suit/hooded/cloak/drake time = 60 diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm deleted file mode 100644 index ec813ea7e80..00000000000 --- a/code/modules/crafting/table.dm +++ /dev/null @@ -1,295 +0,0 @@ - -/obj/structure/table - mouse_drag_pointer = MOUSE_ACTIVE_POINTER - var/list/table_contents = list() - var/viewing_category = 1 //typical powergamer starting on the Weapons tab - var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL) - - -/obj/structure/table/MouseDrop(mob/living/user) - if(!istype(user)) - return - if(!user.IsAdvancedToolUser()) - return - tablecraft(user) - -/obj/structure/table/proc/check_contents(datum/table_recipe/R) - check_table() - main_loop: - for(var/A in R.reqs) - var/needed_amount = R.reqs[A] - for(var/B in table_contents) - if(ispath(B, A)) - if(table_contents[B] >= R.reqs[A]) - continue main_loop - else - needed_amount -= table_contents[B] - if(needed_amount <= 0) - continue main_loop - else - continue - return 0 - for(var/A in R.chem_catalysts) - if(table_contents[A] < R.chem_catalysts[A]) - return 0 - return 1 - -/obj/structure/table/proc/check_table() - table_contents = list() - for(var/obj/item/I in loc) - if(istype(I, /obj/item/stack)) - var/obj/item/stack/S = I - table_contents[I.type] += S.amount - else - if(istype(I, /obj/item/weapon/reagent_containers)) - var/obj/item/weapon/reagent_containers/RC = I - if(RC.flags & OPENCONTAINER) - for(var/datum/reagent/A in RC.reagents.reagent_list) - table_contents[A.type] += A.volume - table_contents[I.type] += 1 - -/obj/structure/table/proc/check_tools(mob/user, datum/table_recipe/R) - if(!R.tools.len) - return 1 - var/list/possible_tools = list() - for(var/obj/item/I in user.contents) - if(istype(I, /obj/item/weapon/storage)) - for(var/obj/item/SI in I.contents) - possible_tools += SI.type - else - possible_tools += I.type - possible_tools += table_contents - main_loop: - for(var/A in R.tools) - for(var/I in possible_tools) - if(ispath(I,A)) - possible_tools -= I - continue main_loop - return 0 - return 1 - -/obj/structure/table/proc/construct_item(mob/user, datum/table_recipe/R) - check_table() - var/send_feedback = 1 - if(check_contents(R)) - if(check_tools(user, R)) - if(do_after(user, R.time, target = src)) - if(!check_contents(R)) - return ", missing component." - if(!check_tools(user, R)) - return ", missing tool." - var/atom/movable/I = new R.result (loc) - if(istype(I, /obj/item/weapon/reagent_containers/food/snacks)) - var/obj/item/weapon/reagent_containers/food/snacks/S = I - S.create_reagents(S.volume) - feedback_add_details("food_made","[S.type]") - send_feedback = 0 - var/list/parts = del_reqs(R, I) - for(var/A in parts) - if(istype(A, /obj/item)) - var/atom/movable/B = A - B.loc = I - B.pixel_x = initial(B.pixel_x) - B.pixel_y = initial(B.pixel_y) - else - if(!I.reagents) - I.reagents = new /datum/reagents() - I.reagents.reagent_list.Add(A) - I.CheckParts() - if(send_feedback) - feedback_add_details("object_crafted","[I.type]") - return 0 - return "." - return ", missing tool." - return ", missing component." - -/obj/structure/table/proc/del_reqs(datum/table_recipe/R, atom/movable/resultobject) - var/list/Deletion = list() - var/amt - var/reagenttransfer = 0 - if(istype(resultobject,/obj/item/weapon/reagent_containers)) - reagenttransfer = 1 - for(var/A in R.reqs) - amt = R.reqs[A] - if(ispath(A, /obj/item/stack)) - var/obj/item/stack/S - stack_loop: - for(var/B in table_contents) - if(ispath(B, A)) - while(amt > 0) - S = locate(B) in loc - if(S.amount >= amt) - S.use(amt) - break stack_loop - else - amt -= S.amount - qdel(S) - else if(ispath(A, /obj/item)) - var/obj/item/I - item_loop: - for(var/B in table_contents) - if(ispath(B, A)) - var/item_amount = table_contents[B] - while(item_amount > 0) - I = locate(B) in loc - Deletion.Add(I) - I.loc = null //remove it from the table loc so that we don't locate the same item every time (will be relocated inside the crafted item in construct_item()) - amt-- - item_amount-- - if(reagenttransfer && istype(I,/obj/item/weapon/reagent_containers)) - var/obj/item/weapon/reagent_containers/RC = I - RC.reagents.trans_to(resultobject, RC.reagents.total_volume) - if(amt <= 0) - break item_loop - else - var/datum/reagent/RG = new A - reagent_loop: - for(var/B in table_contents) - if(ispath(B, /obj/item/weapon/reagent_containers)) - var/obj/item/RC = locate(B) in loc - if(RC.reagents.has_reagent(RG.id, amt)) - if(reagenttransfer) - RC.reagents.trans_id_to(resultobject,RG.id, amt) - else - RC.reagents.remove_reagent(RG.id, amt) - RG.volume = amt - Deletion.Add(RG) - break reagent_loop - else if(RC.reagents.has_reagent(RG.id)) - Deletion.Add(RG) - RG.volume += RC.reagents.get_reagent_amount(RG.id) - amt -= RC.reagents.get_reagent_amount(RG.id) - if(reagenttransfer) - RC.reagents.trans_id_to(resultobject,RG.id, RG.volume) - else - RC.reagents.del_reagent(RG.id) - - var/list/partlist = list(R.parts.len) - for(var/M in R.parts) - partlist[M] = R.parts[M] - deletion_loop: - for(var/B in Deletion) - for(var/A in R.parts) - if(istype(B, A)) - if(partlist[A] > 0) //do we still need a part like that? - partlist[A] -= 1 - continue deletion_loop - Deletion.Remove(B) - qdel(B) - - return Deletion - -/obj/structure/table/proc/tablecraft(mob/user) - if(user.incapacitated() || user.lying || !Adjacent(user)) - return - check_table() - user.face_atom(src) - var/dat = "

Crafting menu

" - if(busy) - dat += "
" - dat += "Crafting in progress...
" - else - dat += "<--" - dat += " [categories[prev_cat()]] |" - dat += " [categories[viewing_category]] " - dat += "| [categories[next_cat()]] " - dat += "-->

" - - dat += "
" - - //Filter the recipes we can craft to the top - var/list/can_craft = list() - var/list/cant_craft = list() - for(var/datum/table_recipe/R in table_recipes) - if(R.category != categories[viewing_category]) - continue - if(check_contents(R)) - can_craft += R - else - cant_craft += R - - for(var/datum/table_recipe/R in can_craft) - dat += build_recipe_text(R) - for(var/datum/table_recipe/R in cant_craft) - dat += build_recipe_text(R) - - - dat += "
" - - var/datum/browser/popup = new(user, "table", "Table", 500, 500) - popup.set_content(dat) - popup.open() - return - -/obj/structure/table/Topic(href, href_list) - if(usr.stat || !Adjacent(usr) || usr.lying) - return - if(href_list["make"]) - var/datum/table_recipe/TR = locate(href_list["make"]) - busy = 1 - tablecraft(usr) - var/fail_msg = construct_item(usr, TR) - if(!fail_msg) - usr << "[TR.name] constructed." - else - usr << "Construction failed[fail_msg]" - busy = 0 - tablecraft(usr) - if(href_list["forwardCat"]) - viewing_category = next_cat() - usr << "Category is now [categories[viewing_category]]." - tablecraft(usr) - if(href_list["backwardCat"]) - viewing_category = prev_cat() - usr << "Category is now [categories[viewing_category]]." - tablecraft(usr) - -//Next works nicely with modular arithmetic -/obj/structure/table/proc/next_cat() - . = viewing_category % categories.len + 1 - -//Previous can go fuck itself -/obj/structure/table/proc/prev_cat() - if(viewing_category == categories.len) - . = viewing_category-1 - else - . = viewing_category % categories.len - 1 - if(. <= 0) - . = categories.len - -/obj/structure/table/proc/build_recipe_text(datum/table_recipe/R) - . = "" - var/name_text = "" - var/req_text = "" - var/tool_text = "" - var/catalist_text = "" - if(check_contents(R)) - name_text ="[R.name]" - - else - name_text = "[R.name]" - - if(name_text) - for(var/A in R.reqs) - if(ispath(A, /obj)) - var/obj/O = A - req_text += " [R.reqs[A]] [initial(O.name)]" - else if(ispath(A, /datum/reagent)) - var/datum/reagent/RE = A - req_text += " [R.reqs[A]] [initial(RE.name)]" - - if(R.chem_catalysts.len) - catalist_text += ", Catalysts:" - for(var/C in R.chem_catalysts) - if(ispath(C, /datum/reagent)) - var/datum/reagent/RE = C - catalist_text += " [R.chem_catalysts[C]] [initial(RE.name)]" - - if(R.tools.len) - tool_text += ", Tools:" - for(var/O in R.tools) - if(ispath(O, /obj)) - var/obj/T = O - tool_text += " [R.tools[O]] [initial(T.name)]" - - . = "[name_text][req_text][tool_text][catalist_text]
" diff --git a/code/modules/food&drinks/drinks/drinks/bottle.dm b/code/modules/food&drinks/drinks/drinks/bottle.dm index c71b1aa2a71..852c8ed9108 100644 --- a/code/modules/food&drinks/drinks/drinks/bottle.dm +++ b/code/modules/food&drinks/drinks/drinks/bottle.dm @@ -333,7 +333,8 @@ /datum/reagent/napalm,/datum/reagent/hellwater,/datum/reagent/toxin/plasma,/datum/reagent/toxin/spore_burning) var/active = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/CheckParts() +/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/CheckParts(list/parts_list) + ..() var/obj/item/weapon/reagent_containers/food/drinks/bottle/B = locate() in contents if(B) icon_state = B.icon_state diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index 2a790645521..9b340df0f0d 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -19,6 +19,7 @@ var/customfoodfilling = 1 // whether it can be used as filling in custom food //Placeholder for effect that trigger on eating that aren't tied to reagents. + /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume() if(!usr) return @@ -153,7 +154,18 @@ return 1 //Called when you finish tablecrafting a snack. -/obj/item/weapon/reagent_containers/food/snacks/CheckParts() +/obj/item/weapon/reagent_containers/food/snacks/CheckParts(list/parts_list, datum/crafting_recipe/R) + ..() + reagents.reagent_list.Cut() + for(var/obj/item/weapon/reagent_containers/RC in contents) + RC.reagents.trans_to(reagents, RC.reagents.maximum_volume) + contents_loop: + for(var/A in contents) + for(var/B in initial(R.parts)) + if(istype(A, B)) + continue contents_loop + qdel(A) + feedback_add_details("food_made","[type]") if(bonus_reagents.len) for(var/r_id in bonus_reagents) var/amount = bonus_reagents[r_id] diff --git a/code/modules/food&drinks/food/snacks_burgers.dm b/code/modules/food&drinks/food/snacks_burgers.dm index 16d5eda5f2d..061a28d6c90 100644 --- a/code/modules/food&drinks/food/snacks_burgers.dm +++ b/code/modules/food&drinks/food/snacks_burgers.dm @@ -18,7 +18,8 @@ desc = "A bloody burger." bonus_reagents = list("vitamin" = 4) -/obj/item/weapon/reagent_containers/food/snacks/burger/human/CheckParts() +/obj/item/weapon/reagent_containers/food/snacks/burger/human/CheckParts(list/parts_list) + ..() var/obj/item/weapon/reagent_containers/food/snacks/meat/M = locate(/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human) in contents if(M) subjectname = M.subjectname @@ -29,8 +30,6 @@ name = "[subjectjob] burger" qdel(M) - ..() - /obj/item/weapon/reagent_containers/food/snacks/burger/corgi name = "corgi burger" diff --git a/code/modules/food&drinks/recipes/food_mixtures.dm b/code/modules/food&drinks/recipes/food_mixtures.dm index 39ad0b66acd..bfb9dcbaf4e 100644 --- a/code/modules/food&drinks/recipes/food_mixtures.dm +++ b/code/modules/food&drinks/recipes/food_mixtures.dm @@ -1,3 +1,5 @@ +/datum/crafting_recipe/food/New() + parts |= reqs //////////////////////////////////////////FOOD MIXTURES//////////////////////////////////// diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm index 083deaf6f20..56649b1f9f7 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////BREAD//////////////////////////////////////////////// -/datum/table_recipe/meatbread +/datum/crafting_recipe/food/meatbread name = "Meat bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/meat category = CAT_FOOD -/datum/table_recipe/xenomeatbread +/datum/crafting_recipe/food/xenomeatbread name = "Xenomeat bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -23,7 +23,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/xenomeat category = CAT_FOOD -/datum/table_recipe/spidermeatbread +/datum/crafting_recipe/food/spidermeatbread name = "Spidermeat bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -33,7 +33,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/spidermeat category = CAT_FOOD -/datum/table_recipe/banananutbread +/datum/crafting_recipe/food/banananutbread name = "Banana nut bread" reqs = list( /datum/reagent/consumable/milk = 5, @@ -44,7 +44,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/banana category = CAT_FOOD -/datum/table_recipe/tofubread +/datum/crafting_recipe/food/tofubread name = "Tofu bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -54,7 +54,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/tofu category = CAT_FOOD -/datum/table_recipe/creamcheesebread +/datum/crafting_recipe/food/creamcheesebread name = "Cream cheese bread" reqs = list( /datum/reagent/consumable/milk = 5, @@ -64,7 +64,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/creamcheese category = CAT_FOOD -/datum/table_recipe/mimanabread +/datum/crafting_recipe/food/mimanabread name = "Mimana bread" reqs = list( /datum/reagent/consumable/soymilk = 5, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm index e3c86d5732e..8b70e10f143 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm @@ -4,7 +4,7 @@ ////////////////////////////////////////////////BURGERS//////////////////////////////////////////////// -/datum/table_recipe/humanburger +/datum/crafting_recipe/food/humanburger name = "Human burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/bun = 1, @@ -16,7 +16,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/human category = CAT_FOOD -/datum/table_recipe/burger +/datum/crafting_recipe/food/burger name = "Burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -26,7 +26,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/plain category = CAT_FOOD -/datum/table_recipe/corgiburger +/datum/crafting_recipe/food/corgiburger name = "Corgi burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi = 1, @@ -36,7 +36,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/corgi category = CAT_FOOD -/datum/table_recipe/appendixburger +/datum/crafting_recipe/food/appendixburger name = "Appendix burger" reqs = list( /obj/item/organ/appendix = 1, @@ -45,7 +45,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix category = CAT_FOOD -/datum/table_recipe/brainburger +/datum/crafting_recipe/food/brainburger name = "Brain burger" reqs = list( /obj/item/organ/brain = 1, @@ -54,7 +54,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/brain category = CAT_FOOD -/datum/table_recipe/xenoburger +/datum/crafting_recipe/food/xenoburger name = "Xeno burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/xeno = 1, @@ -63,7 +63,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/xeno category = CAT_FOOD -/datum/table_recipe/bearger +/datum/crafting_recipe/food/bearger name = "Bearger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/bear = 1, @@ -72,7 +72,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/bearger category = CAT_FOOD -/datum/table_recipe/fishburger +/datum/crafting_recipe/food/fishburger name = "Fish burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1, @@ -81,7 +81,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/fish category = CAT_FOOD -/datum/table_recipe/tofuburger +/datum/crafting_recipe/food/tofuburger name = "Tofu burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tofu = 1, @@ -90,7 +90,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/tofu category = CAT_FOOD -/datum/table_recipe/ghostburger +/datum/crafting_recipe/food/ghostburger name = "Ghost burger" reqs = list( /obj/item/weapon/ectoplasm = 1, @@ -99,7 +99,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/ghost category = CAT_FOOD -/datum/table_recipe/clownburger +/datum/crafting_recipe/food/clownburger name = "Clown burger" reqs = list( /obj/item/clothing/mask/gas/clown_hat = 1, @@ -108,7 +108,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/clown category = CAT_FOOD -/datum/table_recipe/mimeburger +/datum/crafting_recipe/food/mimeburger name = "Mime burger" reqs = list( /obj/item/clothing/mask/gas/mime = 1, @@ -117,7 +117,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/mime category = CAT_FOOD -/datum/table_recipe/redburger +/datum/crafting_recipe/food/redburger name = "Red burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -127,7 +127,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/red category = CAT_FOOD -/datum/table_recipe/orangeburger +/datum/crafting_recipe/food/orangeburger name = "Orange burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -137,7 +137,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/orange category = CAT_FOOD -/datum/table_recipe/yellowburger +/datum/crafting_recipe/food/yellowburger name = "Yellow burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -147,7 +147,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/yellow category = CAT_FOOD -/datum/table_recipe/greenburger +/datum/crafting_recipe/food/greenburger name = "Green burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -157,7 +157,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/green category = CAT_FOOD -/datum/table_recipe/blueburger +/datum/crafting_recipe/food/blueburger name = "Blue burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -167,7 +167,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/blue category = CAT_FOOD -/datum/table_recipe/purpleburger +/datum/crafting_recipe/food/purpleburger name = "Purple burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -177,15 +177,15 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/purple category = CAT_FOOD -/datum/table_recipe/spellburger +/datum/crafting_recipe/food/spellburger name = "Spell burger" reqs = list( - /obj/item/clothing/head/wizard/fake, + /obj/item/clothing/head/wizard/fake = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell category = CAT_FOOD -/datum/table_recipe/spellburger2 +/datum/crafting_recipe/food/spellburger2 name = "Spell burger" reqs = list( /obj/item/clothing/head/wizard = 1, @@ -194,7 +194,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell category = CAT_FOOD -/datum/table_recipe/bigbiteburger +/datum/crafting_recipe/food/bigbiteburger name = "Big bite burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 3, @@ -203,7 +203,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/bigbite category = CAT_FOOD -/datum/table_recipe/superbiteburger +/datum/crafting_recipe/food/superbiteburger name = "Super bite burger" reqs = list( /datum/reagent/consumable/sodiumchloride = 5, @@ -218,7 +218,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/superbite category = CAT_FOOD -/datum/table_recipe/slimeburger +/datum/crafting_recipe/food/slimeburger name = "Jelly burger" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -227,7 +227,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime category = CAT_FOOD -/datum/table_recipe/jellyburger +/datum/crafting_recipe/food/jellyburger name = "Jelly burger" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -236,7 +236,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/cherry category = CAT_FOOD -/datum/table_recipe/fivealarmburger +/datum/crafting_recipe/food/fivealarmburger name = "Five alarm burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili = 2, @@ -245,7 +245,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/fivealarm category = CAT_FOOD -/datum/table_recipe/ratburger +/datum/crafting_recipe/food/ratburger name = "Rat burger" reqs = list( /obj/item/trash/deadmouse = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm index 63890d8b83f..03bdce39e59 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////CAKE//////////////////////////////////////////////// -/datum/table_recipe/carrotcake +/datum/crafting_recipe/food/carrotcake name = "Carrot cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -12,7 +12,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/carrot category = CAT_FOOD -/datum/table_recipe/cheesecake +/datum/crafting_recipe/food/cheesecake name = "Cheese cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -21,7 +21,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/cheese category = CAT_FOOD -/datum/table_recipe/applecake +/datum/crafting_recipe/food/applecake name = "Apple cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -30,7 +30,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/apple category = CAT_FOOD -/datum/table_recipe/orangecake +/datum/crafting_recipe/food/orangecake name = "Orange cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -39,7 +39,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/orange category = CAT_FOOD -/datum/table_recipe/limecake +/datum/crafting_recipe/food/limecake name = "Lime cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -48,7 +48,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lime category = CAT_FOOD -/datum/table_recipe/lemoncake +/datum/crafting_recipe/food/lemoncake name = "Lemon cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -57,7 +57,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lemon category = CAT_FOOD -/datum/table_recipe/chocolatecake +/datum/crafting_recipe/food/chocolatecake name = "Chocolate cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -66,7 +66,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/chocolate category = CAT_FOOD -/datum/table_recipe/birthdaycake +/datum/crafting_recipe/food/birthdaycake name = "Birthday cake" reqs = list( /obj/item/clothing/head/hardhat/cakehat = 1, @@ -75,7 +75,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday category = CAT_FOOD -/datum/table_recipe/braincake +/datum/crafting_recipe/food/braincake name = "Brain cake" reqs = list( /obj/item/organ/brain = 1, @@ -84,7 +84,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/brain category = CAT_FOOD -/datum/table_recipe/slimecake +/datum/crafting_recipe/food/slimecake name = "Slime cake" reqs = list( /obj/item/slime_extract = 1, @@ -93,7 +93,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/slimecake category = CAT_FOOD -/datum/table_recipe/pumpkinspicecake +/datum/crafting_recipe/food/pumpkinspicecake name = "Pumpkin spice cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm index ae2e575fa95..b01f794fc2c 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////EGG RECIPE's//////////////////////////////////////////////// -/datum/table_recipe/friedegg +/datum/crafting_recipe/food/friedegg name = "Fried egg" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/friedegg category = CAT_FOOD -/datum/table_recipe/omelette +/datum/crafting_recipe/food/omelette name = "omelette" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledegg = 2, @@ -22,7 +22,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/omelette category = CAT_FOOD -/datum/table_recipe/chocolateegg +/datum/crafting_recipe/food/chocolateegg name = "Chocolate egg" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledegg = 1, @@ -31,7 +31,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg category = CAT_FOOD -/datum/table_recipe/eggsbenedict +/datum/crafting_recipe/food/eggsbenedict name = "Eggs benedict" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/friedegg = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm index eba85761993..f20b5ae37d7 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm @@ -2,7 +2,7 @@ ////////////////////////////////////////////////KEBABS//////////////////////////////////////////////// -/datum/table_recipe/humankebab +/datum/crafting_recipe/food/humankebab name = "Human kebab" reqs = list( /obj/item/stack/rods = 1, @@ -11,7 +11,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/kebab/human category = CAT_FOOD -/datum/table_recipe/kebab +/datum/crafting_recipe/food/kebab name = "Kebab" reqs = list( /obj/item/stack/rods = 1, @@ -20,7 +20,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/kebab/monkey category = CAT_FOOD -/datum/table_recipe/tofukebab +/datum/crafting_recipe/food/tofukebab name = "Tofu kebab" reqs = list( /obj/item/stack/rods = 1, @@ -29,7 +29,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tofu category = CAT_FOOD -/datum/table_recipe/tailkebab +/datum/crafting_recipe/food/tailkebab name = "Lizard tail kebab" reqs = list( /obj/item/stack/rods = 1, @@ -42,7 +42,7 @@ ////////////////////////////////////////////////FISH//////////////////////////////////////////////// -/datum/table_recipe/cubancarp +/datum/crafting_recipe/food/cubancarp name = "Cuban carp" reqs = list( /datum/reagent/consumable/flour = 5, @@ -52,7 +52,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp category = CAT_FOOD -/datum/table_recipe/fishandchips +/datum/crafting_recipe/food/fishandchips name = "Fish and chips" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/fries = 1, @@ -61,7 +61,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips category = CAT_FOOD -/datum/table_recipe/fishfingers +/datum/crafting_recipe/food/fishfingers name = "Fish fingers" reqs = list( /datum/reagent/consumable/flour = 5, @@ -71,7 +71,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers category = CAT_FOOD -/datum/table_recipe/sashimi +/datum/crafting_recipe/food/sashimi name = "Sashimi" reqs = list( /datum/reagent/consumable/soysauce = 5, @@ -83,7 +83,7 @@ ////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// -/datum/table_recipe/spidereggsham +/datum/crafting_recipe/food/spidereggsham name = "Spider eggs ham" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -95,7 +95,7 @@ ////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// -/datum/table_recipe/cornedbeef +/datum/crafting_recipe/food/cornedbeef name = "Corned beef" reqs = list( /datum/reagent/consumable/sodiumchloride = 5, @@ -105,7 +105,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cornedbeef category = CAT_FOOD -/datum/table_recipe/bearsteak +/datum/crafting_recipe/food/bearsteak name = "Filet migrawr" reqs = list( /datum/reagent/consumable/ethanol/manly_dorf = 5, @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/bearsteak category = CAT_FOOD -/datum/table_recipe/enchiladas +/datum/crafting_recipe/food/enchiladas name = "Enchiladas" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 2, @@ -125,7 +125,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas category = CAT_FOOD -/datum/table_recipe/stewedsoymeat +/datum/crafting_recipe/food/stewedsoymeat name = "Stewed soymeat" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/soydope = 2, @@ -135,7 +135,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat category = CAT_FOOD -/datum/table_recipe/sausage +/datum/crafting_recipe/food/sausage name = "Sausage" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/faggot = 1, @@ -144,7 +144,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sausage category = CAT_FOOD -/datum/table_recipe/nugget +/datum/crafting_recipe/food/nugget name = "Chicken nugget" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 1 diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm index 6f299b87d31..32dea3f7b57 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm @@ -3,7 +3,7 @@ // MISC -/datum/table_recipe/candiedapple +/datum/crafting_recipe/food/candiedapple name = "Candied apple" reqs = list(/datum/reagent/water = 5, /datum/reagent/consumable/sugar = 5, @@ -12,7 +12,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple category = CAT_FOOD -/datum/table_recipe/chococoin +/datum/crafting_recipe/food/chococoin name = "Choco coin" reqs = list( /obj/item/weapon/coin = 1, @@ -21,7 +21,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chococoin category = CAT_FOOD -/datum/table_recipe/fudgedice +/datum/crafting_recipe/food/fudgedice name = "Fudge dice" reqs = list( /obj/item/weapon/dice = 1, @@ -30,7 +30,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fudgedice category = CAT_FOOD -/datum/table_recipe/chocoorange +/datum/crafting_recipe/food/chocoorange name = "Choco orange" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 1, @@ -39,7 +39,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chocoorange category = CAT_FOOD -/datum/table_recipe/loadedbakedpotato +/datum/crafting_recipe/food/loadedbakedpotato name = "Loaded baked potato" time = 40 reqs = list( @@ -49,7 +49,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato category = CAT_FOOD -/datum/table_recipe/cheesyfries +/datum/crafting_recipe/food/cheesyfries name = "Cheesy fries" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/fries = 1, @@ -58,7 +58,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries category = CAT_FOOD -/datum/table_recipe/wrap +/datum/crafting_recipe/food/wrap name = "Wrap" reqs = list(/datum/reagent/consumable/soysauce = 10, /obj/item/weapon/reagent_containers/food/snacks/friedegg = 1, @@ -67,7 +67,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/eggwrap category = CAT_FOOD -/datum/table_recipe/beans +/datum/crafting_recipe/food/beans name = "Beans" time = 40 reqs = list(/datum/reagent/consumable/ketchup = 5, @@ -76,7 +76,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/beans category = CAT_FOOD -/datum/table_recipe/eggplantparm +/datum/crafting_recipe/food/eggplantparm name ="Eggplant parmigiana" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2, @@ -85,7 +85,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm category = CAT_FOOD -/datum/table_recipe/baguette +/datum/crafting_recipe/food/baguette name = "Baguette" time = 40 reqs = list(/datum/reagent/consumable/sodiumchloride = 1, @@ -97,7 +97,7 @@ ////////////////////////////////////////////////TOAST//////////////////////////////////////////////// -/datum/table_recipe/slimetoast +/datum/crafting_recipe/food/slimetoast name = "Slime toast" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -106,7 +106,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime category = CAT_FOOD -/datum/table_recipe/jelliedyoast +/datum/crafting_recipe/food/jelliedyoast name = "Jellied toast" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry category = CAT_FOOD -/datum/table_recipe/twobread +/datum/crafting_recipe/food/twobread name = "Two bread" reqs = list( /datum/reagent/consumable/ethanol/wine = 5, @@ -124,7 +124,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/twobread category = CAT_FOOD -/datum/table_recipe/burrito +/datum/crafting_recipe/food/burrito name ="Burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -133,7 +133,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burrito category = CAT_FOOD -/datum/table_recipe/cheesyburrito +/datum/crafting_recipe/food/cheesyburrito name ="Cheesy burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -143,7 +143,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cheesyburrito category = CAT_FOOD -/datum/table_recipe/carneburrito +/datum/crafting_recipe/food/carneburrito name ="Carne de asada burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -153,7 +153,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/carneburrito category = CAT_FOOD -/datum/table_recipe/fuegoburrito +/datum/crafting_recipe/food/fuegoburrito name ="Fuego plasma burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -163,7 +163,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fuegoburrito category = CAT_FOOD -/datum/table_recipe/melonfruitbowl +/datum/crafting_recipe/food/melonfruitbowl name ="Melon fruit bowl" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon = 1, @@ -176,7 +176,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl category = CAT_FOOD -/datum/table_recipe/spacefreezy +/datum/crafting_recipe/food/spacefreezy name ="Space freezy" reqs = list( /datum/reagent/consumable/bluecherryjelly = 5, @@ -186,7 +186,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/spacefreezy category = CAT_FOOD -/datum/table_recipe/sundae +/datum/crafting_recipe/food/sundae name ="Sundae" reqs = list( /datum/reagent/consumable/cream = 5, @@ -197,7 +197,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sundae category = CAT_FOOD -/datum/table_recipe/honkdae +/datum/crafting_recipe/food/honkdae name ="Honkdae" reqs = list( /datum/reagent/consumable/cream = 5, @@ -209,7 +209,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/honkdae category = CAT_FOOD -/datum/table_recipe/nachos +/datum/crafting_recipe/food/nachos name ="Nachos" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -218,7 +218,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/nachos category = CAT_FOOD -/datum/table_recipe/cheesynachos +/datum/crafting_recipe/food/cheesynachos name ="Cheesy nachos" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -228,7 +228,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cheesynachos category = CAT_FOOD -/datum/table_recipe/cubannachos +/datum/crafting_recipe/food/cubannachos name ="Cuban nachos" reqs = list( /datum/reagent/consumable/ketchup = 5, @@ -238,7 +238,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cubannachos category = CAT_FOOD -/datum/table_recipe/melonkeg +/datum/crafting_recipe/food/melonkeg name ="Melon keg" reqs = list( /datum/reagent/consumable/ethanol/vodka = 25, @@ -249,7 +249,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/melonkeg category = CAT_FOOD -/datum/table_recipe/honeybar +/datum/crafting_recipe/food/honeybar name = "Honey nut bar" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/oat = 1, @@ -259,7 +259,7 @@ category = CAT_FOOD -/datum/table_recipe/stuffedlegion +/datum/crafting_recipe/stuffedlegion name = "Stuffed legion" time = 40 reqs = list( diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm index 99305007696..850eb46b620 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////DONUTS//////////////////////////////////////////////// -/datum/table_recipe/chaosdonut +/datum/crafting_recipe/food/chaosdonut name = "Chaos donut" reqs = list( /datum/reagent/consumable/frostoil = 5, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos category = CAT_FOOD -/datum/table_recipe/donut +/datum/crafting_recipe/food/donut time = 15 name = "Donut" reqs = list( @@ -23,7 +23,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut category = CAT_FOOD -/datum/table_recipe/jellydonut +/datum/crafting_recipe/food/jellydonut name = "Jelly donut" reqs = list( /datum/reagent/consumable/berryjuice = 5, @@ -32,7 +32,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly category = CAT_FOOD -/datum/table_recipe/cherryjellydonut +/datum/crafting_recipe/food/cherryjellydonut name = "Cherry jelly donut" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -41,7 +41,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly category = CAT_FOOD -/datum/table_recipe/slimejellydonut +/datum/crafting_recipe/food/slimejellydonut name = "Slime jelly donut" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -52,7 +52,7 @@ ////////////////////////////////////////////////WAFFLES//////////////////////////////////////////////// -/datum/table_recipe/waffles +/datum/crafting_recipe/food/waffles time = 15 name = "Waffles" reqs = list( @@ -62,7 +62,7 @@ category = CAT_FOOD -/datum/table_recipe/soylenviridians +/datum/crafting_recipe/food/soylenviridians name = "Soylent viridians" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2, @@ -71,7 +71,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians category = CAT_FOOD -/datum/table_recipe/soylentgreen +/datum/crafting_recipe/food/soylentgreen name = "Soylent green" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2, @@ -81,7 +81,7 @@ category = CAT_FOOD -/datum/table_recipe/rofflewaffles +/datum/crafting_recipe/food/rofflewaffles name = "Roffle waffles" reqs = list( /datum/reagent/mushroomhallucinogen = 5, @@ -92,7 +92,7 @@ ////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// -/datum/table_recipe/donkpocket +/datum/crafting_recipe/food/donkpocket time = 15 name = "Donkpocket" reqs = list( @@ -105,7 +105,7 @@ ////////////////////////////////////////////////MUFFINS//////////////////////////////////////////////// -/datum/table_recipe/muffin +/datum/crafting_recipe/food/muffin time = 15 name = "Muffin" reqs = list( @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/muffin category = CAT_FOOD -/datum/table_recipe/berrymuffin +/datum/crafting_recipe/food/berrymuffin name = "Berry muffin" reqs = list( /datum/reagent/consumable/milk = 5, @@ -125,7 +125,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/muffin/berry category = CAT_FOOD -/datum/table_recipe/booberrymuffin +/datum/crafting_recipe/food/booberrymuffin name = "Booberry muffin" reqs = list( /datum/reagent/consumable/milk = 5, @@ -136,7 +136,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/muffin/booberry category = CAT_FOOD -/datum/table_recipe/chawanmushi +/datum/crafting_recipe/food/chawanmushi name = "Chawanmushi" reqs = list( /datum/reagent/water = 5, @@ -149,7 +149,7 @@ ////////////////////////////////////////////OTHER//////////////////////////////////////////// -/datum/table_recipe/hotdog +/datum/crafting_recipe/food/hotdog name = "Hot dog" reqs = list( /datum/reagent/consumable/ketchup = 5, @@ -159,7 +159,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/hotdog category = CAT_FOOD -/datum/table_recipe/meatbun +/datum/crafting_recipe/food/meatbun name = "Meat bun" reqs = list( /datum/reagent/consumable/soysauce = 5, @@ -170,7 +170,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/meatbun category = CAT_FOOD -/datum/table_recipe/sugarcookie +/datum/crafting_recipe/food/sugarcookie time = 15 name = "Sugar cookie" reqs = list( @@ -180,7 +180,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie category = CAT_FOOD -/datum/table_recipe/fortunecookie +/datum/crafting_recipe/food/fortunecookie time = 15 name = "Fortune cookie" reqs = list( @@ -193,7 +193,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie category = CAT_FOOD -/datum/table_recipe/poppypretzel +/datum/crafting_recipe/food/poppypretzel time = 15 name = "Poppy pretzel" reqs = list( @@ -203,7 +203,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel category = CAT_FOOD -/datum/table_recipe/plumphelmetbiscuit +/datum/crafting_recipe/food/plumphelmetbiscuit time = 15 name = "Plumphelmet biscuit" reqs = list( @@ -213,7 +213,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit category = CAT_FOOD -/datum/table_recipe/cracker +/datum/crafting_recipe/food/cracker time = 15 name = "Cracker" reqs = list( @@ -223,7 +223,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cracker category = CAT_FOOD -/datum/table_recipe/chococornet +/datum/crafting_recipe/food/chococornet name = "Choco cornet" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -233,7 +233,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chococornet category = CAT_FOOD -/datum/table_recipe/oatmealcookie +/datum/crafting_recipe/food/oatmealcookie name = "Oatmeal cookie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, @@ -241,7 +241,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/oatmealcookie -/datum/table_recipe/raisincookie +/datum/crafting_recipe/food/raisincookie name = "Raisin cookie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 1, @@ -251,7 +251,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/raisincookie category = CAT_FOOD -/datum/table_recipe/cherrycupcake +/datum/crafting_recipe/food/cherrycupcake name = "Cherry cupcake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, @@ -260,7 +260,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cherrycupcake category = CAT_FOOD -/datum/table_recipe/bluecherrycupcake +/datum/crafting_recipe/food/bluecherrycupcake name = "Blue cherry cupcake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, @@ -269,7 +269,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/bluecherrycupcake category = CAT_FOOD -/datum/table_recipe/honeybun +/datum/crafting_recipe/food/honeybun name = "Honey bun" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm index 19c72203735..f6e938ae478 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////PIES//////////////////////////////////////////////// -/datum/table_recipe/bananacreampie +/datum/crafting_recipe/food/bananacreampie name = "Banana cream pie" reqs = list( /datum/reagent/consumable/milk = 5, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/cream category = CAT_FOOD -/datum/table_recipe/meatpie +/datum/crafting_recipe/food/meatpie name = "Meat pie" reqs = list( /datum/reagent/consumable/blackpepper = 1, @@ -24,7 +24,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/meatpie category = CAT_FOOD -/datum/table_recipe/tofupie +/datum/crafting_recipe/food/tofupie name = "Tofu pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -33,7 +33,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/tofupie category = CAT_FOOD -/datum/table_recipe/xenopie +/datum/crafting_recipe/food/xenopie name = "Xeno pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -42,7 +42,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/xemeatpie category = CAT_FOOD -/datum/table_recipe/cherrypie +/datum/crafting_recipe/food/cherrypie name = "Cherry pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -51,7 +51,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/cherrypie category = CAT_FOOD -/datum/table_recipe/berryclafoutis +/datum/crafting_recipe/food/berryclafoutis name = "Berry clafoutis" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -60,7 +60,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/berryclafoutis category = CAT_FOOD -/datum/table_recipe/bearypie +/datum/crafting_recipe/food/bearypie name = "Beary Pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -70,7 +70,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/bearypie category = CAT_FOOD -/datum/table_recipe/amanitapie +/datum/crafting_recipe/food/amanitapie name = "Amanita pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -79,7 +79,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/amanita_pie category = CAT_FOOD -/datum/table_recipe/plumppie +/datum/crafting_recipe/food/plumppie name = "Plump pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -88,7 +88,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie category = CAT_FOOD -/datum/table_recipe/applepie +/datum/crafting_recipe/food/applepie name = "Apple pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -97,7 +97,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/applepie category = CAT_FOOD -/datum/table_recipe/pumpkinpie +/datum/crafting_recipe/food/pumpkinpie name = "Pumpkin pie" reqs = list( /datum/reagent/consumable/milk = 5, @@ -108,7 +108,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/pumpkinpie category = CAT_FOOD -/datum/table_recipe/goldenappletart +/datum/crafting_recipe/food/goldenappletart name = "Golden apple tart" reqs = list( /datum/reagent/consumable/milk = 5, @@ -119,7 +119,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/appletart category = CAT_FOOD -/datum/table_recipe/grapetart +/datum/crafting_recipe/food/grapetart name = "Grape tart" reqs = list( /datum/reagent/consumable/milk = 5, @@ -130,7 +130,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/grapetart category = CAT_FOOD -/datum/table_recipe/blumpkinpie +/datum/crafting_recipe/food/blumpkinpie name = "Blumpkin pie" reqs = list( /datum/reagent/consumable/milk = 5, @@ -141,7 +141,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/blumpkinpie category = CAT_FOOD -/datum/table_recipe/dulcedebatata +/datum/crafting_recipe/food/dulcedebatata name = "Dulce de batata" reqs = list( /datum/reagent/consumable/vanilla = 5, @@ -151,7 +151,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/dulcedebatata category = CAT_FOOD -/datum/table_recipe/frostypie +/datum/crafting_recipe/food/frostypie name = "Frosty pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm index 3d34dcd93d6..f7627e2e07f 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////PIZZA!!!//////////////////////////////////////////////// -/datum/table_recipe/margheritapizza +/datum/crafting_recipe/food/margheritapizza name = "Margherita pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/margherita category = CAT_FOOD -/datum/table_recipe/meatpizza +/datum/crafting_recipe/food/meatpizza name = "Meat pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -24,7 +24,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/meat category = CAT_FOOD -/datum/table_recipe/mushroompizza +/datum/crafting_recipe/food/mushroompizza name = "Mushroom pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -33,7 +33,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/mushroom category = CAT_FOOD -/datum/table_recipe/vegetablepizza +/datum/crafting_recipe/food/vegetablepizza name = "Vegetable pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -45,7 +45,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/vegetable category = CAT_FOOD -/datum/table_recipe/donpocketpizza +/datum/crafting_recipe/food/donpocketpizza name = "Donkpocket pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -56,7 +56,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/donkpocket category = CAT_FOOD -/datum/table_recipe/dankpizza +/datum/crafting_recipe/food/dankpizza name = "Dank pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -67,7 +67,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/dank category = CAT_FOOD -/datum/table_recipe/sassysagepizza +/datum/crafting_recipe/food/sassysagepizza name = "Sassysage pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm index 95752809085..fc4633253f0 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////SALADS//////////////////////////////////////////////// -/datum/table_recipe/herbsalad +/datum/crafting_recipe/food/herbsalad name = "Herb salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/herbsalad category = CAT_FOOD -/datum/table_recipe/aesirsalad +/datum/crafting_recipe/food/aesirsalad name = "Aesir salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -23,7 +23,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/aesirsalad category = CAT_FOOD -/datum/table_recipe/validsalad +/datum/crafting_recipe/food/validsalad name = "Valid salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -34,7 +34,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/validsalad category = CAT_FOOD -/datum/table_recipe/monkeysdelight +/datum/crafting_recipe/food/monkeysdelight name = "Monkeys delight" reqs = list( /datum/reagent/consumable/flour = 5, @@ -47,7 +47,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/monkeysdelight category = CAT_FOOD -/datum/table_recipe/oatmeal +/datum/crafting_recipe/food/oatmeal name = "Oatmeal" reqs = list( /datum/reagent/consumable/milk = 10, @@ -57,7 +57,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/oatmeal category = CAT_FOOD -/datum/table_recipe/fruitsalad +/datum/crafting_recipe/food/fruitsalad name = "Fruit salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -70,7 +70,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/fruit category = CAT_FOOD -/datum/table_recipe/junglesalad +/datum/crafting_recipe/food/junglesalad name = "Jungle salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -83,7 +83,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/jungle category = CAT_FOOD -/datum/table_recipe/citrusdelight +/datum/crafting_recipe/food/citrusdelight name = "Citrus delight" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -95,7 +95,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/citrusdelight category = CAT_FOOD -/datum/table_recipe/ricepork +/datum/crafting_recipe/food/ricepork name = "Rice and pork" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/salad/boiledrice = 1, @@ -104,7 +104,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/ricepork category = CAT_FOOD -/datum/table_recipe/eggbowl +/datum/crafting_recipe/food/eggbowl name = "Egg bowl" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/salad/boiledrice = 1, @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/eggbowl category = CAT_FOOD -/datum/table_recipe/ricepudding +/datum/crafting_recipe/food/ricepudding name = "Rice pudding" reqs = list( /datum/reagent/consumable/milk = 5, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm index a4f14d0a280..630430e2d36 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm @@ -6,7 +6,7 @@ ////////////////////////////////////////////////SANDWICHES//////////////////////////////////////////////// -/datum/table_recipe/sandwich +/datum/crafting_recipe/food/sandwich name = "Sandwich" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, @@ -16,7 +16,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sandwich category = CAT_FOOD -/datum/table_recipe/grilledcheesesandwich +/datum/crafting_recipe/food/grilledcheesesandwich name = "Grilled cheese sandwich" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, @@ -25,7 +25,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese category = CAT_FOOD -/datum/table_recipe/slimesandwich +/datum/crafting_recipe/food/slimesandwich name = "Jelly sandwich" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -34,7 +34,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime category = CAT_FOOD -/datum/table_recipe/cherrysandwich +/datum/crafting_recipe/food/cherrysandwich name = "Jelly sandwich" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -43,7 +43,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry category = CAT_FOOD -/datum/table_recipe/icecreamsandwich +/datum/crafting_recipe/food/icecreamsandwich name = "Icecream sandwich" reqs = list( /datum/reagent/consumable/cream = 5, @@ -53,7 +53,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich category = CAT_FOOD -/datum/table_recipe/notasandwich +/datum/crafting_recipe/food/notasandwich name = "Not a sandwich" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm index 082fb2b352f..3df5c6b8ca8 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////SOUP//////////////////////////////////////////////// -/datum/table_recipe/meatballsoup +/datum/crafting_recipe/food/meatballsoup name = "Meatball soup" reqs = list( /datum/reagent/water = 10, @@ -15,7 +15,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/meatball category = CAT_FOOD -/datum/table_recipe/vegetablesoup +/datum/crafting_recipe/food/vegetablesoup name = "Vegetable soup" reqs = list( /datum/reagent/water = 10, @@ -28,7 +28,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/vegetable category = CAT_FOOD -/datum/table_recipe/nettlesoup +/datum/crafting_recipe/food/nettlesoup name = "Nettle soup" reqs = list( /datum/reagent/water = 10, @@ -40,7 +40,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/nettle category = CAT_FOOD -/datum/table_recipe/wingfangchu +/datum/crafting_recipe/food/wingfangchu name = "Wingfangchu" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -50,7 +50,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/wingfangchu category = CAT_FOOD -/datum/table_recipe/wishsoup +/datum/crafting_recipe/food/wishsoup name = "Wish soup" reqs = list( /datum/reagent/water = 20, @@ -59,7 +59,7 @@ result= /obj/item/weapon/reagent_containers/food/snacks/soup/wish category = CAT_FOOD -/datum/table_recipe/hotchili +/datum/crafting_recipe/food/hotchili name = "Hot chili" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -70,7 +70,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/hotchili category = CAT_FOOD -/datum/table_recipe/coldchili +/datum/crafting_recipe/food/coldchili name = "Cold chili" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -81,7 +81,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/coldchili category = CAT_FOOD -/datum/table_recipe/tomatosoup +/datum/crafting_recipe/food/tomatosoup name = "Tomato soup" reqs = list( /datum/reagent/water = 10, @@ -91,7 +91,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/tomato category = CAT_FOOD -/datum/table_recipe/milosoup +/datum/crafting_recipe/food/milosoup name = "Milo soup" reqs = list( /datum/reagent/water = 10, @@ -102,7 +102,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/milo category = CAT_FOOD -/datum/table_recipe/bloodsoup +/datum/crafting_recipe/food/bloodsoup name = "Blood soup" reqs = list( /datum/reagent/blood = 10, @@ -112,7 +112,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/blood category = CAT_FOOD -/datum/table_recipe/slimesoup +/datum/crafting_recipe/food/slimesoup name = "Slime soup" reqs = list( /datum/reagent/water = 10, @@ -122,7 +122,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/slime category = CAT_FOOD -/datum/table_recipe/clownstears +/datum/crafting_recipe/food/clownstears name = "Clowns tears" reqs = list( /datum/reagent/water = 10, @@ -133,7 +133,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/clownstears category = CAT_FOOD -/datum/table_recipe/mysterysoup +/datum/crafting_recipe/food/mysterysoup name = "Mystery soup" reqs = list( /datum/reagent/water = 10, @@ -146,7 +146,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/mystery category = CAT_FOOD -/datum/table_recipe/mushroomsoup +/datum/crafting_recipe/food/mushroomsoup name = "Mushroom soup" reqs = list( /datum/reagent/consumable/milk = 5, @@ -157,7 +157,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/mushroom category = CAT_FOOD -/datum/table_recipe/beetsoup +/datum/crafting_recipe/food/beetsoup name = "Beet soup" reqs = list( /datum/reagent/water = 10, @@ -168,7 +168,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/beet category = CAT_FOOD -/datum/table_recipe/stew +/datum/crafting_recipe/food/stew name = "Stew" reqs = list( /datum/reagent/water = 10, @@ -183,7 +183,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/stew category = CAT_FOOD -/datum/table_recipe/spacylibertyduff +/datum/crafting_recipe/food/spacylibertyduff name = "Spacy liberty duff" reqs = list( /datum/reagent/consumable/ethanol/vodka = 5, @@ -193,7 +193,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/spacylibertyduff category = CAT_FOOD -/datum/table_recipe/amanitajelly +/datum/crafting_recipe/food/amanitajelly name = "Amanita jelly" reqs = list( /datum/reagent/consumable/ethanol/vodka = 5, @@ -203,7 +203,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/amanitajelly category = CAT_FOOD -/datum/table_recipe/sweetpotatosoup +/datum/crafting_recipe/food/sweetpotatosoup name = "Sweet potato soup" reqs = list( /datum/reagent/water = 10, @@ -214,7 +214,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/sweetpotato category = CAT_FOOD -/datum/table_recipe/redbeetsoup +/datum/crafting_recipe/food/redbeetsoup name = "Red beet soup" reqs = list( /datum/reagent/water = 10, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm index cbbcf0e6b1e..fb0ba863409 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////SPAGHETTI//////////////////////////////////////////////// -/datum/table_recipe/tomatopasta +/datum/crafting_recipe/food/tomatopasta name = "Tomato pasta" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, @@ -12,7 +12,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato category = CAT_FOOD -/datum/table_recipe/copypasta +/datum/crafting_recipe/food/copypasta name = "Copypasta" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastatomato = 2 @@ -20,7 +20,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/copypasta category = CAT_FOOD -/datum/table_recipe/spaghettimeatball +/datum/crafting_recipe/food/spaghettimeatball name = "Spaghetti meatball" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, @@ -29,7 +29,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti category = CAT_FOOD -/datum/table_recipe/spesslaw +/datum/crafting_recipe/food/spesslaw name = "Spesslaw" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, @@ -38,7 +38,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw category = CAT_FOOD -/datum/table_recipe/beefnoodle +/datum/crafting_recipe/food/beefnoodle name = "Beef noodle" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -49,7 +49,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/beefnoodle category = CAT_FOOD -/datum/table_recipe/chowmein +/datum/crafting_recipe/food/chowmein name = "Chowmein" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 2cb75a65e7c..d233ea1362c 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -151,7 +151,7 @@ desc = "The Cross represents the Assistants that died for your sins." icon_state = "hotcrossbun" -/datum/table_recipe/hotcrossbun +/datum/crafting_recipe/food/food/hotcrossbun name = "Hot-Cross Bun" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -175,7 +175,7 @@ icon_state = "briochecake_slice" filling_color = "#FFD700" -/datum/table_recipe/briochecake +/datum/crafting_recipe/food/food/briochecake name = "Brioche cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -193,7 +193,7 @@ filling_color = "#FFFFF0" list_reagents = list("nutriment" = 6) -/datum/table_recipe/scotchegg +/datum/crafting_recipe/food/scotchegg name = "Scotch egg" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -211,7 +211,7 @@ bonus_reagents = list("nutriment" = 3, "vitamin" = 1) list_reagents = list("nutriment" = 8, "vitamin" = 1) -/datum/table_recipe/mammi +/datum/crafting_recipe/food/mammi name = "Mämmi" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -229,7 +229,7 @@ list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) filling_color = "#A0522D" -/datum/table_recipe/chocolatebunny +/datum/crafting_recipe/food/chocolatebunny name = "Chocolate bunny" reqs = list( /datum/reagent/consumable/sugar = 2, diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 4ff2c3d0c03..376aa224aba 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -368,14 +368,14 @@ w_class = 3 burn_state = LAVA_PROOF -/datum/table_recipe/oar +/datum/crafting_recipe/oar name = "goliath bone oar" result = /obj/item/weapon/oar reqs = list(/obj/item/stack/sheet/bone = 2) time = 15 category = CAT_PRIMAL -/datum/table_recipe/boat +/datum/crafting_recipe/boat name = "goliath hide boat" result = /obj/vehicle/lavaboat reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9187f04b1ab..b8c454bdc41 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -47,8 +47,13 @@ martial_art = default_martial_art + handcrafting = new() + ..() +/mob/living/carbon/human/OpenCraftingMenu() + handcrafting.craft(src) + /mob/living/carbon/human/prepare_data_huds() //Update med hud images... ..() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 150dfeca61b..4a1699d80e1 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -54,3 +54,4 @@ var/global/default_martial_art = new/datum/martial_art var/heart_attack = 0 var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects + var/datum/personal_crafting/handcrafting diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index aff9f035297..a04bb808579 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -49,6 +49,9 @@ Sorry Giacom. Please don't be mad :( return QDEL_HINT_HARDDEL_NOW +/mob/living/proc/OpenCraftingMenu() + return + /mob/living/proc/generateStaticOverlay() staticOverlays.Add(list("static", "blank", "letter", "animal")) var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 0b680f72a48..951868c61ca 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -61,7 +61,7 @@ var/seeStatic = 1 //Whether we see static instead of mobs var/visualAppearence = MAINTDRONE //What we appear as var/hacked = 0 //If we have laws to destroy the station - + var/datum/personal_crafting/handcrafting /mob/living/simple_animal/drone/New() ..() @@ -86,6 +86,8 @@ var/datum/action/generic/drone/select_filter/SF = new(src) SF.Grant(src) + + handcrafting = new() var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC] diag_hud.add_to_hud(src) @@ -103,6 +105,8 @@ else holder.icon_state = "hudstat" +/mob/living/simple_animal/drone/OpenCraftingMenu() + handcrafting.craft(src) /mob/living/simple_animal/drone/Destroy() qdel(access_card) //Otherwise it ends up on the floor! diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index c93db65fd7e..c2da9e8e227 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -117,7 +117,8 @@ var/see_ghosts = 0 //for the spoop of it -/obj/item/device/camera/CheckParts() +/obj/item/device/camera/CheckParts(list/parts_list) + ..() var/obj/item/device/camera/C = locate(/obj/item/device/camera) in contents if(C) pictures_max = C.pictures_max diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 1679cc941c8..25a8fa2a00b 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -78,7 +78,8 @@ build_zooming() -/obj/item/weapon/gun/CheckParts() +/obj/item/weapon/gun/CheckParts(list/parts_list) + ..() var/obj/item/weapon/gun/G = locate(/obj/item/weapon/gun) in contents if(G) G.loc = loc diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index b028b1d8bc1..d1af9041bc8 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -634,6 +634,9 @@ var/const/INJECT = 5 //injection return trans_data +/datum/reagents/proc/get_reagent(type) + . = locate(type) in reagent_list + /////////////////////////////////////////////////////////////////////////////////// diff --git a/icons/mob/screen_midnight.dmi b/icons/mob/screen_midnight.dmi index 25a9c6a0ba74702caee88de8cc2f7338cffc72a9..64fd70f2d231c3f9bfe0d33e9ebb8199a4f7c5fc 100644 GIT binary patch delta 8172 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 S$pBLT0000%ko^=k^<>%bw3jc}uplR{=Cbe}6f3 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 UUL*_L4FCWD07*qoM6N<$g7%2HTmS$7 diff --git a/icons/mob/screen_operative.dmi b/icons/mob/screen_operative.dmi index dcc14d4c02ac443fc22b6e1ca2c5ceb72cb2ff5b..d6f99ea857467f1a3c0808a22a15121f52fcd5f1 100644 GIT binary patch delta 11320 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±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 delta 11179 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 JPDHLkV1mW-!N~vs diff --git a/icons/mob/screen_plasmafire.dmi b/icons/mob/screen_plasmafire.dmi index ec39083d844618a8a9d2f3a0b9ad463e48443136..a3334dc8b5197fe0af7201b2a9c68c1adeb9d5c4 100644 GIT binary patch delta 9026 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 diff --git a/icons/mob/screen_retro.dmi b/icons/mob/screen_retro.dmi index e3622f43c8b615755e46c544a53661f88958f856..088b44f2396342655a2048b7d9f9967477e62a23 100644 GIT binary patch delta 10508 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 diff --git a/icons/mob/screen_slimecore.dmi b/icons/mob/screen_slimecore.dmi index 7df6854513db612a27ea47ad027a8049b8054ac5..69787bb22994c16ffe14539a9f83fece84253121 100644 GIT binary patch delta 9348 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 diff --git a/tgstation.dme b/tgstation.dme index 92203edee82..c33fc2d2edd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1011,9 +1011,9 @@ #include "code\modules\clothing\under\jobs\engineering.dm" #include "code\modules\clothing\under\jobs\medsci.dm" #include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\crafting\craft.dm" #include "code\modules\crafting\guncrafting.dm" #include "code\modules\crafting\recipes.dm" -#include "code\modules\crafting\table.dm" #include "code\modules\detectivework\detective_work.dm" #include "code\modules\detectivework\evidence.dm" #include "code\modules\detectivework\footprints_and_rag.dm"