mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
@@ -156,12 +156,14 @@
|
|||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
if(href_list["atmos_unlock"])
|
//commenting this out because it causes compile errors
|
||||||
switch(href_list["atmos_unlock"])
|
//I tried fixing it but wasn't sucessful.
|
||||||
if("0")
|
//if(href_list["atmos_unlock"])
|
||||||
current.air_doors_close(1)
|
// switch(href_list["atmos_unlock"])
|
||||||
if("1")
|
// if("0")
|
||||||
current.air_doors_open(1)
|
// current.alarm_area.air_doors_close()
|
||||||
|
// if("1")
|
||||||
|
// current.alarm_area.air_doors_open()
|
||||||
|
|
||||||
if(href_list["atmos_alarm"])
|
if(href_list["atmos_alarm"])
|
||||||
if (current.alarm_area.atmosalert(2))
|
if (current.alarm_area.atmosalert(2))
|
||||||
|
|||||||
@@ -71,10 +71,28 @@
|
|||||||
/area/proc/atmosalert(danger_level)
|
/area/proc/atmosalert(danger_level)
|
||||||
// if(type==/area) //No atmos alarms in space
|
// if(type==/area) //No atmos alarms in space
|
||||||
// return 0 //redudant
|
// return 0 //redudant
|
||||||
|
|
||||||
|
//Check all the alarms before lowering atmosalm. Raising is perfectly fine.
|
||||||
|
for (var/area/RA in related)
|
||||||
|
for (var/obj/machinery/alarm/AA in RA)
|
||||||
|
if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted)
|
||||||
|
danger_level = max(danger_level, AA.danger_level)
|
||||||
|
|
||||||
if(danger_level != atmosalm)
|
if(danger_level != atmosalm)
|
||||||
//updateicon()
|
if (danger_level < 1 && atmosalm >= 1)
|
||||||
//mouse_opacity = 0
|
//closing the doors on red and opening on green provides a bit of hysteresis that will hopefully prevent fire doors from opening and closing repeatedly due to noise
|
||||||
if (danger_level==2)
|
air_doors_open()
|
||||||
|
|
||||||
|
if (danger_level < 2 && atmosalm >= 2)
|
||||||
|
for(var/area/RA in related)
|
||||||
|
for(var/obj/machinery/camera/C in RA)
|
||||||
|
C.network.Remove("Atmosphere Alarms")
|
||||||
|
for(var/mob/living/silicon/aiPlayer in player_list)
|
||||||
|
aiPlayer.cancelAlarm("Atmosphere", src, src)
|
||||||
|
for(var/obj/machinery/computer/station_alert/a in machines)
|
||||||
|
a.cancelAlarm("Atmosphere", src, src)
|
||||||
|
|
||||||
|
if (danger_level >= 2 && atmosalm < 2)
|
||||||
var/list/cameras = list()
|
var/list/cameras = list()
|
||||||
for(var/area/RA in related)
|
for(var/area/RA in related)
|
||||||
//updateicon()
|
//updateicon()
|
||||||
@@ -85,18 +103,35 @@
|
|||||||
aiPlayer.triggerAlarm("Atmosphere", src, cameras, src)
|
aiPlayer.triggerAlarm("Atmosphere", src, cameras, src)
|
||||||
for(var/obj/machinery/computer/station_alert/a in machines)
|
for(var/obj/machinery/computer/station_alert/a in machines)
|
||||||
a.triggerAlarm("Atmosphere", src, cameras, src)
|
a.triggerAlarm("Atmosphere", src, cameras, src)
|
||||||
else if (atmosalm == 2)
|
air_doors_close()
|
||||||
for(var/area/RA in related)
|
|
||||||
for(var/obj/machinery/camera/C in RA)
|
|
||||||
C.network.Remove("Atmosphere Alarms")
|
|
||||||
for(var/mob/living/silicon/aiPlayer in player_list)
|
|
||||||
aiPlayer.cancelAlarm("Atmosphere", src, src)
|
|
||||||
for(var/obj/machinery/computer/station_alert/a in machines)
|
|
||||||
a.cancelAlarm("Atmosphere", src, src)
|
|
||||||
atmosalm = danger_level
|
atmosalm = danger_level
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
/area/proc/air_doors_close()
|
||||||
|
if(!src.master.air_doors_activated)
|
||||||
|
src.master.air_doors_activated = 1
|
||||||
|
for(var/obj/machinery/door/firedoor/E in src.master.all_doors)
|
||||||
|
if(!E:blocked)
|
||||||
|
if(E.operating)
|
||||||
|
E:nextstate = CLOSED
|
||||||
|
else if(!E.density)
|
||||||
|
spawn(0)
|
||||||
|
E.close()
|
||||||
|
|
||||||
|
/area/proc/air_doors_open()
|
||||||
|
if(src.master.air_doors_activated)
|
||||||
|
src.master.air_doors_activated = 0
|
||||||
|
for(var/obj/machinery/door/firedoor/E in src.master.all_doors)
|
||||||
|
if(!E:blocked)
|
||||||
|
if(E.operating)
|
||||||
|
E:nextstate = OPEN
|
||||||
|
else if(E.density)
|
||||||
|
spawn(0)
|
||||||
|
E.open()
|
||||||
|
|
||||||
|
|
||||||
/area/proc/firealert()
|
/area/proc/firealert()
|
||||||
if(name == "Space") //no fire alarms in space
|
if(name == "Space") //no fire alarms in space
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -214,8 +214,7 @@
|
|||||||
danger_level = overall_danger_level()
|
danger_level = overall_danger_level()
|
||||||
|
|
||||||
if (old_level != danger_level)
|
if (old_level != danger_level)
|
||||||
refresh_danger_level()
|
apply_danger_level(danger_level)
|
||||||
update_icon()
|
|
||||||
|
|
||||||
if (old_pressurelevel != pressure_dangerlevel)
|
if (old_pressurelevel != pressure_dangerlevel)
|
||||||
if (breach_detected())
|
if (breach_detected())
|
||||||
@@ -314,7 +313,12 @@
|
|||||||
if((stat & (NOPOWER|BROKEN)) || shorted)
|
if((stat & (NOPOWER|BROKEN)) || shorted)
|
||||||
icon_state = "alarmp"
|
icon_state = "alarmp"
|
||||||
return
|
return
|
||||||
switch(max(danger_level, alarm_area.atmosalm))
|
|
||||||
|
var/icon_level = danger_level
|
||||||
|
if (alarm_area.atmosalm)
|
||||||
|
icon_level = max(icon_level, 1) //if there's an atmos alarm but everything is okay locally, no need to go past yellow
|
||||||
|
|
||||||
|
switch(icon_level)
|
||||||
if (0)
|
if (0)
|
||||||
icon_state = "alarm0"
|
icon_state = "alarm0"
|
||||||
if (1)
|
if (1)
|
||||||
@@ -434,16 +438,6 @@
|
|||||||
if (alarm_area.atmosalert(new_danger_level))
|
if (alarm_area.atmosalert(new_danger_level))
|
||||||
post_alert(new_danger_level)
|
post_alert(new_danger_level)
|
||||||
|
|
||||||
for (var/area/A in alarm_area.related)
|
|
||||||
for (var/obj/machinery/alarm/AA in A)
|
|
||||||
if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.danger_level != new_danger_level)
|
|
||||||
AA.update_icon()
|
|
||||||
|
|
||||||
if(danger_level > 1)
|
|
||||||
air_doors_close(0)
|
|
||||||
else
|
|
||||||
air_doors_open(0)
|
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/alarm/proc/post_alert(alert_level)
|
/obj/machinery/alarm/proc/post_alert(alert_level)
|
||||||
@@ -466,71 +460,6 @@
|
|||||||
|
|
||||||
frequency.post_signal(src, alert_signal)
|
frequency.post_signal(src, alert_signal)
|
||||||
|
|
||||||
/obj/machinery/alarm/proc/refresh_danger_level()
|
|
||||||
var/level = 0
|
|
||||||
for (var/area/A in alarm_area.related)
|
|
||||||
for (var/obj/machinery/alarm/AA in A)
|
|
||||||
if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted)
|
|
||||||
if (AA.danger_level > level)
|
|
||||||
level = AA.danger_level
|
|
||||||
apply_danger_level(level)
|
|
||||||
|
|
||||||
/obj/machinery/alarm/proc/air_doors_close(manual)
|
|
||||||
var/area/A = get_area(src)
|
|
||||||
if(!A.master.air_doors_activated)
|
|
||||||
A.master.air_doors_activated = 1
|
|
||||||
for(var/obj/machinery/door/E in A.master.all_doors)
|
|
||||||
if(istype(E,/obj/machinery/door/firedoor))
|
|
||||||
if(!E:blocked)
|
|
||||||
if(E.operating)
|
|
||||||
E:nextstate = CLOSED
|
|
||||||
else if(!E.density)
|
|
||||||
spawn(0)
|
|
||||||
E.close()
|
|
||||||
continue
|
|
||||||
|
|
||||||
/* if(istype(E, /obj/machinery/door/airlock))
|
|
||||||
if((!E:arePowerSystemsOn()) || (E.stat & NOPOWER) || E:air_locked) continue
|
|
||||||
if(!E.density)
|
|
||||||
spawn(0)
|
|
||||||
E.close()
|
|
||||||
spawn(10)
|
|
||||||
if(E.density)
|
|
||||||
E:air_locked = E.req_access
|
|
||||||
E:req_access = list(ACCESS_ENGINE, ACCESS_ATMOSPHERICS)
|
|
||||||
E.update_icon()
|
|
||||||
else if(E.operating)
|
|
||||||
spawn(10)
|
|
||||||
E.close()
|
|
||||||
if(E.density)
|
|
||||||
E:air_locked = E.req_access
|
|
||||||
E:req_access = list(ACCESS_ENGINE, ACCESS_ATMOSPHERICS)
|
|
||||||
E.update_icon()
|
|
||||||
else if(!E:locked) //Don't lock already bolted doors.
|
|
||||||
E:air_locked = E.req_access
|
|
||||||
E:req_access = list(ACCESS_ENGINE, ACCESS_ATMOSPHERICS)
|
|
||||||
E.update_icon()*/
|
|
||||||
|
|
||||||
/obj/machinery/alarm/proc/air_doors_open(manual)
|
|
||||||
var/area/A = get_area(loc)
|
|
||||||
if(A.master.air_doors_activated)
|
|
||||||
A.master.air_doors_activated = 0
|
|
||||||
for(var/obj/machinery/door/E in A.master.all_doors)
|
|
||||||
if(istype(E, /obj/machinery/door/firedoor))
|
|
||||||
if(!E:blocked)
|
|
||||||
if(E.operating)
|
|
||||||
E:nextstate = OPEN
|
|
||||||
else if(E.density)
|
|
||||||
spawn(0)
|
|
||||||
E.open()
|
|
||||||
continue
|
|
||||||
|
|
||||||
/* if(istype(E, /obj/machinery/door/airlock))
|
|
||||||
if((!E:arePowerSystemsOn()) || (E.stat & NOPOWER)) continue
|
|
||||||
if(!isnull(E:air_locked)) //Don't mess with doors locked for other reasons.
|
|
||||||
E:req_access = E:air_locked
|
|
||||||
E:air_locked = null
|
|
||||||
E.update_icon()*/
|
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
//HACKING//
|
//HACKING//
|
||||||
@@ -785,19 +714,24 @@ Toxins: <span class='dl[phoron_dangerlevel]'>[phoron_percent]</span>%<br>
|
|||||||
|
|
||||||
output += "Temperature: <span class='dl[temperature_dangerlevel]'>[environment.temperature]</span>K ([round(environment.temperature - T0C, 0.1)]C)<br>"
|
output += "Temperature: <span class='dl[temperature_dangerlevel]'>[environment.temperature]</span>K ([round(environment.temperature - T0C, 0.1)]C)<br>"
|
||||||
|
|
||||||
//Overall status
|
//'Local Status' should report the LOCAL status, damnit.
|
||||||
output += "Local Status: "
|
output += "Local Status: "
|
||||||
switch(max(pressure_dangerlevel,oxygen_dangerlevel,co2_dangerlevel,phoron_dangerlevel,other_dangerlevel,temperature_dangerlevel))
|
switch(max(pressure_dangerlevel,oxygen_dangerlevel,co2_dangerlevel,phoron_dangerlevel,other_dangerlevel,temperature_dangerlevel))
|
||||||
if(2)
|
if(2)
|
||||||
output += "<span class='dl2'>DANGER: Internals Required</span>"
|
output += "<span class='dl2'>DANGER: Internals Required</span><br>"
|
||||||
if(1)
|
if(1)
|
||||||
output += "<span class='dl1'>Caution</span>"
|
output += "<span class='dl1'>Caution</span><br>"
|
||||||
if(0)
|
if(0)
|
||||||
if(alarm_area.atmosalm)
|
output += "<span class='dl0'>Optimal</span><br>"
|
||||||
output += {"<span class='dl1'>Caution: Atmos alert in area</span>"}
|
|
||||||
else
|
|
||||||
output += {"<span class='dl0'>Optimal</span>"}
|
|
||||||
|
|
||||||
|
output += "Area Status: "
|
||||||
|
if(alarm_area.atmosalm)
|
||||||
|
output += "<span class='dl1'>Atmos alert in area</span>"
|
||||||
|
else if (alarm_area.fire)
|
||||||
|
output += "<span class='dl1'>Fire alarm in area</span>"
|
||||||
|
else
|
||||||
|
output += "No alerts"
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
|
||||||
/obj/machinery/alarm/proc/rcon_text()
|
/obj/machinery/alarm/proc/rcon_text()
|
||||||
@@ -828,9 +762,9 @@ Toxins: <span class='dl[phoron_dangerlevel]'>[phoron_percent]</span>%<br>
|
|||||||
switch(screen)
|
switch(screen)
|
||||||
if (AALARM_SCREEN_MAIN)
|
if (AALARM_SCREEN_MAIN)
|
||||||
if(alarm_area.atmosalm)
|
if(alarm_area.atmosalm)
|
||||||
output += "<a href='?src=\ref[src];atmos_reset=1'>Reset - Atmospheric Alarm</a><hr>"
|
output += "<a href='?src=\ref[src];atmos_reset=1'>Reset - Area Atmospheric Alarm</a><hr>"
|
||||||
else
|
else
|
||||||
output += "<a href='?src=\ref[src];atmos_alarm=1'>Activate - Atmospheric Alarm</a><hr>"
|
output += "<a href='?src=\ref[src];atmos_alarm=1'>Activate - Area Atmospheric Alarm</a><hr>"
|
||||||
|
|
||||||
output += {"
|
output += {"
|
||||||
<a href='?src=\ref[src];screen=[AALARM_SCREEN_SCRUB]'>Scrubbers Control</a><br>
|
<a href='?src=\ref[src];screen=[AALARM_SCREEN_SCRUB]'>Scrubbers Control</a><br>
|
||||||
@@ -1093,9 +1027,9 @@ table tr:first-child th:first-child { border: none;}
|
|||||||
if(href_list["atmos_unlock"])
|
if(href_list["atmos_unlock"])
|
||||||
switch(href_list["atmos_unlock"])
|
switch(href_list["atmos_unlock"])
|
||||||
if("0")
|
if("0")
|
||||||
air_doors_close(1)
|
alarm_area.air_doors_close()
|
||||||
if("1")
|
if("1")
|
||||||
air_doors_open(1)
|
alarm_area.air_doors_open()
|
||||||
|
|
||||||
if(href_list["atmos_alarm"])
|
if(href_list["atmos_alarm"])
|
||||||
if (alarm_area.atmosalert(2))
|
if (alarm_area.atmosalert(2))
|
||||||
|
|||||||
Reference in New Issue
Block a user