mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Adds ability to have airlock wires randomized
Adds a secured_wires var to airlocks that may be set through mapping. If not set to 0, the airlock's wires will be randomized for that airlock, instead of using the global wiring scheme.
This commit is contained in:
@@ -32,11 +32,19 @@
|
||||
|
||||
//This generates the randomized airlock wire assignments for the game.
|
||||
/proc/RandomAirlockWires()
|
||||
var/list/wire_assignments = CreateRandomAirlockWires()
|
||||
|
||||
globalAirlockIndexToFlag = wire_assignments[2]
|
||||
globalAirlockIndexToWireColor = wire_assignments[3]
|
||||
globalAirlockWireColorToIndex = wire_assignments[4]
|
||||
return wire_assignments[1]
|
||||
|
||||
/proc/CreateRandomAirlockWires()
|
||||
//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, 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/airlockIndexToFlag = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
var/airlockIndexToWireColor = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
var/airlockWireColorToIndex = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
var/flagIndex = 1
|
||||
for (var/flag=1, flag<4096, flag+=flag)
|
||||
var/valid = 0
|
||||
@@ -54,7 +62,7 @@
|
||||
airlockWireColorToIndex[colorIndex] = flagIndex
|
||||
colorList -= colorIndex
|
||||
flagIndex+=1
|
||||
return wires
|
||||
return list(wires, airlockIndexToFlag, airlockIndexToWireColor, airlockWireColorToIndex)
|
||||
|
||||
/* Example:
|
||||
Airlock wires color -> flag are { 64, 128, 256, 2, 16, 4, 8, 32, 1 }.
|
||||
@@ -93,6 +101,11 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
||||
normalspeed = 1
|
||||
var/obj/item/weapon/airlock_electronics/electronics = null
|
||||
var/hasShocked = 0 //Prevents multiple shocks from happening
|
||||
var/secured_wires = 0 //for mapping use
|
||||
var/list/airlockIndexToFlag
|
||||
var/list/airlockWireColorToFlag
|
||||
var/list/airlockIndexToWireColor
|
||||
var/list/airlockWireColorToIndex
|
||||
|
||||
/obj/machinery/door/airlock/command
|
||||
name = "Airlock"
|
||||
@@ -1319,6 +1332,22 @@ About the new airlock wires panel:
|
||||
|
||||
/obj/machinery/door/airlock/New()
|
||||
..()
|
||||
|
||||
//wires
|
||||
if (!secured_wires)
|
||||
airlockWireColorToFlag = globalAirlockWireColorToFlag
|
||||
airlockIndexToFlag = globalAirlockIndexToFlag
|
||||
airlockIndexToWireColor = globalAirlockIndexToWireColor
|
||||
airlockWireColorToIndex = globalAirlockWireColorToIndex
|
||||
else
|
||||
var/wire_assignments = CreateRandomAirlockWires()
|
||||
airlockWireColorToFlag = wire_assignments[1]
|
||||
airlockIndexToFlag = wire_assignments[2]
|
||||
airlockIndexToWireColor = wire_assignments[3]
|
||||
airlockWireColorToIndex = wire_assignments[4]
|
||||
|
||||
/proc/CreateRandomAirlockWires()
|
||||
|
||||
if(src.closeOtherId != null)
|
||||
spawn (5)
|
||||
for (var/obj/machinery/door/airlock/A in world)
|
||||
|
||||
@@ -176,10 +176,10 @@ var/datum/nanomanager/nanomanager = new()
|
||||
//airlockWireColorToIndex takes a number representing the wire color, e.g. the orange wire is always 1, the dark red wire is always 2, etc. It returns the index for whatever that wire does.
|
||||
//airlockIndexToWireColor does the opposite thing - it takes the index for what the wire does, for example AIRLOCK_WIRE_IDSCAN is 1, AIRLOCK_WIRE_POWER1 is 2, etc. It returns the wire color number.
|
||||
//airlockWireColorToFlag takes the wire color number and returns the flag for it (1, 2, 4, 8, 16, etc)
|
||||
var/list/airlockWireColorToFlag = RandomAirlockWires()
|
||||
var/list/airlockIndexToFlag
|
||||
var/list/airlockIndexToWireColor
|
||||
var/list/airlockWireColorToIndex
|
||||
var/list/globalAirlockWireColorToFlag = RandomAirlockWires()
|
||||
var/list/globalAirlockIndexToFlag
|
||||
var/list/globalAirlockIndexToWireColor
|
||||
var/list/globalAirlockWireColorToIndex
|
||||
var/list/APCWireColorToFlag = RandomAPCWires()
|
||||
var/list/APCIndexToFlag
|
||||
var/list/APCIndexToWireColor
|
||||
|
||||
Reference in New Issue
Block a user