]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Replace (almost) all existing storage fills with entity table container fills (#41360)
authorSnappingOpossum <snappingopossum@outlook.com>
Sun, 23 Nov 2025 20:12:50 +0000 (07:12 +1100)
committerGitHub <noreply@github.com>
Sun, 23 Nov 2025 20:12:50 +0000 (20:12 +0000)
* Replace all existing storage fills with container fills, adjust some formatting to accomadate

* Forgot to remove that

* I really need to spell better

* Right, those are 3x3

* Change some NestedSelectors to GroupSelectors

* Actual container fills, test fix (maybe), and a few minor formatting changes

* Fix some more mistakes

* Forgot to add to that comment

* Some parenting fixes

* Test optimisation, maybe

* Roll holiday lights instead of individually listing it

* Move eletrical toolbox to NestedSelector

* Back to entity tables (except for vending)

* More nesting (and a TODO)

* Yet another fix

* Probably shoulda done it this way originally

* Entity tables for vending restocks

* I am good at formatting

* Make added table names consistent

* Make grand lottery weights a little more readable

* Use existing fills for bio suit crates

* Get rid of some more redundant amounts

* Nuke the StorageFill test section and update some comments

* Apply changes from code review

* Split off changes to vending restocks

* Split off changes to vending restocks

* Apply more changes from code review

* Attempt #2 of detangling this mess (oh shit I missed the pin)

* They look so similar

* I am great at formatting

* Missed a newline

* How did I manage to do that

* Move toy in FoodMealHappyHonkClown to top to prioritise

* Apply changes from review and move dank pizza to organise by weight

59 files changed:
Resources/Prototypes/Catalog/Fills/Backpacks/backpack.yml
Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml
Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml
Resources/Prototypes/Catalog/Fills/Boxes/emergency.yml
Resources/Prototypes/Catalog/Fills/Boxes/general.yml
Resources/Prototypes/Catalog/Fills/Boxes/heads.yml
Resources/Prototypes/Catalog/Fills/Boxes/medical.yml
Resources/Prototypes/Catalog/Fills/Boxes/science.yml
Resources/Prototypes/Catalog/Fills/Boxes/security.yml
Resources/Prototypes/Catalog/Fills/Boxes/service.yml
Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml
Resources/Prototypes/Catalog/Fills/Crates/antag.yml
Resources/Prototypes/Catalog/Fills/Crates/armory.yml
Resources/Prototypes/Catalog/Fills/Crates/botany.yml
Resources/Prototypes/Catalog/Fills/Crates/cargo.yml
Resources/Prototypes/Catalog/Fills/Crates/chemistry.yml
Resources/Prototypes/Catalog/Fills/Crates/emergency.yml
Resources/Prototypes/Catalog/Fills/Crates/engineering.yml
Resources/Prototypes/Catalog/Fills/Crates/engines.yml
Resources/Prototypes/Catalog/Fills/Crates/food.yml
Resources/Prototypes/Catalog/Fills/Crates/fun.yml
Resources/Prototypes/Catalog/Fills/Crates/materials.yml
Resources/Prototypes/Catalog/Fills/Crates/medical.yml
Resources/Prototypes/Catalog/Fills/Crates/npc.yml
Resources/Prototypes/Catalog/Fills/Crates/permaescape.yml
Resources/Prototypes/Catalog/Fills/Crates/salvage.yml
Resources/Prototypes/Catalog/Fills/Crates/science.yml
Resources/Prototypes/Catalog/Fills/Crates/security.yml
Resources/Prototypes/Catalog/Fills/Crates/service.yml
Resources/Prototypes/Catalog/Fills/Crates/shuttle.yml
Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml
Resources/Prototypes/Catalog/Fills/Items/belt.yml
Resources/Prototypes/Catalog/Fills/Items/briefcases.yml
Resources/Prototypes/Catalog/Fills/Items/firstaidkits.yml
Resources/Prototypes/Catalog/Fills/Items/toolboxes.yml
Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml
Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/cartons.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/packs.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/rolling_paper.yml
Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigars/case.yml
Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/guardian_activators.yml
Resources/Prototypes/Entities/Objects/Fun/crayons.yml
Resources/Prototypes/Entities/Objects/Fun/dice_bag.yml
Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml
Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml
Resources/Prototypes/Entities/Objects/Misc/folders.yml
Resources/Prototypes/Entities/Objects/Misc/medalcase.yml
Resources/Prototypes/Entities/Objects/Misc/monkeycube.yml
Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml
Resources/Prototypes/Entities/Objects/Specific/Security/evidence-marker.yml
Resources/Prototypes/Entities/Objects/Tools/cowtools.yml
Resources/Prototypes/Entities/Objects/Tools/matches.yml
Resources/Prototypes/Entities/Structures/Dispensers/booze.yml
Resources/Prototypes/Entities/Structures/Dispensers/chem.yml
Resources/Prototypes/Entities/Structures/Dispensers/soda.yml
Resources/Prototypes/Entities/Structures/Furniture/dresser.yml

index 4713d8d5bddd8a42f431e7f569acefc24e038a47..f9b088185270e3e6dc3c30c34f39f5d1ab71255a 100644 (file)
   name: syndicate raid suit bundle
   description: "Contains the Syndicate's durable raid armor suit."
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingOuterArmorRaid
-    - id: ClothingHeadHelmetRaid
-    - id: ClothingMaskGasSyndicate
-    - id: ClothingHandsGlovesCombat
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingOuterArmorRaid
+        - id: ClothingHeadHelmetRaid
+        - id: ClothingMaskGasSyndicate
+        - id: ClothingHandsGlovesCombat
index 2a8a195be7befa046577f6955c9ad89e572cb49b..6ae9e32a5986f2dfa4c4353274d4946017df6604 100644 (file)
@@ -4,14 +4,16 @@
   name: surgical duffel bag
   description: "A large duffel bag for holding extra medical supplies - this one seems to be designed for holding surgical tools."
   components:
-  - type: StorageFill
-    contents:
-      - id: Hemostat
-      - id: Saw
-      - id: Drill
-      - id: Cautery
-      - id: Retractor
-      - id: Scalpel
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Hemostat
+        - id: Saw
+        - id: Drill
+        - id: Cautery
+        - id: Retractor
+        - id: Scalpel
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateMedicalBundle
   name: syndicate surgical duffel bag
   description: A large duffel bag containing a full suite of surgical tools.
   components:
-  - type: StorageFill
-    contents:
-      - id: Hemostat
-      - id: SawAdvanced
-      - id: Drill
-      - id: Cautery
-      - id: Retractor
-      - id: ScalpelAdvanced
-      - id: ClothingHandsGlovesNitrile
-      - id: EmergencyRollerBedSpawnFolded
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Hemostat
+        - id: SawAdvanced
+        - id: Drill
+        - id: Cautery
+        - id: Retractor
+        - id: ScalpelAdvanced
+        - id: ClothingHandsGlovesNitrile
+        - id: EmergencyRollerBedSpawnFolded
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: Bulldog bundle
   description: "Lean and mean: Contains the popular Bulldog Shotgun, a 12g slug drum, and four 12g buckshot drums." #, and a pair of Thermal Imaging Goggles.
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponShotgunBulldog
-      - id: MagazineShotgun
-        amount: 3
-      - id: MagazineShotgunSlug
-#     - id: ThermalImagingGoggles
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponShotgunBulldog
+        - id: MagazineShotgun
+          amount: 3
+        - id: MagazineShotgunSlug
+#       - id: ThermalImagingGoggles
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: C-20r bundle
   description: "Old faithful: The classic C-20r Submachine Gun, bundled with three magazines." #, and a Suppressor.
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponSubMachineGunC20r
-      - id: MagazinePistolSubMachineGun
-        amount: 2
-#     - id: SMGSuppressor
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponSubMachineGunC20r
+        - id: MagazinePistolSubMachineGun
+          amount: 2
+#       - id: SMGSuppressor
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: Estoc DMR bundle
   description: "For medium-range sharpshooting, the Estoc DMR. Bundled with three magazines."
   components:
-  - type: StorageFill
-    contents:
-    - id: WeaponRifleEstoc
-    - id: MagazineRifle
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponRifleEstoc
+        - id: MagazineRifle
+          amount: 2
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: Python bundle
   description: "Go loud and proud with a fully loaded Magnum Python, bundled with two speed loaders."
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponRevolverPythonAP
-      - id: SpeedLoaderMagnumAP
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponRevolverPythonAP
+        - id: SpeedLoaderMagnumAP
+          amount: 2
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: L6 Saw bundle
   description: "More dakka: The iconic L6 lightmachinegun, bundled with 2 box magazines."
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponLightMachineGunL6
-      - id: MagazineLightRifleBox
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponLightMachineGunL6
+        - id: MagazineLightRifleBox
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: China-Lake bundle
   description: "An old China-Lake grenade launcher bundled with 11 rounds of various destruction capability."
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponLauncherChinaLake
-      - id: GrenadeBlast
-        amount: 4
-      - id: GrenadeFrag
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponLauncherChinaLake
+        - id: GrenadeBlast
+          amount: 4
+        - id: GrenadeFrag
+          amount: 4
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: M-90gl bundle
   description: "A versatile battle rifle with an attached grenade launcher, bundled with 3 magazines and 6 grenades of various capabilities."
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponRifleM90GrenadeLauncher
-      - id: MagazineRifle
-        amount: 2
-      - id: GrenadeBlast
-        amount: 2
-      - id: GrenadeFlash
-        amount: 2
-      - id: GrenadeFrag
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponRifleM90GrenadeLauncher
+        - id: MagazineRifle
+          amount: 2
+        - id: GrenadeBlast
+          amount: 2
+        - id: GrenadeFlash
+          amount: 2
+        - id: GrenadeFrag
+          amount: 2
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateAmmo
   name: ammo bundle
   description: "Reloading! Contains 4 magazines for the C-20r, 5 drums for the Bulldog, 3 magazines for the Estoc DMR, and 2 ammo boxes for the L6 SAW."
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolSubMachineGun
-        amount: 4
-      - id: MagazineShotgun
-        amount: 4
-      - id: MagazineRifle
-        amount: 3
-      - id: MagazineShotgunSlug
-        amount: 1
-      - id: MagazineLightRifleBox
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: MagazinePistolSubMachineGun
+          amount: 4
+        - id: MagazineShotgun
+          amount: 4
+        - id: MagazineRifle
+          amount: 3
+        - id: MagazineShotgunSlug
+        - id: MagazineLightRifleBox
+          amount: 2
 
 - type: entity
   parent: ClothingBackpackDuffelClown
   components:
   - type: Tag
     tags: [] # ignore "WhitelistChameleon" tag
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitClown
-      - id: ClothingShoesClown
-      - id: ClothingMaskClown
-      - id: BikeHorn
-      - id: ClownPDA
-      - id: ClothingHeadsetService
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingUniformJumpsuitClown
+        - id: ClothingShoesClown
+        - id: ClothingMaskClown
+        - id: BikeHorn
+        - id: ClownPDA
+        - id: ClothingHeadsetService
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: carp suit duffel bag
   description: Contains a carp suit and some friends to play with.
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingOuterSuitCarp
-    - id: PlushieCarp
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingOuterSuitCarp
+        - id: PlushieCarp
+          amount: 6
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   - type: Storage
     grid:
     - 0,0,8,4
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitPyjamaSyndicateRed
-      - id: ClothingUniformJumpsuitPyjamaSyndicateBlack
-      - id: ClothingUniformJumpsuitPyjamaSyndicatePink
-      - id: ClothingHeadPyjamaSyndicateRed
-      - id: ClothingHeadPyjamaSyndicateBlack
-      - id: ClothingHeadPyjamaSyndicatePink
-      - id: ClothingShoesSlippers
-        amount: 3
-      - id: BedsheetSyndie
-        amount: 3
-      - id: PlushieCarp
-      - id: PlushieNuke
-      - id: PlushieLizard
-      - id: PlushieSharkBlue
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingUniformJumpsuitPyjamaSyndicateRed
+        - id: ClothingUniformJumpsuitPyjamaSyndicateBlack
+        - id: ClothingUniformJumpsuitPyjamaSyndicatePink
+        - id: ClothingHeadPyjamaSyndicateRed
+        - id: ClothingHeadPyjamaSyndicateBlack
+        - id: ClothingHeadPyjamaSyndicatePink
+        - id: ClothingShoesSlippers
+          amount: 3
+        - id: BedsheetSyndie
+          amount: 3
+        - id: PlushieCarp
+        - id: PlushieNuke
+        - id: PlushieLizard
+        - id: PlushieSharkBlue
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate C-4 bundle
   description: "Contains a lot of C-4 charges."
   components:
-    - type: StorageFill
-      contents:
-        - id: C4
-          amount: 8
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: C4
+        amount: 8
 
 - type: entity
   parent: ClothingBackpackChameleon
   id: ClothingBackpackChameleonFill
   suffix: Fill, Chameleon
   components:
-    - type: StorageFill
-      contents:
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
         - id: ChameleonPDA
         - id: ClothingUniformJumpsuitChameleon
         - id: ClothingOuterChameleon
   name: syndicate EVA bundle
   description: "Contains the Syndicate approved EVA suit."
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetSyndicate
-      - id: ClothingOuterEVASuitSyndicate
-      - id: ClothingMaskGasSyndicate
-      - id: ClothingHandsGlovesColorYellowBudget
-      - id: DoubleEmergencyOxygenTankFilled
-      - id: DoubleEmergencyNitrogenTankFilled
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingHeadHelmetSyndicate
+        - id: ClothingOuterEVASuitSyndicate
+        - id: ClothingMaskGasSyndicate
+        - id: ClothingHandsGlovesColorYellowBudget
+        - id: DoubleEmergencyOxygenTankFilled
+        - id: DoubleEmergencyNitrogenTankFilled
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate hardsuit bundle
   description: "Contains the Syndicate's signature blood red hardsuit."
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterHardsuitSyndie
-      - id: ClothingMaskGasSyndicate
-      - id: ClothingHandsGlovesCombat
-      - id: DoubleEmergencyOxygenTankFilled
-      - id: DoubleEmergencyNitrogenTankFilled
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingOuterHardsuitSyndie
+        - !type:NestedSelector
+          tableId: SyndicateHardsuitExtrasEntityTable
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate elite hardsuit bundle
   description: "Contains the Syndicate's elite hardsuit, which comes with some more stuff in it."
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterHardsuitSyndieElite
-      - id: ClothingMaskGasSyndicate
-      - id: ClothingHandsGlovesCombat
-      - id: DoubleEmergencyOxygenTankFilled
-      - id: DoubleEmergencyNitrogenTankFilled
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingOuterHardsuitSyndieElite
+        - !type:NestedSelector
+          tableId: SyndicateHardsuitExtrasEntityTable
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate hardsuit extras bundle
   description: "Contains stuff that you will absolutely want to have when purchasing a hardsuit."
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingMaskGasSyndicate
-      - id: ClothingHandsGlovesCombat
-      - id: DoubleEmergencyOxygenTankFilled
-      - id: DoubleEmergencyNitrogenTankFilled
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:NestedSelector
+        tableId: SyndicateHardsuitExtrasEntityTable
+
+- type: entityTable
+  id: SyndicateHardsuitExtrasEntityTable
+  table: !type:AllSelector
+    children:
+    - id: ClothingMaskGasSyndicate
+    - id: ClothingHandsGlovesCombat
+    - id: DoubleEmergencyOxygenTankFilled
+    - id: DoubleEmergencyNitrogenTankFilled
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: syndicate zombie bundle
   description: "An all-in-one kit for unleashing the undead upon a station."
   components:
-  - type: StorageFill
-    contents:
-      - id: SyringeRomerol
-      - id: WeaponRevolverPython
-      - id: MagazineBoxMagnumIncendiary
-      - id: PillAmbuzolPlus
-      - id: PillAmbuzol
-        amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: SyringeRomerol
+        - id: WeaponRevolverPython
+        - id: MagazineBoxMagnumIncendiary
+        - id: PillAmbuzolPlus
+        - id: PillAmbuzol
+          amount: 3
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateMedicalBundle
   name: medical bundle
   description: "All you need to get your comrades back in the fight."
   components:
-  - type: StorageFill
-    contents:
-      - id: DefibrillatorSyndicate
-      - id: MedkitCombatFilled
-        amount: 4
-      - id: Tourniquet
-        amount: 4
-      - id: CombatMedipen
-        amount: 4
-      - id: PunctAutoInjector
-        amount: 4
-      - id: PyraAutoInjector
-        amount: 4
-      - id: AirlossAutoInjector
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: DefibrillatorSyndicate
+        - id: MedkitCombatFilled
+          amount: 4
+        - id: Tourniquet
+          amount: 4
+        - id: CombatMedipen
+          amount: 4
+        - id: PunctAutoInjector
+          amount: 4
+        - id: PyraAutoInjector
+          amount: 4
+        - id: AirlossAutoInjector
+          amount: 4
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: decoy bundle
   description: "Contains distractions, both auditory and visual. Smell coming soon."
   components:
-  - type: StorageFill
-    contents:
-      - id: BalloonOperative
-      - id: BalloonAgent
-      - id: BalloonElite
-      - id: BalloonJuggernaut
-      - id: BalloonCommander
-      - id: SnapPopBox
-      - id: GrenadeDummy
-        amount: 2
-      - id: SyndieTrickyBomb
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: BalloonOperative
+        - id: BalloonAgent
+        - id: BalloonElite
+        - id: BalloonJuggernaut
+        - id: BalloonCommander
+        - id: SnapPopBox
+        - id: GrenadeDummy
+          amount: 2
+        - id: SyndieTrickyBomb
+          amount: 2
 
 - type: entity
   parent: [ ClothingBackpackDuffelBundle, BaseMajorContraband ]
   name: acolyte armor bundle
   description: "Contains the Acolyte Armor, the must have of any cult leader."
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingOuterArmorCult
-    - id: ClothingHeadHelmetCult
-    - id: ClothingShoesCult
-    - id: BedsheetCult
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingOuterArmorCult
+        - id: ClothingHeadHelmetCult
+        - id: ClothingShoesCult
+        - id: BedsheetCult
 
 - type: entity
   parent: ClothingBackpackDuffelSyndicateBundle
   name: basic operative bundle
   description: "Contains a weapon, medical supplies, breaching tools, spare ammo, and some simple utilities."
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponSubMachineGunC20r
-      - id: MagazinePistolSubMachineGun
-        amount: 3
-      - id: MagazinePistol
-      - id: SyndicateJawsOfLife
-      - id: C4
-        amount: 2
-      - id: MedkitCombatFilled
-      - id: EmpImplanter
-      - id: ClothingShoesBootsMagSyndie
-      - id: AgentIDCard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponSubMachineGunC20r
+        - id: MagazinePistolSubMachineGun
+          amount: 3
+        - id: MagazinePistol
+        - id: SyndicateJawsOfLife
+        - id: C4
+          amount: 2
+        - id: MedkitCombatFilled
+        - id: EmpImplanter
+        - id: ClothingShoesBootsMagSyndie
+        - id: AgentIDCard
index 06005c274f7b68fc87a596d964ba8499fbec4a36..d0d70a1a88b4d8c90caad9f34520693ae92aee3d 100644 (file)
   id: BoxMagazinePistolCaselessRifle
   description: A box full of .25 caseless magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolCaselessRifle
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolCaselessRifle
         amount: 4
 
 - type: entity
   id: BoxMagazinePistolCaselessRiflePractice
   description: A box full of .25 caseless practice magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolCaselessRiflePractice
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolCaselessRiflePractice
         amount: 4
 
 # LightRifle
   id: BoxMagazineLightRifle
   description: A box full of .30 rifle magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineLightRifle
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineLightRifle
         amount: 4
 
 - type: entity
   id: BoxMagazineLightRiflePractice
   description: A box full of .30 rifle (practice) magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineLightRiflePractice
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineLightRiflePractice
         amount: 4
 
 # Magnum
   id: BoxMagazinePistolSubMachineGunTopMounted
   description: A box full of WT550 .35 auto magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolSubMachineGunTopMounted
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolSubMachineGunTopMounted
         amount: 3
 
 - type: entity
   id: BoxMagazinePistol
   description: A box full of pistol .35 auto magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistol
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistol
         amount: 4
 
 - type: entity
   id: BoxMagazinePistolPractice
   description: A box full of  magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolPractice
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolPractice
         amount: 4
 
 - type: entity
   id: BoxMagazinePistolHighCapacity
   description: A box full of machine pistol .35 auto magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolHighCapacity
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolHighCapacity
         amount: 4
 
 - type: entity
   id: BoxMagazinePistolHighCapacityPractice
   description: A box full of machine pistol .35 auto (practice) magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolHighCapacityPractice
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolHighCapacityPractice
         amount: 4
 
 - type: entity
   id: BoxMagazinePistolSubMachineGun
   description: A box full of SMG .35 auto magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolSubMachineGun
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolSubMachineGun
         amount: 3
 
 - type: entity
   id: BoxMagazinePistolSubMachineGunPractice
   description: A box full of SMG .35 auto (practice) magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazinePistolSubMachineGunPractice
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazinePistolSubMachineGunPractice
         amount: 3
 
 # Shotgun
   id: BoxMagazineShotgun
   description: A box full of (.50 pellet) ammo drums.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineShotgun
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineShotgun
         amount: 4
 
 - type: entity
   id: BoxMagazineShotgunBeanbag
   description: A box full of (.50 beanbag) ammo drums.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineShotgunBeanbag
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineShotgunBeanbag
         amount: 4
 
 - type: entity
   id: BoxMagazineShotgunSlug
   description: A box full of (.50 slug) ammo drums.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineShotgunSlug
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineShotgunSlug
         amount: 4
 
 - type: entity
   id: BoxMagazineShotgunIncendiary
   description: A box full of (.50 incendiary) ammo drums.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineShotgunIncendiary
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineShotgunIncendiary
         amount: 4
 
 # Rifle
   id: BoxMagazineRifle
   description: A box full of .20 rifle magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineRifle
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineRifle
         amount: 4
 
 - type: entity
   id: BoxMagazineRiflePractice
   description: A box full of .20 rifle (practice) magazines.
   components:
-  - type: StorageFill
-    contents:
-      - id: MagazineRiflePractice
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MagazineRiflePractice
         amount: 4
index 29f561c1b8670f8fe9d6bc9210c9ebd20786f253..3a9593dbe95686815a17c84d39863fd405b870ec 100644 (file)
@@ -5,14 +5,16 @@
   description: It's a box with basic internals inside.
   suffix: Standard
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: EmergencyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: EmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   id: BoxSurvivalNitrogen
   suffix: Standard N2
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: EmergencyNitrogenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: EmergencyNitrogenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   description: It's a box with basic internals inside. This one is labelled to contain an extended-capacity tank.
   suffix: Extended
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: ExtendedEmergencyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: ExtendedEmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   id: BoxSurvivalEngineeringNitrogen
   suffix: Extended N2
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: ExtendedEmergencyNitrogenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: ExtendedEmergencyNitrogenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   description: It's a box with basic internals inside.
   suffix: Security
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskGasSecurity
-    - id: EmergencyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskGasSecurity
+        - id: EmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   id: BoxSurvivalSecurityNitrogen
   suffix: Security N2
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskGasSecurity
-    - id: EmergencyNitrogenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskGasSecurity
+        - id: EmergencyNitrogenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   description: It's a box with basic internals inside.
   suffix: Medical
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreathMedical
-    - id: EmergencyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreathMedical
+        - id: EmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   id: BoxSurvivalMedicalNitrogen
   suffix: Medical N2
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreathMedical
-    - id: EmergencyNitrogenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreathMedical
+        - id: EmergencyNitrogenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
     - state: heart
   - type: Item
     heldPrefix: hug
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: EmergencyFunnyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: EmergencyFunnyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Tag
     tags:
     - BoxCardboard
   id: BoxHugNitrogen
   suffix: Emergency N2
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: EmergencyNitrogenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: EmergencyNitrogenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
+        - id: DrinkWaterBottleFull
   - type: Label
     currentLabel: reagent-name-nitrogen
 
   id: BoxMime
   suffix: Mime, Emergency
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: EmergencyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodBreadNutriBatard
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: EmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodBreadNutriBatard
+        - id: DrinkWaterBottleFull
 
 - type: entity
   parent: BoxSurvivalNitrogen
   id: BoxMimeNitrogen
   suffix: Mime, Emergency N2
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: EmergencyNitrogenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodBreadNutriBatard
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: EmergencyNitrogenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodBreadNutriBatard
+        - id: DrinkWaterBottleFull
   - type: Sprite
     layers:
     - state: internals
   id: BoxMimeMoth
   suffix: Mime, Emergency moth
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskBreath
-    - id: EmergencyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodBreadCottonNutriBatard
-    - id: DrinkWaterBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreath
+        - id: EmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodBreadCottonNutriBatard
+        - id: DrinkWaterBottleFull
 
 - type: entity
   parent: BoxCardboard
   description: It's a box with basic internals inside. This one is labelled to contain an extended-capacity tank.
   suffix: Syndicate
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskGasSyndicate
-    - id: ExtendedEmergencyOxygenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskGasSyndicate
+        - id: ExtendedEmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
   - type: Sprite
     layers:
     - state: internals
   id: BoxSurvivalSyndicateNitrogen
   suffix: Syndicate N2
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingMaskGasSyndicate
-    - id: ExtendedEmergencyNitrogenTankFilled
-    - id: EmergencyMedipen
-    - id: Flare
-    - id: FoodSnackNutribrick
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskGasSyndicate
+        - id: ExtendedEmergencyNitrogenTankFilled
+        - id: EmergencyMedipen
+        - id: Flare
+        - id: FoodSnackNutribrick
   - type: Sprite
     layers:
     - state: internals
index 6c789a8f595f3f3aefb5228916c3c70c8ebe3870..b8aa2600c5b9a2e0be84c45a88d2dd534e968b69 100644 (file)
   id: BoxMousetrap
   description: This box is filled with mousetraps. Try not to get your hand stuck in one.
   components:
-    - type: StorageFill
-      contents:
-        - id: Mousetrap
-          amount: 4
-    - type: Sprite
-      layers:
-        - state: box
-        - state: mousetraps
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Mousetrap
+        amount: 4
+  - type: Sprite
+    layers:
+      - state: box
+      - state: mousetraps
 
 - type: entity
   name: lightbulb box
     whitelist:
       components:
       - LightBulb
-  - type: StorageFill
-    contents:
-      - id: LightBulb
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: LightBulb
         amount: 12
 
 - type: entity
   parent: BoxLightbulb
   id: BoxWarmLightbulb
   components:
-  - type: StorageFill
-    contents:
-      - id: WarmLightBulb
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: WarmLightBulb
         amount: 12
 
 - type: entity
     layers:
       - state: box
       - state: lighttube
-  - type: StorageFill
-    contents:
-      - id: LightTube
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: LightTube
         amount: 12
 
 - type: entity
     layers:
       - state: box
       - state: lightmixed
-  - type: StorageFill
-    contents:
-      - id: LightTube
-        amount: 6
-      - id: LightBulb
-        amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: LightTube
+          amount: 6
+        - id: LightBulb
+          amount: 6
 
 - type: entity
   name: holiday lighttube box
   parent: BoxLightbulb
   id: BoxLighttubeHoliday
   components:
-  - type: StorageFill
-    contents:
-      - id: LightTubeCrystalRed # Its alternating on purpose for the light replacer.
-      - id: LightTubeCrystalGreen
-      - id: LightTubeCrystalRed
-      - id: LightTubeCrystalGreen
-      - id: LightTubeCrystalRed
-      - id: LightTubeCrystalGreen
-      - id: LightTubeCrystalRed
-      - id: LightTubeCrystalGreen
-      - id: LightTubeCrystalRed
-      - id: LightTubeCrystalGreen
-      - id: LightTubeCrystalRed
-      - id: LightTubeCrystalGreen
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: LightTubeCrystalRed
+        - id: LightTubeCrystalGreen
+        rolls: 6 # Rolls instead of amounts to alternate.
 
 - type: entity
   name: PDA box
   id: BoxPDA
   description: A box of spare PDA microcomputers.
   components:
-  - type: StorageFill
-    contents:
-      - id: PassengerPDA
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PassengerPDA
         amount: 4
   - type: Sprite
     layers:
   id: BoxID
   description: A box of spare blank ID cards.
   components:
-  - type: StorageFill
-    contents:
-      - id: PassengerIDCard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PassengerIDCard
         amount: 4
   - type: Sprite
     layers:
   id: BoxHeadset
   description: A box of spare passenger headsets.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadsetGrey
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingHeadsetGrey
         amount: 4
   - type: Sprite
     layers:
   id: BoxMesonScanners
   description: A box of spare meson goggles.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingEyesGlassesMeson
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingEyesGlassesMeson
         amount: 4
   - type: Sprite
     layers:
   id: BoxMRE
   description: A box of decades old military surplus rations. It is surprisingly not rotten.
   components:
-  - type: StorageFill
-    contents:
-      - id: DrinkMREFlask
-      - id: FoodSnackNutribrick
-      - id: FoodSnackMREBrownie
-      - id: FoodCondimentPacketKetchup
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: DrinkMREFlask
+        - id: FoodSnackNutribrick
+        - id: FoodSnackMREBrownie
+        - id: FoodCondimentPacketKetchup
   - type: Sprite
     layers:
       - state: box
   id: BoxHugHealing
   suffix: Medical
   components:
-  - type: StorageFill
-    contents:
-      - id: Brutepack
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Brutepack
         amount: 3
 
 - type: entity
   id: BoxInflatable
   description: Inflatable walls are not to be used as floatation devices.
   components:
-  - type: StorageFill
-    contents:
-        - id: InflatableWallStack
-          amount: 2
-        - id: InflatableDoorStack
-          amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+          - id: InflatableWallStack
+            amount: 2
+          - id: InflatableDoorStack
+            amount: 2
   - type: Sprite
     layers:
       - state: box
       - state: inflatable
 
-
 - type: entity
   name: hatsune miku day bag
   parent: ClothingBackpackDuffel
   id: BoxPerformer
   description: Happy Hatsune Miku Day!
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingShoesBootsPerformer
-      - id: ClothingUniformJumpskirtPerformer
-      - id: ClothingHeadPerformerWig
-      - id: FoodMealMemoryleek
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingShoesBootsPerformer
+        - id: ClothingUniformJumpskirtPerformer
+        - id: ClothingHeadPerformerWig
+        - id: FoodMealMemoryleek
+          amount: 2
 
 - type: entity
   name: flare box
   id: BoxFlare
   description: A box of flares. Party time.
   components:
-  - type: StorageFill
-    contents:
-      - id: Flare
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Flare
         amount: 6
   - type: Sprite
     layers:
   id: BoxTrashbag
   description: A box of trashbags. Happy janitor noises.
   components:
-  - type: StorageFill
-    contents:
-      - id: TrashBag
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: TrashBag
         amount: 6
   - type: Storage
     grid:
   id: BoxEncryptionKeyPassenger
   description: A box of spare encryption keys.
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyCommon
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyCommon
         amount: 4
   - type: Sprite
     layers:
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeyCargo
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyCargo
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyCargo
         amount: 4
 
 - type: entity
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeyEngineering
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyEngineering
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyEngineering
         amount: 4
 
 - type: entity
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeyMedicalScience
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyMedicalScience
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyMedicalScience
         amount: 4
 
 - type: entity
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeyMedical
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyMedical
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyMedical
         amount: 4
 
 - type: entity
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeyRobo
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyRobo
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyRobo
         amount: 4
 
 - type: entity
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeyScience
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyScience
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyScience
         amount: 4
 
 - type: entity
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeySecurity
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeySecurity
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeySecurity
         amount: 4
 
 - type: entity
   parent: BoxEncryptionKeyPassenger
   id: BoxEncryptionKeyService
   components:
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeyService
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeyService
         amount: 4
 
 - type: entity
   components:
   - type: Item
     size: Normal
-  - type: StorageFill
-    contents:
-      - id: EncryptionKeySyndie
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: EncryptionKeySyndie
         amount: 2
   - type: Storage
 
     whitelist: # TODO cardboard boxes shouldn't have whitelisting
       tags:
       - Candle
-  - type: StorageFill
-    contents:
-      - id: Candle
-        amount: 4
-      - id: CandleBlue
-        amount: 2
-      - id: CandleRed
-        amount: 2
-      - id: CandleGreen
-        amount: 2
-      - id: CandlePurple
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Candle
+          amount: 4
+        - id: CandleBlue
+          amount: 2
+        - id: CandleRed
+          amount: 2
+        - id: CandleGreen
+          amount: 2
+        - id: CandlePurple
+          amount: 2
 
 - type: entity
   name: small candle box
   parent: BoxCandle
   id: BoxCandleSmall
   components:
-  - type: StorageFill
-    contents:
-      - id: CandleSmall
-        amount: 8
-      - id: CandleBlueSmall
-        amount: 4
-      - id: CandleRedSmall
-        amount: 4
-      - id: CandleGreenSmall
-        amount: 4
-      - id: CandlePurpleSmall
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CandleSmall
+          amount: 8
+        - id: CandleBlueSmall
+          amount: 4
+        - id: CandleRedSmall
+          amount: 4
+        - id: CandleGreenSmall
+          amount: 4
+        - id: CandlePurpleSmall
+          amount: 4
 
 - type: entity
   name: darts box
     layers:
       - state: box
       - state: darts
-  - type: StorageFill
-    contents:
-      - id: Dart
-        amount: 2
-      - id: DartBlue
-        amount: 2
-      - id: DartPurple
-        amount: 2
-      - id: DartYellow
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Dart
+          amount: 2
+        - id: DartBlue
+          amount: 2
+        - id: DartPurple
+          amount: 2
+        - id: DartYellow
+          amount: 2
 
 - type: entity
   name: envelope box
     layers:
       - state: box
       - state: envelope
-  - type: StorageFill
-    contents:
-      - id: Envelope
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Envelope
         amount: 9
 
 - type: entity
     layers:
       - state: box
       - state: utensils
-  - type: StorageFill
-    contents:
-      - id: Fork
-        amount: 2
-      - id: Spoon
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Fork
+          amount: 2
+        - id: Spoon
+          amount: 2
index 122aecd27beed267b593758bfb1213d4e4a371e2..fac72c633888171a47636ff25d5ac00cef3c5b03 100644 (file)
@@ -4,15 +4,17 @@
   id: BoxQMCircuitboards
   description: A Tote filled with QM's Circuit boards.
   components:
-  - type: StorageFill
-    contents:
-      - id: CargoBountyComputerCircuitboard
-      - id: CargoRequestComputerCircuitboard
-      - id: CargoSaleComputerCircuitboard
-      - id: CargoShuttleConsoleCircuitboard
-      - id: SalvageMagnetMachineCircuitboard
-      - id: SalvageJobBoardComputerCircuitboard
-      - id: MailTeleporterMachineCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CargoBountyComputerCircuitboard
+        - id: CargoRequestComputerCircuitboard
+        - id: CargoSaleComputerCircuitboard
+        - id: CargoShuttleConsoleCircuitboard
+        - id: SalvageMagnetMachineCircuitboard
+        - id: SalvageJobBoardComputerCircuitboard
+        - id: MailTeleporterMachineCircuitboard
 
 - type: entity
   name: stamp box [QM]
     size: Small
     shape:
     - 0,0,1,1
-  - type: StorageFill
-    contents:
-      - id: RubberStampApproved
-      - id: RubberStampDenied
-      - id: RubberStampQm
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: RubberStampApproved
+        - id: RubberStampDenied
+        - id: RubberStampQm
   - type: Storage
     grid:
     - 0,0,1,1
   id: BoxHoPCircuitboards
   description: A Tote filled with HoP's Circuit boards.
   components:
-  - type: StorageFill
-    contents:
-      - id: IDComputerCircuitboard
-      - id: FundingAllocationComputerCircuitboard
-      - id: CargoRequestServiceComputerCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: IDComputerCircuitboard
+        - id: FundingAllocationComputerCircuitboard
+        - id: CargoRequestServiceComputerCircuitboard
 
 - type: entity
   name: stamp box [HoP]
     size: Small
     shape:
     - 0,0,1,1
-  - type: StorageFill
-    contents:
-      - id: RubberStampApproved
-      - id: RubberStampDenied
-      - id: RubberStampHop
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: RubberStampApproved
+        - id: RubberStampDenied
+        - id: RubberStampHop
   - type: Storage
     grid:
     - 0,0,1,1
   id: BoxCECircuitboards
   description: A Tote filled with CE's Circuit boards.
   components:
-  - type: StorageFill
-    contents:
-      - id: CargoRequestEngineeringComputerCircuitboard
-      - id: AlertsComputerCircuitboard
-      - id: AtmosMonitoringComputerCircuitboard
-      - id: PowerComputerCircuitboard
-      - id: SolarControlComputerCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CargoRequestEngineeringComputerCircuitboard
+        - id: AlertsComputerCircuitboard
+        - id: AtmosMonitoringComputerCircuitboard
+        - id: PowerComputerCircuitboard
+        - id: SolarControlComputerCircuitboard
 
 - type: entity
   name: circuit tote [Captain]
   id: BoxCaptainCircuitboards
   description: A Tote filled with Captain's Circuit boards.
   components:
-  - type: StorageFill
-    contents:
-      - id: CommsComputerCircuitboard
-      - id: StationRecordsComputerCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CommsComputerCircuitboard
+        - id: StationRecordsComputerCircuitboard
 
 - type: entity
   name: circuit tote [CMO]
   id: BoxCMOCircuitboards
   description: A Tote filled with CMO's Circuit boards.
   components:
-  - type: StorageFill
-    contents:
-      - id: MedicalTechFabCircuitboard
-      - id: CargoRequestMedicalComputerCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: MedicalTechFabCircuitboard
+        - id: CargoRequestMedicalComputerCircuitboard
 
 - type: entity
   name: circuit tote [RD]
   id: BoxRDCircuitboards
   description: A Tote filled with RD's Circuit boards.
   components:
-  - type: StorageFill
-    contents:
-      - id: CircuitImprinterMachineCircuitboard
-      - id: ProtolatheMachineCircuitboard
-      - id: ResearchComputerCircuitboard
-      - id: CargoRequestScienceComputerCircuitboard
-      - id: RoboticsConsoleCircuitboard
-      - id: AnalysisComputerCircuitboard #Because sometimes round start artis just fucking explode on the pad.
-      - id: ArtifactAnalyzerMachineCircuitboard
-      - id: StationAiFixerCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CircuitImprinterMachineCircuitboard
+        - id: ProtolatheMachineCircuitboard
+        - id: ResearchComputerCircuitboard
+        - id: CargoRequestScienceComputerCircuitboard
+        - id: RoboticsConsoleCircuitboard
+        - id: AnalysisComputerCircuitboard #Because sometimes round start artis just fucking explode on the pad.
+        - id: ArtifactAnalyzerMachineCircuitboard
+        - id: StationAiFixerCircuitboard
 
 - type: entity
   name: circuit tote [HoS]
   id: BoxHoSCircuitboards
   description: A Tote filled with HoS's Circuit boards.
   components:
-  - type: StorageFill
-    contents:
-      - id: SecurityTechFabCircuitboard
-      - id: CargoRequestSecurityComputerCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: SecurityTechFabCircuitboard
+        - id: CargoRequestSecurityComputerCircuitboard
index 53d8a00e1d912e489a15a65dbd89ec7e5227465d..bd57110a7ed9f576f0f953b703edfc5da9660c10 100644 (file)
@@ -4,9 +4,10 @@
   id: BoxSyringe
   description: A box full of syringes.
   components:
-  - type: StorageFill
-    contents:
-      - id: Syringe
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Syringe
         amount: 6
   - type: Sprite
     layers:
   id: BoxPillCanister
   description: A box full of pill canisters.
   components:
-  - type: StorageFill
-    contents:
-      - id: PillCanister
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillCanister
         amount: 9
   - type: Sprite
     layers:
   id: BoxBottle
   description: A box full of bottles.
   components:
-  - type: StorageFill
-    contents:
-      - id: ChemistryEmptyBottle01
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ChemistryEmptyBottle01
         amount: 6
   - type: Sprite
     layers:
   id: BoxSterileMask
   description: This box contains sterile medical masks.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingMaskSterile
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingMaskSterile
         amount: 4
   - type: Sprite
     layers:
   id: BoxLatexGloves
   description: Contains sterile latex gloves.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHandsGlovesLatex
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingHandsGlovesLatex
         amount: 4
   - type: Sprite
     layers:
   id: BoxNitrileGloves
   description: Contains sterile nitrile gloves. Better than latex.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHandsGlovesNitrile
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingHandsGlovesNitrile
         amount: 4
   - type: Sprite
     layers:
   id: BoxBodyBag
   description: Contains body bags.
   components:
-  - type: StorageFill
-    contents:
-      - id: BodyBagFolded
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: BodyBagFolded
         amount: 4
   - type: Sprite
     layers:
   - type: Storage
     grid:
     - 0,0,2,1
-  - type: StorageFill
-    contents:
-      - id: BaseChemistryEmptyVial
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: BaseChemistryEmptyVial
         amount: 6
   - type: Sprite
     layers:
index cd0320e088d744c71a7942299df9960e9770408d..9931b4ccb25f149e4e04cae93d2ae41fee2d4524 100644 (file)
@@ -8,12 +8,14 @@
     grid:
     - 0,0,3,2
     maxItemSize: Normal
-  - type: StorageFill
-    contents:
-    - id: LargeBeaker
-      amount: 2
-    - id: Beaker
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: LargeBeaker
+          amount: 2
+        - id: Beaker
+          amount: 2
   - type: Sprite
     layers:
       - state: box
index 2f9decab7d44c56afbb094712ac05b53868bb41a..f79797337e76eb495034adeae13175a8081b300f 100644 (file)
@@ -4,10 +4,11 @@
   id: BoxHandcuff
   description: A box full of handcuffs.
   components:
-  - type: StorageFill
-    contents:
-    - id: Handcuffs
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Handcuffs
+        amount: 4
   - type: Sprite
     layers:
     - state: box_security
   id: BoxZiptie
   description: A box full of zipties.
   components:
-  - type: StorageFill
-    contents:
-    - id: Zipties
-      amount: 9
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Zipties
+        amount: 9
   - type: Sprite
     layers:
     - state: box_security
   id: BoxFlashbang
   description: 'WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use.'
   components:
-  - type: StorageFill
-    contents:
-    - id: GrenadeFlashBang
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: GrenadeFlashBang
+        amount: 4
   - type: Sprite
     layers:
     - state: box_security
   id: BoxStinger
   description: A box full of stinger grenades. Disperse!
   components:
-  - type: StorageFill
-    contents:
-    - id: GrenadeStinger
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: GrenadeStinger
+        amount: 4
   - type: Sprite
     layers:
     - state: box_security
   id: BoxTearGas
   description: A box full of tear gas grenades. Hold your breath.
   components:
-  - type: StorageFill
-    contents:
-    - id: TearGasGrenade
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: TearGasGrenade
+        amount: 4
   - type: Sprite
     layers:
     - state: box_security
   id: BoxSechud
   description: A box of sechuds.
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingEyesHudSecurity
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingEyesHudSecurity
+        amount: 4
   - type: Sprite
     layers:
     - state: box_security
   id: BoxSecglasses
   description: A box of security glasses.
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingEyesGlassesSecurity
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingEyesGlassesSecurity
+        amount: 4
   - type: Sprite
     layers:
     - state: box_security
   id: BoxSunglasses
   description: A box of cool flash-proof sunglasses.
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingEyesGlassesSunglasses
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ClothingEyesGlassesSunglasses
+        amount: 4
   - type: Sprite
     layers:
     - state: box_security
   - type: Item
     shape:
     - 0,0,1,1
-  - type: StorageFill
-    contents:
-    - id: ForensicPad
-      amount: 9
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ForensicPad
+        amount: 9
   - type: Sprite
     layers:
     - state: box_security
   - type: Item
     shape:
     - 0,0,1,1
-  - type: StorageFill
-    contents:
-    - id: EmptyDetonator
-      amount: 3
-    - id: TimerTrigger
-      amount: 2
-    - id: VoiceTrigger
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: EmptyDetonator
+          amount: 3
+        - id: TimerTrigger
+          amount: 2
+        - id: VoiceTrigger
   - type: Sprite
     layers:
     - state: box_security
index 4ba7cf6f7e3ae105182b51a711fc1a5d4df5092f..f5780dbf1975c4c2ed46754433a49f21081f525a 100644 (file)
@@ -4,9 +4,10 @@
   id: BoxCleanerGrenades
   description: A box full of cleanades.
   components:
-  - type: StorageFill
-    contents:
-      - id: CleanerGrenade
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CleanerGrenade
         amount: 4
   - type: Sprite
     layers:
   id: BoxAgrichem
   description: For the budding botanist ready to learn about maximizing farm output. This faded box must be at least 50 years old.
   components:
-  - type: StorageFill
-    contents:
-    - id: PaperAgrichemManual
-    - id: ChemistryEmptyBottle01
-    - id: ChemistryBottlePotassium
-    - id: ChemistryBottlePhosphorus
-    - id: ChemistryBottleNitrogen
-    - id: ChemistryBottleHydrogen
-    - id: ChemistryBottleEthanol
-    - id: RadiumChemistryVial
-    - id: ChlorineChemistryVial
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: PaperAgrichemManual
+        - id: ChemistryEmptyBottle01
+        - id: ChemistryBottlePotassium
+        - id: ChemistryBottlePhosphorus
+        - id: ChemistryBottleNitrogen
+        - id: ChemistryBottleHydrogen
+        - id: ChemistryBottleEthanol
+        - id: RadiumChemistryVial
+        - id: ChlorineChemistryVial
   - type: Sprite
     layers:
       - state: boxwide
   id: BoxLightbulbColorfulMixed
   name: mixed colorful lightbulb box
   components:
-  - type: StorageFill
-    contents:
-    - id: LightBulbCrystalCyan
-      amount: 2
-    - id: LightBulbCrystalBlue
-      amount: 2
-    - id: LightBulbCrystalGreen
-      amount: 2
-    - id: LightBulbCrystalPink
-      amount: 2
-    - id: LightBulbCrystalRed
-      amount: 2
-    - id: LightBulbCrystalOrange
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: LightBulbCrystalCyan
+          amount: 2
+        - id: LightBulbCrystalBlue
+          amount: 2
+        - id: LightBulbCrystalGreen
+          amount: 2
+        - id: LightBulbCrystalPink
+          amount: 2
+        - id: LightBulbCrystalRed
+          amount: 2
+        - id: LightBulbCrystalOrange
+          amount: 2
 
 - type: entity
   parent: BoxLighttube
   id: BoxLighttubeColorfulMixed
   name: mixed colorful lighttube box
   components:
-  - type: StorageFill
-    contents:
-    - id: LightTubeCrystalCyan
-      amount: 2
-    - id: LightTubeCrystalBlue
-      amount: 2
-    - id: LightTubeCrystalGreen
-      amount: 2
-    - id: LightTubeCrystalPink
-      amount: 2
-    - id: LightTubeCrystalRed
-      amount: 2
-    - id: LightTubeCrystalOrange
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: LightTubeCrystalCyan
+          amount: 2
+        - id: LightTubeCrystalBlue
+          amount: 2
+        - id: LightTubeCrystalGreen
+          amount: 2
+        - id: LightTubeCrystalPink
+          amount: 2
+        - id: LightTubeCrystalRed
+          amount: 2
+        - id: LightTubeCrystalOrange
+          amount: 2
index 98748799ff1c347738ce33a9b19310b38580e3db..288c085d8cd7d05822d2c82b02fc72461db5411e 100644 (file)
@@ -4,12 +4,13 @@
   name: electrical disruption kit
   suffix: Filled
   components:
-    - type: StorageFill
-      contents:
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
         - id: EmpGrenade
           amount: 3
         - id: EmpImplanter
-          amount: 1
 
 - type: entity
   parent: [BoxVial, BaseSyndicateContraband]
   - type: Storage
     grid:
     - 0,0,3,2
-  - type: StorageFill
-    contents:
-      - id: Beaker
-        amount: 2
-      - id: Dropper
-      # It would be cool to have special "syndicate" chemical analysis goggles
-      - id: ClothingEyesGlassesChemical
-      - id: VestineChemistryVial
-        amount: 2
-      - id: BaseChemistryEmptyVial
-      - id: SyringeStimulants
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Beaker
+          amount: 2
+        - id: Dropper
+        # It would be cool to have special "syndicate" chemical analysis goggles
+        - id: ClothingEyesGlassesChemical
+        - id: VestineChemistryVial
+          amount: 2
+        - id: BaseChemistryEmptyVial
+        - id: SyringeStimulants
 
 - type: entity
   parent: [BoxCardboard, BaseSyndicateContraband]
   - type: Storage
     grid:
     - 0,0,3,1
-  - type: StorageFill
-    contents:
-      - id: ThrowingKnife
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: ThrowingKnife
         amount: 4
   - type: Sprite
     layers:
   - type: Storage
     grid:
     - 0,0,5,3
-  - type: StorageFill
-    contents:
-      - id: DeathRattleImplanter
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: DeathRattleImplanter
         amount: 6
 
 - type: entity
     layers:
       - state: box_of_doom
       - state: france
-  - type: StorageFill
-    contents:
-      - id: WeaponCroissant
-        amount: 2
-      - id: WeaponBaguette
-      - id: SyndicateMicrowaveMachineCircuitboard
-      - id: PaperWrittenCombatBakeryKit
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponCroissant
+          amount: 2
+        - id: WeaponBaguette
+        - id: SyndicateMicrowaveMachineCircuitboard
+        - id: PaperWrittenCombatBakeryKit
index e874394eaaf5654e10cc30e27a20fcb9bbf38d03..352b33a3d049ac577f6fd623fa72b8dfff54728e 100644 (file)
@@ -4,11 +4,13 @@
   suffix: Filled
   parent: CratePirate
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingNeckCloakPirateCap
-      - id: EnergyCutlass
-      - id: MicroBombImplanter
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingNeckCloakPirateCap
+        - id: EnergyCutlass
+        - id: MicroBombImplanter
 
 - type: entity
   id: CratePirateChest
   suffix: Filled
   parent: CratePirate
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponLauncherPirateCannon
-        amount: 2
-      - id: ClothingOuterCoatGentle
-      - id: Cutlass
-        amount: 2
-      - id: CannonBall
-        amount: 2
-      - id: WeaponPistolFlintlock
-        amount: 4
-      - id: WeaponShotgunBlunderbuss
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponLauncherPirateCannon
+          amount: 2
+        - id: ClothingOuterCoatGentle
+        - id: Cutlass
+          amount: 2
+        - id: CannonBall
+          amount: 2
+        - id: WeaponPistolFlintlock
+          amount: 4
+        - id: WeaponShotgunBlunderbuss
+          amount: 2
index c8df8524119db6a22ae70f12d055152995b4eca5..838158085c2b9902d6149f721d4446a67582d065 100644 (file)
@@ -4,12 +4,14 @@
   name: SMG crate
   description: Contains two SMGs with four mags. Requires Armory access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponSubMachineGunWt550
-        amount: 2
-      - id: MagazinePistolSubMachineGunTopMounted
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponSubMachineGunWt550
+          amount: 2
+        - id: MagazinePistolSubMachineGunTopMounted
+          amount: 4
 
 - type: entity
   id: CrateArmoryShotgun
   name: shotgun crate
   description: For when the enemy absolutely needs to be replaced with lead. Contains two Enforcer Combat Shotguns, and some standard shotgun shells. Requires Armory access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponShotgunEnforcer
-        amount: 2
-      - id: BoxLethalshot
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponShotgunEnforcer
+          amount: 2
+        - id: BoxLethalshot
+          amount: 4
 
 - type: entity
   id: CrateTrackingImplants
   name: tracking implants
   description: Contains a handful of tracking implanters. Good for prisoners you'd like to release but still keep track of.
   components:
-  - type: StorageFill
-    contents:
-      - id: TrackingImplanter
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: TrackingImplanter
         amount: 5
 
 - type: entity
   name: training bombs
   description: Contains three low-yield training bombs for security to learn defusal and safe ordnance disposal, EOD suit not included. Requires Armory access to open.
   components:
-  - type: StorageFill
-    contents:
-    - id: TrainingBomb
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: TrainingBomb
+        amount: 3
 
 - type: entity
   id: CrateArmoryLaser
   name: lasers crate
   description: Contains three standard-issue laser rifles. Requires Armory access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponLaserCarbine
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: WeaponLaserCarbine
         amount: 3
 
 - type: entity
   name: pistols crate
   description: Contains two standard NT pistols with four mags. Requires Armory access to open.
   components:
-  - type: StorageFill
-    contents:
-    - id: WeaponPistolMk58
-      amount: 2
-    - id: MagazinePistol
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponPistolMk58
+          amount: 2
+        - id: MagazinePistol
+          amount: 4
 
 - type: entity
   id: CrateSecurityRiot
   name: swat crate
   description: Contains two sets of riot armor, helmets, shields, and enforcers loaded with beanbags. Extra ammo is included. Requires Armory access to open.
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingOuterArmorRiot
-      amount: 2
-    - id: ClothingHeadHelmetRiot
-      amount: 2
-    - id: WeaponShotgunEnforcerRubber
-      amount: 2
-    - id: BoxBeanbag
-      amount: 2
-    - id: RiotShield
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingOuterArmorRiot
+          amount: 2
+        - id: ClothingHeadHelmetRiot
+          amount: 2
+        - id: WeaponShotgunEnforcerRubber
+          amount: 2
+        - id: BoxBeanbag
+          amount: 2
+        - id: RiotShield
+          amount: 2
 
 - type: entity
   id: CrateArmoryRifle
   name: rifle crate
   description: Contains two high-powered assault rifles with four mags. Requires Armory access to open.
   components:
-  - type: StorageFill
-    contents:
-    - id: WeaponRifleLecter
-      amount: 2
-    - id: MagazineRifle
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponRifleLecter
+          amount: 2
+        - id: MagazineRifle
+          amount: 4
index 8bd6b2ed16dc44ba41270374021bce5915bde9cb..7f95f57d738cb4ae92c5101d3b2b61c1583a536a 100644 (file)
@@ -4,22 +4,24 @@
   name: exotic seeds crate
   description: Any entrepreneuring botanist's dream. Contains many different exotic seeds. Requires Hydroponics access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: EggySeeds
-        amount: 2
-      - id: TowercapSeeds
-        amount: 2
-      - id: TobaccoSeeds
-        amount: 2
-      - id: CannabisSeeds
-        amount: 2
-      - id: NettleSeeds
-        amount: 2
-      - id: FlyAmanitaSeeds
-        amount: 2
-      - id: BungoSeeds
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: EggySeeds
+          amount: 2
+        - id: TowercapSeeds
+          amount: 2
+        - id: TobaccoSeeds
+          amount: 2
+        - id: CannabisSeeds
+          amount: 2
+        - id: NettleSeeds
+          amount: 2
+        - id: FlyAmanitaSeeds
+          amount: 2
+        - id: BungoSeeds
+          amount: 2
 
 - type: entity
   id: CrateHydroponicsSeedsMedicinal
   name: medicinal seeds crate
   description: The wannabe chemist's dream. The power of medicine is at your fingertips! Requires Hydroponics access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: AloeSeeds
-        amount: 3
-      - id: AmbrosiaVulgarisSeeds
-        amount: 3
-      - id: GalaxythistleSeeds
-        amount: 3
-      - id: LingzhiSeeds
-        amount: 3
-      - id: PoppySeeds
-        amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: AloeSeeds
+          amount: 3
+        - id: AmbrosiaVulgarisSeeds
+          amount: 3
+        - id: GalaxythistleSeeds
+          amount: 3
+        - id: LingzhiSeeds
+          amount: 3
+        - id: PoppySeeds
+          amount: 3
 
 - type: entity
   id: CrateHydroponicsTools
   name: hydroponics equipment crate
   description: Supplies for growing a great garden! Contains some spray bottles of plant chemicals, a hatchet, a mini-hoe, scythe, as well as a pair of leather gloves and a botanist's apron.
   components:
-  - type: StorageFill
-    contents:
-      - id: HydroponicsToolMiniHoe
-      - id: PlantBGoneSpray
-      - id: WeedSpray
-      - id: PestSpray
-      - id: HydroponicsToolClippers
-      - id: HydroponicsToolScythe
-      - id: HydroponicsToolSpade
-      - id: HydroponicsToolHatchet
-      - id: ClothingOuterApronBotanist
-      - id: ClothingHandsGlovesLeather
-      - id: ChemistryBottleEZNutrient
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: HydroponicsToolMiniHoe
+        - id: PlantBGoneSpray
+        - id: WeedSpray
+        - id: PestSpray
+        - id: HydroponicsToolClippers
+        - id: HydroponicsToolScythe
+        - id: HydroponicsToolSpade
+        - id: HydroponicsToolHatchet
+        - id: ClothingOuterApronBotanist
+        - id: ClothingHandsGlovesLeather
+        - id: ChemistryBottleEZNutrient
+          amount: 2
 
 - type: entity
   id: CrateHydroponicsSeeds
   name: seeds crate
   description: Big things have small beginnings. Contains twenty-four different seeds.
   components:
-  - type: StorageFill
-    contents:
-      - id: ChiliSeeds
-      - id: CornSeeds
-      - id: EggplantSeeds
-      - id: TomatoSeeds
-      - id: WheatSeeds
-      - id: CarrotSeeds
-      - id: CabbageSeeds
-      - id: GarlicSeeds
-      - id: ChanterelleSeeds
-      - id: PotatoSeeds
-      - id: SugarcaneSeeds
-      - id: LemonSeeds
-      - id: LimeSeeds
-      - id: OrangeSeeds
-      - id: OatSeeds
-      - id: OnionSeeds
-      - id: OnionRedSeeds
-      - id: RiceSeeds
-      - id: SoybeanSeeds
-      - id: GrapeSeeds
-      - id: WatermelonSeeds
-      - id: PeaSeeds
-      - id: CherrySeeds
-      - id: CottonSeeds
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ChiliSeeds
+        - id: CornSeeds
+        - id: EggplantSeeds
+        - id: TomatoSeeds
+        - id: WheatSeeds
+        - id: CarrotSeeds
+        - id: CabbageSeeds
+        - id: GarlicSeeds
+        - id: ChanterelleSeeds
+        - id: PotatoSeeds
+        - id: SugarcaneSeeds
+        - id: LemonSeeds
+        - id: LimeSeeds
+        - id: OrangeSeeds
+        - id: OatSeeds
+        - id: OnionSeeds
+        - id: OnionRedSeeds
+        - id: RiceSeeds
+        - id: SoybeanSeeds
+        - id: GrapeSeeds
+        - id: WatermelonSeeds
+        - id: PeaSeeds
+        - id: CherrySeeds
+        - id: CottonSeeds
 
 - type: entity
   id: CrateHydroponicsTray
   name: hydroponics tray crate
   description: Contains a hydroponics tray flatpack.
   components:
-  - type: StorageFill
-    contents:
-    - id: HydroponicsTrayFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: HydroponicsTrayFlatpack
index aab4671a3b24030943f7c4469f40fde8d73027da..734f7fee59eacd42a6ee4e446107386cfcda8be3 100644 (file)
@@ -4,9 +4,10 @@
   name: luxury mining hardsuit crate
   description: Finally, a hardsuit Quartermasters could call their own. Centcomm has heard you, now stop asking.
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingOuterHardsuitLuxury
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: ClothingOuterHardsuitLuxury
 
 - type: entity
   id: CrateCargoParcelWrap
   name: parcel wrap crate
   description: All your parcel wrapping needs in one crate, containing three rolls of parcel wrap.
   components:
-  - type: StorageFill
-    contents:
-    - id: ParcelWrap
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: ParcelWrap
+        amount: 3
 
 - type: entity
   id: CrateCargoGambling
   description: A box containing treasure beyond your greatest imaginations!
   parent: CratePrivateSecure
   components:
-  #never make a storage fill this large
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: LotteryCashEntityTable
+        - !type:NestedSelector
+          tableId: LotteryJunkEntityTable
+        - !type:NestedSelector
+          tableId: LotteryCanistersEntityTable
+        - !type:NestedSelector
+          tableId: LotteryWeaponsEntityTable
+        - !type:NestedSelector
+          tableId: LotteryClothingEntityTable
+        - !type:NestedSelector
+          tableId: LotterySwagEntityTable
+        - !type:NestedSelector
+          tableId: LotteryPlushiesEntityTable
+        - !type:NestedSelector
+          tableId: LotteryUsefulEntityTable
+        - !type:NestedSelector
+          tableId: LotteryNotUsefulEntityTable
+
+- type: entityTable
+  id: LotteryCashEntityTable
+  table: !type:GroupSelector
+    children:
     - id: SpaceCash1000000
-      prob: 0.001
-      orGroup: Money
+      weight: 0.01
     - id: SpaceCash10000
-      prob: 0.01
-      orGroup: Money
+      weight: 0.1
     - id: SpaceCash5000
-      prob: 0.1
-      orGroup: Money
     - id: SpaceCash2500
-      prob: 0.4
-      orGroup: Money
+      weight: 4
     - id: SpaceCash500
-      prob: 0.3
-      orGroup: Money
+      weight: 3
     - id: SpaceCash100
-      prob: 0.1
-      orGroup: Money
     - id: SpaceCash10
-      prob: 0.05
-      orGroup: Money
+      weight: 0.5
     - id: SpaceCash
-      prob: 0.01
-      orGroup: Money
-    #junk
+      weight: 0.1
+
+- type: entityTable
+  id: LotteryJunkEntityTable
+  table: !type:GroupSelector
+    children:
     - id: CigaretteSpent
-      prob: 0.1
-      orGroup: Junk
     - id: FoodBowlBigTrash
-      prob: 0.1
-      orGroup: Junk
     - id: FoodFrozenPopsicleTrash
-      prob: 0.1
-      orGroup: Junk
     - id: FoodCornTrash
-      prob: 0.1
-      orGroup: Junk
     - id: TrashBananaPeel
-      prob: 0.1
-      orGroup: Junk
     - id: TrashBananaPeelExplosive
-      prob: 0.001
-      orGroup: Junk
+      weight: 0.01
     - id: FoodTinBeansTrash
-      prob: 0.1
-      orGroup: Junk
     - id: TrashBakedBananaPeel
-      prob: 0.1
-      orGroup: Junk
     - id: TrashMimanaPeel
-      prob: 0.1
-      orGroup: Junk
     - id: TrashBananiumPeel
-      prob: 0.1
-      orGroup: Junk
-    #canisters
+
+- type: entityTable
+  id: LotteryCanistersEntityTable
+  table: !type:GroupSelector
+    children:
     - id: AirCanister
-      prob: 0.001
-      orGroup: Canister
     - id: AmmoniaCanister
-      prob: 0.001
-      orGroup: Canister
     - id: CarbonDioxideCanister
-      prob: 0.001
-      orGroup: Canister
     - id: FrezonCanister
-      prob: 0.001
-      orGroup: Canister
     - id: NitrogenCanister
-      prob: 0.001
-      orGroup: Canister
     - id: NitrousOxideCanister
-      prob: 0.001
-      orGroup: Canister
     - id: OxygenCanister
-      prob: 0.001
-      orGroup: Canister
     - id: PlasmaCanister
-      prob: 0.001
-      orGroup: Canister
     - id: TritiumCanister
-      prob: 0.001
-      orGroup: Canister
     - id: WaterVaporCanister
-      prob: 0.001
-      orGroup: Canister
-    #weapons
+
+- type: entityTable
+  id: LotteryWeaponsEntityTable
+  table: !type:GroupSelector
+    children:
     - id: WeaponPulseCarbine
-      prob: 0.0001
-      orGroup: Weapons
+      weight: 0.01
     - id: WeaponRifleAk
-      prob: 0.0001
-      orGroup: Weapons
+      weight: 0.01
     - id: WeaponLauncherPirateCannon
-      prob: 0.001
-      orGroup: Weapons
+      weight: 0.1
     - id: WeaponPistolCHIMP
-      prob: 0.001
-      orGroup: Weapons
+      weight: 0.1
     - id: WeaponSniperMosin
-      prob: 0.01
-      orGroup: Weapons
     - id: WeaponMakeshiftLaser
-      prob: 0.001
-      orGroup: Weapons
+      weight: 0.1
     - id: Sledgehammer
-      prob: 0.001
-      orGroup: Weapons
+      weight: 0.1
     - id: WeaponMeleeToolboxRobust
-      prob: 0.01
-      orGroup: Weapons
     - id: ThrowingStar
-      prob: 0.01
-      orGroup: Weapons
     - id: WeaponLaserGun
-      prob: 0.001
-      orGroup: Weapons
+      weight: 0.1
     - id: WeaponShotgunHandmade
-      prob: 0.01
-      orGroup: Weapons
     - id: WeaponFlareGun
-      prob: 0.01
-      orGroup: Weapons
     - id: Bola
-      prob: 0.01
-      orGroup: Weapons
     - id: ToySword
-      prob: 0.01
-      orGroup: Weapons
     - id: Shovel
-      prob: 0.01
-      orGroup: Weapons
     - id: WeaponWaterPistol
-      prob: 0.01
-      orGroup: Weapons
     - id: WeaponWaterBlaster
-      prob: 0.01
-      orGroup: Weapons
     - id: WeaponTurretXeno
-      prob: 0.01
-      orGroup: Weapons
     - id: WeaponRifleFoam
-      prob: 0.03
-      orGroup: Weapons
-    #clothing
+      weight: 3
+
+- type: entityTable
+  id: LotteryClothingEntityTable
+  table: !type:GroupSelector
+    children:
     - id: ClothingUniformJumpsuitFamilyGuy
-      prob: 0.05
-      orGroup: Clothes
+      weight: 5
     - id: ClothingOuterHardsuitCBURN
-      prob: 0.001
-      orGroup: Clothes
+      weight: 0.1
     - id: ClothingOuterHardsuitSanta
-      prob: 0.001
-      orGroup: Clothes
+      weight: 0.1
     - id: ClothingBackpackERTClown
-      prob: 0.001
-      orGroup: Clothes
+      weight: 0.1
     - id: ClothingNeckCloakAdmin
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingOuterFlannelBlue
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingHeadHelmetBone
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingOuterSuitCarp
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingHeadHatCatEars
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingHeadHatDogEars
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingOuterArmorReflective
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingUniformJumpskirtSyndieFormalDress
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingNeckCloakNanotrasen
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingUniformJumpsuitNanotrasen
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingShoesSnakeskinBoots
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingOuterCoatSpaceAsshole
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingUniformJumpsuitHawaiYellow
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingHeadSafari
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingMaskGasMerc
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingHeadHatCardborg
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingUnderSocksCoder
-      prob: 0.01
-      orGroup: Clothes
     - id: ClothingUniformJumpskirtOfLife
-      prob: 0.01
-      orGroup: Clothes
-    #swag
+
+- type: entityTable
+  id: LotterySwagEntityTable
+  table: !type:GroupSelector
+    children:
     - id: ClothingNeckBling
-      prob: 0.01
-      orGroup: Swag
     - id: ClothingShoesBling
-      prob: 0.01
-      orGroup: Swag
     - id: IngotGold1
-      prob: 0.01
-      orGroup: Swag
     - id: IngotGold
-      prob: 0.001
-      orGroup: Swag
+      weight: 0.1
     - id: GoldOre1
-      prob: 0.01
-      orGroup: Swag
     - id: GoldOre
-      prob: 0.001
-      orGroup: Swag
+      weight: 0.1
     - id: DrinkGoldenCup
-      prob: 0.01
-      orGroup: Swag
     - id: ToolboxGoldFilled
-      prob: 0.001
-      orGroup: Swag
+      weight: 0.1
     - id: ClothingEyesGlassesGar
-      prob: 0.01
-      orGroup: Swag
     - id: ClothingEyesGlassesGarGiga
-      prob: 0.01
-      orGroup: Swag
     - id: ClothingEyesGlassesGarOrange
-      prob: 0.01
-      orGroup: Swag
     - id: ClothingHeadHatChameleon
-      prob: 0.01
-      orGroup: Swag
     - id: ClothingBeltChampion
-      prob: 0.01
-      orGroup: Swag
-    #plushies
+
+- type: entityTable
+  id: LotteryPlushiesEntityTable
+  table: !type:GroupSelector
+    children:
     - id: PlushieRGBee
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieGhost
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieHampter
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieGhostRevenant
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushiePenguin
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieHuman
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieLizard
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieRouny
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieLamp
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieSharkBlue
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieMoth
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieVulp
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieArachind
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieLizardJobMultiweh # the exceedingly rare multiweh!
-      prob: 0.01
-      orGroup: Plushies
     - id: PlushieThrongler #hehe
-      prob: 0.0005
-      orGroup: Plushies
-    #useful
+      weight: 0.05
+
+- type: entityTable
+  id: LotteryUsefulEntityTable
+  table: !type:GroupSelector
+    children:
     - id: AmeJar
-      prob: 0.01
-      orGroup: Useful
     - id: Omnitool
-      prob: 0.001
-      orGroup: Useful
+      weight: 0.1
     - id: SoapOmega
-      prob: 0.001
-      orGroup: Useful
+      weight: 0.1
     - id: ClothingEyesGlassesMeson
-      prob: 0.01
-      orGroup: Useful
     - id: MechVim
-      prob: 0.01
-      orGroup: Useful
     - id: Chainsaw
-      prob: 0.001
-      orGroup: Useful
+      weight: 0.1
     - id: Crowbar
-      prob: 0.01
-      orGroup: Useful
     - id: WelderIndustrial
-      prob: 0.01
-      orGroup: Useful
     - id: HydroponicsToolHatchet
-      prob: 0.01
-      orGroup: Useful
     - id: ToyAmongPequeno
-      prob: 0.01
-      orGroup: Useful
     - id: Lamp
-      prob: 0.01
-      orGroup: Useful
     - id: FloraTreeLarge
-      prob: 0.01
-      orGroup: Useful
     - id: LightTree #Funny mobs maybe
-      prob: 0.01
-      orGroup: Useful
-    #notuseful
+
+- type: entityTable
+  id: LotteryNotUsefulEntityTable
+  table: !type:GroupSelector
+    children:
     - id: LidSalami
-      prob: 0.01
-      orGroup: NotUseful
     - id: MobHamsterHamlet
-      prob: 0.01
-      orGroup: NotUseful
     - id: MobLaserRaptor
-      prob: 0.01
-      orGroup: NotUseful
     - id: DrinkNothing
-      prob: 0.01
-      orGroup: NotUseful
     - id: FoodOatmeal
-      prob: 0.01
-      orGroup: NotUseful
     - id: FoodDonutChaos
-      prob: 0.01
-      orGroup: NotUseful
     - id: RagItem
-      prob: 0.01
-      orGroup: NotUseful
     - id: ClothingHandsGlovesColorYellowBudget
-      prob: 0.01
-      orGroup: NotUseful
     - id: CartridgeCap
-      prob: 0.01
-      orGroup: NotUseful
     - id: EncryptionKeyCommon
-      prob: 0.01
-      orGroup: NotUseful
     - id: CableHVStack1
-      prob: 0.01
-      orGroup: NotUseful
     - id: DrinkMugBlue
-      prob: 0.01
-      orGroup: NotUseful
     - id: CablecuffsBroken
-      prob: 0.01
-      orGroup: NotUseful
     - id: FoodPlateTin
-      prob: 0.01
-      orGroup: NotUseful
     - id: WeakKudzu
-      prob: 0.01
-      orGroup: NotUseful
     - id: MagazineFoamBox
-      prob: 0.001
-      orGroup: NotUseful
+      weight: 0.1
     - id: BoxDonkSoftBox
-      prob: 0.008
-      orGroup: NotUseful
+      weight: 0.8
     - id: GrenadeFoamDart
-      prob: 0.001
-      orGroup: NotUseful
+      weight: 0.1
index c4e2ed4a524a4e5a4eda3e1b8bd2a827dd6df270..45fb81f1b59d6e7061d872d0d3d89796b44634df 100644 (file)
@@ -4,28 +4,20 @@
   name: chemicals crate (P)
   description: Contains chemicals from the P-Block of elements. Requires Chemistry access to open.
   components:
-    - type: StorageFill
-      contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
         - id: JugAluminium
-          amount: 1
         - id: JugCarbon
-          amount: 1
         - id: JugChlorine
-          amount: 1
         - id: JugFluorine
-          amount: 1
         - id: JugIodine
-          amount: 1
         - id: JugPhosphorus
-          amount: 1
         - id: JugSulfur
-          amount: 1
         - id: JugSilicon
-          amount: 1
         - id: JugOxygen
-          amount: 1
         - id: JugNitrogen
-          amount: 1
 
 - type: entity
   id: CrateChemistryS
   name: chemicals crate (S)
   description: Contains chemicals from the S-Block of elements. Requires Chemistry access to open.
   components:
-    - type: StorageFill
-      contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
         - id: JugHydrogen
-          amount: 1
         - id: JugLithium
-          amount: 1
         - id: JugSodium
-          amount: 1
         - id: JugPotassium
-          amount: 1
         - id: JugRadium
-          amount: 1
 
 - type: entity
   id: CrateChemistryD
   name: chemicals crate (D)
   description: Contains chemicals from the D-Block of elements. Requires Chemistry access to open.
   components:
-    - type: StorageFill
-      contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
         - id: JugIron
-          amount: 1
         - id: JugCopper
-          amount: 1
         - id: JugGold
-          amount: 1
         - id: JugMercury
-          amount: 1
         - id: JugSilver
-          amount: 1
 
 - type: entity
   id: CratePlantBGone
@@ -71,7 +57,8 @@
   name: bulk Plant-B-Gone crate
   description: From Monstano. "Unwanted Weeds, Meet Your Celestial Roundup!"
   components:
-    - type: StorageFill
-      contents:
-        - id: JugPlantBGone
-          amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: JugPlantBGone
+        amount: 5
index 716d5a07be89b4f005187fadc4b6a5502037271b..bf47d3f271f0013db61f82ce46251d23b55a706f 100644 (file)
@@ -4,14 +4,16 @@
   name: bomb suit crate
   description: Science gone bonkers? Beeping behind the airlock? Buy now and be the hero the station des... I mean needs! (time not included)
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetBombSuit
-      - id: ClothingMaskGas
-      - id: Screwdriver
-      - id: Wirecutter
-      - id: Multitool
-      - id: ClothingOuterSuitBomb
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingHeadHelmetBombSuit
+        - id: ClothingMaskGas
+        - id: Screwdriver
+        - id: Wirecutter
+        - id: Multitool
+        - id: ClothingOuterSuitBomb
 
 - type: entity
   id: CrateEmergencyFire
   name: firefighting crate
   description: Only you can prevent station fires. Partner up with two firefighter suits, gas masks, flashlights, large oxygen tanks, extinguishers, and hardhats!
   components:
-  - type: StorageFill
-    contents:
-      - id: FlashlightLantern
-        amount: 2
-      - id: FireExtinguisher
-        amount: 2
-      - id: ClothingHeadHatHardhatRed
-        amount: 2
-      - id: ClothingMaskGas
-        amount: 2
-      - id: ClothingOuterSuitFire
-        amount: 2
-      - id: OxygenTankFilled
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: FlashlightLantern
+          amount: 2
+        - id: FireExtinguisher
+          amount: 2
+        - id: ClothingHeadHatHardhatRed
+          amount: 2
+        - id: ClothingMaskGas
+          amount: 2
+        - id: ClothingOuterSuitFire
+          amount: 2
+        - id: OxygenTankFilled
+          amount: 2
 
 - type: entity
   id: CrateEmergencyInternals
   name: internals crate
   description: Master your life energy and control your breathing with 3 breath masks, emergency suits and large air tanks.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingMaskGas
-        amount: 3
-      - id: ClothingMaskBreath
-        amount: 3
-      - id: OxygenTankFilled
-        amount: 3
-      - id: NitrogenTankFilled
-        amount: 3
-      - id: ClothingOuterSuitEmergency
-        amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingMaskGas
+          amount: 3
+        - id: ClothingMaskBreath
+          amount: 3
+        - id: OxygenTankFilled
+          amount: 3
+        - id: NitrogenTankFilled
+          amount: 3
+        - id: ClothingOuterSuitEmergency
+          amount: 3
 
 - type: entity
   id: CrateEmergencyInternalsLarge
   name: internals crate (large)
   description: Master your life energy and control your breathing with 6 breath masks, emergency suits and large air tanks.
   components:
-    - type: StorageFill
-      contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
         - id: ClothingMaskGas
           amount: 6
         - id: ClothingMaskBreath
   name: internals crate (nitrogen)
   description: Contains four breath masks and four large nitrogen tanks. Intended for Slimepeople and Vox.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingMaskGas
-        amount: 2
-      - id: ClothingMaskBreath
-        amount: 2
-      - id: NitrogenTankFilled
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingMaskGas
+          amount: 2
+        - id: ClothingMaskBreath
+          amount: 2
+        - id: NitrogenTankFilled
+          amount: 4
 
 - type: entity
   id: CrateEmergencyRadiation
   name: radiation protection crate
   description: Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and Geiger counter. We'll even throw in a bottle of vodka and some glasses too, considering the life-expectancy of people who order this.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterSuitRad
-        amount: 2
-      - id: GeigerCounter
-        amount: 2
-      - id: DrinkVodkaBottleFull
-      - id: DrinkShotGlass
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingOuterSuitRad
+          amount: 2
+        - id: GeigerCounter
+          amount: 2
+        - id: DrinkVodkaBottleFull
+        - id: DrinkShotGlass
+          amount: 2
 
 - type: entity
   id: CrateEmergencyInflatablewall
   name: inflatable wall crate
   description: Three stacks of inflatable walls for when the stations metal walls don't want to hold atmosphere anymore.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxInflatable
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxInflatable
 
 - type: entity
   id: CrateGenericBiosuit
   name: emergency bio suit crate
   description: Contains 2 biohazard suits to ensure that no disease will distract you from what you're doing there.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterBioGeneral
-        amount: 2
-      - id: ClothingHeadHatHoodBioGeneral
-        amount: 2
-      - id: ClothingMaskGas
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: FillBiohazardGearGeneric
+          rolls: 2
+        - id: ClothingMaskGas
+          amount: 2
index 51e6440a3480477e03543fe64b7426528ddcc440..bcf73a2c4d6d856db62093d1d83458c0f9a19fe7 100644 (file)
@@ -4,20 +4,22 @@
   name: engineering gear crate
   description: Various engineering gear parts.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingBeltUtility
-        amount: 2
-      - id: ClothingEyesGlassesMeson
-        amount: 2
-      - id: ClothingHeadHatHardhatYellow
-        amount: 2
-      - id: ClothingHeadHatWelding
-        amount: 2
-      - id: ClothingOuterVestHazard
-        amount: 3
-      - id: ClothingHandsGlovesColorYellow
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingBeltUtility
+          amount: 2
+        - id: ClothingEyesGlassesMeson
+          amount: 2
+        - id: ClothingHeadHatHardhatYellow
+          amount: 2
+        - id: ClothingHeadHatWelding
+          amount: 2
+        - id: ClothingOuterVestHazard
+          amount: 3
+        - id: ClothingHandsGlovesColorYellow
+          amount: 2
 
 - type: entity
   id: CrateEngineeringToolbox
   name: toolbox crate
   description: Two mechanical and two electrical toolboxes.
   components:
-  - type: StorageFill
-    contents:
-      - id: ToolboxMechanicalFilled
-        amount: 2
-      - id: ToolboxElectricalFilled
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ToolboxMechanicalFilled
+          amount: 2
+        - id: ToolboxElectricalFilled
+          amount: 2
 
 #- type: entity
 #  id: CrateEngineeringPowercell
 #  name: AME crate
 #  description: Three microcreactor powercells.
 #  components:
-#  - type: StorageFill
-#    contents:
-#      - id: PowerCellMicroreactor
-#        amount: 3
+# - type: EntityTableContainerFill
+#   containers:
+#     entity_storage:
+#       id: PowerCellMicroreactor
+#       amount: 3
 
 - type: entity
   id: CrateEngineeringCableLV
   name: LV cable crate
   description: 3 coils of LV cables.
   components:
-  - type: StorageFill
-    contents:
-      - id: CableApcStack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: CableApcStack
         amount: 3
 
 - type: entity
   name: MV cable crate
   description: 3 coils of MV cables.
   components:
-  - type: StorageFill
-    contents:
-      - id: CableMVStack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: CableMVStack
         amount: 3
 
 - type: entity
   name: HV cable crate
   description: 3 coils of HV cables.
   components:
-  - type: StorageFill
-    contents:
-      - id: CableHVStack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: CableHVStack
         amount: 3
 
 - type: entity
   name: sealant grenade crate
   description: 5 metal foam sealant grenades.
   components:
-  - type: StorageFill
-    contents:
-    - id: MetalFoamGrenade
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MetalFoamGrenade
+        amount: 5
 
 - type: entity
   id: CrateEngineeringCableBulk
   name: bulk cable crate
   description: 2 coils each for every cable type.
   components:
-  - type: StorageFill
-    contents:
-      - id: CableHVStack
-        amount: 2
-      - id: CableMVStack
-        amount: 2
-      - id: CableApcStack
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: CableHVStack
+          amount: 2
+        - id: CableMVStack
+          amount: 2
+        - id: CableApcStack
+          amount: 2
 
 - type: entity
   id: CrateEngineeringElectricalSupplies
   name: electrical supplies crate
   description: NT is not responsible for any workplace infighting relating to the insulated gloves included within these crates.
   components:
-  - type: StorageFill
-    contents:
-      - id: ToolboxElectricalFilled
-        amount: 2
-      - id: ClothingHandsGlovesColorYellow
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ToolboxElectricalFilled
+          amount: 2
+        - id: ClothingHandsGlovesColorYellow
+          amount: 2
 
 - type: entity
   id: CrateEngineeringStationBeaconBundle
   name: station beacon bundle
   description: A crate containing 5 station beacon assemblies for modifying the station map.
   components:
-  - type: StorageFill
-    contents:
-    - id: StationBeaconPart
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: StationBeaconPart
+        amount: 5
 
 - type: entity
   id: CrateEngineeringJetpack
   name: jetpack crate
   description: Two jetpacks for those who don't know how to use fire extinguishers.
   components:
-  - type: StorageFill
-    contents:
-      - id: JetpackBlue
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: JetpackBlue
         amount: 2
 
 - type: entity
   name: mini jetpack crate
   description: Two mini jetpacks for those who want an extra challenge.
   components:
-  - type: StorageFill
-    contents:
-      - id: JetpackMini
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: JetpackMini
         amount: 2
 
 - type: entity
   name: airlock kit
   description: A kit for building 6 airlocks, doesn't include tools.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetSteel
-      - id: CableApcStack
-      - id: DoorElectronics
-        amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: SheetSteel
+        - id: CableApcStack
+        - id: DoorElectronics
+          amount: 6
 
 - type: entity
   id: CrateEvaKit
   name: EVA kit
   description: A set consisting of two prestigious EVA suits and helmets.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetEVA
-        amount: 2
-      - id: ClothingOuterHardsuitEVA
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingHeadHelmetEVA
+          amount: 2
+        - id: ClothingOuterHardsuitEVA
+          amount: 2
 
 - type: entity
   id: CrateRCDAmmo
   name: compressed matter crate
   description: Contains three compressed matter cartridges.
   components:
-  - type: StorageFill
-    contents:
-    - id: RCDAmmo
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: RCDAmmo
+        amount: 3
 
 - type: entity
   id: CrateRCD
   name: RCD crate
   description: A crate containing a single rapid construction device.
   components:
-  - type: StorageFill
-    contents:
-    - id: RCD
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: RCD
 
 - type: entity
   id: CrateParticleDecelerators
   name: particle decelerators crate
   description: A crate containing 3 Particle Decelerators.
   components:
-  - type: StorageFill
-    contents:
-    - id: WeaponParticleDecelerator
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: WeaponParticleDecelerator
+        amount: 3
 
 - type: entity
   id: CrateEngineeringSpaceHeater
   name: space heater crate
   description: Contains a space heater for climate control.
   components:
-  - type: StorageFill
-    contents:
-      - id: SpaceHeaterFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SpaceHeaterFlatpack
 
 - type: entityTable
   id: RandomTechBoardTable
   name: air grenade crate
   description: A crate containing 3 air grenades.
   components:
-  - type: StorageFill
-    contents:
-    - id: AirGrenade
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: AirGrenade
+        amount: 3
index ebff4eb6d8ebd47a6295df08749159d2fc99a7bd..e81b6135ec1ca16eee3799df7684c81371821aa3 100644 (file)
@@ -6,9 +6,10 @@
   name: packaged antimatter reactor crate
   description: 9 parts for the main body of an antimatter reactor, or for expanding an existing one.
   components:
-  - type: StorageFill
-    contents:
-      - id: AmePartFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: AmePartFlatpack
         amount: 9
 
 - type: entity
   name: antimatter containment jar crate
   description: 3 antimatter jars, for fuelling an antimatter reactor.
   components:
-  - type: StorageFill
-    contents:
-      - id: AmeJar
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: AmeJar
         amount: 3
 
 - type: entity
   name: antimatter control unit crate
   description: The control unit of an antimatter reactor.
   components:
-  - type: StorageFill
-    contents:
-      - id: AmeControllerUnanchored
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: AmeControllerUnanchored
 
 # Singularity
 
   name: emitter crate
   description: An emitter, best used for singularity engines.
   components:
-  - type: StorageFill
-    contents:
-      - id: EmitterFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: EmitterFlatpack
 
 - type: entity
   id: CrateEngineeringSingularityCollector
   name: radiation collector crate
   description: A radiation collector, best used for singularity engines. Plasma is included.
   components:
-  - type: StorageFill
-    contents:
-      - id: RadiationCollectorFlatpack
-      - id: PlasmaTankFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: RadiationCollectorFlatpack
+        - id: PlasmaTankFilled
 
 - type: entity
   id: CrateEngineeringSingularityContainment
   name: containment field generator crate
   description: A containment field generator, keeps the singulo in submission.
   components:
-  - type: StorageFill
-    contents:
-      - id: ContainmentFieldGeneratorFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: ContainmentFieldGeneratorFlatpack
 
 - type: entity
   id: CrateEngineeringSingularityGenerator
   name: singularity generator crate
   description: A singularity generator, the mother of the beast.
   components:
-  - type: StorageFill
-    contents:
-      - id: SingularityGeneratorFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SingularityGeneratorFlatpack
 
 # Particle Accelerator
 
   name: PA board crate
   description: Complex to setup, but rewarding as fuck. Contains boards for all particle accelerator components.
   components:
-  - type: StorageFill
-    contents:
-      - id: MachineParticleAcceleratorEndCapCircuitboard
-      - id: MachineParticleAcceleratorEmitterStarboardCircuitboard
-      - id: MachineParticleAcceleratorEmitterForeCircuitboard
-      - id: MachineParticleAcceleratorEmitterPortCircuitboard
-      - id: MachineParticleAcceleratorFuelChamberCircuitboard
-      - id: MachineParticleAcceleratorPowerBoxCircuitboard
-      - id: ParticleAcceleratorComputerCircuitboard
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MachineParticleAcceleratorEndCapCircuitboard
+        - id: MachineParticleAcceleratorEmitterStarboardCircuitboard
+        - id: MachineParticleAcceleratorEmitterForeCircuitboard
+        - id: MachineParticleAcceleratorEmitterPortCircuitboard
+        - id: MachineParticleAcceleratorFuelChamberCircuitboard
+        - id: MachineParticleAcceleratorPowerBoxCircuitboard
+        - id: ParticleAcceleratorComputerCircuitboard
 
 # Non-functional for some reason
 
 #  description:  "Prank the station!"
 #  parent: CrateEngineeringSecure
 #  components:
-#  - type: StorageFill
-#    contents:
-#      - id: Singularity
-#        amount: 1
+#  - type: EntityTableContainerFill
+#    containers:
+#      entity_storage:
+#        id: Singularity
 
 - type: entity
   id: CrateEngineeringGenerator
   name:  generator crate
   suffix: DEBUG
   components:
-  - type: StorageFill
-    contents:
-      - id: DebugGenerator # TODO change to flatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: DebugGenerator # TODO change to flatpack
 
 - type: entity
   id: CrateEngineeringSolar
   name: solar assembly crate
   description: A kit with solar flatpacks and glass to construct ten solar panels.
   components:
-  - type: StorageFill
-    contents:
-      - id: SolarAssemblyFlatpack
-        amount: 10
-      - id: SheetGlass10
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: SolarAssemblyFlatpack
+          amount: 10
+        - id: SheetGlass10
+          amount: 2
 
 - type: entity
   id: CrateEngineeringShuttle
   name: shuttle powering crate
   description: A crate containing all needs for shuttle powering.
   components:
-  - type: StorageFill
-    contents:
-      - id: WallmountSubstationElectronics
-      - id: WallmountGeneratorAPUElectronics
-      - id: HandheldGPSBasic
-      - id: InflatableDoorStack1
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WallmountSubstationElectronics
+        - id: WallmountGeneratorAPUElectronics
+        - id: HandheldGPSBasic
+        - id: InflatableDoorStack1
 
 - type: entity
   id: CrateEngineeringTeslaGenerator
   name: tesla generator crate
   description: A tesla generator. God save you.
   components:
-  - type: StorageFill
-    contents:
-      - id: TeslaGeneratorFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: TeslaGeneratorFlatpack
 
 - type: entity
   id: CrateEngineeringTeslaCoil
   name: tesla coil crate
   description: Tesla coil. Attracts lightning and generates energy from it.
   components:
-  - type: StorageFill
-    contents:
-      - id: TeslaCoilFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: TeslaCoilFlatpack
 
 - type: entity
   id: CrateEngineeringTeslaGroundingRod
   name: tesla grounding rod crate
   description: Grounding rod, best for lightning protection.
   components:
-  - type: StorageFill
-    contents:
-      - id: TeslaGroundingRodFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: TeslaGroundingRodFlatpack
index 31b47e7664601ca132e91dc878cd6978027aed41..17f07b36b8e24062c65ba41b4a581bd1ff76edd9 100644 (file)
@@ -4,13 +4,15 @@
   name: emergency pizza delivery
   description: Help do your part to end station hunger by distributing pizza to underfunded departments! Includes 4 pizzas.
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodBoxPizzaFilled
-      amount: 3
-    - id: FoodBoxPizzaCotton
-    - id: LidSalami
-      prob: 0.01
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: FoodBoxPizzaFilled
+          amount: 3
+        - id: FoodBoxPizzaCotton
+        - id: LidSalami
+          prob: 0.01
 
 - type: entity
   id: CrateFoodMRE
   name: MRE crate
   description: A military style meal fit to feed a whole department.
   components:
-  - type: StorageFill
-    contents:
-    - id: BoxMRE
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxMRE
+        amount: 6
 
 - type: entity
   id: CrateFoodCooking
   name: kitchen supplies crate
   description: Extra kitchen supplies, in case the botanists are absent.
   components:
-  - type: StorageFill
-    contents:
-    - id: ReagentContainerFlour
-      amount: 3
-    - id: ReagentContainerRice
-      amount: 3
-    - id: FoodBoxCloth
-      amount: 1
-    - id: DrinkMilkCarton
-      amount: 4
-    - id: DrinkSoyMilkCarton
-      amount: 2
-    - id: ReagentContainerSugar
-      amount: 2
-    - id: FoodCondimentPacketSalt
-      amount: 3
-    - id: FoodCondimentBottleEnzyme
-      amount: 2
-    - id: FoodContainerEgg
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ReagentContainerFlour
+          amount: 3
+        - id: ReagentContainerRice
+          amount: 3
+        - id: FoodBoxCloth
+        - id: DrinkMilkCarton
+          amount: 4
+        - id: DrinkSoyMilkCarton
+          amount: 2
+        - id: ReagentContainerSugar
+          amount: 2
+        - id: FoodCondimentPacketSalt
+          amount: 3
+        - id: FoodCondimentBottleEnzyme
+          amount: 2
+        - id: FoodContainerEgg
+          amount: 2
 
 - type: entity
   id: CrateFoodDinnerware
   name: kitchen dinnerware crate
   description: Extra kitchen supplies, in case the clown was allowed in the cafeteria unsupervised.
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodBowlBig
-      amount: 4
-    - id: FoodPlate
-      amount: 4
-    - id: FoodPlateSmall
-      amount: 4
-    - id: FoodKebabSkewer
-      amount: 4
-    - id: KitchenKnife
-      amount: 1
-    - id: DrinkGlass
-      amount: 4
-    - id: FoodPlateMuffinTin
-      amount: 4
-    - id: FoodPlateTin
-      amount: 4
-    - id: BoxUtensil
-      amount: 1
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: FoodBowlBig
+          amount: 4
+        - id: FoodPlate
+          amount: 4
+        - id: FoodPlateSmall
+          amount: 4
+        - id: FoodKebabSkewer
+          amount: 4
+        - id: KitchenKnife
+        - id: DrinkGlass
+          amount: 4
+        - id: FoodPlateMuffinTin
+          amount: 4
+        - id: FoodPlateTin
+          amount: 4
+        - id: BoxUtensil
 
 - type: entity
   id: CrateFoodBarSupply
   name: bartending supplies crate
   description: Extra Bar supplies, in case the clown was allowed in the bar unsupervised.
   components:
-  - type: StorageFill
-    contents:
-    - id: DrinkGlass
-      amount: 5
-    - id: DrinkShotGlass
-      amount: 5
-    - id: DrinkShaker
-      amount: 2
-    - id: DrinkOrangeJuice
-      amount: 2
-    - id: DrinkLimeJuice
-      amount: 2
-    - id: DrinkTomatoJuice
-      amount: 2
-    - id: DrinkWaterBottleFull
-      amount: 2
-    - id: DrinkSodaWaterCan
-      amount: 2
-    - id: DrinkCreamCarton
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: DrinkGlass
+          amount: 5
+        - id: DrinkShotGlass
+          amount: 5
+        - id: DrinkShaker
+          amount: 2
+        - id: DrinkOrangeJuice
+          amount: 2
+        - id: DrinkLimeJuice
+          amount: 2
+        - id: DrinkTomatoJuice
+          amount: 2
+        - id: DrinkWaterBottleFull
+          amount: 2
+        - id: DrinkSodaWaterCan
+          amount: 2
+        - id: DrinkCreamCarton
+          amount: 2
 
 - type: entity
   id: CrateFoodSoftdrinks
   name: softdrinks crate
   description: A variety of sodas to complement a small party, without having to empty the soda machines. Includes 14 sodas.
   components:
-  - type: StorageFill
-    contents:
-    - id: DrinkColaCan
-      amount: 4
-    - id: DrinkGrapeCan
-      amount: 2
-    - id: DrinkRootBeerCan
-      amount: 2
-    - id: DrinkIcedTeaCan
-      amount: 2
-    - id: DrinkLemonLimeCan
-      amount: 2
-    - id: DrinkLemonLimeCranberryCan
-      amount: 2
-    - id: DrinkFourteenLokoCan
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: DrinkColaCan
+          amount: 4
+        - id: DrinkGrapeCan
+          amount: 2
+        - id: DrinkRootBeerCan
+          amount: 2
+        - id: DrinkIcedTeaCan
+          amount: 2
+        - id: DrinkLemonLimeCan
+          amount: 2
+        - id: DrinkLemonLimeCranberryCan
+          amount: 2
+        - id: DrinkFourteenLokoCan
+          amount: 2
 
 - type: entity
   id: CrateFoodGetMore
   name: Getmore Bakemore crate
   description: Getmore branded snacks and baking supplies for the creative chef, all without the need of emptying your station's Getmore machines!
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodSnackRaisins
-      amount: 4
-    - id: FoodSnackChocolate
-      amount: 6
-    - id: FoodSnackPistachios
-      amount: 4
-    - id: ReagentContainerFlour
-      amount: 3
-    - id: ReagentContainerSugar
-      amount: 2
-    - id: FoodCondimentPacketSalt
-      amount: 3
-    - id: DrinkMilkCarton
-      amount: 2
-    - id: FoodContainerEgg
-      amount: 2
-    - id: FoodBoxCloth
-      amount: 1
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: FoodSnackRaisins
+          amount: 4
+        - id: FoodSnackChocolate
+          amount: 6
+        - id: FoodSnackPistachios
+          amount: 4
+        - id: ReagentContainerFlour
+          amount: 3
+        - id: ReagentContainerSugar
+          amount: 2
+        - id: FoodCondimentPacketSalt
+          amount: 3
+        - id: DrinkMilkCarton
+          amount: 2
+        - id: FoodContainerEgg
+          amount: 2
+        - id: FoodBoxCloth
 
 - type: entity
   id: CrateFoodIceCream
   name: ice cream delivery
   description: An assortment of ice cream delights for any occasion! Includes 16 frozen treats.
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodFrozenSandwich
-      amount: 3
-    - id: FoodFrozenSandwichStrawberry
-      amount: 2
-    - id: FoodFrozenPopsicleOrange
-      amount: 2
-    - id: FoodFrozenPopsicleBerry
-      amount: 2
-    - id: FoodFrozenPopsicleJumbo
-      amount: 3
-    - id: FoodFrozenCornuto
-      amount: 2
-    - id: FoodFrozenSundae
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: FoodFrozenSandwich
+          amount: 3
+        - id: FoodFrozenSandwichStrawberry
+          amount: 2
+        - id: FoodFrozenPopsicleOrange
+          amount: 2
+        - id: FoodFrozenPopsicleBerry
+          amount: 2
+        - id: FoodFrozenPopsicleJumbo
+          amount: 3
+        - id: FoodFrozenCornuto
+          amount: 2
+        - id: FoodFrozenSundae
+          amount: 2
 
 - type: entity
   id: CrateFoodSnowcone
   name: snowcone delivery
   description: A freezer packed with refreshing snowcones for a hard working crew, or even a lazy one! Includes 16 snowcones.
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodFrozenSnowconeBase
-      amount: 3
-    - id: FoodFrozenSnowconeBerry
-      amount: 3
-    - id: FoodFrozenSnowconeFruit
-      amount: 3
-    - id: FoodFrozenSnowconeRainbow
-      amount: 3
-    - id: FoodFrozenSnowconeClown
-      amount: 2
-    - id: FoodFrozenSnowconeMime
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: FoodFrozenSnowconeBase
+          amount: 3
+        - id: FoodFrozenSnowconeBerry
+          amount: 3
+        - id: FoodFrozenSnowconeFruit
+          amount: 3
+        - id: FoodFrozenSnowconeRainbow
+          amount: 3
+        - id: FoodFrozenSnowconeClown
+          amount: 2
+        - id: FoodFrozenSnowconeMime
+          amount: 2
 
 - type: entity
   id: CrateFoodHappyHonkBigBite
   name: Happy Honk meal delivery
   description: Two fully loaded Happy Honk Big Bite burger meals, complete with cheesy fries, a bottle of Space Cola, a slice of apple pie and a toy!
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodMealHappyHonkBigBite
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: FoodMealHappyHonkBigBite
+        amount: 2
index 92dbd47cfbc7e5a532a6669dd84f9ddddb3290b5..dc7d8f952a7417a5d3ae828e071ad90d9c2e6333 100644 (file)
   name: variety instrument collection
   description: Get your sad station movin' and groovin' with this catch-all variety pack! Contains seven different instruments.
   components:
-  - type: StorageFill
-    contents:
-      - id: SynthesizerInstrument
-      - id: AcousticGuitarInstrument
-      - id: TrumpetInstrument
-      - id: AccordionInstrument
-      - id: HarmonicaInstrument
-      - id: RecorderInstrument
-      - id: GlockenspielInstrument
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: SynthesizerInstrument
+        - id: AcousticGuitarInstrument
+        - id: TrumpetInstrument
+        - id: AccordionInstrument
+        - id: HarmonicaInstrument
+        - id: RecorderInstrument
+        - id: GlockenspielInstrument
 
 - type: entity
   id: CrateFunInstrumentsBrass
   name: brass instrument ensemble crate
   description: Bring some jazz to the station with the brass ensemble. Contains a variety of brass instruments for the whole station to play.
   components:
-  - type: StorageFill
-    contents:
-      - id: TrumpetInstrument
-        amount: 2
-      - id: TromboneInstrument
-        amount: 2
-      - id: FrenchHornInstrument
-        amount: 2
-      - id: EuphoniumInstrument
-      - id: TubaInstrument
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: TrumpetInstrument
+          amount: 2
+        - id: TromboneInstrument
+          amount: 2
+        - id: FrenchHornInstrument
+          amount: 2
+        - id: EuphoniumInstrument
+        - id: TubaInstrument
 
 - type: entity
   id: CrateFunInstrumentsString
   name: string instrument ensemble crate
   description: Pluck or pick, slap or shred! Play a smooth melody or melt peoples' faces with this package of stringed instruments.
   components:
-  - type: StorageFill
-    contents:
-      - id: AcousticGuitarInstrument
-      - id: ElectricGuitarInstrument
-      - id: BassGuitarInstrument
-      - id: RockGuitarInstrument
-      - id: BanjoInstrument
-      - id: ViolinInstrument
-      - id: CelloInstrument
-      - id: ViolaInstrument
-      - id: HarpInstrument
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: AcousticGuitarInstrument
+        - id: ElectricGuitarInstrument
+        - id: BassGuitarInstrument
+        - id: RockGuitarInstrument
+        - id: BanjoInstrument
+        - id: ViolinInstrument
+        - id: CelloInstrument
+        - id: ViolaInstrument
+        - id: HarpInstrument
 
 - type: entity
   id: CrateFunInstrumentsWoodwind
   name: woodwind instrument ensemble crate
   description: If atmos is good at their job, use air to play music with these woodwind instruments! Real wood not guaranteed with every item.
   components:
-  - type: StorageFill
-    contents:
-      - id: RecorderInstrument
-        amount: 2
-      - id: BagpipeInstrument
-      - id: ClarinetInstrument
-      - id: FluteInstrument
-      - id: HarmonicaInstrument
-        amount: 2
-      - id: SaxophoneInstrument
-        amount: 2
-      - id: OcarinaInstrument
-      - id: PanFluteInstrument
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: RecorderInstrument
+          amount: 2
+        - id: BagpipeInstrument
+        - id: ClarinetInstrument
+        - id: FluteInstrument
+        - id: HarmonicaInstrument
+          amount: 2
+        - id: SaxophoneInstrument
+          amount: 2
+        - id: OcarinaInstrument
+        - id: PanFluteInstrument
 
 - type: entity
   id: CrateFunInstrumentsKeyedPercussion
   name: keyed/percussion instrument ensemble crate
   description: Hit some keys with some sticks or your hands, with this Keyed and Percussion instrument ensemble crate.
   components:
-  - type: StorageFill
-    contents:
-      - id: SynthesizerInstrument
-        amount: 2
-      - id: AccordionInstrument
-        amount: 2
-      - id: KalimbaInstrument
-        amount: 2
-      - id: WoodblockInstrument
-      - id: GlockenspielInstrument
-        amount: 2
-      - id: VibraphoneInstrument
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: SynthesizerInstrument
+          amount: 2
+        - id: AccordionInstrument
+          amount: 2
+        - id: KalimbaInstrument
+          amount: 2
+        - id: WoodblockInstrument
+        - id: GlockenspielInstrument
+          amount: 2
+        - id: VibraphoneInstrument
 
 - type: entity
   id: CrateFunInstrumentsSpecial
   name: special instrument collector's crate
   description: Create some noise with this special collection of arguably-instruments! Centcomm is not responsible for any trauma caused by the contents.
   components:
-  - type: StorageFill
-    contents:
-      - id: BikeHornInstrument
-      - id: MusicBoxInstrument
-      - id: SeashellInstrument
-      - id: XylophoneInstrument
-      - id: GunpetInstrument
-      - id: MicrophoneInstrument
-      - id: HelicopterInstrument
-      - id: BirdToyInstrument
-      - id: MusicalLungInstrument
-      - id: ReverseCymbalsInstrument
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BikeHornInstrument
+        - id: MusicBoxInstrument
+        - id: SeashellInstrument
+        - id: XylophoneInstrument
+        - id: GunpetInstrument
+        - id: MicrophoneInstrument
+        - id: HelicopterInstrument
+        - id: BirdToyInstrument
+        - id: MusicalLungInstrument
+        - id: ReverseCymbalsInstrument
 
 - type: entity
   id: CrateFunInstrumentsRandom
   name: art supplies
   description: Make some happy little accidents with lots of crayons!
   components:
-  - type: StorageFill
-    contents:
-      - id: CrayonBox
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: CrayonBox
 
 - type: entity
   id: CrateFunBoardGames
   name: board game crate
   description: Game nights have been proven to either decrease boredom or increase murderous rage depending on the game.
   components:
-  - type: StorageFill
-    contents:
-      - id: ChessBoard
-      - id: BackgammonBoard
-      - id: ParchisBoard
-      - id: CheckerBoard
-      - id: ShipBattlemap
-      - id: SnowBattlemap
-      - id: SandBattlemap
-      - id: MoonBattlemap
-      - id: GrassBattlemap
-      - id: DiceBag
-        amount: 6
-      - id: PaperCNCSheet
-        amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ChessBoard
+        - id: BackgammonBoard
+        - id: ParchisBoard
+        - id: CheckerBoard
+        - id: ShipBattlemap
+        - id: SnowBattlemap
+        - id: SandBattlemap
+        - id: MoonBattlemap
+        - id: GrassBattlemap
+        - id: DiceBag
+          amount: 6
+        - id: PaperCNCSheet
+          amount: 6
 
 - type: entity
   id: CrateFunSadTromboneImplants
   name: sad trombone implants
   description: Death's never been so fun before! Implant these to make dying a bit more happy.
   components:
-  - type: StorageFill
-    contents:
-      - id: SadTromboneImplanter
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SadTromboneImplanter
         amount: 3
 
 - type: entity
   name: light implants
   description: Light up your skin with these implants!
   components:
-  - type: StorageFill
-    contents:
-      - id: LightImplanter
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: LightImplanter
         amount: 3
 
 - type: entity
   name: party crate
   description: An entire party just waiting for you to open it. Includes party favors, party beverages, and even a cake.
   components:
-  - type: StorageFill
-    contents:
-      - id: GlowstickBase
-        amount: 2
-      - id: GlowstickBlue
-        amount: 2
-      - id: GlowstickPurple
-        amount: 2
-      - id: GlowstickRed
-        amount: 2
-      - id: GlowstickYellow
-        amount: 2
-      - id: FoodCakeBirthday
-      - id: DrinkLean
-        amount: 4
-      - id: KnifePlastic
-      - id: ClothingHeadHatPartyRed
-        amount: 2
-      - id: ClothingHeadHatPartyYellow
-        amount: 2
-      - id: ClothingHeadHatPartyGreen
-        amount: 2
-      - id: ClothingHeadHatPartyBlue
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: GlowstickBase
+          amount: 2
+        - id: GlowstickBlue
+          amount: 2
+        - id: GlowstickPurple
+          amount: 2
+        - id: GlowstickRed
+          amount: 2
+        - id: GlowstickYellow
+          amount: 2
+        - id: FoodCakeBirthday
+        - id: DrinkLean
+          amount: 4
+        - id: KnifePlastic
+        - id: ClothingHeadHatPartyRed
+          amount: 2
+        - id: ClothingHeadHatPartyYellow
+          amount: 2
+        - id: ClothingHeadHatPartyGreen
+          amount: 2
+        - id: ClothingHeadHatPartyBlue
+          amount: 2
 
 - type: entity
   id: CrateFunWaterGuns
   name: water gun crate
   description: A summer special with a variety of brightly colored water guns. Water not included.
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponWaterBlaster
-        amount: 2
-      - id: WeaponWaterPistol
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponWaterBlaster
+          amount: 2
+        - id: WeaponWaterPistol
+          amount: 4
 
 - type: entity
   id: CrateFunFoamGuns
   name: Foam Force crate
   description: Contains four Foam Force rifles, some grenades, and extra ammo. It's [REDACTED] or nothing!
   components:
-  - type: StorageFill
-    contents:
-    - id: WeaponRifleFoam
-      amount: 4
-    - id: BoxDonkSoftBox
-      amount: 2
-    - id: GrenadeFoamDart
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponRifleFoam
+          amount: 4
+        - id: BoxDonkSoftBox
+          amount: 2
+        - id: GrenadeFoamDart
+          amount: 4
 
 - type: entity
   id: CrateFunBoxing
   name: boxing crate
   description: Want to set up an underground fight club or host a tournament amongst station crew? This crate is for you!
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHandsGlovesBoxingRed
-      - id: ClothingHandsGlovesBoxingBlue
-      - id: ClothingHandsGlovesBoxingYellow
-      - id: ClothingHandsGlovesBoxingGreen
-      - id: UniformShortsRed
-        amount: 3
-      - id: UniformShortsRedWithTop
-        amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingHandsGlovesBoxingRed
+        - id: ClothingHandsGlovesBoxingBlue
+        - id: ClothingHandsGlovesBoxingYellow
+        - id: ClothingHandsGlovesBoxingGreen
+        - id: UniformShortsRed
+          amount: 3
+        - id: UniformShortsRedWithTop
+          amount: 3
 
 - type: entity
   id: CrateFunPirate
   parent: CratePirate
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitPirate
-        amount: 2
-      - id: ClothingHeadHatPirate
-      - id: ClothingOuterCoatPirate
-      - id: ClothingShoesBootsLaceup
-        amount: 2
-      - id: ClothingHeadBandRed
-      - id: FoamCutlass
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingUniformJumpsuitPirate
+          amount: 2
+        - id: ClothingHeadHatPirate
+        - id: ClothingOuterCoatPirate
+        - id: ClothingShoesBootsLaceup
+          amount: 2
+        - id: ClothingHeadBandRed
+        - id: FoamCutlass
+          amount: 2
 
 - type: entity
   id: CrateFunToyBox
   parent: CrateToyBox
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: SnapPopBox
-      - id: CrazyGlue
-      - id: CrazyLube
-      - id: PlasticBanana
-      - id: WhoopieCushion
-      - id: ToyHammer
-      - id: MrChips
-        orGroup: GiftPool
-      - id: MrDips
-        orGroup: Giftpool
-      - id: RevolverCapGun
-      - id: BalloonNT
-      - id: ClothingShoesClownLarge
-      - id: ClothingHeadHatMagician
-      - id: BeachBall
-      - id: TennisBall
-        amount: 2
-      - id: ClothingShoesSkates
-      - id: RubberChicken
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: SnapPopBox
+        - id: CrazyGlue
+        - id: CrazyLube
+        - id: PlasticBanana
+        - id: WhoopieCushion
+        - id: ToyHammer
+        - !type:GroupSelector
+          children:
+          - id: MrChips
+          - id: MrDips
+        - id: RevolverCapGun
+        - id: BalloonNT
+        - id: ClothingShoesClownLarge
+        - id: ClothingHeadHatMagician
+        - id: BeachBall
+        - id: TennisBall
+          amount: 2
+        - id: ClothingShoesSkates
+        - id: RubberChicken
 
 - type: entity
   id: CrateFunBikeHornImplants
   name: bike horn implants
   description: A thousand honks a day keeps security officers away!
   components:
-  - type: StorageFill
-    contents:
-      - id: BikeHornImplanter
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BikeHornImplanter
         amount: 3
 
 - type: entity
   name: mystery figure crate
   description: A collection of 10 Mystery Figurine boxes. Duplicates non refundable.
   components:
-  - type: StorageFill
-    contents:
-      - id: MysteryFigureBox
-        amount: 10
-      - id: MysteryFigureBox
-        amount: 15
-        prob: 0.05
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MysteryFigureBox
+          amount: 10
+        - id: MysteryFigureBox
+          amount: 15
+          prob: 0.05
 
 - type: entity
   name: dartboard box set
   id: CrateFunDartsSet
   parent: CratePlastic
   components:
-  - type: StorageFill
-    contents:
-      - id: TargetDarts
-        amount: 1
-      - id: BoxDarts
-        amount: 2
-      - id: BoxDarts
-        amount: 1
-        prob: 0.05
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: TargetDarts
+        - id: BoxDarts
+          amount: 2
+        - id: BoxDarts
+          prob: 0.05
 
 - type: entity
   name: hydrated scurret
   id: CrateFunScurret
   parent: CrateLivestock
   components:
-  - type: StorageFill
-    contents:
-    - id: MobEmotionalSupportScurret # How? Why?
-    - id: DrinkVodkaBottleFull
-    - id: DrinkWhiskeyBottleFull
-    - id: DrinkTequilaBottleFull # ...that explains it.
-    - id: DrinkShotGlass
-      amount: 2
-    - id: Spear # self defence
-    - id: ClothingHeadHatHardhatYellow
-    - id: ClothingNeckMantleQM
-    - id: ClothingHeadsetCargo
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MobEmotionalSupportScurret # How? Why?
+        - id: DrinkVodkaBottleFull
+        - id: DrinkWhiskeyBottleFull
+        - id: DrinkTequilaBottleFull # ...that explains it.
+        - id: DrinkShotGlass
+          amount: 2
+        - id: Spear # self defence
+        - id: ClothingHeadHatHardhatYellow
+        - id: ClothingNeckMantleQM
+        - id: ClothingHeadsetCargo
 
index 6c604ddc1a3b935c35310a19d1e3b3d8ebd20106..cb8a690f2b82ac4b161b8fc7c13b7637383145ce 100644 (file)
@@ -4,9 +4,10 @@
   name: glass sheet crate
   description: 90 sheets of glass, packed with care.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetGlass
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SheetGlass
         amount: 3
 
 - type: entity
   name: steel sheet crate
   description: 90 sheets of steel.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetSteel
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SheetSteel
         amount: 3
 
 - type: entity
   name: textiles crate
   description: 60 pieces of cloth and 30 pieces of durathread.
   components:
-  - type: StorageFill
-    contents:
-      - id: MaterialCloth
-        amount: 2
-      - id: MaterialDurathread
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MaterialCloth
+          amount: 2
+        - id: MaterialDurathread
 
 - type: entity
   id: CrateMaterialPlastic
   name: plastic sheet crate
   description: 90 sheets of plastic.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetPlastic
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SheetPlastic
         amount: 3
 
 - type: entity
   name: wood crate
   description: Bunch of wood planks.
   components:
-  - type: StorageFill
-    contents:
-      - id: MaterialWoodPlank
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MaterialWoodPlank
 
 - type: entity
   id: CrateMaterialBrass
   name: brass crate
   description: 90 sheets of brass.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetBrass
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SheetBrass
         amount: 3
 
 - type: entity
   name: plasteel crate
   description: 30 sheets of plasteel.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetPlasteel
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SheetPlasteel
 
 - type: entity
   id: CrateMaterialPlasma
   name: solid plasma crate
   description: 30 sheets of plasma.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetPlasma
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SheetPlasma
 
 - type: entity
   id: CrateMaterialGold
   name: gold crate
   description: 30 bars of gold.
   components:
-  - type: StorageFill
-    contents:
-    - id: IngotGold
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: IngotGold
 
 - type: entity
   id: CrateMaterialSilver
   name: silver crate
   description: 30 bars of silver.
   components:
-  - type: StorageFill
-    contents:
-    - id: IngotSilver
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: IngotSilver
 
 - type: entity
   id: CrateMaterialCardboard
   name: cardboard crate
   description: 90 pieces of cardboard.
   components:
-  - type: StorageFill
-    contents:
-      - id: MaterialCardboard
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MaterialCardboard
         amount: 3
 
 - type: entity
   name: paper crate
   description: 90 sheets of paper.
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetPaper
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: SheetPaper
         amount: 3
 
 - type: entityTable
   name: material silo crate
   description: A package including all the materials to create a material silo.
   components:
-  - type: StorageFill
-    contents:
-    - id: MaterialSiloMachineCircuitboard
-    - id: SheetSteel1
-      amount: 5
-    - id: MicroManipulatorStockPart
-      amount: 4
-    - id: CableApcStack1
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MaterialSiloMachineCircuitboard
+        - id: SheetSteel1
+          amount: 5
+        - id: MicroManipulatorStockPart
+          amount: 4
+        - id: CableApcStack1
+          amount: 2
 
 - type: entity
   id: CrateMaterialBasicResource
   name: basic sheet crate
   description: 30 sheets of steel, glass, and plastic.
   components:
-  - type: StorageFill
-    contents:
-    - id: SheetSteel
-    - id: SheetGlass
-    - id: SheetPlastic
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: SheetSteel
+        - id: SheetGlass
+        - id: SheetPlastic
 
 #- type: entity
 #  id: CrateMaterialHFuelTank
 #  name: fueltank crate
 #  parent: CrateGenericSteel
 #  components:
-#  - type: StorageFill
-#    contents:
-#      - id: WeldingFuelTank
-#        amount: 1
+#  - type: EntityTableContainerFill
+#    containers:
+#      entity_storage:
+#        id: WeldingFuelTank
 
 #- type: entity
 #  id: CrateMaterialHWaterTank
 #  name: watertank crate
 #  parent: CrateGenericSteel
 #  components:
-#  - type: StorageFill
-#    contents:
-#      - id: WaterTankFull
-#        amount: 1
+#  - type: EntityTableContainerFill
+#    containers:
+#      entity_storage:
+#        id: WaterTankFull
index fe04f72899a77cd9c4e69a8a81fe9757f51dd56f..d8a98fe5e9cea50142ebc0225118f181304b21c9 100644 (file)
@@ -4,17 +4,19 @@
   name: medical supplies crate
   description: Basic medical supplies.
   components:
-  - type: StorageFill
-    contents:
-      - id: MedkitFilled
-        amount: 2
-      - id: Gauze
-        amount: 2
-      - id: Bloodpack
-        amount: 2
-      - id: BoxLatexGloves
-      - id: BoxSterileMask
-      - id: BoxMouthSwab
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MedkitFilled
+          amount: 2
+        - id: Gauze
+          amount: 2
+        - id: Bloodpack
+          amount: 2
+        - id: BoxLatexGloves
+        - id: BoxSterileMask
+        - id: BoxMouthSwab
 
 - type: entity
   id: CrateChemistrySupplies
   name: chemistry supplies crate
   description: Basic chemistry supplies.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxSyringe
-      - id: BoxBeaker
-      - id: BoxPillCanister
-      - id: Dropper
-        amount: 2
-      - id: BoxBottle
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxSyringe
+        - id: BoxBeaker
+        - id: BoxPillCanister
+        - id: Dropper
+          amount: 2
+        - id: BoxBottle
+          amount: 2
 
 - type: entity
   id: CrateChemistryVials
   name: vial supply crate
   description: Crate filled with a box of vials.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxVial
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxVial
 
 - type: entity
   id: CrateMindShieldImplants
   name: MindShield implant crate
   description: Crate filled with 3 MindShield implants.
   components:
-  - type: StorageFill
-    contents:
-      - id: MindShieldImplanter
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MindShieldImplanter
         amount: 3
 
 - type: entity
   name: surgical supplies crate
   description: Surgical instruments.
   components:
-  - type: StorageFill
-    contents:
-      - id: Scalpel
-      - id: Retractor
-      - id: Cautery
-      - id: Drill
-      - id: Saw
-      - id: Hemostat
-      - id: ClothingMaskSterile
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: Scalpel
+        - id: Retractor
+        - id: Cautery
+        - id: Drill
+        - id: Saw
+        - id: Hemostat
+        - id: ClothingMaskSterile
 
 - type: entity
   id: CrateMedicalScrubs
   name: medical scrubs crate
   description: Medical clothings.
   components:
-  - type: StorageFill
-    contents:
-      - id: UniformScrubsColorGreen
-      - id: UniformScrubsColorPurple
-      - id: UniformScrubsColorBlue
-      - id: ClothingHeadHatSurgcapBlue
-      - id: ClothingHeadHatSurgcapPurple
-      - id: ClothingHeadHatSurgcapGreen
-      - id: ClothingMaskSterile
-        amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: UniformScrubsColorGreen
+        - id: UniformScrubsColorPurple
+        - id: UniformScrubsColorBlue
+        - id: ClothingHeadHatSurgcapBlue
+        - id: ClothingHeadHatSurgcapPurple
+        - id: ClothingHeadHatSurgcapGreen
+        - id: ClothingMaskSterile
+          amount: 3
 
 - type: entity
   id: CrateEmergencyBurnKit
   name: emergency burn kit
   description: Crate filled with a burn treatment kit.
   components:
-  - type: StorageFill
-    contents:
-    - id: MedkitBurnFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MedkitBurnFilled
 
 - type: entity
   id: CrateEmergencyToxinKit
   name: emergency toxin kit
   description: Crate filled with a toxin treatment kit.
   components:
-  - type: StorageFill
-    contents:
-    - id: MedkitToxinFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MedkitToxinFilled
 
 - type: entity
   id: CrateEmergencyO2Kit
   name: emergency O2 kit
   description: Crate filled with an O2 treatment kit.
   components:
-  - type: StorageFill
-    contents:
-    - id: MedkitOxygenFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MedkitOxygenFilled
 
 - type: entity
   id: CrateEmergencyBruteKit
   name: emergency brute kit
   description: Crate filled with a brute treatment kit.
   components:
-  - type: StorageFill
-    contents:
-    - id: MedkitBruteFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MedkitBruteFilled
 
 - type: entity
   id: CrateEmergencyAdvancedKit
   name: emergency advanced kit
   description: Crate filled with an advanced treatment kit.
   components:
-  - type: StorageFill
-    contents:
-    - id: MedkitAdvancedFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MedkitAdvancedFilled
 
 - type: entity
   id: CrateEmergencyRadiationKit
   name: emergency radiation kit
   description: Crate filled with a radiation treatment kit.
   components:
-  - type: StorageFill
-    contents:
-    - id: MedkitRadiationFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MedkitRadiationFilled
 
 - type: entity
   id: CrateBodyBags
   name: body bags crate
   description: Contains ten body bags.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxBodyBag
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxBodyBag
         amount: 2
 
 - type: entity
   name: virology bio suit crate
   description: Contains 2 biohazard suits to ensure that no disease will distract you from treating the crew. Requires Medical access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterBioVirology
-        amount: 2
-      - id: ClothingHeadHatHoodBioVirology
-        amount: 2
-      - id: ClothingMaskSterile
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: FillBiohazardGearVirology
+          rolls: 2
+        - id: ClothingMaskSterile
+          amount: 2
index 403eb1a01ddf6a7d5f4733e0d878aba2f1be8d26..625a890d8b2ec2aa46c7794fb1deffa49d34e301 100644 (file)
@@ -4,9 +4,10 @@
   name: crate of bees
   description: A crate containing a swarm of eight bees.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobBee
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobBee
         amount: 8
 
 - type: entity
   name: crate of butterflies
   description: A crate containing five butterflies.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobButterfly
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobButterfly
         amount: 5
 
 - type: entity
   name: cat crate
   description: A crate containing a single cat.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobCat
-        prob: 1
-        orGroup: MobCat
-      - id: MobCatCalico
-        prob: 1
-        orGroup: MobCat
-      - id: MobCatCaracal
-        prob: 0.5
-        orGroup: MobCat
-      - id: MobCatKitten
-        prob: 0.25
-        orGroup: MobCat
-      - id: MobBingus
-        prob: 0.005
-        orGroup: MobCat
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:GroupSelector
+        children:
+        - id: MobCat
+        - id: MobCatCalico
+        - id: MobCatCaracal
+          weight: 0.5
+        - id: MobCatKitten
+          weight: 0.25
+        - id: MobBingus
+          weight: 0.005
 
 - type: entity
   id: CrateNPCChicken
   name: chicken crate
   description: A crate containing four fully grown chickens.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobChicken
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobChicken
         amount: 4
 
 - type: entity
   name: crab crate
   description: A crate containing three huge crabs.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobCrab
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobCrab
         amount: 3
 
 - type: entity
   name: duck crate
   description: A crate containing six fully grown ducks.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobDuckMallard
-        amount: 1
-      - id: MobDuckBrown
-        amount: 1
-      - id: MobDuckWhite
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MobDuckMallard
+        - id: MobDuckBrown
+        - id: MobDuckWhite
+          amount: 2
 
 - type: entity
   id: CrateNPCCorgi
   name: corgi crate
   description: A crate containing a single corgi.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobCorgi
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobCorgi
 
 - type: entity
   id: CrateNPCPuppyCorgi
   name: puppy corgi crate
   description: A crate containing a single puppy corgi. Awww.
   components:
-  - type: StorageFill
-    contents:
-    - id: MobCorgiPuppy
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobCorgiPuppy
 
 - type: entity
   id: CrateNPCCow
   name: cow crate
   description: A crate containing a single cow.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobCow
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobCow
 
 - type: entity
   id: CrateNPCGoat
   name: goat crate
   description: A crate containing a single goat.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobGoat
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobGoat
 
 - type: entity
   id: CrateNPCGoose
   name: goose crate
   description: A crate containing two geese.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobGoose
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobGoose
         amount: 2
 
 - type: entity
   name: gorilla crate
   description: A crate containing a single gorilla.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobGorilla
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobGorilla
 
 - type: entity
   id: CrateNPCMonkeyCube
   name: monkey cube crate
   description: A crate containing single box of monkey cubes.
   components:
-  - type: StorageFill
-    contents:
-      - id: MonkeyCubeBox
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MonkeyCubeBox
 
 - type: entity
   id: CrateNPCKoboldCube
   name: kobold cube crate
   description: A crate containing single box of kobold cubes.
   components:
-  - type: StorageFill
-    contents:
-      - id: KoboldCubeBox
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: KoboldCubeBox
 
 - type: entity
   id: CrateNPCMouse
   name: mice crate
   description: A crate containing five mice.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobMouse
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobMouse
         amount: 5
 
 - type: entity
   name: parrot crate
   description: A crate containing three parrots.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobParrot
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobParrot
         amount: 3
 
 - type: entity
   name: penguin crate
   description: A crate containing two penguins.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobPenguin
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobPenguin
         amount: 2
 
 - type: entity
   name: pig crate
   description: A crate containing a single pig.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobPig
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobPig
 
 - type: entity
   id: CrateNPCSnake
   name: snake crate
   description: A crate containing three snakes.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobSnake
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobSnake
         amount: 3
 
 - type: entity
   parent: CrateRodentCage
   suffix: Filled
   components:
-    - type: StorageFill
-      contents:
-        - id: MobHamster
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobHamster
 
 - type: entity
   id: CrateNPCHamlet
   parent: CrateRodentCage
   suffix: Hamlet
   components:
-    - type: StorageFill
-      contents:
-        - id: MobHamsterHamlet
-          prob: 1
-          orGroup: MobHamsterHamlet
-        - id: MobHamsterHamletSlippery
-          prob: 0.001
-          orGroup: MobHamsterHamlet
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:GroupSelector
+        children:
+          - id: MobHamsterHamlet
+          - id: MobHamsterHamletSlippery
+            weight: 0.001
 
 - type: entity
   id: CrateNPCLizard
   name: lizard crate
   description: A crate containing a lizard.
   components:
-    - type: StorageFill
-      contents:
-        - id: MobLizard
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobLizard
 
 - type: entity
   id: CrateNPCKangaroo
   name: kangaroo crate
   description: A crate containing a kangaroo.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobKangaroo
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobKangaroo
 
 - type: entity
   id: CrateNPCMothroach
   name: crate of mothroaches
   description: A crate containing four mothroaches.
   components:
-  - type: StorageFill
-    contents:
-      - id: MobMothroach
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: MobMothroach
         amount: 4
index ed48479cd20aaed282f92bf25bc3b2ad271cfd31..cb28e098042545b76e0b98180d0b5dfee4488b58 100644 (file)
   parent: CrateGenericSteel
   suffix: Digging
   components:
-  - type: StorageFill
-    contents:
-      - id: Shovel
-      - id: Pickaxe
-        prob: 0.90
-      - id: Pickaxe
-        prob: 0.40
-      - id: Pickaxe
-        prob: 0.10
-      - id: Shovel
-        prob: 0.50
-      - id: Shovel
-        prob: 0.20
-      - id: HydroponicsToolSpade
-        prob: 0.10
-      - id: HydroponicsToolHatchet
-        prob: 0.05
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: Shovel
+        - id: Pickaxe
+          prob: 0.90
+        - id: Pickaxe
+          prob: 0.40
+        - id: Pickaxe
+          prob: 0.10
+        - id: Shovel
+          prob: 0.50
+        - id: Shovel
+          prob: 0.20
+        - id: HydroponicsToolSpade
+          prob: 0.10
+        - id: HydroponicsToolHatchet
+          prob: 0.05
 
 - type: entity
   id: CratePermaEscapeEVA
   parent: CrateGenericSteel
   suffix: EVAs
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetEVALarge
-      - id: ClothingOuterHardsuitEVAPrisoner
-      - id: ClothingHeadHelmetEVALarge
-        prob: 0.80
-      - id: ClothingOuterHardsuitEVAPrisoner
-        prob: 0.80
-      - id: ClothingOuterHardsuitVoidParamed
-        prob: 0.10
-      - id: ClothingOuterRedRacoon
-        prob: 0.10
-      - id: ClothingOuterSanta
-        prob: 0.10
-      - id: ClothingOuterEVASuitSyndicate
-        prob: 0.20
-      - id: EmergencyOxygenTankFilled
-        prob: 0.25
-      - id: EmergencyOxygenTank
-        prob: 0.25
-      - id: OxygenTankFilled
-        prob: 0.05
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingHeadHelmetEVALarge
+        - id: ClothingOuterHardsuitEVAPrisoner
+        - id: ClothingHeadHelmetEVALarge
+          prob: 0.80
+        - id: ClothingOuterHardsuitEVAPrisoner
+          prob: 0.80
+        - id: ClothingOuterHardsuitVoidParamed
+          prob: 0.10
+        - id: ClothingOuterRedRacoon
+          prob: 0.10
+        - id: ClothingOuterSanta
+          prob: 0.10
+        - id: ClothingOuterEVASuitSyndicate
+          prob: 0.20
+        - id: EmergencyOxygenTankFilled
+          prob: 0.25
+        - id: EmergencyOxygenTank
+          prob: 0.25
+        - id: OxygenTankFilled
+          prob: 0.05
 
 - type: entity
   id: CratePermaEscapeGun
   parent: CrateGenericSteel
   suffix: Gun
   components:
-  - type: StorageFill
-    contents:
-    - id: WeaponPistolMk58
-      prob: 0.15
-      orGroup: gun
-    - id: FoamCrossbow
-      prob: 0.10
-      orGroup: gun
-    - id: WeaponRifleFoam
-      prob: 0.05
-      orGroup: gun
-    - id: WeaponPistolFlintlock
-      prob: 0.20
-      orGroup: gun
-    - id: WeaponShotgunBlunderbuss
-      prob: 0.10
-      orGroup: gun
-    - id: WeaponShotgunBlunderbuss
-      prob: 0.15
-      orGroup: gun
-    - id: WeaponRevolverPirate
-      prob: 0.15
-      orGroup: gun
-    - id: WeaponProtoKineticAccelerator
-      prob: 0.20
-      orGroup: gun
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:GroupSelector
+        children:
+        - id: WeaponPistolMk58
+          weight: 1.5
+        - id: FoamCrossbow
+        - id: WeaponRifleFoam
+          weight: 0.5
+        - id: WeaponPistolFlintlock
+          weight: 2
+        - id: WeaponShotgunBlunderbuss
+        - id: WeaponShotgunBlunderbuss
+          weight: 1.5
+        - id: WeaponRevolverPirate
+          weight: 1.5
+        - id: WeaponProtoKineticAccelerator
+          weight: 2
 
 - type: entity
   id: CratePermaEscapeBureaucracy
   parent: CrateGenericSteel
   suffix: Writing
   components:
-  - type: StorageFill
-    contents:
-      - id: RubberStampApproved
-      - id: RubberStampDenied
-      - id: Paper
-        amount: 5
-      - id: Pen
-        amount: 3
-      - id: BoxFolderBaseEmpty
-        orGroup: folderA
-      - id: BoxFolderBlackEmpty
-        orGroup: folderA
-      - id: BoxFolderBlueEmpty
-        orGroup: folderA
-      - id: BoxFolderGreenEmpty
-        orGroup: folderA
-      - id: BoxFolderGreyEmpty
-        orGroup: folderA
-      - id: BoxFolderRedEmpty
-        orGroup: folderA
-      - id: BoxFolderYellowEmpty
-        orGroup: folderA
-      - id: BoxFolderBaseEmpty
-        orGroup: folderB
-      - id: BoxFolderBlackEmpty
-        orGroup: folderB
-      - id: BoxFolderBlueEmpty
-        orGroup: folderB
-      - id: BoxFolderGreenEmpty
-        orGroup: folderB
-      - id: BoxFolderGreyEmpty
-        orGroup: folderB
-      - id: BoxFolderRedEmpty
-        orGroup: folderB
-      - id: BoxFolderYellowEmpty
-        orGroup: folderB
-      - id: CrayonBox
-        prob: 0.50
-      - id: CrayonBox
-        prob: 0.10
-      - id: ClearPDA # change to visitor one day.
-        prob: 0.10
-      - id: PersonalAI
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: RubberStampApproved
+        - id: RubberStampDenied
+        - id: Paper
+          amount: 5
+        - id: Pen
+          amount: 3
+        - !type:GroupSelector
+          rolls: 2
+          children:
+          - id: BoxFolderBaseEmpty
+          - id: BoxFolderBlackEmpty
+          - id: BoxFolderBlueEmpty
+          - id: BoxFolderGreenEmpty
+          - id: BoxFolderGreyEmpty
+          - id: BoxFolderRedEmpty
+          - id: BoxFolderYellowEmpty
+        - id: CrayonBox
+          prob: 0.50
+        - id: CrayonBox
+          prob: 0.10
+        - id: ClearPDA # change to visitor one day.
+          prob: 0.10
+        - id: PersonalAI
 
 - type: entity
   id: CratePermaEscapeLights
   parent: CrateGenericSteel
   suffix: Glowsticks
   components:
-  - type: StorageFill
-    contents:
-      - id: GlowstickBlue
-        prob: 0.50
-      - id: GlowstickBlue
-        prob: 0.20
-      - id: GlowstickBlue
-        prob: 0.05
-      - id: GlowstickBase
-        prob: 0.50
-      - id: GlowstickBase
-        prob: 0.20
-      - id: GlowstickBase
-        prob: 0.05
-      - id: GlowstickPurple
-        prob: 0.50
-      - id: GlowstickPurple
-        prob: 0.20
-      - id: GlowstickPurple
-        prob: 0.05
-      - id: GlowstickRed
-        prob: 0.50
-      - id: GlowstickRed
-        prob: 0.20
-      - id: GlowstickRed
-        prob: 0.05
-      - id: GlowstickYellow
-        prob: 0.50
-      - id: GlowstickYellow
-        prob: 0.20
-      - id: GlowstickYellow
-        prob: 0.05
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: GlowstickBlue
+          prob: 0.50
+        - id: GlowstickBlue
+          prob: 0.20
+        - id: GlowstickBlue
+          prob: 0.05
+        - id: GlowstickBase
+          prob: 0.50
+        - id: GlowstickBase
+          prob: 0.20
+        - id: GlowstickBase
+          prob: 0.05
+        - id: GlowstickPurple
+          prob: 0.50
+        - id: GlowstickPurple
+          prob: 0.20
+        - id: GlowstickPurple
+          prob: 0.05
+        - id: GlowstickRed
+          prob: 0.50
+        - id: GlowstickRed
+          prob: 0.20
+        - id: GlowstickRed
+          prob: 0.05
+        - id: GlowstickYellow
+          prob: 0.50
+        - id: GlowstickYellow
+          prob: 0.20
+        - id: GlowstickYellow
+          prob: 0.05
 
 - type: entity
   id: CratePermaEscapeMats
   parent: CrateGenericSteel
   suffix: Mats
   components:
-  - type: StorageFill
-    contents:
-      - id: SheetSteel
-        orGroup: matA
-      - id: PartRodMetal
-        orGroup: matA
-      - id: SheetSteel
-        orGroup: matB
-      - id: PartRodMetal
-        orGroup: matB
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:GroupSelector
+        rolls: 2
+        children:
+         - id: SheetSteel
+         - id: PartRodMetal
 
 - type: entity
   id: CratePermaEscapeGiftsFromSyndicate
   parent: CrateGenericSteel
   suffix: Syndi Gifts
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingEyesGlassesOutlawGlasses
-      - id: ClothingHeadHatOutlawHat
-      - id: HappyHonkNukieSnacks
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingEyesGlassesOutlawGlasses
+        - id: ClothingHeadHatOutlawHat
+        - id: HappyHonkNukieSnacks
       # - id: BaseUplinkRadio # too spicy I think.
         # prob: 0.50
       # - id: Telecrystal
         # prob: 0.01
       # - id: Telecrystal5
         # prob: 0.01
-      - id: CyberPen
-        prob: 0.10
-      - id: CockroachCube
-        orGroup: cube
-      - id: AbominationCube
-        prob: 0.20
-        orGroup: cube
-      - id: SpaceCarpCube
-        prob: 0.20
-        orGroup: cube
-      - id: SyndicateSponge
-        prob: 0.20
-        orGroup: cube
-      - id: MindShieldImplanter
-        prob: 0.20
-      - id: ClothingHandsGlovesConducting # funny
-        prob: 0.30
-      - id: CigPackSyndicate
-        prob: 0.80
-      - id: StimpackMini
-        prob: 0.20
-      - id: StimpackMini
-        prob: 0.10
-      - id: CombatMedipen
-        prob: 0.05
-      - id: MedkitCombatFilled
-        prob: 0.01
-      - id: SoapSyndie
-        prob: 0.15
-      - id: DnaScramblerImplanter
-        prob: 0.005
+        - id: CyberPen
+          prob: 0.10
+        - !type:GroupSelector
+          children:
+          - id: CockroachCube
+          - id: AbominationCube
+            weight: 0.20
+          - id: SpaceCarpCube
+            weight: 0.20
+          - id: SyndicateSponge
+            weight: 0.20
+        - id: MindShieldImplanter
+          prob: 0.20
+        - id: ClothingHandsGlovesConducting # funny
+          prob: 0.30
+        - id: CigPackSyndicate
+          prob: 0.80
+        - id: StimpackMini
+          prob: 0.20
+        - id: StimpackMini
+          prob: 0.10
+        - id: CombatMedipen
+          prob: 0.05
+        - id: MedkitCombatFilled
+          prob: 0.01
+        - id: SoapSyndie
+          prob: 0.15
+        - id: DnaScramblerImplanter
+          prob: 0.005
 
 
 - type: entity
   parent: CrateGenericSteel
   suffix: Merc
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitMercenary
-      - id: ClothingHeadBandMerc
-        prob: 0.50
-      - id: ClothingHeadHatBeretMerc
-        prob: 0.20
-      - id: ClothingHeadHelmetMerc
-        prob: 0.05
-      - id: ClothingEyesGlassesMercenary
-        prob: 0.20
-      - id: ClothingMaskGasMerc
-        prob: 0.10
-      - id: ClothingHandsGlovesMercFingerless
-        prob: 0.20
-      - id: ClothingHandsMercGlovesCombat
-        prob: 0.05
-      - id: ClothingBackpackMerc
-        prob: 0.50
-      - id: ClothingShoesBootsMerc
-        prob: 0.50
-      - id: ClothingOuterVestWebMerc
-        prob: 0.25
-      - id: ClothingBeltMercWebbing
-        prob: 0.05
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingUniformJumpsuitMercenary
+        - id: ClothingHeadBandMerc
+          prob: 0.50
+        - id: ClothingHeadHatBeretMerc
+          prob: 0.20
+        - id: ClothingHeadHelmetMerc
+          prob: 0.05
+        - id: ClothingEyesGlassesMercenary
+          prob: 0.20
+        - id: ClothingMaskGasMerc
+          prob: 0.10
+        - id: ClothingHandsGlovesMercFingerless
+          prob: 0.20
+        - id: ClothingHandsMercGlovesCombat
+          prob: 0.05
+        - id: ClothingBackpackMerc
+          prob: 0.50
+        - id: ClothingShoesBootsMerc
+          prob: 0.50
+        - id: ClothingOuterVestWebMerc
+          prob: 0.25
+        - id: ClothingBeltMercWebbing
+          prob: 0.05
 
 - type: entity
   id: CratePermaEscapeComs
   parent: CrateGenericSteel
   suffix: Coms
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadsetMining
-        orGroup: coms
-      - id: ClothingHeadsetMining
-        orGroup: coms
-      - id: ClothingHeadsetMining
-        orGroup: coms
-      - id: ClothingHeadsetGrey
-        orGroup: coms
-      - id: ClothingHeadsetScience
-        orGroup: coms
-      - id: ClothingHeadsetService
-        orGroup: coms
-      - id: ClothingHeadsetEngineering
-        orGroup: coms
-      - id: ClothingHeadsetMedical
-        orGroup: coms
-      - id: EncryptionKeyCargo
-        prob: 0.05
-      - id: EncryptionKeyScience
-        prob: 0.05
-      - id: EncryptionKeyService
-        prob: 0.05
-      - id: EncryptionKeyMedical
-        prob: 0.05
-      - id: EncryptionKeyEngineering
-        prob: 0.05
-      - id: EncryptionKeySecurity
-        prob: 0.01
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:GroupSelector
+          children:
+          - id: ClothingHeadsetMining
+          - id: ClothingHeadsetMining
+          - id: ClothingHeadsetMining
+          - id: ClothingHeadsetGrey
+          - id: ClothingHeadsetScience
+          - id: ClothingHeadsetService
+          - id: ClothingHeadsetEngineering
+          - id: ClothingHeadsetMedical
+        - id: EncryptionKeyCargo
+          prob: 0.05
+        - id: EncryptionKeyScience
+          prob: 0.05
+        - id: EncryptionKeyService
+          prob: 0.05
+        - id: EncryptionKeyMedical
+          prob: 0.05
+        - id: EncryptionKeyEngineering
+          prob: 0.05
+        - id: EncryptionKeySecurity
+          prob: 0.01
 
 - type: entity
   id: CratePermaEscapeTowercap
   parent: CrateGenericSteel
   suffix: Towercap
   components:
-  - type: StorageFill
-    contents:
-      - id: TowercapSeeds
-      - id: TowercapSeeds
-        prob: 0.80
-      - id: TowercapSeeds
-        prob: 0.50
-      - id: TowercapSeeds
-        prob: 0.20
-      - id: SteelcapSeeds
-        prob: 0.10
-      - id: SteelLog
-      - id: HydroponicsToolHatchet
-        prob: 0.75
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: TowercapSeeds
+        - id: TowercapSeeds
+          prob: 0.80
+        - id: TowercapSeeds
+          prob: 0.50
+        - id: TowercapSeeds
+          prob: 0.20
+        - id: SteelcapSeeds
+          prob: 0.10
+        - id: SteelLog
+        - id: HydroponicsToolHatchet
+          prob: 0.75
index 020fc71a8c6071b4c4747a9012d731b3329ec3e5..6bfd0019deeb9cc0d843c5420c9bf05801ef0caa 100644 (file)
@@ -5,23 +5,25 @@
   suffix: Filled
   parent: CrateGenericSteel
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterHardsuitSalvage
-      - id: ClothingMaskBreath
-      - id: OxygenTankFilled
-      - id: FireExtinguisher
-      - id: ClothingShoesBootsMag
-      - id: HandHeldMassScanner
-      - id: Pickaxe
-      - id: Welder
-      - id: Wrench
-      - id: Screwdriver
-      - id: Crowbar
-      - id: Wirecutter
-      - id: ClothingBeltUtility
-      - id: OreBag
-      - id: ClothingBeltSalvageWebbing
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingOuterHardsuitSalvage
+        - id: ClothingMaskBreath
+        - id: OxygenTankFilled
+        - id: FireExtinguisher
+        - id: ClothingShoesBootsMag
+        - id: HandHeldMassScanner
+        - id: Pickaxe
+        - id: Welder
+        - id: Wrench
+        - id: Screwdriver
+        - id: Crowbar
+        - id: Wirecutter
+        - id: ClothingBeltUtility
+        - id: OreBag
+        - id: ClothingBeltSalvageWebbing
 
 - type: entity
   id: CrateSalvageAssortedGoodies
   categories: [ HideSpawnMenu ] # You should use SalvageMaterialCrateSpawner instead
   parent: CrateGenericSteel
   components:
-  - type: StorageFill
-    contents:
-        # Normal (10%)
-      - id: OxygenTankFilled
-        prob: 0.1
-      - id: SheetPlasma
-        prob: 0.1
-      - id: IngotGold
-        prob: 0.1
-      - id: IngotSilver
-        prob: 0.1
-      - id: SheetPlasma
-        prob: 0.1
-      - id: WelderIndustrialAdvanced
-        prob: 0.1
-      - id: ResearchDisk
-        prob: 0.1
-      - id: SheetUranium
-        prob: 0.1
-        #  - Service
-      - id: CrayonBox
-        prob: 0.1
-        #  - Medical
-      - id: MedkitFilled
-        prob: 0.1
-      - id: BoxSyringe
-        prob: 0.1
-      - id: BoxBeaker
-        prob: 0.1
-        #  - Heh
-      - id: SalvageHumanCorpse
-        prob: 0.1
-        # Interesting (1%)
-        #  - Ammo
-      - id: MagazineBoxMagnum
-        prob: 0.01
-      - id: ResearchDisk10000
-        prob: 0.01
-        # Just no (0.1%)
-        #  - Working guns
-      - id: WeaponRevolverDeckard
-        prob: 0.001
-      - id: WeaponRevolverInspector
-        prob: 0.001
-      - id: ClothingShoesBootsMagBlinding
-        prob: 0.001
-        #  - Skub
-      - id: Skub
-        prob: 0.001
-      - id: ClothingHeadHatCatEars
-        prob: 0.01
-      - id: ClothingHeadHatDogEars
-        prob: 0.01
-        # TRAITOR EQUIPMENT (0.01%)
-      - id: Telecrystal10
-        prob: 0.0001
-      - id: WeaponRevolverPython
-        prob: 0.0001
-      - id: WeaponRevolverMateba
-        prob: 0.0001
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+          # Normal (10%)
+        - id: OxygenTankFilled
+          prob: 0.1
+        - id: SheetPlasma
+          prob: 0.1
+        - id: IngotGold
+          prob: 0.1
+        - id: IngotSilver
+          prob: 0.1
+        - id: SheetPlasma
+          prob: 0.1
+        - id: WelderIndustrialAdvanced
+          prob: 0.1
+        - id: ResearchDisk
+          prob: 0.1
+        - id: SheetUranium
+          prob: 0.1
+          #  - Service
+        - id: CrayonBox
+          prob: 0.1
+          #  - Medical
+        - id: MedkitFilled
+          prob: 0.1
+        - id: BoxSyringe
+          prob: 0.1
+        - id: BoxBeaker
+          prob: 0.1
+          #  - Heh
+        - id: SalvageHumanCorpse
+          prob: 0.1
+          # Interesting (1%)
+          #  - Ammo
+        - id: MagazineBoxMagnum
+          prob: 0.01
+        - id: ResearchDisk10000
+          prob: 0.01
+          # Just no (0.1%)
+          #  - Working guns
+        - id: WeaponRevolverDeckard
+          prob: 0.001
+        - id: WeaponRevolverInspector
+          prob: 0.001
+        - id: ClothingShoesBootsMagBlinding
+          prob: 0.001
+          #  - Skub
+        - id: Skub
+          prob: 0.001
+        - id: ClothingHeadHatCatEars
+          prob: 0.01
+        - id: ClothingHeadHatDogEars
+          prob: 0.01
+          # TRAITOR EQUIPMENT (0.01%)
+        - id: Telecrystal10
+          prob: 0.0001
+        - id: WeaponRevolverPython
+          prob: 0.0001
+        - id: WeaponRevolverMateba
+          prob: 0.0001
 
 - type: entity
   parent: CrateGenericSteel
   description: Contains 5 random tier 3 parts for upgrading machines.
   # TODO add contents.
   #components:
-  #- type: StorageFill
-  #  contents:
-  #   - id: SalvagePartsT3Spawner
-  #    amount: 5
+  #- type: EntityTableContainerFill
+  #  containers:
+  #    entity_storage: !type:AllSelector
+  #      id: SalvagePartsT3Spawner
+  #      amount: 5
 
 - type: entity
   parent: CrateGenericSteel
   description: Contains 5 random tier 3 or 4 parts for upgrading machines.
   # TODO add contents.
   #components:
-  # type: StorageFill
-  #  contents:
-  #  - id: SalvagePartsT3T4Spawner
-  #     amount: 5
+  #- type: EntityTableContainerFill
+  #  containers:
+  #    entity_storage:
+  #      id: SalvagePartsT3T4Spawner
+  #      amount: 5
 
 - type: entity
   parent: CrateGenericSteel
   description: Contains 5 random tier 4 parts for upgrading machines.
   # TODO add contents.
   #components:
-  #- type: StorageFill
-  #  contents:
-  #  - id: SalvagePartsT4Spawner
-  #    amount: 5
+  #- type: EntityTableContainerFill
+  #  containers:
+  #    entity_storage:
+  #      id: SalvagePartsT4Spawner
+  #      amount: 5
index 03389629568db4229f3ca19fedf500cdb2fce0ed..1a5bd028ad0c0ccbc82fc62e12d9c73383574688 100644 (file)
@@ -4,14 +4,15 @@
   name: scientist bio suit crate
   description: Contains 2 biohazard suits to ensure that no disease will distract you from doing science. Requires Science access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterBioScientist
-        amount: 2
-      - id: ClothingHeadHatHoodBioScientist
-        amount: 2
-      - id: ClothingMaskSterile
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: FillBiohazardGearScience
+          rolls: 2
+        - id: ClothingMaskSterile
+          amount: 2
 
 - type: entity
   id: CrateCrewMonitoring
   name: crew monitoring crate
   description: Contains a flatpack of a crew monitoring server and a few crew monitoring computers. Requires Science access to open.
   components:
-  - type: StorageFill
-    contents:
-    - id: CrewMonitoringServerFlatpack
-    - id: CrewMonitoringComputerFlatpack
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: CrewMonitoringServerFlatpack
+        - id: CrewMonitoringComputerFlatpack
+          amount: 3
 
 - type: entity
   id: CrateStationAiCore
   name: station AI core crate
   description: Contains the components for constructing a station AI core. Positronic brain not included. Requires Science access to open.
   components:
-  - type: StorageFill
-    contents:
-    - id: StationAiCoreElectronics
-    - id: Intellicard
-    - id: SheetPlasteel1
-      amount: 4
-    - id: CableApcStack1
-      amount: 1
-    - id: SheetRGlass1
-      amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: StationAiCoreElectronics
+        - id: Intellicard
+        - id: SheetPlasteel1
+          amount: 4
+        - id: CableApcStack1
+        - id: SheetRGlass1
+          amount: 2
index 0af4fe338f638b545d93ef6c567035cbc88bc0c6..a254749e6ab9428f55b63edbc51e4e5561497033 100644 (file)
@@ -4,9 +4,10 @@
   name: armor crate
   description: Contains three bulletproof vests. Requires Security access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterArmorBulletproof
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: ClothingOuterArmorBulletproof
         amount: 3
 
 - type: entity
   name: helmet crate
   description: Contains three standard-issue brain buckets. Requires Security access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHelmetBasic
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: ClothingHeadHelmetBasic
         amount: 3
 
 - type: entity
   name: nonlethals crate
   description: Contains a mix of disablers, stun batons, and flashes. Requires Security access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: WeaponDisabler
-        amount: 3
-      - id: Stunbaton
-        amount: 3
-      - id: BoxFlashbang
-      - id: Flash
-        amount: 3
-#      - Pepperspray
-#      - GrenadeTeargas
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: WeaponDisabler
+          amount: 3
+        - id: Stunbaton
+          amount: 3
+        - id: BoxFlashbang
+        - id: Flash
+          amount: 3
+#        - Pepperspray
+#        - GrenadeTeargas
 
 - type: entity
   id: CrateSecuritySupplies
   name: security supplies crate
   description: Contains various supplies for the station's Security team. Requires Security access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxHandcuff
-      - id: BoxSechud
-#      - SecBelt
-#      - SecGasmask
-#      - SpacelawBook
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxHandcuff
+        - id: BoxSechud
+#        - SecBelt
+#        - SecGasmask
+#        - SpacelawBook
 
 - type: entity
   id: CrateRestraints
   name: restraints crate
   description: Contains two boxes each of handcuffs and zipties. Requires Security access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxHandcuff
-        amount: 2
-      - id: BoxZiptie
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxHandcuff
+          amount: 2
+        - id: BoxZiptie
+          amount: 2
 
 - type: entity
   id: CrateSecurityBiosuit
   name: security bio suit crate
   description: Contains 2 biohazard suits to ensure that no disease will distract you from your duties. Requires Security access to open.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterBioSecurity
-        amount: 2
-      - id: ClothingHeadHatHoodBioSecurity
-        amount: 2
-      - id: ClothingMaskSterile
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: FillBiohazardGearSecurity
+          rolls: 2
+        - id: ClothingMaskSterile
+          amount: 2
 
 - type: entity
   id: CrateSecurityTrackingMindshieldImplants
   description: Contains 4 MindShield implants and 4 tracking implant. Requires Security access to open.
   parent: CrateSecgear
   components:
-  - type: StorageFill
-    contents:
-      - id: MindShieldImplanter
-        amount: 4
-      - id: TrackingImplanter
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MindShieldImplanter
+          amount: 4
+        - id: TrackingImplanter
+          amount: 4
 
 - type: entity
   parent: CrateSecgear
   name: nonlethal throwables crate
   description: Contains one box each of flashbangs, stingers, tear gas grenades, and four bolas. Requires Security access to open.
   components:
-  - type: StorageFill
-    contents:
-    - id: BoxFlashbang
-      amount: 1
-    - id: BoxStinger
-      amount: 1
-    - id: BoxTearGas
-      amount: 1
-    - id: Bola # replace with 4 e-bolas when added
-      amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxFlashbang
+        - id: BoxStinger
+        - id: BoxTearGas
+        - id: Bola # replace with 4 e-bolas when added
+          amount: 4
index c80944a9c398ee4c64aca81152f3edaa4f0e44c0..cfe3b316c5f79cd888c0e68d816a2ed58ad887e9 100644 (file)
@@ -4,24 +4,26 @@
   name: janitorial supplies crate
   description: Fight back against dirt and grime with Nanotrasen's Janitorial Essentials(tm)! Contains three buckets, caution signs, and cleaner grenades. Also has a single mop, broom, spray cleaner, wire brush, rag, and trash bag.
   components:
-  - type: StorageFill
-    contents:
-      - id: MopItem
-      - id: MopBucketCubeWrapped
-      - id: Bucket
-        amount: 3
-      - id: WetFloorSign
-        amount: 2
-      - id: Soap
-      - id: SprayBottleSpaceCleaner
-        amount: 2
-      - id: TrashBag
-        amount: 2
-      - id: Plunger
-        amount: 2
-      - id: BoxCleanerGrenades
-      - id: WireBrush
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: MopItem
+        - id: MopBucketCubeWrapped
+        - id: Bucket
+          amount: 3
+        - id: WetFloorSign
+          amount: 2
+        - id: Soap
+        - id: SprayBottleSpaceCleaner
+          amount: 2
+        - id: TrashBag
+          amount: 2
+        - id: Plunger
+          amount: 2
+        - id: BoxCleanerGrenades
+        - id: WireBrush
+          amount: 2
 
 - type: entity
   id: CrateServiceCleanerGrenades
   name: bulk cleanades crate
   description: Contains two boxes of cleaner grenades, for those deeply-entrenched stains.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxCleanerGrenades
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxCleanerGrenades
         amount: 2
 
 - type: entity
   name: replacement lights crate
   description: May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxLighttube
-      - id: BoxLightbulb
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxLighttube
+        - id: BoxLightbulb
 
 - type: entity
   id: CrateServiceHolidayLights
   name: holiday lights crate
   description: Deck the halls with these festive holiday lights!
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxLighttubeHoliday
-      - id: BoxLighttubeHoliday
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxLighttubeHoliday
+        amount: 2
 
 - type: entity
   id: CrateMousetrapBoxes
   name: mousetraps crate
   description: Mousetraps, for when all of service is being haunted by an entire horde of rats. Use sparingly... or not.
   components:
-    - type: StorageFill
-      contents:
-        - id: BoxMousetrap
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxMousetrap
 
 - type: entity
   id: CrateServiceSmokeables
   name: smokeables crate
   description: Tired of a quick death on the station? Order this crate and chain-smoke your way to a coughy demise!
   components:
-  - type: StorageFill
-    contents:
-      - id: CigCartonGreen
-        prob: 0.50
-        orGroup: CigCarton1
-      - id: CigCartonRed
-        orGroup: CigCarton1
-      - id: CigCartonBlue
-        prob: 0.50
-        orGroup: CigCarton2
-      - id: CigCartonBlack
-        orGroup: CigCarton2
-      - id: CigarGoldCase
-        prob: 0.05
-        orGroup: Cigars
-      - id: CigarCase
-        orGroup: Cigars
-      - id: Matchbox
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:GroupSelector
+          children:
+          - id: CigCartonGreen
+            weight: 0.50
+          - id: CigCartonRed
+        - !type:GroupSelector
+          children:
+          - id: CigCartonBlue
+            weight: 0.50
+          - id: CigCartonBlack
+        - !type:GroupSelector
+          children:
+          - id: CigarGoldCase
+            weight: 0.05
+          - id: CigarCase
+        - id: Matchbox
+          amount: 2
 
 - type: entity
   id: CrateServiceTheatre
   name: theatrical performances crate
   description: Contains a moth cloak, barber scissors, maid uniform, clown and mime attributes, and other performance charms.
   components:
-  - type: StorageFill
-    contents:
-    - id: ClothingUniformJumpskirtPerformer
-    - id: ClothingShoesBootsPerformer
-    - id: ClothingHeadPerformerWig
-    - id: ClothingOuterSuitMonkey
-    - id: ClothingHeadHatAnimalMonkey
-    - id: ClothingNeckCloakMoth
-    - id: ClothingMaskClown
-    - id: ClothingMaskMime
-    - id: ClothingShoesClown
-    - id: ClothingUniformJumpskirtJanimaid
-    - id: ClothingNeckCloakVoid
-    - id: RevolverCapGun
-    - id: BarberScissors
-    - id: ClothingUniformJumpskirtOldDress
-    - id: BikeHorn
-    - id: ClownRecorder
-    - id: ClothingBeltSuspendersRed
-    - id: ClothingBeltSuspendersBlack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingUniformJumpskirtPerformer
+        - id: ClothingShoesBootsPerformer
+        - id: ClothingHeadPerformerWig
+        - id: ClothingOuterSuitMonkey
+        - id: ClothingHeadHatAnimalMonkey
+        - id: ClothingNeckCloakMoth
+        - id: ClothingMaskClown
+        - id: ClothingMaskMime
+        - id: ClothingShoesClown
+        - id: ClothingUniformJumpskirtJanimaid
+        - id: ClothingNeckCloakVoid
+        - id: RevolverCapGun
+        - id: BarberScissors
+        - id: ClothingUniformJumpskirtOldDress
+        - id: BikeHorn
+        - id: ClownRecorder
+        - id: ClothingBeltSuspendersRed
+        - id: ClothingBeltSuspendersBlack
 
 - type: entity
   id: CrateServiceCustomSmokable
   name: DIY smokeables crate
   description: Want to get a little creative with what you use to destroy your lungs? Then this crate is for you! Has everything you need to roll your own cigarettes.
   components:
-  - type: StorageFill
-    contents:
-    - id: PackPaperRolling
-    - id: CigaretteFilter
-      amount: 8
-    - id: GroundTobacco
-      amount: 4
-    - id: SmokingPipe
-    - id: Matchbox
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: PackPaperRolling
+        - id: CigaretteFilter
+          amount: 8
+        - id: GroundTobacco
+          amount: 4
+        - id: SmokingPipe
+        - id: Matchbox
 
 - type: entity
   id: CrateServiceBureaucracy
   name: bureaucracy crate
   description: Several stacks of paper, a few pens and an office toy. What more could you ask for?
   components:
-  - type: StorageFill
-    contents:
-    - id: Paper
-      amount: 12
-    - id: PaperOffice
-      amount: 6
-    - id: Pen
-      amount: 2
-    - id: BoxFolderClipboardEmpty
-      amount: 2
-    - id: HandLabeler
-    - id: BoxFolderBlueEmpty
-    - id: BoxFolderRedEmpty
-    - id: BoxFolderYellowEmpty
-    - id: NewtonCradle
-    - id: BoxEnvelope
-    - id: BrbSign
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: Paper
+          amount: 12
+        - id: PaperOffice
+          amount: 6
+        - id: Pen
+          amount: 2
+        - id: BoxFolderClipboardEmpty
+          amount: 2
+        - id: HandLabeler
+        - id: BoxFolderBlueEmpty
+        - id: BoxFolderRedEmpty
+        - id: BoxFolderYellowEmpty
+        - id: NewtonCradle
+        - id: BoxEnvelope
+        - id: BrbSign
 
 - type: entity
   id: CrateServiceFaxMachine
   name: fax machine crate
   description: A fax machine and a screwdriver to set the name with.
   components:
-  - type: StorageFill
-    contents:
-    - id: Screwdriver
-    - id: FaxMachineFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: Screwdriver
+        - id: FaxMachineFlatpack
 
 - type: entity
   id: CrateServicePersonnel
   name: personnel crate
   description: Contains a box of blank ID cards and PDAs.
   components:
-  - type: StorageFill
-    contents:
-    - id: BoxPDA
-    - id: BoxID
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxPDA
+        - id: BoxID
 
 - type: entity
   id: CrateServiceBooks
   name: books crate
   description: Contains 10 empty books of random appearance.
   components:
-    - type: StorageFill
-      contents:
-        - id: BookRandom
-          amount: 10
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BookRandom
+        amount: 10
 
 - type: entity
   id: CrateServiceGuidebooks
   name: guidebooks crate
   description: Contains guidebooks.
   components:
-    - type: StorageFill
-      contents:
-      - id: BookSpaceEncyclopedia
-      - id: BookTheBookOfControl
-      - id: BookBartendersManual
-      - id: BookHowToCookForFortySpaceman
-      - id: BookLeafLoversSecret
-      - id: BookEngineersHandbook
-      - id: BookScientistsGuidebook
-      - id: BookSecurity
-      - id: BookHowToKeepStationClean
-      - id: BookHowToRockAndStone
-      - id: BookMedicalReferenceBook
-      - id: BookHowToSurvive
-      - id: BookChemicalCompendium
-      - id: BookSpaceLaw
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BookSpaceEncyclopedia
+        - id: BookTheBookOfControl
+        - id: BookBartendersManual
+        - id: BookHowToCookForFortySpaceman
+        - id: BookLeafLoversSecret
+        - id: BookEngineersHandbook
+        - id: BookScientistsGuidebook
+        - id: BookSecurity
+        - id: BookHowToKeepStationClean
+        - id: BookHowToRockAndStone
+        - id: BookMedicalReferenceBook
+        - id: BookHowToSurvive
+        - id: BookChemicalCompendium
+        - id: BookSpaceLaw
 
 - type: entity
   id: CrateServiceSodaDispenser
   name: soda dispenser refill crate
   description: Contains refills for soda dispensers.
   components:
-    - type: StorageFill
-      contents:
-      - id: DrinkCoffeeJug
-      - id: DrinkColaBottleFull
-      - id: DrinkCreamCartonXL
-      - id: DrinkDrGibbJug
-      - id: DrinkEnergyDrinkJug
-      - id: DrinkGreenTeaJug
-      - id: DrinkIceJug
-      - id: DrinkJuiceLimeCartonXL
-      - id: DrinkJuiceOrangeCartonXL
-      - id: DrinkLemonLimeJug
-      - id: DrinkRootBeerJug
-      - id: DrinkSodaWaterBottleFull
-      - id: DrinkSpaceMountainWindBottleFull
-      - id: DrinkSpaceUpBottleFull
-      - id: DrinkSugarJug
-      - id: DrinkTeaJug
-      - id: DrinkTonicWaterBottleFull
-      - id: DrinkWaterMelonJuiceJug
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: DrinkCoffeeJug
+        - id: DrinkColaBottleFull
+        - id: DrinkCreamCartonXL
+        - id: DrinkDrGibbJug
+        - id: DrinkEnergyDrinkJug
+        - id: DrinkGreenTeaJug
+        - id: DrinkIceJug
+        - id: DrinkJuiceLimeCartonXL
+        - id: DrinkJuiceOrangeCartonXL
+        - id: DrinkLemonLimeJug
+        - id: DrinkRootBeerJug
+        - id: DrinkSodaWaterBottleFull
+        - id: DrinkSpaceMountainWindBottleFull
+        - id: DrinkSpaceUpBottleFull
+        - id: DrinkSugarJug
+        - id: DrinkTeaJug
+        - id: DrinkTonicWaterBottleFull
+        - id: DrinkWaterMelonJuiceJug
 
 - type: entity
   id: CrateServiceBoozeDispenser
   name: booze dispenser refill crate
   description: Contains refills for booze dispensers.
   components:
-    - type: StorageFill
-      contents:
-      - id: DrinkAleBottleFullGrowler
-      - id: DrinkBeerGrowler
-      - id: DrinkCoffeeLiqueurBottleFull
-      - id: DrinkCognacBottleFull
-      - id: DrinkGinBottleFull
-      - id: DrinkMeadJug
-      - id: DrinkRumBottleFull
-      - id: DrinkTequilaBottleFull
-      - id: DrinkVermouthBottleFull
-      - id: DrinkVodkaBottleFull
-      - id: DrinkWhiskeyBottleFull
-      - id: DrinkWineBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: DrinkAleBottleFullGrowler
+        - id: DrinkBeerGrowler
+        - id: DrinkCoffeeLiqueurBottleFull
+        - id: DrinkCognacBottleFull
+        - id: DrinkGinBottleFull
+        - id: DrinkMeadJug
+        - id: DrinkRumBottleFull
+        - id: DrinkTequilaBottleFull
+        - id: DrinkVermouthBottleFull
+        - id: DrinkVodkaBottleFull
+        - id: DrinkWhiskeyBottleFull
+        - id: DrinkWineBottleFull
 
 - type: entity
   id: CrateServiceBox
   name: boxes crate
   description: Contains 6 empty multipurpose boxes.
   components:
-    - type: StorageFill
-      contents:
-        - id: BoxCardboard
-          amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: BoxCardboard
+        amount: 6
 
 - type: entity
   id: CrateJanitorBiosuit
   name: janitor bio suit crate
   description: Contains 2 biohazard suits to ensure that no disease will distract you from cleaning.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterBioJanitor
-        amount: 2
-      - id: ClothingHeadHatHoodBioJanitor
-        amount: 2
-      - id: ClothingMaskSterile
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: FillBiohazardGearJanitor
+          rolls: 2
+        - id: ClothingMaskSterile
+          amount: 2
 
 - type: entity
   id: CrateTrashCartFilled
   suffix: Filled
   parent: CrateTrashCart
   components:
-    - type: StorageFill
-      contents:
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
           # Creatures
         - id: MobCockroach
           prob: 0.05
   name: candles crate
   description: Contains 4 boxes of candles, 2 large and 2 small. For atmosphere or something.
   components:
-  - type: StorageFill
-    contents:
-      - id: BoxCandle
-        amount: 2
-      - id: BoxCandleSmall
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxCandle
+          amount: 2
+        - id: BoxCandleSmall
+          amount: 2
 
 - type: entity
   parent: CrateGenericSteel
   name: colorful lights crate
   description: It's not a party until it's hard to see, a little disorienting, and your ears hurt.
   components:
-  - type: StorageFill
-    contents:
-    - id: BoxLightbulbColorfulMixed
-    - id: BoxLighttubeColorfulMixed
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: BoxLightbulbColorfulMixed
+        - id: BoxLighttubeColorfulMixed
index 389bf0a7e45a373a3ef44a55aaa4bcc89649245d..8651b7c265f986dd421645edc5aef1281ab0b734 100644 (file)
@@ -4,9 +4,10 @@
   name: thruster crate
   description: Contains a thruster flatpack.
   components:
-  - type: StorageFill
-    contents:
-      - id: ThrusterFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: ThrusterFlatpack
 
 - type: entity
   parent: CrateEngineering
@@ -14,6 +15,7 @@
   name: gyroscope crate
   description: Contains a gyroscope flatpack.
   components:
-  - type: StorageFill
-    contents:
-      - id: GyroscopeFlatpack
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage:
+        id: GyroscopeFlatpack
index 1b191d90f7f64650c0d523f33b0a79cdb15b4fb1..4e48f6cc4779ccdccc134d17302ce93d80e7210a 100644 (file)
   name: Cybersun juggernaut bundle
   description: Contains everything except a big gun to go postal.
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterHardsuitJuggernaut
-      - id: ClothingMaskGasSyndicate
-      - id: ClothingHandsGlovesCombat
-      - id: DoubleEmergencyOxygenTankFilled
-      - id: DoubleEmergencyNitrogenTankFilled
+  - type: EntityTableContainerFill
+    containers:
+      entity_storage: !type:AllSelector
+        children:
+        - id: ClothingOuterHardsuitJuggernaut
+        - !type:NestedSelector
+          tableId: SyndicateHardsuitExtrasEntityTable
 
 - type: entity
   id: CrateSyndicateSuperSurplusBundle
index 5da3df71c0702ec8528f4a784bc5a5b684a319ea..f9ef85554b5e27bc7a57b861eed1cfd791a4c04d 100644 (file)
@@ -3,43 +3,49 @@
   parent: ClothingBeltUtility
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: Crowbar
-      - id: Wrench
-      - id: Screwdriver
-      - id: Wirecutter
-      - id: Welder
-      - id: NetworkConfigurator
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Crowbar
+        - id: Wrench
+        - id: Screwdriver
+        - id: Wirecutter
+        - id: Welder
+        - id: NetworkConfigurator
 
 - type: entity
   id: ClothingBeltUtilityEngineering
   parent: ClothingBeltUtility
   suffix: Engineering
   components:
-  - type: StorageFill
-    contents:
-      - id: CrowbarYellow
-      - id: Wrench
-      - id: Screwdriver
-      - id: Wirecutter
-      - id: Welder
-      - id: Multitool
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CrowbarYellow
+        - id: Wrench
+        - id: Screwdriver
+        - id: Wirecutter
+        - id: Welder
+        - id: Multitool
 
 - type: entity
   id: ClothingBeltChiefEngineerFilled
   parent: ClothingBeltChiefEngineer
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: PowerDrill
-      - id: JawsOfLife
-      - id: WelderExperimental
-      - id: Multitool
-      - id: HolofanProjector
-      - id: GasAnalyzer
-      - id: trayScanner
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: PowerDrill
+        - id: JawsOfLife
+        - id: WelderExperimental
+        - id: Multitool
+        - id: HolofanProjector
+        - id: GasAnalyzer
+        - id: trayScanner
 
 - type: entityTable
   id: BeltSecurityEntityTable
@@ -47,7 +53,7 @@
     children:
     - id: Stunbaton
     - id: Handcuffs
-    - id: Handcuffs
+      amount: 2
     - id: HoloprojectorSecurity
     - id: RadioHandheldSecurity
 
   parent: ClothingBeltJanitor
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: Soap #Make a soap group and pick between when i'm not lazy
-      - id: SprayBottleSpaceCleaner
-      - id: CleanerGrenade
-        amount: 2
-      - id: FlashlightLantern
-      - id: LightReplacer
-      - id: WireBrush
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Soap #Make a soap group and pick between when i'm not lazy
+        - id: SprayBottleSpaceCleaner
+        - id: CleanerGrenade
+          amount: 2
+        - id: FlashlightLantern
+        - id: LightReplacer
+        - id: WireBrush
 
 - type: entity
   id: ClothingBeltMedicalFilled
   parent: ClothingBeltMedical
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: Brutepack
-        amount: 2
-      - id: Ointment
-        amount: 1
-      - id: Bloodpack
-        amount: 1
-      - id: Gauze
-      - id: EmergencyMedipen #You never know what people are going to latejoin into
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Brutepack
+          amount: 2
+        - id: Ointment
+        - id: Bloodpack
+        - id: Gauze
+        - id: EmergencyMedipen #You never know what people are going to latejoin into
 
 - type: entity
   id: ClothingBeltMedicalEMTFilled
   parent: ClothingBeltMedicalEMT
   suffix: Paramedic,Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: Brutepack
-      - id: Ointment
-      - id: Bloodpack
-      - id: Gauze
-      - id: EmergencyMedipen #You never know what people are going to latejoin into
-        amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Brutepack
+        - id: Ointment
+        - id: Bloodpack
+        - id: Gauze
+        - id: EmergencyMedipen #You never know what people are going to latejoin into
+          amount: 3
 
 - type: entity
   id: ClothingBeltPlantFilled
   parent: ClothingBeltPlant
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-    - id: HydroponicsToolMiniHoe
-    - id: HydroponicsToolSpade
-    - id: HydroponicsToolClippers
-    - id: ChemistryBottleRobustHarvest
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: HydroponicsToolMiniHoe
+        - id: HydroponicsToolSpade
+        - id: HydroponicsToolClippers
+        - id: ChemistryBottleRobustHarvest
 
 - type: entity
   id: ClothingBeltSheathFilled
     maxItemSize: Normal
     grid:
     - 0,0,7,1
-  - type: StorageFill
-    contents:
-      - id: ExGrenade
-        amount: 4
-      - id: SyndieMiniBomb
-        amount: 2
-      - id: EmpGrenade
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ExGrenade
+          amount: 4
+        - id: SyndieMiniBomb
+          amount: 2
+        - id: EmpGrenade
+          amount: 2
 
 - type: entity
   id: ClothingBeltMilitaryWebbingMedFilled
   parent: ClothingBeltMilitaryWebbingMed
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: ChemistryBottleEpinephrine
-        amount: 2
-      - id: ChemistryBottleEphedrine
-        amount: 2
-      - id: ChemistryBottleOmnizine
-      - id: MedkitCombatFilled
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ChemistryBottleEpinephrine
+          amount: 2
+        - id: ChemistryBottleEphedrine
+          amount: 2
+        - id: ChemistryBottleOmnizine
+        - id: MedkitCombatFilled
 
 - type: entity
   parent: ClothingBeltWand
   id: ClothingBeltWandFilled
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-    - id: WeaponWandPolymorphCarp
-    - id: WeaponWandFireball
-    - id: WeaponWandDeath
-    - id: WeaponWandPolymorphDoor
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponWandPolymorphCarp
+        - id: WeaponWandFireball
+        - id: WeaponWandDeath
+        - id: WeaponWandPolymorphDoor
 
 - type: entity
   id: ClothingBeltHolsterFilled
   parent: ClothingBeltHolster
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
         - id: WeaponRevolverInspector
         - id: SpeedLoaderMagnum
 
   parent: ClothingBeltChef
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodShakerSalt
-    - id: FoodShakerPepper
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: FoodShakerSalt
+        - id: FoodShakerPepper
index 6764cb8496aa0aa3caff391e446bec14356e6b87..9da3f0b5194d66c2cea1d8b18fb2f8f6d64fd690 100644 (file)
@@ -3,9 +3,10 @@
   parent: BriefcaseBrown
   suffix: Filled, Paper
   components:
-  - type: StorageFill
-    contents:
-      - id: Paper
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Paper
         amount: 3
 
 - type: entity
     maxItemSize: Huge
     grid:
     - 0,0,6,3
-  - type: StorageFill
-    contents:
-      - id: WeaponSniperHristov
-      - id: MagazineBoxAntiMateriel
-      - id: ClothingNeckTieRed
-      - id: ClothingHandsGlovesLatex
-      - id: ClothingUniformJumpsuitLawyerBlack
-      - id: BarberScissors
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: WeaponSniperHristov
+        - id: MagazineBoxAntiMateriel
+        - id: ClothingNeckTieRed
+        - id: ClothingHandsGlovesLatex
+        - id: ClothingUniformJumpsuitLawyerBlack
+        - id: BarberScissors
 
 - type: entity
   id: BriefcaseSyndieLobbyingBundleFilled
   parent: BriefcaseSyndie
   suffix: Syndicate, Spesos
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingEyesGlassesSunglasses
-      - id: SpaceCash30000
-        amount: 1
-      - id: EncryptionKeySyndie
-      - id: RubberStampTrader
-      - id: PhoneInstrumentSyndicate
-      - id: ClothingUniformJumpsuitTacticool
-      - id: ClothingOuterCoatJensen
-      - id: ClothingHandsGlovesCombat
-      - id: ClothingMaskNeckGaiter
-      - id: SyndieHandyFlag
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingEyesGlassesSunglasses
+        - id: SpaceCash30000
+        - id: EncryptionKeySyndie
+        - id: RubberStampTrader
+        - id: PhoneInstrumentSyndicate
+        - id: ClothingUniformJumpsuitTacticool
+        - id: ClothingOuterCoatJensen
+        - id: ClothingHandsGlovesCombat
+        - id: ClothingMaskNeckGaiter
+        - id: SyndieHandyFlag
 
 - type: entity
   id: BriefcaseThiefBribingBundleFilled
   parent: BriefcaseSyndie
   suffix: Thief, Spesos
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingEyesGlassesSunglasses
-      - id: SpaceCash20000
-        amount: 1
-      - id: ClothingOuterCoatJensen
-      - id: ClothingHandsGlovesColorBlack
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingEyesGlassesSunglasses
+        - id: SpaceCash20000
+        - id: ClothingOuterCoatJensen
+        - id: ClothingHandsGlovesColorBlack
index 7da375d582f0c57174bbfc0749d1b1feadcd7f61..68dd31798877d707d2918aea8c62af3ed85a0e1a 100644 (file)
@@ -4,12 +4,14 @@
   suffix: Filled
   parent: Medkit
   components:
-  - type: StorageFill
-    contents:
-      - id: Brutepack
-      - id: Ointment
-      - id: Gauze
-      - id: PillCanisterTricordrazine
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Brutepack
+        - id: Ointment
+        - id: Gauze
+        - id: PillCanisterTricordrazine
       # see https://github.com/tgstation/blob/master/code/game/objects/items/storage/firstaid.dm for example contents
 
 - type: entity
   suffix: Filled
   parent: MedkitBurn
   components:
-  - type: StorageFill
-    contents:
-      - id: Ointment
-        amount: 2
-      - id: PillCanisterKelotane
-      - id: PillCanisterDermaline
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Ointment
+          amount: 2
+        - id: PillCanisterKelotane
+        - id: PillCanisterDermaline
 
 - type: entity
   id: MedkitBruteFilled
   suffix: Filled
   parent: MedkitBrute
   components:
-  - type: StorageFill
-    contents:
-      - id: Brutepack
-      - id: Gauze
-      - id: PillCanisterIron
-      - id: PillCanisterCopper
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Brutepack
+        - id: Gauze
+        - id: PillCanisterIron
+        - id: PillCanisterCopper
 
 - type: entity
   id: MedkitToxinFilled
   suffix: Filled
   parent: MedkitToxin
   components:
-  - type: StorageFill
-    contents:
-      - id: SyringeIpecac
-      - id: SyringeEthylredoxrazine
-      - id: AntiPoisonMedipen
-      - id: PillCanisterDylovene
-      - id: PillCanisterCharcoal
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: SyringeIpecac
+        - id: SyringeEthylredoxrazine
+        - id: AntiPoisonMedipen
+        - id: PillCanisterDylovene
+        - id: PillCanisterCharcoal
 
 - type: entity
   id: MedkitOxygenFilled
   suffix: Filled
   parent: MedkitO2
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingMaskBreathMedical
-      - id: EmergencyOxygenTankFilled
-      - id: EmergencyMedipen
-      - id: SyringeInaprovaline
-      - id: PillCanisterDexalin
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingMaskBreathMedical
+        - id: EmergencyOxygenTankFilled
+        - id: EmergencyMedipen
+        - id: SyringeInaprovaline
+        - id: PillCanisterDexalin
 
 - type: entity
   id: MedkitRadiationFilled
   suffix: Filled
   parent: MedkitRadiation
   components:
-  - type: StorageFill
-    contents:
-      - id: SyringePhalanximine
-      - id: RadAutoInjector
-      - id: PillCanisterPotassiumIodide
-      - id: PillCanisterHyronalin
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: SyringePhalanximine
+        - id: RadAutoInjector
+        - id: PillCanisterPotassiumIodide
+        - id: PillCanisterHyronalin
 
 - type: entity
   id: MedkitAdvancedFilled
   suffix: Filled
   parent: MedkitAdvanced
   components:
-  - type: StorageFill
-    contents:
-      - id: MedicatedSuture
-      - id: RegenerativeMesh
-      - id: Bloodpack
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: MedicatedSuture
+        - id: RegenerativeMesh
+        - id: Bloodpack
+          amount: 2
 
 - type: entity
   id: MedkitCombatFilled
   suffix: Filled
   parent: MedkitCombat
   components:
-  - type: StorageFill
-    contents:
-      - id: MedicatedSuture
-      - id: RegenerativeMesh
-      - id: SyringeEphedrine
-      - id: SyringeSaline
-      - id: BruteAutoInjector
-      - id: BurnAutoInjector
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: MedicatedSuture
+        - id: RegenerativeMesh
+        - id: SyringeEphedrine
+        - id: SyringeSaline
+        - id: BruteAutoInjector
+        - id: BurnAutoInjector
 
 - type: entity
   id: StimkitFilled
   suffix: Stimkit, Filled
   parent: Medkit
   components:
-  - type: StorageFill
-    contents:
-      - id: StimpackMini
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: StimpackMini
         amount: 6
index 356fe9823314a31cdd43bdd7d37b3cc088b5dbb1..d8a46334ac523b0f0f4bc1780f442b00a2612ce7 100644 (file)
@@ -4,24 +4,25 @@
   parent: ToolboxEmergency
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: CrowbarRed
-      - id: RadioHandheld
-      - id: WelderMini
-      - id: FireExtinguisherMini
-      # Random lighting item orGroup
-      - id: FlashlightLantern
-        orGroup: LightingItem
-      - id: Flare
-        orGroup: LightingItem
-      - id: GlowstickBase
-        orGroup: LightingItem
-      # Low-chance items
-      - id: FoodSnackChocolate
-        prob: 0.15
-      - id: HarmonicaInstrument
-        prob: 0.15
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CrowbarRed
+        - id: RadioHandheld
+        - id: WelderMini
+        - id: FireExtinguisherMini
+        # Random lighting item GroupSelector
+        - !type:GroupSelector
+          children:
+          - id: FlashlightLantern
+          - id: Flare
+          - id: GlowstickBase
+        # Low-chance items
+        - id: FoodSnackChocolate
+          prob: 0.15
+        - id: HarmonicaInstrument
+          prob: 0.15
 
 - type: entity
   id: ToolboxElectricalFilled
   suffix: Filled
   parent: ToolboxElectrical
   components:
-  - type: StorageFill
-    contents:
-      - id: Screwdriver
-      - id: CrowbarOrange
-      - id: Wirecutter
-      - id: CableApcStack10
-      - id: CableMVStack10
-      - id: trayScanner
-        prob: 0.9
-      - id: ClothingHandsGlovesColorYellow
-        prob: 0.05
-        orGroup: GlovesOrWires
-      - id: CableHVStack10
-        orGroup: GlovesOrWires
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:NestedSelector
+        tableId: ToolboxElectricalEntityTable
 
 - type: entity
   id: ToolboxElectricalTurretFilled
   suffix: Syndicate, Turret, Filled
   parent: ToolboxElectricalTurret
   components:
-  - type: StorageFill
-    contents:
-      - id: Screwdriver
-      - id: CrowbarOrange
-      - id: Wirecutter
-      - id: CableApcStack10
-      - id: CableMVStack10
-      - id: trayScanner
-        prob: 0.9
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:NestedSelector
+        tableId: ToolboxElectricalEntityTable
+
+- type: entityTable
+  id: ToolboxElectricalEntityTable
+  table: !type:AllSelector
+    children:
+    - id: Screwdriver
+    - id: CrowbarOrange
+    - id: Wirecutter
+    - id: CableApcStack10
+    - id: CableMVStack10
+    - id: trayScanner
+      prob: 0.9
+    - !type:GroupSelector
+      children:
       - id: ClothingHandsGlovesColorYellow
-        prob: 0.05
-        orGroup: GlovesOrWires
+        weight: 0.05
       - id: CableHVStack10
-        orGroup: GlovesOrWires
 
 - type: entity
   id: ToolboxArtisticFilled
   suffix: Filled
   parent: ToolboxArtistic
   components:
-  - type: StorageFill
-    contents:
-    - id: CrayonBox
-    - id: Paper
-      amount: 3
-    - id: Pen
-    - id: MysteryFigureBox
-      prob: 0.5
-    - id: MysteryFigureBox
-      prob: 0.5
-    - id: BookRandom
-      amount: 2
-    - id: CrayonMime
-    - id: CrayonRainbow
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CrayonBox
+        - id: Paper
+          amount: 3
+        - id: Pen
+        - id: MysteryFigureBox
+          prob: 0.5
+        - id: MysteryFigureBox
+          prob: 0.5
+        - id: BookRandom
+          amount: 2
+        - id: CrayonMime
+        - id: CrayonRainbow
 
 - type: entity
   id: ToolboxMechanicalFilled
   suffix: Filled
   parent: ToolboxMechanical
   components:
-  - type: StorageFill
-    contents:
-      - id: CrowbarOrange
-      - id: Wrench
-      - id: Welder
-      - id: Wirecutter
-      - id: Screwdriver
-        prob: 0.5
-      - id: FlashlightLantern
-        prob: 0.7
-      - id: ClothingHeadHatHardhatBlue
-        prob: 0.5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CrowbarOrange
+        - id: Wrench
+        - id: Welder
+        - id: Wirecutter
+        - id: Screwdriver
+          prob: 0.5
+        - id: FlashlightLantern
+          prob: 0.7
+        - id: ClothingHeadHatHardhatBlue
+          prob: 0.5
 
 - type: entity
   id: ToolboxMechanicalFilledAllTools
   suffix: Filled, all tools
   parent: ToolboxMechanical
   components:
-  - type: StorageFill
-    contents:
-    - id: Crowbar
-    - id: Wrench
-    - id: Screwdriver
-    - id: Wirecutter
-    - id: Welder
-    - id: Multitool
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Crowbar
+        - id: Wrench
+        - id: Screwdriver
+        - id: Wirecutter
+        - id: Welder
+        - id: Multitool
 
 - type: entity
   parent: ToolboxSyndicate
   id: ToolboxSyndicateFilled
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-    - id: Crowbar
-    - id: Wrench
-    - id: Screwdriver
-    - id: Wirecutter
-    - id: Welder
-    - id: Multitool
-    - id: ClothingHandsGlovesCombat
-    - id: ClothingMaskGasSyndicate
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Crowbar
+        - id: Wrench
+        - id: Screwdriver
+        - id: Wirecutter
+        - id: Welder
+        - id: Multitool
+        - id: ClothingHandsGlovesCombat
+        - id: ClothingMaskGasSyndicate
   - type: StaticPrice
     price: 1000
 
   parent: ToolboxGolden
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: IngotGold
-      - id: DrinkGoldenCup
-        prob: 0.05
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: IngotGold
+        - id: DrinkGoldenCup
+          prob: 0.05
index 34dafcba207931e129ab440544fbd4f8528182a8..b164b49cd476fb3a13714f83eb29097ffc8eb671 100644 (file)
   parent: Dresser
   suffix: Filled, Captain
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHatCaptain
-      - id: ClothingHeadHatCapcap
-      - id: ClothingUniformJumpsuitCapFormal
-      - id: ClothingUniformJumpskirtCapFormalDress
-      - id: ClothingHandsGlovesCaptain
-      - id: ClothingOuterWinterCap
-      - id: ClothingNeckCloakCap
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingHeadHatCaptain
+        - id: ClothingHeadHatCapcap
+        - id: ClothingUniformJumpsuitCapFormal
+        - id: ClothingUniformJumpskirtCapFormalDress
+        - id: ClothingHandsGlovesCaptain
+        - id: ClothingOuterWinterCap
+        - id: ClothingNeckCloakCap
 
 - type: entity
   id: DresserChiefEngineerFilled
   parent: Dresser
   suffix: Filled, Chief Engineer
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingUniformJumpsuitChiefEngineerTurtle
-      - id: ClothingUniformJumpskirtChiefEngineerTurtle
-      - id: ClothingHeadHatBeretEngineering
-      - id: ClothingOuterWinterCE
-      - id: ClothingNeckCloakCe
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingUniformJumpsuitChiefEngineerTurtle
+        - id: ClothingUniformJumpskirtChiefEngineerTurtle
+        - id: ClothingHeadHatBeretEngineering
+        - id: ClothingOuterWinterCE
+        - id: ClothingNeckCloakCe
 
 - type: entity
   id: DresserChiefMedicalOfficerFilled
   parent: Dresser
   suffix: Filled, Chief Medical Officer
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingOuterCoatLabCmo
-      - id: ClothingUniformJumpsuitCMOTurtle
-      - id: ClothingUniformJumpskirtCMOTurtle
-      - id: ClothingHeadHatBeretCmo
-      - id: ClothingHeadMirror
-      - id: ClothingEyesGlasses
-      - id: ClothingOuterWinterCMO
-      - id: ClothingCloakCmo
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingOuterCoatLabCmo
+        - id: ClothingUniformJumpsuitCMOTurtle
+        - id: ClothingUniformJumpskirtCMOTurtle
+        - id: ClothingHeadHatBeretCmo
+        - id: ClothingHeadMirror
+        - id: ClothingEyesGlasses
+        - id: ClothingOuterWinterCMO
+        - id: ClothingCloakCmo
 
 - type: entity
   id: DresserHeadOfPersonnelFilled
   parent: Dresser
   suffix: Filled, Head Of Personnel
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHatHopcap
-      - id: ClothingOuterWinterHoP
-      - id: ClothingEyesGlasses
-      - id: ClothingNeckCloakHop
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingHeadHatHopcap
+        - id: ClothingOuterWinterHoP
+        - id: ClothingEyesGlasses
+        - id: ClothingNeckCloakHop
 
 - type: entity
   id: DresserHeadOfSecurityFilled
   parent: Dresser
   suffix: Filled, Head Of Security
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHatBeretHoS
-      - id: ClothingHeadHatHoshat
-      - id: ClothingMaskNeckGaiter
-      - id: ClothingUniformJumpskirtHoSAlt
-      - id: ClothingUniformJumpsuitHoSAlt
-      - id: ClothingUniformJumpskirtHosFormal
-      - id: ClothingUniformJumpsuitHosFormal
-      - id: ClothingOuterWinterHoS
-      - id: ClothingNeckCloakHos
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingHeadHatBeretHoS
+        - id: ClothingHeadHatHoshat
+        - id: ClothingMaskNeckGaiter
+        - id: ClothingUniformJumpskirtHoSAlt
+        - id: ClothingUniformJumpsuitHoSAlt
+        - id: ClothingUniformJumpskirtHosFormal
+        - id: ClothingUniformJumpsuitHosFormal
+        - id: ClothingOuterWinterHoS
+        - id: ClothingNeckCloakHos
 
 - type: entity
   id: DresserQuarterMasterFilled
   parent: Dresser
   suffix: Filled, Quarter Master
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHatBeretQM
-      - id: ClothingUniformJumpsuitQMFormal
-      - id: ClothingUniformJumpsuitQMTurtleneck
-      - id: ClothingUniformJumpskirtQMTurtleneck
-      - id: ClothingHandsGlovesColorBrown
-      - id: ClothingOuterWinterQM
-      - id: ClothingNeckCloakQm
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingHeadHatBeretQM
+        - id: ClothingUniformJumpsuitQMFormal
+        - id: ClothingUniformJumpsuitQMTurtleneck
+        - id: ClothingUniformJumpskirtQMTurtleneck
+        - id: ClothingHandsGlovesColorBrown
+        - id: ClothingOuterWinterQM
+        - id: ClothingNeckCloakQm
 
 - type: entity
   id: DresserResearchDirectorFilled
   parent: Dresser
   suffix: Filled, Research Director
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHatBeretRND
-      - id: ClothingHandsGlovesColorPurple
-      - id: ClothingEyesGlasses
-      - id: ClothingOuterWinterRD
-      - id: ClothingOuterCoatRD
-      - id: ClothingNeckCloakRd
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingHeadHatBeretRND
+        - id: ClothingHandsGlovesColorPurple
+        - id: ClothingEyesGlasses
+        - id: ClothingOuterWinterRD
+        - id: ClothingOuterCoatRD
+        - id: ClothingNeckCloakRd
 
 - type: entity
   id: DresserWardenFilled
   parent: Dresser
   suffix: Filled, Warden
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingHeadHatWarden
-      - id: ClothingHeadHatBeretWarden
-      - id: ClothingUniformJumpskirtWarden
-      - id: ClothingUniformJumpsuitWarden
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingHeadHatWarden
+        - id: ClothingHeadHatBeretWarden
+        - id: ClothingUniformJumpskirtWarden
+        - id: ClothingUniformJumpsuitWarden
index 5c0f1ed277d02401e85ea1e26f4f6251f631c1a8..265b9e23746750eaf406915a5362300658ff0f2e 100644 (file)
     sprite: Clothing/OuterClothing/Coats/detective.rsi
   - type: Clothing
     sprite: Clothing/OuterClothing/Coats/detective.rsi
-  - type: StorageFill
-    contents:
-    - id: SmokingPipeFilledTobacco
-    - id: FlippoEngravedLighter
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: SmokingPipeFilledTobacco
+        - id: FlippoEngravedLighter
   - type: ExplosionResistance
     damageCoefficient: 1 #its a coat. it doesnt do shit
 
   parent: ClothingOuterCoatDetective
   id: ClothingOuterCoatDetectiveLoadout
   components:
-  - type: StorageFill
-    contents:
-    - id: SmokingPipeFilledTobacco
-    - id: FlippoLighter #Not the steal objective, only difference from normal detective trenchcoat
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: SmokingPipeFilledTobacco
+        - id: FlippoLighter #Not the steal objective, only difference from normal detective trenchcoat
 
 - type: entity
   parent: ClothingOuterStorageBase
index 66ddc0e74d470efce5c6cc7c046e4d0157cff724..0d3907c50f0ed0405403d1745e29cf787e7b37c3 100644 (file)
       tags:
       - Cola
     hideStackVisualsWhenClosed: false
-  - type: StorageFill
-    contents:
-    - id: DrinkColaCan
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: DrinkColaCan
+        amount: 6
   - type: ItemCounter
     count:
       tags: [Cola]
index 4b5238fe34bbfe8b79d14f08d56b025d1d01caf3..9ca5d1118fa8ebabf75c0ca95e43b6ae9cd1519d 100644 (file)
     shape:
     - 0,0,2,1
     heldPrefix: box
-  - type: StorageFill
-    contents:
-    - id: FoodDonutPink
-      amount: 3
-    - id: FoodDonutPlain
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: FoodDonutPink
+          amount: 3
+        - id: FoodDonutPlain
+          amount: 3
   - type: ItemCounter
     count:
       tags: [Donut]
     shape:
     - 0,0,2,1
     storedOffset: 0,-6
-  - type: StorageFill
-    contents:
-    - id: FoodEgg
-      amount: 12
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodEgg
+        amount: 12
   - type: ItemCounter
     count:
       tags: [Egg]
   id: EggBoxBroken
   suffix: Broken
   components:
-  - type: StorageFill
-    contents:
-    - id: Eggshells
-      amount: 12
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Eggshells
+        amount: 12
   - type: Destructible
     thresholds:
     - trigger:
   id: FoodBoxPizzaFilled
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodPizzaArnold
-      prob: 0.15
-      orGroup: Pizza
-    - id: FoodPizzaDank
-      prob: 0.10
-      orGroup: Pizza
-    - id: FoodPizzaSassysage
-      prob: 0.15
-      orGroup: Pizza
-    - id: FoodPizzaMargherita
-      prob: 0.15
-      orGroup: Pizza
-    - id: FoodPizzaMeat
-      prob: 0.15
-      orGroup: Pizza
-    - id: FoodPizzaMushroom
-      prob: 0.15
-      orGroup: Pizza
-    - id: FoodPizzaPineapple
-      prob: 0.15
-      orGroup: Pizza
-    - id: FoodPizzaVegetable
-      prob: 0.15
-      orGroup: Pizza
-    - id: FoodPizzaDonkpocket
-      prob: 0.10
-      orGroup: Pizza
-    - id: FoodPizzaCotton
-      prob: 0.10
-      orGroup: Pizza
-    - id: FoodPizzaWorldpeas
-      prob: 0.05
-      orGroup: Pizza
-    - id: KnifePlastic
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: KnifePlastic
+        - !type:GroupSelector
+          children:
+          - id: FoodPizzaArnold
+            weight: 1.5
+          - id: FoodPizzaSassysage
+            weight: 1.5
+          - id: FoodPizzaMargherita
+            weight: 1.5
+          - id: FoodPizzaMeat
+            weight: 1.5
+          - id: FoodPizzaMushroom
+            weight: 1.5
+          - id: FoodPizzaPineapple
+            weight: 1.5
+          - id: FoodPizzaVegetable
+            weight: 1.5
+          - id: FoodPizzaDank
+          - id: FoodPizzaDonkpocket
+          - id: FoodPizzaCotton
+          - id: FoodPizzaWorldpeas
+            weight: 0.5
 
 - type: entity
   parent: FoodBoxPizza
   id: FoodBoxPizzaCotton
   suffix: Cotton Pizza
   components:
-  - type: StorageFill
-    contents:
-    - id: FoodPizzaCotton
-    - id: KnifePlastic
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: FoodPizzaCotton
+        - id: KnifePlastic
 
 # Nugget
 
     sprite: Objects/Consumable/Food/Baked/nuggets.rsi
     size: Small
     heldPrefix: box
-  - type: StorageFill
-    contents:
-    - id: FoodBakedNugget
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodBakedNugget
+        amount: 6
   - type: ItemCounter
     count:
       tags: [Nugget]
     shape:
     - 0,0,2,1
     storedOffset: -1,1
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocket
-      amount: 6
-    - id: DonkcoLighter
-      amount: 1
-      prob: 0.10
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: FoodDonkpocket
+          amount: 6
+        - id: DonkcoLighter
+          prob: 0.10
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: spicy-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketSpicy
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketSpicy
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: teriyaki-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketTeriyaki
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketTeriyaki
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: pizza-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketPizza
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketPizza
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: stonk-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketStonk
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketStonk
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: carp-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketCarp
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketCarp
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: berry-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketBerry
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketBerry
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: banana-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketHonk
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketHonk
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: dink-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketDink
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketDink
+        amount: 6
 
 - type: entity
   parent: FoodBoxDonkpocket
   components:
   - type: Sprite
     state: moth-box
-  - type: StorageFill
-    contents:
-    - id: FoodDonkpocketMoth
-      amount: 6
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: FoodDonkpocketMoth
+        amount: 6
 
 - type: entity
   id: HappyHonk
     - Trash
     - HappyHonk
     - BoxCardboard
-  - type: StorageFill
-    contents:
-      - id: ToyMouse
-        orGroup: GiftPool
-      - id: ToyAi
-        orGroup: GiftPool
-      - id: ToyNuke
-        orGroup: GiftPool
-      - id: ToyFigurinePassenger
-        orGroup: GiftPool
-      - id: ToyFigurineGriffin
-        orGroup: GiftPool
-      - id: ToyHonk
-        orGroup: GiftPool
-      - id: ToyIan
-        orGroup: GiftPool
-      - id: ToyMarauder
-        orGroup: GiftPool
-      - id: ToyMauler
-        orGroup: GiftPool
-      - id: ToyGygax
-        orGroup: GiftPool
-      - id: ToyOdysseus
-        orGroup: GiftPool
-      - id: ToyFigurineOwlman
-        orGroup: GiftPool
-      - id: ToyDeathRipley
-        orGroup: GiftPool
-      - id: ToyPhazon
-        orGroup: GiftPool
-      - id: ToyFireRipley
-        orGroup: GiftPool
-      - id: ToyReticence
-        orGroup: GiftPool
-      - id: ToyRipley
-        orGroup: GiftPool
-      - id: ToySeraph
-        orGroup: GiftPool
-      - id: ToyDurand
-        orGroup: GiftPool
-      - id: ToyFigurineSkeleton
-        orGroup: GiftPool
-      - id: FoamBlade
-        orGroup: GiftPool
-      - id: ClothingHeadHatBunny
-        orGroup: GiftPool
-      - id: PersonalAI
-        orGroup: GiftPool
-      - id: CrayonBox
-        orGroup: GiftPool
-      - id: ToySword
-        orGroup: GiftPool
-      - id: RevolverCapGun
-        orGroup: GiftPool
-      - id: ToyRubberDuck
-        orGroup: GiftPool
-      - id: BikeHorn
-        prob: 0.5
-        orGroup: GiftPool
-      - id: GoldenBikeHorn
-        prob: 0.1
-        orGroup: GiftPool
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:NestedSelector
+        tableId: HappyHonkToySafeEntityTable
 
 - type: entity
   id: HappyHonkMime
     sprite: Objects/Storage/Happyhonk/nukie.rsi
   - type: Item
     sprite: Objects/Storage/Happyhonk/nukie.rsi
-  - type: StorageFill
-    contents:
-      - id: C4
-        prob: 0.02
-        orGroup: GiftPool
-      - id: ToyMarauder
-        orGroup: GiftPool
-      - id: ToyMauler
-        orGroup: GiftPool
-      - id: ToyNuke
-        orGroup: GiftPool
-      - id: ToySword
-        orGroup: GiftPool
-      - id: BalloonSyn
-        prob: 0.6
-        orGroup: GiftPool
-      - id: PlushieNuke
-        orGroup: GiftPool
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:NestedSelector
+        tableId: HappyHonkToyUnsafeEntityTable
 
 - type: entity
   parent: HappyHonkNukie
   - type: Storage
     grid:
     - 0,0,5,2
-  - type: StorageFill
-    contents:
-    # toy
-    - id: C4
-      prob: 0.02
-      orGroup: GiftPool
-    - id: ToyMarauder
-      orGroup: GiftPool
-    - id: ToyMauler
-      orGroup: GiftPool
-    - id: ToyNuke
-      orGroup: GiftPool
-    - id: ToySword
-      orGroup: GiftPool
-    - id: BalloonSyn
-      prob: 0.6
-      orGroup: GiftPool
-    - id: PlushieNuke
-      orGroup: GiftPool
-    # drinks - 4 cans, up to 2 blood-red brews
-    - id: DrinkNukieCan
-      prob: 0.2
-      orGroup: Drink1Pool
-    - id: DrinkColaCan
-      orGroup: Drink1Pool
-    - id: DrinkNukieCan
-      prob: 0.2
-      orGroup: Drink2Pool
-    - id: DrinkColaCan
-      orGroup: Drink2Pool
-    - id: DrinkColaCan
-      amount: 2
-    # food
-    - id: FoodSaladValid
-      prob: 0.05
-      amount: 4
-      orGroup: FoodPool
-    - id: FoodSnackSyndi
-      amount: 4
-      orGroup: FoodPool
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        # toy
+        - !type:NestedSelector
+          tableId: HappyHonkToyUnsafeEntityTable
+        # drinks - 4 cans, up to 2 blood-red brews
+        - !type:GroupSelector
+          rolls: 2
+          children:
+          - id: DrinkNukieCan
+            weight: 0.2
+          - id: DrinkColaCan
+        - id: DrinkColaCan
+          amount: 2
+        # food
+        - !type:GroupSelector
+          children:
+          - id: FoodSaladValid
+            weight: 0.05
+            amount: 4
+          - id: FoodSnackSyndi
+            amount: 4
 
 - type: entity
   id: HappyHonkCluwne
     sprite: Objects/Storage/Happyhonk/cluwne.rsi
   - type: Item
     sprite: Objects/Storage/Happyhonk/cluwne.rsi
-  - type: StorageFill
-    contents:
-      - id: CluwneHorn
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CluwneHorn
 
 - type: entity
   id: FoodMealHappyHonkClown
   suffix: random food spawner meal
   categories: [ HideSpawnMenu ]
   components:
-  - type: StorageFill
-    contents:
-      - id: FoodBurgerCheese
-        orGroup: Burgers
-      - id: DrinkColaCan
-        orGroup: DrinkPool
-      - id: DrinkLemonLimeCan
-        orGroup: DrinkPool
-      - id: DrinkLemonLimeCranberryCan
-        orGroup: DrinkPool
-      - id: DrinkIcedTeaCan
-        orGroup: DrinkPool
-      - id: ToyMouse
-        orGroup: GiftPool
-      - id: ToyAi
-        orGroup: GiftPool
-      - id: ToyNuke
-        orGroup: GiftPool
-      - id: ToyFigurinePassenger
-        orGroup: GiftPool
-      - id: ToyFigurineGriffin
-        orGroup: GiftPool
-      - id: ToyHonk
-        orGroup: GiftPool
-      - id: ToyIan
-        orGroup: GiftPool
-      - id: ToyMarauder
-        orGroup: GiftPool
-      - id: ToyMauler
-        orGroup: GiftPool
-      - id: ToyGygax
-        orGroup: GiftPool
-      - id: ToyOdysseus
-        orGroup: GiftPool
-      - id: ToyFigurineOwlman
-        orGroup: GiftPool
-      - id: ToyDeathRipley
-        orGroup: GiftPool
-      - id: ToyPhazon
-        orGroup: GiftPool
-      - id: ToyFireRipley
-        orGroup: GiftPool
-      - id: ToyReticence
-        orGroup: GiftPool
-      - id: ToyRipley
-        orGroup: GiftPool
-      - id: ToySeraph
-        orGroup: GiftPool
-      - id: ToyDurand
-        orGroup: GiftPool
-      - id: ToyFigurineSkeleton
-        orGroup: GiftPool
-      - id: FoamBlade
-        orGroup: GiftPool
-      - id: ClothingHeadHatBunny
-        orGroup: GiftPool
-      - id: PersonalAI
-        orGroup: GiftPool
-      - id: CrayonBox
-        orGroup: GiftPool
-      - id: ToySword
-        orGroup: GiftPool
-      - id: RevolverCapGun
-        orGroup: GiftPool
-      - id: ToyRubberDuck
-        orGroup: GiftPool
-      - id: BikeHorn
-        prob: 0.5
-        orGroup: GiftPool
-      - id: GoldenBikeHorn
-        prob: 0.1
-        orGroup: GiftPool
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - !type:NestedSelector # First since it can spawn a 3x3
+          tableId: HappyHonkToySafeEntityTable
+        - id: FoodBurgerCheese
+        - !type:GroupSelector
+          children:
+          - id: DrinkColaCan
+          - id: DrinkLemonLimeCan
+          - id: DrinkLemonLimeCranberryCan
+          - id: DrinkIcedTeaCan
 
 - type: entity
   id: FoodMealHappyHonkBigBite
   name: Happy Honk Big Bite Meal
   description: Someone paid good money to get this fast food meal shipped out this way. It smells fresh, somehow.
   components:
-  - type: StorageFill
-    contents:
-      - id: FoodBurgerBig
-        amount: 1
-      - id: FoodMealFriesCheesy
-        amount: 1
-      - id: DrinkColaBottleFull
-        amount: 1
-      - id: FoodPieAppleSlice
-        amount: 1
-      - id: ToyMouse
-        orGroup: GiftPool
-      - id: ToyAi
-        orGroup: GiftPool
-      - id: ToyNuke
-        orGroup: GiftPool
-      - id: ToyFigurinePassenger
-        orGroup: GiftPool
-      - id: ToyFigurineGriffin
-        orGroup: GiftPool
-      - id: ToyHonk
-        orGroup: GiftPool
-      - id: ToyIan
-        orGroup: GiftPool
-      - id: ToyMarauder
-        orGroup: GiftPool
-      - id: ToyMauler
-        orGroup: GiftPool
-      - id: ToyGygax
-        orGroup: GiftPool
-      - id: ToyOdysseus
-        orGroup: GiftPool
-      - id: ToyFigurineOwlman
-        orGroup: GiftPool
-      - id: ToyDeathRipley
-        orGroup: GiftPool
-      - id: ToyPhazon
-        orGroup: GiftPool
-      - id: ToyFireRipley
-        orGroup: GiftPool
-      - id: ToyReticence
-        orGroup: GiftPool
-      - id: ToyRipley
-        orGroup: GiftPool
-      - id: ToySeraph
-        orGroup: GiftPool
-      - id: ToyDurand
-        orGroup: GiftPool
-      - id: ToyFigurineSkeleton
-        orGroup: GiftPool
-      - id: FoamBlade
-        orGroup: GiftPool
-      - id: ClothingHeadHatBunny
-        orGroup: GiftPool
-      - id: PersonalAI
-        orGroup: GiftPool
-      - id: ToySword
-        orGroup: GiftPool
-      - id: RevolverCapGun
-        orGroup: GiftPool
-      - id: ToyRubberDuck
-        orGroup: GiftPool
-      - id: BikeHorn
-        prob: 0.5
-        orGroup: GiftPool
-      - id: GoldenBikeHorn
-        prob: 0.1
-        orGroup: GiftPool
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: FoodBurgerBig
+        - id: FoodMealFriesCheesy
+        - id: DrinkColaBottleFull
+        - id: FoodPieAppleSlice
+        - !type:GroupSelector # One item is too big, so the HappyHonkToySafeEntityTable can't  be used like the others.
+          children:
+          - id: ToyMouse
+          - id: ToyAi
+          - id: ToyNuke
+          - id: ToyFigurinePassenger
+          - id: ToyFigurineGriffin
+          - id: ToyHonk
+          - id: ToyIan
+          - id: ToyMarauder
+          - id: ToyMauler
+          - id: ToyGygax
+          - id: ToyOdysseus
+          - id: ToyFigurineOwlman
+          - id: ToyDeathRipley
+          - id: ToyPhazon
+          - id: ToyFireRipley
+          - id: ToyReticence
+          - id: ToyRipley
+          - id: ToySeraph
+          - id: ToyDurand
+          - id: ToyFigurineSkeleton
+          - id: FoamBlade
+          - id: ClothingHeadHatBunny
+          - id: PersonalAI
+          #- id: CrayonBox
+          - id: ToySword
+          - id: RevolverCapGun
+          - id: ToyRubberDuck
+          - id: BikeHorn
+            weight: 0.5
+          - id: GoldenBikeHorn
+            weight: 0.1
 
 - type: entity
   parent: BoxCardboard
     size: Normal
     shape:
     - 0,0,1,1
-  - type: StorageFill
-    contents:
-    - id: MaterialCloth10
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MaterialCloth10
+
+- type: entityTable
+  id: HappyHonkToySafeEntityTable
+  table: !type:GroupSelector
+    children:
+    - id: ToyMouse
+    - id: ToyAi
+    - id: ToyNuke
+    - id: ToyFigurinePassenger
+    - id: ToyFigurineGriffin
+    - id: ToyHonk
+    - id: ToyIan
+    - id: ToyMarauder
+    - id: ToyMauler
+    - id: ToyGygax
+    - id: ToyOdysseus
+    - id: ToyFigurineOwlman
+    - id: ToyDeathRipley
+    - id: ToyPhazon
+    - id: ToyFireRipley
+    - id: ToyReticence
+    - id: ToyRipley
+    - id: ToySeraph
+    - id: ToyDurand
+    - id: ToyFigurineSkeleton
+    - id: FoamBlade
+    - id: ClothingHeadHatBunny
+    - id: PersonalAI
+    - id: CrayonBox
+    - id: ToySword
+    - id: RevolverCapGun
+    - id: ToyRubberDuck
+    - id: BikeHorn
+      weight: 0.5
+    - id: GoldenBikeHorn
+      weight: 0.1
+
+- type: entityTable
+  id: HappyHonkToyUnsafeEntityTable
+  table: !type:GroupSelector
+    children:
+    - id: C4
+      weight: 0.02
+    - id: ToyMarauder
+    - id: ToyMauler
+    - id: ToyNuke
+    - id: ToySword
+    - id: BalloonSyn
+      weight: 0.6
+    - id: PlushieNuke
index 8c55fd740e4050cb21fa546c238130d984189020..681319d0e062a84ae450c006abd7e1825c9fde24 100644 (file)
   - type: Storage
     grid:
     - 0,0,4,1
-  - type: StorageFill
-    contents:
-      - id: CigPackGreen
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CigPackGreen
         amount: 5
   - type: Tag
     tags:
     state: icon
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/red.rsi
-  - type: StorageFill
-    contents:
-      - id: CigPackRed
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CigPackRed
         amount: 5
 
 - type: entity
     state: icon
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/blue.rsi
-  - type: StorageFill
-    contents:
-      - id: CigPackBlue
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CigPackBlue
         amount: 5
 
 - type: entity
     state: icon
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/black.rsi
-  - type: StorageFill
-    contents:
-      - id: CigPackBlack
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CigPackBlack
         amount: 5
 
 - type: entity
@@ -84,7 +88,8 @@
     state: icon
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/mixed.rsi
-  - type: StorageFill
-    contents:
-    - id: CigPackMixed
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CigPackMixed
+        amount: 3
index 1dd9bb814be8a067a29024a9dde7a79e78cd4cba..63b341936a53836b6eb1596ba503ac5a9db6c9b1 100644 (file)
   - type: Storage
     grid:
     - 0,0,4,1
-  - type: StorageFill
-    contents:
-    - id: Cigarette
-      amount: 10
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Cigarette
+        amount: 10
   - type: ItemCounter
     count:
       tags: [Cigarette]
     sprite: Objects/Consumable/Smokeables/Cigarettes/Packs/syndicate.rsi
   - type: Item
     sprite: Objects/Consumable/Smokeables/Cigarettes/Packs/syndicate.rsi
-  - type: StorageFill
-    contents:
-    - id: CigaretteSyndicate
-      amount: 10
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CigaretteSyndicate
+        amount: 10
 
 - type: entity
   id: CigPackMixed
index 01a203bcfe8a4b997fd8ebb04815ca51c5a2cfb1..2fe084b1933909e28ebd58b3bcb6def9c7cc3d1f 100644 (file)
       tags:
       - RollingPaper
       - CigFilter
-  - type: StorageFill
-    contents:
-      - id: PaperRolling
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PaperRolling
         amount: 4
   - type: Sprite
     sprite: Objects/Consumable/Smokeables/Cigarettes/paper.rsi
   id: PackPaperRollingFilters
   description: A pack of filters and thin pieces of paper used to make fine smokeables.
   components:
-  - type: StorageFill
-    contents:
-      - id: PaperRolling
-        amount: 2
-      - id: CigaretteFilter
-        amount: 2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: PaperRolling
+          amount: 2
+        - id: CigaretteFilter
+          amount: 2
 
 - type: entity
   id: PaperRolling
index 5e91d53847f04c4871a4d019b86105f1053b3d94..20861413c72078cc1586eb044cffe3b710723d3d 100644 (file)
     shape:
     - 0,0,2,1
     storedRotation: 90
-  - type: StorageFill
-    contents:
-    - id: Cigar
-      amount: 8
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Cigar
+        amount: 8
   - type: ItemCounter
     count:
       tags: [Cigar]
@@ -69,7 +70,8 @@
   name: premium cigar case
   description: "A case of premium Havanian cigars. You'll only see heads with these."
   components:
-  - type: StorageFill
-    contents:
-    - id: CigarGold
-      amount: 8
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: CigarGold
+        amount: 8
index 254dcccde9d66bea7e270c9836ccac902e9b66c6..6cd2c335dd71028a159c9fb4421ccb4654fac326 100644 (file)
   id: BoxHoloparasite
   description: A box containing a holoparasite injector.
   components:
-  - type: StorageFill
-    contents:
-      - id: HoloparasiteInjector
-      - id: HoloparasiteInfo
-      - id: ClothingHeadHatBizarreSoft
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: HoloparasiteInjector
+        - id: HoloparasiteInfo
+        - id: ClothingHeadHatBizarreSoft
   - type: Sprite
     layers:
       - state: box
   id: BoxHoloclown
   description: A box containing a holoclown injector.
   components:
-  - type: StorageFill
-    contents:
-      - id: HoloClownInjector
-      - id: ToyFigurineHoloClown
-      - id: ToyHammer
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: HoloClownInjector
+        - id: ToyFigurineHoloClown
+        - id: ToyHammer
   - type: Sprite
     layers:
       - state: box_hug
index b0f38f37ea10471eea1ea587e3e5ed6d6fb0f966..6c2b291cd134d1863ee30b33bdea7b380e4db951 100644 (file)
     sprite: Objects/Fun/crayons.rsi
     size: Small
     heldPrefix: box
-  - type: StorageFill
-    contents:
-    - id: CrayonRed
-    - id: CrayonOrange
-    - id: CrayonYellow
-    - id: CrayonGreen
-    - id: CrayonBlue
-    - id: CrayonPurple
-    - id: CrayonBlack
-    - id: CrayonWhite
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: CrayonRed
+        - id: CrayonOrange
+        - id: CrayonYellow
+        - id: CrayonGreen
+        - id: CrayonBlue
+        - id: CrayonPurple
+        - id: CrayonBlack
+        - id: CrayonWhite
   - type: ItemMapper
     mapLayers:
       black_box:
index 1a579572d9748be99a2f2cda4732e260890cb3e5..41cea1412c2c9f1bb7e5f5351a6fc0357ffec333 100644 (file)
@@ -4,15 +4,17 @@
   name: bag of dice
   description: Contains all the luck you'll ever need.
   components:
-  - type: StorageFill
-    contents:
-      - id: d4Dice
-      - id: d6Dice
-      - id: d8Dice
-      - id: d10Dice
-      - id: d12Dice
-      - id: d20Dice
-      - id: PercentileDie
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: d4Dice
+        - id: d6Dice
+        - id: d8Dice
+        - id: d10Dice
+        - id: d12Dice
+        - id: d20Dice
+        - id: PercentileDie
   - type: Sprite
     sprite: Objects/Fun/dice.rsi
     state: dicebag
index 4380184c262173d46f656c27b24518343160035e..df567912ecf923ea2ad92ed50bf04e0cd5cc1397 100644 (file)
     - 0,0,4,3
     areaInsert: true
     maxItemSize: Tiny
-  - type: StorageFill
-    contents:
-      - id: SnapPop
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: SnapPop
         amount: 5
   - type: Dumpable
 
index 2a289a95f8c4d8817962c0ce428a9a560591fda7..4ddfabd7935bb58d61ec1b4b1b8f3551efc189ec 100644 (file)
     breakOnAccessBreaker: false
   - type: EntityStorage
     capacity: 1 # Its smol.
-  # - type: StorageFill
-    # contents:
-      # - id: PuddleSparkle # Ha! Cute. Unfortunately it despawns before the container is likely to open.
+  # - type: EntityTableContainerFill
+    # containers:
+      # entity_storage:
+        # id: PuddleSparkle # Ha! Cute. Unfortunately it despawns before the container is likely to open.
   - type: ContainerContainer
     containers:
       entity_storage: !type:Container
index e4e08960038ce11e6829167cc9d7216d29c26416..ae838be0a8c5aaa90ab7b428828159ffb0f0ff19 100644 (file)
   id: BoxFolderFill # Include this as a parent prototype to add 0-5 random papers to a folder's inventory when spawned.
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-    - id: Paper
-      prob: 0.5
-    - id: PaperOffice
-      prob: 0.4
-    - id: Paper
-      prob: 0.3
-    - id: PaperOffice
-      prob: 0.2
-    - id: Paper
-      prob: 0.2
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Paper
+          prob: 0.5
+        - id: PaperOffice
+          prob: 0.4
+        - id: Paper
+          prob: 0.3
+        - id: PaperOffice
+          prob: 0.2
+        - id: Paper
+          prob: 0.2
 
 - type: entity
   abstract: true
   id: BoxFolderFillThreePapers # Like BoxFolderFill, but always has exactly three sheets of standard paper; use for things that should always be consistent, e.g roundstart items
   suffix: 3 papers
   components:
-  - type: StorageFill
-    contents:
-    - id: Paper
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Paper
+        amount: 3
 
 - type: entity
   parent: [BoxFolderBaseEmpty, BoxFolderFill]
index 9304d09eb696586d258b89fe7f512ef24233cc58..3e56cf3da7b1e89e29ec16f54f51e485c1f4ec26 100644 (file)
     whitelist:
       tags:
         - Medal
-  - type: StorageFill
-    contents:
-    - id: ClothingNeckGoldmedal
-    - id: ClothingNeckBronzeheart
-    - id: ClothingNeckCargomedal
-    - id: ClothingNeckEngineermedal
-    - id: ClothingNeckMedicalmedal
-    - id: ClothingNeckSciencemedal
-    - id: ClothingNeckSecuritymedal
-    - id: ClothingNeckClownmedal
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: ClothingNeckGoldmedal
+        - id: ClothingNeckBronzeheart
+        - id: ClothingNeckCargomedal
+        - id: ClothingNeckEngineermedal
+        - id: ClothingNeckMedicalmedal
+        - id: ClothingNeckSciencemedal
+        - id: ClothingNeckSecuritymedal
+        - id: ClothingNeckClownmedal
index 9b95d15e69ce2847d0e83240cb827da55e256696..03f9e320ab898d6e4d1828612ada5a73916eb4c7 100644 (file)
@@ -4,9 +4,10 @@
   id: MonkeyCubeBox
   description: Drymate brand monkey cubes. Just add water!
   components:
-  - type: StorageFill
-    contents:
-      - id: MonkeyCubeWrapped
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: MonkeyCubeWrapped
         amount: 8
   - type: Sprite
     sprite: Objects/Misc/monkeycube.rsi
   id: KoboldCubeBox
   description: Condensed kobolds in a cube. Just add water!
   components:
-  - type: StorageFill
-    contents:
-      - id: KoboldCubeWrapped
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: KoboldCubeWrapped
         amount: 8
   - type: Sprite
     sprite: Objects/Misc/monkeycube.rsi
   id: VariantCubeBox
   description: Both kobold cubes and monkey cubes. Just add water!
   components:
-  - type: StorageFill
-    contents:
-      - id: KoboldCubeWrapped
-        amount: 4
-      - id: MonkeyCubeWrapped
-        amount: 4
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: KoboldCubeWrapped
+          amount: 4
+        - id: MonkeyCubeWrapped
+          amount: 4
   - type: Sprite
     sprite: Objects/Misc/monkeycube.rsi
     state: box_variant
   id: SyndicateSpongeBox
   description: Drymate brand monkey cubes. Just add water!
   components:
-  - type: StorageFill
-    contents:
-      - id: SyndicateSpongeWrapped
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: SyndicateSpongeWrapped
         amount: 6
   - type: Sprite
     sprite: Objects/Misc/monkeycube.rsi
index aedbd3190c8d1ac7f423ed43bfb7befc98230a96..ae89913f38777c5ddc2464d062ac9921276f900e 100644 (file)
   components:
   - type: Label
     currentLabel: dexalin 10u
-  - type: StorageFill
-    contents:
-    - id: PillDexalin
-      amount: 7
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillDexalin
+        amount: 7
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: dylovene 10u
-  - type: StorageFill
-    contents:
-    - id: PillDylovene
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillDylovene
+        amount: 5
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: hyronalin 10u
-  - type: StorageFill
-    contents:
-    - id: PillHyronalin
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillHyronalin
+        amount: 5
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: potassium iodide 10u
-  - type: StorageFill
-    contents:
-    - id: PillPotassiumIodide
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillPotassiumIodide
+        amount: 5
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: iron 10u
-  - type: StorageFill
-    contents:
-    - id: PillIron
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillIron
+        amount: 5
 
 - type: entity
   name: pill canister
   components:
   - type: Label
     currentLabel: copper 10u
-  - type: StorageFill
-    contents:
-    - id: PillCopper
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillCopper
+        amount: 5
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: kelotane 10u
-  - type: StorageFill
-    contents:
-    - id: PillKelotane
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillKelotane
+        amount: 5
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: dermaline 10u
-  - type: StorageFill
-    contents:
-    - id: PillDermaline
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillDermaline
+        amount: 5
 
 - type: entity
   name: space mirage
   components:
   - type: Label
     currentLabel: tricordrazine 10u
-  - type: StorageFill
-    contents:
-    - id: PillTricordrazine
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillTricordrazine
+        amount: 5
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: bicaridine 10u
-  - type: StorageFill
-    contents:
-    - id: PillBicaridine
-      amount: 5
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillBicaridine
+        amount: 5
 
 - type: entity
   name: pill
   components:
   - type: Label
     currentLabel: charcoal 10u
-  - type: StorageFill
-    contents:
-    - id: PillCharcoal
-      amount: 3
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: PillCharcoal
+        amount: 3
 
 - type: entity
   name: romerol pill
   id: PillCanisterRandom
   suffix: Random
   components:
-  - type: StorageFill
-    contents:
-    - id: PillDexalin
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillDylovene
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillHyronalin
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillPotassiumIodide
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillIron
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillCopper
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillKelotane
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillDermaline
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillTricordrazine
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillBicaridine
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillCharcoal
-      prob: 0.10
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillAmbuzol
-      prob: 0.075
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillAmbuzolPlus
-      prob: 0.075
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: PillSpaceDrugs
-      prob: 0.075
-      maxAmount: 7
-      orGroup: RandomPill
-    - id: StrangePill
-      prob: 0.075
-      maxAmount: 7
-      orGroup: RandomPill
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:GroupSelector
+        children:
+        - id: PillDexalin
+          amount: &Range1to6 !type:RangeNumberSelector
+            range: 1, 6
+        - id: PillDylovene
+          amount: *Range1to6
+        - id: PillHyronalin
+          amount: *Range1to6
+        - id: PillPotassiumIodide
+          amount: *Range1to6
+        - id: PillIron
+          amount: *Range1to6
+        - id: PillCopper
+          amount: *Range1to6
+        - id: PillKelotane
+          amount: *Range1to6
+        - id: PillDermaline
+          amount: *Range1to6
+        - id: PillTricordrazine
+          amount: *Range1to6
+        - id: PillBicaridine
+          amount: *Range1to6
+        - id: PillCharcoal
+          amount: *Range1to6
+        - id: PillAmbuzol
+          weight: 0.75
+          amount: *Range1to6
+        - id: PillAmbuzolPlus
+          weight: 0.75
+          amount: *Range1to6
+        - id: PillSpaceDrugs
+          weight: 0.75
+          amount: *Range1to6
+        - id: StrangePill
+          weight: 0.75
+          amount: *Range1to6
 
 # Syringes
 - type: entity
index 0773813461c2cb5b16eac2e7e0cfe3d775dc0daa..730f5547e37a58bf3d8ca189578645e56e72fdb8 100644 (file)
   id: BoxEvidenceMarkers
   description: A pack of numbered yellow markers, useful for labeling evidence on a crime scene.
   components:
-    - type: Item
-      shape:
-      - 0,0,1,1
-    - type: StorageFill
-      contents:
+  - type: Item
+    shape:
+    - 0,0,1,1
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
         - id: EvidenceMarkerOne
         - id: EvidenceMarkerTwo
         - id: EvidenceMarkerThree
@@ -94,7 +96,7 @@
         - id: EvidenceMarkerSeven
         - id: EvidenceMarkerEight
         - id: EvidenceMarkerNine
-    - type: Sprite
-      layers:
-        - state: box_security
-        - state: evidence_markers
+  - type: Sprite
+    layers:
+      - state: box_security
+      - state: evidence_markers
index 05816e817a3aaf7b8046f7e678111ce494faca32..8320bba39771fe7a17a10c5533582b7a4ab5f2c8 100644 (file)
   suffix: Filled
   parent: CowToolbox
   components:
-  - type: StorageFill
-    contents:
-    - id: Haycutters
-    - id: Moodriver
-    - id: Wronch
-    - id: Cowbar
-    - id: Mooltitool
-    - id: Cowelder
-    - id: Milkalyzer
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: Haycutters
+        - id: Moodriver
+        - id: Wronch
+        - id: Cowbar
+        - id: Mooltitool
+        - id: Cowelder
+        - id: Milkalyzer
index c701a400d5e08e0c0947300abad5f16e6cf9684f..456e6bb228655c914e6e8bac63291a565fc59ba0 100644 (file)
   - type: Storage
     grid:
     - 0,0,2,1
-  - type: StorageFill
-    contents:
-      - id: Matchstick
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: Matchstick
         amount: 6
   - type: ItemCounter
     count:
   - type: Storage
     grid:
     - 0,0,11,1
-  - type: StorageFill
-    contents:
-      - id: GorlexMatchstick
+  - type: EntityTableContainerFill
+    containers:
+      storagebase:
+        id: GorlexMatchstick
         amount: 24
   - type: Matchbox
 
index 4f03403e25ebb01a546b8cf2f2c20d54ebbe0159..f051a9de7224c969d42de63f8066ea5a68e7f06b 100644 (file)
   suffix: Filled
   parent: BoozeDispenserEmpty
   components:
-  - type: StorageFill
-    contents:
-    - id: DrinkAleBottleFullGrowler
-    - id: DrinkBeerGrowler
-    - id: DrinkCoffeeLiqueurBottleFull
-    - id: DrinkCognacBottleFull
-    - id: DrinkGinBottleFull
-    - id: DrinkMeadJug
-    - id: DrinkRumBottleFull
-    - id: DrinkTequilaBottleFull
-    - id: DrinkVermouthBottleFull
-    - id: DrinkVodkaBottleFull
-    - id: DrinkWhiskeyBottleFull
-    - id: DrinkWineBottleFull
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: DrinkAleBottleFullGrowler
+        - id: DrinkBeerGrowler
+        - id: DrinkCoffeeLiqueurBottleFull
+        - id: DrinkCognacBottleFull
+        - id: DrinkGinBottleFull
+        - id: DrinkMeadJug
+        - id: DrinkRumBottleFull
+        - id: DrinkTequilaBottleFull
+        - id: DrinkVermouthBottleFull
+        - id: DrinkVodkaBottleFull
+        - id: DrinkWhiskeyBottleFull
+        - id: DrinkWineBottleFull
index 5aebde564caff039509b7d52034554de3349369f..e4793cb93f8e0db8ef62a3c5914303206ebd3915 100644 (file)
   parent: ChemDispenserEmpty
   components:
   - type: ReagentDispenser
-  - type: StorageFill
-    contents:
-      - id: JugAluminium
-      - id: JugCarbon
-      - id: JugChlorine
-      - id: JugCopper
-      - id: JugEthanol
-      - id: JugFluorine
-      - id: JugSugar
-      - id: JugHydrogen
-      - id: JugIodine
-      - id: JugIron
-      - id: JugLithium
-      - id: JugMercury
-      - id: JugNitrogen
-      - id: JugOxygen
-      - id: JugPhosphorus
-      - id: JugPotassium
-      - id: JugRadium
-      - id: JugSilicon
-      - id: JugSodium
-      - id: JugSulfur
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: JugAluminium
+        - id: JugCarbon
+        - id: JugChlorine
+        - id: JugCopper
+        - id: JugEthanol
+        - id: JugFluorine
+        - id: JugSugar
+        - id: JugHydrogen
+        - id: JugIodine
+        - id: JugIron
+        - id: JugLithium
+        - id: JugMercury
+        - id: JugNitrogen
+        - id: JugOxygen
+        - id: JugPhosphorus
+        - id: JugPotassium
+        - id: JugRadium
+        - id: JugSilicon
+        - id: JugSodium
+        - id: JugSulfur
index 6df6d595d288c0caaced6351522e344cf2352acd..6ef00ae330da3cf11c8b86a8db2a4cbbb7b37c3c 100644 (file)
   id: SodaDispenser
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-    - id: DrinkCoconutWaterJug
-    - id: DrinkCoffeeJug
-    - id: DrinkColaBottleFull
-    - id: DrinkCreamCartonXL
-    - id: DrinkDrGibbJug
-    - id: DrinkEnergyDrinkJug
-    - id: DrinkGreenTeaJug
-    - id: DrinkIceJug
-    - id: DrinkJuiceLimeCartonXL
-    - id: DrinkJuiceOrangeCartonXL
-    - id: DrinkLemonLimeJug
-    - id: DrinkRootBeerJug
-    - id: DrinkSodaWaterBottleFull
-    - id: DrinkSpaceMountainWindBottleFull
-    - id: DrinkSpaceUpBottleFull
-    - id: DrinkSugarJug
-    - id: DrinkTeaJug
-    - id: DrinkTonicWaterBottleFull
-    - id: DrinkWaterMelonJuiceJug
+  - type: EntityTableContainerFill
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - id: DrinkCoconutWaterJug
+        - id: DrinkCoffeeJug
+        - id: DrinkColaBottleFull
+        - id: DrinkCreamCartonXL
+        - id: DrinkDrGibbJug
+        - id: DrinkEnergyDrinkJug
+        - id: DrinkGreenTeaJug
+        - id: DrinkIceJug
+        - id: DrinkJuiceLimeCartonXL
+        - id: DrinkJuiceOrangeCartonXL
+        - id: DrinkLemonLimeJug
+        - id: DrinkRootBeerJug
+        - id: DrinkSodaWaterBottleFull
+        - id: DrinkSpaceMountainWindBottleFull
+        - id: DrinkSpaceUpBottleFull
+        - id: DrinkSugarJug
+        - id: DrinkTeaJug
+        - id: DrinkTonicWaterBottleFull
+        - id: DrinkWaterMelonJuiceJug
index ccfb25a80270944a6d8d787ebc97aa707f923b34..4bc1e0d6eae7709d6cdef9d6c3cdc9a92df8c4ef 100644 (file)
   parent: Dresser
   suffix: Filled
   components:
-  - type: StorageFill
-    contents:
-      - id: ClothingNeckLGBTPin
-        prob: 0.06
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitColorGrey
-        prob: 0.06
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorGrey
-        prob: 0.06
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitColorWhite
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorWhite
-        prob: 0.05
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitColorPink
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorPink
-        prob: 0.05
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitLoungewear
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtBlackElegantDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtRedElegantDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtGreenElegantDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtBlueElegantDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtPurpleElegantDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtCyanStripedDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtRedStripedDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtGreenStripedDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtPinkStripedDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtOrangeStripedDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtPurpleTurtleneckDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtRedTurtleneckDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtGreenTurtleneckDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtBlueTurtleneckDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtYellowTurtleneckDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtYellowOldDress
-        prob: 0.05
-        orGroup: dressermainloot
-      - id: Pen # It`s pen.
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingUniformJumpsuitColorBlue
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorBlue
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitColorYellow
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorYellow
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitColorGreen
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorGreen
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitColorOrange
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpskirtColorOrange
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitColorRed
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorRed
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitColorPurple
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorPurple
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitColorDarkBlue
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtColorDarkBlue
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitColorTeal
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpskirtColorTeal
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingShoesColorBlack
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingNeckScarfStripedRed
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingNeckScarfStripedBlue
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingNeckScarfStripedGreen
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingHeadHatGreysoft
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingHeadHatCorpsoft
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingHeadHatBunny
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingOuterHoodieBlack
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: BedsheetNT
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: BedsheetGrey
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingOuterWinterClown
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingOuterCoatBomber
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingEyesEyepatch
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingHeadHatPaper
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingMaskBreath
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingHeadHatWitch
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingOuterCoatLab
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingHeadHatFedoraGrey
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitHawaiBlue
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingHeadHatAnimalHeadslime
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingMultipleHeadphones
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingUnderSocksCoder
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingUnderSocksBee
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingHeadHatAnimalMonkey
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingShoesWizard
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingOuterDameDane
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingHeadHatShrineMaidenWig
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingOuterPoncho
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingShoesBootsWork
-        prob: 0.03
-        orGroup: dressermainloot
-      - id: ClothingOuterWinterCoat
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingMaskFox
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingEyesGlassesGar
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingOuterCoatGentle
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingHeadHatBeret
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: PlushieLizard
-        prob: 0.03
-        orGroup: dresserthirdloot
-      - id: ClothingOuterSuitShrineMaiden
-        prob: 0.03
-        orGroup: dressersecondloot
-      - id: ClothingOuterClownPriest
-        prob: 0.02
-        orGroup: dressersecondloot
-      - id: ClothingHeadHatXmasCrown
-        prob: 0.02
-        orGroup: dresserthirdloot
-      - id: ClothingMaskNeckGaiter
-        prob: 0.02
-        orGroup: dressersecondloot
-      - id: ClothingHeadHatBeretBrigmedic
-        prob: 0.02
-        orGroup: dresserthirdloot
-      - id: ClothingMaskGas
-        prob: 0.008
-        orGroup: dressersecondloot
-      - id: CablecuffsBroken
-        prob: 0.008
-        orGroup: dressersecondloot
-      - id: ClothingOuterVestHazard
-        prob: 0.008
-        orGroup: dressersecondloot
-      - id: ClothingHandsGlovesLatex
-        prob: 0.008
-        orGroup: dressermainloot
-      - id: ClothingHandsGlovesColorWhite
-        prob: 0.008
-        orGroup: dressermainloot
-      - id: ClothingHandsGlovesBoxingYellow
-        prob: 0.008
-        orGroup: dressermainloot
-      - id: ClothingOuterGhostSheet
-        prob: 0.008
-        orGroup: dressersecondloot
-      - id: ClothingUniformJumpskirtJanimaid
-        prob: 0.005
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpskirtJanimaidmini
-        prob: 0.005
-        orGroup: dressermainloot
-      - id: ClothingNeckScarfStripedSyndieRed
-        prob: 0.005
-        orGroup: dressermainloot
-      - id: ClothingOuterCoatJensen
-        prob: 0.005
-        orGroup: dressersecondloot
-      - id: ClothingMaskMuzzle
-        prob: 0.003
-        orGroup: dressersecondloot
-      - id: ClothingHandsGlovesColorYellowBudget
-        prob: 0.002
-        orGroup: dressermainloot
-      - id: ClothingHeadPyjamaSyndicatePink
-        prob: 0.002
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitPyjamaSyndicatePink
-        prob: 0.002
-        orGroup: dressermainloot
-      - id: ClothingHeadHatTacticalMaidHeadband
-        prob: 0.001
-        orGroup: dresserthirdloot
-      - id: FoodTinMRE
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodCornTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodTinPeachesMaintTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: PaperRolling1
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodTinPeachesTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodFrozenPopsicleTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodPlateTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodFrozenSnowconeTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodTinBeansTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodTinMRETrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: TrashBananaPeel
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodPlateSmallTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodBowlBigTrash
-        prob: 0.010
-        orGroup: dressermainloot
-      - id: FoodTinMRE
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodCornTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodTinPeachesMaintTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: PaperRolling1
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodTinPeachesTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodFrozenPopsicleTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodPlateTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodFrozenSnowconeTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodTinBeansTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodTinMRETrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: TrashBananaPeel
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodPlateSmallTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodBowlBigTrash
-        prob: 0.010
-        orGroup: dressersecondloot
-      - id: FoodTinMRE
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodCornTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodTinPeachesMaintTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: PaperRolling1
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodTinPeachesTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodFrozenPopsicleTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodPlateTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodFrozenSnowconeTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodTinBeansTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodTinMRETrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: TrashBananaPeel
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodPlateSmallTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: FoodBowlBigTrash
-        prob: 0.010
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpskirtTacticalMaid
-        prob: 0.001
-        orGroup: dressermainloot
-      - id: ClothingUniformJumpsuitNanotrasen
-        prob: 0.001
-        orGroup: dressermainloot
-      - id: Shiv
-        prob: 0.001
-        orGroup: dressersecondloot
-      - id: BikeHorn
-        prob: 0.001
-        orGroup: dressersecondloot
-      - id: DrinkWaterBottleFull
-        prob: 0.001
-        orGroup: dressersecondloot
-      - id: BrokenBottle
-        prob: 0.001
-        orGroup: dressersecondloot
-      - id: FoodMeatRotten
-        prob: 0.001
-        orGroup: dressersecondloot
-      - id: ClothingOuterSkub
-        prob: 0.0008
-        orGroup: dressersecondloot
-      - id: ClothingNeckCloakMoth
-        prob: 0.0003
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitPrisoner
-        prob: 0.0003
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpskirtPrisoner
-        prob: 0.0003
-        orGroup: dresserthirdloot
-      - id: ClothingOuterWinterCentcom
-        prob: 0.0001
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpskirtOfLife
-        prob: 0.0001
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpsuitSyndieFormal
-        prob: 0.0001
-        orGroup: dresserthirdloot
-      - id: ClothingUniformJumpskirtSyndieFormalDress
-        prob: 0.0001
-        orGroup: dresserthirdloot
-      - id: ClothingOuterWinterSyndie
-        prob: 0.0001
-        orGroup: dresserthirdloot
-      - id: ClothingHeadHatRichard
-        prob: 0.0001
-        orGroup: dresserthirdloot
-      - id: ClothingOuterDogi
-        prob: 0.00001
-        orGroup: dressersecondloot
-      - id: HeadHuman
-        prob: 0.00001
-        orGroup: dressersecondloot
-      - id: OrganHumanKidneys
-        prob: 0.00001
-        orGroup: dressersecondloot
+  - type: EntityTableContainerFill #TODO: make these tables in any way consistent
+    containers:
+      storagebase: !type:AllSelector
+        children:
+        - !type:NestedSelector
+          tableId: DresserMainLootEntityTable
+        - !type:NestedSelector
+          tableId: DresserSecondLootEntityTable
+        - !type:NestedSelector
+          tableId: DresserThirdLootEntityTable
+
+- type: entityTable
+  id: DresserMainLootEntityTable
+  table: !type:GroupSelector
+    children:
+    - id: ClothingNeckLGBTPin
+      weight: 0.06
+    - id: ClothingUniformJumpsuitColorGrey
+      weight: 0.06
+    - id: ClothingUniformJumpskirtColorGrey
+      weight: 0.06
+    - id: ClothingUniformJumpsuitColorWhite
+      weight: 0.05
+    - id: ClothingUniformJumpsuitColorPink
+      weight: 0.05
+    - id: ClothingUniformJumpsuitLoungewear
+      weight: 0.05
+    - id: ClothingUniformJumpskirtBlackElegantDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtRedElegantDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtGreenElegantDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtBlueElegantDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtPurpleElegantDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtCyanStripedDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtRedStripedDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtGreenStripedDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtPinkStripedDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtOrangeStripedDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtPurpleTurtleneckDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtRedTurtleneckDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtGreenTurtleneckDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtBlueTurtleneckDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtYellowTurtleneckDress
+      weight: 0.05
+    - id: ClothingUniformJumpskirtYellowOldDress
+      weight: 0.05
+    - id: ClothingUniformJumpsuitColorBlue
+      weight: 0.03
+    - id: ClothingUniformJumpsuitColorYellow
+      weight: 0.03
+    - id: ClothingUniformJumpskirtColorYellow
+      weight: 0.03
+    - id: ClothingUniformJumpsuitColorGreen
+      weight: 0.03
+    - id: ClothingUniformJumpskirtColorOrange
+      weight: 0.03
+    - id: ClothingUniformJumpsuitColorRed
+      weight: 0.03
+    - id: ClothingUniformJumpskirtColorRed
+      weight: 0.03
+    - id: ClothingUniformJumpsuitColorPurple
+      weight: 0.03
+    - id: ClothingUniformJumpskirtColorPurple
+      weight: 0.03
+    - id: ClothingUniformJumpsuitColorDarkBlue
+      weight: 0.03
+    - id: ClothingUniformJumpskirtColorDarkBlue
+      weight: 0.03
+    - id: ClothingShoesColorBlack
+      weight: 0.03
+    - id: ClothingNeckScarfStripedRed
+      weight: 0.03
+    - id: ClothingNeckScarfStripedBlue
+      weight: 0.03
+    - id: ClothingNeckScarfStripedGreen
+      weight: 0.03
+    - id: BedsheetGrey
+      weight: 0.03
+    - id: ClothingUniformJumpsuitHawaiBlue
+      weight: 0.03
+    - id: ClothingUnderSocksCoder
+      weight: 0.03
+    - id: ClothingShoesWizard
+      weight: 0.03
+    - id: ClothingShoesBootsWork
+      weight: 0.03
+    - id: ClothingHandsGlovesLatex
+      weight: 0.008
+    - id: ClothingHandsGlovesColorWhite
+      weight: 0.008
+    - id: ClothingHandsGlovesBoxingYellow
+      weight: 0.008
+    - id: ClothingUniformJumpskirtJanimaid
+      weight: 0.005
+    - id: ClothingUniformJumpskirtJanimaidmini
+      weight: 0.005
+    - id: ClothingNeckScarfStripedSyndieRed
+      weight: 0.005
+    - id: ClothingHandsGlovesColorYellowBudget
+      weight: 0.002
+    - id: ClothingUniformJumpsuitPyjamaSyndicatePink
+      weight: 0.002
+    - id: FoodTinMRE
+      weight: 0.010
+    - id: FoodCornTrash
+      weight: 0.010
+    - id: FoodTinPeachesMaintTrash
+      weight: 0.010
+    - id: PaperRolling1
+      weight: 0.010
+    - id: FoodTinPeachesTrash
+      weight: 0.010
+    - id: FoodFrozenPopsicleTrash
+      weight: 0.010
+    - id: FoodPlateTrash
+      weight: 0.010
+    - id: FoodFrozenSnowconeTrash
+      weight: 0.010
+    - id: FoodTinBeansTrash
+      weight: 0.010
+    - id: FoodTinMRETrash
+      weight: 0.010
+    - id: TrashBananaPeel
+      weight: 0.010
+    - id: FoodPlateSmallTrash
+      weight: 0.010
+    - id: FoodBowlBigTrash
+      weight: 0.010
+    - id: ClothingUniformJumpskirtTacticalMaid
+      weight: 0.001
+    - id: ClothingUniformJumpsuitNanotrasen
+      weight: 0.001
+
+- type: entityTable
+  id: DresserSecondLootEntityTable
+  table: !type:GroupSelector
+    children:
+    - id: Pen # It`s pen.
+      weight: 0.03
+    - id: ClothingOuterHoodieBlack
+      weight: 0.03
+    - id: ClothingOuterWinterClown
+      weight: 0.03
+    - id: ClothingOuterCoatBomber
+      weight: 0.03
+    - id: ClothingEyesEyepatch
+      weight: 0.03
+    - id: ClothingMaskBreath
+      weight: 0.03
+    - id: ClothingOuterCoatLab
+      weight: 0.03
+    - id: ClothingOuterDameDane
+      weight: 0.03
+    - id: ClothingOuterWinterCoat
+      weight: 0.03
+    - id: ClothingMaskFox
+      weight: 0.03
+    - id: ClothingEyesGlassesGar
+      weight: 0.03
+    - id: ClothingOuterCoatGentle
+      weight: 0.03
+    - id: ClothingOuterSuitShrineMaiden
+      weight: 0.03
+    - id: ClothingOuterClownPriest
+      weight: 0.02
+    - id: ClothingMaskNeckGaiter
+      weight: 0.02
+    - id: ClothingMaskGas
+      weight: 0.008
+    - id: CablecuffsBroken
+      weight: 0.008
+    - id: ClothingOuterVestHazard
+      weight: 0.008
+    - id: ClothingOuterGhostSheet
+      weight: 0.008
+    - id: ClothingOuterCoatJensen
+      weight: 0.005
+    - id: ClothingMaskMuzzle
+      weight: 0.003
+    - id: FoodTinMRE
+      weight: 0.010
+    - id: FoodCornTrash
+      weight: 0.010
+    - id: FoodTinPeachesMaintTrash
+      weight: 0.010
+    - id: PaperRolling1
+      weight: 0.010
+    - id: FoodTinPeachesTrash
+      weight: 0.010
+    - id: FoodFrozenPopsicleTrash
+      weight: 0.010
+    - id: FoodPlateTrash
+      weight: 0.010
+    - id: FoodFrozenSnowconeTrash
+      weight: 0.010
+    - id: FoodTinBeansTrash
+      weight: 0.010
+    - id: FoodTinMRETrash
+      weight: 0.010
+    - id: TrashBananaPeel
+      weight: 0.010
+    - id: FoodPlateSmallTrash
+      weight: 0.010
+    - id: FoodBowlBigTrash
+      weight: 0.010
+    - id: Shiv
+      weight: 0.001
+    - id: BikeHorn
+      weight: 0.001
+    - id: DrinkWaterBottleFull
+      weight: 0.001
+    - id: BrokenBottle
+      weight: 0.001
+    - id: FoodMeatRotten
+      weight: 0.001
+    - id: ClothingOuterSkub
+      weight: 0.0008
+    - id: ClothingOuterDogi
+      weight: 0.00001
+    - id: HeadHuman
+      weight: 0.00001
+    - id: OrganHumanKidneys
+      weight: 0.00001
+
+- type: entityTable
+  id: DresserThirdLootEntityTable
+  table: !type:GroupSelector
+    children:
+    - id: ClothingUniformJumpskirtColorWhite
+      weight: 0.05
+    - id: ClothingUniformJumpskirtColorPink
+      weight: 0.05
+    - id: ClothingUniformJumpskirtColorBlue
+      weight: 0.03
+    - id: ClothingUniformJumpskirtColorGreen
+      weight: 0.03
+    - id: ClothingUniformJumpsuitColorOrange
+      weight: 0.03
+    - id: ClothingUniformJumpsuitColorTeal
+      weight: 0.03
+    - id: ClothingUniformJumpskirtColorTeal
+      weight: 0.03
+    - id: ClothingHeadHatGreysoft
+      weight: 0.03
+    - id: ClothingHeadHatCorpsoft
+      weight: 0.03
+    - id: ClothingHeadHatBunny
+      weight: 0.03
+    - id: BedsheetNT
+      weight: 0.03
+    - id: ClothingHeadHatPaper
+      weight: 0.03
+    - id: ClothingHeadHatWitch
+      weight: 0.03
+    - id: ClothingHeadHatFedoraGrey
+      weight: 0.03
+    - id: ClothingHeadHatAnimalHeadslime
+      weight: 0.03
+    - id: ClothingMultipleHeadphones
+      weight: 0.03
+    - id: ClothingUnderSocksBee
+      weight: 0.03
+    - id: ClothingHeadHatAnimalMonkey
+      weight: 0.03
+    - id: ClothingHeadHatShrineMaidenWig
+      weight: 0.03
+    - id: ClothingOuterPoncho
+      weight: 0.03
+    - id: ClothingHeadHatBeret
+      weight: 0.03
+    - id: PlushieLizard
+      weight: 0.03
+    - id: ClothingHeadHatXmasCrown
+      weight: 0.02
+    - id: ClothingHeadHatBeretBrigmedic
+      weight: 0.02
+    - id: ClothingHeadPyjamaSyndicatePink
+      weight: 0.002
+    - id: ClothingHeadHatTacticalMaidHeadband
+      weight: 0.001
+    - id: FoodTinMRE
+      weight: 0.010
+    - id: FoodCornTrash
+      weight: 0.010
+    - id: FoodTinPeachesMaintTrash
+      weight: 0.010
+    - id: PaperRolling1
+      weight: 0.010
+    - id: FoodTinPeachesTrash
+      weight: 0.010
+    - id: FoodFrozenPopsicleTrash
+      weight: 0.010
+    - id: FoodPlateTrash
+      weight: 0.010
+    - id: FoodFrozenSnowconeTrash
+      weight: 0.010
+    - id: FoodTinBeansTrash
+      weight: 0.010
+    - id: FoodTinMRETrash
+      weight: 0.010
+    - id: TrashBananaPeel
+      weight: 0.010
+    - id: FoodPlateSmallTrash
+      weight: 0.010
+    - id: FoodBowlBigTrash
+      weight: 0.010
+    - id: ClothingNeckCloakMoth
+      weight: 0.0003
+    - id: ClothingUniformJumpsuitPrisoner
+      weight: 0.0003
+    - id: ClothingUniformJumpskirtPrisoner
+      weight: 0.0003
+    - id: ClothingOuterWinterCentcom
+      weight: 0.0001
+    - id: ClothingUniformJumpskirtOfLife
+      weight: 0.0001
+    - id: ClothingUniformJumpsuitSyndieFormal
+      weight: 0.0001
+    - id: ClothingUniformJumpskirtSyndieFormalDress
+      weight: 0.0001
+    - id: ClothingOuterWinterSyndie
+      weight: 0.0001
+    - id: ClothingHeadHatRichard
+      weight: 0.0001