/obj/machinery/computer3/atmos_alert default_prog = /datum/file/program/atmos_alert spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) icon_state = "frame-eng" /datum/file/program/atmos_alert name = "atmospheric alert monitor" desc = "Recieves alerts over the radio." active_state = "alert:2" refresh = 1 execute(var/datum/file/program/source) ..(source) if(!computer.radio) computer.Crash(MISSING_PERIPHERAL) computer.radio.set_frequency(1437,RADIO_ATMOSIA) // This will be called as long as the program is running on the parent computer // and the computer has the radio peripheral receive_signal(datum/signal/signal) if(!signal || signal.encryption) return var/zone = signal.data["zone"] var/severity = signal.data["alert"] if(!zone || !severity) return minor_air_alarms -= zone priority_air_alarms -= zone if(severity=="severe") priority_air_alarms += zone else if (severity=="minor") minor_air_alarms += zone update_icon() return interact() if(!interactable()) return if(!computer.radio) computer.Crash(MISSING_PERIPHERAL) popup.set_content(return_text()) popup.open() update_icon() ..() if(priority_air_alarms.len > 0) overlay.icon_state = "alert:2" else if(minor_air_alarms.len > 0) overlay.icon_state = "alert:1" else overlay.icon_state = "alert:0" if(computer) computer.update_icon() proc/return_text() var/priority_text = "

Priority Alerts:

" var/minor_text = "

Minor Alerts:

" if(priority_air_alarms.len) for(var/zone in priority_air_alarms) priority_text += "[format_text(zone)] [topic_link(src,"priority_clear=[ckey(zone)]","X")]
" else priority_text += "No priority alerts detected.
" if(minor_air_alarms.len) for(var/zone in minor_air_alarms) minor_text += "[format_text(zone)] [topic_link(src,"minor_clear=[ckey(zone)]","X")]
" else minor_text += "No minor alerts detected.
" return "[priority_text]

[minor_text]
[topic_link(src,"close","Close")]" Topic(var/href, var/list/href_list) if(!interactable() || ..(href,href_list)) return if("priority_clear" in href_list) var/removing_zone = href_list["priority_clear"] for(var/zone in priority_air_alarms) if(ckey(zone) == removing_zone) usr << "\green Priority Alert for area [zone] cleared." priority_air_alarms -= zone if("minor_clear" in href_list) var/removing_zone = href_list["minor_clear"] for(var/zone in minor_air_alarms) if(ckey(zone) == removing_zone) usr << "\green Minor Alert for area [zone] cleared." minor_air_alarms -= zone computer.updateUsrDialog()