diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 3ea80548f4a..a46e1626d2b 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -72,7 +72,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING while(looping) sleep(1) for(var/datum/subsystem/ss in subsystems) - qdel(ss) + ss.Shutdown ..() // Tell qdel() to Del() this object. return QDEL_HINT_HARDDEL_NOW diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c6ea3c45cbc..bead5f5822f 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -544,104 +544,43 @@ var/list/airlock_overlays = list() //Separate interface for the AI. user.set_machine(src) - var/t1 = text("Airlock Control
\n") - if(src.secondsMainPowerLost > 0) - if(!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2)) - t1 += text("Main power is offline for [] seconds.
\n", src.secondsMainPowerLost) - else - t1 += text("Main power is offline indefinitely.
\n") - else - t1 += text("Main power is online.") + ui_interact(user) - if(src.secondsBackupPowerLost > 0) - if(!wires.is_cut(WIRE_BACKUP1) && !wires.is_cut(WIRE_BACKUP2)) - t1 += text("Backup power is offline for [] seconds.
\n", src.secondsBackupPowerLost) - else - t1 += text("Backup power is offline indefinitely.
\n") - else if(src.secondsMainPowerLost > 0) - t1 += text("Backup power is online.") - else - t1 += text("Backup power is offline, but will turn on if main power fails.") - t1 += "
\n" +/obj/machinery/door/airlock/ui_interact(mob/user, ui_key = "ai_airlockk", datum/tgui/ui = null, force_open = 0, \ + datum/tgui/master_ui = null, datum/ui_state/state = default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "ai_airlock", name, 500, 500, master_ui, state) + ui.open() - if(wires.is_cut(WIRE_IDSCAN)) - t1 += text("IdScan wire is cut.
\n") - else if(src.aiDisabledIdScanner) - t1 += text("IdScan disabled. Enable?
\n", src) - else - t1 += text("IdScan enabled. Disable?
\n", src) +/obj/machinery/door/airlock/ui_act(action, params) + return - if(src.emergency) - t1 += text("Emergency Access Override is enabled. Disable?
\n", src) - else - t1 += text("Emergency Access Override is disabled. Enable?
\n", src) +/obj/machinery/door/airlock/ui_data(mob/user) + var/list/data = list() + data["mrepower_time"] = secondsMainPowerLost + data["mpowered"] = !wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2) - if(wires.is_cut(WIRE_POWER1)) - t1 += text("Main Power Input wire is cut.
\n") - if(wires.is_cut(WIRE_POWER2)) - t1 += text("Main Power Output wire is cut.
\n") - if(src.secondsMainPowerLost == 0) - t1 += text("Temporarily disrupt main power?.
\n", src) - if(src.secondsBackupPowerLost == 0) - t1 += text("Temporarily disrupt backup power?.
\n", src) + data["brepower_time"] = secondsBackupPowerLost + data["bpowered"] = !wires.is_cut(WIRE_BACKUP1) && !wires.is_cut(WIRE_BACKUP2) - if(wires.is_cut(WIRE_BACKUP1)) - t1 += text("Backup Power Input wire is cut.
\n") - if(wires.is_cut(WIRE_BACKUP2)) - t1 += text("Backup Power Output wire is cut.
\n") + data["idscan_wire"] = !wires.is_cut(WIRE_IDSCAN) + data["idscan_disabled"] = aiDisabledIdScanner - if(wires.is_cut(WIRE_BOLTS)) - t1 += text("Door bolt drop wire is cut.
\n") - else if(!src.locked) - t1 += text("Door bolts are up. Drop them?
\n", src) - else - t1 += text("Door bolts are down.") - if(src.hasPower()) - t1 += text(" Raise?
\n", src) - else - t1 += text(" Cannot raise door bolts due to power failure.
\n") + data["emergency"] = emergency - if(wires.is_cut(WIRE_LIGHT)) - t1 += text("Door bolt lights wire is cut.
\n") - else if(!src.lights) - t1 += text("Door bolt lights are off. Enable?
\n", src) - else - t1 += text("Door bolt lights are on. Disable?
\n", src) + data["bolt_wire"] = !wires.is_cut(WIRE_BOLTS) + data["bolts"] = locked - if(wires.is_cut(WIRE_SHOCK)) - t1 += text("Electrification wire is cut.
\n") - if(src.secondsElectrified==-1) - t1 += text("Door is electrified indefinitely. Un-electrify it?
\n", src) - else if(src.secondsElectrified>0) - t1 += text("Door is electrified temporarily ([] seconds). Un-electrify it?
\n", src.secondsElectrified, src) - else - t1 += text("Door is not electrified. Electrify it for 30 seconds? Or, Electrify it indefinitely until someone cancels the electrification?
\n", src, src) + data["lights_wire"] = !wires.is_cut(WIRE_LIGHT) + data["lights"] = lights - if(wires.is_cut(WIRE_SAFETY)) - t1 += text("Door force sensors not responding.
\n") - else if(src.safe) - t1 += text("Door safeties operating normally. Override?
\n",src) - else - t1 += text("Danger. Door safeties disabled. Restore?
\n",src) + data["safety_wire"] = !wires.is_cut(WIRE_SAFETY) + data["safety"] = safe - if(wires.is_cut(WIRE_TIMING)) - t1 += text("Door timing circuitry not responding.
\n") - else if(src.normalspeed) - t1 += text("Door timing circuitry operating normally. Override?
\n",src) - else - t1 += text("Warning. Door timing circuitry operating abnormally. Restore?
\n",src) + data["openable"] = !welded && !locked - if(src.welded) - t1 += text("Door appears to have been welded shut.
\n") - else if(!src.locked) - if(src.density) - t1 += text("Open door
\n", src) - else - t1 += text("Close door
\n", src) - - t1 += text("

Close

\n", src) - user << browse(t1, "window=airlock") - onclose(user, "airlock") + return data //aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door, 11 lift access override //aiEnable - 1 idscan, 4 raise door bolts, 5 electrify door for 30 seconds, 6 electrify door indefinitely, 7 open door, 11 enable access override