/obj/machinery/computer/atmos_alert name = "atmospheric alert console" desc = "Used to monitor the station's air alarms." circuit = /obj/item/circuitboard/computer/atmos_alert icon_screen = "alert:0" icon_keyboard = "atmos_key" var/list/priority_alarms = list() var/list/minor_alarms = list() var/receive_frequency = FREQ_ATMOS_ALARMS var/datum/radio_frequency/radio_connection light_color = LIGHT_COLOR_CYAN /obj/machinery/computer/atmos_alert/Initialize(mapload) . = ..() set_frequency(receive_frequency) /obj/machinery/computer/atmos_alert/Destroy() SSradio.remove_object(src, receive_frequency) return ..() /obj/machinery/computer/atmos_alert/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "AtmosAlertConsole", name) ui.open() /obj/machinery/computer/atmos_alert/ui_data(mob/user) var/list/data = list() data["priority"] = list() for(var/zone in priority_alarms) data["priority"] += zone data["minor"] = list() for(var/zone in minor_alarms) data["minor"] += zone return data /obj/machinery/computer/atmos_alert/ui_act(action, params) if(..()) return switch(action) if("clear") var/zone = params["zone"] if(zone in priority_alarms) to_chat(usr, "Priority alarm for [zone] cleared.") priority_alarms -= zone . = TRUE if(zone in minor_alarms) to_chat(usr, "Minor alarm for [zone] cleared.") minor_alarms -= zone . = TRUE update_icon() /obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency) SSradio.remove_object(src, receive_frequency) receive_frequency = new_frequency radio_connection = SSradio.add_object(src, receive_frequency, RADIO_ATMOSIA) /obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal) if(!signal) return var/zone = signal.data["zone"] var/severity = signal.data["alert"] if(!zone || !severity) return minor_alarms -= zone priority_alarms -= zone if(severity == "severe") priority_alarms += zone else if (severity == "minor") minor_alarms += zone update_icon() return /obj/machinery/computer/atmos_alert/update_overlays() . = ..() SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) var/overlay_state = icon_screen if(machine_stat & (NOPOWER|BROKEN)) . |= "[icon_keyboard]_off" return . |= icon_keyboard if(priority_alarms.len) overlay_state = "alert:2" else if(minor_alarms.len) overlay_state = "alert:1" else overlay_state = "alert:0" . |= overlay_state SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir) SSvis_overlays.add_vis_overlay(src, icon, overlay_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha=128)