From aa67c605dc39925be6c260b85d76590e9d057bbd Mon Sep 17 00:00:00 2001 From: caelaislinn Date: Mon, 21 May 2012 02:11:47 +1000 Subject: [PATCH] fixed lockdown computer. Signed-off-by: caelaislinn --- code/defines/obj/computer.dm | 4 +- code/game/machinery/computer/lockdown.dm | 158 ++++++++++------------- code/game/machinery/doors/poddoor.dm | 5 +- code/modules/power/turbine.dm | 2 +- 4 files changed, 74 insertions(+), 95 deletions(-) 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 += "" + t += "" + t += "" + + for(var/obj/machinery/door/poddoor/D in connected_doors[curNetId]) + t += "" + if(istype(D,/obj/machinery/door/poddoor/shutters)) + t += "" + else + t += "" + if(D.density) + //t += "" + t += "Closed" + else + //t += "" + t += "Open" + t += "" + t += "
" + curNetId + "Disable lockdown / Enable lockdown
Shutter Blast doorOpen - CloseOpen - Close
" + 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 += "" - t += "" - t += "" - - for(var/obj/machinery/door/poddoor/D in connected_doors[curNetId]) - if(D.id == curNetId ) - t += "" - t += "" - if(D.density) - t += "" - else - t += "" - t += "" - t += "
" + curNetId + "Open All / Close All
[D.networkTag]Open - CloseOpen - Close
" - 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()