SemlerPDX icon

Stationeers Custom Multi-Airlock Example

SemlerPDX | PRO | 12/05/25 03:33:50 AM UTC (Edited) | 0 ⭐ | 1173 👁️ | Never ⏰ | [Stationeers, IC10]
text |

3.45 KB

|

Gaming

|

0 👍

/

0 👎

#Fast Dual-Type Airlock Control Script v7
# by SemlerPDX Nov2023/Feb2025
# glass doors (East) and composite doors (West)
 #This style Airlock system expects dedicated active
# vents for each phase of the cycle:
# (Vent out to World) (Vent out to Base) (Vent in from Base)
# Doors should be pre-set to Logic Mode (1)
# Active Vents should also be pre-set to appropriate mode respectively
 # === Stack Loading Section ===
define GlassDoors -324331872 #(change as needed per airlock)
define CompositeDoors -793837322 #(change as needed per airlock)
define Lights 797794350 #long thin (change as needed)
 push HASH("VentMarsWest")
push HASH("VentOutWest")
push HASH("VentInWest")
push HASH("PowerStationWest") #this airlock light & gas sensor name
push Lights #this airlock light type
push HASH("Airlock West") #DoorOutWest
push HASH("Power Station") #DoorInWest
push CompositeDoors
push HASH("VentMarsEast")
push HASH("VentOutEast")
push HASH("VentInEast")
push HASH("PowerStationEast") #this airlock light & gas sensor name
push Lights #this airlock light type
push HASH("DoorOutEast")
push HASH("DoorInEast")
push GlassDoors
s db Setting sp
#(these are just example device names above, from my Power Station)
# Stack loading section above could be on a different script to fit more lines
# -just export the stack loader script, run it, then export control script
  # === Airlock Control Section ===
define ActiveVents -1129453144
define GasSensors -1252983604
define SensorIn HASH("GasSensorIn")
 alias ThisDoor r3
alias ThisVent r4
alias FirstDoor r5
alias SecondDoor r6
alias ThisVentMars r7
alias ThisVentOut r8
alias ThisVentIn r9
alias ThisAirlock r10
alias ThisLightType r11
alias ThisDoorOut r12
alias ThisDoorIn r13
alias ThisDoorType r14
alias STACK r15
 define PressureMin 15 #kPa (for CanAirlock)
l STACK db Setting
 start:
  move sp STACK
  yield
checkAirlocks:
  pop ThisDoorType
  pop ThisDoorIn
  pop ThisDoorOut
  pop ThisLightType
  pop ThisAirlock
  pop ThisVentIn
  pop ThisVentOut
  pop ThisVentMars
  move ThisDoor ThisDoorIn
  jal checkDoors #check interior door
  move ThisDoor ThisDoorOut
  jal checkDoors #check exterior door
  bge sp 8 checkAirlocks
j start
  checkDoors:
  lbn r0 ThisDoorType ThisDoor Setting Maximum
  lbn r1 ThisDoorType ThisDoor Open Maximum
beq r0 r1 ra
   #Check the Outer Door to determine which direction to cycle
  lbn r0 ThisDoorType ThisDoorOut Open Maximum
  select ThisVent r0 ThisVentMars ThisVentOut
  select FirstDoor r0 ThisDoorOut ThisDoorIn
  select SecondDoor r0 ThisDoorIn ThisDoorOut
   #Cycle this Airlock (or just the doors)
  sbn ThisDoorType FirstDoor Open 0 
  sbn ThisLightType ThisAirlock On 1
  sleep 1
   #Check if we CAN cycle the airlock, or just the doors
  lbn r0 GasSensors SensorIn Pressure Average
 blt r0 PressureMin cycleComplete
   #A simple sub-loop to de-pressurize the Airlock
  sbn ActiveVents ThisVent On 1
  yield
  lbn r0 GasSensors ThisAirlock Pressure Maximum
  brgtz r0 -2
  sleep 1
  sbn ActiveVents ThisVent On 0
 beq ThisVent ThisVentOut cycleComplete
   #A simple sub-loop to pressurize the Airlock
  sbn ActiveVents ThisVentIn On 1
  yield
  lbn r0 GasSensors ThisAirlock Pressure Maximum
  lbn r1 GasSensors SensorIn Pressure Average
  sub r1 r1 5
  brlt r0 r1 -4
  sbn ActiveVents ThisVentIn On 0
 cycleComplete:
  sbn ThisDoorType SecondDoor Open 1
  sbn ThisLightType ThisAirlock On 0
j start
 

Comments