mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
- Constructed vents and scrubbers can be initialized through air alarm interface.
- Minor tweaks. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@417 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -21,14 +21,14 @@
|
|||||||
var/panic = 0 //is this scrubber panicked?
|
var/panic = 0 //is this scrubber panicked?
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
if(on)//&&node)//seems to be broken
|
if(on&&node)
|
||||||
if(scrubbing)
|
if(scrubbing)
|
||||||
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]on"
|
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]on"
|
||||||
else
|
else
|
||||||
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]in"
|
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]in"
|
||||||
else
|
else
|
||||||
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]off"
|
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]off"
|
||||||
//on = 0
|
on = 0
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@
|
|||||||
volume_rate = 2000
|
volume_rate = 2000
|
||||||
else
|
else
|
||||||
scrubbing = 1
|
scrubbing = 1
|
||||||
volume_rate = 120
|
volume_rate = initial(volume_rate)
|
||||||
if(signal.data["tag"])
|
if(signal.data["tag"])
|
||||||
spawn(2)
|
spawn(2)
|
||||||
broadcast_status()
|
broadcast_status()
|
||||||
|
|||||||
@@ -1,26 +1,36 @@
|
|||||||
datum/controller/game_controller
|
datum/controller/game_controller
|
||||||
proc/find_air_alarms()
|
proc/find_air_alarms()
|
||||||
|
var/list/processed_areas = list()
|
||||||
for(var/area/A in world)
|
for(var/area/A in world)
|
||||||
|
if(A in processed_areas) continue
|
||||||
|
processed_areas += connect_area_atmos_machinery(A)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/proc/connect_area_atmos_machinery(var/area/A)
|
||||||
var/area/M = A.master //we want to search master area, not only L(number) one
|
var/area/M = A.master //we want to search master area, not only L(number) one
|
||||||
|
|
||||||
var/uniq_id = md5(M.name)//hash works like a charm
|
var/uniq_id = md5(M.name)//hash works like a charm
|
||||||
var/list/alarms = list()
|
var/list/alarms = list()
|
||||||
var/list/scrubbers = list()
|
var/list/scrubbers = list()
|
||||||
var/list/vents = list()
|
var/list/vents = list()
|
||||||
|
var/list/processed_areas = list()
|
||||||
var/i = 0 //used in id_tag and name generation
|
var/i = 0 //used in id_tag and name generation
|
||||||
|
|
||||||
if(M.related && M.related.len)//if has relatives
|
if(M.related && M.related.len)//if has relatives
|
||||||
for(var/area/Rel in M.related)//check all relatives
|
for(var/area/Rel in M.related)//check all relatives
|
||||||
if(Rel == M) continue //same parent area.
|
if(Rel == M) continue //same parent area.
|
||||||
|
processed_areas += Rel
|
||||||
if(Rel.contents && Rel.contents.len)
|
if(Rel.contents && Rel.contents.len)
|
||||||
for(var/obj/O in Rel.contents)
|
for(var/obj/machinery/O in Rel.contents)
|
||||||
switch(O.type)
|
switch(O.type)
|
||||||
if(/obj/machinery/alarm)
|
if(/obj/machinery/alarm)
|
||||||
alarms += O
|
alarms += O
|
||||||
if(/obj/machinery/atmospherics/unary/vent_scrubber)
|
if(/obj/machinery/atmospherics/unary/vent_scrubber)
|
||||||
|
if(O:id_tag) continue
|
||||||
scrubbers += O
|
scrubbers += O
|
||||||
if(/obj/machinery/atmospherics/unary/vent_pump)
|
if(/obj/machinery/atmospherics/unary/vent_pump)
|
||||||
|
if(O:id) continue
|
||||||
vents += O
|
vents += O
|
||||||
else continue
|
else continue
|
||||||
/*
|
/*
|
||||||
@@ -34,12 +44,12 @@ datum/controller/game_controller
|
|||||||
vents += P
|
vents += P
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if(!alarms.len || (!scrubbers.len && !vents.len)) continue
|
if(!alarms.len || (!scrubbers.len && !vents.len)) return
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
if(scrubbers.len) //if scrubbers found in area
|
if(scrubbers.len) //if scrubbers found in area
|
||||||
for(var/obj/machinery/atmospherics/unary/vent_scrubber/Sc in scrubbers)//iterate over found scrubbers
|
for(var/obj/machinery/atmospherics/unary/vent_scrubber/Sc in scrubbers)//iterate over found scrubbers
|
||||||
if(Sc.id_tag) continue
|
// if(Sc.id_tag) continue
|
||||||
var/dist = 127 //max value returned by get_dist
|
var/dist = 127 //max value returned by get_dist
|
||||||
var/obj/machinery/alarm/target_alarm = null
|
var/obj/machinery/alarm/target_alarm = null
|
||||||
for(var/obj/machinery/alarm/Al in alarms)//iterate over found alarms
|
for(var/obj/machinery/alarm/Al in alarms)//iterate over found alarms
|
||||||
@@ -60,7 +70,7 @@ datum/controller/game_controller
|
|||||||
i = 0
|
i = 0
|
||||||
if(vents.len) //if vents found in area
|
if(vents.len) //if vents found in area
|
||||||
for(var/obj/machinery/atmospherics/unary/vent_pump/P in vents)//iterate over found vents
|
for(var/obj/machinery/atmospherics/unary/vent_pump/P in vents)//iterate over found vents
|
||||||
if(P.id) continue
|
// if(P.id) continue
|
||||||
var/dist = 127 //max value returned by get_dist
|
var/dist = 127 //max value returned by get_dist
|
||||||
var/obj/machinery/alarm/target_alarm = null
|
var/obj/machinery/alarm/target_alarm = null
|
||||||
for(var/obj/machinery/alarm/Al in alarms)//iterate over found alarms
|
for(var/obj/machinery/alarm/Al in alarms)//iterate over found alarms
|
||||||
@@ -79,4 +89,4 @@ datum/controller/game_controller
|
|||||||
//world << "[Sc.name] in [M.name] is set to frequency [Sc.frequency] with ID [Sc.id_tag]"
|
//world << "[Sc.name] in [M.name] is set to frequency [Sc.frequency] with ID [Sc.id_tag]"
|
||||||
//debug
|
//debug
|
||||||
|
|
||||||
return
|
return processed_areas
|
||||||
@@ -71,6 +71,7 @@
|
|||||||
"}
|
"}
|
||||||
|
|
||||||
output += "<A href='?src=\ref[src];toggle_panic_siphon_global=1'><font color='red'><B>TOGGLE PANIC SYPHON IN AREA</B></font></A>"
|
output += "<A href='?src=\ref[src];toggle_panic_siphon_global=1'><font color='red'><B>TOGGLE PANIC SYPHON IN AREA</B></font></A>"
|
||||||
|
output += "<HR><A href='?src=\ref[src];reinit_atmos_machinery=1'>Reinitialize atmospheric machinery in area</A>"
|
||||||
else
|
else
|
||||||
var/sensor_data
|
var/sensor_data
|
||||||
if(src.device == "Scrubbers")
|
if(src.device == "Scrubbers")
|
||||||
@@ -160,6 +161,9 @@
|
|||||||
for(var/P in vents)
|
for(var/P in vents)
|
||||||
send_signal(P, "power_off")
|
send_signal(P, "power_off")
|
||||||
panic = !panic
|
panic = !panic
|
||||||
|
if(href_list["reinit_atmos_machinery"])
|
||||||
|
var/A = get_area(loc)
|
||||||
|
connect_area_atmos_machinery(A)
|
||||||
|
|
||||||
|
|
||||||
spawn(5)
|
spawn(5)
|
||||||
|
|||||||
Reference in New Issue
Block a user