# region Base
- type: construction
  abstract: true
  id: BaseAtmos
  placementMode: SnapgridCenter
  category: construction-category-atmospherics
  objectType: Structure
  canRotate: true

- type: construction
  abstract: true
  parent: BaseAtmos
  id: BaseGasPipe
  placementMode: AlignAtmosPipeLayers
  graph: GasPipe
  canBuildInImpassable: true # for player convenience

- type: construction
  abstract: true
  parent: BaseAtmos
  id: BaseGasDevice
  conditions:
  - !type:NoUnstackableInTile

# we allow stacking for shit like radiators on top of atmosdevices
# for now (trademark patent pending)
- type: construction
  abstract: true
  parent: BaseAtmos
  id: BaseGasDeviceStackable

- type: construction
  abstract: true
  parent: BaseGasDevice
  id: BaseGasUnary
  graph: GasUnary

- type: construction
  abstract: true
  parent: BaseGasDevice
  id: BaseGasBinary
  graph: GasBinary
  placementMode: AlignAtmosPipeLayers # most binary devices support layers

- type: construction
  abstract: true
  parent: BaseGasDeviceStackable
  id: BaseGasBinaryStackable
  graph: GasBinary
  placementMode: AlignAtmosPipeLayers

- type: construction
  abstract: true
  parent: BaseGasDevice
  id: BaseGasTrinary
  graph: GasTrinary
# endregion Base

# region Machines
- type: construction
  parent: BaseAtmos
  id: AirAlarmFixture
  graph: AirAlarm
  targetNode: air_alarm
  canBuildInImpassable: true
  conditions:
  - !type:WallmountCondition

- type: construction
  parent: BaseAtmos
  id: FireAlarm
  graph: FireAlarm
  targetNode: fire_alarm
  canBuildInImpassable: true
  conditions:
  - !type:WallmountCondition

- type: construction
  parent: BaseAtmos
  id: AirSensor
  graph: AirSensor
  targetNode: sensor

- type: construction
  parent: BaseAtmos
  id: GasPipeSensor
  placementMode: AlignAtmosPipeLayers
  graph: GasPipeSensor
  targetNode: sensor
  alternativePrototypes:
  - GasPipeSensor
  - GasPipeSensorAlt1
  - GasPipeSensorAlt2

- type: construction
  parent: GasPipeSensor
  id: GasPipeSensorAlt1
  hide: true
  targetNode: sensorAlt1

- type: construction
  parent: GasPipeSensor
  id: GasPipeSensorAlt2
  hide: true
  targetNode: sensorAlt2
# endregion Machines

# region Pipes
- type: construction
  parent: BaseGasPipe
  id: GasPipeHalf
  name: construction-recipe-gas-pipe-half
  targetNode: half
  alternativePrototypes:
  - GasPipeHalf
  - GasPipeHalfAlt1
  - GasPipeHalfAlt2

- type: construction
  parent: GasPipeHalf
  id: GasPipeHalfAlt1
  hide: true
  targetNode: halfAlt1

- type: construction
  parent: GasPipeHalf
  id: GasPipeHalfAlt2
  hide: true
  targetNode: halfAlt2

- type: construction
  parent: BaseGasPipe
  id: GasPipeStraight
  targetNode: straight
  alternativePrototypes:
  - GasPipeStraight
  - GasPipeStraightAlt1
  - GasPipeStraightAlt2

- type: construction
  parent: GasPipeStraight
  id: GasPipeStraightAlt1
  hide: true
  targetNode: straightAlt1

- type: construction
  parent: GasPipeStraight
  id: GasPipeStraightAlt2
  hide: true
  targetNode: straightAlt2

- type: construction
  parent: BaseGasPipe
  id: GasPipeBend
  name: construction-recipe-gas-pipe-bend
  targetNode: bend
  alternativePrototypes:
  - GasPipeBend
  - GasPipeBendAlt1
  - GasPipeBendAlt2

- type: construction
  parent: GasPipeBend
  id: GasPipeBendAlt1
  hide: true
  targetNode: bendAlt1

- type: construction
  parent: GasPipeBend
  id: GasPipeBendAlt2
  hide: true
  targetNode: bendAlt2

- type: construction
  parent: BaseGasPipe
  id: GasPipeTJunction
  name: construction-recipe-gas-pipe-t-junction
  targetNode: tjunction
  alternativePrototypes:
  - GasPipeTJunction
  - GasPipeTJunctionAlt1
  - GasPipeTJunctionAlt2

- type: construction
  parent: GasPipeTJunction
  id: GasPipeTJunctionAlt1
  hide: true
  targetNode: tjunctionAlt1

- type: construction
  parent: GasPipeTJunction
  id: GasPipeTJunctionAlt2
  hide: true
  targetNode: tjunctionAlt2

- type: construction
  parent: BaseGasPipe
  id: GasPipeFourway
  name: construction-recipe-gas-pipe-fourway
  targetNode: fourway
  alternativePrototypes:
  - GasPipeFourway
  - GasPipeFourwayAlt1
  - GasPipeFourwayAlt2

- type: construction
  parent: GasPipeFourway
  id: GasPipeFourwayAlt1
  hide: true
  targetNode: fourwayAlt1

- type: construction
  parent: GasPipeFourway
  id: GasPipeFourwayAlt2
  hide: true
  targetNode: fourwayAlt2

- type: construction
  parent: BaseGasPipe
  id: GasPipeManifold
  targetNode: manifold
  placementMode: SnapgridCenter
# endregion Pipes

# region Unary
- type: construction
  parent: BaseGasUnary
  id: GasVentPump
  targetNode: ventpump

- type: construction
  parent: BaseGasUnary
  id: GasPassiveVent
  targetNode: passivevent

- type: construction
  parent: BaseGasUnary
  id: GasVentScrubber
  targetNode: ventscrubber

- type: construction
  parent: BaseGasUnary
  id: GasOutletInjector
  targetNode: outletinjector
# endregion Unary

# region Binary
- type: construction
  parent: BaseGasBinary
  id: GasPressurePump
  targetNode: pressurepump
  alternativePrototypes:
  - GasPressurePump
  - GasPressurePumpAlt1
  - GasPressurePumpAlt2

- type: construction
  parent: GasPressurePump
  id: GasPressurePumpAlt1
  hide: true
  targetNode: pressurepumpAlt1

- type: construction
  parent: GasPressurePump
  id: GasPressurePumpAlt2
  hide: true
  targetNode: pressurepumpAlt2

- type: construction
  parent: BaseGasBinary
  id: GasVolumePump
  targetNode: volumepump
  alternativePrototypes:
  - GasVolumePump
  - GasVolumePumpAlt1
  - GasVolumePumpAlt2

- type: construction
  parent: GasVolumePump
  id: GasVolumePumpAlt1
  hide: true
  targetNode: volumepumpAlt1

- type: construction
  parent: GasVolumePump
  id: GasVolumePumpAlt2
  hide: true
  targetNode: volumepumpAlt2

- type: construction
  parent: BaseGasBinary
  id: GasPassiveGate
  targetNode: passivegate
  alternativePrototypes:
  - GasPassiveGate
  - GasPassiveGateAlt1
  - GasPassiveGateAlt2

- type: construction
  parent: GasPassiveGate
  id: GasPassiveGateAlt1
  hide: true
  targetNode: passivegateAlt1

- type: construction
  parent: GasPassiveGate
  id: GasPassiveGateAlt2
  hide: true
  targetNode: passivegateAlt2

- type: construction
  parent: BaseGasBinary
  id: GasPressureRegulator
  targetNode: pressureregulator
  alternativePrototypes:
  - GasPressureRegulator
  - GasPressureRegulatorAlt1
  - GasPressureRegulatorAlt2

- type: construction
  parent: GasPressureRegulator
  id: GasPressureRegulatorAlt1
  hide: true
  targetNode: pressureregulatorAlt1

- type: construction
  parent: GasPressureRegulator
  id: GasPressureRegulatorAlt2
  hide: true
  targetNode: pressureregulatorAlt2

- type: construction
  parent: BaseGasBinary
  id: GasValve
  targetNode: valve
  alternativePrototypes:
  - GasValve
  - GasValveAlt1
  - GasValveAlt2

- type: construction
  parent: GasValve
  id: GasValveAlt1
  hide: true
  targetNode: valveAlt1

- type: construction
  parent: GasValve
  id: GasValveAlt2
  hide: true
  targetNode: valveAlt2

- type: construction
  parent: BaseGasBinary
  id: SignalControlledValve
  targetNode: signalvalve
  alternativePrototypes:
  - SignalControlledValve
  - SignalControlledValveAlt1
  - SignalControlledValveAlt2

- type: construction
  parent: SignalControlledValve
  id: SignalControlledValveAlt1
  hide: true
  targetNode: signalvalveAlt1

- type: construction
  parent: SignalControlledValve
  id: SignalControlledValveAlt2
  hide: true
  targetNode: signalvalveAlt2

- type: construction
  parent: BaseGasBinary
  id: GasPort
  targetNode: port
  placementMode: SnapgridCenter

- type: construction
  parent: BaseGasBinary
  id: GasDualPortVentPump
  targetNode: dualportventpump
  placementMode: SnapgridCenter

- type: construction
  parent: BaseGasBinaryStackable
  id: HeatExchanger
  targetNode: radiator
  placementMode: SnapgridCenter

- type: construction
  parent: BaseGasBinaryStackable
  id: HeatExchangerBend
  name: construction-recipe-heat-exchanger-bend
  targetNode: bendradiator
  placementMode: SnapgridCenter
# endregion Binary

# region Trinary
- type: construction
  parent: BaseGasTrinary
  id: GasFilter
  targetNode: filter
  mirror: GasFilterFlipped

- type: construction
  parent: GasFilter
  id: GasFilterFlipped
  hide: true
  targetNode: filterflipped
  mirror: GasFilter

- type: construction
  parent: BaseGasTrinary
  id: GasMixer
  targetNode: mixer
  mirror: GasMixerFlipped

- type: construction
  parent: GasMixer
  id: GasMixerFlipped
  hide: true
  targetNode: mixerflipped
  mirror: GasMixer

- type: construction
  parent: BaseGasTrinary
  id: PressureControlledValve
  targetNode: pneumaticvalve
# endregion Trinary
