Merge pull request #1564 from FalseIncarnate/master

Kitchen Overhaul 2: Table Edition
This commit is contained in:
Fox-McCloud
2015-07-26 23:46:51 -04:00
7 changed files with 160 additions and 102 deletions
+6
View File
@@ -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"
+25
View File
@@ -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))
+1 -78
View File
@@ -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)
+96
View File
@@ -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)