diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index cf7b2818b49..852354616a4 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -1,21 +1,37 @@ /obj/machinery/computer/pod name = "mass driver launch control" desc = "A combined blastdoor and mass driver control unit." + processing_flags = START_PROCESSING_MANUALLY + /// Connected mass driver var/obj/machinery/mass_driver/connected = null - var/title = "Mass Driver Controls" + /// ID of the launch control var/id = 1 - var/timing = 0 + /// If the launch timer counts down + var/timing = FALSE + /// Time before auto launch var/time = 30 + /// Range in which we search for a mass drivers and poddoors nearby var/range = 4 - + /// Countdown timer for the mass driver's delayed launch functionality. + COOLDOWN_DECLARE(massdriver_countdown) /obj/machinery/computer/pod/Initialize() . = ..() for(var/obj/machinery/mass_driver/M in range(range, src)) if(M.id == id) connected = M + break +/obj/machinery/computer/pod/process(delta_time) + if(COOLDOWN_FINISHED(src, massdriver_countdown)) + timing = FALSE + // alarm() sleeps, so we want to end processing first and can't rely on return PROCESS_KILL + end_processing() + alarm() +/** + * Initiates launching sequence by checking if all components are functional, opening poddoors, firing mass drivers and then closing poddoors + */ /obj/machinery/computer/pod/proc/alarm() if(machine_stat & (NOPOWER|BROKEN)) return @@ -39,84 +55,82 @@ if(M.id == id) M.close() -/obj/machinery/computer/pod/ui_interact(mob/user) - . = ..() - if(!allowed(user)) - to_chat(user, "Access denied.") - return +/obj/machinery/computer/pod/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MassDriverControl", name) + ui.open() - var/dat = "" - if(connected) - var/d2 - if(timing) //door controls do not need timers. - d2 = "Stop Time Launch" - else - d2 = "Initiate Time Launch" - dat += "
'+(n?e:ee(e,!0))+"\n":""+(n?e:ee(e,!0))+"\n"}return e}(),t.blockquote=function(){function e(e){return"\n"+e+"\n"}return e}(),t.html=function(){function e(e){return e}return e}(),t.heading=function(){function e(e,t,n,r){return this.options.headerIds?"
"+e+"
\n"}return e}(),t.table=function(){function e(e,t){return t&&(t=""+t+""),""+e+""}return e}(),t.br=function(){function e(){return this.options.xhtml?""+se(c.message+"",!0)+"";throw c}}return pe.options=pe.setOptions=function(e){return ue(pe.defaults,e),fe(pe.defaults),pe},pe.getDefaults=le,pe.defaults=de,pe.use=function(e){var t=ue({},e);if(e.renderer&&function(){var n=pe.defaults.renderer||new te,r=function(){function t(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a
'+(n?e:ee(e,!0))+"\n":""+(n?e:ee(e,!0))+"\n"}return e}(),t.blockquote=function(){function e(e){return"\n"+e+"\n"}return e}(),t.html=function(){function e(e){return e}return e}(),t.heading=function(){function e(e,t,n,r){return this.options.headerIds?"
"+e+"
\n"}return e}(),t.table=function(){function e(e,t){return t&&(t=""+t+""),""+e+""}return e}(),t.br=function(){function e(){return this.options.xhtml?""+se(c.message+"",!0)+"";throw c}}return pe.options=pe.setOptions=function(e){return ue(pe.defaults,e),fe(pe.defaults),pe},pe.getDefaults=le,pe.defaults=de,pe.use=function(e){var t=ue({},e);if(e.renderer&&function(){var n=pe.defaults.renderer||new te,r=function(){function t(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a