From 4b01dbe5d407b549d3f1d9bc03c92b5847aa2e12 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 16 May 2023 05:10:08 +0300 Subject: [PATCH] Connect air alarm to air sensor (#75187) ## About The Pull Request To control vents and scrubbers in ordinance, burn and engine chambers, mappers extend the area outside of the walls towards a tile where they place the air alarm. With this PR, they can now assign `chamber_id` to an air alarm and connect to the chamber with an air sensor. There is a new map helper for this. Also, this connection can be done manually. You need to click on a sensor with a multi-tool, then unlock certain air alarm, and click with a multi-tool on it. This action will link sensor to an air alarm, reporting gas mixture from the sensor tile and giving control over the vents and scrubbers of the sensor's area. ### TLDR Before: ordnance_before After: ordnance_after This is how the area is setup on meta station right now vs if it was setup with a link ![image](https://user-images.githubusercontent.com/3625094/236578327-531cfb6f-e0ac-4c03-927f-f5b05b9c74ab.png) This is also true for the supermatter chamber - you can make the air alarm display the gas mix in the actual chamber and avoid using mapping area hack there too. supermatter_after ## Why It's Good For The Game The area hack is no longer needed and you can place air alarm to control certain remote area wherever you want when you design a map. Even 3 air alarms next to each other controlling 3 different burn chambers. The air alarm will also report the gas mix on the actual tile of a sensor, instead of the gas mix before the air alarm, which is usually a normal habitable environment. Also, now you can build such chambers manually because there are no precise area editing tools available in-game to repeat the area hack. ## Changelog :cl: add: Air alarms can be connected to an area remotely via air sensor with multi-tool and corresponding access qol: Mapping: Added air alarm helper to link air alarm with certain chamber_id on map load /:cl: --- .../computer/atmos_computers/__identifiers.dm | 2 + .../computer/atmos_computers/_air_sensor.dm | 6 +- .../computer/atmos_computers/air_sensors.dm | 6 +- .../machinery/air_alarm/_air_alarm.dm | 72 ++++++++++++++++-- code/modules/mapping/mapping_helpers.dm | 25 +++++- icons/effects/mapping_helpers.dmi | Bin 23636 -> 24760 bytes tgui/packages/tgui/interfaces/AirAlarm.tsx | 29 +++++-- 7 files changed, 123 insertions(+), 17 deletions(-) diff --git a/code/game/machinery/computer/atmos_computers/__identifiers.dm b/code/game/machinery/computer/atmos_computers/__identifiers.dm index 381fedd5bd0..ffb4d8aa479 100644 --- a/code/game/machinery/computer/atmos_computers/__identifiers.dm +++ b/code/game/machinery/computer/atmos_computers/__identifiers.dm @@ -30,6 +30,7 @@ #define ATMOS_GAS_MONITOR_ORDNANCE_FREEZER "ordnancefreezer" #define ATMOS_GAS_MONITOR_DISTRO "distro" #define ATMOS_GAS_MONITOR_WASTE "waste" +#define ATMOS_GAS_MONITOR_ENGINE "engine" ///maps a chamber id to its air sensor #define CHAMBER_SENSOR_FROM_ID(chamber_id) ((chamber_id) + "_sensor") @@ -67,4 +68,5 @@ GLOBAL_LIST_INIT(station_gas_chambers, list( ATMOS_GAS_MONITOR_ORDNANCE_FREEZER = "Ordnance Freezer Chamber", ATMOS_GAS_MONITOR_DISTRO = "Distribution Loop", ATMOS_GAS_MONITOR_WASTE = "Waste Loop", + ATMOS_GAS_MONITOR_ENGINE = "Supermatter Engine Chamber", )) diff --git a/code/game/machinery/computer/atmos_computers/_air_sensor.dm b/code/game/machinery/computer/atmos_computers/_air_sensor.dm index aca8b7ef43d..45d705236d3 100644 --- a/code/game/machinery/computer/atmos_computers/_air_sensor.dm +++ b/code/game/machinery/computer/atmos_computers/_air_sensor.dm @@ -60,10 +60,8 @@ input.chamber_id = chamber_id GLOB.objects_by_id_tag[CHAMBER_INPUT_FROM_ID(chamber_id)] = input balloon_alert(user, "connected to input") - else if(istype(multi_tool.buffer, /obj/machinery/atmospherics/components/unary/vent_pump)) var/obj/machinery/atmospherics/components/unary/vent_pump/output = multi_tool.buffer - //so its no longer controlled by air alarm output.disconnect_from_area() //configuration copied from /obj/machinery/atmospherics/components/unary/vent_pump/siphon @@ -71,9 +69,11 @@ output.pressure_checks = ATMOS_INTERNAL_BOUND output.internal_pressure_bound = 4000 output.external_pressure_bound = 0 - output.chamber_id = chamber_id GLOB.objects_by_id_tag[CHAMBER_OUTPUT_FROM_ID(chamber_id)] = output balloon_alert(user, "connected to output") + else + multi_tool.buffer = src + balloon_alert(user, "added to multitool buffer") return TRUE diff --git a/code/game/machinery/computer/atmos_computers/air_sensors.dm b/code/game/machinery/computer/atmos_computers/air_sensors.dm index bd28bcbae3a..723ffacb2eb 100644 --- a/code/game/machinery/computer/atmos_computers/air_sensors.dm +++ b/code/game/machinery/computer/atmos_computers/air_sensors.dm @@ -85,7 +85,7 @@ /obj/machinery/air_sensor/antinoblium_tank name = "antinoblium tank gas sensor" chamber_id = ATMOS_GAS_MONITOR_ANTINOBLIUM - + /obj/machinery/air_sensor/incinerator_tank name = "incinerator chamber gas sensor" chamber_id = ATMOS_GAS_MONITOR_INCINERATOR @@ -97,3 +97,7 @@ /obj/machinery/air_sensor/ordnance_freezer_chamber name = "ordnance freezer chamber gas sensor" chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_FREEZER + +/obj/machinery/air_sensor/engine_chamber + name = "supermatter engine chamber gas sensor" + chamber_id = ATMOS_GAS_MONITOR_ENGINE diff --git a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm index b1f1967a993..5564d7974cd 100644 --- a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm +++ b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm @@ -57,6 +57,13 @@ /// Used for air alarm helper called tlv_no_ckecks to remove alarm thresholds. var/tlv_no_checks = FALSE + /// Used for connecting air alarm to a remote tile/zone via air sensor instead of the tile/zone of the air alarm + var/obj/machinery/air_sensor/connected_sensor + /// Used to link air alarm to air sensor via map helpers + var/air_sensor_chamber_id = "" + /// Whether it is possible to link/unlink this air alarm from a sensor + var/allow_link_change = TRUE + GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) @@ -92,7 +99,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) else tlv_collection[gas_path] = new /datum/tlv/no_checks - my_area = get_area(src) + my_area = connected_sensor ? get_area(connected_sensor) : get_area(src) alarm_manager = new(src) select_mode(src, /datum/air_alarm_mode/filtering) @@ -121,7 +128,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) return . = ..() - my_area = area_to_register + my_area = connected_sensor ? get_area(connected_sensor) : area_to_register update_appearance() /obj/machinery/airalarm/update_name(updates) @@ -134,7 +141,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) return . = ..() - my_area = null + my_area = connected_sensor ? get_area(connected_sensor) : null /obj/machinery/airalarm/examine(mob/user) . = ..() @@ -153,6 +160,19 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) return ..() return UI_CLOSE +/obj/machinery/airalarm/multitool_act(mob/living/user, obj/item/multitool/multi_tool) + .= ..() + + if (!istype(multi_tool) || locked) + return . + + if(istype(multi_tool.buffer, /obj/machinery/air_sensor)) + if(!allow_link_change) + balloon_alert(user, "linking disabled") + return TOOL_ACT_SIGNAL_BLOCKING + connect_sensor(multi_tool.buffer) + balloon_alert(user, "connected sensor") + return TOOL_ACT_TOOLTYPE_SUCCESS /obj/machinery/airalarm/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) @@ -180,14 +200,21 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) data["dangerLevel"] = danger_level data["atmosAlarm"] = !!my_area.active_alarms[ALARM_ATMOS] data["fireAlarm"] = my_area.fire + data["sensor"] = !!connected_sensor + data["allowLinkChange"] = allow_link_change - var/turf/turf = get_turf(src) + var/turf/turf = connected_sensor ? get_turf(connected_sensor) : get_turf(src) var/datum/gas_mixture/environment = turf.return_air() var/total_moles = environment.total_moles() var/temp = environment.temperature var/pressure = environment.return_pressure() data["envData"] = list() + if(connected_sensor) + data["envData"] += list(list( + "name" = "Linked area", + "value" = my_area.name + )) data["envData"] += list(list( "name" = "Pressure", "value" = "[round(pressure, 0.01)] kPa", @@ -287,7 +314,8 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) return var/mob/user = usr - var/area/area = get_area(src) + var/area/area = connected_sensor ? get_area(connected_sensor) : get_area(src) + ASSERT(!isnull(area)) var/ref = params["ref"] @@ -394,7 +422,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) tlv.set_value(threshold_type, value) investigate_log("threshold value for [threshold]:[threshold_type] was set to [value] by [key_name(usr)]", INVESTIGATE_ATMOS) - var/turf/our_turf = get_turf(src) + var/turf/our_turf = connected_sensor ? get_turf(connected_sensor) : get_turf(src) var/datum/gas_mixture/environment = our_turf.return_air() check_danger(our_turf, environment, environment.temperature) @@ -407,7 +435,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) tlv.reset_value(threshold_type) investigate_log("threshold value for [threshold]:[threshold_type] was reset by [key_name(usr)]", INVESTIGATE_ATMOS) - var/turf/our_turf = get_turf(src) + var/turf/our_turf = connected_sensor ? get_turf(connected_sensor) : get_turf(src) var/datum/gas_mixture/environment = our_turf.return_air() check_danger(our_turf, environment, environment.temperature) @@ -419,6 +447,10 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) if (alarm_manager.clear_alarm(ALARM_ATMOS)) danger_level = AIR_ALARM_ALERT_NONE + if ("disconnect_sensor") + if(allow_link_change) + disconnect_sensor() + update_appearance() return TRUE @@ -557,3 +589,29 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) /obj/machinery/airalarm/proc/set_tlv_no_checks() tlv_collection["temperature"] = new /datum/tlv/no_checks tlv_collection["pressure"] = new /datum/tlv/no_checks + +///Used for air alarm link helper, which connects air alarm to a sensor with corresponding chamber_id +/obj/machinery/airalarm/proc/setup_chamber_link() + var/obj/machinery/air_sensor/sensor = GLOB.objects_by_id_tag[CHAMBER_SENSOR_FROM_ID(air_sensor_chamber_id)] + if(isnull(sensor)) + log_mapping("[src] at [AREACOORD(src)] tried to connect to a sensor, but no sensor with chamber_id:[air_sensor_chamber_id] found!") + return + connect_sensor(sensor) + +///Used to connect air alarm with a sensor +/obj/machinery/airalarm/proc/connect_sensor(obj/machinery/air_sensor/sensor) + if(!isnull(connected_sensor)) + UnregisterSignal(connected_sensor, COMSIG_PARENT_QDELETING) + connected_sensor = sensor + RegisterSignal(connected_sensor, COMSIG_PARENT_QDELETING, PROC_REF(disconnect_sensor)) + my_area = get_area(connected_sensor) + update_name() + check_danger() + +///Used to reset the air alarm to default configuration after disconnecting from air sensor +/obj/machinery/airalarm/proc/disconnect_sensor() + UnregisterSignal(connected_sensor, COMSIG_PARENT_QDELETING) + connected_sensor = null + my_area = get_area(src) + update_name() + check_danger() diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 4100fe5e687..1d4c74d93ed 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -253,7 +253,7 @@ //air alarm helpers /obj/effect/mapping_helpers/airalarm desc = "You shouldn't see this. Report it please." - layer = DOOR_HELPER_LAYER + layer = ABOVE_OBJ_LAYER late = TRUE /obj/effect/mapping_helpers/airalarm/Initialize(mapload) @@ -301,6 +301,9 @@ if(target.syndicate_access + target.away_general_access + target.engine_access + target.mixingchamber_access + target.all_access > 1) CRASH("Tried to combine incompatible air alarm access helpers!") + if(target.air_sensor_chamber_id) + target.setup_chamber_link() + target.update_appearance() qdel(src) @@ -387,6 +390,26 @@ log_mapping("[src] at [AREACOORD(src)] [(area.type)] tried to adjust [target]'s tlv to no_checks but it's already changed!") target.tlv_no_checks = TRUE +/obj/effect/mapping_helpers/airalarm/link + name = "airalarm link helper" + icon_state = "airalarm_link_helper" + var/chamber_id = "" + var/allow_link_change = FALSE + +/obj/effect/mapping_helpers/airalarm/link/Initialize(mapload) + . = ..() + if(!mapload) + log_mapping("[src] spawned outside of mapload!") + return INITIALIZE_HINT_QDEL + + var/obj/machinery/airalarm/alarm = locate(/obj/machinery/airalarm) in loc + if(!isnull(alarm)) + alarm.air_sensor_chamber_id = chamber_id + alarm.allow_link_change = allow_link_change + else + log_mapping("[src] failed to find air alarm at [AREACOORD(src)].") + return INITIALIZE_HINT_QDEL + //apc helpers /obj/effect/mapping_helpers/apc desc = "You shouldn't see this. Report it please." diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index d75ed305651aa0935e6da65246404ace2b0cf1d0..335ba9a57a8c227e1dfe9145721498617fe68e25 100644 GIT binary patch literal 24760 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

+I%)z$3Tn#m@fDl;`VXCQN3 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 literal 23636 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 ZHbMd4ulP5AA!Q2(=xQ2jRH}g^{s;D&mXZJf diff --git a/tgui/packages/tgui/interfaces/AirAlarm.tsx b/tgui/packages/tgui/interfaces/AirAlarm.tsx index 7dd02230cd3..78e3c02847e 100644 --- a/tgui/packages/tgui/interfaces/AirAlarm.tsx +++ b/tgui/packages/tgui/interfaces/AirAlarm.tsx @@ -13,6 +13,8 @@ type AirAlarmData = { dangerLevel: 0 | 1 | 2; atmosAlarm: BooleanLike; // fix this fireAlarm: BooleanLike; + sensor: BooleanLike; + allowLinkChange: BooleanLike; envData: { name: string; value: string; // preformatted in backend, shorter code that way. @@ -167,7 +169,14 @@ const AirAlarmControl = (props, context) => { const AirAlarmControlHome = (props, context) => { const { act, data } = useBackend(context); const [screen, setScreen] = useLocalState(context, 'screen', 'home'); - const { selectedModePath, panicSiphonPath, filteringPath, atmosAlarm } = data; + const { + selectedModePath, + panicSiphonPath, + filteringPath, + atmosAlarm, + sensor, + allowLinkChange, + } = data; const isPanicSiphoning = selectedModePath === panicSiphonPath; return ( <> @@ -212,6 +221,16 @@ const AirAlarmControlHome = (props, context) => { content="Alarm Thresholds" onClick={() => setScreen('thresholds')} /> + {!!sensor && !!allowLinkChange && ( + + act('disconnect_sensor')} + /> + + )} ); }; @@ -364,16 +383,16 @@ const AirAlarmControlThresholds = (props, context) => { Threshold - Minimum Hazard + Danger Below - Minimum Warning + Warning Below - Maximum Warning + Warning Above - Maximum Hazard + Danger Above Actions