Files
Paradise/code/game/machinery/microwave.dm
T
polyxenitopalidou 2a1bae5390 SUCCESFUL MERGE IS A GO
•Added east+west sprites for the lit hardhat. They were missing.
•Removed silly extra lines of code in the new foodstuffs, also changed the muffins recipe a bit since it's conflicting for some reason, and is producing donuts.



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@76 316c924e-a436-60f5-8080-3fe189b3f50e
2010-09-07 22:38:00 +00:00

413 lines
16 KiB
Plaintext

/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/donkpocket_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/donut
egg_amount = 1
flour_amount = 1
creates = "/obj/item/weapon/reagent_containers/food/snacks/donut"
/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/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/pie
flour_amount = 2
extra_item = /obj/item/weapon/banana
creates = "/obj/item/weapon/reagent_containers/food/snacks/pie"
/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/xenoburger
egg_amount = 0
flour_amount = 1
xenomeat_amount = 1
creates = "/obj/item/weapon/reagent_containers/food/snacks/xenoburger"
/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/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
extra_item = /obj/item/weapon/reagent_containers/food/drinks/milk
creates = "/obj/item/weapon/reagent_containers/food/snacks/muffin"
/obj/machinery/microwave/New() // *** After making the recipe in defines\obj\food.dmi, add it in here! ***
..()
src.available_recipes += new /datum/recipe/donut(src)
src.available_recipes += new /datum/recipe/monkeyburger(src)
src.available_recipes += new /datum/recipe/humanburger(src)
src.available_recipes += new /datum/recipe/waffles(src)
src.available_recipes += new /datum/recipe/brainburger(src)
src.available_recipes += new /datum/recipe/faggot(src)
src.available_recipes += new /datum/recipe/roburger(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/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)
/*******************
* Item Adding
********************/
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
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!
else
user << "It's broken!"
else if(src.dirty) // 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"
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/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/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(!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."))
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
obj/machinery/microwave/attack_paw(user as mob)
return src.attack_hand(user)
/*******************
* Microwave Menu
********************/
/obj/machinery/microwave/attack_hand(user as mob) // The microwave Menu
var/dat
var/xenodisplay
if(src.xenomeat_amount) xenodisplay = "<B>Alien Meat: </B>[src.xenomeat_amount]<BR>"
if(src.broken > 0)
dat = {"
<TT>Bzzzzttttt</TT>
"}
else if(src.operating)
dat = {"
<TT>Microwaving in progress!<BR>
Please wait...!</TT><BR>
<BR>
"}
else if(src.dirty)
dat = {"
<TT>This microwave is dirty!<BR>
Please clean it before use!</TT><BR>
<BR>
"}
else
dat = {"
<B>Eggs:</B>[src.egg_amount] eggs<BR>
<B>Flour:</B>[src.flour_amount] cups of flour<BR>
<B>Cheese:</B>[src.cheese_amount] cheese wedges<BR>
<B>Monkey Meat:</B>[src.monkeymeat_amount] slabs of meat<BR>
<B>Meat Turnovers:</B>[src.donkpocket_amount] turnovers<BR>
<B>Other Meat:</B>[src.humanmeat_amount] slabs of meat<BR>
[xenodisplay]
<HR>
<BR>
<A href='?src=\ref[src];cook=1'>Turn on!<BR>
<A href='?src=\ref[src];cook=2'>Dispose contents!<BR>
"}
user << browse("<HEAD><TITLE>Microwave Controls</TITLE></HEAD><TT>[dat]</TT>", "window=microwave")
onclose(user, "microwave")
return
/***********************************
* Microwave Menu Handling/Cooking
************************************/
/obj/machinery/microwave/Topic(href, href_list)
if(..())
return
usr.machine = src
src.add_fingerprint(usr)
if(href_list["cook"])
if(!src.operating)
var/operation = text2num(href_list["cook"])
var/cook_time = 200 // The time to wait before spawning the item
var/cooked_item = ""
if(operation == 1) // If cook was pressed
for(var/mob/V in viewers(src, null))
V.show_message(text("\blue The microwave turns on."))
for(var/datum/recipe/R in src.available_recipes) //Look through the recipe list we made above
if(src.egg_amount == R.egg_amount && src.flour_amount == R.flour_amount && src.monkeymeat_amount == R.monkeymeat_amount && src.humanmeat_amount == R.humanmeat_amount && src.donkpocket_amount == R.donkpocket_amount && src.xenomeat_amount == R.xenomeat_amount) // Check if it's an accepted recipe
if(R.extra_item == null || src.extra_item.type == R.extra_item) // Just in case the recipe doesn't have an extra item in it
src.egg_amount = 0 // If so remove all the eggs
src.flour_amount = 0 // And the flour
src.water_amount = 0 //And the water
src.cheese_amount = 0 //And the cheese
src.monkeymeat_amount = 0
src.humanmeat_amount = 0
src.donkpocket_amount = 0
src.extra_item = null // And the extra item
cooked_item = R.creates // Store the item that will be created
if(cooked_item == "") //Oops that wasn't a recipe dummy!!!
if(src.egg_amount > 0 || src.flour_amount > 0 || src.water_amount > 0 || src.monkeymeat_amount > 0 || src.humanmeat_amount > 0 || src.donkpocket_amount > 0 && src.extra_item == null) //Make sure there's something inside though to dirty it
src.operating = 1 // Turn it on
src.icon_state = "mw1"
src.updateUsrDialog()
src.egg_amount = 0 //Clear all the values as this crap is what makes the mess inside!!
src.flour_amount = 0
src.cheese_amount = 0
src.water_amount = 0
src.humanmeat_amount = 0
src.monkeymeat_amount = 0
src.donkpocket_amount = 0
sleep(40) // Half way through
playsound(src.loc, 'splat.ogg', 50, 1) // Play a splat sound
icon_state = "mwbloody1" // Make it look dirty!!
sleep(40) // Then at the end let it finish normally
playsound(src.loc, 'ding.ogg', 50, 1)
for(var/mob/V in viewers(src, null))
V.show_message(text("\red The microwave gets covered in muck!"))
src.dirty = 1 // Make it dirty so it can't be used util cleaned
src.icon_state = "mwbloody" // Make it look dirty too
src.operating = 0 // Turn it off again aferwards
// Don't clear the extra item though so important stuff can't be deleted this way and
// it prolly wouldn't make a mess anyway
else if(src.extra_item != null) // However if there's a weird item inside we want to break it, not dirty it
src.operating = 1 // Turn it on
src.icon_state = "mw1"
src.updateUsrDialog()
src.egg_amount = 0 //Clear all the values as this crap is gone when it breaks!!
src.flour_amount = 0
src.cheese_amount = 0
src.water_amount = 0
src.humanmeat_amount = 0
src.monkeymeat_amount = 0
src.donkpocket_amount = 0
sleep(60) // Wait a while
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(2, 1, src)
s.start()
icon_state = "mwb" // Make it look all busted up and shit
for(var/mob/V in viewers(src, null))
V.show_message(text("\red The microwave breaks!")) //Let them know they're stupid
src.broken = 2 // Make it broken so it can't be used util fixed
src.operating = 0 // Turn it off again aferwards
src.extra_item.loc = get_turf(src) // Eject the extra item so important shit like the disk can't be destroyed in there
src.extra_item = null
else //Otherwise it was empty, so just turn it on then off again with nothing happening
src.operating = 1
src.icon_state = "mw1"
src.updateUsrDialog()
sleep(80)
src.icon_state = "mw"
playsound(src.loc, 'ding.ogg', 50, 1)
src.operating = 0
if(operation == 2) // If dispose was pressed, empty the microwave
src.egg_amount = 0
src.flour_amount = 0
src.cheese_amount = 0
src.water_amount = 0
src.humanmeat_amount = 0
src.monkeymeat_amount = 0
src.donkpocket_amount = 0
if(src.extra_item != null)
src.extra_item.loc = get_turf(src) // Eject the extra item so important shit like the disk can't be destroyed in there
src.extra_item = null
usr << "You dispose of the microwave contents."
var/cooking = text2path(cooked_item) // Get the item that needs to be spanwed
if(!isnull(cooking))
for(var/mob/V in viewers(src, null))
V.show_message(text("\blue The microwave begins cooking something!"))
src.operating = 1 // Turn it on so it can't be used again while it's cooking
src.icon_state = "mw1" //Make it look on too
src.updateUsrDialog()
src.being_cooked = new cooking(src)
spawn(cook_time) //After the cooking time
if(!isnull(src.being_cooked))
playsound(src.loc, 'ding.ogg', 50, 1)
if(istype(src.being_cooked, /obj/item/weapon/reagent_containers/food/snacks/humanburger))
src.being_cooked.name = humanmeat_name + src.being_cooked.name
src.being_cooked:job = humanmeat_job
if(istype(src.being_cooked, /obj/item/weapon/reagent_containers/food/snacks/donkpocket))
src.being_cooked:warm = 1
src.being_cooked.name = "warm " + src.being_cooked.name
src.being_cooked:cooltime()
src.being_cooked.loc = get_turf(src) // Create the new item
src.being_cooked = null // We're done!
src.operating = 0 // Turn the microwave back off
src.icon_state = "mw"
else
return
////////////////////////////////////////////////////////////////////////////////////////////////////
//Meatbread slicing RIGHT BELOW*************
////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/reagent_containers/food/snacks/meatbread/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(" <B>[usr] slices the meatbread! </B>", 1)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
del(src)
return
/obj/item/weapon/reagent_containers/food/snacks/cheesewheel/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(" <B>[usr] slices the cheese! </B>", 1)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
del(src)
return