mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 07:33:34 +01:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user