mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
Merge pull request #1564 from FalseIncarnate/master
Kitchen Overhaul 2: Table Edition
This commit is contained in:
@@ -6,7 +6,13 @@
|
||||
var/time = 30 //time in deciseconds
|
||||
var/parts[] = list() //type paths of items that will be placed in the result
|
||||
var/chem_catalists[] = list() //like tools but for reagents
|
||||
var/fruit[] = list() //grown products required by the recipe
|
||||
|
||||
/datum/table_recipe/proc/AdjustChems(var/obj/resultobj as obj)
|
||||
//This proc is to replace the make_food proc of recipes from microwaves and such that are being converted to table crafting recipes.
|
||||
//Use it to handle the removal of reagents after the food has been created (like removing toxins from a salad made with ambrosia)
|
||||
//If a recipe does not require it's chems adjusted, don't bother declaring this for the recipe, as it will call this placeholder
|
||||
return
|
||||
|
||||
/datum/table_recipe/IED
|
||||
name = "IED"
|
||||
|
||||
@@ -11,6 +11,13 @@
|
||||
/obj/structure/table/proc/check_contents(datum/table_recipe/R)
|
||||
check_table()
|
||||
main_loop:
|
||||
if(R.fruit)
|
||||
for(var/A in R.fruit)
|
||||
for(var/B in table_contents)
|
||||
if(B == A)
|
||||
if(table_contents[B] >= R.fruit[A])
|
||||
continue main_loop
|
||||
return 0
|
||||
for(var/A in R.reqs)
|
||||
for(var/B in table_contents)
|
||||
if(ispath(B, A))
|
||||
@@ -28,6 +35,10 @@
|
||||
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/food/snacks/grown))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = I
|
||||
if(G.seed && G.seed.kitchen_tag)
|
||||
table_contents[G.seed.kitchen_tag] += 1
|
||||
else
|
||||
if(istype(I, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = I
|
||||
@@ -75,6 +86,7 @@
|
||||
I.reagents = new /datum/reagents()
|
||||
I.reagents.reagent_list.Add(A)
|
||||
I.CheckParts()
|
||||
R.AdjustChems(I)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -84,6 +96,19 @@
|
||||
var/reagenttransfer = 0
|
||||
if(istype(resultobject,/obj/item/weapon/reagent_containers))
|
||||
reagenttransfer = 1
|
||||
if(R.fruit)
|
||||
for(var/A in R.fruit)
|
||||
amt = R.fruit[A]
|
||||
fruit_loop: //ha
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in loc)
|
||||
if(G.seed && G.seed.kitchen_tag && (G.seed.kitchen_tag == A))
|
||||
amt--
|
||||
G.loc = null //remove it from the table loc so that we don't locate the same fruit every time
|
||||
if(reagenttransfer)
|
||||
G.reagents.trans_to(resultobject, G.reagents.total_volume)
|
||||
qdel(G)
|
||||
if(amt <= 0)
|
||||
break fruit_loop
|
||||
for(var/A in R.reqs)
|
||||
amt = R.reqs[A]
|
||||
if(ispath(A, /obj/item/stack))
|
||||
|
||||
@@ -327,19 +327,11 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips
|
||||
|
||||
/datum/recipe/microwave/sandwich
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatsteak,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sandwich
|
||||
|
||||
/datum/recipe/microwave/toastedsandwich
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sandwich
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
|
||||
|
||||
/datum/recipe/microwave/tomatosoup
|
||||
reagents = list("water" = 10)
|
||||
@@ -453,20 +445,6 @@
|
||||
fruit = list("apple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple
|
||||
|
||||
/datum/recipe/microwave/slimeburger
|
||||
reagents = list("slimejelly" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
|
||||
|
||||
/datum/recipe/microwave/jellyburger
|
||||
reagents = list("cherryjelly" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
|
||||
|
||||
/datum/recipe/microwave/twobread
|
||||
reagents = list("wine" = 5)
|
||||
items = list(
|
||||
@@ -475,22 +453,6 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/twobread
|
||||
|
||||
/datum/recipe/microwave/slimesandwich
|
||||
reagents = list("slimejelly" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
|
||||
|
||||
/datum/recipe/microwave/cherrysandwich
|
||||
reagents = list("cherryjelly" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
|
||||
|
||||
/datum/recipe/microwave/bloodsoup
|
||||
reagents = list("blood" = 10)
|
||||
fruit = list("bloodtomato" = 2)
|
||||
@@ -556,39 +518,8 @@
|
||||
fruit = list("whitebeet" = 1, "cabbage" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/beetsoup
|
||||
|
||||
/datum/recipe/microwave/herbsalad
|
||||
fruit = list("ambrosia" = 3, "apple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/herbsalad
|
||||
make_food(var/obj/container as obj)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/herbsalad/being_cooked = ..(container)
|
||||
being_cooked.reagents.del_reagent("toxin")
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/microwave/aesirsalad
|
||||
fruit = list("ambrosiadeus" = 3, "goldapple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/aesirsalad
|
||||
|
||||
/datum/recipe/microwave/validsalad
|
||||
fruit = list("ambrosia" = 3, "potato" = 1)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatball,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/validsalad
|
||||
make_food(var/obj/container as obj)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked = ..(container)
|
||||
being_cooked.reagents.del_reagent("toxin")
|
||||
return being_cooked
|
||||
|
||||
////////////////////////////FOOD ADDITTIONS///////////////////////////////
|
||||
|
||||
/datum/recipe/microwave/wrap
|
||||
reagents = list("soysauce" = 10)
|
||||
fruit = list("cabbage" = 1)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedegg,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/wrap
|
||||
|
||||
/datum/recipe/microwave/beans
|
||||
reagents = list("ketchup" = 5)
|
||||
fruit = list("soybeans" = 2)
|
||||
@@ -618,14 +549,6 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich
|
||||
|
||||
/datum/recipe/microwave/notasandwich
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/clothing/mask/fakemoustache,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich
|
||||
|
||||
/datum/recipe/microwave/friedbanana
|
||||
reagents = list("sugar" = 10, "cornoil" = 5)
|
||||
fruit = list("banana" = 1)
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
/* Example for reference when defining recipes
|
||||
/datum/table_recipe/food
|
||||
name = "" //in-game display name
|
||||
reqs[] = list() //type paths of items/reagents consumed associated with how many are needed (equivalent to var/list/items and var/list/reagents combined)
|
||||
result //type path of item resulting from this craft
|
||||
tools[] = list() //type paths of items needed but not consumed
|
||||
time = 30 //time in deciseconds
|
||||
parts[] = list() //type paths of items that will be placed in the result
|
||||
fruit[] = list() //grown products required by the recipe
|
||||
*/
|
||||
|
||||
/datum/table_recipe/sandwich
|
||||
name = "Sandwich"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatsteak = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sandwich
|
||||
|
||||
/datum/table_recipe/slimesandwich
|
||||
name = "Slime Jelly Sandwich"
|
||||
reqs = list(
|
||||
/datum/reagent/slimejelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
|
||||
|
||||
/datum/table_recipe/cherrysandwich
|
||||
name = "Cherry Jelly Sandwich"
|
||||
reqs = list(
|
||||
/datum/reagent/cherryjelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
|
||||
|
||||
/datum/table_recipe/slimeburger
|
||||
name = "Slime Jelly Burger"
|
||||
reqs = list(
|
||||
/datum/reagent/slimejelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
|
||||
|
||||
/datum/table_recipe/jellyburger
|
||||
name = "Cherry Jelly Burger"
|
||||
reqs = list(
|
||||
/datum/reagent/cherryjelly = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bun = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
|
||||
|
||||
/datum/table_recipe/herbsalad
|
||||
name = "herb salad"
|
||||
fruit = list("ambrosia" = 3, "apple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/herbsalad
|
||||
|
||||
/datum/table_recipe/herbsalad/AdjustChems(var/obj/resultobj as obj)
|
||||
if(istype(resultobj, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = resultobj
|
||||
RC.reagents.del_reagent("toxin")
|
||||
|
||||
/datum/table_recipe/aesirsalad
|
||||
name = "Aesir salad"
|
||||
fruit = list("ambrosiadeus" = 3, "goldapple" = 1)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/aesirsalad
|
||||
|
||||
/datum/table_recipe/validsalad
|
||||
name = "valid salad"
|
||||
fruit = list("ambrosia" = 3, "potato" = 1)
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatball = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/validsalad
|
||||
|
||||
/datum/table_recipe/validsalad/AdjustChems(var/obj/resultobj as obj)
|
||||
if(istype(resultobj, /obj/item/weapon/reagent_containers))
|
||||
var/obj/item/weapon/reagent_containers/RC = resultobj
|
||||
RC.reagents.del_reagent("toxin")
|
||||
|
||||
/datum/table_recipe/notasandwich
|
||||
name = "not-a-sandwich"
|
||||
reqs = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice = 2,
|
||||
/obj/item/clothing/mask/fakemoustache = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/notasandwich
|
||||
|
||||
/datum/table_recipe/wrap
|
||||
name = "egg wrap"
|
||||
fruit = list("cabbage" = 1)
|
||||
reqs = list(
|
||||
/datum/reagent/soysauce = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedegg = 1,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/wrap
|
||||
@@ -144,34 +144,36 @@
|
||||
..() // -> item/attackby(, params)
|
||||
|
||||
if(istype(W,/obj/item/weapon/kitchen/utensil))
|
||||
//This will allow forks/spoons/plastic cutlery to pick up sliceables, but requires it to be unsliceable for the knife to pick it up
|
||||
if((istype(W, /obj/item/weapon/kitchen/utensil/knife) && !slice_path) || !istype(W, /obj/item/weapon/kitchen/utensil/knife))
|
||||
|
||||
var/obj/item/weapon/kitchen/utensil/U = W
|
||||
var/obj/item/weapon/kitchen/utensil/U = W
|
||||
|
||||
if(!U.reagents)
|
||||
U.create_reagents(5)
|
||||
if(!U.reagents)
|
||||
U.create_reagents(5)
|
||||
|
||||
if (U.reagents.total_volume > 0)
|
||||
user << "\red You already have something on your [U]."
|
||||
if (U.reagents.total_volume > 0)
|
||||
user << "\red You already have something on your [U]."
|
||||
return
|
||||
|
||||
user.visible_message( \
|
||||
"[user] scoops up some [src] with \the [U]!", \
|
||||
"\blue You scoop up some [src] with \the [U]!" \
|
||||
)
|
||||
|
||||
src.bitecount++
|
||||
U.overlays.Cut()
|
||||
U.loaded = "[src]"
|
||||
var/image/I = new(U.icon, "loadedfood")
|
||||
I.color = src.filling_color
|
||||
U.overlays += I
|
||||
|
||||
reagents.trans_to(U,min(reagents.total_volume,5))
|
||||
|
||||
if (reagents.total_volume <= 0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
user.visible_message( \
|
||||
"[user] scoops up some [src] with \the [U]!", \
|
||||
"\blue You scoop up some [src] with \the [U]!" \
|
||||
)
|
||||
|
||||
src.bitecount++
|
||||
U.overlays.Cut()
|
||||
U.loaded = "[src]"
|
||||
var/image/I = new(U.icon, "loadedfood")
|
||||
I.color = src.filling_color
|
||||
U.overlays += I
|
||||
|
||||
reagents.trans_to(U,min(reagents.total_volume,5))
|
||||
|
||||
if (reagents.total_volume <= 0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if((slices_num <= 0 || !slices_num) || !slice_path)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -10,7 +10,12 @@
|
||||
src.bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/weapon/kitchen/utensil/knife))
|
||||
if( \
|
||||
istype(W, /obj/item/weapon/kitchenknife) || \
|
||||
istype(W, /obj/item/weapon/butch) || \
|
||||
istype(W, /obj/item/weapon/scalpel) || \
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/knife) \
|
||||
)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
|
||||
Reference in New Issue
Block a user