diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 8ad5a30b9fb..8dcdcb730a9 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -9,6 +9,7 @@
#define AIRLOCK_WIRE_ELECTRIFY 9
#define AIRLOCK_WIRE_SAFETY 10
#define AIRLOCK_WIRE_SPEED 11
+#define AIRLOCK_WIRE_LIGHT 12
/*
New methods:
@@ -32,21 +33,26 @@
//This generates the randomized airlock wire assignments for the game.
/proc/RandomAirlockWires()
//to make this not randomize the wires, just set index to 1 and increment it in the flag for loop (after doing everything else).
- var/list/wires = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
- airlockIndexToFlag = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
- airlockIndexToWireColor = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
- airlockWireColorToIndex = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ var/list/wires = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ airlockIndexToFlag = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ airlockIndexToWireColor = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ airlockWireColorToIndex = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
var/flagIndex = 1
- for (var/flag=1, flag<2048, flag+=flag)
+ for (var/flag=1, flag<4096, flag+=flag)
var/valid = 0
+ var/list/colorList = list(AIRLOCK_WIRE_IDSCAN, AIRLOCK_WIRE_MAIN_POWER1, AIRLOCK_WIRE_MAIN_POWER2, AIRLOCK_WIRE_DOOR_BOLTS,
+ AIRLOCK_WIRE_BACKUP_POWER1, AIRLOCK_WIRE_BACKUP_POWER2, AIRLOCK_WIRE_OPEN_DOOR, AIRLOCK_WIRE_AI_CONTROL, AIRLOCK_WIRE_ELECTRIFY,
+ AIRLOCK_WIRE_SAFETY, AIRLOCK_WIRE_SPEED, AIRLOCK_WIRE_LIGHT)
+
while (!valid)
- var/colorIndex = rand(1, 11)
+ var/colorIndex = pick(colorList)
if(wires[colorIndex]==0)
valid = 1
wires[colorIndex] = flag
airlockIndexToFlag[flagIndex] = flag
airlockIndexToWireColor[flagIndex] = colorIndex
airlockWireColorToIndex[colorIndex] = flagIndex
+ colorList -= colorIndex
flagIndex+=1
return wires
@@ -69,13 +75,14 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
var/spawnPowerRestoreRunning = 0
var/welded = null
var/locked = 0
- var/wires = 2047
+ var/lights = 1 // bolt lights show by default
+ var/wires = 4095
secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
var/aiDisabledIdScanner = 0
var/aiHacking = 0
var/obj/machinery/door/airlock/closeOther = null
var/closeOtherId = null
- var/list/signalers[11]
+ var/list/signalers[12]
var/lockdownbyai = 0
autoclose = 1
var/doortype = 0
@@ -437,6 +444,10 @@ About the new airlock wires panel:
normalspeed = !normalspeed
src.updateUsrDialog()
+ if(AIRLOCK_WIRE_LIGHT)
+ lights = !lights
+ src.updateUsrDialog()
+
/obj/machinery/door/airlock/proc/cut(var/wireColor)
var/wireFlag = airlockWireColorToFlag[wireColor]
@@ -481,6 +492,10 @@ About the new airlock wires panel:
autoclose = 0
src.updateUsrDialog()
+ if(AIRLOCK_WIRE_LIGHT)
+ lights = 0
+ src.updateUsrDialog()
+
/obj/machinery/door/airlock/proc/mend(var/wireColor)
var/wireFlag = airlockWireColorToFlag[wireColor]
var/wireIndex = airlockWireColorToIndex[wireColor] //not used in this function
@@ -518,6 +533,10 @@ About the new airlock wires panel:
close()
src.updateUsrDialog()
+ if(AIRLOCK_WIRE_LIGHT)
+ lights = 1
+ src.updateUsrDialog()
+
/obj/machinery/door/airlock/proc/isElectrified()
if(src.secondsElectrified != 0)
@@ -614,7 +633,7 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/update_icon()
if(overlays) overlays = null
if(density)
- if(locked)
+ if(locked && lights)
icon_state = "door_locked"
else
icon_state = "door_closed"
@@ -711,6 +730,14 @@ About the new airlock wires panel:
t1 += text(" Raise?
\n", src)
else
t1 += text(" Cannot raise door bolts due to power failure.
\n")
+
+ if(src.isWireCut(AIRLOCK_WIRE_LIGHT))
+ t1 += text("Door bolt lights wire is cut.
\n")
+ else if(!src.lights)
+ t1 += text("Door lights are off. Enable?
\n", src)
+ else
+ t1 += text("Door lights are on. Disable?
\n", src)
+
if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY))
t1 += text("Electrification wire is cut.
\n")
if(src.secondsElectrified==-1)
@@ -843,7 +870,8 @@ About the new airlock wires panel:
"Grey" = 8,
"Black" = 9,
"Gold" = 10,
- "Aqua" = 11
+ "Aqua" = 11,
+ "Pink" = 12
)
for(var/wiredesc in wires)
var/is_uncut = src.wires & airlockWireColorToFlag[wires[wiredesc]]
@@ -859,7 +887,7 @@ About the new airlock wires panel:
t1 += "Attach signaler"
t1 += "
"
- t1 += text("
\n[]
\n[]
\n[]
\n[]", (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), ((src.arePowerSystemsOn() && !(stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), (src.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), (src.safe==0 ? "The 'Check Wiring' light is on." : "The 'Check Wiring' light is off."))
+ t1 += text("
\n[]
\n[]
\n[]
\n[]
\n[]", (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), (src.lights ? "The door bolt lights are on." : "The door bolt lights are off!"), ((src.arePowerSystemsOn() && !(stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), (src.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), (src.safe==0 ? "The 'Check Wiring' light is on." : "The 'Check Wiring' light is off."))
t1 += text("