From 12247b735115ec96e15fc39d7a1de97a8748ccf9 Mon Sep 17 00:00:00 2001 From: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Date: Tue, 27 Aug 2024 03:20:16 -0400 Subject: [PATCH 1/5] before settings --- code/game/machinery/Sleeper.dm | 60 ++++-- code/game/machinery/mancrowave.dm | 197 +++++++++++++++++++ daedalus.dme | 1 + icons/obj/machines/cryogenics3.dmi | Bin 0 -> 23604 bytes icons/obj/machines/sleeper.dmi | Bin 73778 -> 75184 bytes tgui/packages/tgui/interfaces/Mancrowave.jsx | 70 +++++++ 6 files changed, 313 insertions(+), 15 deletions(-) create mode 100644 code/game/machinery/mancrowave.dm create mode 100644 icons/obj/machines/cryogenics3.dmi create mode 100644 tgui/packages/tgui/interfaces/Mancrowave.jsx diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index f988e51fbaf7..940b858c70e0 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -15,10 +15,16 @@ state_open = TRUE circuit = /obj/item/circuitboard/machine/sleeper + processing_flags = START_PROCESSING_MANUALLY + + light_color = LIGHT_COLOR_CYAN + light_inner_range = 1 + light_power = 1 + light_on = FALSE + var/efficiency = 1 var/min_health = -25 var/list/available_chems - var/controls_inside = FALSE var/list/possible_chems = list( list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/morphine, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane), list(/datum/reagent/medicine/imidazoline,/datum/reagent/medicine/inacusiate), @@ -26,8 +32,16 @@ list(/datum/reagent/medicine/tricordrazine) ) var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: ryetalyn -> morphine + var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning + /// Can the controls be accessed by the occupant? + var/controls_inside = FALSE + /// Has a maintenance hatch + var/has_panel = TRUE + var/has_anim = TRUE + var/rotatable = TRUE var/enter_message = "You feel cool air surround you. You go numb as your senses turn inward." + payment_department = ACCOUNT_MED fair_market_price = 5 @@ -51,10 +65,11 @@ efficiency = initial(efficiency)* E min_health = initial(min_health) * E - available_chems = list() - for(var/i in 1 to I) - available_chems |= possible_chems[i] - reset_chem_buttons() + if(length(possible_chems)) + available_chems = list() + for(var/i in 1 to I) + available_chems |= possible_chems[i] + reset_chem_buttons() /obj/machinery/sleeper/update_icon_state() icon_state = "[base_icon_state][state_open ? "-open" : null]" @@ -65,6 +80,10 @@ span_notice("You climb out of [src]!")) open_machine() +/obj/machinery/sleeper/on_set_is_operational(old_value) + . = ..() + refresh_light() + /obj/machinery/sleeper/Exited(atom/movable/gone, direction) . = ..() if (!state_open && gone == occupant) @@ -76,21 +95,29 @@ /obj/machinery/sleeper/open_machine() if(!state_open && !panel_open) - z_flick("[initial(icon_state)]-anim", src) + if(has_anim) + z_flick("[initial(icon_state)]-anim", src) ..() /obj/machinery/sleeper/close_machine(mob/user) if((isnull(user) || istype(user)) && state_open && !panel_open) - z_flick("[initial(icon_state)]-anim", src) + if(has_anim) + z_flick("[initial(icon_state)]-anim", src) + ..(user) + var/mob/living/mob_occupant = occupant - if(mob_occupant && mob_occupant.stat != DEAD) + if(!mob_occupant) + return + + if(enter_message && mob_occupant.stat != DEAD) to_chat(mob_occupant, "[enter_message]") /obj/machinery/sleeper/emp_act(severity) . = ..() if (. & EMP_PROTECT_SELF) return + if(is_operational && occupant) open_machine() @@ -101,11 +128,12 @@ close_machine(target) - /obj/machinery/sleeper/screwdriver_act(mob/living/user, obj/item/I) . = TRUE if(..()) return + if(!has_panel) + return FALSE if(occupant) to_chat(user, span_warning("[src] is currently occupied!")) return @@ -118,7 +146,7 @@ /obj/machinery/sleeper/wrench_act(mob/living/user, obj/item/I) . = ..() - if(default_change_direction_wrench(user, I)) + if(rotatable && default_change_direction_wrench(user, I)) return TRUE /obj/machinery/sleeper/crowbar_act(mob/living/user, obj/item/I) @@ -129,7 +157,7 @@ return TRUE /obj/machinery/sleeper/default_pry_open(obj/item/I) //wew - . = !(state_open || panel_open || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR + . = has_panel && !(state_open || panel_open || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR if(.) I.play_tool_sound(src, 50) visible_message(span_notice("[usr] pries open [src]."), span_notice("You pry open [src].")) @@ -159,10 +187,6 @@ . = ..() . += span_notice("Alt-click [src] to [state_open ? "close" : "open"] it.") -/obj/machinery/sleeper/process() - ..() - use_power(active_power_usage) - /obj/machinery/sleeper/ui_data() var/list/data = list() data["occupied"] = occupant ? 1 : 0 @@ -264,6 +288,12 @@ chem_buttons[chem] = pick_n_take(av_chem) //no dupes, allow for random buttons to still be correct +/obj/machinery/sleeper/proc/refresh_light() + if(is_operational) + set_light_on(TRUE) + else + set_light_on(FALSE) + /obj/machinery/sleeper/syndie icon_state = "sleeper_s" base_icon_state = "sleeper_s" diff --git a/code/game/machinery/mancrowave.dm b/code/game/machinery/mancrowave.dm new file mode 100644 index 000000000000..b09b443dc05b --- /dev/null +++ b/code/game/machinery/mancrowave.dm @@ -0,0 +1,197 @@ +#define MANCROWAVE_HOMEOSTATIS "Homeostasis" + +/obj/machinery/sleeper/mancrowave + name = "thermal homeostasis regulator" + desc = "A large device with heating coils lining the inner walls." + base_icon_state = "mancrowave" + icon_state = "mancrowave_open" + circuit = /obj/item/circuitboard/machine/sleeper + + light_color = LIGHT_COLOR_ORANGE + + possible_chems = null + + /// Automatically start cooking when an occupant enters + var/automatic = FALSE + /// Automatically eject the occupant on completion. + var/auto_eject = TRUE + + // Stateful vars + var/is_cookin = FALSE + var/current_setting = MANCROWAVE_HOMEOSTATIS + + /// The start time of the cook + var/cook_start_time = 0 + COOLDOWN_DECLARE(cook_timer) + + var/list/cook_options = list( + MANCROWAVE_HOMEOSTATIS = 5 SECONDS, + ) + +/obj/machinery/sleeper/mancrowave/update_icon_state() + . = ..() + if(state_open) + icon_state = "[base_icon_state]_open" + return + + // Closed and on + if(obj_flags & EMAGGED) + icon_state = "[base_icon_state]_emagged" + set_light_color(LIGHT_COLOR_INTENSE_RED) + else + icon_state = "[base_icon_state]_running" + set_light_color(LIGHT_COLOR_ORANGE) + +/obj/machinery/sleeper/mancrowave/on_set_is_operational(old_value) + . = ..() + if(!is_operational) + end_cookin() + +/obj/machinery/sleeper/mancrowave/refresh_light() + if(is_operational && occupant) + set_light_on(TRUE) + else + set_light_on(FALSE) + +/obj/machinery/sleeper/mancrowave/close_machine(mob/user) + . = ..() + refresh_light() + +/obj/machinery/sleeper/mancrowave/open_machine() + . = ..() + refresh_light() + +/obj/machinery/sleeper/mancrowave/set_occupant(atom/movable/new_occupant) + . = ..() + if(isnull(occupant)) + end_cookin() + +/obj/machinery/sleeper/mancrowave/emag_act(mob/user, obj/item/card/emag/emag_card) + if(obj_flags & EMAGGED) + return + + obj_flags |= EMAGGED + name = "THE MANCROWAVE" + + update_appearance(UPDATE_ICON_STATE) + + if(user) + to_chat(user, span_warning("The electromagnet shorts the safeties of [src].")) + +/obj/machinery/sleeper/mancrowave/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Mancrowave", name) + ui.open() + +/obj/machinery/sleeper/mancrowave/ui_data() + var/list/data = list() + data["occupied"] = !!occupant + data["open"] = state_open + data["on"] = is_cookin + data["cook_start"] = cook_start_time + data["now"] = world.time + data["cook_end"] = cook_timer + + var/list/occupant_data = list() + data["occupant"] = occupant_data + + var/mob/living/carbon/human/human_occupant = occupant + if(!human_occupant) + return data + + occupant_data["name"] = human_occupant.name + occupant_data["core_temperature"] = "[round(human_occupant.coretemperature - T0C, 0.1)] C" + + switch(human_occupant.stat) + if(CONSCIOUS) + if(!HAS_TRAIT(human_occupant, TRAIT_SOFT_CRITICAL_CONDITION)) + data["occupant"]["stat"] = "Conscious" + data["occupant"]["statstate"] = "good" + else + data["occupant"]["stat"] = "Conscious" + data["occupant"]["statstate"] = "average" + if(UNCONSCIOUS) + data["occupant"]["stat"] = "Unconscious" + data["occupant"]["statstate"] = "average" + if(DEAD) + data["occupant"]["stat"] = "Dead" + data["occupant"]["statstate"] = "bad" + + return data + +/obj/machinery/sleeper/mancrowave/ui_act(action, params) + . = ..() + if(.) + return + + switch(action) + if("mancrowave-door") + if(state_open) + close_machine() + else if(!is_cookin) + open_machine() + return TRUE + + if("mancrowave-emergency-stop") + if(!state_open) + end_cookin() + open_machine() + return TRUE + + if("mancrowave-cook") + start_cookin(current_setting) + return TRUE + +/obj/machinery/sleeper/mancrowave/process() + if(!is_cookin) + CRASH("Mancrowave was processing but not cookin'") + + var/mob/living/carbon/human/human_occupant = occupant + var/desired_temp + if(current_setting == MANCROWAVE_HOMEOSTATIS) + desired_temp = human_occupant.get_body_temp_normal() + else + desired_temp = text2num(current_setting) + + if(COOLDOWN_FINISHED(src, cook_timer)) + end_cookin(TRUE) + human_occupant.set_coretemperature(desired_temp) + human_occupant.bodytemperature = desired_temp + return + + var/emag_bonus = (obj_flags & EMAGGED) ? 10 : 1 + var/time_fraction = cook_options[current_setting] / 250 * emag_bonus + var/temp_delta = abs(desired_temp - human_occupant.coretemperature) + + if(human_occupant.coretemperature < desired_temp) + human_occupant.adjust_coretemperature(temp_delta * time_fraction, max_temp = desired_temp) + else + human_occupant.adjust_coretemperature(-(temp_delta) * time_fraction, min_temp = desired_temp) + +/// Attempt to start cookin', returns TRUE on success +/obj/machinery/sleeper/mancrowave/proc/start_cookin(setting) + if(is_cookin || isnull(occupant) || !is_operational) + return FALSE + + current_setting = setting + is_cookin = TRUE + cook_start_time = world.time + COOLDOWN_START(src, cook_timer, cook_options[setting]) + update_use_power(ACTIVE_POWER_USE) + begin_processing() + return TRUE + +/obj/machinery/sleeper/mancrowave/proc/end_cookin(times_up) + is_cookin = FALSE + update_use_power(IDLE_POWER_USE) + end_processing() + + if(!times_up) + return + + playsound(src, 'sound/machines/microwave/microwave-end.ogg', 50) + + if(auto_eject) + open_machine() + diff --git a/daedalus.dme b/daedalus.dme index 3d9e6b2fd266..c7420c241ff2 100644 --- a/daedalus.dme +++ b/daedalus.dme @@ -1328,6 +1328,7 @@ #include "code\game\machinery\launch_pad.dm" #include "code\game\machinery\lightswitch.dm" #include "code\game\machinery\limbgrower.dm" +#include "code\game\machinery\mancrowave.dm" #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\mechlaunchpad.dm" #include "code\game\machinery\medipen_refiller.dm" diff --git a/icons/obj/machines/cryogenics3.dmi b/icons/obj/machines/cryogenics3.dmi new file mode 100644 index 0000000000000000000000000000000000000000..44da4774ee5358f5ec14b0d42f22a0bbc169a1d7 GIT binary patch literal 23604 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 z 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 delta 10308 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 diff --git a/tgui/packages/tgui/interfaces/Mancrowave.jsx b/tgui/packages/tgui/interfaces/Mancrowave.jsx new file mode 100644 index 000000000000..bc826a567dbc --- /dev/null +++ b/tgui/packages/tgui/interfaces/Mancrowave.jsx @@ -0,0 +1,70 @@ +import { useBackend } from '../backend'; +import { Box, Button, LabeledList, ProgressBar, Section } from '../components'; +import { Window } from '../layouts'; + +export const Mancrowave = (props) => { + const { act, data } = useBackend(); + const { open, occupant = {}, occupied, on, cook_start, cook_end, now } = data; + return ( + + +
+ {occupant.stat} + + ) + } + > + <> + + + + {occupied ? occupant.core_temperature : 'N/A'} + + + +
+
+ <> + + + + + + + +
+
+
+ ); +}; From 91b5c9c962e3345a010f766d851ff68eb537717a Mon Sep 17 00:00:00 2001 From: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:36:07 -0400 Subject: [PATCH 2/5] ambience bug --- code/controllers/subsystem/ambience.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/controllers/subsystem/ambience.dm b/code/controllers/subsystem/ambience.dm index 4ca0203ec458..48b71049c019 100644 --- a/code/controllers/subsystem/ambience.dm +++ b/code/controllers/subsystem/ambience.dm @@ -21,14 +21,17 @@ SUBSYSTEM_DEF(ambience) cached_clients.len-- //Check to see if the client exists and isn't held by a new player - var/mob/client_mob = client_iterator?.mob.hear_location() + var/mob/client_mob = client_iterator?.mob if(isnull(client_iterator) || isnewplayer(client_mob)) ambience_listening_clients -= client_iterator client_old_areas -= client_iterator continue - if(!client_mob.can_hear()) - continue + var/atom/movable/hearer = client_mob.hear_location() + if(ismob(hearer)) + var/mob/hearer_mob = hearer + if(!hearer_mob.can_hear()) + continue //Check to see if the client-mob is in a valid area var/area/current_area = get_area(client_mob) From 6f25cb823da8ab4afb120122077e34521a14a437 Mon Sep 17 00:00:00 2001 From: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:37:07 -0400 Subject: [PATCH 3/5] finish up the MANCROWAVE --- code/game/machinery/Sleeper.dm | 2 +- code/game/machinery/mancrowave.dm | 46 +++++++++++++++++--- tgui/packages/tgui/interfaces/Mancrowave.jsx | 37 ++++++++++++++-- 3 files changed, 74 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 940b858c70e0..8c11dee614e6 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -18,7 +18,7 @@ processing_flags = START_PROCESSING_MANUALLY light_color = LIGHT_COLOR_CYAN - light_inner_range = 1 + light_outer_range = 1 light_power = 1 light_on = FALSE diff --git a/code/game/machinery/mancrowave.dm b/code/game/machinery/mancrowave.dm index b09b443dc05b..c9bec83c70f2 100644 --- a/code/game/machinery/mancrowave.dm +++ b/code/game/machinery/mancrowave.dm @@ -1,4 +1,6 @@ #define MANCROWAVE_HOMEOSTATIS "Homeostasis" +#define MANCROWAVE_RARE "Rare" +#define MANCROWAVE_WELL_DONE "Well Done" /obj/machinery/sleeper/mancrowave name = "thermal homeostasis regulator" @@ -62,9 +64,9 @@ refresh_light() /obj/machinery/sleeper/mancrowave/set_occupant(atom/movable/new_occupant) - . = ..() - if(isnull(occupant)) + if(isnull(new_occupant)) end_cookin() + return ..() /obj/machinery/sleeper/mancrowave/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) @@ -72,8 +74,14 @@ obj_flags |= EMAGGED name = "THE MANCROWAVE" + cook_options += list( + MANCROWAVE_RARE = 50 SECONDS, + MANCROWAVE_WELL_DONE = 70 SECONDS, + ) + refresh_light() update_appearance(UPDATE_ICON_STATE) + SStgui.update_uis(src) if(user) to_chat(user, span_warning("The electromagnet shorts the safeties of [src].")) @@ -92,6 +100,8 @@ data["cook_start"] = cook_start_time data["now"] = world.time data["cook_end"] = cook_timer + data["cook_options"] = cook_options + data["current_setting"] = current_setting var/list/occupant_data = list() data["occupant"] = occupant_data @@ -143,16 +153,33 @@ start_cookin(current_setting) return TRUE + if("mancrowave-cook-setting") + var/setting = params["setting"] + if(is_cookin) + return + if(!(setting in cook_options)) + return + + current_setting = setting + return TRUE + /obj/machinery/sleeper/mancrowave/process() if(!is_cookin) CRASH("Mancrowave was processing but not cookin'") var/mob/living/carbon/human/human_occupant = occupant var/desired_temp - if(current_setting == MANCROWAVE_HOMEOSTATIS) - desired_temp = human_occupant.get_body_temp_normal() - else - desired_temp = text2num(current_setting) + switch(current_setting) + if(MANCROWAVE_HOMEOSTATIS) + desired_temp = human_occupant.get_body_temp_normal() + + if(MANCROWAVE_RARE) + human_occupant.add_body_temperature_change("MANCROWAVE", 100) + desired_temp = human_occupant.get_body_temp_normal() + + if(MANCROWAVE_WELL_DONE) + human_occupant.add_body_temperature_change("MANCROWAVE", 250) + desired_temp = human_occupant.get_body_temp_normal() if(COOLDOWN_FINISHED(src, cook_timer)) end_cookin(TRUE) @@ -187,6 +214,10 @@ update_use_power(IDLE_POWER_USE) end_processing() + var/mob/living/carbon/human/human_occupant = occupant + if(ishuman(human_occupant)) + human_occupant.remove_body_temperature_change("MANCROWAVE") + if(!times_up) return @@ -195,3 +226,6 @@ if(auto_eject) open_machine() +#undef MANCROWAVE_HOMEOSTATIS +#undef MANCROWAVE_RARE +#undef MANCROWAVE_WELL_DONE diff --git a/tgui/packages/tgui/interfaces/Mancrowave.jsx b/tgui/packages/tgui/interfaces/Mancrowave.jsx index bc826a567dbc..b1b729c3be8b 100644 --- a/tgui/packages/tgui/interfaces/Mancrowave.jsx +++ b/tgui/packages/tgui/interfaces/Mancrowave.jsx @@ -1,12 +1,29 @@ import { useBackend } from '../backend'; -import { Box, Button, LabeledList, ProgressBar, Section } from '../components'; +import { + Box, + Button, + Dropdown, + LabeledList, + ProgressBar, + Section, +} from '../components'; import { Window } from '../layouts'; export const Mancrowave = (props) => { const { act, data } = useBackend(); - const { open, occupant = {}, occupied, on, cook_start, cook_end, now } = data; + const { + open, + occupant = {}, + occupied, + on, + cook_start, + cook_end, + now, + cook_options = [], + current_setting, + } = data; return ( - +
{
-
+
<> @@ -44,6 +61,18 @@ export const Mancrowave = (props) => { + + act('mancrowave-cook-setting', { + setting: value, + }) + } + disabled={!!on} + /> +