From fb69a0ae2c922ca1b9d9cfaa584785a390699460 Mon Sep 17 00:00:00 2001 From: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Date: Sun, 20 Jul 2025 00:04:15 +0200 Subject: [PATCH] More atmos devices can be placed on layers easier. (#38672) --- .../Piping/Atmospherics/alt_layers.yml | 424 ++++++++++++++++++ .../Structures/Piping/Atmospherics/binary.yml | 42 +- .../Piping/Atmospherics/gas_pipe_sensor.yml | 31 +- .../Graphs/utilities/atmos_binary.yml | 270 ++++++++++- .../Graphs/utilities/gas_pipe_sensor.yml | 52 ++- .../Recipes/Construction/utilities.yml | 276 +++++++++++- 6 files changed, 1069 insertions(+), 26 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/alt_layers.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/alt_layers.yml index 1f4ab085f1..62d90657a9 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/alt_layers.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/alt_layers.yml @@ -131,3 +131,427 @@ sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi - type: Construction node: fourwayAlt2 + +# GasPressurePump + +- type: entity + parent: [GasPipeLayerAlt1, GasPressurePump] + id: GasPressurePumpAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpPressure + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: pressurepumpAlt1 + +- type: entity + parent: [GasPipeLayerAlt2, GasPressurePump] + id: GasPressurePumpAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpPressure + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: pressurepumpAlt2 + +# GasVolumePump + +- type: entity + parent: [GasPipeLayerAlt1, GasVolumePump] + id: GasVolumePumpAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpVolume + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: volumepumpAlt1 + +- type: entity + parent: [GasPipeLayerAlt2, GasVolumePump] + id: GasVolumePumpAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpVolume + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: volumepumpAlt2 + +# GasPassiveGate + +- type: entity + parent: [GasPipeLayerAlt1, GasPassiveGate] + id: GasPassiveGateAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpPassiveGate + map: [ "enum.SubfloorLayers.FirstLayer" ] + - type: Construction + node: passivegateAlt1 + +- type: entity + parent: [GasPipeLayerAlt2, GasPassiveGate] + id: GasPassiveGateAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpPassiveGate + map: [ "enum.SubfloorLayers.FirstLayer" ] + - type: Construction + node: passivegateAlt2 + +# GasValve + +- type: entity + parent: [GasPipeLayerAlt1, GasValve] + id: GasValveAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpManualValve + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: valveAlt1 + +- type: entity + parent: [GasPipeLayerAlt2, GasValve] + id: GasValveAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpManualValve + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: valveAlt2 + +# SignalControlledValve + +- type: entity + parent: [GasPipeLayerAlt1, SignalControlledValve] + id: SignalControlledValveAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpSignalValve + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: signalvalveAlt1 + +- type: entity + parent: [GasPipeLayerAlt2, SignalControlledValve] + id: SignalControlledValveAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpSignalValve + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: signalvalveAlt2 + +# GasPipeSensor + +- type: entity + parent: [GasPipeLayerAlt1, GasPipeSensor] + id: GasPipeSensorAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + - type: Construction + node: sensorAlt1 + +- type: entity + parent: [GasPipeLayerAlt2, GasPipeSensor] + id: GasPipeSensorAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + - type: Construction + node: sensorAlt2 + +# GasPipeSensorDistribution + +- type: entity + parent: [GasPipeLayerAlt1, GasPipeSensorDistribution] + id: GasPipeSensorDistributionAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +- type: entity + parent: [GasPipeLayerAlt2, GasPipeSensorDistribution] + id: GasPipeSensorDistributionAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +# GasPipeSensorWaste + +- type: entity + parent: [GasPipeLayerAlt1, GasPipeSensorWaste] + id: GasPipeSensorWasteAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +- type: entity + parent: [GasPipeLayerAlt2, GasPipeSensorWaste] + id: GasPipeSensorWasteAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +# GasPipeSensorMixedAir + +- type: entity + parent: [GasPipeLayerAlt1, GasPipeSensorMixedAir] + id: GasPipeSensorMixedAirAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +- type: entity + parent: [GasPipeLayerAlt2, GasPipeSensorMixedAir] + id: GasPipeSensorMixedAirAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +# GasPipeSensorTEGHot + +- type: entity + parent: [GasPipeLayerAlt1, GasPipeSensorTEGHot] + id: GasPipeSensorTEGHotAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +- type: entity + parent: [GasPipeLayerAlt2, GasPipeSensorTEGHot] + id: GasPipeSensorTEGHotAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +# GasPipeTEGCold + +- type: entity + parent: [GasPipeLayerAlt1, GasPipeSensorTEGCold] + id: GasPipeSensorTEGColdAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +- type: entity + parent: [GasPipeLayerAlt2, GasPipeSensorTEGCold] + id: GasPipeSensorTEGColdAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + map: [ "enum.PipeVisualLayers.Pipe" ] + state: pipeStraight + - map: ["base"] + state: base + - map: [ "enum.PowerDeviceVisualLayers.Powered" ] + state: lights + shader: unshaded + +# GasPressureRegulator + +- type: entity + parent: [GasPipeLayerAlt1, GasPressureRegulator] + id: GasPressureRegulatorAlt1 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt1.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpPressureRegulator + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: pressureregulatorAlt1 + +- type: entity + parent: [GasPipeLayerAlt2, GasPressureRegulator] + id: GasPressureRegulatorAlt2 + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Piping/Atmospherics/pump_alt2.rsi + layers: + - sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi + state: pipeStraight + map: [ "enum.PipeVisualLayers.Pipe" ] + - state: pumpPressureRegulator + map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: Construction + node: pressureregulatorAlt2 diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml index e9c5403805..0ac2d9a35b 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml @@ -34,7 +34,7 @@ name: gas pump description: A pump that moves gas by pressure. placement: - mode: SnapgridCenter + mode: AlignAtmosPipeLayers components: - type: ExtensionCableReceiver - type: LightningTarget @@ -55,6 +55,11 @@ map: [ "enum.PipeVisualLayers.Pipe" ] - state: pumpPressure map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPressurePump + Secondary: GasPressurePumpAlt1 + Tertiary: GasPressurePumpAlt2 - type: Appearance - type: GenericVisualizer visuals: @@ -93,7 +98,7 @@ name: volumetric gas pump description: A pump that moves gas by volume. placement: - mode: SnapgridCenter + mode: AlignAtmosPipeLayers components: - type: ExtensionCableReceiver - type: LightningTarget @@ -114,6 +119,11 @@ map: [ "enum.PipeVisualLayers.Pipe" ] - state: pumpVolume map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasVolumePump + Secondary: GasVolumePumpAlt1 + Tertiary: GasVolumePumpAlt2 - type: Appearance - type: GenericVisualizer visuals: @@ -161,7 +171,7 @@ name: inlet pressure regulator description: A valve that releases gas when the inlet pressure exceeds a certain threshold. placement: - mode: SnapgridCenter + mode: AlignAtmosPipeLayers components: - type: Rotatable - type: Transform @@ -177,6 +187,11 @@ map: [ "enum.PipeVisualLayers.Pipe" ] - state: pumpPressureRegulator map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPressureRegulator + Secondary: GasPressureRegulatorAlt1 + Tertiary: GasPressureRegulatorAlt2 - type: Appearance - type: GenericVisualizer visuals: @@ -217,7 +232,7 @@ name: passive gate description: A one-way air valve that does not require power. placement: - mode: SnapgridCenter + mode: AlignAtmosPipeLayers components: - type: SubFloorHide visibleLayers: @@ -230,6 +245,11 @@ map: [ "enum.PipeVisualLayers.Pipe" ] - state: pumpPassiveGate map: [ "enum.SubfloorLayers.FirstLayer" ] + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPassiveGate + Secondary: GasPassiveGateAlt1 + Tertiary: GasPassiveGateAlt2 - type: Appearance - type: PipeColorVisuals - type: GasPassiveGate @@ -254,7 +274,7 @@ name: manual valve description: A pipe with a valve that can be used to disable the flow of gas through it. placement: - mode: SnapgridCenter + mode: AlignAtmosPipeLayers components: # TODO ATMOS: Give unique sprite. - type: SubFloorHide @@ -268,6 +288,11 @@ map: [ "enum.PipeVisualLayers.Pipe" ] - state: pumpManualValve map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasValve + Secondary: GasValveAlt1 + Tertiary: GasValveAlt2 - type: Appearance - type: GenericVisualizer visuals: @@ -310,7 +335,7 @@ name: signal valve description: A pipe with a valve that can be controlled with signals. placement: - mode: SnapgridCenter + mode: AlignAtmosPipeLayers components: - type: StationAiWhitelist - type: SubFloorHide @@ -324,6 +349,11 @@ map: [ "enum.PipeVisualLayers.Pipe" ] - state: pumpSignalValve map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ] + - type: AtmosPipeLayers + alternativePrototypes: + Primary: SignalControlledValve + Secondary: SignalControlledValveAlt1 + Tertiary: SignalControlledValveAlt2 - type: Appearance - type: GenericVisualizer visuals: diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml index c70b33639e..92466f3231 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml @@ -4,7 +4,7 @@ name: gas pipe sensor description: Reports on the status of the gas in the attached pipe network. placement: - mode: SnapgridCenter + mode: AlignAtmosPipeLayers components: - type: Sprite sprite: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi @@ -23,6 +23,10 @@ Primary: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi Secondary: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi Tertiary: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi + alternativePrototypes: + Primary: GasPipeSensor + Secondary: GasPipeSensorAlt1 + Tertiary: GasPipeSensorAlt2 - type: Appearance - type: GenericVisualizer visuals: @@ -62,6 +66,11 @@ components: - type: Label currentLabel: gas-pipe-sensor-distribution-loop + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPipeSensorDistribution + Secondary: GasPipeSensorDistributionAlt1 + Tertiary: GasPipeSensorDistributionAlt2 - type: entity parent: GasPipeSensor @@ -70,6 +79,11 @@ components: - type: Label currentLabel: gas-pipe-sensor-waste-loop + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPipeSensorWaste + Secondary: GasPipeSensorWasteAlt1 + Tertiary: GasPipeSensorWasteAlt2 - type: entity parent: GasPipeSensor @@ -78,6 +92,11 @@ components: - type: Label currentLabel: gas-pipe-sensor-mixed-air + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPipeSensorMixedAir + Secondary: GasPipeSensorMixedAirAlt1 + Tertiary: GasPipeSensorMixedAirAlt2 - type: entity parent: GasPipeSensor @@ -86,6 +105,11 @@ components: - type: Label currentLabel: gas-pipe-sensor-teg-hot-loop + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPipeSensorTEGHot + Secondary: GasPipeSensorTEGHotAlt1 + Tertiary: GasPipeSensorTEGHotAlt2 - type: entity parent: GasPipeSensor @@ -94,3 +118,8 @@ components: - type: Label currentLabel: gas-pipe-sensor-teg-cold-loop + - type: AtmosPipeLayers + alternativePrototypes: + Primary: GasPipeSensorTEGCold + Secondary: GasPipeSensorTEGColdAlt1 + Tertiary: GasPipeSensorTEGColdAlt2 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/atmos_binary.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/atmos_binary.yml index 6159bc5936..678495edbc 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/atmos_binary.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/atmos_binary.yml @@ -10,19 +10,49 @@ amount: 2 doAfter: 1 + - to: pressurepumpAlt1 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: pressurepumpAlt2 + steps: + - material: Steel + amount: 2 + doAfter: 1 + - to: volumepump steps: - material: Steel amount: 2 doAfter: 1 + - to: volumepumpAlt1 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: volumepumpAlt2 + steps: + - material: Steel + amount: 2 + doAfter: 1 + - to: passivegate steps: - material: Steel amount: 2 doAfter: 1 - - to: pressureregulator + - to: passivegateAlt1 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: passivegateAlt2 steps: - material: Steel amount: 2 @@ -34,12 +64,54 @@ amount: 2 doAfter: 1 + - to: valveAlt1 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: valveAlt2 + steps: + - material: Steel + amount: 2 + doAfter: 1 + - to: signalvalve steps: - material: Steel amount: 2 doAfter: 1 + - to: signalvalveAlt1 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: signalvalveAlt2 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: pressureregulator + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: pressureregulatorAlt1 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: pressureregulatorAlt2 + steps: + - material: Steel + amount: 2 + doAfter: 1 + - to: port steps: - material: Steel @@ -80,6 +152,38 @@ - tool: Welding doAfter: 1 + - node: pressurepumpAlt1 + entity: GasPressurePumpAlt1 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: pressurepumpAlt2 + entity: GasPressurePumpAlt2 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + - node: volumepump entity: GasVolumePump edges: @@ -96,6 +200,38 @@ - tool: Welding doAfter: 1 + - node: volumepumpAlt1 + entity: GasVolumePumpAlt1 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: volumepumpAlt2 + entity: GasVolumePumpAlt2 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + - node: passivegate entity: GasPassiveGate edges: @@ -112,8 +248,24 @@ - tool: Welding doAfter: 1 - - node: pressureregulator - entity: GasPressureRegulator + - node: passivegateAlt1 + entity: GasPassiveGateAlt1 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: passivegateAlt2 + entity: GasPassiveGateAlt2 edges: - to: start conditions: @@ -144,6 +296,38 @@ - tool: Welding doAfter: 1 + - node: valveAlt1 + entity: GasValveAlt1 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: valveAlt2 + entity: GasValveAlt2 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + - node: signalvalve entity: SignalControlledValve edges: @@ -160,6 +344,86 @@ - tool: Welding doAfter: 1 + - node: signalvalveAlt1 + entity: SignalControlledValveAlt1 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: signalvalveAlt2 + entity: SignalControlledValveAlt2 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: pressureregulator + entity: GasPressureRegulator + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: pressureregulatorAlt1 + entity: GasPressureRegulatorAlt1 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + + - node: pressureregulatorAlt2 + entity: GasPressureRegulatorAlt2 + edges: + - to: start + conditions: + - !type:EntityAnchored + anchored: false + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 1 + - node: port entity: GasPort edges: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml index bda6d036e9..95e1d3872e 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml @@ -10,7 +10,19 @@ amount: 2 doAfter: 1 - - node: sensor + - to: sensorAlt1 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - to: sensorAlt2 + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - node: sensor entity: GasPipeSensor actions: - !type:SetAnchor @@ -26,4 +38,40 @@ anchored: false steps: - tool: Welding - doAfter: 1 \ No newline at end of file + doAfter: 1 + + - node: sensorAlt1 + entity: GasPipeSensorAlt1 + actions: + - !type:SetAnchor + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 1 + + - node: sensorAlt2 + entity: GasPipeSensorAlt2 + actions: + - !type:SetAnchor + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:DeleteEntity + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index f9c9867aac..eac72ef657 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -270,9 +270,43 @@ startNode: start targetNode: sensor category: construction-category-structures - placementMode: SnapgridCenter + placementMode: AlignAtmosPipeLayers + objectType: Structure + canRotate: true + alternativePrototypes: + - GasPipeSensor + - GasPipeSensorAlt1 + - GasPipeSensorAlt2 + +- type: construction + id: GasPipeSensorAlt1 + hide: true + graph: GasPipeSensor + startNode: start + targetNode: sensorAlt1 + category: construction-category-structures + placementMode: AlignAtmosPipeLayers objectType: Structure canRotate: true + alternativePrototypes: + - GasPipeSensor + - GasPipeSensorAlt1 + - GasPipeSensorAlt2 + +- type: construction + id: GasPipeSensorAlt2 + hide: true + graph: GasPipeSensor + startNode: start + targetNode: sensorAlt2 + category: construction-category-structures + placementMode: AlignAtmosPipeLayers + objectType: Structure + canRotate: true + alternativePrototypes: + - GasPipeSensor + - GasPipeSensorAlt1 + - GasPipeSensorAlt2 # ATMOS PIPES - type: construction @@ -503,7 +537,7 @@ placementMode: SnapgridCenter canBuildInImpassable: false conditions: - - !type:NoUnstackableInTile + - !type:NoUnstackableInTile - type: construction id: GasPassiveVent @@ -514,7 +548,7 @@ placementMode: SnapgridCenter canBuildInImpassable: false conditions: - - !type:NoUnstackableInTile + - !type:NoUnstackableInTile - type: construction id: GasVentScrubber @@ -525,7 +559,7 @@ placementMode: SnapgridCenter canBuildInImpassable: false conditions: - - !type:NoUnstackableInTile + - !type:NoUnstackableInTile - type: construction id: GasOutletInjector @@ -536,7 +570,7 @@ placementMode: SnapgridCenter canBuildInImpassable: false conditions: - - !type:NoUnstackableInTile + - !type:NoUnstackableInTile # ATMOS BINARY - type: construction @@ -545,10 +579,46 @@ startNode: start targetNode: pressurepump category: construction-category-utilities - placementMode: SnapgridCenter + placementMode: AlignAtmosPipeLayers canBuildInImpassable: false conditions: - - !type:NoUnstackableInTile + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPressurePump + - GasPressurePumpAlt1 + - GasPressurePumpAlt2 + +- type: construction + id: GasPressurePumpAlt1 + hide: true + graph: GasBinary + startNode: start + targetNode: pressurepumpAlt1 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPressurePump + - GasPressurePumpAlt1 + - GasPressurePumpAlt2 + +- type: construction + id: GasPressurePumpAlt2 + hide: true + graph: GasBinary + startNode: start + targetNode: pressurepumpAlt2 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPressurePump + - GasPressurePumpAlt1 + - GasPressurePumpAlt2 - type: construction id: GasVolumePump @@ -556,10 +626,46 @@ startNode: start targetNode: volumepump category: construction-category-utilities - placementMode: SnapgridCenter + placementMode: AlignAtmosPipeLayers canBuildInImpassable: false conditions: - - !type:NoUnstackableInTile + - !type:NoUnstackableInTile + alternativePrototypes: + - GasVolumePump + - GasVolumePumpAlt1 + - GasVolumePumpAlt2 + +- type: construction + id: GasVolumePumpAlt1 + hide: true + graph: GasBinary + startNode: start + targetNode: volumepumpAlt1 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasVolumePump + - GasVolumePumpAlt1 + - GasVolumePumpAlt2 + +- type: construction + id: GasVolumePumpAlt2 + hide: true + graph: GasBinary + startNode: start + targetNode: volumepumpAlt2 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasVolumePump + - GasVolumePumpAlt1 + - GasVolumePumpAlt2 - type: construction id: GasPassiveGate @@ -567,10 +673,46 @@ startNode: start targetNode: passivegate category: construction-category-utilities - placementMode: SnapgridCenter + placementMode: AlignAtmosPipeLayers canBuildInImpassable: false conditions: - - !type:NoUnstackableInTile + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPassiveGate + - GasPassiveGateAlt1 + - GasPassiveGateAlt2 + +- type: construction + id: GasPassiveGateAlt1 + hide: true + graph: GasBinary + startNode: start + targetNode: passivegateAlt1 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPassiveGate + - GasPassiveGateAlt1 + - GasPassiveGateAlt2 + +- type: construction + id: GasPassiveGateAlt2 + hide: true + graph: GasBinary + startNode: start + targetNode: passivegateAlt2 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPassiveGate + - GasPassiveGateAlt1 + - GasPassiveGateAlt2 - type: construction id: GasPressureRegulator @@ -578,10 +720,46 @@ startNode: start targetNode: pressureregulator category: construction-category-utilities - placementMode: SnapgridCenter + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPressureRegulator + - GasPressureRegulatorAlt1 + - GasPressureRegulatorAlt2 + +- type: construction + id: GasPressureRegulatorAlt1 + hide: true + graph: GasBinary + startNode: start + targetNode: pressureregulatorAlt1 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers canBuildInImpassable: false conditions: - !type:NoUnstackableInTile + alternativePrototypes: + - GasPressureRegulator + - GasPressureRegulatorAlt1 + - GasPressureRegulatorAlt2 + +- type: construction + id: GasPressureRegulatorAlt2 + hide: true + graph: GasBinary + startNode: start + targetNode: pressureregulatorAlt2 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasPressureRegulator + - GasPressureRegulatorAlt1 + - GasPressureRegulatorAlt2 - type: construction id: GasValve @@ -589,10 +767,46 @@ startNode: start targetNode: valve category: construction-category-utilities - placementMode: SnapgridCenter + placementMode: AlignAtmosPipeLayers canBuildInImpassable: false conditions: - !type:NoUnstackableInTile + alternativePrototypes: + - GasValve + - GasValveAlt1 + - GasValveAlt2 + +- type: construction + id: GasValveAlt1 + hide: true + graph: GasBinary + startNode: start + targetNode: valveAlt1 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasValve + - GasValveAlt1 + - GasValveAlt2 + +- type: construction + id: GasValveAlt2 + hide: true + graph: GasBinary + startNode: start + targetNode: valveAlt2 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - GasValve + - GasValveAlt1 + - GasValveAlt2 - type: construction id: SignalControlledValve @@ -600,10 +814,44 @@ startNode: start targetNode: signalvalve category: construction-category-utilities - placementMode: SnapgridCenter + placementMode: AlignAtmosPipeLayers canBuildInImpassable: false conditions: - !type:NoUnstackableInTile + alternativePrototypes: + - SignalControlledValve + - SignalControlledValveAlt1 + - SignalControlledValveAlt2 + +- type: construction + id: SignalControlledValveAlt1 + graph: GasBinary + startNode: start + targetNode: signalvalveAlt1 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - SignalControlledValve + - SignalControlledValveAlt1 + - SignalControlledValveAlt2 + +- type: construction + id: SignalControlledValveAlt2 + graph: GasBinary + startNode: start + targetNode: signalvalveAlt2 + category: construction-category-utilities + placementMode: AlignAtmosPipeLayers + canBuildInImpassable: false + conditions: + - !type:NoUnstackableInTile + alternativePrototypes: + - SignalControlledValve + - SignalControlledValveAlt1 + - SignalControlledValveAlt2 - type: construction id: GasPort -- 2.52.0