diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm
index 878f39b0394..d484fd144fd 100644
--- a/code/game/machinery/telecomms/traffic_control.dm
+++ b/code/game/machinery/telecomms/traffic_control.dm
@@ -2,6 +2,7 @@
name = "telecommunications traffic control"
var/screen = 0 // the screen number:
+ var/allservers = 0 // Are all servers being edited at the same time?
var/list/servers = list() // the servers located by the computer
var/mob/editingcode
var/mob/lasteditor
@@ -43,6 +44,7 @@
dat += "
Detected Telecommunication Servers:
"
dat += "
\[Flush Buffer\]"
@@ -54,13 +56,19 @@
dat += "
[temp]
"
dat += "\[Main Menu\] \[Refresh\]"
dat += "
Current Network: [network]"
- dat += "
Selected Server: [SelectedServer.id]
"
+ if(allservers)
+ dat += "
Selected Server: All Servers
"
+ else
+ dat += "
Selected Server: [SelectedServer.id]
"
dat += "
\[Edit Code\]"
dat += "
Signal Execution: "
- if(SelectedServer.autoruncode)
- dat += "ALWAYS"
+ if(allservers)
+ dat += "ALWAYS NEVER"
else
- dat += "NEVER"
+ if(SelectedServer.autoruncode)
+ dat += "ALWAYS"
+ else
+ dat += "NEVER"
if(screen == 2) //code editor
if(editingcode == user)
@@ -213,6 +221,26 @@
compiling_errors += "(0 errors)"
updateUsrDialog()
+ if(allservers)
+ spawn(0)
+ compiling_errors = "Please wait, compiling..."
+ updateUsrDialog()
+
+ for(var/obj/machinery/telecomms/server/Server in servers)
+ Server.setcode(code)
+ var/list/compileerrors = Server.compile(user)
+ if(!telecomms_check(user))
+ return
+ if(compileerrors.len)
+ compiling_errors = "Compile Errors
"
+ for(var/datum/scriptError/e in compileerrors)
+ compiling_errors += "\t>[e.message]"
+ compiling_errors += "([compileerrors.len] errors)"
+ updateUsrDialog()
+ return // If there are errors, don't waste time compiling on other servers
+ compiling_errors = "TCS compilation successful!
"
+ compiling_errors += "(0 errors)"
+ updateUsrDialog()
if("Clear")
if(!telecomms_check(user) || user != editingcode)
@@ -225,13 +253,24 @@
compiling_errors = "Server Memory Cleared!"
storedcode = null
updateUsrDialog()
+ if(allservers)
+ for(var/obj/machinery/telecomms/server/Server in servers)
+ Server.memory = list() // clear the memory
+
+ compiling_errors = "Server Memory Cleared!"
+ storedcode = null
+ updateUsrDialog()
if(href_list["viewserver"])
screen = 1
- for(var/obj/machinery/telecomms/T in servers)
- if(T.id == href_list["viewserver"])
- SelectedServer = T
- break
+ if(href_list["viewserver"] == "all")
+ allservers = 1
+ else
+ allservers = 0
+ for(var/obj/machinery/telecomms/T in servers)
+ if(T.id == href_list["viewserver"])
+ SelectedServer = T
+ break
if(href_list["operation"])
switch(href_list["operation"])
@@ -244,7 +283,7 @@
screen = 0
if("codeback")
- if(SelectedServer)
+ if(allservers || SelectedServer)
screen = 1
if("scan")
@@ -268,6 +307,12 @@
if("togglerun")
SelectedServer.autoruncode = !(SelectedServer.autoruncode)
+ if("runon")
+ for(var/obj/machinery/telecomms/server/Server in servers)
+ Server.autoruncode = 1
+ if("runoff")
+ for(var/obj/machinery/telecomms/server/Server in servers)
+ Server.autoruncode = 0
if(href_list["network"])