diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm
index e0822e6c706..e71da40ccd1 100644
--- a/code/defines/obj/computer.dm
+++ b/code/defines/obj/computer.dm
@@ -127,8 +127,8 @@
desc = "Used to control blast doors."
icon_state = "lockdown"
circuit = "/obj/item/weapon/circuitboard/lockdown"
- var/connected_doors[0][0]
- var/department //each department has a hardcoded list of possible door networks
+ var/list/connected_doors
+ var/department //each department has a hardcoded list of possible door networks
/obj/machinery/computer/crew
name = "Crew monitoring computer"
diff --git a/code/game/machinery/computer/lockdown.dm b/code/game/machinery/computer/lockdown.dm
index bbc0f4268a8..7c56e843064 100644
--- a/code/game/machinery/computer/lockdown.dm
+++ b/code/game/machinery/computer/lockdown.dm
@@ -7,14 +7,12 @@
desc = "Used to control blast doors."
icon_state = "lockdown"
circuit = "/obj/item/weapon/circuitboard/lockdown"
- var/connectedDoorIds[0][0]
- var/department = ""
- var/connected_doors[0][0]
- var/connected_doors[0][0]
+ var/connected_doors
var/department*/
New()
..()
+ connected_doors = new/list()
//only load blast doors for map-defined departments for the moment
//door networks are hardcoded here.
switch(department)
@@ -47,11 +45,15 @@
connected_doors.Add("Patient Room 2 Shutters")
connected_doors.Add("Patient Room 3 Shutters")
+ for(var/net in connected_doors)
+ connected_doors[net] = new/list()
+ world << "network: [net]"
+
//loop through the world, grabbing all the relevant doors
spawn(1)
for(var/obj/machinery/door/poddoor/D in world)
- if(D.lockdownNetwork in connected_doors)
- var/list/L = connected_doors[D.lockdownNetwork]
+ if(D.id in connected_doors)
+ var/list/L = connected_doors[D.id]
L.Add(D)
attack_ai(mob/user)
@@ -61,19 +63,46 @@
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
- interact(user)
- power_change()
- if(stat & BROKEN)
- icon_state = "broken"
- else
- if( powered() )
- icon_state = initial(icon_state)
- stat &= ~NOPOWER
- else
- spawn(rand(0, 15))
- src.icon_state = "c_unpowered"
- stat |= NOPOWER
+ if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
+ if (!istype(user, /mob/living/silicon))
+ user.machine = null
+ user << browse(null, "window=lockdown")
+ return
+
+ var/t = "Lockdown Control
"
+ t += "Close
"
+ t += ""
+ var/empty = 1
+ for(var/curNetId in connected_doors)
+ var/list/L = connected_doors[curNetId]
+ if(!L || L.len == 0)
+ continue
+ empty = 0
+ t += ""
+ t += "| " + curNetId + " | "
+ t += "Disable lockdown / Enable lockdown | "
+ t += "
"
+
+ for(var/obj/machinery/door/poddoor/D in connected_doors[curNetId])
+ t += ""
+ if(istype(D,/obj/machinery/door/poddoor/shutters))
+ t += "| Shutter | "
+ else
+ t += " Blast door | "
+ if(D.density)
+ //t += "Open - Close | "
+ t += "Closed"
+ else
+ //t += "Open - Close | "
+ t += "Open"
+ t += "
"
+ t += "
"
+ if(empty)
+ t += "\red No networks connected.
"
+ t += "Close
"
+ user << browse(t, "window=lockdown;size=500x800")
+ onclose(user, "lockdown")
Topic(href, href_list)
..()
@@ -82,87 +111,40 @@
usr.machine = null
return
- if( href_list["openDoor"] )
- var/obj/machinery/door/poddoor/D = href_list["door"]
- if(D.density)
- D.open()
+ if( href_list["open_net"] )
+ var/netTag = href_list["open_net"]
+ for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
+ if(D.density) //for some reason, there's no var saying whether the door is open or not >.>
+ spawn(0)
+ D.open()
src.updateDialog()
return
- if( href_list["closeDoor"] )
- var/obj/machinery/door/poddoor/D = href_list["door"]
- if(!D.density)
- D.close()
+ if( href_list["close_net"] )
+ var/netTag = href_list["close_net"]
+ for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
+ if(!D.density)
+ spawn(0)
+ D.close()
src.updateDialog()
return
if( href_list["close_all"] )
- if(href_list["networkTag"] == "all")
- for(var/netTag in connected_doors)
- for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
- if(D.doorTag == href_list["doorTag"])
- if(!D.density)
- spawn(0)
- D.close()
- else if(href_list["networkTag"] in connected_doors)
- for(var/obj/machinery/door/poddoor/D in connected_doors[href_list["networkTag"]])
- if(D.doorTag == href_list["doorTag"])
- if(!D.density)
- spawn(0)
- D.close()
+ for(var/netTag in connected_doors)
+ for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
+ if(!D.density)
+ spawn(0)
+ D.close()
src.updateDialog()
return
if( href_list["open_all"] )
- if(href_list["networkTag"] == "all")
- for(var/netTag in connected_doors)
- for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
- if(D.doorTag == href_list["doorTag"])
- if(D.density)
- spawn(0)
- D.open()
- else if(href_list["networkTag"] in connected_doors)
- for(var/obj/machinery/door/poddoor/D in connected_doors[href_list["networkTag"]])
- if(D.doorTag == href_list["doorTag"])
- if(D.density)
- spawn(0)
- D.open()
+ for(var/netTag in connected_doors)
+ for(var/obj/machinery/door/poddoor/D in connected_doors[netTag])
+ if(D.density)
+ spawn(0)
+ D.open()
src.updateDialog()
return
- if(href_list["update"])
- src.updateDialog()
- return
-
- proc
- interact(mob/user)
- if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
- if (!istype(user, /mob/living/silicon))
- user.machine = null
- user << browse(null, "window=lockdown")
- return
- var/t = "Lockdown Control
"
- t += "Close
"
- t += ""
- for(var/curNetId in connected_doors)
- var/list/L = connected_doors[curNetId]
- if(L.len == 0)
- continue
- t += ""
- t += "| " + curNetId + " | "
- t += "Open All / Close All | "
- t += "
"
-
- for(var/obj/machinery/door/poddoor/D in connected_doors[curNetId])
- if(D.id == curNetId )
- t += ""
- t += "| [D.networkTag] | "
- if(D.density)
- t += "Open - Close | "
- else
- t += "Open - Close | "
- t += "
"
- t += "
"
- t += "Close
"
- user << browse(t, "window=lockdown;size=500x800")
- onclose(user, "lockdown")
+ src.updateDialog()
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index e94f77cbeeb..dfdfe818d6c 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -3,10 +3,7 @@
desc = "A type of powerful blast door."
icon = 'rapid_pdoor.dmi'
icon_state = "pdoor1"
- var/lockdownNetwork
- var/doorTag
- var/id = 1.0
- var/networkTag = ""
+ var/id = ""
/obj/machinery/door/poddoor/Bumped(atom/AM)
if(!density)
diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm
index 10e2f2ad9a4..74ba7a557dd 100644
--- a/code/modules/power/turbine.dm
+++ b/code/modules/power/turbine.dm
@@ -209,7 +209,7 @@
if(src.vent_network == C.comp_id)
compressors.Add(C)
for(var/obj/machinery/door/poddoor/D in world)
- if(src.vent_network == D.networkTag)
+ if(src.vent_network == D.id)
doors.Add(D)
process()