Upgradeable machines. (#2675)
* Start work on upgradeable machines. * Upgradeable machines work * Component requirements for upgradeable machines * Better container handling * Remember to not push submodule updates in your PRs, kids! * Refresh parts after building a machine. * NetSync false * Address some reviews, fix some bugs * Nullable stackhelpers dependencies * Use container helper method to delete all entities in containers * Nullable string in AddContainer * Better examine for machine frame and construction in general * Machine breakage * Nullable node * nullable GraphPrototype * Re-save saltern for autolathe parts * Fix SaveLoadSave
This commit is contained in:
committed by
GitHub
parent
ba2bdec13b
commit
c3341132c5
@@ -19,8 +19,8 @@
|
||||
- type: latheRecipe
|
||||
id: Welder
|
||||
icon:
|
||||
sprite: Objects/Tools/welder.rsi
|
||||
state: welder
|
||||
sprite: /Textures/Objects/Tools/welder.rsi
|
||||
state: icon
|
||||
result: Welder
|
||||
completetime: 500
|
||||
materials:
|
||||
|
||||
@@ -49,6 +49,18 @@
|
||||
- state: autolathe_unlit
|
||||
shader: unshaded
|
||||
map: ["enum.AutolatheVisualLayers.BaseUnlit"]
|
||||
- state: autolathe_panel
|
||||
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
|
||||
- type: Construction
|
||||
graph: machine
|
||||
node: machine
|
||||
- type: BreakableConstruction
|
||||
node: machineFrame
|
||||
- type: Machine
|
||||
board: AutolatheMachineCircuitboard
|
||||
- type: Wires
|
||||
BoardName: "Autolathe"
|
||||
LayoutId: Autolathe
|
||||
- type: LatheDatabase
|
||||
static: true
|
||||
recipes:
|
||||
@@ -68,6 +80,7 @@
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: AutolatheVisualizer
|
||||
- type: WiresVisualizer
|
||||
|
||||
- type: entity
|
||||
parent: BaseLathe
|
||||
@@ -85,7 +98,12 @@
|
||||
map: ["enum.ProtolatheVisualLayers.BaseUnlit"]
|
||||
- state: protolathe
|
||||
map: ["enum.ProtolatheVisualLayers.AnimationLayer"]
|
||||
- state: protolathe_panel
|
||||
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
|
||||
- type: ResearchClient
|
||||
- type: Wires
|
||||
BoardName: "Protolathe"
|
||||
LayoutId: Protolathe
|
||||
- type: TechnologyDatabase
|
||||
- type: ProtolatheDatabase
|
||||
protolatherecipes:
|
||||
@@ -112,3 +130,4 @@
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ProtolatheVisualizer
|
||||
- type: WiresVisualizer
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
- type: entity
|
||||
id: UnfinishedMachineFrame
|
||||
name: machine frame
|
||||
suffix: Unfinished
|
||||
placement:
|
||||
mode: SnapgridCenter
|
||||
components:
|
||||
- type: Physics
|
||||
mass: 25
|
||||
anchored: true
|
||||
shapes:
|
||||
- !type:PhysShapeAabb
|
||||
bounds: "-0.5,-0.25,0.5,0.25"
|
||||
layer:
|
||||
- Impassable
|
||||
- MobImpassable
|
||||
- VaultImpassable
|
||||
- Opaque
|
||||
mask:
|
||||
- Impassable
|
||||
- MobImpassable
|
||||
- VaultImpassable
|
||||
- type: Clickable
|
||||
- type: InteractionOutline
|
||||
- type: Anchorable
|
||||
- type: Rotatable
|
||||
- type: Pullable
|
||||
- type: Construction
|
||||
graph: machine
|
||||
node: missingWires
|
||||
- type: BreakableConstruction
|
||||
node: start
|
||||
- type: Sprite
|
||||
sprite: "Constructible/Misc/stock_parts.rsi"
|
||||
state: "box_0"
|
||||
|
||||
- type: entity
|
||||
id: MachineFrame
|
||||
name: machine frame
|
||||
suffix: Ready
|
||||
placement:
|
||||
mode: SnapgridCenter
|
||||
components:
|
||||
- type: Physics
|
||||
mass: 25
|
||||
anchored: true
|
||||
shapes:
|
||||
- !type:PhysShapeAabb
|
||||
bounds: "-0.5,-0.25,0.5,0.25"
|
||||
layer:
|
||||
- Impassable
|
||||
- MobImpassable
|
||||
- VaultImpassable
|
||||
- Opaque
|
||||
mask:
|
||||
- Impassable
|
||||
- MobImpassable
|
||||
- VaultImpassable
|
||||
- type: Clickable
|
||||
- type: InteractionOutline
|
||||
- type: Anchorable
|
||||
- type: Rotatable
|
||||
- type: Pullable
|
||||
- type: Construction
|
||||
graph: machine
|
||||
node: machineFrame
|
||||
- type: BreakableConstruction
|
||||
node: missingWires
|
||||
- type: MachineFrame
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
sprite: "Constructible/Misc/stock_parts.rsi"
|
||||
state: "box_1"
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: MachineFrameVisualizer
|
||||
@@ -0,0 +1,324 @@
|
||||
- type: entity
|
||||
id: BaseStockPart
|
||||
name: stock part
|
||||
parent: BaseItem
|
||||
description: What?
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
sprite: Constructible/Misc/stock_parts.rsi
|
||||
- type: MachinePart
|
||||
rating: 1
|
||||
|
||||
# Rating 1
|
||||
|
||||
- type: entity
|
||||
id: CapacitorStockPart
|
||||
name: capacitor
|
||||
parent: BaseStockPart
|
||||
description: A basic capacitor used in the construction of a variety of devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: capacitor
|
||||
- type: MachinePart
|
||||
part: Capacitor
|
||||
rating: 1
|
||||
|
||||
- type: entity
|
||||
id: ScanningModuleStockPart
|
||||
name: scanning module
|
||||
parent: BaseStockPart
|
||||
description: A compact, high resolution scanning module used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: scan_module
|
||||
- type: MachinePart
|
||||
part: ScanningModule
|
||||
rating: 1
|
||||
|
||||
- type: entity
|
||||
id: MicroManipulatorStockPart
|
||||
name: micro-manipulator
|
||||
parent: BaseStockPart
|
||||
description: A tiny little manipulator used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: micro_mani
|
||||
- type: MachinePart
|
||||
part: Manipulator
|
||||
rating: 1
|
||||
|
||||
- type: entity
|
||||
id: MicroLaserStockPart
|
||||
name: micro-laser
|
||||
parent: BaseStockPart
|
||||
description: A tiny laser used in certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: micro_laser
|
||||
- type: MachinePart
|
||||
part: Laser
|
||||
rating: 1
|
||||
|
||||
- type: entity
|
||||
id: MatterBinStockPart
|
||||
name: matter bin
|
||||
parent: BaseStockPart
|
||||
description: A container designed to hold compressed matter awaiting reconstruction.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: matter_bin
|
||||
- type: MachinePart
|
||||
part: MatterBin
|
||||
rating: 1
|
||||
|
||||
# Rating 2
|
||||
|
||||
- type: entity
|
||||
id: AdvancedCapacitorStockPart
|
||||
name: advanced capacitor
|
||||
parent: CapacitorStockPart
|
||||
description: An advanced capacitor used in the construction of a variety of devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: adv_capacitor
|
||||
- type: MachinePart
|
||||
rating: 2
|
||||
|
||||
- type: entity
|
||||
id: AdvancedScanningModuleStockPart
|
||||
name: advanced scanning module
|
||||
parent: ScanningModuleStockPart
|
||||
description: A compact, high resolution scanning module used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: adv_scan_module
|
||||
- type: MachinePart
|
||||
rating: 2
|
||||
|
||||
- type: entity
|
||||
id: NanoManipulatorStockPart
|
||||
name: nano-manipulator
|
||||
parent: MicroManipulatorStockPart
|
||||
description: A tiny little manipulator used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: nano_mani
|
||||
- type: MachinePart
|
||||
rating: 2
|
||||
|
||||
- type: entity
|
||||
id: HighPowerMicroLaserStockPart
|
||||
name: high-power micro-laser
|
||||
parent: MicroLaserStockPart
|
||||
description: A tiny laser used in certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: high_micro_laser
|
||||
- type: MachinePart
|
||||
rating: 2
|
||||
|
||||
- type: entity
|
||||
id: AdvancedMatterBinStockPart
|
||||
name: advanced matter bin
|
||||
parent: MatterBinStockPart
|
||||
description: A container designed to hold compressed matter awaiting reconstruction.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: advanced_matter_bin
|
||||
- type: MachinePart
|
||||
rating: 2
|
||||
|
||||
# Rating 3
|
||||
|
||||
- type: entity
|
||||
id: SuperCapacitorStockPart
|
||||
name: super capacitor
|
||||
parent: CapacitorStockPart
|
||||
description: A super-high capacity capacitor used in the construction of a variety of devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: super_capacitor
|
||||
- type: MachinePart
|
||||
rating: 3
|
||||
|
||||
- type: entity
|
||||
id: PhasicScanningModuleStockPart
|
||||
name: phasic scanning module
|
||||
parent: ScanningModuleStockPart
|
||||
description: A compact, high resolution phasic scanning module used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: super_scan_module
|
||||
- type: MachinePart
|
||||
rating: 3
|
||||
|
||||
- type: entity
|
||||
id: PicoManipulatorStockPart
|
||||
name: pico-manipulator
|
||||
parent: MicroManipulatorStockPart
|
||||
description: A tiny little manipulator used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: pico_mani
|
||||
- type: MachinePart
|
||||
rating: 3
|
||||
|
||||
- type: entity
|
||||
id: UltraHighPowerMicroLaserStockPart
|
||||
name: ultra-high-power micro-laser
|
||||
parent: MicroLaserStockPart
|
||||
description: A tiny laser used in certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: ultra_high_micro_laser
|
||||
- type: MachinePart
|
||||
rating: 3
|
||||
|
||||
- type: entity
|
||||
id: SuperMatterBinStockPart
|
||||
name: super matter bin
|
||||
parent: MatterBinStockPart
|
||||
description: A container designed to hold compressed matter awaiting reconstruction.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: super_matter_bin
|
||||
- type: MachinePart
|
||||
rating: 3
|
||||
|
||||
# Rating 4
|
||||
|
||||
- type: entity
|
||||
id: QuadraticCapacitorStockPart
|
||||
name: quadratic capacitor
|
||||
parent: CapacitorStockPart
|
||||
description: A quadratic capacity capacitor used in the construction of a variety of devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: quadratic_capacitor
|
||||
- type: MachinePart
|
||||
rating: 4
|
||||
|
||||
- type: entity
|
||||
id: TriphasicScanningModuleStockPart
|
||||
name: triphasic scanning module
|
||||
parent: ScanningModuleStockPart
|
||||
description: A compact, ultra resolution triphasic scanning module used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: triphasic_scan_module
|
||||
- type: MachinePart
|
||||
rating: 4
|
||||
|
||||
- type: entity
|
||||
id: FemtoManipulatorStockPart
|
||||
name: femto-manipulator
|
||||
parent: MicroManipulatorStockPart
|
||||
description: A tiny little manipulator used in the construction of certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: femto_mani
|
||||
- type: MachinePart
|
||||
rating: 4
|
||||
|
||||
- type: entity
|
||||
id: QuadUltraMicroLaserStockPart
|
||||
name: quad-ultra micro-laser
|
||||
parent: MicroLaserStockPart
|
||||
description: A tiny laser used in certain devices.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: quadultra_micro_laser
|
||||
- type: MachinePart
|
||||
rating: 4
|
||||
|
||||
- type: entity
|
||||
id: BluespaceMatterBinStockPart
|
||||
name: bluespace matter bin
|
||||
parent: MatterBinStockPart
|
||||
description: A container designed to hold compressed matter in bluespace awaiting reconstruction.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: bluespace_matter_bin
|
||||
- type: MachinePart
|
||||
rating: 4
|
||||
|
||||
# Subspace stock parts
|
||||
|
||||
- type: entity
|
||||
id: AnsibleSubspaceStockPart
|
||||
name: subspace ansible
|
||||
parent: BaseStockPart
|
||||
description: A compact module capable of sensing extradimensional activity.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: subspace_ansible
|
||||
- type: MachinePart
|
||||
part: Ansible
|
||||
|
||||
- type: entity
|
||||
id: FilterSubspaceStockPart
|
||||
name: hyperwave filter
|
||||
parent: BaseStockPart
|
||||
description: A tiny device capable of filtering and converting super-intense radiowaves.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: hyperwave_filter
|
||||
- type: MachinePart
|
||||
part: Filter
|
||||
|
||||
- type: entity
|
||||
id: AmplifierSubspaceStockPart
|
||||
name: subspace amplifier
|
||||
parent: BaseStockPart
|
||||
description: A compact micro-machine capable of amplifying weak subspace transmissions.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: subspace_amplifier
|
||||
- type: MachinePart
|
||||
part: Amplifier
|
||||
|
||||
- type: entity
|
||||
id: TreatmentSubspaceStockPart
|
||||
name: subspace treatment disk
|
||||
parent: BaseStockPart
|
||||
description: A compact micro-machine capable of stretching out hyper-compressed radio waves.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: treatment_disk
|
||||
- type: MachinePart
|
||||
part: Treatment
|
||||
|
||||
- type: entity
|
||||
id: AnalyzerSubspaceStockPart
|
||||
name: subspace wavelength analyzer
|
||||
parent: BaseStockPart
|
||||
description: A sophisticated analyzer capable of analyzing cryptic subspace wavelengths.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: wavelength_analyzer
|
||||
- type: MachinePart
|
||||
part: Analyzer
|
||||
|
||||
- type: entity
|
||||
id: CrystalSubspaceStockPart
|
||||
name: ansible crystal
|
||||
parent: BaseStockPart
|
||||
description: A crystal made from pure glass used to transmit laser databursts to subspace.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: ansible_crystal
|
||||
- type: MachinePart
|
||||
part: Crystal
|
||||
|
||||
- type: entity
|
||||
id: TransmitterSubspaceStockPart
|
||||
name: subspace transmitter
|
||||
parent: BaseStockPart
|
||||
description: A large piece of equipment used to open a window into the subspace dimension.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: subspace_transmitter
|
||||
- type: MachinePart
|
||||
part: Transmitter
|
||||
@@ -0,0 +1,23 @@
|
||||
- type: entity
|
||||
id: BaseMachineCircuitboard
|
||||
parent: BaseItem
|
||||
name: machine board
|
||||
abstract: true
|
||||
components:
|
||||
- type: MachineBoard
|
||||
- type: Sprite
|
||||
sprite: Constructible/Misc/module.rsi
|
||||
state: id_mod
|
||||
|
||||
- type: entity
|
||||
id: AutolatheMachineCircuitboard
|
||||
parent: BaseMachineCircuitboard
|
||||
name: Autolathe (Machine Board)
|
||||
components:
|
||||
- type: MachineBoard
|
||||
prototype: Autolathe
|
||||
requirements:
|
||||
MatterBin: 3
|
||||
Manipulator: 1
|
||||
materialRequirements:
|
||||
Glass: 1
|
||||
@@ -24,7 +24,7 @@
|
||||
steps:
|
||||
- component: ComputerBoard
|
||||
store: board
|
||||
name: a computer circuit board
|
||||
name: any computer circuit board
|
||||
icon:
|
||||
sprite: "Constructible/Misc/module.rsi"
|
||||
state: "id_mod"
|
||||
@@ -57,8 +57,7 @@
|
||||
conditions:
|
||||
- !type:EntityAnchored { }
|
||||
completed:
|
||||
- !type:EmptyContainer
|
||||
container: board
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:SpriteStateChange
|
||||
state: 0
|
||||
steps:
|
||||
@@ -99,6 +98,10 @@
|
||||
- to: missingWires
|
||||
conditions:
|
||||
- !type:EntityAnchored { }
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: ApcExtensionCableStack1
|
||||
amount: 5
|
||||
steps:
|
||||
- tool: Cutting
|
||||
|
||||
|
||||
89
Resources/Prototypes/Recipes/Construction/Graphs/machine.yml
Normal file
89
Resources/Prototypes/Recipes/Construction/Graphs/machine.yml
Normal file
@@ -0,0 +1,89 @@
|
||||
- type: constructionGraph
|
||||
id: machine
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
actions:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SteelSheet1
|
||||
- !type:DeleteEntity {}
|
||||
edges:
|
||||
- to: missingWires
|
||||
completed:
|
||||
- !type:SetAnchor
|
||||
value: false
|
||||
steps:
|
||||
- material: Metal
|
||||
amount: 5
|
||||
doAfter: 2.5
|
||||
|
||||
- node: missingWires
|
||||
entity: UnfinishedMachineFrame
|
||||
actions:
|
||||
- !type:SpriteStateChange
|
||||
state: "box_0"
|
||||
- !type:EmptyAllContainers {}
|
||||
edges:
|
||||
- to: machineFrame
|
||||
conditions:
|
||||
- !type:EntityAnchored {}
|
||||
steps:
|
||||
- material: Cable
|
||||
- to: start
|
||||
conditions:
|
||||
- !type:EntityAnchored
|
||||
anchored: false
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SteelSheet1
|
||||
amount: 5
|
||||
- !type:DeleteEntity {}
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 2
|
||||
|
||||
- node: machineFrame
|
||||
entity: MachineFrame
|
||||
actions:
|
||||
- !type:MachineFrameRegenerateProgress {}
|
||||
edges:
|
||||
- to: machine
|
||||
conditions:
|
||||
- !type:EntityAnchored {}
|
||||
- !type:MachineFrameComplete {}
|
||||
completed:
|
||||
# Yes, this is snowflaked so we don't have to make an unique graph per machine. You're welcome.
|
||||
- !type:BuildMachine {}
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 0.5
|
||||
|
||||
- to: missingWires
|
||||
conditions:
|
||||
- !type:EntityAnchored {}
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: ApcExtensionCableStack1
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 2
|
||||
completed:
|
||||
- !type:EmptyAllContainers {}
|
||||
- !type:MachineFrameRegenerateProgress {}
|
||||
- tool: Cutting
|
||||
doAfter: 0.25
|
||||
|
||||
- node: machine
|
||||
actions:
|
||||
- !type:AddContainer
|
||||
container: machine_parts
|
||||
- !type:AddContainer
|
||||
container: machine_board
|
||||
edges:
|
||||
- to: machineFrame
|
||||
conditions:
|
||||
- !type:EntityAnchored {}
|
||||
- !type:WirePanel {}
|
||||
steps:
|
||||
- tool: Prying
|
||||
doAfter: 0.25
|
||||
@@ -10,3 +10,16 @@
|
||||
icon:
|
||||
sprite: Constructible/Misc/stock_parts.rsi
|
||||
state: 4
|
||||
|
||||
- type: construction
|
||||
name: machine frame
|
||||
id: MachineFrame
|
||||
graph: machine
|
||||
startNode: start
|
||||
targetNode: machine
|
||||
category: Machines
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
icon:
|
||||
sprite: Constructible/Misc/stock_parts.rsi
|
||||
state: "box_0"
|
||||
|
||||
Reference in New Issue
Block a user