Adds construction for wooden barricades, solar panels + solar trackers (#3472)

* Added barricades and textures for hidden doors

Constructable barricades and textures for square wall hidden doors

* Added solar assembly & tracker. Restructured power construction

Added solar tracker and assembly construction and textures. (Trackers don't work at present).
Moved APC and solar item sot construction/power.yml
Moved power based items to "Utility" in construction menu.

* Localisation changes

Added flammable to barricades.
Added localisation to barricades and all solar entities.

* Removed hidden doors

Removed .rsi for hidden doors as wasn't able to get non airlock doors working.

* Adds solar crate to cargo

* Fixed tests

* Removed glass from solar crate

Removing glass from solars crate until stacks can be specified.

* Added deconstruction to solar graphs

* Added deconstruction to barricade

And fixed nodes for solars.

* Fixed materials

* Fixed meta indent and solartracker type

* Fixed materials, physics & naming

Added new physics fixtures to barricade and solars
Changed solar tracker board to electronics.
Changed material ID for destruction of wooden barricades to new ID.

* Changed back to prototype from component step

Component step does not work for electronics only machine boards.

* Localisation fixes 1

* yaml linter fixes

Removed obsolete code

* Update meta.json

* Fix trailing comma

Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
This commit is contained in:
Peptide90
2021-03-12 21:11:06 +00:00
committed by GitHub
parent 0c4cf1e4d4
commit 0a34c4b8a9
19 changed files with 395 additions and 17 deletions

View File

@@ -0,0 +1,5 @@
### Barricades entity prototype data.
ent-barricade = wooden barricade
.desc = The poor man's barrier, not nearly as strong or cool looking.

View File

@@ -0,0 +1,15 @@
### Power entity prototype data.
###Solars
ent-solar-tracker = solar tracker
.desc = A solar tracker. Can be wired to a solar array and computer to track solar positions.
ent-solar-assembly = solar assembly
.desc = A solar assembly. Anchor to a wire to start building a solar panel.
ent-solar-panel = solar panel
.desc = Generates power from sunlight. Usually used to power replacements for sunlight. Fragile.
ent-solar-tracker-electronics = solar tracker electronics
.desc = An electronics board for making a solar tracker.
ent-solar-assembly-part = solar assembly parts
.desc = Used in the construction of solar assemblies for solar panels and trackers.

View File

@@ -93,3 +93,15 @@
cost: 10000 cost: 10000
category: Engineering category: Engineering
group: market group: market
- type: cargoProduct
name: "solar assembly parts"
id: cargo.enginessolar
description: "Parts for constructing solar panels and trackers."
icon:
sprite: Objects/Power/solar_parts.rsi
state: solar_assembly_parts
product: CrateEngineeringSolar
cost: 500
category: Engineering
group: market

View File

@@ -126,3 +126,13 @@
contents: contents:
- name: DebugGenerator - name: DebugGenerator
amount: 1 amount: 1
- type: entity
id: CrateEngineeringSolar
name: solar assembly crate
parent: CrateEngineering
components:
- type: StorageFill
contents:
- name: SolarAssemblyPart
amount: 6

View File

@@ -37,6 +37,7 @@
- cargo.engineameshielding - cargo.engineameshielding
- cargo.engineamejar - cargo.engineamejar
- cargo.engineamecontrol - cargo.engineamecontrol
- cargo.enginessolar
- cargo.funplushies - cargo.funplushies
- cargo.funartsupplies - cargo.funartsupplies
- cargo.funinstruments - cargo.funinstruments

View File

@@ -1,6 +1,6 @@
- type: entity - type: entity
id: BaseGenerator id: BaseGenerator
description: A high efficiency thermoelectric generator. description: "A high efficiency thermoelectric generator."
name: Base Generator name: Base Generator
abstract: true abstract: true
placement: placement:
@@ -45,7 +45,7 @@
- type: entity - type: entity
id: BaseSmes id: BaseSmes
description: A high-capacity superconducting magnetic energy storage (SMES) unit. description: "A high-capacity superconducting magnetic energy storage (SMES) unit."
name: Base Smes name: Base Smes
abstract: true abstract: true
placement: placement:
@@ -104,7 +104,7 @@
- type: entity - type: entity
id: BaseSubstation id: BaseSubstation
description: Reduces the voltage of electricity put into it. description: "Reduces the voltage of electricity put into it."
name: Base Substation name: Base Substation
abstract: true abstract: true
placement: placement:
@@ -164,7 +164,7 @@
- type: entity - type: entity
id: BaseApc id: BaseApc
description: A control terminal for the area's electrical systems. description: "A control terminal for the area's electrical systems."
name: Base Apc name: Base Apc
abstract: true abstract: true
placement: placement:
@@ -222,16 +222,14 @@
- type: entity - type: entity
id: SolarPanel id: SolarPanel
name: solar panel
description: Generates power from sunlight. Usually used to power replacements for sunlight. Fragile.
placement: placement:
mode: SnapgridCenter mode: SnapgridCenter
components: components:
- type: Clickable - type: Clickable
- type: InteractionOutline - type: InteractionOutline
- type: Physics - type: Physics
mass: 25 mass: 100
bodyType: Dynamic bodyType: Static
fixtures: fixtures:
- shape: - shape:
!type:PhysShapeAabb {} !type:PhysShapeAabb {}
@@ -273,3 +271,90 @@
- type: ClientEntitySpawner - type: ClientEntitySpawner
prototypes: prototypes:
- HVDummyWire - HVDummyWire
- type: Construction
graph: solarpanel
node: solarpanel
- type: entity
id: SolarAssembly
name: solar assembly
description: "A solar assembly. Anchor to a wire to start building a solar panel."
placement:
mode: SnapgridCenter
components:
- type: Clickable
- type: InteractionOutline
- type: Physics
mass: 75
bodyType: Static
fixtures:
- shape:
!type:PhysShapeAabb {}
mask:
- VaultImpassable
layer:
- VaultImpassable
- type: Sprite
sprite: Constructible/Power/solar_panel.rsi
state: solar_assembly
- type: SnapGrid
offset: Center
- type: Damageable
resistances: metallicResistances
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:DoActsBehavior
acts: ["Breakage"]
- type: Anchorable
- type: Pullable
- type: Construction
graph: solarpanel
node: solarassembly
- type: entity
id: SolarTracker
placement:
mode: SnapgridCenter
components:
- type: Clickable
- type: InteractionOutline
- type: Physics
mass: 100
bodyType: Static
fixtures:
- shape:
!type:PhysShapeAabb {}
mask:
- Impassable
- MobImpassable
- VaultImpassable
- SmallImpassable
layer:
- Opaque
- MobImpassable
- VaultImpassable
- SmallImpassable
- type: Sprite
sprite: Constructible/Power/solar_panel.rsi
state: solar_tracker
- type: SnapGrid
offset: Center
- type: Damageable
resistances: metallicResistances
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:DoActsBehavior
acts: ["Breakage"]
- type: Anchorable
- type: Pullable
- type: Construction
graph: solarpanel
node: solartracker

View File

@@ -0,0 +1,57 @@
- type: entity
id: Barricade
components:
- type: Clickable
- type: InteractionOutline
- type: Construction
graph: barricade
node: barricadewooden
- type: Sprite
sprite: Constructible/Structures/barricades.rsi
state: barricadewooden
- type: Physics
mass: 75
bodyType: Static
fixtures:
- shape:
!type:PhysShapeAabb
bounds: "-0.5, -0.5, 0.5, 0.5"
layer:
- Opaque
- Impassable
- MobImpassable
- VaultImpassable
- SmallImpassable
- type: Tag
tags:
- ExplosivePassable
- type: Damageable
resistances: metallicResistances
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 50
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
MaterialWoodPlank1:
min: 3
max: 3
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: AtmosExposed
- type: Flammable
fireSpread: true
- type: Appearance
visuals:
- type: FireVisualizer
sprite: Effects/fire.rsi
normalState: 1
Sprite:
drawdepth: Overlays
- type: SnapGrid
offset: Edge
placement:
snap:
- Wall

View File

@@ -0,0 +1,17 @@
- type: entity
id: SolarAssemblyPart
parent: BaseItem
components:
- type: Item
size: 10
- type: Sprite
sprite: Objects/Power/solar_parts.rsi
state: solar_assembly_parts
- type: entity
id: SolarTrackerElectronics
parent: BaseItem
components:
- type: Sprite
sprite: Constructible/Misc/module.rsi
state: generic

View File

@@ -0,0 +1,27 @@
- type: constructionGraph
id: barricade
start: start
graph:
- node: start
edges:
- to: barricadewooden
steps:
- material: WoodPlank
amount: 5
doAfter: 3
- node: barricadewooden
entity: Barricade
edges:
- to: start
completed:
- !type:SpawnPrototype
prototype: MaterialWoodPlank1
amount: 4 #returns 1 less as one breaks
- !type:DeleteEntity {}
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Prying
doAfter: 5

View File

@@ -0,0 +1,88 @@
- type: constructionGraph
id: solarpanel
start: start
graph:
- node: start
edges:
- to: solarassembly
steps:
- prototype: SolarAssemblyPart
name: Solar Assembly Parts
icon:
sprite: Objects/Power/solar_parts.rsi
state: solar_assembly_parts
doAfter: 1
- node: solarassembly
entity: SolarAssembly
edges:
- to: start
completed:
- !type:SpawnPrototype
prototype: SolarAssemblyPart
amount: 1
- !type:DeleteEntity {}
steps:
- tool: Screwing
doAfter: 2
- to: solarpanel
conditions:
- !type:EntityAnchored
value: true
steps:
- material: Glass
amount: 2
doAfter: 0.5
completed:
- !type:SnapToGrid
offset: Center
- to: solartracker
conditions:
- !type:EntityAnchored
value: true
steps:
- prototype: SolarTrackerElectronics
name: Solar Tracker Electronics
icon:
sprite: Constructible/Misc/module.rsi
state: id_mod
doAfter: 1
- material: Glass
amount: 2
doAfter: 2
completed:
- !type:SnapToGrid
offset: Center
- node: solarpanel
entity: SolarPanel
edges:
- to: solarassembly
completed:
- !type:SpawnPrototype
prototype: SheetGlass1
amount: 2
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Prying
doAfter: 0.5
- node: solartracker
entity: SolarTracker
edges:
- to: solarassembly
completed:
- !type:SpawnPrototype
prototype: SheetGlass1
amount: 2
- !type:SpawnPrototype
prototype: SolarTrackerElectronics
amount: 1
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Prying
doAfter: 1

View File

@@ -0,0 +1,31 @@
- type: construction
name: APC
id: apc
graph: apc
startNode: start
targetNode: apc
category: Utility
description: "Area Power Controller (APC). Controls power. In an area."
icon:
sprite: Constructible/Power/apc.rsi
state: apc0
objectType: Structure
placementMode: AlignWallProper
canBuildInImpassable: true
- type: construction
name: Solar Assembly
id: SolarPanel
graph: solarpanel
startNode: start
targetNode: solarpanel
category: Utility
description: "Can be turned into a solar panel or solar tracker."
icon:
sprite: Constructible/Power/solar_panel.rsi
state: solar_assembly
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
conditions:
- !type:TileNotBlocked {}

View File

@@ -198,16 +198,18 @@
canBuildInImpassable: false canBuildInImpassable: false
- type: construction - type: construction
name: APC name: Wooden Barricade
id: apc id: Barricade
graph: apc graph: barricade
startNode: start startNode: start
targetNode: apc targetNode: barricadewooden
category: Structures category: Structures
description: Area Power Controller (APC). Controls power. In an area. description: An improvised barricade made out of wooden planks.
icon: icon:
sprite: Constructible/Power/apc.rsi sprite: Constructible/Structures/barricades.rsi
state: apc0 state: barricadewooden
objectType: Structure objectType: Structure
placementMode: SnapgridCenter placementMode: SnapgridCenter
canBuildInImpassable: true canBuildInImpassable: false
conditions:
- !type:TileNotBlocked {}

View File

@@ -1 +1 @@
{"version":1,"license":"CC-BY-SA-3.0","copyright":"Taken from https://github.com/discordia-space/CEV-Eris/blob/d1e0161af146835f4fb79d21a6200caa9cc842d0/icons/obj/power.dmi and modified.","size":{"x":32,"y":32},"states":[{"name":"normal","select":[],"flags":{},"directions":8},{"name":"broken","select":[],"flags":{},"directions":1}]} {"version":1,"license":"CC-BY-SA-3.0","copyright":"Taken from https://github.com/discordia-space/CEV-Eris/blob/d1e0161af146835f4fb79d21a6200caa9cc842d0/icons/obj/power.dmi and modified.","size":{"x":32,"y":32},"states":[{"name":"normal","select":[],"flags":{},"directions":8},{"name":"broken","select":[],"flags":{},"directions":1},{"name": "solar_assembly"},{"name": "solar_tracker"}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

View File

@@ -0,0 +1,14 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/e09101cb4be860ff02e035b18bef93a08b9c204c",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "barricadewooden"
}
]
}

View File

@@ -0,0 +1,14 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://tgstation13.org/wiki/Guide_to_construction#Solar_Panels_and_Trackers and modified.",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "solar_assembly_parts"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B