rewrite for DF/CM and grill

rewrite cos damn!

No more spam names... worst they can get is one of each type in a name.
CM won't accept anything that's been cerealized (at any point), DF and
grill will accept things that have been in them before, but you'll end
up with a burned mess, a cloud of smoke, and the chance of a small fire
This commit is contained in:
VampyrBytes
2014-07-21 20:37:25 +01:00
parent 14b7c17b6a
commit 4113b531af
7 changed files with 274 additions and 162 deletions
+18 -43
View File
@@ -1,49 +1,24 @@
/obj/machinery/cerealmaker
/obj/machinery/cooker/cerealmaker
name = "cereal maker"
desc = "Now with Dann O's available!"
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "cereal_off"
layer = 2.9
density = 1
anchored = 1
use_power = 1
idle_power_usage = 5
var/on = FALSE //Is it making cereal already?
thiscooktype = "cerealized"
cooktime = 200
onicon = "cereal_on"
officon = "cereal_off"
/obj/machinery/cerealmaker/attackby(obj/item/I, mob/user)
if(on)
user << "<span class='notice'>[src] is already processing, please wait.</span>"
return
if(istype(I, /obj/item/weapon/grab)||istype(I, /obj/item/tk_grab))
user << "<span class='warning'>That isn't going to fit.</span>"
return
if(istype(I, /obj/item/weapon/reagent_containers/glass/))
user << "<span class='warning'>That would probably break [src].</span>"
return
if(istype(I, /obj/item/weapon/disk/nuclear))
user << "Central command would kill you if you made nuke disk cereal."
return
if(istype(I, /obj/item/flag))
user << "<span class='warning'>That isn't going to fit.</span>"
return
else
user << "<span class='notice'>You put [I] into [src].</span>"
on = TRUE
user.drop_item()
I.loc = src
icon_state = "cereal_on"
sleep(200)
icon_state = "cereal_off"
var/obj/item/weapon/reagent_containers/food/snacks/cereal/S = new(get_turf(src))
var/image/img = new(I.icon, I.icon_state)
img.transform *= 0.7
if(istype(I, /obj/item/weapon/reagent_containers/))
var/obj/item/weapon/reagent_containers/food = I
food.reagents.trans_to(S, food.reagents.total_volume)
S.overlays += img
S.overlays += I.overlays
S.name = "box of [I] cereal"
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
on = FALSE
qdel(I)
obj/machinery/cooker/cerealmaker/setIcon(obj/item/copyme, obj/item/copyto)
var/image/img = new(copyme.icon, copyme.icon_state)
img.transform *= 0.7
copyto.overlays += img
copyto.overlays += copyme.overlays
obj/machinery/cooker/cerealmaker/changename(obj/item/name, obj/item/setme)
setme.name = "box of [name] cereal"
setme.desc = "[name.desc] It has been [thiscooktype]"
obj/machinery/cooker/cerealmaker/gettype()
var/obj/item/weapon/reagent_containers/food/snacks/cereal/type = new(get_turf(src))
return type
+132
View File
@@ -0,0 +1,132 @@
/obj/machinery/cooker
name = "cooker"
desc = "You shouldn't be seeing this!"
layer = 2.9
density = 1
anchored = 1
use_power = 1
idle_power_usage = 5
var/on = 0
var/onicon = null
var/officon = null
var/thiscooktype = null
var/burns = 0 // whether a machine burns something - if it does, you probably want to add the cooktype to /snacks/badrecipe
var/firechance = 0
var/cooktime = 0
var/foodcolor = null
// checks if the snack has been cooked in a certain way
obj/machinery/cooker/proc/checkCooked(obj/item/weapon/reagent_containers/food/snacks/D)
if (D.cooktype[thiscooktype])
return 1
return 0
// Sets the new snack's cooktype list to the same as the old one - no more cooking something in the same machine more than once!
obj/machinery/cooker/proc/setCooked(obj/item/weapon/reagent_containers/food/snacks/oldtypes, obj/item/weapon/reagent_containers/food/snacks/newtypes)
var/ct
for(ct in oldtypes.cooktype)
newtypes.cooktype[ct] = oldtypes.cooktype[ct]
// transfers reagents
obj/machinery/cooker/proc/setRegents(obj/item/weapon/reagent_containers/OldReg, obj/item/weapon/reagent_containers/NewReg)
OldReg.reagents.trans_to(NewReg, OldReg.reagents.total_volume)
// check if you can put it in the machine
obj/machinery/cooker/proc/checkValid(obj/item/check, mob/user)
if(on)
user << "<span class='notice'>[src] is still active!</span>"
return 0
if(istype(check, /obj/item/weapon/grab) || istype(check, /obj/item/tk_grab))
user << "<span class='warning'>That isn't going to fit.</span>"
return 0
if(istype(check, /obj/item/weapon/reagent_containers/glass))
user << "<span class='warning'>That would probably break [src].</span>"
return 0
if(istype(check, /obj/item/weapon/disk/nuclear))
user << "Central command would kill you if you [thiscooktype] that."
return 0
if(istype(check, /obj/item/flag))
user << "<span class='warning'>That isn't going to fit.</span>"
return 0
return 1
obj/machinery/cooker/proc/setIcon(obj/item/copyme, obj/item/copyto)
copyto.color = foodcolor
copyto.icon = copyme.icon
copyto.icon_state = copyme.icon_state
copyto.overlays += copyme.overlays
obj/machinery/cooker/proc/turnoff(obj/item/olditem)
icon_state = officon
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
on = 0
del(olditem)
return
// Burns the food with a chance of starting a fire - for if you try cooking something that's already been cooked that way
// if burns = 0 then it'll just tell you that the item is already that foodtype and it would do nothing
// if you wanted a different side effect set burns to 1 and override burn()
obj/machinery/cooker/proc/burn(mob/user, obj/item/weapon/reagent_containers/props)
var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/burnt = new(get_turf(src))
setRegents(props, burnt)
user << "<span class='warning'>You smell burning coming from the [src]!</span>"
var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread() // burning things makes smoke!
smoke.set_up(5, 0, src)
smoke.start()
if (prob(firechance))
var/turf/location = get_turf(src)
var/obj/effect/decal/cleanable/liquid_fuel/oil = new(location)
oil.name = "fat"
oil.desc = "uh oh, looks like some fat from the [src]"
oil.loc = location
location.hotspot_expose(700, 50, 1)
//TODO have a chance of setting the tile on fire
obj/machinery/cooker/proc/changename(obj/item/name, obj/item/setme)
setme.name = "[thiscooktype] [name.name]"
setme.desc = "[name.desc]. It has been [thiscooktype]"
obj/machinery/cooker/proc/putIn(obj/item/tocook, mob/chef)
icon_state = onicon
chef << "<span class='notice'>You put [tocook] into [src].</span>"
on = 1
chef.drop_item()
tocook.loc = src
// Override this with the correct snack type
obj/machinery/cooker/proc/gettype()
var/obj/item/weapon/reagent_containers/food/snacks/type = new(get_turf(src))
return type
obj/machinery/cooker/attackby(obj/item/I, mob/user)
if(stat & (NOPOWER|BROKEN))
return
if (!checkValid(I, user))
return
if(!burns)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
if(checkCooked(I))
user << "<span class='warning'>That is already [thiscooktype], it would do nothing!</span>"
return
putIn(I, user)
sleep(cooktime)
if(I && I.loc == src)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
if(checkCooked(I))
burn(user, I)
turnoff(I)
return
var/obj/item/weapon/reagent_containers/food/snacks/newfood = gettype()
setIcon(I, newfood)
changename(I, newfood)
if(istype(I, /obj/item/weapon/reagent_containers))
setRegents(I, newfood)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
setCooked(I, newfood)
newfood.cooktype[thiscooktype] = 1
turnoff(I)
//del(I)
+12 -65
View File
@@ -1,71 +1,18 @@
/obj/machinery/deepfryer
/obj/machinery/cooker/deepfryer
name = "deep fryer"
desc = "Deep fried <i>everything</i>."
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "fryer_off"
layer = 2.9
density = 1
anchored = 1
use_power = 1
idle_power_usage = 5
var/on = FALSE //Is it deep frying already?
var/obj/item/frying = null //What's being fried RIGHT NOW?
/obj/machinery/deepfryer/examine()
..()
if(frying)
usr << "You can make out [frying] in the oil."
/obj/machinery/deepfryer/attackby(obj/item/I, mob/user)
if(on)
user << "<span class='notice'>[src] is still active!</span>"
return
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/deepfryholder))
user << "<span class='userdanger'>[I] is already deepfried, you vomituous deviant. This attempt has been logged.</span>"
return
if(istype(I, /obj/item/weapon/grab) || istype(I, /obj/item/tk_grab))
user << "<span class='warning'>That isn't going to fit.</span>"
return
if(istype(I, /obj/item/weapon/reagent_containers/glass))
user << "<span class='warning'>That would probably break [src].</span>"
return
if(istype(I, /obj/item/weapon/disk/nuclear))
user << "Central command would kill you if you deep fried that."
return
if(istype(I, /obj/item/flag))
user << "<span class='warning'>That isn't going to fit.</span>"
return
else
user << "<span class='notice'>You put [I] into [src].</span>"
on = TRUE
user.drop_item()
frying = I
frying.loc = src
icon_state = "fryer_on"
sleep(200)
if(frying && frying.loc == src)
var/obj/item/weapon/reagent_containers/food/snacks/deepfryholder/S = new(get_turf(src))
if(istype(frying, /obj/item/weapon/reagent_containers/))
var/obj/item/weapon/reagent_containers/food = frying
food.reagents.trans_to(S, food.reagents.total_volume)
S.color = "#FFAD33"
S.icon = frying.icon
S.icon_state = frying.icon_state
S.overlays += frying.overlays
S.name = "deep fried [frying.name]"
S.desc = I.desc
frying.loc = S //this might be a bad idea.
icon_state = "fryer_off"
on = FALSE
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
thiscooktype = "deep fried"
burns = 1
firechance = 100
cooktime = 200
foodcolor = "#FFAD33"
officon = "fryer_off"
onicon = "fryer_on"
/obj/machinery/deepfryer/attack_hand(mob/user)
if(on && frying)
user << "<span class='notice'>You pull [frying] from [src]! It looks like you were just in time!</span>"
user.put_in_hands(frying)
frying = null
return
..()
obj/machinery/cooker/deepfryer/gettype()
var/obj/item/weapon/reagent_containers/food/snacks/deepfryholder/type = new(get_turf(src))
return type
+23 -45
View File
@@ -1,51 +1,29 @@
/obj/machinery/foodgrill
/obj/machinery/cooker/foodgrill
name = "grill"
desc = "Backyard grilling, IN SPACE."
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "grill_off"
layer = 2.9
density = 1
anchored = 1
use_power = 1
idle_power_usage = 5
var/on = FALSE //Is it grilling food already?
thiscooktype = "grilled"
burns = 1
firechance = 20
cooktime = 50
foodcolor = "#A34719"
onicon = "grill_on"
officon = "grill_off"
/obj/machinery/foodgrill/attackby(obj/item/I, mob/user)
if(on)
user << "<span class='notice'>[src] is already processing, please wait.</span>"
return
if(istype(I, /obj/item/weapon/grab)||istype(I, /obj/item/tk_grab))
user << "<span class='warning'>That isn't going to fit.</span>"
return
else
user << "<span class='notice'>You put [I] onto [src].</span>"
on = TRUE
user.drop_item()
I.loc = src
icon_state = "grill_on"
obj/machinery/cooker/foodgrill/putIn(obj/item/In, mob/chef)
..()
var/image/img = new(In.icon, In.icon_state)
img.pixel_y = 5
overlays += img
sleep(50)
overlays = 0
img.color = "#C28566"
overlays += img
sleep(50)
overlays = 0
img.color = "#A34719"
overlays += img
sleep(50)
overlays = 0
var/image/img = new(I.icon, I.icon_state)
img.pixel_y = 5
overlays += img
sleep(200)
overlays = 0
img.color = "#C28566"
overlays += img
sleep(200)
overlays = 0
img.color = "#A34719"
overlays += img
sleep(50)
overlays = 0
on = FALSE
icon_state = "grill_off"
if(istype(I, /obj/item/weapon/reagent_containers/))
var/obj/item/weapon/reagent_containers/food = I
food.reagents.add_reagent("nutriment", 10)
food.reagents.trans_to(I, food.reagents.total_volume)
I.loc = get_turf(src)
I.color = "#A34719"
var/tempname = I.name
I.name = "grilled [tempname]"
@@ -12,7 +12,7 @@
var/eatverb
var/wrapped = 0
var/dried_type = null
var/deepfried = 0
var/cooktype[0]
//Placeholder for effect that trigger on eating that aren't tied to reagents.
@@ -1358,6 +1358,10 @@
reagents.add_reagent("carbon", 3)
bitesize = 2
// it's burned! it should start off being classed as any cooktype that burns
cooktype["grilled"] = 1
cooktype["deep fried"] = 1
/obj/item/weapon/reagent_containers/food/snacks/meatsteak
name = "Meat steak"
desc = "A piece of hot spicy meat."
@@ -3141,7 +3145,6 @@
icon = 'icons/obj/food.dmi'
icon_state = "deepfried_holder_icon"
bitesize = 2
deepfried = 1
New()
..()
reagents.add_reagent("nutriment", 30)