From 5d29c8aa616f1b0e6ce946cc018f6a4891c7767b Mon Sep 17 00:00:00 2001 From: Peptide90 <78795277+Peptide90@users.noreply.github.com> Date: Tue, 15 Mar 2022 01:27:39 +0000 Subject: [PATCH] New generators and wallmount substation (Shuttle power PR) (#6795) --- .../Catalog/Research/technologies.yml | 22 ++ .../Circuitboards/Machine/production.yml | 23 ++ .../Objects/Devices/Electronics/apc.yml | 13 - .../Devices/Electronics/power_electronics.yml | 59 ++++ .../Objects/Devices/Electronics/solar.yml | 12 - .../Structures/Power/Generation/generator.yml | 49 ---- .../Power/Generation/generators.yml | 266 ++++++++++++++++++ .../Entities/Structures/Power/smes.yml | 12 + .../Entities/Structures/Power/substation.yml | 137 ++++++++- .../Graphs/utilities/wallmount_generator.yml | 102 +++++++ .../Graphs/utilities/wallmount_substation.yml | 72 +++++ .../Recipes/Construction/utilities.yml | 44 +++ .../Prototypes/Recipes/Lathes/electronics.yml | 118 +++++--- .../portable_generator.rsi/meta.json | 100 +++++++ .../portable_generator.rsi/portgen0_0.png | Bin 0 -> 522 bytes .../portable_generator.rsi/portgen0_1.png | Bin 0 -> 4960 bytes .../portable_generator.rsi/portgen1_0.png | Bin 0 -> 522 bytes .../portable_generator.rsi/portgen1_1.png | Bin 0 -> 5194 bytes .../portable_generator.rsi/portgen2_0.png | Bin 0 -> 515 bytes .../portable_generator.rsi/portgen2_1.png | Bin 0 -> 4690 bytes .../Power/Generation/rtg.rsi/meta.json | 39 +++ .../Power/Generation/rtg.rsi/rtg.png | Bin 0 -> 421 bytes .../Power/Generation/rtg.rsi/rtg_damaged.png | Bin 0 -> 620 bytes .../Power/Generation/rtg.rsi/rtg_glow.png | Bin 0 -> 629 bytes .../Power/Generation/rtg.rsi/rtg_open.png | Bin 0 -> 486 bytes .../wallmount_generator.rsi/meta.json | 35 +++ .../Generation/wallmount_generator.rsi/on.png | Bin 0 -> 231 bytes .../wallmount_generator.rsi/panel.png | Bin 0 -> 303 bytes .../wallmount_generator.rsi/warning.png | Bin 0 -> 200 bytes .../Structures/Power/apc.rsi/apcframe.png | Bin 0 -> 436 bytes .../Structures/Power/substation.rsi/meta.json | 5 +- .../Power/substation.rsi/substation_wall.png | Bin 0 -> 716 bytes 32 files changed, 994 insertions(+), 114 deletions(-) delete mode 100644 Resources/Prototypes/Entities/Objects/Devices/Electronics/apc.yml create mode 100644 Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Devices/Electronics/solar.yml delete mode 100644 Resources/Prototypes/Entities/Structures/Power/Generation/generator.yml create mode 100644 Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml create mode 100644 Resources/Textures/Structures/Power/Generation/portable_generator.rsi/meta.json create mode 100644 Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen0_0.png create mode 100644 Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen0_1.png create mode 100644 Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen1_0.png create mode 100644 Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen1_1.png create mode 100644 Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen2_0.png create mode 100644 Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen2_1.png create mode 100644 Resources/Textures/Structures/Power/Generation/rtg.rsi/meta.json create mode 100644 Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg.png create mode 100644 Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg_damaged.png create mode 100644 Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg_glow.png create mode 100644 Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg_open.png create mode 100644 Resources/Textures/Structures/Power/Generation/wallmount_generator.rsi/meta.json create mode 100644 Resources/Textures/Structures/Power/Generation/wallmount_generator.rsi/on.png create mode 100644 Resources/Textures/Structures/Power/Generation/wallmount_generator.rsi/panel.png create mode 100644 Resources/Textures/Structures/Power/Generation/wallmount_generator.rsi/warning.png create mode 100644 Resources/Textures/Structures/Power/apc.rsi/apcframe.png create mode 100644 Resources/Textures/Structures/Power/substation.rsi/substation_wall.png diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index d0f1ab78d3..61813e15ac 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -319,8 +319,30 @@ - APCElectronics - SMESMachineCircuitboard - SubstationMachineCircuitboard + - WallmountSubstationElectronics + - WallmountGeneratorElectronics + - WallmountGeneratorAPUElectronics - HydroponicsTrayMachineCircuitboard - SolarControlComputerCircuitboard + - GeneratorPlasmaMachineCircuitboard + - GeneratorUraniumMachineCircuitboard + +- type: technology + name: "compact power technology" + id: CompactPowerTechnology + description: Power, but smaller. + icon: + sprite: Structures/Power/apc.rsi + state: apc0 + requiredPoints: 5000 + requiredTechnologies: + - ElectromagneticTheory + unlockedRecipes: + - WallmountSubstationElectronics + - WallmountGeneratorElectronics + - WallmountGeneratorAPUElectronics + - GeneratorPlasmaMachineCircuitboard + - GeneratorUraniumMachineCircuitboard - type: technology name: "applied musicology" diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index e73b5aeb14..db6a599946 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -271,6 +271,29 @@ DefaultPrototype: SaxophoneInstrument ExamineName: Woodwind Instrument +- type: entity + id: GeneratorPlasmaMachineCircuitboard + parent: BaseMachineCircuitboard + name: generator (plasma) machine board + components: + - type: MachineBoard + prototype: GeneratorPlasma + requirements: + Capacitor: 1 + materialRequirements: + CableHV: 5 + +- type: entity + id: GeneratorUraniumMachineCircuitboard + parent: BaseMachineCircuitboard + name: generator (uranium) machine board + components: + - type: MachineBoard + prototype: GeneratorUranium + requirements: + Capacitor: 2 + materialRequirements: + CableHV: 10 - type: entity id: ReagentGrinderMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/apc.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/apc.yml deleted file mode 100644 index 54d0db499e..0000000000 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/apc.yml +++ /dev/null @@ -1,13 +0,0 @@ -- type: entity - id: APCElectronics - parent: BaseItem - name: APC electronics - description: An electronics board used in APC construction. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: charger_APC - netsync: false - - type: Tag - tags: - - DroneUsable diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml new file mode 100644 index 0000000000..398b5dc05b --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml @@ -0,0 +1,59 @@ +# APC +- type: entity + id: APCElectronics + parent: BaseItem + name: APC electronics + description: Circuit used in APC construction. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: charger_APC + netsync: false + +# Wallmount Substation +- type: entity + id: WallmountSubstationElectronics + parent: BaseItem + name: wallmount substation electronics + description: Circuit used to construct a wallmount substation. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: charger_APC + netsync: false + +# Wallmount Generator +- type: entity + id: WallmountGeneratorElectronics + parent: BaseItem + name: wallmount generator electronics + description: Circuit used to construct a wallmount generator. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: charger_APC + netsync: false + +# APU +- type: entity + id: WallmountGeneratorAPUElectronics + parent: BaseItem + name: wallmount APU electronics + description: Circuit used to construct a wallmount APU. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: charger_APC + netsync: false + +# Solar Tracker Electronics +- type: entity + parent: BaseItem + id: SolarTrackerElectronics + name: solar tracker electronics + description: Advanced circuit board used to detect differences in pressure, temperature and gas concentrations between the two sides of the door. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: generic + netsync: false diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/solar.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/solar.yml deleted file mode 100644 index db96a801d6..0000000000 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/solar.yml +++ /dev/null @@ -1,12 +0,0 @@ -- type: entity - parent: BaseItem - id: SolarTrackerElectronics - name: solar tracker electronics - description: An electronics board used in solar tracker devices - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: generic - - type: Tag - tags: - - DroneUsable diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/generator.yml deleted file mode 100644 index 8f50a91d9b..0000000000 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/generator.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: entity - abstract: true - id: BaseGenerator - description: A high efficiency thermoelectric generator. - name: generator - placement: - mode: SnapgridCenter - components: - #- type: AmbientSound - # range: 5 - # sound: - # path: /Audio/Ambience/Objects/engine_hum.ogg - - type: Clickable - - type: InteractionOutline - - type: Physics - bodyType: Static - - type: Fixtures - fixtures: - - shape: - !type:PhysShapeAabb - bounds: "-0.4,-0.5,0.4,0.3" - mass: 25 - mask: - - Impassable - - MobImpassable - - VaultImpassable - - SmallImpassable - layer: - - Opaque - - MobImpassable - - VaultImpassable - - SmallImpassable - - type: Transform - anchored: true - - type: Sprite - sprite: Structures/Power/power.rsi - state: generator - - type: NodeContainer - examinable: true - nodes: - output: - !type:CableDeviceNode - nodeGroupID: HVPower - - type: PowerSupplier - supplyRate: 3000 - supplyRampRate: 500 - supplyRampTolerance: 500 - - type: Anchorable - - type: Pullable diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml new file mode 100644 index 0000000000..379449aee6 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml @@ -0,0 +1,266 @@ +# Base Generator + +- type: entity + abstract: true + id: BaseGenerator + description: A high efficiency thermoelectric generator. + name: generator + placement: + mode: SnapgridCenter + components: + - type: AmbientSound + range: 5 + sound: + path: /Audio/Ambience/Objects/engine_hum.ogg + - type: Clickable + - type: InteractionOutline + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.5,0.4,0.3" + mass: 25 + mask: + - Impassable + - MobImpassable + - VaultImpassable + - SmallImpassable + layer: + - Opaque + - MobImpassable + - VaultImpassable + - SmallImpassable + - type: Transform + anchored: true + - type: Sprite + sprite: Structures/Power/power.rsi + state: generator + - type: NodeContainer + examinable: true + nodes: + output: + !type:CableDeviceNode + nodeGroupID: HVPower + - type: PowerSupplier + supplyRate: 3000 + supplyRampRate: 500 + supplyRampTolerance: 500 + - type: Anchorable + - type: Pullable + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:ExplodeBehavior + - type: Explosive + devastationRange: 1 + heavyImpactRange: 3 + lightImpactRange: 5 + flashRange: 6 + +# Base Wallmount Generator + +- type: entity + abstract: true + id: BaseGeneratorWallmount + parent: BaseGenerator + name: wallmount generator + description: A high efficiency thermoelectric generator stuffed in a wall cabinet. + placement: + mode: SnapgridCenter + components: + - type: AmbientOnPowered + - type: AmbientSound + volume: -15 + range: 2 + sound: + path: /Audio/Ambience/Objects/hdd_buzz.ogg + - type: PointLight + netsync: false + radius: 1.5 + energy: 1.6 + color: "#3db83b" + castShadows: false + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.3,0.25" + layer: [ Passable ] + - type: Transform + anchored: true + - type: Sprite + drawdepth: WallMountedItems + netsync: false + sprite: Structures/Power/Generation/wallmount_generator.rsi + layers: + - state: panel + - state: on + shader: unshaded +# - type: Appearance +# visuals: +# - type: ApcVisualizer + - type: NodeContainer + examinable: true + nodes: + output: + !type:CableDeviceNode + nodeGroupID: HVPower + - type: PowerSupplier + supplyRate: 3000 + supplyRampRate: 500 + supplyRampTolerance: 500 + +# Construction Frames + +- type: entity + abstract: true + id: BaseGeneratorWallmountFrame + name: wallmount generator frame + description: A construction frame for a wallmount generator. + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Physics + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.3,0.25" + layer: [ Passable ] + - type: Transform + anchored: true + - type: Sprite + drawdepth: WallMountedItems + netsync: false + sprite: Structures/Power/Generation/wallmount_generator.rsi + layers: + - state: panel + - type: Construction + graph: WallmountGenerator + node: frame + +# Generators in use + +- type: entity + parent: BaseGenerator + id: GeneratorBasic + suffix: Basic, 3kW + components: + - type: PowerSupplier + supplyRate: 3000 + +- type: entity + parent: BaseGenerator + id: GeneratorPlasma + suffix: Plasma, 5kW + components: + - type: PowerSupplier + supplyRate: 5000 # 260 sec / sheet + - type: Sprite + sprite: Structures/Power/Generation/portable_generator.rsi + state: portgen0_1 + - type: Construction + graph: Machine + node: machine + - type: Wires + BoardName: "GeneratorPlasma" + LayoutId: GeneratorPlasma + - type: Machine + board: GeneratorPlasmaMachineCircuitboard + +- type: entity + parent: BaseGenerator + id: GeneratorUranium + suffix: Uranium, 15kW + components: + - type: PowerSupplier + supplyRate: 15000 # 85 sec / sheet + - type: Sprite + sprite: Structures/Power/Generation/portable_generator.rsi + state: portgen1_1 + - type: Construction + graph: Machine + node: machine + - type: Wires + BoardName: "GeneratorUranium" + LayoutId: GeneratorUranium + - type: Machine + board: GeneratorUraniumMachineCircuitboard + + +- type: entity + parent: BaseGeneratorWallmount + id: GeneratorWallmountBasic + suffix: Basic, 3kW + components: + - type: PowerSupplier + supplyRate: 3000 + - type: Construction + graph: WallmountGenerator + node: generator + +- type: entity + parent: BaseGeneratorWallmount + id: GeneratorWallmountAPU + name: shuttle APU + description: An auxiliary power unit for a shuttle - 6kW. + suffix: APU, 6kW + components: + - type: PowerSupplier + supplyRate: 6000 + - type: Construction + graph: WallmountGenerator + node: APU + +# RTG - no fuel requirement + +- type: entity + parent: BaseGenerator + id: GeneratorRTG + name: RTG + description: A Radioisotope Thermoelectric Generator for long term power. + suffix: 10kW + components: + - type: PowerSupplier + supplyRate: 10000 # supposed to be low power at no fuel cost to power derelicts + - type: Sprite + sprite: Structures/Power/Generation/rtg.rsi + state: rtg + - type: AmbientSound + range: 5 + sound: + path: /Audio/Ambience/Objects/buzzing.ogg +# TODO: need radioactive fallout when destroyed + +- type: entity + parent: GeneratorRTG + id: GeneratorRTGDamaged + name: damaged RTG + description: A Radioisotope Thermoelectric Generator for long term power. This one has damaged shielding. + suffix: 10kW + components: + - type: PowerSupplier + supplyRate: 10000 + - type: Sprite + netsync: false + sprite: Structures/Power/Generation/rtg.rsi + layers: + - state: rtg_damaged + - state: rtg_glow + - type: RadiationPulse # ideally only when opened. + range: 2 + decay: false + minPulseLifespan: 1 + maxPulseLifespan: 1 diff --git a/Resources/Prototypes/Entities/Structures/Power/smes.yml b/Resources/Prototypes/Entities/Structures/Power/smes.yml index a5bbabda7f..e18ed75833 100644 --- a/Resources/Prototypes/Entities/Structures/Power/smes.yml +++ b/Resources/Prototypes/Entities/Structures/Power/smes.yml @@ -1,3 +1,4 @@ +# Base SMES - type: entity abstract: true id: BaseSMES @@ -58,3 +59,14 @@ LayoutId: SMES - type: Machine board: SMESMachineCircuitboard + +# SMES' in use + +- type: entity + parent: BaseSMES + id: SMESBasic + suffix: Basic, 10MW + components: + - type: Battery + maxCharge: 10000000 + startingCharge: 10000000 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Power/substation.yml b/Resources/Prototypes/Entities/Structures/Power/substation.yml index 970aa1be1f..6158fa8404 100644 --- a/Resources/Prototypes/Entities/Structures/Power/substation.yml +++ b/Resources/Prototypes/Entities/Structures/Power/substation.yml @@ -1,3 +1,4 @@ +# Base substation - type: entity abstract: true id: BaseSubstation @@ -9,7 +10,6 @@ components: - type: Sprite # TODO: add sprite for maintenance panel open sprite: Structures/Power/substation.rsi - netsync: false layers: - state: substation - state: screen @@ -17,7 +17,7 @@ - state: full shader: unshaded - type: Battery - maxCharge: 1000 + maxCharge: 4000000 startingCharge: 0 - type: ExaminableBattery - type: PointLight @@ -58,7 +58,7 @@ sound: path: /Audio/Effects/metalbreak.ogg - !type:ExplodeBehavior - - !type:SpawnEntitiesBehavior #in future should also emit a cloud of hot gas + - !type:SpawnEntitiesBehavior # in future should also emit a cloud of hot gas spawn: MachineFrameDestroyed: min: 1 @@ -73,3 +73,134 @@ LayoutId: Substation - type: Machine board: SubstationMachineCircuitboard + +# Compact Wall Substation Base +- type: entity + id: BaseSubstationWall + abstract: true + name: wallmount substation + description: A substation designed for compact shuttles and spaces. + placement: + mode: SnapgridCenter + components: + - type: AmbientOnPowered + - type: AmbientSound + volume: -15 + range: 2 + sound: + path: /Audio/Ambience/Objects/hdd_buzz.ogg + - type: PointLight + netsync: false + radius: 1.5 + energy: 1.6 + color: "#3db83b" + castShadows: false + - type: Clickable + - type: AccessReader + access: [["Engineering"]] + - type: InteractionOutline + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.3,0.25" + layer: [ Passable ] + - type: Transform + anchored: true + - type: Sprite # TODO: add sprite for maintenance panel open + drawdepth: WallMountedItems + netsync: false + sprite: Structures/Power/substation.rsi + layers: + - state: substation_wall + - state: screen + shader: unshaded + - type: Battery + maxCharge: 2000000 + startingCharge: 0 + - type: ExaminableBattery + - type: NodeContainer + examinable: true + nodes: + input: + !type:CableDeviceNode + nodeGroupID: HVPower + output: + !type:CableDeviceNode + nodeGroupID: MVPower + - type: BatteryCharger + voltage: High + - type: BatteryDischarger + voltage: Medium + - type: PowerNetworkBattery + maxSupply: 150000 + maxChargeRate: 5000 + supplyRampTolerance: 5000 + supplyRampRate: 1000 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + +# Substations in use + +- type: entity + parent: BaseSubstation + id: SubstationBasic + suffix: Basic, 4MW + components: + - type: Battery + maxCharge: 4000000 + startingCharge: 4000000 + +- type: entity + parent: BaseSubstationWall + id: SubstationWallBasic + suffix: Basic, 2MW + components: + - type: Battery + maxCharge: 2000000 + startingCharge: 2000000 + - type: Construction + graph: WallmountSubstation + node: substation + +# Construction Frame +- type: entity + id: BaseSubstationWallFrame + abstract: true + name: wallmount substation frame + description: A substation frame for construction + placement: + mode: SnapgridCenter + components: + - type: Clickable + - type: InteractionOutline + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.3,0.25" + layer: [ Passable ] + - type: Transform + anchored: true + - type: Sprite + drawdepth: WallMountedItems + netsync: false + sprite: Structures/Power/substation.rsi + layers: + - state: substation_wall + - type: Construction + graph: WallmountSubstation + node: frame \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml new file mode 100644 index 0000000000..fffe36e6cf --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml @@ -0,0 +1,102 @@ +- type: constructionGraph + id: WallmountGenerator + start: start + graph: + - node: start + edges: + - to: frame + steps: + - material: Steel + amount: 5 + doAfter: 2 + + - node: frame + entity: BaseGeneratorWallmountFrame + edges: + - to: start + steps: + - tool: Welding + doAfter: 4 + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 5 + - to: parts + steps: + - material: Cable + amount: 5 + doAfter: 2 + - tool: Screwing + doAfter: 2 + + - node: parts + edges: + - to: electronics + steps: + - prototype: WallmountGeneratorElectronics + store: board + name: "wallmount generator circuit board" + icon: + sprite: "Objects/Misc/module.rsi" + state: "charger_APC" + doAfter: 1 + - to: electronicsAPU + steps: + - prototype: WallmountGeneratorAPUElectronics + store: board + name: "wallmount APU circuit board" + icon: + sprite: "Objects/Misc/module.rsi" + state: "charger_APC" + doAfter: 1 + - to: frame + completed: + - !type:SpawnPrototype + prototype: CableHVStack1 + amount: 5 + steps: + - tool: Cutting + doAfter: 1 + + + - node: electronics + edges: + - to: generator + steps: + - tool: Screwing + doAfter: 2 + + - node: electronicsAPU + edges: + - to: APU + steps: + - tool: Screwing + doAfter: 2 + + - node: generator + entity: GeneratorWallmountBasic + edges: + - to: parts + conditions: + - !type:WirePanel {} + - !type:ContainerNotEmpty + container: board + completed: + - !type:EmptyAllContainers {} + steps: + - tool: Prying + doAfter: 1 + + - node: APU + entity: GeneratorWallmountAPU + edges: + - to: parts + conditions: + - !type:WirePanel {} + - !type:ContainerNotEmpty + container: board + completed: + - !type:EmptyAllContainers {} + steps: + - tool: Prying + doAfter: 1 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml new file mode 100644 index 0000000000..7cb29a025f --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml @@ -0,0 +1,72 @@ +- type: constructionGraph + id: WallmountSubstation + start: start + graph: + - node: start + edges: + - to: frame + steps: + - material: Steel + amount: 5 + doAfter: 2 + + - node: frame + entity: BaseSubstationWallFrame + edges: + - to: start + steps: + - tool: Welding + doAfter: 4 + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 5 + - to: parts + steps: + - material: Cable + amount: 5 + doAfter: 2 + - tool: Screwing + doAfter: 2 + + - node: parts + edges: + - to: electronics + steps: + - prototype: WallmountSubstationElectronics + store: board + name: "wallmount substation circuit board" + icon: + sprite: "Objects/Misc/module.rsi" + state: "charger_APC" + doAfter: 1 + - to: frame + completed: + - !type:SpawnPrototype + prototype: CableHVStack1 + amount: 5 + steps: + - tool: Cutting + doAfter: 1 + + + - node: electronics + edges: + - to: substation + steps: + - tool: Screwing + doAfter: 2 + + - node: substation + entity: BaseSubstationWall + edges: + - to: parts + conditions: + - !type:WirePanel {} + - !type:ContainerNotEmpty + container: board + completed: + - !type:EmptyAllContainers {} + steps: + - tool: Prying + doAfter: 1 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index ea49d81b8b..c3c9c4bd6c 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -46,6 +46,50 @@ placementMode: SnapgridCenter canBuildInImpassable: false +- type: construction + name: wallmount substation + id: WallmountSubstation + graph: WallmountSubstation + startNode: start + targetNode: substation + category: Utilities + description: "A wallmount substation for compact spaces. Make sure to place cable under before building the wall." + icon: + sprite: Structures/Power/substation.rsi + state: substation_wall + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: true + +- type: construction + name: wallmount generator + id: WallmountGenerator + graph: WallmountGenerator + startNode: start + targetNode: generator + category: Utilities + description: "A wallmount generator for compact spaces. Make sure to place cable under before building the wall." + icon: + sprite: Structures/Power/Generation/wallmount_generator.rsi + state: panel + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: true + +- type: construction + name: wallmount APU + id: WallmountGeneratorAPU + graph: WallmountGenerator + startNode: start + targetNode: APU + category: Utilities + description: "A wallmount APU for compact shuttles. Make sure to place cable under before building the wall." + icon: + sprite: Structures/Power/Generation/wallmount_generator.rsi + state: panel + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: true # DISPOSALS - type: construction diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 2e984d5bb0..6931efb895 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -16,15 +16,6 @@ Steel: 50 Plastic: 50 -- type: latheRecipe - id: APCElectronics - icon: Objects/Misc/module.rsi/charger_APC.png - result: APCElectronics - completetime: 500 - materials: - Steel: 50 - Plastic: 50 - - type: latheRecipe id: AirAlarmElectronics icon: Objects/Misc/module.rsi/airalarm_electronics.png @@ -43,24 +34,6 @@ Steel: 50 Plastic: 50 -- type: latheRecipe - id: SubstationMachineCircuitboard - icon: Objects/Misc/module.rsi/id_mod.png - result: SubstationMachineCircuitboard - completetime: 1000 - materials: - Steel: 50 - Glass: 450 - -- type: latheRecipe - id: SMESMachineCircuitboard - icon: Objects/Misc/module.rsi/power_mod.png - result: SMESMachineCircuitboard - completetime: 1000 - materials: - Steel: 100 - Glass: 900 - - type: latheRecipe id: CloningPodMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png @@ -109,15 +82,6 @@ Glass: 900 Gold: 100 -- type: latheRecipe - id: SolarControlComputerCircuitboard - icon: Objects/Misc/module.rsi/id_mod.png - result: SolarControlComputerCircuitboard - completetime: 1000 - materials: - Steel: 100 - Glass: 900 - - type: latheRecipe id: HydroponicsTrayMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png @@ -220,3 +184,85 @@ materials: Steel: 100 Glass: 900 + +# Power +- type: latheRecipe + id: APCElectronics + icon: Objects/Misc/module.rsi/charger_APC.png + result: APCElectronics + completetime: 500 + materials: + Steel: 50 + Glass: 100 + +- type: latheRecipe + id: SubstationMachineCircuitboard + icon: Objects/Misc/module.rsi/id_mod.png + result: SubstationMachineCircuitboard + completetime: 1000 + materials: + Steel: 50 + Glass: 450 + +- type: latheRecipe + id: WallmountSubstationElectronics + icon: Objects/Misc/module.rsi/id_mod.png + result: WallmountSubstationElectronics + completetime: 1000 + materials: + Steel: 50 + Glass: 350 + +- type: latheRecipe + id: SMESMachineCircuitboard + icon: Objects/Misc/module.rsi/power_mod.png + result: SMESMachineCircuitboard + completetime: 1000 + materials: + Steel: 100 + Glass: 900 + +- type: latheRecipe + id: GeneratorPlasmaMachineCircuitboard + icon: Objects/Misc/module.rsi/id_mod.png + result: GeneratorPlasmaMachineCircuitboard + completetime: 1000 + materials: + Steel: 50 + Glass: 350 + +- type: latheRecipe + id: GeneratorUraniumMachineCircuitboard + icon: Objects/Misc/module.rsi/id_mod.png + result: GeneratorUraniumMachineCircuitboard + completetime: 1000 + materials: + Steel: 50 + Glass: 350 + +- type: latheRecipe + id: WallmountGeneratorElectronics + icon: Objects/Misc/module.rsi/id_mod.png + result: WallmountGeneratorElectronics + completetime: 1000 + materials: + Steel: 50 + Glass: 350 + +- type: latheRecipe + id: WallmountGeneratorAPUElectronics + icon: Objects/Misc/module.rsi/id_mod.png + result: WallmountGeneratorAPUElectronics + completetime: 1000 + materials: + Steel: 50 + Glass: 350 + +- type: latheRecipe + id: SolarControlComputerCircuitboard + icon: Objects/Misc/module.rsi/id_mod.png + result: SolarControlComputerCircuitboard + completetime: 1000 + materials: + Steel: 100 + Glass: 900 diff --git a/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/meta.json new file mode 100644 index 0000000000..9c455fee5f --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/meta.json @@ -0,0 +1,100 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/99ed48ce8d3ba7e2d26d68519e05eae277c94685, animations modified by Peptide90", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "portgen0_0" + }, + { + "name": "portgen1_0" + }, + { + "name": "portgen2_0" + }, + { + "name": "portgen0_1", + "delays": [ + [ + 0.05, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.05 + ] + ] + }, + { + "name": "portgen1_1", + "delays": [ + [ + 0.05, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.05 + ] + ] + }, + { + "name": "portgen2_1", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen0_0.png b/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen0_0.png new file mode 100644 index 0000000000000000000000000000000000000000..356fb7e63c10b0e7b632c5b1459c2b7b2bf49e85 GIT binary patch literal 522 zcmV+l0`>igP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo` zEh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBSAit<2JvGlD-av_q zGbOXA7$|7S#hF%=n41b^7p0bG=B0qy$_lQ2E?|2AKCd4Wa@;HC00032NklEMSz9q5uE@ M07*qoM6N<$f}aG(SO5S3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen0_1.png b/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen0_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a857bf86a734974de7b3b7a3bbe3262fa09ab755 GIT binary patch literal 4960 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 M07*qoM6N<$f;f4__y7O^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen1_1.png b/Resources/Textures/Structures/Power/Generation/portable_generator.rsi/portgen1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..79674618e7319392dfcf0291042ad78b77c5cc93 GIT binary patch literal 5194 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 P00000NkvXXu0mjfX%w*_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg_damaged.png b/Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg_damaged.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2c6efe9fceb2bfac1277bf706b7a0381c34593 GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0vp^2|(4_ALR=3V zIG~}Sp{c0}6tK6q_ww>mR8;i!^|iCJQ&LizHEY)LHCx)-+Y1VcX3k#`85z~k(2!Ho zpscJM78Vw9$lK|mzVv?v`y0AlHyX2V#3%m`1R}Hl^5>G*$pB51EeY}qX84a4w6(P@ zoV;pg*-{puyJmU1IEF;DzMY}xGKtJ8%2%$u3OWAMD$&z+xjdiE-5p{(z%gz%#}~`M}c+lRiFD7pOmRB-Z#!J7*fhw?pbbeoxqD=N%wF zaqqIi1sdHSrp7f?CWja&z9WeoV53IwjL{qm40EByrxudx%#JbU(=SB zpL_nb5X|CeFh{a2np;g>zn_5Xo4>gJm| zB-r17|FD7iuUxCHp8(k5?7wX1D99-MYcE@HfANX9;77mhIj;YA-0_e9(D!PQZTA;% u04jd_T_a|{d*W}~Q;l`~?lr&vn%SFiIPxzF-yIH&P6kg`KbLh*2~7YM&LzJ9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg_glow.png b/Resources/Textures/Structures/Power/Generation/rtg.rsi/rtg_glow.png new file mode 100644 index 0000000000000000000000000000000000000000..e82fad5acbebb3072e3a633bef0e4d83fe6baeda GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^2|(mR8;i!^|iCJQ&LizHEY)LHCx)-+Y1VcX3k#`85z~k(2!Ho zpscJM78Vw9$lK|mzVv?v`y0AlHyX2V#3%m`1R}Hl@-63U63>TtoVL7DxNJAjXoZp> zzhH*{SV3D`+rr7KLQDG3)hfRNx^cRvi(^Pc>)YuMii@p>*LJoO$AuIAawYt!UdjJc zn_>QZmIy|Gs7SmAIQKY{CT+w%?hoN3FdlT^B*LZlyUu6P+*pqGyd?<5J=6AT*9E$C8Fc7bOMtblLV)N z_C*gblSx9oJ}Flmj`q9$dmQ~`<8qyu|Kqo({L^PR^10sB;or&1laGGxSE#f3FV662 z@P)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t zGfE(w;*!LYR3KBSs3cuCzaTYFiHkEOv#1y-WXQ#tR+N~V3SlcNxca$(O$Gp!VH-Do zBLV~f007QOL_t(IjlGiD4ul{KMOhRbm$8*vf!z>He&6GF{L6H5xcd(hVu0TDV% cT-rbA17=PSf>Ms%8vpPx#=}AOER9J=Wmc0#wFc3z+L|)(;R-m@T6s*7`Ou$A=0Fpau3KpQb1(1@8{3y2M zy8uCoUx$4`+p$%*8$J#IqQN4{o099210Eh_83?lN@^?e`R^C}Sl zfN>lj60bPt;GC1TlTCn#uq+F@t_#*M^L_#=bzOVco2C)>5?{gAhy``wOhJZTt3JmZhqXT0nc?*8+K-132jfm>F4?9V2kc2^=c$zZ00} z`H=~LXD-mb6XHA&N~?bg#{Qvz#lZ+0WDqGBEr( uTCwBpPx$Zb?KzR9J=Wl)p;?VHn3hMT3Z87eQc$6>kJC9+A{gkW)dUOARgl18p^gThb5& z{t^8XIXTqO5P^#j9C2a?!j(uCZZ?F6zs@^Pp@#RfJP$n2`#fKshxY-AL?ZcPrrZ)X zb`M(PHhI3kbL=zYrNCZd3n5hh3XW1OU9XVKUG@oa74Y?L0if$851nQaLM4+q?~A0< zrvqPjnn2mC5{(2Y6bb++ibAbc>++MyBxSRT5GsK{U|Ol z%_qr70tRt)@&-VC|Iyd`kynsP9ov2)c*Di*5-Vp-!uf6Ld;`#EG$tz`8d(HB(KM~= zH|QLqX+XX+51P%ULk*t-0ECFS=ID9_fNb{KG1iOgC0vhfj(rJVN>7e`Tm``IIbMw{ zJB|^cSbQKJ-?44ktnz9aL(edbuma1nhQv4x670zpA6H5O@tNL29EY}P!4Y+QCXNU#-bECLpy zjjzIgpsir5AP9;eV&O0F)ks+HBtk@Vmf8DpX3k~i4EU1;!*rTrU>03Fm56I|^9x$b zGeN>M(MFeUIM(>oRFZ$k$1OfpZ=$N#|NH(N!R3r&fUi|}#IS5vcuY9C=30ukgu9Kr zzASto9I@qq!k0=<*ZE0tuFh|Y?U~dB_*G9W_k+_v*vQ+a@St#?StuFb=TSEaWs0-Y zQhQ|f;*cUi9E~(3Rw&>Sm0Fa{{`SRczDZWaW60m4j4h5FdGSU>ElJmm)U4f7hn`nGg1`fu7aRUn$!YXm^h!hP+lS5#IK60S z=^Z%Rgz&wk+j>n3$nfXSXw?r&cm3s;V*EzkLfYT~U@uu>-IsLSihxfBP22mg95) zF_tT;s!_!OC}|+KESrIW0e=WkBiL~|00szIf?Q+XeejHO2O!sI#N>iKyAM!gDKcPW yU|?WSQ?nwfMT867x^;}~7SSje1*2dTi~<0Mwsqd0iZ;Cf0000Eq literal 0 HcmV?d00001