Borg type switching. (#32586)

* Borg type switching.

This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything.

New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis.

These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI.

The modules that each borg type starts with:

* Generic: tools
* Engineering: advanced tools, construction, RCD, cable
* Salvage: Grappling gun, appraisal, mining
* Janitor: cleaning, light replacer
* Medical: treatment
* Service: music, service, clowning

Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5.

Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire.

The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs.

Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those.

The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future.

There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code.

* Fix sandbox failure due to collection expression.

* Module tweak

Fix salvage borg modules still having research/lathe recipes

Engie borg has regular tool module, not advanced.

* Fix inventory system breakage

* Fix migrations

Some things were missing

* Guidebook rewordings & review

* MinWidth on confirm selection button
This commit is contained in:
Pieter-Jan Briers
2024-11-14 18:08:35 +01:00
committed by GitHub
parent 669bc148f9
commit 1bebb3390c
49 changed files with 1337 additions and 1534 deletions

View File

@@ -69,6 +69,9 @@
type: BorgBoundUserInterface
enum.StrippingUiKey.Key:
type: StrippableBoundUserInterface
# Only used for NT borgs that can switch type, defined here to avoid copy-pasting the rest of this component.
enum.BorgSwitchableTypeUiKey.SelectBorgType:
type: BorgSelectTypeUserInterface
- type: ActivatableUI
key: enum.BorgUiKey.Key
- type: SiliconLawBound
@@ -157,6 +160,7 @@
collection: FootstepBorg
- type: Construction
graph: Cyborg
node: cyborg
containers:
- part-container
- cell_slot
@@ -285,6 +289,9 @@
- type: AccessReader
access: [["Command"], ["Research"]]
- type: ShowJobIcons
- type: InteractionPopup
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: entity
id: BaseBorgChassisSyndicate

View File

@@ -1,23 +1,22 @@
- type: entity
id: BorgChassisGeneric
id: BorgChassisSelectable
parent: BaseBorgChassisNT
components:
- type: Sprite
layers:
- state: robot
map: ["enum.BorgVisualLayers.Body", "movement"]
- state: robot_e_r
map: ["enum.BorgVisualLayers.Light"]
shader: unshaded
visible: false
- state: robot_l
shader: unshaded
map: ["light"]
map: ["light","enum.BorgVisualLayers.LightStatus"]
visible: false
- type: BorgChassis
maxModules: 6
moduleWhitelist:
tags:
- BorgModuleGeneric
# Default borg can take no modules until selected type.
maxModules: 0
hasMindState: robot_e
noMindState: robot_e_r
- type: BorgTransponder
@@ -25,308 +24,62 @@
sprite: Mobs/Silicon/chassis.rsi
state: robot
name: cyborg
- type: Construction
node: cyborg
- type: Speech
speechVerb: Robotic
- type: InteractionPopup
interactSuccessString: petting-success-generic-cyborg
interactFailureString: petting-failure-generic-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: BorgSwitchableType
inherentRadioChannels:
- Common
- Binary
- type: entity
id: BorgChassisGeneric
parent: BorgChassisSelectable
name: generic cyborg
suffix: type picked
components:
- type: BorgSwitchableType
selectedBorgType: generic
- type: entity
id: BorgChassisMining
parent: BaseBorgChassisNT
parent: BorgChassisSelectable
name: salvage cyborg
components:
- type: Sprite
layers:
- state: miner
map: ["movement"]
- state: miner_e_r
map: ["enum.BorgVisualLayers.Light"]
shader: unshaded
visible: false
- state: miner_l
shader: unshaded
map: ["light"]
visible: false
- type: SpriteMovement
movementLayers:
movement:
state: miner_moving
noMovementLayers:
movement:
state: miner
- type: BorgChassis
maxModules: 4
moduleWhitelist:
tags:
- BorgModuleGeneric
- BorgModuleCargo
hasMindState: miner_e
noMindState: miner_e_r
- type: BorgTransponder
sprite:
sprite: Mobs/Silicon/chassis.rsi
state: miner
name: salvage cyborg
- type: Construction
node: mining
- type: IntrinsicRadioTransmitter
channels:
- Supply
- Binary
- Common
- Science
- type: ActiveRadio
channels:
- Supply
- Binary
- Common
- Science
- type: AccessReader
access: [["Cargo"], ["Salvage"], ["Command"], ["Research"]]
- type: Inventory
templateId: borgTall
- type: InteractionPopup
interactSuccessString: petting-success-salvage-cyborg
interactFailureString: petting-failure-salvage-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: BorgSwitchableType
selectedBorgType: mining
- type: entity
id: BorgChassisEngineer
parent: BaseBorgChassisNT
parent: BorgChassisSelectable
name: engineer cyborg
components:
- type: Sprite
layers:
- state: engineer
- state: engineer_e_r
map: ["enum.BorgVisualLayers.Light"]
shader: unshaded
visible: false
- state: engineer_l
shader: unshaded
map: ["light"]
visible: false
- type: BorgChassis
maxModules: 4
moduleWhitelist:
tags:
- BorgModuleGeneric
- BorgModuleEngineering
hasMindState: engineer_e
noMindState: engineer_e_r
- type: BorgTransponder
sprite:
sprite: Mobs/Silicon/chassis.rsi
state: engineer
name: engineer cyborg
- type: Construction
node: engineer
- type: IntrinsicRadioTransmitter
channels:
- Engineering
- Binary
- Common
- Science
- type: ActiveRadio
channels:
- Engineering
- Binary
- Common
- Science
- type: AccessReader
access: [["Engineering"], ["Command"], ["Research"]]
- type: Inventory
templateId: borgShort
- type: InteractionPopup
interactSuccessString: petting-success-engineer-cyborg
interactFailureString: petting-failure-engineer-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: BorgSwitchableType
selectedBorgType: engineering
- type: entity
id: BorgChassisJanitor
parent: BaseBorgChassisNT
parent: BorgChassisSelectable
name: janitor cyborg
components:
- type: Sprite
layers:
- state: janitor
map: ["movement"]
- state: janitor_e_r
map: ["enum.BorgVisualLayers.Light"]
shader: unshaded
visible: false
- state: janitor_l
shader: unshaded
map: ["light"]
visible: false
- type: SpriteMovement
movementLayers:
movement:
state: janitor_moving
noMovementLayers:
movement:
state: janitor
- type: BorgChassis
maxModules: 4
moduleWhitelist:
tags:
- BorgModuleGeneric
- BorgModuleJanitor
hasMindState: janitor_e
noMindState: janitor_e_r
- type: BorgTransponder
sprite:
sprite: Mobs/Silicon/chassis.rsi
state: janitor
name: janitor cyborg
- type: Construction
node: janitor
- type: IntrinsicRadioTransmitter
channels:
- Service
- Binary
- Common
- Science
- type: ActiveRadio
channels:
- Service
- Binary
- Common
- Science
- type: AccessReader
access: [["Service"], ["Command"], ["Research"]]
- type: Inventory
templateId: borgShort
- type: InteractionPopup
interactSuccessString: petting-success-janitor-cyborg
interactFailureString: petting-failure-janitor-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: BorgSwitchableType
selectedBorgType: janitor
- type: entity
id: BorgChassisMedical
parent: [BaseBorgChassisNT, ShowMedicalIcons]
parent: BorgChassisSelectable
name: medical cyborg
components:
- type: Sprite
layers:
- state: medical
map: ["movement"]
- state: medical_e_r
map: ["enum.BorgVisualLayers.Light"]
shader: unshaded
visible: false
- state: medical_l
shader: unshaded
map: ["light"]
visible: false
- type: SpriteMovement
movementLayers:
movement:
state: medical_moving
noMovementLayers:
movement:
state: medical
- type: BorgChassis
maxModules: 4
moduleWhitelist:
tags:
- BorgModuleGeneric
- BorgModuleMedical
hasMindState: medical_e
noMindState: medical_e_r
- type: BorgTransponder
sprite:
sprite: Mobs/Silicon/chassis.rsi
state: medical
name: medical cyborg
- type: Construction
node: medical
- type: IntrinsicRadioTransmitter
channels:
- Medical
- Binary
- Common
- Science
- type: ActiveRadio
channels:
- Medical
- Binary
- Common
- Science
- type: AccessReader
access: [["Medical"], ["Command"], ["Research"]]
- type: Inventory
templateId: borgDutch
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepHoverBorg
- type: SolutionScanner
- type: InteractionPopup
interactSuccessString: petting-success-medical-cyborg
interactFailureString: petting-failure-medical-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: BorgSwitchableType
selectedBorgType: medical
- type: entity
id: BorgChassisService
parent: BaseBorgChassisNT
parent: BorgChassisSelectable
name: service cyborg
components:
- type: Sprite
layers:
- state: service
- state: service_e_r
map: ["enum.BorgVisualLayers.Light"]
shader: unshaded
visible: false
- state: service_l
shader: unshaded
map: ["light"]
visible: false
- type: BorgChassis
maxModules: 4
moduleWhitelist:
tags:
- BorgModuleGeneric
- BorgModuleService
hasMindState: service_e
noMindState: service_e_r
- type: BorgTransponder
sprite:
sprite: Mobs/Silicon/chassis.rsi
state: service
name: service cyborg
- type: Construction
node: service
- type: IntrinsicRadioTransmitter
channels:
- Service
- Binary
- Common
- Science
- type: ActiveRadio
channels:
- Service
- Binary
- Common
- Science
- type: AccessReader
access: [["Service"], ["Command"], ["Research"]]
- type: Inventory
templateId: borgTall
- type: InteractionPopup
interactSuccessString: petting-success-service-cyborg
interactFailureString: petting-failure-service-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: BorgSwitchableType
selectedBorgType: service
- type: entity
id: BorgChassisSyndicateAssault
@@ -354,8 +107,6 @@
- BorgModuleSyndicateAssault
hasMindState: synd_sec_e
noMindState: synd_sec
- type: Construction
node: syndicateassault
- type: InteractionPopup
interactSuccessString: petting-success-syndicate-cyborg
interactFailureString: petting-failure-syndicate-cyborg
@@ -388,8 +139,6 @@
- BorgModuleSyndicate
hasMindState: synd_medical_e
noMindState: synd_medical
- type: Construction
node: syndicatemedical
- type: ShowHealthBars
- type: InteractionPopup
interactSuccessString: petting-success-syndicate-cyborg
@@ -429,8 +178,6 @@
- BorgModuleSyndicate
hasMindState: synd_engi_e
noMindState: synd_engi
- type: Construction
node: syndicatesaboteur
- type: ShowHealthBars
damageContainers:
- Inorganic

View File

@@ -429,28 +429,9 @@
map: ["base"]
# Borgs
- type: entity
id: PlayerBorgGeneric
parent: BorgChassisGeneric
suffix: Battery, Tools
components:
- type: ContainerFill
containers:
borg_brain:
- PositronicBrain
borg_module:
- BorgModuleTool
- type: ItemSlots
slots:
cell_slot:
name: power-cell-slot-component-slot-name-default
startingItem: PowerCellMedium
- type: RandomMetadata
nameSegments: [names_borg]
- type: entity
id: PlayerBorgBattery
parent: BorgChassisGeneric
parent: BorgChassisSelectable
suffix: Battery
components:
- type: ContainerFill

View File

@@ -1,503 +0,0 @@
# generic parts
- type: entity
id: LeftArmBorg
parent: BaseBorgArmLeft
components:
- type: Sprite
state: borg_l_arm
- type: Icon
state: borg_l_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgGenericLArm
- type: entity
id: RightArmBorg
parent: BaseBorgArmRight
components:
- type: Sprite
state: borg_r_arm
- type: Icon
state: borg_r_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgGenericRArm
- type: entity
id: LeftLegBorg
parent: BaseBorgLegLeft
components:
- type: Sprite
state: borg_l_leg
- type: Icon
state: borg_l_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgGenericLLeg
- type: entity
id: RightLegBorg
parent: BaseBorgLegRight
components:
- type: Sprite
state: borg_r_leg
- type: Icon
state: borg_r_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgGenericRLeg
- type: entity
id: LightHeadBorg
parent: BaseBorgHead
components:
- type: Sprite
state: borg_head
- type: Icon
state: borg_head
- type: Tag
tags:
- Trash
- BorgHead
- BorgGenericHead
- type: entity
id: TorsoBorg
parent: BaseBorgTorso
components:
- type: Sprite
state: borg_chest
- type: Icon
state: borg_chest
- type: Tag
tags:
- Trash
- BorgGenericTorso
# engineer parts
- type: entity
id: LeftArmBorgEngineer
parent: BaseBorgArmLeft
name: engineer cyborg left arm
components:
- type: Sprite
state: engineer_l_arm
- type: Icon
state: engineer_l_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgEngineerLArm
- type: entity
id: RightArmBorgEngineer
parent: BaseBorgArmRight
name: engineer cyborg right arm
components:
- type: Sprite
state: engineer_r_arm
- type: Icon
state: engineer_r_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgEngineerRArm
- type: entity
id: LeftLegBorgEngineer
parent: BaseBorgLegLeft
name: engineer cyborg left leg
components:
- type: Sprite
state: engineer_l_leg
- type: Icon
state: engineer_l_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgEngineerLLeg
- type: entity
id: RightLegBorgEngineer
parent: BaseBorgLegRight
name: engineer cyborg right leg
components:
- type: Sprite
state: engineer_r_leg
- type: Icon
state: engineer_r_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgEngineerRLeg
- type: entity
id: HeadBorgEngineer
parent: BaseBorgHead
name: engineer cyborg head
components:
- type: Sprite
state: engineer_head
- type: Icon
state: engineer_head
- type: Tag
tags:
- Trash
- BorgHead
- BorgEngineerHead
- type: entity
id: TorsoBorgEngineer
parent: BaseBorgTorso
name: engineer cyborg torso
components:
- type: Sprite
state: engineer_chest
- type: Icon
state: engineer_chest
- type: Tag
tags:
- Trash
- BorgEngineerTorso
# janitor parts
- type: entity
id: LeftLegBorgJanitor
parent: BaseBorgLegLeft
name: janitor cyborg left leg
components:
- type: Sprite
state: janitor_l_leg
- type: Icon
state: janitor_l_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgJanitorLLeg
- type: entity
id: RightLegBorgJanitor
parent: BaseBorgLegRight
name: janitor cyborg right leg
components:
- type: Sprite
state: janitor_r_leg
- type: Icon
state: janitor_r_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgJanitorRLeg
- type: entity
id: HeadBorgJanitor
parent: BaseBorgHead
name: janitor cyborg head
components:
- type: Sprite
state: janitor_head
- type: Icon
state: janitor_head
- type: Tag
tags:
- Trash
- BorgHead
- BorgJanitorHead
- type: entity
id: TorsoBorgJanitor
parent: BaseBorgTorso
name: janitor cyborg torso
components:
- type: Sprite
state: janitor_chest
- type: Icon
state: janitor_chest
- type: Tag
tags:
- Trash
- BorgJanitorTorso
# medical parts
- type: entity
id: LeftArmBorgMedical
parent: BaseBorgArmLeft
name: medical cyborg left arm
components:
- type: Sprite
state: medical_l_arm
- type: Icon
state: medical_l_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgMedicalLArm
- type: entity
id: RightArmBorgMedical
parent: BaseBorgArmRight
name: medical cyborg right arm
components:
- type: Sprite
state: medical_r_arm
- type: Icon
state: medical_r_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgMedicalRArm
- type: entity
id: LeftLegBorgMedical
parent: BaseBorgLegLeft
name: medical cyborg left leg
components:
- type: Sprite
state: medical_l_leg
- type: Icon
state: medical_l_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgMedicalLLeg
- type: entity
id: RightLegBorgMedical
parent: BaseBorgLegRight
name: medical cyborg right leg
components:
- type: Sprite
state: medical_r_leg
- type: Icon
state: medical_r_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgMedicalRLeg
- type: entity
id: HeadBorgMedical
parent: BaseBorgHead
name: medical cyborg head
components:
- type: Sprite
state: medical_head
- type: Icon
state: medical_head
- type: Tag
tags:
- Trash
- BorgHead
- BorgMedicalHead
- type: entity
id: TorsoBorgMedical
parent: BaseBorgTorso
name: medical cyborg torso
components:
- type: Sprite
state: medical_chest
- type: Icon
state: medical_chest
- type: Tag
tags:
- Trash
- BorgMedicalTorso
# mining parts
- type: entity
id: LeftArmBorgMining
parent: BaseBorgArmLeft
name: mining cyborg left arm
components:
- type: Sprite
state: mining_l_arm
- type: Icon
state: mining_l_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgMiningLArm
- type: entity
id: RightArmBorgMining
parent: BaseBorgArmRight
name: mining cyborg right arm
components:
- type: Sprite
state: mining_r_arm
- type: Icon
state: mining_r_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgMiningRArm
- type: entity
id: LeftLegBorgMining
parent: BaseBorgLegLeft
name: mining cyborg left leg
components:
- type: Sprite
state: mining_l_leg
- type: Icon
state: mining_l_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgMiningLLeg
- type: entity
id: RightLegBorgMining
parent: BaseBorgLegRight
name: mining cyborg right leg
components:
- type: Sprite
state: mining_r_leg
- type: Icon
state: mining_r_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgMiningRLeg
- type: entity
id: HeadBorgMining
parent: BaseBorgHead
name: mining cyborg head
components:
- type: Sprite
state: mining_head
- type: Icon
state: mining_head
- type: Tag
tags:
- Trash
- BorgHead
- BorgMiningHead
- type: entity
id: TorsoBorgMining
parent: BaseBorgTorso
name: mining cyborg torso
components:
- type: Sprite
state: mining_chest
- type: Icon
state: mining_chest
- type: Tag
tags:
- Trash
- BorgMiningTorso
# service parts
- type: entity
id: LeftArmBorgService
parent: BaseBorgArmLeft
name: service cyborg left arm
components:
- type: Sprite
state: service_l_arm
- type: Icon
state: service_l_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgServiceLArm
- type: entity
id: RightArmBorgService
parent: BaseBorgArmRight
name: service cyborg right arm
components:
- type: Sprite
state: service_r_arm
- type: Icon
state: service_r_arm
- type: Tag
tags:
- Trash
- BorgArm
- BorgServiceRArm
- type: entity
id: LeftLegBorgService
parent: BaseBorgLegLeft
name: service cyborg left leg
components:
- type: Sprite
state: service_l_leg
- type: Icon
state: service_l_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgServiceLLeg
- type: entity
id: RightLegBorgService
parent: BaseBorgLegRight
name: service cyborg right leg
components:
- type: Sprite
state: service_r_leg
- type: Icon
state: service_r_leg
- type: Tag
tags:
- Trash
- BorgLeg
- BorgServiceRLeg
- type: entity
id: HeadBorgService
parent: BaseBorgHead
name: service cyborg head
components:
- type: Sprite
state: service_head
- type: Icon
state: service_head
- type: Tag
tags:
- Trash
- BorgHead
- BorgServiceHead
- type: entity
id: TorsoBorgService
parent: BaseBorgTorso
name: service cyborg torso
components:
- type: Sprite
state: service_chest
- type: Icon
state: service_chest
- type: Tag
tags:
- Trash
- BorgServiceTorso

View File

@@ -33,139 +33,27 @@
borg_l_arm+o:
whitelist:
tags:
- BorgGenericLArm
- BorgLArm
borg_r_arm+o:
whitelist:
tags:
- BorgGenericRArm
- BorgRArm
borg_l_leg+o:
whitelist:
tags:
- BorgGenericLLeg
- BorgLLeg
borg_r_leg+o:
whitelist:
tags:
- BorgGenericRLeg
- BorgRLeg
borg_head+o:
whitelist:
tags:
- BorgGenericHead
- BorgHead
borg_chest+o:
whitelist:
tags:
- BorgGenericTorso
service_l_arm+o:
whitelist:
tags:
- BorgServiceLArm
service_r_arm+o:
whitelist:
tags:
- BorgServiceRArm
service_l_leg+o:
whitelist:
tags:
- BorgServiceLLeg
service_r_leg+o:
whitelist:
tags:
- BorgServiceRLeg
service_head+o:
whitelist:
tags:
- BorgServiceHead
service_chest+o:
whitelist:
tags:
- BorgServiceTorso
engineer_l_arm+o:
whitelist:
tags:
- BorgEngineerLArm
engineer_r_arm+o:
whitelist:
tags:
- BorgEngineerRArm
engineer_l_leg+o:
whitelist:
tags:
- BorgEngineerLLeg
engineer_r_leg+o:
whitelist:
tags:
- BorgEngineerRLeg
engineer_head+o:
whitelist:
tags:
- BorgEngineerHead
engineer_chest+o:
whitelist:
tags:
- BorgEngineerTorso
mining_l_arm+o:
whitelist:
tags:
- BorgMiningLArm
mining_r_arm+o:
whitelist:
tags:
- BorgMiningRArm
mining_l_leg+o:
whitelist:
tags:
- BorgMiningLLeg
mining_r_leg+o:
whitelist:
tags:
- BorgMiningRLeg
mining_head+o:
whitelist:
tags:
- BorgMiningHead
mining_chest+o:
whitelist:
tags:
- BorgMiningTorso
medical_l_arm+o:
whitelist:
tags:
- BorgMedicalLArm
medical_r_arm+o:
whitelist:
tags:
- BorgMedicalRArm
medical_l_leg+o:
whitelist:
tags:
- BorgMedicalLLeg
medical_r_leg+o:
whitelist:
tags:
- BorgMedicalRLeg
medical_head+o:
whitelist:
tags:
- BorgMedicalHead
medical_chest+o:
whitelist:
tags:
- BorgMedicalTorso
janitor_l_leg+o:
whitelist:
tags:
- BorgJanitorLLeg
janitor_r_leg+o:
whitelist:
tags:
- BorgJanitorRLeg
janitor_head+o:
whitelist:
tags:
- BorgJanitorHead
janitor_chest+o:
whitelist:
tags:
- BorgJanitorTorso
- BorgTorso
- type: ContainerContainer
containers:
part-container: !type:Container
@@ -173,45 +61,12 @@
- type: PartAssembly
parts:
generic:
- BorgGenericLArm
- BorgGenericRArm
- BorgGenericLLeg
- BorgGenericRLeg
- BorgGenericHead
- BorgGenericTorso
service:
- BorgServiceLArm
- BorgServiceRArm
- BorgServiceLLeg
- BorgServiceRLeg
- BorgServiceHead
- BorgServiceTorso
engineer:
- BorgEngineerLArm
- BorgEngineerRArm
- BorgEngineerLLeg
- BorgEngineerRLeg
- BorgEngineerHead
- BorgEngineerTorso
medical:
- BorgMedicalLArm
- BorgMedicalRArm
- BorgMedicalLLeg
- BorgMedicalRLeg
- BorgMedicalHead
- BorgMedicalTorso
janitor:
- BorgJanitorLLeg
- BorgJanitorRLeg
- BorgJanitorHead
- BorgJanitorTorso
mining:
- BorgMiningLArm
- BorgMiningRArm
- BorgMiningLLeg
- BorgMiningRLeg
- BorgMiningHead
- BorgMiningTorso
- BorgLArm
- BorgRArm
- BorgLLeg
- BorgRLeg
- BorgHead
- BorgTorso
- type: Construction
graph: Cyborg
node: start

View File

@@ -572,11 +572,6 @@
- BorgModuleFireExtinguisher
- BorgModuleRadiationDetection
- BorgModuleTool
- BorgModuleAppraisal
- BorgModuleConstruction
- BorgModuleService
- BorgModuleTreatment
- BorgModuleCleaning
- CyborgEndoskeleton
- LeftArmBorg
- RightArmBorg
@@ -584,50 +579,15 @@
- RightLegBorg
- LightHeadBorg
- TorsoBorg
- LeftArmBorgEngineer
- RightArmBorgEngineer
- LeftLegBorgEngineer
- RightLegBorgEngineer
- HeadBorgEngineer
- TorsoBorgEngineer
- LeftLegBorgJanitor
- RightLegBorgJanitor
- HeadBorgJanitor
- TorsoBorgJanitor
- LeftArmBorgMedical
- RightArmBorgMedical
- LeftLegBorgMedical
- RightLegBorgMedical
- HeadBorgMedical
- TorsoBorgMedical
- LeftArmBorgMining
- RightArmBorgMining
- LeftLegBorgMining
- RightLegBorgMining
- HeadBorgMining
- TorsoBorgMining
- LeftArmBorgService
- RightArmBorgService
- LeftLegBorgService
- RightLegBorgService
- HeadBorgService
- TorsoBorgService
dynamicRecipes:
- ProximitySensor
- BorgModuleLightReplacer
- BorgModuleAdvancedCleaning
- BorgModuleMining
- BorgModuleGrapplingGun
- BorgModuleAdvancedTool
- BorgModuleGPS
- BorgModuleRCD
- BorgModuleArtifact
- BorgModuleAnomaly
- BorgModuleGardening
- BorgModuleHarvesting
- BorgModuleMusique
- BorgModuleClowning
- BorgModuleDiagnosis
- BorgModuleDefibrillator
- BorgModuleAdvancedTreatment
- RipleyHarness