- 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:
panurgomatic
2010-11-14 12:00:17 +00:00
parent 67163de36c
commit 1aeec3bfb3
3 changed files with 89 additions and 75 deletions

View File

@@ -21,14 +21,14 @@
var/panic = 0 //is this scrubber panicked?
update_icon()
if(on)//&&node)//seems to be broken
if(on&&node)
if(scrubbing)
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]on"
else
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]in"
else
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]off"
//on = 0
on = 0
return
@@ -155,7 +155,7 @@
volume_rate = 2000
else
scrubbing = 1
volume_rate = 120
volume_rate = initial(volume_rate)
if(signal.data["tag"])
spawn(2)
broadcast_status()

View File

@@ -1,26 +1,36 @@
datum/controller/game_controller
proc/find_air_alarms()
var/list/processed_areas = list()
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/uniq_id = md5(M.name)//hash works like a charm
var/list/alarms = list()
var/list/scrubbers = list()
var/list/vents = list()
var/list/processed_areas = list()
var/i = 0 //used in id_tag and name generation
if(M.related && M.related.len)//if has relatives
for(var/area/Rel in M.related)//check all relatives
if(Rel == M) continue //same parent area.
processed_areas += Rel
if(Rel.contents && Rel.contents.len)
for(var/obj/O in Rel.contents)
for(var/obj/machinery/O in Rel.contents)
switch(O.type)
if(/obj/machinery/alarm)
alarms += O
if(/obj/machinery/atmospherics/unary/vent_scrubber)
if(O:id_tag) continue
scrubbers += O
if(/obj/machinery/atmospherics/unary/vent_pump)
if(O:id) continue
vents += O
else continue
/*
@@ -34,12 +44,12 @@ datum/controller/game_controller
vents += P
*/
if(!alarms.len || (!scrubbers.len && !vents.len)) continue
if(!alarms.len || (!scrubbers.len && !vents.len)) return
i = 0
if(scrubbers.len) //if scrubbers found in area
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/obj/machinery/alarm/target_alarm = null
for(var/obj/machinery/alarm/Al in alarms)//iterate over found alarms
@@ -60,7 +70,7 @@ datum/controller/game_controller
i = 0
if(vents.len) //if vents found in area
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/obj/machinery/alarm/target_alarm = null
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]"
//debug
return
return processed_areas

View File

@@ -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 += "<HR><A href='?src=\ref[src];reinit_atmos_machinery=1'>Reinitialize atmospheric machinery in area</A>"
else
var/sensor_data
if(src.device == "Scrubbers")
@@ -160,6 +161,9 @@
for(var/P in vents)
send_signal(P, "power_off")
panic = !panic
if(href_list["reinit_atmos_machinery"])
var/A = get_area(loc)
connect_area_atmos_machinery(A)
spawn(5)