diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm
index 9f874d424c5..368a8ae506c 100644
--- a/code/ATMOSPHERICS/components/unary/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm
@@ -6,6 +6,7 @@
desc = "Has a valve and pump attached to it"
level = 1
+ layer = TURF_LAYER
var/area_uid
var/id_tag = null
diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
index 6c427baab38..a55e38140b1 100644
--- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
@@ -6,6 +6,7 @@
desc = "Has a valve and pump attached to it"
level = 1
+ layer = TURF_LAYER
var/id_tag = null
var/frequency = 1439
diff --git a/code/WorkInProgress/Chemistry-Holder.dm b/code/WorkInProgress/Chemistry-Holder.dm
index de22a277f0f..3711feabe55 100644
--- a/code/WorkInProgress/Chemistry-Holder.dm
+++ b/code/WorkInProgress/Chemistry-Holder.dm
@@ -5,7 +5,7 @@
datum
reagents
- var/list/reagent_list = new/list()
+ var/list/datum/reagent/reagent_list = new/list()
var/total_volume = 0
var/maximum_volume = 100
var/atom/my_atom = null
diff --git a/code/WorkInProgress/Chemistry-Reagents.dm b/code/WorkInProgress/Chemistry-Reagents.dm
index 1266f6b6897..2b470288d54 100644
--- a/code/WorkInProgress/Chemistry-Reagents.dm
+++ b/code/WorkInProgress/Chemistry-Reagents.dm
@@ -426,7 +426,7 @@ datum
reagent_state = GAS
on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
- usr.take_organ_damage(1, 0)
+ M.take_organ_damage(1, 0)
..()
return
@@ -485,7 +485,7 @@ datum
on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
M:toxloss++
- usr.take_organ_damage(0, 1)
+ M.take_organ_damage(0, 1)
..()
return
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
@@ -530,7 +530,7 @@ datum
on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
M:toxloss++
- usr.take_organ_damage(0, 1)
+ M.take_organ_damage(0, 1)
..()
return
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
@@ -864,7 +864,7 @@ datum
on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
if(prob(33))
- usr.take_organ_damage(1, 0)
+ M.take_organ_damage(1, 0)
M:oxyloss += 3
if(prob(20)) M:emote("gasp")
..()
@@ -1037,7 +1037,7 @@ datum
M:radiation = max(M:radiation-3,0)
if(M:toxloss) M:toxloss--
if(prob(15))
- usr.take_organ_damage(1, 0)
+ M.take_organ_damage(1, 0)
..()
return
@@ -1317,7 +1317,7 @@ datum
if(!M) M = holder.my_atom
M:bodytemperature += 5
if(prob(40))
- usr.take_organ_damage(0, 1)
+ M.take_organ_damage(0, 1)
..()
return
@@ -1331,7 +1331,7 @@ datum
if(!M) M = holder.my_atom
M:bodytemperature -= 5
if(prob(40))
- usr.take_organ_damage(0, 1)
+ M.take_organ_damage(0, 1)
..()
return
diff --git a/code/WorkInProgress/Chemistry-Recipes.dm b/code/WorkInProgress/Chemistry-Recipes.dm
index c4bfddcdcf4..32275def76e 100644
--- a/code/WorkInProgress/Chemistry-Recipes.dm
+++ b/code/WorkInProgress/Chemistry-Recipes.dm
@@ -520,7 +520,7 @@ datum
result_amount = 1
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
- new /obj/item/weapon/reagent_containers/food/snacks/cheesewheel(location)
+ new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
return
icetea
diff --git a/code/WorkInProgress/Chemistry-Tools.dm b/code/WorkInProgress/Chemistry-Tools.dm
index c270abe3544..72594cd6942 100644
--- a/code/WorkInProgress/Chemistry-Tools.dm
+++ b/code/WorkInProgress/Chemistry-Tools.dm
@@ -908,7 +908,6 @@
user << "\blue [trans] units injected. [reagents.total_volume] units remaining in the hypospray."
return
-
////////////////////////////////////////////////////////////////////////////////
/// Food.
////////////////////////////////////////////////////////////////////////////////
@@ -1014,7 +1013,54 @@
usr << "\blue \The [src] was bitten [bitecount] times!"
else
usr << "\blue \The [src] was bitten multiple times!"
-
+
+/obj/item/weapon/reagent_containers/food/snacks/sliceable
+ var/slice_path
+ var/slices_num
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ var/inaccurate = 0
+ if( \
+ istype(W, /obj/item/weapon/kitchenknife) || \
+ istype(W, /obj/item/weapon/scalpel) || \
+ istype(W, /obj/item/weapon/kitchen/utensil/knife) \
+ )
+ else if( \
+ istype(W, /obj/item/weapon/circular_saw) || \
+ istype(W, /obj/item/weapon/sword) && W:active || \
+ istype(W, /obj/item/weapon/blade) || \
+ istype(W, /obj/item/weapon/shovel) \
+ )
+ inaccurate = 1
+ return
+ else
+ return 1
+ if ( \
+ !isturf(src.loc) || \
+ !(locate(/obj/table) in src.loc) && \
+ !(locate(/obj/machinery/optable) in src.loc) && \
+ !(locate(/obj/item/weapon/tray) in src.loc) \
+ )
+ user << "\red You cannot slice [src] here! You need a table or at least a tray to do it."
+ return 1
+ var/slices_lost = 0
+ if (!inaccurate)
+ user.visible_message( \
+ "\blue [user] slices \the [src]!", \
+ "\blue You slice \the [src]!" \
+ )
+ else
+ user.visible_message( \
+ "\blue [user] inaccurate slices \the [src] with [W]!", \
+ "\blue You inaccurate slice \the [src] with your [W]!" \
+ )
+ slices_lost = rand(1,min(1,round(slices_num/2)))
+ var/reagents_per_slice = reagents.total_volume/slices_num
+ for(var/i=1 to (slices_num-slices_lost))
+ var/obj/slice = new slice_path (src.loc)
+ reagents.trans_to(slice,reagents_per_slice)
+ del(src)
+ return
+
////////////////////////////////////////////////////////////////////////////////
/// FOOD END
@@ -1579,817 +1625,10 @@
reagents.add_reagent("spaceacillin", 15)
update_icon()
+////////////////////////////////////////////////////////////////////////////////
+/// Concrete food moved to code/modules/food/food.dm
+/////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////
-////////////////////////////////////////////Snacks
-//////////////////////////////////////////////////
-//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created
-// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten.
-
-//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40
-// total for the item because you want to leave space for extra condiments. If you want effects besides healing, add a reagent for
-// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use
-// effects (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way).
-
-//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to
-// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a
-// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all
-// the bites. No more contained reagents = no more bites.
-
-//Here is an example of the new formatting for anyone who wants to add more food items.
-///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object.
-// name = "Xenoburger" //Name that displays in the UI.
-// desc = "Smells caustic. Tastes like heresy." //Duh
-// icon_state = "xburger" //Refers to an icon in food.dmi
-// New() //Don't mess with this.
-// ..() //Same here.
-// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste
-// reagents.add_reagent("nutriment", 2) // this line of code for all the contents.
-// bitesize = 3 //This is the amount each bite consumes.
-
-/obj/item/weapon/reagent_containers/food/snacks/banana
- name = "Banana"
- desc = "A banana."
- icon = 'items.dmi'
- icon_state = "banana"
- item_state = "banana"
- On_Consume()
- var/mob/M = usr
- var/obj/item/weapon/bananapeel/W = new /obj/item/weapon/bananapeel( M )
- M << "\blue You peel the banana."
- M.put_in_hand(W)
- W.add_fingerprint(M)
- New()
- ..()
- reagents.add_reagent("banana", 5)
- bitesize = 5
- src.pixel_x = rand(-5.0, 5)
- src.pixel_y = rand(-5.0, 5)
-
-/obj/item/weapon/reagent_containers/food/snacks/candy
- name = "candy"
- desc = "Nougat love it or hate it."
- icon_state = "candy"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/candy_corn
- name = "candy corm" //Not a typo
- desc = "It's a handful of candy corm. Can be stored in a detective's hat."
- icon_state = "candy_corn"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/chips
- name = "chips"
- desc = "Commander Riker's What-The-Crisps"
- icon_state = "chips"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/donut
- name = "donut"
- desc = "Goes great with Robust Coffee."
- icon_state = "donut1"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("sprinkles", 1)
- if(prob(30))
- src.icon_state = "donut2"
- src.name = "frosted donut"
- src.bitesize = 2
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("sprinkles", 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/egg
- name = "egg"
- desc = "An egg!"
- icon_state = "egg"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/flour
- name = "flour"
- desc = "Some flour"
- icon_state = "flour"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/humanmeat
- name = "-meat"
- desc = "A slab of meat"
- icon_state = "meat"
- var/subjectname = ""
- var/subjectjob = null
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/tofu
- name = "Tofu"
- icon_state = "tofu"
- desc = "We all love tofu."
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/monkeymeat
- name = "meat"
- desc = "A slab of meat"
- icon_state = "meat"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/carpmeat
- name = "carp fillet"
- desc = "A fillet of spess carp meat"
- icon_state = "fishfillet"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("carpotoxin", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/xenomeat
- name = "meat"
- desc = "A slab of meat"
- icon_state = "xenomeat"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/faggot
- name = "Faggot"
- desc = "A great meal all round. Not a cord of wood."
- icon_state = "faggot"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/donkpocket
- name = "Donk-pocket"
- desc = "The food of choice for the seasoned traitor."
- icon_state = "donkpocket"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- var/warm = 0
- proc/cooltime() //Not working, derp?
- if (src.warm)
- spawn( 4200 )
- src.warm = 0
- src.reagents.del_reagent("tricordrazine")
- src.name = "donk-pocket"
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/brainburger
- name = "brainburger"
- desc = "A strange looking burger. It looks almost sentient."
- icon_state = "brainburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/humanburger
- name = "-burger"
- var/hname = ""
- var/job = null
- desc = "A bloody burger."
- icon_state = "hburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/monkeyburger
- name = "burger"
- desc = "The cornerstone of every nutritious breakfast."
- icon_state = "hburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/fishburger
- name = "Fillet -o- Carp Sandwich"
- desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp."
- icon_state = "fishburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- reagents.add_reagent("carpotoxin", 3)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tofuburger
- name = "Tofu Burger"
- desc = "What.. is that meat?"
- icon_state = "tofuburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/roburger
- name = "roburger"
- desc = "The lettuce is the only organic component. Beep."
- icon_state = "roburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("nanites", 10)
- bitesize = 3
-
-
-/obj/item/weapon/reagent_containers/food/snacks/roburgerbig
- name = "roburger"
- desc = "This massive patty looks like poison. Beep."
- icon_state = "roburger"
- volume = 100
- New()
- ..()
- reagents.add_reagent("nanites", 100)
- bitesize = 0.1
-
-/obj/item/weapon/reagent_containers/food/snacks/xenoburger
- name = "xenoburger"
- desc = "Smells caustic. Tastes like heresy."
- icon_state = "xburger"
- New()
- ..()
- reagents.add_reagent("xenomicrobes", 10)
- reagents.add_reagent("nutriment", 2)
- bitesize = 3
-
-/obj/item/weapon/reagent_containers/food/snacks/clownburger
- name = "Clown Burger"
- desc = "This tastes funny..."
- icon_state = "clownburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/mimeburger
- name = "Mime Burger"
- desc = "It's taste defies language."
- icon_state = "mimeburger"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/omelette
- name = "Omelette Du Fromage"
- desc = "That's all you can say!"
- icon_state = "omelette"
- var/herp = 0
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 1
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/weapon/kitchen/utensil/fork))
- if (W.icon_state == "forkloaded")
- user << "\red You already have omelette on your fork."
- return
- W.icon = 'kitchen.dmi'
- W.icon_state = "forkloaded"
- /*if (herp)
- world << "[user] takes a piece of omelette with his fork!"*/ //Why this unecessary check? Oh I know, because I'm bad >:C
- viewers(3,user) << "[user] takes a piece of omelette with their fork!"
- reagents.remove_reagent("nutriment", 1)
- if (reagents.total_volume <= 0)
- del(src)
-
-/obj/item/weapon/reagent_containers/food/snacks/omeletteforkload
- name = "Omelette Du Fromage"
- desc = "That's all you can say!"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/muffin
- name = "Muffin"
- desc = "A delicious and spongy little cake"
- icon_state = "muffin"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
-
-/obj/item/weapon/reagent_containers/food/snacks/pie
- name = "Banana Cream Pie"
- desc = "Just like back home, on clown planet! HONK!"
- icon_state = "pie"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("banana",5)
-
-/obj/item/weapon/reagent_containers/food/snacks/berrypie
- name = "Very Berry Pie"
- desc = "No black birds, this is a good sign."
- icon_state = "pie"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("berryjuice", 5)
-
-/obj/item/weapon/reagent_containers/food/snacks/waffles
- name = "waffles"
- desc = "Mmm, waffles"
- icon_state = "waffles"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/eggplantparm
- name = "Eggplant Parmigiana"
- desc = "The only good recipe for eggplant."
- icon_state = "eggplantparm"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/jellydonut
- name = "Jelly Donut"
- desc = "Oh so gooey on the inside."
- icon_state = "donut1" //Placeholder until I stop being lazy. ie. Never. -- Darem
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("sprinkles", 3)
- bitesize = 2
- if(prob(30))
- src.icon_state = "donut2"
- src.name = "Frosted Jelly Donut"
- reagents.add_reagent("nutriment", 3)
- reagents.add_reagent("sprinkles", 3)
- bitesize = 4
-
-/obj/item/weapon/reagent_containers/food/snacks/soylentgreen
- name = "Soylent Green"
- desc = "Not made of people. Honest." //Totally people.
- icon_state = "soylent"
- New()
- ..()
- reagents.add_reagent("nutriment", 14)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/soylenviridians
- name = "Soylen Virdians"
- desc = "Not made of people. Honest." //Actually honest for once.
- icon_state = "soylent"
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/humeatpie
- name = "Meat-pie"
- var/hname = ""
- var/job = null
- icon_state = "meatpie"
- desc = "The best meatpies on station."
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/momeatpie
- name = "Meat-pie"
- icon_state = "meatpie"
- desc = "A delicious meatpie."
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tofupie
- name = "Tofu-pie"
- icon_state = "meatpie"
- desc = "A delicious tofu pie."
- New()
- ..()
- reagents.add_reagent("nutriment", 10)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/xemeatpie
- name = "Xeno-pie"
- icon_state = "xenomeatpie"
- desc = "A delicious meatpie. Probably heretical."
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- bitesize = 4
- reagents.add_reagent("xenomicrobes", 10)
-
-/obj/item/weapon/reagent_containers/food/snacks/wingfangchu
- name = "Wing Fang Chu"
- desc = "A savory dish of alien wing wang in soy."
- icon_state = "wingfangchu"
- New()
- ..()
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("xenomicrobes", 5)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/chaosdonut
- name = "Chaos Donut"
- desc = "Like life, it never quite tastes the same."
- icon_state = "donut1"
- New()
- ..()
- reagents.add_reagent("nutriment", 3)
- bitesize = 2
- if(prob(30))
- src.icon_state = "donut2"
- src.name = "Frosted Chaos Donut"
- var/temp_chaos = pick(1, 2, 3)
- if(temp_chaos == 1)
- reagents.add_reagent("capsaicin", 3)
- else if(temp_chaos == 2)
- reagents.add_reagent("frostoil", 3)
- else if(temp_chaos == 3)
- reagents.add_reagent("nutriment", 3)
-
-/obj/item/weapon/reagent_containers/food/snacks/humankabob
- name = "-kabob"
- var/hname = ""
- var/job = null
- icon_state = "kabob"
- desc = "A delicious kabob"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/monkeykabob
- name = "Meat-kabob"
- icon_state = "kabob"
- desc = "A delicious kabob"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tofukabob
- name = "Tofu-kabob"
- icon_state = "kabob"
- desc = "A delicious kabob"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cubancarp
- name = "Cuban Carp"
- desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!"
- icon_state = "cubancarp"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("carpotoxin", 3)
- reagents.add_reagent("capsaicin", 3)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/popcorn
- name = "Popcorm" //not a typo
- desc = "Now let's find some cinema."
- icon_state = "popcorn"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0
-
-/obj/item/weapon/reagent_containers/food/snacks/sosjerky
- name = "Scaredy's Private Reserve Beef Jerky"
- icon_state = "sosjerky"
- desc = "Beef jerky made from the finest space cows."
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/no_raisin
- name = "4no Raisins"
- icon_state = "4no_raisins"
- desc = "Best raisins in the universe. Not sure why."
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
-
-/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie
- name = "Space Twinkie"
- icon_state = "space_twinkie"
- desc = "Guaranteed to survive longer then you will."
- New()
- ..()
- reagents.add_reagent("sugar", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers
- name = "Cheesie Honkers"
- icon_state = "cheesie_honkers"
- desc = "Bite sized cheesie snacks that will honk all over your mouth"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/syndicake
- name = "Syndi-Cakes"
- icon_state = "syndi_cakes"
- desc = "An extremely moist snack cake that tastes just as good after being nuked."
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("syndicream", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
- name = "Loaded Baked Potato"
- desc = "Totally baked."
- icon_state = "loadedbakedpotato"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/fries
- name = "Space Fries"
- desc = "AKA: French Fries, Freedom Fries, etc"
- icon_state = "fries"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesyfries
- name = "Cheesy Fries"
- desc = "Fries. Covered in cheese. Duh."
- icon_state = "cheesyfries"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/////////////////////////////////////////////////Sliceable////////////////////////////////////////
-// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels
-
-/obj/item/weapon/reagent_containers/food/snacks/meatbread
- name = "meatbread loaf"
- desc = "The culinary base of every self-respecting eloquen/tg/entleman."
- icon_state = "meatbread"
- New()
- ..()
- reagents.add_reagent("nutriment", 40)
- bitesize = 2
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the meatbread! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
- del(src)
- return
- if(istype(W, /obj/item/weapon/circular_saw))
- W.visible_message(" \red You inaccurate slice the meatbread with your [W]! ", 1)
- for(var/i=0,i<3,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
- name = "meatbread slice"
- desc = "A slice of delicious meatbread."
- icon_state = "meatbreadslice"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/xenomeatbread
- name = "xenomeatbread loaf"
- desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical."
- icon_state = "xenomeatbread"
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("xenomicrobes", 35)
- bitesize = 2
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the xenomeatbread! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice (src.loc)
- del(src)
- return
- if(istype(W, /obj/item/weapon/circular_saw))
- W.visible_message(" \red You inaccurate slice the xenomeatbread with your [W]! ", 1)
- for(var/i=0,i<3,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
- name = "xenomeatbread slice"
- desc = "A slice of delicious meatbread. Extra Heretical."
- icon_state = "xenobreadslice"
- New()
- ..()
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("xenomicrobes", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/bananabread
- name = "Banana-nut bread"
- desc = "A heavenly and filling treat."
- icon_state = "tofubread" //filler sprite till there is a banana bread sprite
- New()
- ..()
- reagents.add_reagent("banana", 20)
- reagents.add_reagent("nutriment", 20)
- bitesize = 2
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the banana bread! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice (src.loc)
- del(src)
- return
- if(istype(W, /obj/item/weapon/circular_saw))
- W.visible_message(" \red You inaccurately slice the banana bread with your [W]! ", 1)
- for(var/i=0,i<3,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
- name = "Banana-nut bread slice"
- desc = "A slice of delicious banana bread."
- icon_state = "tofubreadslice" //Filler sprite
- New()
- ..()
- reagents.add_reagent("banana", 4)
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/tofubread
- name = "Tofubread"
- icon_state = "Like meatbread but for vegetarians. Not guaranteed to give superpowers."
- icon_state = "tofubread"
- New()
- ..()
- reagents.add_reagent("nutriment", 40)
- bitesize = 2
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the tofubread! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
- del(src)
- return
- if(istype(W, /obj/item/weapon/circular_saw))
- W.visible_message(" \red You inaccurate slice the tofubread with your [W]! ", 1)
- for(var/i=0,i<3,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
- name = "Tofubread slice"
- desc = "A slice of delicious tofubread."
- icon_state = "tofubreadslice"
- New()
- ..()
- reagents.add_reagent("nutriment", 8)
- bitesize = 2
-
-
-/obj/item/weapon/reagent_containers/food/snacks/carrotcake
- name = "Carrot Cake"
- desc = "A favorite desert of a certain wascally wabbit. Not a lie."
- icon_state = "carrotcake"
- New()
- ..()
- reagents.add_reagent("nutriment", 30)
- reagents.add_reagent("imidazoline", 10)
- bitesize = 2
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the [src]! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
- name = "Carrot Cake slice"
- desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie."
- icon_state = "carrotcake_slice"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- reagents.add_reagent("imidazoline", 2)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesecake
- name = "Cheese Cake"
- desc = "DANGEROUSLY cheesy."
- icon_state = "cheesecake"
- New()
- ..()
- reagents.add_reagent("nutriment", 30)
- bitesize = 2
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the [src]! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
- name = "Cheese Cake slice"
- desc = "Slice of pure cheestisfaction"
- icon_state = "cheesecake_slice"
- New()
- ..()
- reagents.add_reagent("nutriment", 6)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/plaincake
- name = "Vanilla Cake"
- desc = "A plain cake, not a lie."
- icon_state = "plaincake"
- New()
- ..()
- reagents.add_reagent("nutriment", 25)
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the [src]! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
- name = "Vanilla Cake slice"
- desc = "Just a slice of cake, it is enough for everyone."
- icon_state = "plaincake_slice"
- New()
- ..()
- reagents.add_reagent("nutriment", 5)
- bitesize = 2
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesewheel
- name = "Cheese wheel"
- desc = "A big wheel of delcious Cheddar."
- icon_state = "cheesewheel"
- New()
- ..()
- reagents.add_reagent("nutriment", 20)
- bitesize = 2
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/kitchenknife /* || /obj/item/weapon/scalpel*/))
- W.visible_message(" \red You slice the cheese! ", 1)
- for(var/i=0,i<5,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
- del(src)
- return
- if(istype(W, /obj/item/weapon/circular_saw))
- W.visible_message(" \red You inaccurate slice the cheese with your [W]! ", 1)
- for(var/i=0,i<3,i++)
- new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
- del(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
- name = "Cheese wedge"
- desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far."
- icon_state = "cheesewedge"
- New()
- ..()
- reagents.add_reagent("nutriment", 4)
- bitesize = 2
///////////////////////////////////////////////Condiments
//Notes by Darem: The condiments food-subtype is for stuff you don't actually eat but you use to modify existing food. They all
diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm
new file mode 100644
index 00000000000..92bb19fae29
--- /dev/null
+++ b/code/datums/recipe.dm
@@ -0,0 +1,117 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ * /datum/recipe by rastaf0 13 apr 2011 *
+ * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This is powerful and flexible recipe system.
+ * It exists not only for food.
+ * supports both reagents and objects as prerequisites.
+ * In order to use this system you have to define a deriative from /datum/recipe
+ * * reagents are reagents. Acid, milc, booze, etc.
+ * * items are objects. Fruits, tools, circuit boards.
+ * * result is type to create as new object
+ * * time is optional parameter, you shall use in in your machine,
+ default /datum/recipe/ procs does not rely on this parameter.
+ *
+ * Functions you need:
+ * /datum/recipe/proc/make(var/obj/container as obj)
+ * Creates result inside container,
+ * deletes prerequisite reagents,
+ * transfers reagents from prerequisite objects,
+ * deletes all prerequisite objects (even not needed for recipe at the moment).
+ *
+ * /proc/select_recipe(list/datum/recipe/avaiable_recipes, obj/obj as obj, exact = 1)
+ * Wonderful function that select suitable recipe for you.
+ * obj is a machine (or magik hat) with prerequisites,
+ * exact = 0 forces algorithm to ignore superfluous stuff.
+ *
+ *
+ * Functions you do not need to call directly but could:
+ * /datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents)
+ * //1=precisely, 0=insufficiently, -1=superfluous
+ *
+ * /datum/recipe/proc/check_items(var/obj/container as obj)
+ * //1=precisely, 0=insufficiently, -1=superfluous
+ *
+ * */
+
+/datum/recipe
+ var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice
+ var/list/items // example: =list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
+ var/result //example: = /obj/item/weapon/reagent_containers/food/snacks/donut
+ var/time = 100 // 1/10 part of second
+
+
+/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous
+ . = 1
+ for (var/r_r in reagents)
+ var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r)
+ if (!(abs(aval_r_amnt - reagents[r_r])<0.5)) //if NOT equals
+ if (aval_r_amnt>reagents[r_r])
+ . = -1
+ else
+ return 0
+ if ((reagents?(reagents.len):(0)) < avail_reagents.reagent_list.len)
+ return -1
+ return .
+
+/datum/recipe/proc/check_items(var/obj/container as obj) //1=precisely, 0=insufficiently, -1=superfluous
+ if (!items)
+ if (locate(/obj/) in container)
+ return -1
+ else
+ return 1
+ . = 1
+ var/list/checklist = items.Copy()
+ for (var/obj/O in container)
+ var/found = 0
+ for (var/type in checklist)
+ if (istype(O,type))
+ checklist-=type
+ found = 1
+ break
+ if (!found)
+ . = -1
+ if (checklist.len)
+ return 0
+ return .
+
+//general version
+/datum/recipe/proc/make(var/obj/container as obj)
+ var/obj/result_obj = new result(container)
+ for (var/obj/O in (container.contents-result_obj))
+ O.reagents.trans_to(result_obj, O.reagents.total_volume)
+ del(O)
+ container.reagents.clear_reagents()
+ return result_obj
+
+// food-related
+/datum/recipe/proc/make_food(var/obj/container as obj)
+ var/obj/result_obj = new result(container)
+ for (var/obj/O in (container.contents-result_obj))
+ O.reagents.del_reagent("nutriment")
+ O.reagents.update_total()
+ O.reagents.trans_to(result_obj, O.reagents.total_volume)
+ del(O)
+ container.reagents.clear_reagents()
+ return result_obj
+
+/proc/select_recipe(var/list/datum/recipe/avaiable_recipes, var/obj/obj as obj, var/exact = 1 as num)
+ if (!exact)
+ exact = -1
+ var/list/datum/recipe/possible_recipes = new
+ for (var/datum/recipe/recipe in avaiable_recipes)
+ if (recipe.check_reagents(obj.reagents)==exact && recipe.check_items(obj)==exact)
+ possible_recipes+=recipe
+ if (possible_recipes.len==0)
+ return null
+ else if (possible_recipes.len==1)
+ return possible_recipes[1]
+ else //okay, let's select the most complicated recipe
+ var/r_count = 0
+ var/i_count = 0
+ . = possible_recipes[1]
+ for (var/datum/recipe/recipe in possible_recipes)
+ if (recipe.items.len > i_count || (recipe.items.len == i_count && recipe.reagents.len > r_count ))
+ r_count = recipe.reagents.len
+ i_count = recipe.items.len
+ . = recipe
+ return .
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 8e8160d8b85..1441658b61a 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -795,6 +795,7 @@
icon_state = "table"
density = 1
anchored = 1.0
+ layer = 2.8
/obj/table/reinforced
name = "reinforced table"
diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm
index 1a88bad88b1..1daed768afa 100644
--- a/code/defines/obj/hydro.dm
+++ b/code/defines/obj/hydro.dm
@@ -232,7 +232,7 @@
mypath = "/obj/item/seeds/amanitamycelium"
species = "amanita"
plantname = "Fly Amanita"
- productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/amanita"
+ productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita"
lifespan = 50
endurance = 35
maturation = 10
@@ -249,7 +249,7 @@
mypath = "/obj/item/seeds/angelmycelium"
species = "angel"
plantname = "Destroying Angel"
- productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/angel"
+ productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel"
lifespan = 50
endurance = 35
maturation = 12
@@ -266,7 +266,7 @@
mypath = "/obj/item/seeds/libertymycelium"
species = "liberty"
plantname = "Liberty Cap"
- productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/libertycap"
+ productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap"
lifespan = 25
endurance = 15
maturation = 7
@@ -283,7 +283,7 @@
mypath = "/obj/item/seeds/chantermycelium"
species = "chanter"
plantname = "Chanterelle"
- productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/chanterelle"
+ productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle"
lifespan = 35
endurance = 20
maturation = 7
@@ -317,7 +317,7 @@
mypath = "/obj/item/seeds/plumpmycelium"
species = "plump"
plantname = "Plump Helmet"
- productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/plumphelmet"
+ productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet"
lifespan = 25
endurance = 15
maturation = 8
@@ -627,7 +627,7 @@
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("imidazoline", 2)
-/obj/item/weapon/reagent_containers/food/snacks/grown/amanita
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita
seed = "/obj/item/seeds/amanitamycelium"
name = "Fly amanita"
desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know."
@@ -640,7 +640,7 @@
reagents.add_reagent("psilocybin", max(drug_amt, 1))
bitesize = max(round(reagents.total_volume / 2, 1), 1)
-/obj/item/weapon/reagent_containers/food/snacks/grown/angel
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
seed = "/obj/item/seeds/angelmycelium"
name = "Destroying angel"
desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins."
@@ -653,7 +653,7 @@
reagents.add_reagent("psilocybin", max(drug_amt, 1))
bitesize = max(round(reagents.total_volume / 2, 1), 1)
-/obj/item/weapon/reagent_containers/food/snacks/grown/libertycap
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap
seed = "/obj/item/seeds/libertymycelium"
name = "Liberty cap"
desc = "Psilocybe Semilanceata: Liberate yourself!"
@@ -665,7 +665,7 @@
reagents.add_reagent("psilocybin", max(drug_amt, 4))
bitesize = max(round(reagents.total_volume / 2), 1)
-/obj/item/weapon/reagent_containers/food/snacks/grown/plumphelmet
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet
seed = "/obj/item/seeds/plumpmycelium"
name = "Plump Helmet"
desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
@@ -675,7 +675,7 @@
reagents.add_reagent("nutriment", 4)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/grown/chanterelle
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle
seed = "/obj/item/seeds/chantermycelium"
name = "Chanterelle"
desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty! There's a lot!"
diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm
index 268b3e5ebf3..5b3cb0b4a4b 100644
--- a/code/defines/obj/machinery.dm
+++ b/code/defines/obj/machinery.dm
@@ -173,6 +173,7 @@
use_power = 1
idle_power_usage = 2
active_power_usage = 4
+ layer = TURF_LAYER
/obj/machinery/mass_driver
name = "mass driver"
@@ -587,45 +588,20 @@
name = "Microwave"
icon = 'kitchen.dmi'
icon_state = "mw"
+ layer = 2.9
density = 1
anchored = 1
use_power = 1
idle_power_usage = 5
active_power_usage = 100
- var/egg_amount = 0 //Current number of eggs inside
- var/flour_amount = 0 //Current amount of flour inside
- var/water_amount = 0 //Current amount of water inside
- var/monkeymeat_amount = 0
- var/cheese_amount = 0
- var/humanmeat_amount = 0
- var/donkpocket_amount = 0
- var/xenomeat_amount = 0
- var/milk_amount = 0
- var/hotsauce_amount = 0
- var/coldsauce_amount = 0
- var/soysauce_amount = 0
- var/ketchup_amount = 0
- var/tofu_amount = 0
- var/berryjuice_amount = 0
- var/carpmeat_amount = 0
- var/humanmeat_name = ""
- var/humanmeat_job = ""
- var/operating = 0 // Is it on?
- var/dirty = 0 // Does it need cleaning?
- var/broken = 0 // How broken is it???
- var/list/available_recipes = list() // List of the recipes you can use
- var/obj/item/weapon/reagent_containers/food/snacks/being_cooked = null // The item being cooked
- var/obj/item/extra_item = null// One non food item that can be added
flags = OPENCONTAINER //Temporary holder while it counts what's in it.
- New() // Stuff can be added but not removed without destroying it.
- var/datum/reagents/R = new/datum/reagents(100)
- reagents = R
- R.my_atom = src
+
/obj/machinery/processor
name = "Food Processor"
icon = 'kitchen.dmi'
icon_state = "processor"
+ layer = 2.9
density = 1
anchored = 1
var/broken = 0
diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm
index 2e7507cc81b..83d897e137f 100644
--- a/code/defines/obj/supplypacks.dm
+++ b/code/defines/obj/supplypacks.dm
@@ -72,15 +72,15 @@
/datum/supply_packs/meat
name = "Meat crate"
- contains = list("/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat",
- "/obj/item/weapon/reagent_containers/food/snacks/monkeymeat")
+ contains = list("/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey",
+ "/obj/item/weapon/reagent_containers/food/snacks/meat/monkey")
cost = 10
containertype = "/obj/crate/freezer"
containername = "Meat crate"
diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm
index fdaec71c8d1..fdcc10ec3ea 100644
--- a/code/defines/obj/vending.dm
+++ b/code/defines/obj/vending.dm
@@ -3,6 +3,7 @@
desc = "A generic vending machine."
icon = 'vending.dmi'
icon_state = "generic"
+ layer = 2.9
anchored = 1
density = 1
var/active = 1 //No sales pitches if off!
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 8ddbfdf1f8e..01748291d8f 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -1297,6 +1297,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
/obj/item/weapon/tank/anesthetic
name = "Gas Tank (Sleeping Agent)"
icon_state = "anesthetic"
+ item_state = "an_tank"
/obj/item/weapon/tank/jetpack
name = "Jetpack (Oxygen)"
diff --git a/code/game/machinery/gibber.dm b/code/game/machinery/gibber.dm
index 0a63a183d25..e1ea84b21b5 100644
--- a/code/game/machinery/gibber.dm
+++ b/code/game/machinery/gibber.dm
@@ -83,9 +83,9 @@
var/sourcetotalreagents = src.occupant.reagents.total_volume
var/totalslabs = 3
- var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat1 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat
- var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat2 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat
- var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat3 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat
+ var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat1 = new
+ var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat2 = new
+ var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat3 = new
newmeat1.name = sourcename + newmeat1.name
newmeat1.subjectname = sourcename
diff --git a/code/game/machinery/microwave.dm b/code/game/machinery/microwave.dm
index fcdda58aa7f..46e7b5b6a5e 100644
--- a/code/game/machinery/microwave.dm
+++ b/code/game/machinery/microwave.dm
@@ -1,498 +1,198 @@
-/datum/recipe
- var/egg_amount = 0
- var/flour_amount = 0
- var/water_amount = 0
- var/cheese_amount = 0
- var/monkeymeat_amount = 0
- var/xenomeat_amount = 0
- var/humanmeat_amount = 0
- var/carpmeat_amount = 0
- var/donkpocket_amount = 0
- var/milk_amount = 0
- var/hotsauce_amount = 0
- var/coldsauce_amount = 0
- var/soysauce_amount = 0
- var/ketchup_amount = 0
- var/tofu_amount = 0
- var/berryjuice_amount = 0
- var/obj/extra_item = null // This is if an extra item is needed, eg a butte for an assburger
- var/creates = "" // The item that is spawned when the recipe is made
-/datum/recipe/jellydonut
- egg_amount = 1
- flour_amount = 1
- berryjuice_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/jellydonut"
+// see code/modules/food/recipes_microwave.dm for recipes
-/datum/recipe/donut
- egg_amount = 1
- flour_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/donut"
+/*******************
+* Initialising
+********************/
+/obj/machinery/microwave
+ var/operating = 0 // Is it on?
+ var/dirty = 0 // = {0..100} Does it need cleaning?
+ var/broken = 0 // ={0,1,2} How broken is it???
+ var/list/datum/recipe/available_recipes // List of the recipes you can use
+ var/list/acceptable_items // List of the items you can put in
+ var/list/acceptable_reagents // List of the reagents you can put in
+ var/max_n_of_items = 0
-/datum/recipe/monkeyburger
- egg_amount = 0
- flour_amount = 1
- monkeymeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/monkeyburger"
-
-/datum/recipe/humanburger
- flour_amount = 1
- humanmeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/humanburger"
-
-/datum/recipe/brainburger
- flour_amount = 1
- extra_item = /obj/item/brain
- creates = "/obj/item/weapon/reagent_containers/food/snacks/brainburger"
-
-/datum/recipe/roburger/
- flour_amount = 1
- extra_item = /obj/item/robot_parts/head
- creates = "/obj/item/weapon/reagent_containers/food/snacks/roburger"
-
-/datum/recipe/xenoburger
- egg_amount = 0
- flour_amount = 1
- xenomeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/xenoburger"
-
-/datum/recipe/fishburger
- carpmeat_amount = 1
- flour_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/fishburger"
-
-/datum/recipe/tofuburger
- tofu_amount = 1
- flour_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/tofuburger"
-
-/datum/recipe/clownburger
- extra_item = /obj/item/clothing/mask/gas/clown_hat
- flour_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/clownburger"
-
-/datum/recipe/mimeburger
- extra_item = /obj/item/clothing/head/beret
- flour_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/mimeburger"
-
-/datum/recipe/waffles
- egg_amount = 2
- flour_amount = 2
- creates = "/obj/item/weapon/reagent_containers/food/snacks/waffles"
-
-/datum/recipe/faggot
- monkeymeat_amount = 1
- humanmeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/faggot"
-
-/datum/recipe/donkpocket
- flour_amount = 1
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/faggot
- creates = "/obj/item/weapon/reagent_containers/food/snacks/donkpocket"
-
-/datum/recipe/donkpocket_warm
- donkpocket_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/donkpocket"
-
-/datum/recipe/meatbread
- flour_amount = 3
- monkeymeat_amount = 3
- cheese_amount = 3
- creates = "/obj/item/weapon/reagent_containers/food/snacks/meatbread"
-
-/datum/recipe/meatbreadhuman
- flour_amount = 3
- humanmeat_amount = 3
- cheese_amount = 3
- creates = "/obj/item/weapon/reagent_containers/food/snacks/meatbread"
-
-/datum/recipe/xenomeatbread
- flour_amount = 3
- xenomeat_amount = 3
- cheese_amount = 3
- creates = "/obj/item/weapon/reagent_containers/food/snacks/xenomeatbread"
-
-/datum/recipe/bananabread
- flour_amount = 3
- egg_amount = 3
- milk_amount = 1
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/banana
- creates = "/obj/item/weapon/reagent_containers/food/snacks/bananabread"
-
-/datum/recipe/omelette
- egg_amount = 2
- cheese_amount = 2
- creates = "/obj/item/weapon/reagent_containers/food/snacks/omelette"
-
-/datum/recipe/muffin
- egg_amount = 2
- flour_amount = 1
- milk_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/muffin"
-
-/datum/recipe/eggplantparm
- cheese_amount = 2
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
- creates = "/obj/item/weapon/reagent_containers/food/snacks/eggplantparm"
-
-/datum/recipe/soylenviridians
- flour_amount = 3
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
- creates = "/obj/item/weapon/reagent_containers/food/snacks/soylenviridians"
-
-/datum/recipe/soylentgreen
- flour_amount = 3
- humanmeat_amount = 2
- creates = "/obj/item/weapon/reagent_containers/food/snacks/soylentgreen"
-
-/datum/recipe/carrotcake
- flour_amount = 3
- egg_amount = 3
- milk_amount = 1
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/carrot
- creates = "/obj/item/weapon/reagent_containers/food/snacks/carrotcake"
-
-/datum/recipe/cheesecake
- flour_amount = 3
- egg_amount = 3
- cheese_amount = 2
- milk_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/cheesecake"
-
-/datum/recipe/plaincake
- flour_amount = 3
- egg_amount = 3
- milk_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/plaincake"
-
-/datum/recipe/humeatpie
- flour_amount = 2
- humanmeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/humeatpie"
-
-/datum/recipe/momeatpie
- flour_amount = 2
- monkeymeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/momeatpie"
-
-/datum/recipe/tofupie
- flour_amount = 2
- tofu_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/tofupie"
-
-/datum/recipe/xemeatpie
- flour_amount = 2
- xenomeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/xemeatpie"
-
-/datum/recipe/pie
- flour_amount = 2
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/banana
- creates = "/obj/item/weapon/reagent_containers/food/snacks/pie"
-
-/datum/recipe/berrypie
- flour_amount = 2
- berryjuice_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/berrypie"
-
-/datum/recipe/wingfangchu
- soysauce_amount = 1
- xenomeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/wingfangchu"
-
-/datum/recipe/chaosdonut
- egg_amount = 1
- flour_amount = 1
- coldsauce_amount = 1
- hotsauce_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/chaosdonut"
-
-/datum/recipe/humankabob
- humanmeat_amount = 2
- extra_item = /obj/item/stack/rods
- creates = "/obj/item/weapon/reagent_containers/food/snacks/humankabob"
-
-/datum/recipe/monkeykabob
- monkeymeat_amount = 2
- extra_item = /obj/item/stack/rods
- creates = "/obj/item/weapon/reagent_containers/food/snacks/monkeykabob"
-
-/datum/recipe/tofukabob
- tofu_amount = 2
- extra_item = /obj/item/stack/rods
- creates = "/obj/item/weapon/reagent_containers/food/snacks/tofukabob"
-
-/datum/recipe/tofubread
- tofu_amount = 3
- cheese_amount = 3
- flour_amount = 3
- creates = "/obj/item/weapon/reagent_containers/food/snacks/tofubread"
-
-/datum/recipe/loadedbakedpotato
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/potato
- cheese_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato"
-
-/datum/recipe/cheesyfries
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/fries
- cheese_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/cheesyfries"
-
-/datum/recipe/cubancarp
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/chili
- flour_amount = 1
- carpmeat_amount = 1
- creates = "/obj/item/weapon/reagent_containers/food/snacks/cubancarp"
-
-/datum/recipe/popcorn
- extra_item = /obj/item/weapon/reagent_containers/food/snacks/grown/corn
- creates = "/obj/item/weapon/reagent_containers/food/snacks/popcorn"
-
-// *** After making the recipe above, add it in here! ***
-// Special Note: When adding recipes to the list, make sure to list recipes with extra_item before similar recipes without
-// one. The reason being that sometimes the FOR loop that searchs through the recipes will just stop
-// at the wrong recipe. It's a hack job but it works until I clean up the microwave code.
/obj/machinery/microwave/New()
- ..()
- src.available_recipes += new /datum/recipe/clownburger(src)
- src.available_recipes += new /datum/recipe/mimeburger(src)
- src.available_recipes += new /datum/recipe/brainburger(src)
- src.available_recipes += new /datum/recipe/roburger(src)
- src.available_recipes += new /datum/recipe/fishburger(src)
- src.available_recipes += new /datum/recipe/tofuburger(src)
- src.available_recipes += new /datum/recipe/monkeyburger(src)
- src.available_recipes += new /datum/recipe/humanburger(src)
- src.available_recipes += new /datum/recipe/cubancarp(src)
- src.available_recipes += new /datum/recipe/humankabob(src)
- src.available_recipes += new /datum/recipe/monkeykabob(src)
- src.available_recipes += new /datum/recipe/tofukabob(src)
- src.available_recipes += new /datum/recipe/jellydonut(src)
- src.available_recipes += new /datum/recipe/donut(src)
- src.available_recipes += new /datum/recipe/waffles(src)
- src.available_recipes += new /datum/recipe/faggot(src)
- src.available_recipes += new /datum/recipe/donkpocket(src)
- src.available_recipes += new /datum/recipe/donkpocket_warm(src)
- src.available_recipes += new /datum/recipe/pie(src)
- src.available_recipes += new /datum/recipe/berrypie(src)
- src.available_recipes += new /datum/recipe/xenoburger(src)
- src.available_recipes += new /datum/recipe/meatbread(src)
- src.available_recipes += new /datum/recipe/meatbreadhuman(src)
- src.available_recipes += new /datum/recipe/omelette (src)
- src.available_recipes += new /datum/recipe/muffin (src)
- src.available_recipes += new /datum/recipe/eggplantparm(src)
- src.available_recipes += new /datum/recipe/soylenviridians(src)
- src.available_recipes += new /datum/recipe/soylentgreen(src)
- src.available_recipes += new /datum/recipe/carrotcake(src)
- src.available_recipes += new /datum/recipe/cheesecake(src)
- src.available_recipes += new /datum/recipe/bananabread(src)
- src.available_recipes += new /datum/recipe/plaincake(src)
- src.available_recipes += new /datum/recipe/humeatpie(src)
- src.available_recipes += new /datum/recipe/momeatpie(src)
- src.available_recipes += new /datum/recipe/tofupie(src)
- src.available_recipes += new /datum/recipe/xemeatpie(src)
- src.available_recipes += new /datum/recipe/wingfangchu(src)
- src.available_recipes += new /datum/recipe/chaosdonut(src)
- src.available_recipes += new /datum/recipe/tofubread(src)
- src.available_recipes += new /datum/recipe/loadedbakedpotato(src)
- src.available_recipes += new /datum/recipe/cheesyfries(src)
- src.available_recipes += new /datum/recipe/xenomeatbread(src)
- src.available_recipes += new /datum/recipe/popcorn(src)
-
-
+ //..() //do not need this
+ reagents = new/datum/reagents(100)
+ reagents.my_atom = src
+ available_recipes = new
+ for (var/type in (typesof(/datum/recipe)-/datum/recipe))
+ available_recipes+= new type
+ acceptable_items = new
+ acceptable_reagents = new
+ for (var/datum/recipe/recipe in available_recipes)
+ for (var/item in recipe.items)
+ //if (!(item in acceptable_items))
+ acceptable_items |= item
+ for (var/reagent in recipe.reagents)
+ acceptable_reagents |= reagent
+ if (recipe.items)
+ max_n_of_items = max(max_n_of_items,recipe.items.len)
/*******************
* Item Adding
********************/
-obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob)
+/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(src.broken > 0)
if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] starts to fix part of the microwave."))
- sleep(20)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] fixes part of the microwave."))
- src.broken = 1 // Fix it a bit
+ user.visible_message( \
+ "\blue [user] starts to fix part of the microwave.", \
+ "\blue You start to fix part of the microwave." \
+ )
+ if (do_after(user,20))
+ user.visible_message( \
+ "\blue [user] fixes part of the microwave.", \
+ "\blue You have fixed part of the microwave." \
+ )
+ src.broken = 1 // Fix it a bit
else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] starts to fix part of the microwave."))
- sleep(20)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] fixes the microwave!"))
- src.icon_state = "mw"
- src.broken = 0 // Fix it!
- src.flags = OPENCONTAINER
+ user.visible_message( \
+ "\blue [user] starts to fix part of the microwave.", \
+ "\blue You start to fix part of the microwave." \
+ )
+ if (do_after(user,20))
+ user.visible_message( \
+ "\blue [user] fixes the microwave.", \
+ "\blue You have fixed the microwave." \
+ )
+ src.icon_state = "mw"
+ src.broken = 0 // Fix it!
+ src.dirty = 0 // just to be sure
+ src.flags = OPENCONTAINER
else
- user << "It's broken!"
- else if(src.dirty) // The microwave is all dirty so can't be used!
+ user << "\red It's broken!"
+ return 1
+ else if(src.dirty==100) // The microwave is all dirty so can't be used!
if(istype(O, /obj/item/weapon/cleaner)) // If they're trying to clean it then let them
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] starts to clean the microwave."))
- sleep(20)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] has cleaned the microwave!"))
- src.dirty = 0 // It's cleaned!
- src.icon_state = "mw"
- src.flags = OPENCONTAINER
+ user.visible_message( \
+ "\blue [user] starts to clean the microwave.", \
+ "\blue You start to clean the microwave." \
+ )
+ if (do_after(user,20))
+ user.visible_message( \
+ "\blue [user] has cleaned the microwave.", \
+ "\blue You have cleaned the microwave." \
+ )
+ src.dirty = 0 // It's cleaned!
+ src.broken = 0 // just to be sure
+ src.icon_state = "mw"
+ src.flags = OPENCONTAINER
else //Otherwise bad luck!!
- return
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/egg)) // If an egg is used, add it
- if(src.egg_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds an egg to the microwave."))
- src.egg_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/tofu)) // If tofu is used, add it
- if(src.tofu_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds tofu to the microwave."))
- src.tofu_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/flour)) // If flour is used, add it
- if(src.flour_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds some flour to the microwave."))
- src.flour_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge)) // If cheese is used, add it
- if(src.cheese_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds some cheese to the microwave."))
- src.cheese_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeymeat))
- if(src.monkeymeat_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds some meat to the microwave."))
- src.monkeymeat_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/xenomeat))
- if(src.xenomeat_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds some meat to the microwave."))
- src.xenomeat_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/humanmeat))
- if(src.humanmeat_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds some meat to the microwave."))
- src.humanmeat_name = O:subjectname
- src.humanmeat_job = O:subjectjob
- src.humanmeat_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/carpmeat))
- if(src.carpmeat_amount < 5)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds some meat to the microwave."))
- src.carpmeat_amount++
- del(O)
-
- else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donkpocket))
- if(src.donkpocket_amount < 2)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds a donk-pocket to the microwave."))
- src.donkpocket_amount++
- del(O)
-
- else if(O.is_open_container())
- return
-
- else
- if(!istype(extra_item, /obj/item)) //Allow one non food item to be added!
- user.u_equip(O)
- extra_item = O
- O.loc = src
- if((user.client && user.s_active != src))
- user.client.screen -= O
- O.dropped(user)
- for(var/mob/V in viewers(src, null))
- V.show_message(text("\blue [user] adds [O] to the microwave."))
+ user << "\red It's dirty!"
+ return 1
+ else if(is_type_in_list(O,acceptable_items))
+ if (contents.len>=max_n_of_items)
+ user << "\red This [src] is full of ingredients, you cannot put more."
+ return 1
+ if (istype(O,/obj/item/stack) && O:amount>1)
+ new O.type (src)
+ O:use(1)
+ user.visible_message( \
+ "[user] has added one of [O] to \the [src].", \
+ "\blue You add one of [O] to \the [src].")
else
- user << "There already seems to be an unusual item inside, so you don't add this one too." //Let them know it failed for a reason though
+ user.before_take_item(O)
+ O.loc = src
+ user.visible_message( \
+ "[user] has added \the [O] to \the [src].", \
+ "\blue You add \the [O] to \the [src].")
+ else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
+ istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
+ istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
+ )
+ var/obj/item/weapon/reagent_containers/glass/G = O
+ if (!G.reagents)
+ return 1
+ for (var/datum/reagent/R in G.reagents.reagent_list)
+ if (!(R.id in acceptable_reagents))
+ user << "\red Your [G] contains components unsuitable for cookery."
+ return 1
+ //G.reagents.trans_to(src,G.amount_per_transfer_from_this)
+ else if(istype(O,/obj/item/weapon/grab))
+ var/obj/item/weapon/grab/G = O
+ user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]."
+ return 1
+ else
+ user << "\red You have no idea what you can cook with this [O]."
+ return 1
+ src.updateUsrDialog()
-obj/machinery/microwave/attack_paw(user as mob)
+/obj/machinery/microwave/attack_paw(mob/user as mob)
return src.attack_hand(user)
+/obj/machinery/microwave/attack_ai(mob/user as mob)
+ return 0
+
+/obj/machinery/microwave/attack_hand(mob/user as mob)
+ user.machine = src
+ interact(user)
/*******************
* Microwave Menu
********************/
-/obj/machinery/microwave/attack_hand(user as mob) // The microwave Menu
- var/dat
- var/xenodisplay
- var/sauces
- while(src.reagents.total_volume) //A series of while loops to count up how much of the relevant reagents there are.
- while(src.reagents.get_reagent_amount("capsaicin") > 4) // And convert them into other variables. Ugly but it works for now.
- src.reagents.remove_reagent("capsaicin", 5)
- src.hotsauce_amount++
- while(src.reagents.get_reagent_amount("frostoil") > 4)
- src.reagents.remove_reagent("frostoil", 5)
- src.coldsauce_amount++
- while(src.reagents.get_reagent_amount("soysauce") > 4)
- src.reagents.remove_reagent("soysauce", 5)
- src.soysauce_amount++
- while(src.reagents.get_reagent_amount("milk") > 4)
- src.reagents.remove_reagent("milk", 5)
- src.milk_amount++
- while(src.reagents.get_reagent_amount("soymilk") > 4)
- src.reagents.remove_reagent("soymilk", 5)
- src.milk_amount++
- while(src.reagents.get_reagent_amount("ketchup") > 4)
- src.reagents.remove_reagent("ketchup", 5)
- src.ketchup_amount++
- while(src.reagents.get_reagent_amount("berryjuice") > 4)
- src.reagents.remove_reagent("berryjuice", 5)
- src.berryjuice_amount++
- src.reagents.clear_reagents()
- if(src.hotsauce_amount) sauces = sauces + "Hotsauce:[src.hotsauce_amount] units.
"
- if(src.coldsauce_amount) sauces = sauces + "Coldsauce:[src.coldsauce_amount] units.
"
- if(src.soysauce_amount) sauces = sauces + "Soysauce:[src.soysauce_amount] units.
"
- if(src.berryjuice_amount) sauces = sauces + "Berry Juice:[src.berryjuice_amount] units.
"
- if(src.ketchup_amount) sauces = sauces + "Ketchup:[src.ketchup_amount] units.
"
- if(src.xenomeat_amount) xenodisplay = "Alien Meat: [src.xenomeat_amount]
"
+/obj/machinery/microwave/proc/interact(mob/user as mob) // The microwave Menu
+ var/dat = ""
if(src.broken > 0)
- dat = {"
-Bzzzzttttt
- "}
+ dat = {"Bzzzzttttt"}
else if(src.operating)
- dat = {"
-Microwaving in progress!
-Please wait...!
-
-"}
- else if(src.dirty)
- dat = {"
-This microwave is dirty!
-Please clean it before use!
-
-"}
+ dat = {"Microwaving in progress!
Please wait...!"}
+ else if(src.dirty==100)
+ dat = {"This microwave is dirty!
Please clean it before use!"}
else
- dat = {"
-Eggs:[src.egg_amount] eggs
-Flour:[src.flour_amount] cups of flour
-Cheese:[src.cheese_amount] cheese wedges
-Tofu:[src.tofu_amount] tofu chunks
-Monkey Meat:[src.monkeymeat_amount] slabs of meat
-Turnovers:[src.donkpocket_amount] turnovers
-Milk:[src.milk_amount] cups of milk.
-[sauces]
-Human Meat:[src.humanmeat_amount] slabs of meat
-Carp Meat:[src.carpmeat_amount] fillets of meat
-[xenodisplay]
-