]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Convert Locker/Closet fills to Entity Tables: Part 2 (#38254)
authorVelcroboy <107660393+IamVelcroboy@users.noreply.github.com>
Fri, 11 Jul 2025 20:55:35 +0000 (15:55 -0500)
committerGitHub <noreply@github.com>
Fri, 11 Jul 2025 20:55:35 +0000 (13:55 -0700)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Resources/Prototypes/Catalog/Fills/Lockers/security.yml
Resources/Prototypes/Catalog/Fills/Lockers/service.yml
Resources/Prototypes/Catalog/Fills/Lockers/space_ruin.yml
Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml
Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml
Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_job.yml

index cfd1aca2b551c4748dd0391e90ce663340d78b42..2f2e7a2c1a1dbbc23fd7673a44c24d8c04730e6f 100644 (file)
   suffix: Filled, Hardsuit
   parent: LockerWarden
   components:
-  - type: StorageFill
-    contents:
-      - id: FlashlightSeclite
-      - id: WeaponDisabler
-      - id: ClothingBeltSecurityFilled
-      - id: Flash
-      - id: ClothingEyesGlassesSecurity
-      - id: ClothingHandsGlovesCombat
-      - id: ClothingShoesBootsJack
-      - id: ClothingOuterCoatWarden
-      - id: ClothingOuterWinterWarden
-      - id: RubberStampWarden
-      - id: DoorRemoteArmory
-      - id: ClothingOuterHardsuitWarden
-      - id: HoloprojectorSecurity
-      - id: BookSpaceLaw
-      - id: ClothingBackpackElectropack
-        amount: 2
-      - id: RemoteSignaller
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: FillLockerWarden
+        - !type:NestedSelector
+          tableId: FillLockerWardenHarduit
 
 - type: entity
   id: LockerWardenFilled
   suffix: Filled
   parent: LockerWarden
   components:
-  - type: StorageFill
-    contents:
-      - id: FlashlightSeclite
-      - id: WeaponDisabler
-      - id: ClothingBeltSecurityFilled
-      - id: Flash
-      - id: ClothingEyesGlassesSecurity
-      - id: ClothingHandsGlovesCombat
-      - id: ClothingShoesBootsJack
-      - id: ClothingOuterCoatWarden
-      - id: ClothingOuterWinterWarden
-      - id: RubberStampWarden
-      - id: DoorRemoteArmory
-      - id: HoloprojectorSecurity
-      - id: BookSpaceLaw
-      - id: ClothingBackpackElectropack
-        amount: 2
-      - id: RemoteSignaller
-        amount: 2
-      - id: Binoculars
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerWarden
+
+- type: entityTable
+  id: FillLockerWarden
+  table: !type:AllSelector
+    children:
+    - id: FlashlightSeclite
+    - id: WeaponDisabler
+    - id: ClothingBeltSecurityFilled
+    - id: Flash
+    - id: ClothingEyesGlassesSecurity
+    - id: ClothingHandsGlovesCombat
+    - id: ClothingShoesBootsJack
+    - id: ClothingOuterCoatWarden
+    - id: ClothingOuterWinterWarden
+    - id: RubberStampWarden
+    - id: DoorRemoteArmory
+    - id: HoloprojectorSecurity
+    - id: BookSpaceLaw
+    - id: ClothingBackpackElectropack
+      amount: 2
+    - id: RemoteSignaller
+      amount: 2
+    - id: Binoculars
+
+- type: entityTable
+  id: FillLockerWardenHarduit
+  table: !type:AllSelector
+    children:
+    - id: ClothingOuterHardsuitWarden
+    - id: OxygenTankFilled
+    - id: ClothingMaskBreath
 
 - type: entity
   id: LockerSecurityFilled
   suffix: Filled
   parent: LockerSecurity
   components:
-  - type: StorageFill
-    contents:
-      - id: FlashlightSeclite
-        prob: 0.8
-      - id: WeaponDisabler
-      - id: ClothingUniformJumpsuitSecGrey
-        prob: 0.3
-      - id: ClothingHeadHelmetBasic
-      - id: ClothingOuterArmorBasic
-      - id: ClothingBeltSecurityFilled
-      - id: Flash
-        prob: 0.5
-      - id: ClothingEyesGlassesSecurity
-      - id: ClothingHeadsetSecurity
-      - id: ClothingHandsGlovesColorBlack
-      - id: ClothingShoesBootsJack
-      - id: WeaponMeleeNeedle
-        prob: 0.1
-      - id: HoloprojectorSecurity
-        prob: 0.6
-      - id: BookSpaceLaw
-        prob: 0.5
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerSecurity
+
+- type: entityTable
+  id: FillLockerSecurity
+  table: !type:AllSelector
+    children:
+    - id: FlashlightSeclite
+      prob: 0.8
+    - id: WeaponDisabler
+    - id: ClothingUniformJumpsuitSecGrey
+      prob: 0.3
+    - id: ClothingHeadHelmetBasic
+    - id: ClothingOuterArmorBasic
+    - id: ClothingBeltSecurityFilled
+    - id: Flash
+      prob: 0.5
+    - id: ClothingEyesGlassesSecurity
+    - id: ClothingHeadsetSecurity
+    - id: ClothingHandsGlovesColorBlack
+    - id: ClothingShoesBootsJack
+    - id: WeaponMeleeNeedle
+      prob: 0.1
+    - id: HoloprojectorSecurity
+      prob: 0.6
+    - id: BookSpaceLaw
+      prob: 0.5
 
 - type: entity
   id: LockerBrigmedicFilled
   suffix: Brigmedic, Filled
   parent: LockerBrigmedic
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingEyesGlassesSecurity
-      - id: WeaponDisabler
-      - id: TrackingImplanter
-        amount: 2
-      - id: ClothingOuterHardsuitBrigmedic
-      - id: BoxSterileMask
-      - id: ClothingHeadHatBeretBrigmedic
-      - id: ClothingOuterCoatAMG
-      - id: ClothingUniformJumpsuitBrigmedic
-      - id: ClothingUniformJumpskirtBrigmedic
-      - id: ClothingUniformJumpskirtOfLife
-        prob: 0.1
-      - id: MedkitFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerBrigmedic
+
+- type: entityTable
+  id: FillLockerBrigmedic
+  table: !type:AllSelector
+    children:
+    - id: ClothingEyesGlassesSecurity
+    - id: WeaponDisabler
+    - id: TrackingImplanter
+      amount: 2
+    - id: ClothingOuterHardsuitBrigmedic
+    - id: BoxSterileMask
+    - id: ClothingHeadHatBeretBrigmedic
+    - id: ClothingOuterCoatAMG
+    - id: ClothingUniformJumpsuitBrigmedic
+    - id: ClothingUniformJumpskirtBrigmedic
+    - id: ClothingUniformJumpskirtOfLife
+      prob: 0.1
+    - id: MedkitFilled
+    - !type:GroupSelector
+      prob: 0.7
+      children:
       - id: MedkitCombatFilled
-        prob: 0.6
+        weight: 1.6
       - id: MedkitAdvancedFilled
-        prob: 0.4
       - id: MedkitOxygenFilled
-        prob: 0.3
+        weight: 0.8
       - id: MedkitBruteFilled
-        prob: 0.3
+        weight: 0.8
       - id: MedkitToxinFilled
-        prob: 0.3
+        weight: 0.8
       - id: MedkitBurnFilled
-        prob: 0.7
-      - id: ClothingNeckCloakMoth #bzzz Moth-pocalypse
-        prob: 0.15
+        weight: 1.8
+    - id: ClothingNeckCloakMoth #bzzz Moth-pocalypse
+      prob: 0.15
 
 - type: entity
   id: LockerDetectiveFilled
   suffix: Filled
   parent: LockerDetective
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingEyesGlassesNoir
-      - id: ClothingHeadHatDetGadget
-      - id: ClothingNeckTieDet
-      - id: ClothingOuterVestDetective
-      - id: ClothingOuterCoatDetectiveLoadout
-      - id: FlippoEngravedLighter
-      - id: FlashlightSeclite
-      - id: ForensicScanner
-      - id: LogProbeCartridge
-      - id: BoxForensicPad
-      - id: DrinkDetFlask
-      - id: ClothingHandsGlovesForensic
-      - id: RubberStampDetective
-      - id: HoloprojectorSecurity
-      - id: BoxEvidenceMarkers
-      - id: HandLabeler
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerDetective
+
+- type: entityTable
+  id: FillLockerDetective
+  table: !type:AllSelector
+    children:
+    - id: ClothingEyesGlassesNoir
+    - id: ClothingHeadHatDetGadget
+    - id: ClothingNeckTieDet
+    - id: ClothingOuterVestDetective
+    - id: ClothingOuterCoatDetectiveLoadout
+    - id: FlippoEngravedLighter
+    - id: FlashlightSeclite
+    - id: ForensicScanner
+    - id: LogProbeCartridge
+    - id: BoxForensicPad
+    - id: DrinkDetFlask
+    - id: ClothingHandsGlovesForensic
+    - id: RubberStampDetective
+    - id: HoloprojectorSecurity
+    - id: BoxEvidenceMarkers
+    - id: HandLabeler
 
 - type: entity
   id: ClosetBombFilled
   parent: ClosetBomb
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetBombSuit
-      - id: ClothingOuterSuitBomb
-      - id: Wirecutter
-      - id: Screwdriver
-      - id: Multitool
-        prob: 0.5
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillClosetBomb
+
+- type: entityTable
+  id: FillClosetBomb
+  table: !type:AllSelector
+    children:
+    - id: ClothingHeadHelmetBombSuit
+    - id: ClothingOuterSuitBomb
+    - id: Wirecutter
+    - id: Screwdriver
+    - id: Multitool
+      prob: 0.5
 
 - type: entity
   parent: [GunSafeBaseSecure, BaseSecurityContraband]
   id: GunSafeDisabler
   name: disabler safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafeDisabler
+
+- type: entityTable
+  id: FillGunSafeDisabler
+  table: !type:AllSelector
+    children:
     - id: WeaponDisabler
       amount: 5
 
   id: GunSafePistolMk58
   name: mk58 safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafePistolMk58
+
+- type: entityTable
+  id: FillGunSafePistolMk58
+  table: !type:AllSelector
+    children:
     - id: WeaponPistolMk58
       amount: 4
     - id: MagazinePistol
   id: GunSafeRifleLecter
   name: lecter safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafeRifleLecter
+
+- type: entityTable
+  id: FillGunSafeRifleLecter
+  table: !type:AllSelector
+    children:
     - id: WeaponRifleLecter
       amount: 2
     - id: MagazineRifle
   id: GunSafeSubMachineGunDrozd
   name: drozd safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafeSubMachineGunDrozd
+
+- type: entityTable
+  id: FillGunSafeSubMachineGunDrozd
+  table: !type:AllSelector
+    children:
     - id: WeaponSubMachineGunDrozd
       amount: 2
     - id: MagazinePistolSubMachineGun
   id: GunSafeShotgunEnforcer
   name: enforcer safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafeShotgunEnforcer
+
+- type: entityTable
+  id: FillGunSafeShotgunEnforcer
+  table: !type:AllSelector
+    children:
     - id: WeaponShotgunEnforcer
       amount: 2
     - id: BoxLethalshot
   id: GunSafeShotgunKammerer
   name: kammerer safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafeShotgunKammerer
+
+- type: entityTable
+  id: FillGunSafeShotgunKammerer
+  table: !type:AllSelector
+    children:
     - id: WeaponShotgunKammerer
       amount: 2
     - id: BoxLethalshot
-      amount: 2
+      amount: 4
 
 - type: entity
   id: GunSafeSubMachineGunWt550
   parent: [GunSafeBaseSecure, BaseSecurityContraband]
   name: wt550 safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafeSubMachineGunWt550
+
+- type: entityTable
+  id: FillGunSafeSubMachineGunWt550
+  table: !type:AllSelector
+    children:
     - id: WeaponSubMachineGunWt550
       amount: 2
     - id: MagazinePistolSubMachineGunTopMounted
   id: GunSafeLaserCarbine
   name: laser safe
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillGunSafeLaserCarbine
+
+- type: entityTable
+  id: FillGunSafeLaserCarbine
+  table: !type:AllSelector
+    children:
     - id: WeaponLaserCarbine
       amount: 3
index 14da417181ef19d1586ef7f205a7900aa8f2af3b..85bd52e13d514f9e27074d23481a223995f0ba0f 100644 (file)
@@ -3,24 +3,28 @@
   suffix: Filled
   parent: LockerBooze
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterArmorBasicSlim
-      - id: WeaponShotgunDoubleBarreledRubber
-      - id: DrinkShaker
-      - id: ClothingEyesHudBeer
-      - id: HandLabeler
-        amount: 1
-      - id: DrinkBottleBeer
-        prob: 0.5
-      - id: DrinkBottleBeer
-        prob: 0.5
-      - id: DrinkBottleBeer
-        prob: 0.5
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerBooze
+
+- type: entityTable
+  id: FillLockerBooze
+  table: !type:AllSelector
+    children:
+    - id: ClothingOuterArmorBasicSlim
+    - id: WeaponShotgunDoubleBarreledRubber
+    - id: DrinkShaker
+    - id: ClothingEyesHudBeer
+    - id: HandLabeler
+    - id: DrinkBottleBeer
+      amount: !type:BinomialNumberSelector
+        trials: 3
+    - !type:AllSelector
+      rolls: 2
+      children:
       - id: BoxBeanbag
-        amount: 2
       - id: RagItem
-        amount: 2
 
 #- type: entity
 #  id: LockerFormalFilled
   suffix: Filled
   parent: ClosetChef
   components:
-  - type: StorageFill
-    contents:
-      - id: VariantCubeBox
-      - id: BoxMousetrap
-        amount: 2
-      - id: SprayBottleWater
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillClosetChef
+
+- type: entityTable
+  id: FillClosetChef
+  table: !type:AllSelector
+    children:
+    - id: VariantCubeBox
+    - id: SprayBottleWater
+    - id: FoodBoxCloth
+    - id: ReagentContainerSugar
+    - id: FoodCondimentBottleEnzyme
+    - id: DrinkSoyMilkCarton
+    - !type:AllSelector
+      rolls: 2
+      children:
+      - id: DrinkMilkCarton
+      # really, milk should go in the fridge. Unfortunately saltern only has freezers.
+      # yes, I'm using this as an excuse to not have to do extra work.
       - id: ReagentContainerFlour
-        amount: 2
-      - id: FoodBoxCloth
-        amount: 1
-      - id: ReagentContainerSugar
+      - id: BoxMousetrap
+    - !type:AllSelector
+      rolls: 3
+      children:
       - id: FoodCondimentPacketSalt
-        amount: 3
       - id: FoodCondimentPacketPepper
-        amount: 3
-      - id: FoodCondimentBottleEnzyme
-      # really, milk should go in the fridge. Unfortunately saltern only has freezers.
-      # yes, I'm using this as an excuse to not have to do extra work.
-      - id: DrinkMilkCarton
-        amount: 2
-      - id: DrinkSoyMilkCarton
 
 - type: entity
   id: ClosetJanitorFilled
   suffix: Filled
   parent: ClosetJanitor
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillClosetJanitor
+
+- type: entityTable
+  id: FillClosetJanitor
+  table: !type:AllSelector
+    children:
+    - id: WetFloorSign
+      amount: 3
+    - id: LightReplacer
+    - id: BoxLightMixed
+    - id: Holoprojector
+    - !type:AllSelector
+      rolls: 2
+      children:
       - id: MopItem
-        amount: 2
       - id: BoxMousetrap
-        amount: 2
-      - id: WetFloorSign
-        amount: 3
       - id: TrashBag
-        amount: 2
-      - id: LightReplacer
-      - id: BoxLightMixed
-      - id: Holoprojector
       - id: SoapNT
-        amount: 2
       - id: FlashlightLantern
-        amount: 2
       - id: Plunger
-        amount: 2
       - id: WireBrush
-        amount: 2
 
 - type: entity
   id: ClosetLegalFilled
   suffix: Filled
   parent: ClosetLegal
   components:
-  - type: StorageFill
-    contents:
-      - id: BriefcaseBrownFilled
-        prob: 0.80
-      - id: ClothingOuterRobesJudge
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillClosetLegal
+
+- type: entityTable
+  id: FillClosetLegal
+  table: !type:AllSelector
+    children:
+    - id: BriefcaseBrownFilled
+      prob: 0.80
+    - id: ClothingOuterRobesJudge
 
 - type: entity
   id: LockerBotanistFilled
   suffix: Filled
   parent: LockerBotanist
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHandsGlovesLeather
-      - id: ClothingOuterApronBotanist
-      - id: ClothingHeadBandBotany
-      - id: ChemistryBottleRobustHarvest
-        prob: 0.3
-      - id: ClothingBeltPlant
-      - id: PlantBag ##Some maps don't have nutrivend
-      - id: BoxMouthSwab
-      - id: Dropper
-      - id: HandLabeler
-      - id: ClothingUniformOveralls
-      - id: ClothingHeadHatTrucker
-        prob: 0.1
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerBotanist
+
+- type: entityTable
+  id: FillLockerBotanist
+  table: !type:AllSelector
+    children:
+    - id: ClothingHandsGlovesLeather
+    - id: ClothingOuterApronBotanist
+    - id: ClothingHeadBandBotany
+    - id: ChemistryBottleRobustHarvest
+      prob: 0.3
+    - id: ClothingBeltPlant
+    - id: PlantBag ##Some maps don't have nutrivend
+    - id: BoxMouthSwab
+    - id: Dropper
+    - id: HandLabeler
+    - id: ClothingUniformOveralls
+    - id: ClothingHeadHatTrucker
+      prob: 0.1
 
 - type: entity
   id: LockerBotanistLoot
   suffix: Loot
   parent: LockerBotanist
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformOveralls
-      - id: ClothingHeadHatTrucker
-        prob: 0.3
-      - id: GatfruitSeeds
-        prob: 0.1
-      - id: FlyAmanitaSeeds
-        prob: 0.5
-      - id: NettleSeeds
-        prob: 0.7
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerBotanistLoot
+
+- type: entityTable
+  id: FillLockerBotanistLoot
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformOveralls
+    - id: ClothingHeadHatTrucker
+      prob: 0.3
+    - id: GatfruitSeeds
+      prob: 0.1
+    - id: FlyAmanitaSeeds
+      prob: 0.5
+    - id: NettleSeeds
+      prob: 0.7
 
 - type: entity
   id: ClosetJanitorBombFilled
   suffix: DO NOT MAP, Filled
   categories: [ DoNotMap ]
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetJanitorBombSuit
-      - id: ClothingOuterSuitJanitorBomb
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillClosetJanitorBomb
+
+- type: entityTable
+  id: FillClosetJanitorBomb
+  table: !type:AllSelector
+    children:
+    - id: ClothingHeadHelmetJanitorBombSuit
+    - id: ClothingOuterSuitJanitorBomb
index a35c5915abb8a31915a2dd06f307f8899d67f79f..940072a335cbf841e7608d6f30c61a05395c1cf7 100644 (file)
@@ -5,11 +5,18 @@
   suffix: NTSRA voidsuit locker
   parent: LockerSyndicate
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetAncient
-      - id: ClothingOuterHardsuitAncientEVA
-      - id: JetpackVoidFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FilLockerOldAISat
+
+- type: entityTable
+  id: FilLockerOldAISat
+  table: !type:AllSelector
+    children:
+    - id: ClothingHeadHelmetAncient
+    - id: ClothingOuterHardsuitAncientEVA
+    - id: JetpackVoidFilled
 
 #Syndicate ship armory stuff
 - type: entity
   parent: LockerSyndicate
   suffix: Basic ship gear, Random
   components:
-  - type: StorageFill
-    contents:
-      - id: CrowbarRed
-        prob: 0.6
-      - id: ClothingShoesBootsCombat
-        prob: 0.4
-      - id: ClothingUniformJumpsuitOperative
-        prob: 0.4
-      - id: ClothingHandsGlovesCombat
-        prob: 0.2
-      - id: ClothingBeltMilitaryWebbing
-        prob: 0.2
-        
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FilLockerSyndicateShipGearBasic
+
+- type: entityTable
+  id: FilLockerSyndicateShipGearBasic
+  table: !type:AllSelector
+    children:
+    - id: CrowbarRed
+      prob: 0.6
+    - id: ClothingShoesBootsCombat
+      prob: 0.4
+    - id: ClothingUniformJumpsuitOperative
+      prob: 0.4
+    - id: ClothingHandsGlovesCombat
+      prob: 0.2
+    - id: ClothingBeltMilitaryWebbing
+      prob: 0.2
+
 #Garunteed chameleon kit spawn, for the syndicate dropship
 - type: entity
   id: LockerSyndicateShipGearBasicChameleonKit
   parent: LockerSyndicateShipGearBasic
   suffix: Basic ship gear, Random, Chameleon Kit
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingBackpackChameleonFill
-      - id: CrowbarRed
-        prob: 0.6
-      - id: ClothingShoesBootsCombat
-        prob: 0.4
-      - id: ClothingUniformJumpsuitOperative
-        prob: 0.4
-      - id: ClothingHandsGlovesCombat
-        prob: 0.2
-      - id: ClothingBeltMilitaryWebbing
-        prob: 0.2
\ No newline at end of file
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FilLockerSyndicateShipGearBasicChameleonKit
+
+- type: entityTable
+  id: FilLockerSyndicateShipGearBasicChameleonKit
+  table: !type:AllSelector
+    children:
+    - id: ClothingBackpackChameleonFill
+    - id: CrowbarRed
+      prob: 0.6
+    - id: ClothingShoesBootsCombat
+      prob: 0.4
+    - id: ClothingUniformJumpsuitOperative
+      prob: 0.4
+    - id: ClothingHandsGlovesCombat
+      prob: 0.2
+    - id: ClothingBeltMilitaryWebbing
+      prob: 0.2
index ff9e81b929c7f05edecbdbc18611a126a5f79058..b914d3b850cfe33c41e9d6b1d593f5e35349cd1d 100644 (file)
@@ -5,12 +5,19 @@
   parent: SuitStorageBase
   suffix: EVA
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitEVA
-        - id: ClothingHeadHelmetEVA
-        - id: ClothingMaskBreath
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageEVA
+
+- type: entityTable
+  id: FillSuitStorageEVA
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterHardsuitEVA
+    - id: ClothingHeadHelmetEVA
+    - id: ClothingMaskBreath
 
 #Basic EVA (Big Ass Helmet)
 - type: entity
   parent: SuitStorageBase
   suffix: EVA, Large Helmet
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitEVA
-        - id: ClothingHeadHelmetEVALarge
-        - id: ClothingMaskBreath
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageEVAAlternate
+
+- type: entityTable
+  id: FillSuitStorageEVAAlternate
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterHardsuitEVA
+    - id: ClothingHeadHelmetEVALarge
+    - id: ClothingMaskBreath
 
 #Emergency EVA
 - type: entity
   parent: SuitStorageBase
   suffix: Emergency EVA
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterSuitEmergency
-        - id: ClothingMaskBreath
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageEVAEmergency
+
+- type: entityTable
+  id: FillSuitStorageEVAEmergency
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterSuitEmergency
+    - id: ClothingMaskBreath
 
 #Prisoner EVA
 - type: entity
   parent: SuitStorageBase
   suffix: Prisoner EVA
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitEVAPrisoner
-        - id: ClothingHeadHelmetEVALarge
-        - id: ClothingMaskBreath
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageEVAPrisoner
+
+- type: entityTable
+  id: FillSuitStorageEVAPrisoner
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterHardsuitEVAPrisoner
+    - id: ClothingHeadHelmetEVALarge
+    - id: ClothingMaskBreath
 
 #Syndicate EVA
 - type: entity
   parent: SuitStorageBase
   suffix: Syndicate EVA
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterEVASuitSyndicate
-        - id: ClothingHeadHelmetSyndicate
-        - id: ClothingMaskGasSyndicate
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageEVASyndicate
+
+- type: entityTable
+  id: FillSuitStorageEVASyndicate
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterEVASuitSyndicate
+    - id: ClothingHeadHelmetSyndicate
+    - id: ClothingMaskGasSyndicate
 
 #Pirate EVA
 - type: entity
   parent: SuitStorageBase
   suffix: Pirate EVA
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitPirateEVA
-        - id: ClothingMaskGas
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageEVAPirate
+
+- type: entityTable
+  id: FillSuitStorageEVAPirate
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterHardsuitPirateEVA
+    - id: ClothingMaskGas
 
 #NTSRA Voidsuit
 - type: entity
   parent: SuitStorageBase
   suffix: Ancient EVA
   components:
-  - type: StorageFill
-    contents:
-        - id: JetpackVoidFilled
-        - id: ClothingOuterHardsuitAncientEVA
-        - id: ClothingHeadHelmetAncient
-        - id: ClothingMaskBreath
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageEVANTSRA
+
+- type: entityTable
+  id: FillSuitStorageEVANTSRA
+  table: !type:AllSelector
+    children:
+    - id: JetpackVoidFilled
+    - id: ClothingOuterHardsuitAncientEVA
+    - id: ClothingHeadHelmetAncient
+    - id: ClothingMaskBreath
 
 #HARDSUITS
 #Engineering hardsuit
   parent: SuitStorageBase
   suffix: Security
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitSecurity
-        - id: ClothingMaskBreath
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageSecurity
   - type: AccessReader
     access: [["Security"]]
 
+- type: entityTable
+  id: FillSuitStorageSecurity
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterHardsuitSecurity
+    - id: ClothingMaskBreath
+
 #CE's hardsuit
 - type: entity
   id: SuitStorageCE
   parent: SuitStorageBase
   suffix: Warden
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitWarden
-        - id: ClothingMaskBreath
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillLockerWardenHarduit
   - type: AccessReader
     access: [["Armory"]]
 
   parent: SuitStorageBase
   suffix: Syndicate Hardsuit
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitSyndie
-        - id: ClothingShoesBootsMagSyndie
-        - id: ClothingMaskGasSyndicate
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageSyndie
+
+- type: entityTable
+  id: FillSuitStorageSyndie
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterHardsuitSyndie
+    - id: ClothingShoesBootsMagSyndie
+    - id: ClothingMaskGasSyndicate
 
 #Pirate Captain's hardsuit
 - type: entity
   parent: SuitStorageBase
   suffix: Pirate Captain
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingOuterHardsuitPirateCap
-        - id: ClothingMaskGas
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStoragePirateCap
+
+- type: entityTable
+  id: FillSuitStoragePirateCap
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingOuterHardsuitPirateCap
+    - id: ClothingMaskGas
 
 #Wizard
 - type: entity
   parent: SuitStorageBase
   suffix: Wizard
   components:
-  - type: StorageFill
-    contents:
-        - id: OxygenTankFilled
-        - id: ClothingMaskBreath
-        # TODO: Gone until reworked to have no space protection
-        #- id: ClothingOuterHardsuitWizard
-        #- id: JetpackVoidFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillSuitStorageWizard
+
+- type: entityTable
+  id: FillSuitStorageWizard
+  table: !type:AllSelector
+    children:
+    - id: OxygenTankFilled
+    - id: ClothingMaskBreath
+    # TODO: Gone until reworked to have no space protection
+    #- id: ClothingOuterHardsuitWizard
+    #- id: JetpackVoidFilled
index 4e885a08b29d25cf2c71858cd934e69dbddb0840..d65469ccd2918c7b7be4b78afa1c5c1a5e848535 100644 (file)
   suffix: Filled
   parent: WardrobeGrey
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitColorGrey
-        amount: 2
-      - id: ClothingUniformJumpskirtColorGrey
-        amount: 2
-      - id: ClothingShoesColorBlack
-        amount: 3
-      - id: ClothingHeadHatGreysoft
-      - id: ClothingBackpackDuffel
-        prob: 0.5
-      - id: ClothingOuterCoatBomber
-        prob: 0.3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeGrey
+
+- type: entity
+  id: ClosetWallWardrobeGreyFilled
+  suffix: Filled
+  parent: ClosetWallGrey
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeGrey
+
+- type: entityTable
+  id: FillWardrobeGrey
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitColorGrey
+      amount: 2
+    - id: ClothingUniformJumpskirtColorGrey
+      amount: 2
+    - id: ClothingShoesColorBlack
+      amount: 3
+    - id: ClothingHeadHatGreysoft
+    - id: ClothingBackpackDuffel
+      prob: 0.5
+    - id: ClothingOuterCoatBomber
+      prob: 0.3
 
 - type: entity
   id: WardrobeMixedFilled
   suffix: Filled
   parent: WardrobeMixed
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingShoesColorBlack
-        amount: 1
-      - id: ClothingShoesColorBrown
-        amount: 1
-      - id: ClothingShoesColorWhite
-        amount: 1
-      - id: ClothingOuterCoatBomber
-        prob: 0.4
-      - id: ClothingOuterCoatGentle
-        prob: 0.3
-      - id: ClothingUniformRandomShorts
-        amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeMixed
+
+- type: entity
+  id: ClosetWallWardrobeMixedFilled
+  suffix: Filled
+  parent: ClosetWallMixed
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeMixed
+
+- type: entityTable
+  id: FillWardrobeMixed
+  table: !type:AllSelector
+    children:
+    - id: ClothingShoesColorBlack
+    - id: ClothingShoesColorBrown
+    - id: ClothingShoesColorWhite
+    - id: ClothingOuterCoatBomber
+      prob: 0.4
+    - id: ClothingOuterCoatGentle
+      prob: 0.3
+    - id: ClothingUniformRandomShorts
+      amount: 3
+    - id: ClothingUniformRandomBra
+      amount: 5
+    - !type:AllSelector
+      rolls: 5
+      children:
       - id: ClothingUniformRandomArmless
-        amount: 5
+        prob: 0.8
       - id: ClothingUniformRandomStandard
-        amount: 5
-      - id: ClothingUniformRandomBra
-        amount: 5
+        prob: 0.8
       - id: ClothingUniformRandomShirt
-        amount: 4
+        prob: 0.8
 
 - type: entity
   id: WardrobeYellowFilled
   suffix: Filled
   parent: WardrobeYellow
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitColorYellow
-      - id: ClothingUniformJumpskirtColorYellow
-      - id: ClothingShoesColorOrange
-        amount: 2
-      - id: ClothingHeadBandGold
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeYellow
+
+- type: entity
+  id: ClosetWallWardrobeYellowFilled
+  suffix: Filled
+  parent: ClosetWallYellow
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeYellow
+
+- type: entityTable
+  id: FillWardrobeYellow
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitColorYellow
+    - id: ClothingUniformJumpskirtColorYellow
+    - id: ClothingShoesColorOrange
+      amount: 2
+    - id: ClothingHeadBandGold
 
 
 - type: entity
   suffix: Filled
   parent: WardrobeWhite
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitColorWhite
-      - id: ClothingUniformJumpskirtColorWhite
-      - id: ClothingShoesColorWhite
-        amount: 2
-      - id: ClothingHeadHatMimesoft
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeWhite
+
+- type: entity
+  id: ClosetWallWardrobeWhiteFilled
+  suffix: Filled
+  parent: ClosetWallWhite
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeWhite
+
+- type: entityTable
+  id: FillWardrobeWhite
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitColorWhite
+    - id: ClothingUniformJumpskirtColorWhite
+    - id: ClothingShoesColorWhite
+      amount: 2
+    - id: ClothingHeadHatMimesoft
 
 - type: entity
   id: WardrobeBlueFilled
   suffix: Filled
   parent: WardrobeBlue
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitColorBlue
-      - id: ClothingUniformJumpskirtColorBlue
-      - id: ClothingShoesColorBrown
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeBlue
+
+- type: entity
+  id: ClosetWallWardrobeBlueFilled
+  suffix: Filled
+  parent: ClosetWallBlue
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeBlue
+
+- type: entityTable
+  id: FillWardrobeBlue
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitColorBlue
+    - id: ClothingUniformJumpskirtColorBlue
+    - id: ClothingShoesColorBrown
+      amount: 2
 
 - type: entity
   id: WardrobePinkFilled
   suffix: Filled
   parent: WardrobePink
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitColorPink
-      - id: ClothingUniformJumpskirtColorPink
-      - id: ClothingShoesColorBrown
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobePink
+
+- type: entity
+  id: ClosetWallWardrobePinkFilled
+  suffix: Filled
+  parent: ClosetWallPink
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobePink
+
+- type: entityTable
+  id: FillWardrobePink
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitColorPink
+    - id: ClothingUniformJumpskirtColorPink
+    - id: ClothingShoesColorBrown
+      amount: 2
 
 - type: entity
   id: WardrobeBlackFilled
   suffix: Filled
   parent: WardrobeBlack
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitColorBlack
-      - id: ClothingUniformJumpskirtColorBlack
-      - id: ClothingShoesColorBlack
-        amount: 2
-      - id: ClothingHeadBandBlack
-      - id: ClothingHeadBandSkull
-        prob: 0.4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeBlack
+
+- type: entity
+  id: ClosetWallWardrobeBlackFilled
+  suffix: Filled
+  parent: ClosetWallBlack
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeBlack
+
+- type: entityTable
+  id: FillWardrobeBlack
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitColorBlack
+    - id: ClothingUniformJumpskirtColorBlack
+    - id: ClothingShoesColorBlack
+      amount: 2
+    - id: ClothingHeadBandBlack
+    - id: ClothingHeadBandSkull
+      prob: 0.4
 
 - type: entity
   id: WardrobeGreenFilled
   suffix: Filled
   parent: WardrobeGreen
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitColorGreen
-      - id: ClothingUniformJumpskirtColorGreen
-      - id: ClothingShoesColorBlack
-        amount: 2
-      - id: ClothingHeadBandGreen
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeGreen
+
+- type: entity
+  id: ClosetWallWardrobeGreenFilled
+  suffix: Filled
+  parent: ClosetWallGreen
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeGreen
+
+- type: entityTable
+  id: FillWardrobeGreen
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitColorGreen
+    - id: ClothingUniformJumpskirtColorGreen
+    - id: ClothingShoesColorBlack
+      amount: 2
+    - id: ClothingHeadBandGreen
index 49601980f30a16123a355b27635f396f73170dcd..dc944a803c377f3adc87ddf2720db61184bf60a6 100644 (file)
@@ -1,18 +1,83 @@
- - type: entity
-   id: WardrobePrisonFilled
-   suffix: Filled
-   parent: WardrobePrison
-   description: "Contains a selection of nice orange clothes for people enjoying their stay in the brig."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitPrisoner
-         amount: 2
-       - id: ClothingUniformJumpskirtPrisoner
-         amount: 2
-       - id: ClothingShoesColorBlack
-         amount: 2
-       - id: ClothingMaskMuzzle
+- type: entity
+  id: WardrobePrisonFilled
+  suffix: Filled
+  parent: WardrobePrison
+  description: "Contains a selection of nice orange clothes for people enjoying their stay in the brig."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobePrison
+
+- type: entity
+  id: ClosetWallWardrobePrisonFilled
+  suffix: Filled
+  parent: ClosetWallOrange
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobePrison
+
+- type: entityTable
+  id: FillWardrobePrison
+  table: !type:AllSelector
+    children:
+    - !type:AllSelector
+      rolls: 2
+      children:
+      - id: ClothingUniformJumpsuitPrisoner
+      - id: ClothingUniformJumpskirtPrisoner
+      - id: ClothingShoesColorBlack
+    - id: ClothingMaskMuzzle
+    - !type:GroupSelector
+      prob: 0.15
+      rolls: 2
+      children:
+      - id: FoodSnackBoritos
+      - id: FoodSnackCheesie
+      - id: FoodSnackChips
+      - id: FoodSnackRaisins
+      - id: FoodSnackMREBrownie
+      - id: FoodSnackChocolate
+      - id: FoodSnackChowMein
+    - !type:GroupSelector
+      prob: 0.25
+      children:
+      - id: BookRandomStory
+      - id: BookRandom
+    - !type:GroupSelector
+      prob: 0.15
+      children:
+      - id: Flare
+      - id: BarberScissors
+      - id: FlippoLighter
+      - id: trayScanner
+      - id: Wristwatch
+      - id: ClothingNeckBling
+      - id: ClothingMultipleHeadphones
+      - id: DiceBag
+      - id: PersonalAI
+      - id: CrayonBox
+      - id: HarmonicaInstrument
+      - id: ToyAmongPequeno
+      - id: WhoopieCushion
+      - id: Brutepack
+      - id: StrangePill
+      - id: Shiv
+    - !type:GroupSelector
+      prob: 0.1
+      children:
+      - id: CigPackBlack
+      - id: Joint
+      - id: Blunt
+      - id: PackPaperRolling
+      - id: Cigarette
+        amount: !type:RangeNumberSelector
+          range: 1, 4
+      - id: GroundCannabis
+        amount: !type:RangeNumberSelector
+          range: 1, 6
 
 #- type: entity
 #  id: WardrobePajamaFilled
 #  parent: WardrobeWhite
 #  name: pajama wardrobe
 
- - type: entity
-   id: WardrobeRoboticsFilled
-   suffix: Filled
-   parent: WardrobeRobotics
-   description: "You can build a robot out of this locker."
-   components:
-   - type: StorageFill
-     contents:
-     - id: ClothingOuterCoatRobo
-       amount: 2
-     - id: ClothingUniformJumpsuitRoboticist
-     - id: ClothingUniformJumpskirtRoboticist
-     - id: ClothingShoesColorBlack
-       amount: 2
-     - id: ClothingHandsGlovesFingerless
-       amount: 2
-
- - type: entity
-   id: WardrobeChemistryFilled
-   suffix: Filled
-   parent: WardrobeChemistry
-   description: "The sleek orange threads contained within make you much less likely to be thrown out of the chemistry lab."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitChemistry
-       - id: ClothingBackpackChemistry
-       - id: ClothingShoesColorWhite
-       - id: ClothingOuterCoatLabChem
-       - id: ClothingUniformJumpskirtChemistry
-
- - type: entity
-   id: WardrobeGeneticsFilled
-   suffix: Filled
-   parent: WardrobeGenetics
-   description: "The sleek blue threads contained within make you much less likely to be thrown out of the genetics lab."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitGenetics
-       - id: ClothingBackpackGenetics
-       - id: ClothingShoesColorWhite
-       - id: ClothingOuterCoatLabGene
-       - id: ClothingUniformJumpskirtGenetics
-
- - type: entity
-   id: WardrobeVirologyFilled
-   suffix: Filled
-   parent: WardrobeVirology
-   description: "The sleek green threads contained within make you much less likely to be thrown out of the virology lab."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitVirology
-       - id: ClothingBackpackVirology
-       - id: ClothingShoesColorWhite
-       - id: ClothingOuterCoatLabViro
-       - id: ClothingUniformJumpskirtVirology
-
- - type: entity
-   id: WardrobeScienceFilled
-   suffix: Filled
-   parent: WardrobeScience
-   description: "You've read a couple pop science articles, now it's time for the real deal."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitScientist
-       - id: ClothingBackpackScience
-       - id: ClothingShoesColorWhite
-       - id: ClothingOuterCoatRnd
-       - id: ClothingUniformJumpskirtScientist
-       - id: ClothingEyesGlasses
-         prob: 0.5
-       - id: CrowbarRed #The jojoke - hit video game Half-Life
-         prob: 0.1
-
-
- - type: entity
-   id: WardrobeBotanistFilled
-   suffix: Filled
-   parent: WardrobeBotanist
-   description: "Plant yourself among the plant men with these 100% natural plant-derived clothes."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitHydroponics
-       - id: ClothingBackpackHydroponics
-       - id: ClothingShoesColorBrown
-       - id: ClothingOuterApronBotanist
-       - id: ClothingUniformJumpskirtHydroponics
-       - id: ClothingUniformOveralls
-       - id: ClothingHeadHatTrucker #the hat itself is a subtle joke
-         prob: 0.15
-       - id: ClothingHandsGlovesLeather
-         prob: 0.5
-
- - type: entity
-   id: WardrobeMedicalDoctorFilled
-   suffix: Filled
-   parent: WardrobeMedicalDoctor
-   description: "We've all played doctor before, now practice medicine."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitMedicalDoctor
-       - id: ClothingBackpackMedical
-       - id: ClothingShoesColorWhite
-       - id: ClothingOuterCoatLab
-       - id: ClothingUniformJumpskirtMedicalDoctor
-       - id: ClothingHandsGlovesLatex
-         prob: 0.4
-       - id: ClothingEyesGlasses
-         prob: 0.3
-
- - type: entity
-   id: WardrobeChapelFilled
-   suffix: Filled
-   parent: WardrobeChapel
-   description: "You have to look presentable for your flock."
-   components:
-   - type: StorageFill
-     contents: # todo chaplain backpack
-       - id: ClothingUniformJumpsuitChaplain
-       - id: ClothingShoesColorBlack
-       - id: ClothingUniformJumpskirtChaplain
-
- - type: entity
-   id: WardrobeSecurityFilled
-   suffix: Filled
-   parent: WardrobeSecurity
-   description: "Cross the thin red line."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitSec
-       - id: ClothingBackpackSecurity
-       - id: ClothingShoesBootsJack
-       - id: ClothingEyesGlassesSunglasses
-       - id: ClothingHeadHelmetBasic
-       - id: ClothingOuterArmorBasic
-       - id: ClothingUniformJumpskirtSec
-
- - type: entity
-   id: WardrobeCargoFilled
-   suffix: Filled
-   parent: WardrobeCargo
-   description: "This locker? Maybe 500 spesos. Brotherhood? Priceless."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingHeadHatCargosoft
-       - id: ClothingUniformJumpsuitCargo
-       - id: ClothingBackpack
-       - id: ClothingShoesColorBlack
-       - id: ClothingUniformJumpskirtCargo
-       - id: ClothingHandsGlovesFingerless
-       - id: AppraisalTool
-
- - type: entity
-   id: WardrobeSalvageFilled
-   suffix: Filled
-   parent: WardrobeSalvage
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingBackpack
-       - id: ClothingShoesBootsSalvage
-         amount: 2
-       - id: ClothingUniformJumpsuitSalvageSpecialist
-         amount: 2
-
- - type: entity
-   id: WardrobeAtmosphericsFilled
-   suffix: Filled
-   parent: WardrobeAtmospherics
-   description: "This locker contains a uniform for atmospheric technicians."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingUniformJumpsuitAtmos
-       - id: ClothingBackpackEngineering
-       - id: ClothingShoesColorWhite
-       - id: ClothingUniformJumpskirtAtmos
-
- - type: entity
-   id: WardrobeEngineeringFilled
-   suffix: Filled
-   parent: WardrobeEngineering
-   description: "This locker contains a uniform for engineering or social engineering."
-   components:
-   - type: StorageFill
-     contents:
-       - id: ClothingHeadHatHardhatYellow
-       - id: ClothingUniformJumpsuitEngineering
-       - id: ClothingBackpackEngineering
-       - id: ClothingShoesBootsWork
-       - id: ClothingOuterVestHazard
-       - id: ClothingUniformJumpskirtEngineering
+- type: entity
+  id: WardrobeRoboticsFilled
+  suffix: Filled
+  parent: WardrobeRobotics
+  description: "You can build a robot out of this locker."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeRobotics
+
+- type: entityTable
+  id: FillWardrobeRobotics
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitRoboticist
+    - id: ClothingUniformJumpskirtRoboticist
+    - !type:AllSelector
+      rolls: 2
+      children:
+      - id: ClothingOuterCoatRobo
+      - id: ClothingShoesColorBlack
+      - id: ClothingHandsGlovesFingerless
+
+- type: entity
+  id: WardrobeChemistryFilled
+  suffix: Filled
+  parent: WardrobeChemistry
+  description: "The sleek orange threads contained within make you much less likely to be thrown out of the chemistry lab."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeChemistry
+
+- type: entityTable
+  id: FillWardrobeChemistry
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitChemistry
+    - id: ClothingBackpackChemistry
+    - id: ClothingShoesColorWhite
+    - id: ClothingOuterCoatLabChem
+    - id: ClothingUniformJumpskirtChemistry
+
+- type: entity
+  id: WardrobeGeneticsFilled
+  suffix: Filled
+  parent: WardrobeGenetics
+  description: "The sleek blue threads contained within make you much less likely to be thrown out of the genetics lab."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeGenetics
+
+- type: entityTable
+  id: FillWardrobeGenetics
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitGenetics
+    - id: ClothingBackpackGenetics
+    - id: ClothingShoesColorWhite
+    - id: ClothingOuterCoatLabGene
+    - id: ClothingUniformJumpskirtGenetics
+
+- type: entity
+  id: WardrobeVirologyFilled
+  suffix: Filled
+  parent: WardrobeVirology
+  description: "The sleek green threads contained within make you much less likely to be thrown out of the virology lab."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeVirology
+
+- type: entityTable
+  id: FillWardrobeVirology
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitVirology
+    - id: ClothingBackpackVirology
+    - id: ClothingShoesColorWhite
+    - id: ClothingOuterCoatLabViro
+    - id: ClothingUniformJumpskirtVirology
+
+- type: entity
+  id: WardrobeScienceFilled
+  suffix: Filled
+  parent: WardrobeScience
+  description: "You've read a couple pop science articles, now it's time for the real deal."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeScience
+
+- type: entityTable
+  id: FillWardrobeScience
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitScientist
+    - id: ClothingBackpackScience
+    - id: ClothingShoesColorWhite
+    - id: ClothingOuterCoatRnd
+    - id: ClothingUniformJumpskirtScientist
+    - id: ClothingEyesGlasses
+      prob: 0.5
+    - id: CrowbarRed #The jojoke - hit video game Half-Life
+      prob: 0.1
+
+- type: entity
+  id: WardrobeBotanistFilled
+  suffix: Filled
+  parent: WardrobeBotanist
+  description: "Plant yourself among the plant men with these 100% natural plant-derived clothes."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeBotanist
+
+- type: entityTable
+  id: FillWardrobeBotanist
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitHydroponics
+    - id: ClothingBackpackHydroponics
+    - id: ClothingShoesColorBrown
+    - id: ClothingOuterApronBotanist
+    - id: ClothingUniformJumpskirtHydroponics
+    - id: ClothingUniformOveralls
+    - id: ClothingHeadHatTrucker #the hat itself is a subtle joke
+      prob: 0.15
+    - id: ClothingHandsGlovesLeather
+      prob: 0.5
+
+- type: entity
+  id: WardrobeMedicalDoctorFilled
+  suffix: Filled
+  parent: WardrobeMedicalDoctor
+  description: "We've all played doctor before, now practice medicine."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeMedicalDoctor
+
+- type: entityTable
+  id: FillWardrobeMedicalDoctor
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitMedicalDoctor
+    - id: ClothingBackpackMedical
+    - id: ClothingShoesColorWhite
+    - id: ClothingOuterCoatLab
+    - id: ClothingUniformJumpskirtMedicalDoctor
+    - id: ClothingHandsGlovesLatex
+      prob: 0.4
+    - id: ClothingEyesGlasses
+      prob: 0.3
+
+- type: entity
+  id: WardrobeChapelFilled
+  suffix: Filled
+  parent: WardrobeChapel
+  description: "You have to look presentable for your flock."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeChapel
+
+- type: entityTable
+  id: FillWardrobeChapel
+  table: !type:AllSelector
+    children:
+    # todo chaplain backpack
+    - id: ClothingUniformJumpsuitChaplain
+    - id: ClothingShoesColorBlack
+    - id: ClothingUniformJumpskirtChaplain
+
+- type: entity
+  id: WardrobeSecurityFilled
+  suffix: Filled
+  parent: WardrobeSecurity
+  description: "Cross the thin red line."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeSecurity
+
+- type: entityTable
+  id: FillWardrobeSecurity
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitSec
+    - id: ClothingBackpackSecurity
+    - id: ClothingShoesBootsJack
+    - id: ClothingEyesGlassesSunglasses
+    - id: ClothingHeadHelmetBasic
+    - id: ClothingOuterArmorBasic
+    - id: ClothingUniformJumpskirtSec
+
+- type: entity
+  id: WardrobeCargoFilled
+  suffix: Filled
+  parent: WardrobeCargo
+  description: "This locker? Maybe 500 spesos. Brotherhood? Priceless."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeCargo
+
+- type: entityTable
+  id: FillWardrobeCargo
+  table: !type:AllSelector
+    children:
+    - id: ClothingHeadHatCargosoft
+    - id: ClothingUniformJumpsuitCargo
+    - id: ClothingBackpack
+    - id: ClothingShoesColorBlack
+    - id: ClothingUniformJumpskirtCargo
+    - id: ClothingHandsGlovesFingerless
+    - id: AppraisalTool
+
+- type: entity
+  id: WardrobeSalvageFilled
+  suffix: Filled
+  parent: WardrobeSalvage
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeSalvage
+
+- type: entityTable
+  id: FillWardrobeSalvage
+  table: !type:AllSelector
+    children:
+    - id: ClothingBackpack
+    - id: ClothingShoesBootsSalvage
+      amount: 2
+    - id: ClothingUniformJumpsuitSalvageSpecialist
+      amount: 2
+
+- type: entity
+  id: WardrobeAtmosphericsFilled
+  suffix: Filled
+  parent: WardrobeAtmospherics
+  description: "This locker contains a uniform for atmospheric technicians."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeAtmospherics
+
+- type: entity
+  id: ClosetWallWardrobeAtmosphericsFilled
+  suffix: Filled
+  parent: ClosetWallAtmospherics
+  description: "This locker contains a uniform for atmospheric technicians."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeAtmospherics
+
+- type: entityTable
+  id: FillWardrobeAtmospherics
+  table: !type:AllSelector
+    children:
+    - id: ClothingUniformJumpsuitAtmos
+    - id: ClothingBackpackEngineering
+    - id: ClothingShoesColorWhite
+    - id: ClothingUniformJumpskirtAtmos
+
+- type: entity
+  id: WardrobeEngineeringFilled
+  suffix: Filled
+  parent: WardrobeEngineering
+  description: "This locker contains a uniform for engineering or social engineering."
+  components:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:NestedSelector
+        tableId: FillWardrobeEngineering
+
+- type: entityTable
+  id: FillWardrobeEngineering
+  table: !type:AllSelector
+    children:
+    - id: ClothingHeadHatHardhatYellow
+    - id: ClothingUniformJumpsuitEngineering
+    - id: ClothingBackpackEngineering
+    - id: ClothingShoesBootsWork
+    - id: ClothingOuterVestHazard
+    - id: ClothingUniformJumpskirtEngineering