/obj/item/weapon/circuitboard/atmoscontrol name = "Central Atmospherics Computer Circuitboard" build_path = "/obj/machinery/computer/security/atmoscontrol" /obj/machinery/computer/atmoscontrol name = "Central Atmospherics Computer" icon = 'computer.dmi' icon_state = "computer_generic" density = 1 anchored = 1.0 circuit = "/obj/item/weapon/circuitboard/atmoscontrol" var/obj/machinery/alarm/current = "" var/overridden = 0 //not set yet, can't think of a good way to do it /obj/machinery/computer/atmoscontrol/attack_hand(mob/user) if(..()) return user.machine = src var/dat = "Main Menu
" if(current) dat += src.specific() else for(var/obj/machinery/alarm/alarm in world) dat += "" switch(max(alarm.danger_level, alarm.alarm_area.atmosalm)) if (0) dat += "" if (1) dat += "" if (2) dat += "" dat += "[alarm]
" user << browse(dat, "window=atmoscontrol") /obj/machinery/computer/atmoscontrol/proc/specific() if(!current) return "" var/dat = "

[current.name]


" dat += current.return_status() if(current.remote_control || overridden && current.rcon_setting) dat += "
[src.return_controls()]" return dat //a bunch of this is copied from atmos alarms /obj/machinery/computer/atmoscontrol/Topic(href, href_list) if(..()) return if(href_list["reset"]) current = null src.updateUsrDialog() if(href_list["alarm"]) current = locate(href_list["alarm"]) if(href_list["command"]) var/device_id = href_list["id_tag"] switch(href_list["command"]) if( "power", "adjust_external_pressure", "checks", "co2_scrub", "tox_scrub", "n2o_scrub", "panic_siphon", "scrubbing" ) current.send_signal(device_id, list (href_list["command"] = text2num(href_list["val"]))) spawn(3) src.updateUsrDialog() //if("adjust_threshold") //was a good idea but required very wide window if("set_threshold") var/env = href_list["env"] var/varname = href_list["var"] var/datum/tlv/tlv = current.TLV[env] var/newval = input("Enter [varname] for env", "Alarm triggers", tlv.vars[varname]) as num|null if (isnull(newval) || ..() || (current.locked && issilicon(usr))) return if (newval<0) tlv.vars[varname] = -1.0 else if (env=="temperature" && newval>5000) tlv.vars[varname] = 5000 else if (env=="pressure" && newval>50*ONE_ATMOSPHERE) tlv.vars[varname] = 50*ONE_ATMOSPHERE else if (env!="temperature" && env!="pressure" && newval>200) tlv.vars[varname] = 200 else newval = round(newval,0.01) tlv.vars[varname] = newval spawn(1) src.updateUsrDialog() return if(href_list["screen"]) current.screen = text2num(href_list["screen"]) spawn(1) src.updateUsrDialog() return if(href_list["atmos_alarm"]) if (current.alarm_area.atmosalert(2)) current.post_alert(2) spawn(1) src.updateUsrDialog() current.update_icon() return if(href_list["atmos_reset"]) if (current.alarm_area.atmosalert(0)) current.post_alert(0) spawn(1) src.updateUsrDialog() current.update_icon() return if(href_list["mode"]) current.mode = text2num(href_list["mode"]) current.apply_mode() spawn(5) src.updateUsrDialog() return src.updateUsrDialog() //copypasta from alarm code, changed to work with this without derping hard //---START COPYPASTA---- #define AALARM_MODE_SCRUBBING 1 #define AALARM_MODE_VENTING 2 //makes draught #define AALARM_MODE_PANIC 3 //constantly sucks all air #define AALARM_MODE_REPLACEMENT 4 //sucks off all air, then refill and swithes to scrubbing #define AALARM_MODE_OFF 5 #define AALARM_SCREEN_MAIN 1 #define AALARM_SCREEN_VENT 2 #define AALARM_SCREEN_SCRUB 3 #define AALARM_SCREEN_MODE 4 #define AALARM_SCREEN_SENSORS 5 /obj/machinery/computer/atmoscontrol/proc/return_controls() var/output = ""//"[alarm_zone] Air [name]
" switch(current.screen) if (AALARM_SCREEN_MAIN) if(current.alarm_area.atmosalm) output += {"Reset - Atmospheric Alarm
"} else output += {"Activate - Atmospheric Alarm
"} output += {" Scrubbers Control
Vents Control
Set envirenomentals mode
Sensor Control

"} if (current.mode==AALARM_MODE_PANIC) output += "PANIC SYPHON ACTIVE
turn syphoning off" else output += "ACTIVATE PANIC SYPHON IN AREA" if (AALARM_SCREEN_VENT) var/sensor_data = "" if(current.alarm_area.air_vent_names.len) for(var/id_tag in current.alarm_area.air_vent_names) var/long_name = current.alarm_area.air_vent_names[id_tag] var/list/data = current.alarm_area.air_vent_info[id_tag] var/state = "" if(!data) state = " can not be found!" data = list("external" = 0) //for "0" instead of empty string else if (data["timestamp"]+AALARM_REPORT_TIMEOUT < world.time) state = " not responding!" sensor_data += {" [long_name][state]
Operating: [data["power"]?"on":"off"]
Pressure checks: external internal
External pressure bound: - - - - [data["external"]] + + + +
"} if (data["direction"] == "siphon") sensor_data += {" Direction: siphoning
"} sensor_data += {"
"} else sensor_data = "No vents connected.
" output = {"Main menu
[sensor_data]"} if (AALARM_SCREEN_SCRUB) var/sensor_data = "" if(current.alarm_area.air_scrub_names.len) for(var/id_tag in current.alarm_area.air_scrub_names) var/long_name = current.alarm_area.air_scrub_names[id_tag] var/list/data = current.alarm_area.air_scrub_info[id_tag] var/state = "" if(!data) state = " can not be found!" data = list("external" = 0) //for "0" instead of empty string else if (data["timestamp"]+AALARM_REPORT_TIMEOUT < world.time) state = " not responding!" sensor_data += {" [long_name][state]
Operating: [data["power"]?"on":"off"]
Type: [data["scrubbing"]?"scrubbing":"syphoning"]
"} if(data["scrubbing"]) sensor_data += {" Filtering: Carbon Dioxide [data["filter_co2"]?"on":"off"]; Toxins [data["filter_toxins"]?"on":"off"]; Nitrous Oxide [data["filter_n2o"]?"on":"off"]
"} sensor_data += {" Panic syphon: [data["panic"]?"PANIC SYPHON ACTIVATED":""] Dea":"red'>A")]ctivate

"} else sensor_data = "No scrubbers connected.
" output = {"Main menu
[sensor_data]"} if (AALARM_SCREEN_MODE) output += {" Main menu
Air machinery mode for the area:" if (AALARM_SCREEN_SENSORS) output += {" Main menu
Alarm thresholds:
Partial pressure for gases "} var/list/gases = list( "oxygen" = "O2", "carbon dioxide" = "CO2", "plasma" = "Toxin", "other" = "Other", ) var/list/thresholds = list("min2", "min1", "max1", "max2") var/datum/tlv/tlv for (var/g in gases) output += {" "} tlv = current.TLV[g] for (var/v in thresholds) output += {" "} output += {" "} tlv = current.TLV["pressure"] output += {" "} for (var/v in thresholds) output += {" "} output += {" "} tlv = current.TLV["temperature"] output += {" "} for (var/v in thresholds) output += {" "} output += {" "} output += {"
min2min1max1max2
[gases[g]] [tlv.vars[v]>=0?tlv.vars[v]:"OFF"]
Pressure [tlv.vars[v]>=0?tlv.vars[v]:"OFF"]
Temperature [tlv.vars[v]>=0?tlv.vars[v]:"OFF"]
"} return output //---END COPYPASTA----