diff --git a/aurorastation.dme b/aurorastation.dme index 35bae70cf47..f42e2764e59 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1489,6 +1489,7 @@ #include "code\modules\cooking\recipes\recipes_breads.dm" #include "code\modules\cooking\recipes\recipes_breakfast.dm" #include "code\modules\cooking\recipes\recipes_fryer.dm" +#include "code\modules\cooking\recipes\recipes_grill.dm" #include "code\modules\cooking\recipes\recipes_meat.dm" #include "code\modules\cooking\recipes\recipes_mix.dm" #include "code\modules\cooking\recipes\recipes_pan.dm" diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index ba624bd02db..03a7a7582ea 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -432,6 +432,7 @@ Define for getting a bitfield of adjacent turfs that meet a condition. #define SKILLET 1 << 3 #define SAUCEPAN 1 << 4 #define POT 1 << 5 +#define GRILL 1 << 6 // Cooking misc. // can_insert return values diff --git a/code/modules/cooking/machinery/cooking_machines/_appliance.dm b/code/modules/cooking/machinery/cooking_machines/_appliance.dm index 8effb4f45d2..cb9b4af7bf7 100644 --- a/code/modules/cooking/machinery/cooking_machines/_appliance.dm +++ b/code/modules/cooking/machinery/cooking_machines/_appliance.dm @@ -42,7 +42,7 @@ // If the machine has multiple output modes, define them here. var/selected_option var/list/output_options = list() - + var/finish_verb = "pings!" var/combine_first = FALSE//If 1, this appliance will do combination cooking before checking recipes /obj/machinery/appliance/Initialize() @@ -326,8 +326,7 @@ /obj/machinery/appliance/proc/finish_cooking(var/datum/cooking_item/CI) - - visible_message("[src] pings!") + audible_message("[src] [finish_verb]") if(cooked_sound) playsound(get_turf(src), cooked_sound, 50, 1) //Check recipes first, a valid recipe overrides other options diff --git a/code/modules/cooking/machinery/cooking_machines/_cooker.dm b/code/modules/cooking/machinery/cooking_machines/_cooker.dm index 47739d31a31..69978cb362f 100644 --- a/code/modules/cooking/machinery/cooking_machines/_cooker.dm +++ b/code/modules/cooking/machinery/cooking_machines/_cooker.dm @@ -48,7 +48,7 @@ description += "[src] is still heating up and is too cold to cook anything yet." else description += "It is running at [round(get_efficiency(), 0.1)]% efficiency!" - description += "Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C" + description += "
Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C" else description += "It is switched off." openToolTip(usr, src, params, name, description) @@ -111,10 +111,13 @@ stat &= ~POWEROFF use_power = !(stat & POWEROFF) && use_power if(wasoff != (stat & POWEROFF)) - user.visible_message("[user] turns [use_power ? "on" : "off"] [src].", "You turn [use_power ? "on" : "off"] [src].") + activation_message(user) playsound(src, 'sound/machines/click.ogg', 40, 1) update_icon() +/obj/machinery/appliance/cooker/proc/activation_message(var/mob/user) + user.visible_message("[user] turns [use_power ? "on" : "off"] [src].", "You turn [use_power ? "on" : "off"] [src].") + /obj/machinery/appliance/cooker/update_icon() overlays.Cut() var/image/light diff --git a/code/modules/cooking/machinery/cooking_machines/container.dm b/code/modules/cooking/machinery/cooking_machines/container.dm index 6a3fbe33dfa..18756520b65 100644 --- a/code/modules/cooking/machinery/cooking_machines/container.dm +++ b/code/modules/cooking/machinery/cooking_machines/container.dm @@ -5,6 +5,7 @@ /obj/item/reagent_containers/cooking_container icon = 'icons/obj/cooking_machines.dmi' var/shortname + var/place_verb = "into" var/max_space = 20//Maximum sum of w-classes of foods in this container at once volume = 80//Maximum units of reagents flags = OPENCONTAINER | NOREACT @@ -61,7 +62,7 @@ if(!user.unEquip(I)) return I.forceMove(src) - to_chat(user, SPAN_NOTICE("You put [I] into [src].")) + to_chat(user, SPAN_NOTICE("You put [I] [place_verb] [src].")) return /obj/item/reagent_containers/cooking_container/verb/empty() @@ -230,6 +231,22 @@ icon_state = "basket" appliancetype = FRYER +/obj/item/reagent_containers/cooking_container/grill_grate + name = "grill grate" + shortname = "grate" + place_verb = "onto" + desc = "Primarily used to grill meat, place this on a grill and grab a can of energy drink." + icon_state = "grill_grate" + appliancetype = GRILL + insertable = list( + /obj/item/reagent_containers/food/snacks/meat + ) + +/obj/item/reagent_containers/cooking_container/grill_grate/can_fit() + if(length(contents) >= 3) + return FALSE + return TRUE + /obj/item/reagent_containers/cooking_container/plate name = "serving plate" shortname = "plate" diff --git a/code/modules/cooking/machinery/cooking_machines/grill.dm b/code/modules/cooking/machinery/cooking_machines/grill.dm index 215f32dfdb2..c6ffa707fef 100644 --- a/code/modules/cooking/machinery/cooking_machines/grill.dm +++ b/code/modules/cooking/machinery/cooking_machines/grill.dm @@ -1,61 +1,66 @@ -/obj/machinery/appliance/grill +/obj/machinery/appliance/cooker/grill name = "grill" desc = "Backyard grilling, IN SPACE." icon_state = "grill_off" cook_type = "grilled" + appliancetype = GRILL + stat = POWEROFF food_color = "#a34719" on_icon = "grill_on" off_icon = "grill_off" - stat = POWEROFF + finish_verb = "sizzles to completion!" + cooked_sound = 'sound/effects/meatsizzle.ogg' + min_temp = 100 + T0C + optimal_temp = 150 + T0C + temp_settings = 1 + max_contents = 1 + resistance = 500 // assuming it's a fired grill, it shouldn't take very long to heat -/obj/machinery/appliance/grill/attempt_toggle_power(var/mob/user, ranged = FALSE) - . = ..(user, ranged) - if(use_power) - get_cooking_work(cooking_objs[1]) + idle_power_usage = 0 + active_power_usage = 0 -/obj/machinery/appliance/grill/Initialize() - . = ..() - cooking_objs += new /datum/cooking_item(new /obj/item/reagent_containers/cooking_container(src)) - cooking = 0 + cooking_coeff = 0.3 // cook it nice and slow -/obj/machinery/appliance/grill/has_space(var/obj/item/I) - var/datum/cooking_item/CI = cooking_objs[1] - if (!CI || !CI.container) - return FALSE + starts_with = list( + /obj/item/reagent_containers/cooking_container/grill_grate + ) - if (CI.container.can_fit(I)) - return CI +/obj/machinery/appliance/cooker/grill/RefreshParts() + ..() + cooking_coeff = 0.3 // we will always cook nice and slow +/obj/machinery/appliance/cooker/grill/get_efficiency() + return (temperature / optimal_temp) * 100 + +/obj/machinery/appliance/cooker/grill/activation_message(var/mob/user) + user.visible_message("[user] [stat ? "turns off" : "fires up"] \the [src].", "You [stat ? "turn off" : "fire up"] \the [src].") + +/obj/machinery/appliance/cooker/grill/has_space(var/obj/item/I) + if(istype(I, /obj/item/reagent_containers/cooking_container)) + if(length(cooking_objs) < max_contents) + return TRUE + else + if(length(cooking_objs)) + var/datum/cooking_item/CI = cooking_objs[1] + var/obj/item/reagent_containers/cooking_container/grill_grate/G = CI.container + if(G?.can_fit(I)) + return CI return FALSE -//Container is not removable -/obj/machinery/appliance/grill/removal_menu(var/mob/user) - if (!can_remove_items(user)) - return FALSE - var/list/menuoptions = list() - for (var/datum/cooking_item/CI in cooking_objs) - if (CI.container?.check_contents() == CONTAINER_EMPTY) - to_chat(user, SPAN_WARNING("There's nothing in [src] to remove!")) - return - for (var/obj/item/I in CI.container) - menuoptions[I.name] = I - - var/selection = show_radial_menu(user, src, menuoptions, require_near = TRUE, tooltips = TRUE, no_repeat_close = TRUE) - if (!selection) - return FALSE - var/obj/item/I = menuoptions[selection] - if (!user?.put_in_hands(I)) - I.forceMove(get_turf(src)) - update_icon() - return TRUE - -/obj/machinery/appliance/grill/update_icon() - if (!stat) +/obj/machinery/appliance/cooker/grill/update_icon() + . = ..() + cut_overlays() + if(!stat) icon_state = on_icon else icon_state = off_icon - -/obj/machinery/appliance/grill/machinery_process() - if (!stat) - for (var/i in cooking_objs) - do_cooking_tick(i) + if(length(cooking_objs)) + var/datum/cooking_item/CI = cooking_objs[1] + var/obj/item/reagent_containers/cooking_container/grill_grate/G = CI.container + if(G) + add_overlay(image('icons/obj/cooking_machines.dmi', "grill")) + var/contents_len = length(G.contents) + if(!contents_len) + return + for(var/i = 1 to contents_len) + add_overlay(image('icons/obj/cooking_machines.dmi', "meat[i]")) \ No newline at end of file diff --git a/code/modules/cooking/recipes/recipes_grill.dm b/code/modules/cooking/recipes/recipes_grill.dm new file mode 100644 index 00000000000..47d365da1d0 --- /dev/null +++ b/code/modules/cooking/recipes/recipes_grill.dm @@ -0,0 +1,7 @@ +/decl/recipe/grilled_meat + appliance = GRILL + items = list( + /obj/item/reagent_containers/food/snacks/meat + ) + reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1, /datum/reagent/spacespice = 1) + result = /obj/item/reagent_containers/food/snacks/meatsteak/grilled \ 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 c8501ea0c77..ffb57684696 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1511,6 +1511,11 @@ if(76 to INFINITY) icon_state = "steak" +/obj/item/reagent_containers/food/snacks/meatsteak/grilled + name = "grilled steak" + desc = "A piece of meat grilled to absolute perfection. Sssssssip. This is the life." + reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/triglyceride = 2, /datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1, /datum/reagent/spacespice = 1) + /obj/item/reagent_containers/food/snacks/spacylibertyduff name = "spacy liberty duff" desc = "Jello gelatin, from Alfred Hubbard's cookbook." diff --git a/html/changelogs/geeves-forgodssake.yml b/html/changelogs/geeves-forgodssake.yml new file mode 100644 index 00000000000..fe55fb6189c --- /dev/null +++ b/html/changelogs/geeves-forgodssake.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Added various sprites to grills. Added a grill recipe." + - bugfix: "Fixed various bugs related to grills." diff --git a/icons/obj/cooking_machines.dmi b/icons/obj/cooking_machines.dmi index 7a064b7943f..a566e64d39a 100644 Binary files a/icons/obj/cooking_machines.dmi and b/icons/obj/cooking_machines.dmi differ diff --git a/sound/effects/meatsizzle.ogg b/sound/effects/meatsizzle.ogg new file mode 100644 index 00000000000..e87e8ce9319 Binary files /dev/null and b/sound/effects/meatsizzle.ogg differ