diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm
index 439e3ca76bf..63015a07c48 100644
--- a/code/controllers/shuttle_controller.dm
+++ b/code/controllers/shuttle_controller.dm
@@ -271,7 +271,7 @@ var/global/datum/shuttle_controller/shuttle_controller
dock_controller_map -= C.id_tag
//escape pods
- if(istype(C, /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod))
+ if(istype(C, /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod) && istype(shuttle, /datum/shuttle/ferry/escape_pod))
var/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/EPC = C
EPC.pod = shuttle
diff --git a/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm b/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm
index 5571ef2fc58..f84fbf0b323 100644
--- a/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm
+++ b/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm
@@ -1,6 +1,6 @@
//This controller goes on the escape pod itself
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod
- var/datum/shuttle/ferry/pod
+ var/datum/shuttle/ferry/escape_pod/pod
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
var/data[0]
@@ -11,36 +11,28 @@
"door_state" = docking_program.memory["door_status"]["state"],
"door_lock" = docking_program.memory["door_status"]["lock"],
"can_force" = pod.can_force(),
+ "is_armed" = pod.arming_controller.armed,
)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui)
- ui = new(user, src, ui_key, "simple_docking_console_pod.tmpl", name, 470, 290)
+ ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/Topic(href, href_list)
- if(..())
- return
+ if(..()) //I hate this "return 1 to indicate they are not allowed to use the controller" crap, but not sure how else to do it without being able to call machinery/Topic() directly.
+ return 1
- usr.set_machine(src)
- src.add_fingerprint(usr)
-
- var/clean = 0
- switch(href_list["command"]) //anti-HTML-hacking checks
- if("force_door")
- clean = 1
- if("toggle_override")
- clean = 1
- if("force_launch")
- pod.force_launch(src)
-
- if(clean)
- program.receive_user_command(href_list["command"])
+ if("manual_arm")
+ pod.arming_controller.arm()
+ if("force_launch")
+ pod.force_launch(src)
+
+ return 0
- return 1
//This controller is for the escape pod berth (station side)
@@ -69,7 +61,7 @@
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui)
- ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290)
+ ui = new(user, src, ui_key, "escape_pod_berth_console.tmpl", name, 470, 290)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
@@ -78,11 +70,13 @@
if (istype(W, /obj/item/weapon/card/emag) && !emagged)
user << "\blue You emag the [src], arming the escape pod!"
emagged = 1
-
if (istype(docking_program, /datum/computer/file/embedded_program/docking/simple/escape_pod))
var/datum/computer/file/embedded_program/docking/simple/escape_pod/P = docking_program
- P.arm()
+ if (!P.armed)
+ P.arm()
return
+
+ ..()
diff --git a/code/game/machinery/embedded_controller/simple_docking_controller.dm b/code/game/machinery/embedded_controller/simple_docking_controller.dm
index 159189e9d9e..a7fec342cbf 100644
--- a/code/game/machinery/embedded_controller/simple_docking_controller.dm
+++ b/code/game/machinery/embedded_controller/simple_docking_controller.dm
@@ -29,7 +29,7 @@
/obj/machinery/embedded_controller/radio/simple_docking_controller/Topic(href, href_list)
if(..())
- return
+ return 1
usr.set_machine(src)
src.add_fingerprint(usr)
@@ -44,7 +44,7 @@
if(clean)
program.receive_user_command(href_list["command"])
- return 1
+ return 0
//A docking controller program for a simple door based docking port
diff --git a/nano/templates/escape_pod_berth_console.tmpl b/nano/templates/escape_pod_berth_console.tmpl
new file mode 100644
index 00000000000..756ab7e6568
--- /dev/null
+++ b/nano/templates/escape_pod_berth_console.tmpl
@@ -0,0 +1,42 @@
+
+
+
+ Escape Pod Status:
+
+
+ {{if docking_status == "docked"}}
+ {{if armed}}
+ ARMED
+ {{else}}
+ SYSTEMS OK
+ {{/if}}
+ {{else docking_status == "undocking"}}
+ EJECTING-STAND CLEAR!
+ {{else docking_status == "undocked"}}
+ POD EJECTED
+ {{else docking_status == "docking"}}
+ INITIALIZING...
+ {{else}}
+ ERROR
+ {{/if}}
+
+
+
+
+
+
+ {{if armed}}
+ {{if docking_status == "docked"}}
+ {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
+ {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
+ {{else}}
+ {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
+ {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
+ {{/if}}
+ {{else}}
+ {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}}
+ {{:~link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}}
+ {{/if}}
+
+
+
\ No newline at end of file
diff --git a/nano/templates/escape_pod_console.tmpl b/nano/templates/escape_pod_console.tmpl
index d81b20a5765..90346af30ee 100644
--- a/nano/templates/escape_pod_console.tmpl
+++ b/nano/templates/escape_pod_console.tmpl
@@ -5,17 +5,67 @@
{{if docking_status == "docked"}}
- {{if armed}}
+ {{if is_armed}}
ARMED
{{else}}
SYSTEMS OK
{{/if}}
{{else docking_status == "undocking"}}
- EJECTING-STAND CLEAR!
+ EJECTING
{{else docking_status == "undocked"}}
POD EJECTED
{{else docking_status == "docking"}}
- INITIALIZING...
+ DOCKING
+ {{else}}
+ ERROR
+ {{/if}}
+
+
+
+
+
+
+ Docking Hatch:
+
+
+ {{if docking_status == "docked"}}
+ {{if door_state == "open"}}
+
OPEN
+ {{else door_state == "closed"}}
+
CLOSED
+ {{else}}
+
ERROR
+ {{/if}}
+ {{else docking_status == "docking"}}
+ {{if door_state == "open"}}
+
OPEN
+ {{else door_state == "closed" && door_lock == "locked"}}
+
SECURED
+ {{else door_state == "closed" && door_lock == "unlocked"}}
+
UNSECURED
+ {{else}}
+
ERROR
+ {{/if}}
+ {{else docking_status == "undocking"}}
+ {{if door_state == "open"}}
+
OPEN
+ {{else door_state == "closed" && door_lock == "locked"}}
+
SECURED
+ {{else door_state == "closed" && door_lock == "unlocked"}}
+
UNSECURED
+ {{else}}
+
ERROR
+ {{/if}}
+ {{else docking_status == "undocked"}}
+ {{if door_state == "open"}}
+
OPEN
+ {{else door_state == "closed" && door_lock == "locked"}}
+
SECURED
+ {{else door_state == "closed" && door_lock == "unlocked"}}
+
UNSECURED
+ {{else}}
+
ERROR
+ {{/if}}
{{else}}
ERROR
{{/if}}
@@ -25,18 +75,21 @@
- {{if armed}}
- {{if docking_status == "docked"}}
- {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
- {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
- {{else}}
- {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
- {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
- {{/if}}
+ {{if docking_status == "docked"}}
+ {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
+ {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
{{else}}
- {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}}
- {{:~link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}}
+ {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
+ {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
{{/if}}
-
\ No newline at end of file
+
+
+
+
+ {{:~link('ARM', 'alert', {'command' : 'manual_arm'}, is_armed ? 'disabled' : null, is_armed ? 'redBackground' : 'yellowBackground')}}
+ {{:~link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, can_force ? null : 'disabled', can_force ? 'yellowBackground' : null)}}
+
+
+
diff --git a/nano/templates/simple_docking_console_pod.tmpl b/nano/templates/simple_docking_console_pod.tmpl
deleted file mode 100644
index 676d2a1496f..00000000000
--- a/nano/templates/simple_docking_console_pod.tmpl
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
- Docking Port Status:
-
-
- {{if docking_status == "docked"}}
- {{if !override_enabled}}
- DOCKED
- {{else}}
- DOCKED-OVERRIDE ENABLED
- {{/if}}
- {{else docking_status == "docking"}}
- {{if !override_enabled}}
- DOCKING
- {{else}}
- DOCKING-OVERRIDE ENABLED
- {{/if}}
- {{else docking_status == "undocking"}}
- {{if !override_enabled}}
- UNDOCKING
- {{else}}
- UNDOCKING-OVERRIDE ENABLED
- {{/if}}
- {{else docking_status == "undocked"}}
- {{if !override_enabled}}
- NOT IN USE
- {{else}}
- OVERRIDE ENABLED
- {{/if}}
- {{else}}
- ERROR
- {{/if}}
-
-
-
-
-
-
- Docking Hatch:
-
-
- {{if docking_status == "docked"}}
- {{if door_state == "open"}}
- OPEN
- {{else door_state == "closed"}}
- CLOSED
- {{else}}
- ERROR
- {{/if}}
- {{else docking_status == "docking"}}
- {{if door_state == "open"}}
- OPEN
- {{else door_state == "closed" && door_lock == "locked"}}
- SECURED
- {{else door_state == "closed" && door_lock == "unlocked"}}
- UNSECURED
- {{else}}
- ERROR
- {{/if}}
- {{else docking_status == "undocking"}}
- {{if door_state == "open"}}
- OPEN
- {{else door_state == "closed" && door_lock == "locked"}}
- SECURED
- {{else door_state == "closed" && door_lock == "unlocked"}}
- UNSECURED
- {{else}}
- ERROR
- {{/if}}
- {{else docking_status == "undocked"}}
- {{if door_state == "open"}}
- OPEN
- {{else door_state == "closed" && door_lock == "locked"}}
- SECURED
- {{else door_state == "closed" && door_lock == "unlocked"}}
- UNSECURED
- {{else}}
- ERROR
- {{/if}}
- {{else}}
- ERROR
- {{/if}}
-
-
-
-
-
-
- {{if docking_status == "docked"}}
- {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
- {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
- {{else}}
- {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
- {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
- {{/if}}
-
-
-
-
-
-
- {{if docking_status == "docked"}}
- {{:~link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, 'disabled', null)}}
- {{else}}
- {{:~link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, can_force ? null : 'disabled', can_force ? 'redBackground' : null)}}
- {{/if}}
-
-
-