diff --git a/baystation12.dme b/baystation12.dme index ac896248c77..de3badb148f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -5,6 +5,82 @@ // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "code" +#define FILE_DIR "code/TriDimension" +#define FILE_DIR "code/unused" +#define FILE_DIR "code/unused/goonheist" +#define FILE_DIR "code/WorkInProgress" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter" +#define FILE_DIR "code/WorkInProgress/Susan" +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/48x48" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/mob/human_races" +#define FILE_DIR "icons/mob/in-hand" +#define FILE_DIR "icons/mob/in-hand/left" +#define FILE_DIR "icons/mob/in-hand/right" +#define FILE_DIR "icons/mob/otherHuman" +#define FILE_DIR "icons/mob/species" +#define FILE_DIR "icons/mob/species/armalis" +#define FILE_DIR "icons/mob/species/skrell" +#define FILE_DIR "icons/mob/species/tajaran" +#define FILE_DIR "icons/mob/species/unathi" +#define FILE_DIR "icons/mob/species/vox" +#define FILE_DIR "icons/mob/spirits" +#define FILE_DIR "icons/NTOS" +#define FILE_DIR "icons/NTOS/battery_icons" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/pods" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/vehicles" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "maps" +#define FILE_DIR "maps/overmap" +#define FILE_DIR "maps/overmap/bearcat" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/effects/turret" +#define FILE_DIR "sound/effects/wind" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/music" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/turntable" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/voice/Serithi" +#define FILE_DIR "sound/vox" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES #define DEBUG @@ -850,10 +926,10 @@ #include "code\modules\customitems\item_spawning.dm" #include "code\modules\customitems\definitions\base.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\footprints_and_rag.dm" -#include "code\modules\detectivework\scanner.dm" +#include "code\modules\DetectiveWork\detective_work.dm" +#include "code\modules\DetectiveWork\evidence.dm" +#include "code\modules\DetectiveWork\footprints_and_rag.dm" +#include "code\modules\DetectiveWork\scanner.dm" #include "code\modules\economy\Accounts.dm" #include "code\modules\economy\Accounts_DB.dm" #include "code\modules\economy\ATM.dm" @@ -916,6 +992,7 @@ #include "code\modules\flufftext\Hallucination.dm" #include "code\modules\flufftext\TextFilters.dm" #include "code\modules\food\cereal_maker.dm" +#include "code\modules\food\cooker.dm" #include "code\modules\food\customizables.dm" #include "code\modules\food\deep_fryer.dm" #include "code\modules\food\food_grill.dm" diff --git a/code/modules/food/cereal_maker.dm b/code/modules/food/cereal_maker.dm index 95f7fd25ea3..3e682f5028c 100644 --- a/code/modules/food/cereal_maker.dm +++ b/code/modules/food/cereal_maker.dm @@ -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 << "[src] is already processing, please wait." - return - if(istype(I, /obj/item/weapon/grab)||istype(I, /obj/item/tk_grab)) - user << "That isn't going to fit." - return - if(istype(I, /obj/item/weapon/reagent_containers/glass/)) - user << "That would probably break [src]." - 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 << "That isn't going to fit." - return - else - user << "You put [I] into [src]." - 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 diff --git a/code/modules/food/cooker.dm b/code/modules/food/cooker.dm new file mode 100644 index 00000000000..35f773118f7 --- /dev/null +++ b/code/modules/food/cooker.dm @@ -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 << "[src] is still active!" + return 0 + if(istype(check, /obj/item/weapon/grab) || istype(check, /obj/item/tk_grab)) + user << "That isn't going to fit." + return 0 + if(istype(check, /obj/item/weapon/reagent_containers/glass)) + user << "That would probably break [src]." + 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 << "That isn't going to fit." + 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 << "You smell burning coming from the [src]!" + 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 << "You put [tocook] into [src]." + 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 << "That is already [thiscooktype], it would do nothing!" + 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) + + + diff --git a/code/modules/food/deep_fryer.dm b/code/modules/food/deep_fryer.dm index 7e31f0b5282..cfe117c832e 100644 --- a/code/modules/food/deep_fryer.dm +++ b/code/modules/food/deep_fryer.dm @@ -1,71 +1,18 @@ -/obj/machinery/deepfryer +/obj/machinery/cooker/deepfryer name = "deep fryer" desc = "Deep fried everything." 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 << "[src] is still active!" - return - if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/deepfryholder)) - user << "[I] is already deepfried, you vomituous deviant. This attempt has been logged." - return - if(istype(I, /obj/item/weapon/grab) || istype(I, /obj/item/tk_grab)) - user << "That isn't going to fit." - return - if(istype(I, /obj/item/weapon/reagent_containers/glass)) - user << "That would probably break [src]." - 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 << "That isn't going to fit." - return - else - user << "You put [I] into [src]." - 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 << "You pull [frying] from [src]! It looks like you were just in time!" - user.put_in_hands(frying) - frying = null - return - ..() \ No newline at end of file +obj/machinery/cooker/deepfryer/gettype() + var/obj/item/weapon/reagent_containers/food/snacks/deepfryholder/type = new(get_turf(src)) + return type + diff --git a/code/modules/food/food_grill.dm b/code/modules/food/food_grill.dm index a9e1db2f284..f3b0c296763 100644 --- a/code/modules/food/food_grill.dm +++ b/code/modules/food/food_grill.dm @@ -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 << "[src] is already processing, please wait." - return - if(istype(I, /obj/item/weapon/grab)||istype(I, /obj/item/tk_grab)) - user << "That isn't going to fit." - return - else - user << "You put [I] onto [src]." - 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]" \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 21b1323c1d4..d054e15e5e3 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -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) diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 0a93b237fd5..88738875aa0 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -2540,11 +2540,11 @@ "aWR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aWS" = (/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "aWT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"aWU" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Kitchen"; dir = 2},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"aWU" = (/obj/machinery/cooker/foodgrill,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "aWV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"aWW" = (/obj/machinery/cerealmaker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"aWW" = (/obj/machinery/cooker/cerealmaker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "aWX" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) -"aWY" = (/obj/machinery/deepfryer,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"aWY" = (/obj/machinery/cooker/deepfryer,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "aWZ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/cooking,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "aXa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "aXb" = (/turf/simulated/floor,/area/hydroponics)