Files
crystall-punk-14/Resources/migration.yml
Pieter-Jan Briers 1bebb3390c 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
2024-11-14 11:08:35 -06:00

478 lines
14 KiB
YAML

# This is a basic dictionary that maps old entity prototype ids to new ids. This only works for entity prototypes, and
# is intended to allow maps to load without having to manually edit them. An empty or "null" string results in the
# entity getting deleted.
# e.g., you can swap all walls with windows and delete all tables by adding lines like:
#
# Window: WallSolid
# WallSolid: Window
# Table: null
# 2023-07-03
ClothingHeadHelmetHelmet: ClothingHeadHelmetBasic
ClothingHeadHelmetHelmetOld: ClothingHeadHelmetBasic
# 2023-07-04
# Bulletproof armor is almost statistically identical to kevlar, however, before this kevlar armor was the closest thing there was to "basic" armor. It makes the most sense to replace it with this.
ClothingOuterVestKevlar: ClothingOuterArmorBasic
# 2023-07-10
Intercom: IntercomCommon
# 2023-07-12
ToyAssistant: ToyFigurinePassenger
# 2023-07-20
ForensicGloves: ClothingHandsGlovesForensic
# 2023-07-24
ClothingEyesGlassesBeer: ClothingEyesHudBeer
# 2023-08-01
lantern: Lantern
lanternextrabright: LanternFlash
# 2023-08-04
BoxMagazineLightRifleHighVelocity: BoxMagazineLightRifle
BoxMagazineMagnumSubMachineGunHighVelocity: BoxMagazineMagnumSubMachineGun
BoxMagazinePistolCaselessRifleHighVelocity: BoxMagazinePistolCaselessRifle
BoxMagazinePistolHighCapacityHighVelocity: BoxMagazinePistolHighCapacity
BoxMagazinePistolHighVelocity: BoxMagazinePistol
BoxMagazinePistolSubMachineGunHighVelocity: BoxMagazinePistolSubMachineGun
BoxMagazineRifleHighVelocity: BoxMagazineRifle
BulletCaselessRifleHighVelocity: BulletCaselessRifle
BulletLightRifleHighVelocity: BulletLightRifle
BulletMagnumHighVelocity: BulletMagnum
BulletPistolHighVelocity: BulletPistol
BulletRifleHighVelocity: BulletRifle
CartridgeCaselessRifleHighVelocity: CartridgeCaselessRifle
CartridgeLightRifleHighVelocity: CartridgeLightRifle
CartridgeMagnumHighVelocity: CartridgeMagnum
CartridgePistolHighVelocity: CartridgePistol
CartridgeRifleHighVelocity: CartridgeRifle
MagazineBoxCaselessRifleHighVelocity: MagazineBoxCaselessRifle
MagazineBoxLightRifleHighVelocity: MagazineBoxLightRifle
MagazineBoxMagnumHighVelocity: MagazineBoxMagnum
MagazineBoxPistolHighVelocity: MagazineBoxPistol
MagazineBoxRifleHighVelocity: MagazineBoxRifle
MagazineCaselessRifleHighVelocity: MagazineCaselessRifle
MagazineCaselessRifleShortHighVelocity: MagazineCaselessRifleShort
MagazineLightRifleHighVelocity: MagazineLightRifle
MagazineMagnumSubMachineGunHighVelocity: MagazineMagnumSubMachineGun
MagazinePistolCaselessRifleHighVelocity: MagazinePistolCaselessRifle
MagazinePistolHighCapacityHighVelocity: MagazinePistolHighCapacity
MagazinePistolHighVelocity: MagazinePistol
MagazinePistolSubMachineGunHighVelocity: MagazinePistolSubMachineGun
MagazineRifleHighVelocity: MagazineRifle
SpeedLoaderMagnumHighVelocity: SpeedLoaderMagnum
SpeedLoaderPistolHighVelocity: SpeedLoaderPistol
# 2023-08-07
#If the name is anything to go off of, these are presumably just CEV-Eris versions of the snow rock (which we already have.)
#They are practically never used in this way however, so they're migrated to the basic rock type.
MountainRock: AsteroidRock
MountainRockMining: AsteroidRockMining
# 2023-08-08
WindowTintedDirectional: WindowFrostedDirectional
# 2023-08-10
SyringeSpaceacillin: null
# 2023-08-13
AirlockPainter: SprayPainter
# 2023-08-19
GeneratorPlasma: PortableGeneratorPacman
GeneratorUranium: PortableGeneratorSuperPacman
GeneratorPlasmaMachineCircuitboard: PortableGeneratorPacmanMachineCircuitboard
GeneratorUraniumMachineCircuitboard: PortableGeneratorSuperPacmanMachineCircuitboard
# 2023-12-10
SpawnPointSeniorResearcher: null
SpawnPointSeniorOfficer: null
SpawnPointSeniorEngineer: null
SpawnPointSeniorPhysician: null
# 2023-12-12
#No this is not the CMO hardsuit, their prototype IDs were just confusingly similar
ClothingOuterHardsuitMedic: ClothingOuterHardsuitSyndieMedic
# 2023-12-13
VendingMachineSmartFridge: SmartFridge
# 2023-12-18
ReagentContainerMilk: DrinkMilkCarton
ReagentContainerMilkSoy: DrinkSoyMilkCarton
ReagentContainerMilkOat: DrinkOatMilkCarton
# 2023-12-20
MiasmaCanister: AmmoniaCanister
# 2023-12-28
WarpPointBeaconBar: null
WarpPointBeaconCargo: null
WarpPointBeaconCommand: null
WarpPointBeaconEngineering: null
WarpPointBeaconMedical: null
WarpPointBeaconNeutral: null
WarpPointBeaconScience: null
WarpPointBeaconSecurity: null
WarpPointBeaconService: null
# 2023-12-30
ClothingEyesGlassesCosmeticSunglasses: ClothingEyesGlassesSunglasses
SpawnPointAssistant: SpawnPointPassenger
# 2024-01-05
DrinkGoldschlagerBottleFull: DrinkGildlagerBottleFull
DrinkGoldschlagerGlass: DrinkGildlagerGlass
# 2024-01-07
ClosetBase: ClosetSteelBase
# 2024-01-08
SalvagePartsT4Spawner: SalvageLootSpawner
SalvagePartsT3Spawner: SalvageLootSpawner
SalvagePartsT3T4Spawner: SalvageLootSpawner
SalvagePartsT2Spawner: SalvageLootSpawner
AdvancedCapacitorStockPart: CapacitorStockPart
SuperCapacitorStockPart: CapacitorStockPart
QuadraticCapacitorStockPart: CapacitorStockPart
NanoManipulatorStockPart: MicroManipulatorStockPart
PicoManipulatorStockPart: MicroManipulatorStockPart
FemtoManipulatorStockPart: MicroManipulatorStockPart
AdvancedMatterBinStockPart: MatterBinStockPart
SuperMatterBinStockPart: MatterBinStockPart
BluespaceMatterBinStockPart: MatterBinStockPart
AnsibleSubspaceStockPart: null
FilterSubspaceStockPart: null
AmplifierSubspaceStockPart: null
TreatmentSubspaceStockPart: null
AnalyzerSubspaceStockPart: null
CrystalSubspaceStockPart: null
TransmitterSubspaceStockPart: null
# 2024-01-10
ClothingHeadHatHoodRad: null
# 2024-01-12
SpaceMedipen: null
# 2024-01-18
ClothingHeadHelmetVoidParamed: null
# 2024-01-19
DefaultStationBeaconTeslaEngine: null
# 2024-01-27 (Reverted on 2024-03-10)
# ClothingBackpackSecurityFilledDetective: ClothingBackpackFilledDetective
# ClothingBackpackDuffelSecurityFilledDetective: ClothingBackpackDuffelFilledDetective
# ClothingBackpackSatchelSecurityFilledDetective: ClothingBackpackSatchelFilledDetective
# 2024-01-28
FoodBoxDonkpocketGondola: FoodBoxDonkpocketPizza
# 2024-01-31
SpyCrewMonitor: null
SpyCrewMonitorEmpty: null
SyndiCrewMonitor: null
SyndiCrewMonitorEmpty: null
SpawnVehicleWheelchair: null
SpawnVehicleWheelchairFolded: null
VehicleWheelchair: null
VehicleWheelchairFolded: null
VehicleSecwayStealObjective: null
VehicleKeyJanicart: null
VehicleKeySecway: null
VehicleKeyATV: null
VehicleKeySkeleton: null
VehicleKeySyndicateSegway: null
VehicleKeySkeletonMotorcycle: null
VehicleSecway: null
VehicleATV: null
VehicleSyndicateSegway: null
VehicleSkeletonMotorcycle: null
VehicleUnicycle: null
VehicleUnicycleFolded: null
ActionVehicleHorn: null
CrateFunATV: null
CrateFunSyndicateSegway: null
MobTaxiBot: null
# MobSupplyBot: null
SpawnVehicleMotobike: null
SpawnVehicleATV: null
SpawnVehicleSecway: null
SpawnVehicleJanicart: null
VehicleJanicart: null
VehicleJanicartDestroyed: null
# 2024-02-01
YellowOxygenTank: OxygenTank
YellowOxygenTankFilled: OxygenTankFilled
# 2024-02-12
FoodDonutBlumpkin: FoodDonutBluePumpkin
FoodDonutJellyBlumpkin: FoodDonutJellyBluePumpkin
# 2024-02-19
Drone: null
SpawnMobDrone: null
Onestar: null # I dont think this is even mapped, but just in case
# 2024-02-22
SolarAssemblyPart: SolarAssemblyFlatpack
AmePart: AmePartFlatpack
AmePartStealObjective: AmePartFlatpackStealObjective
Observationskit: null
# 2024-02-26
CrateBaseWeldable: CrateGenericSteel
# 2024-03-05
BookBotanicalTextbook: BookRandomStory
BookEscalation: BookRandomStory
BookEscalationSecurity: BookRandomStory
BookDemonomiconRandom: BookRandomStory
BookDemonomicon1: BookRandomStory
BookDemonomicon2: BookRandomStory
BookDemonomicon3: BookRandomStory
BookChemistryInsane: BookRandomStory
BookGnominomicon: BookRandomStory
BookFishing: BookRandomStory
BookDetective: BookRandomStory
# 2024-03-07
AirlockExternalEasyPry: AirlockExternal
AirlockExternalGlassEasyPry: AirlockExternalGlass
AirlockGlassShuttleEasyPry: AirlockGlassShuttle
AirlockShuttleEasyPry: AirlockShuttle
AirlockExternalEasyPryLocked: AirlockExternalLocked
AirlockExternalGlassEasyPryLocked: AirlockExternalGlassLocked
AirlockGlassShuttleEasyPryLocked: AirlockExternalGlassShuttleLocked
AirlockShuttleEasyPryLocked: AirlockExternalShuttleLocked
# 2024-03-10
FoodChili: FoodChiliPepper
FoodChilly: FoodChillyPepper
# ClothingBackpackFilledDetective: ClothingBackpackSecurityFilledDetective
# ClothingBackpackDuffelFilledDetective: ClothingBackpackDuffelSecurityFilledDetective
# ClothingBackpackSatchelFilledDetective: ClothingBackpackSatchelSecurityFilledDetective
# 2024-03-11
ImprovisedExplosive: FireBomb
ImprovisedExplosiveEmpty: FireBombEmpty
ImprovisedExplosiveFuel: FireBombFuel
# 2024-03-16
ClothingHeadHatHairflower: FoodPoppy
# 2024-03-21
RPED: null
# 2024-03-30
TraversalDistorterMachineCircuitboard: null
MachineTraversalDistorter: null
# These are technically not equivalent, but it probably makes more sense to replace any existing SCAF stuff with SOME kind of armor, instead of just deleting it outright.
ClothingHeadHelmetScaf: ClothingHeadHelmetBasic
ClothingOuterArmorScaf: ClothingOuterArmorBasic
# 2024-03-31
ClothingNeckFlowerWreath: ClothingHeadHatFlowerWreath
ClothingHeadHatFlowerCrown: ClothingHeadHatFlowerWreath
BriefcaseSyndieBase: null
# 2024-04-08
BodyBag_Container: BodyBag
BodyBag_Folded: BodyBagFolded
# 2024-04-26
BaseBulletRubber: null
BulletPistolRubber: BulletPistol
BulletMagnumRubber: BulletMagnum
BulletLightRifleRubber: BulletLightRifle
BulletRifleRubber: BulletRifle
BulletCaselessRifleRubber: BulletCaselessRifle
CartridgePistolRubber: CartridgePistol
CartridgeMagnumRubber: CartridgeMagnum
CartridgeLightRifleRubber: CartridgeLightRifle
CartridgeRifleRubber: CartridgeRifle
CartridgeCaselessRifleRubber: CartridgeCaselessRifle
MagazinePistolRubber: MagazinePistol
MagazinePistolSubMachineGunRubber: MagazinePistolSubMachineGun
MagazinePistolCaselessRifleRubber: MagazinePistolCaselessRifle
MagazineMagnumRubber: MagazineMagnum
MagazineMagnumSubMachineGunRubber: MagazineMagnumSubMachineGun
MagazineLightRifleRubber: MagazineLightRifle
MagazineRifleRubber: MagazineRifle
MagazineCaselessRifleRubber: MagazineCaselessRifle
MagazineCaselessRifleShortRubber: MagazineCaselessRifleShort
SpeedLoaderPistolRubber: SpeedLoaderPistol
SpeedLoaderMagnumRubber: SpeedLoaderMagnum
MagazineBoxPistolRubber: MagazineBoxPistol
# RIP box of magnum rubbers 202X to 2024
MagazineBoxMagnumRubber: MagazineBoxMagnum
MagazineBoxLightRifleRubber: MagazineBoxLightRifle
MagazineBoxRifleRubber: MagazineBoxRifle
MagazineBoxRifleBigRubber: MagazineBoxRifleBig
MagazineBoxCaselessRifleRubber: MagazineBoxCaselessRifle
MagazineBoxCaselessRifleBigRubber: MagazineBoxCaselessRifle10x24
BoxMagazinePistolRubber: BoxMagazinePistol
BoxMagazinePistolHighCapacityRubber: BoxMagazinePistolHighCapacity
BoxMagazinePistolSubMachineGunRubber: BoxMagazinePistolSubMachineGun
BoxMagazineLightRifleRubber: BoxMagazineLightRifle
BoxMagazineRifleRubber: BoxMagazineRifle
BoxMagazineCaselessRifleRubber: BoxMagazinePistolCaselessRifle
BoxMagazineMagnumSubMachineGunRubber: BoxMagazineMagnumSubMachineGun
WeaponPistolMk58Nonlethal: WeaponPistolMk58
WeaponPistolN1984Nonlethal: WeaponPistolN1984
WeaponSubMachineGunVectorRubber: WeaponSubMachineGunVector
WeaponSubMachineGunDrozdRubber: WeaponSubMachineGunDrozd
WeaponRifleLecterRubber: WeaponRifleLecter
# 2024-04-26
GlassBoxLaserBroken: GlassBoxBroken
ReinforcementRadioSyndicateMonkey: ReinforcementRadioSyndicateAncestor
ReinforcementRadioSyndicateMonkeyNukeops: ReinforcementRadioSyndicateAncestorNukeops
# 2024-05-01
DrinkBottleGoldschlager: DrinkBottleGildlager
# 2024-05-14
soda_dispenser: SodaDispenser
chem_master: ChemMaster
# 2024-05-21
CrateJanitorExplosive: ClosetJanitorBombFilled
# 2024-05-27
DoorRemoteFirefight: null
# 2024-06-03
AirlockServiceCaptainLocked: AirlockCaptainLocked
#2024-06-05
DisasterVictimSpawner: CommandVisitorSpawner
LostCargoTechnicianSpawner: VisitorCargoTechnicianSpawner
ClownTroupeSpawner: VisitorClownSpawner
TravelingChefSpawner: VisitorChefSpawner
SyndieDisasterVictimSpawner: SyndieVisitorSpawner
# 2024-06-15
ClothingOuterCoatInspector: ClothingOuterCoatJensen
# 2024-06-23
FloorTileItemReinforced: PartRodMetal1
#2024-06-25
BookChefGaming: BookHowToCookForFortySpaceman
#2024-06-29
IntercomAssesmbly: IntercomAssembly
# 2024-07-7
SignScience1: SignScience
SignScience2: SignScience
SignXenobio2: SignXenobio
SignXenolab: SignXenobio
SignToxins2: SignToxins
SignMinerDock: SignShipDock
SignChemistry1: SignChem
SignChemistry2: SignChem
SignCourt: SignLawyer
SignAtmosMinsky: SignAtmos
SignDrones: SignMaterials
SignShield: null # what was this even for?
SignHydro2: SignHydro1
SignHydro3: SignHydro1
# 2024-07-27
LogicGate: LogicGateOr
# 2024-08-08
MaterialReclaimer: null
MaterialReclaimerMachineCircuitboard: null
# 2024-08-11
FoodTacoBeef: FoodTacoShell
FoodTacoChicken: FoodTacoShell
FoodTacoFish: FoodTacoShell
FoodTacoBeefSupreme: FoodTacoShell
FoodTacoChickenSupreme: FoodTacoShell
FoodTacoRat: FoodTacoShell
FoodMeatHumanKebab: FoodKebabSkewer
FoodMeatLizardtailKebab: FoodKebabSkewer
FoodMeatRatKebab: FoodKebabSkewer
FoodMeatRatdoubleKebab: FoodKebabSkewer
FoodMeatSnakeKebab: FoodKebabSkewer
FoodMeatHawaiianKebab: FoodKebabSkewer
FoodMeatKebab: FoodKebabSkewer
FoodMeatFiestaKebab: FoodKebabSkewer
#2024-08-14
ClothingBeltSuspenders: ClothingBeltSuspendersRed
# 2024-08-19
ClothingNeckShockCollar: ClothingBackpackElectropack
# 2024-08-22
ComputerShuttleSalvage: null
SalvageShuttleConsoleCircuitboard: null
SalvageShuttleCircuitboardStealObjective: null
# 2024-08-28
ClothingBackpackDuffelSyndicateCostumeCentcom: null
ClothingHeadsetAltCentComFake: null
CentcomPDAFake: null
CentcomIDCardSyndie: null
# 2024-09-06
AntimovCircuitBoard: null
OverlordCircuitBoard: null
# 2024-09-08
HatBase: null
# 2024-09-19
BlueprintFlare: null
# 2024-10-04
BaseAdvancedPen: Pen
# 2024-10-09
# Removal of separate borg chassis parts, replace them with generic borg parts.
LeftArmBorgEngineer: LeftArmBorg
RightArmBorgEngineer: RightArmBorg
LeftLegBorgEngineer: LeftLegBorg
RightLegBorgEngineer: RightLegBorg
HeadBorgEngineer: LightHeadBorg
TorsoBorgEngineer: TorsoBorg
LeftArmBorgMedical: LeftArmBorg
RightArmBorgMedical: RightArmBorg
LeftLegBorgMedical: LeftLegBorg
RightLegBorgMedical: RightLegBorg
HeadBorgMedical: LightHeadBorg
TorsoBorgMedical: TorsoBorg
LeftArmBorgMining: LeftArmBorg
RightArmBorgMining: RightArmBorg
LeftLegBorgMining: LeftLegBorg
RightLegBorgMining: RightLegBorg
HeadBorgMining: LightHeadBorg
TorsoBorgMining: TorsoBorg
LeftArmBorgService: LeftArmBorg
RightArmBorgService: RightArmBorg
LeftLegBorgService: LeftLegBorg
RightLegBorgService: RightLegBorg
HeadBorgService: LightHeadBorg
TorsoBorgService: TorsoBorg
LeftLegBorgJanitor: LeftLegBorg
RightLegBorgJanitor: RightLegBorg
HeadBorgJanitor: LightHeadBorg
TorsoBorgJanitor: TorsoBorg