]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Toys entity tables (#41840)
authorāda <ss.adasts@gmail.com>
Sun, 14 Dec 2025 20:39:25 +0000 (14:39 -0600)
committerGitHub <noreply@github.com>
Sun, 14 Dec 2025 20:39:25 +0000 (20:39 +0000)
* ai talks

* kill cheepo

* mech figures

* finished

* touchup

* wider net

* final changes

* never final

* fix test fail

* commit

* self review

* self review 2

* buff

* nerf

* microbalance continues until i'm happy

* requested and more

* toys.yml is scary

* pace yourself, hun

* finished tables

* update related tables

* finish tables

* spawners

* new item

* other tables and cargo crate

* move board games

* commit

* last changes

* last last changes

* bounty changes

* remove pies :o(

* readjust prices

* requested microbalance

* friends for life

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
16 files changed:
Resources/Locale/en-US/cargo/bounties.ftl
Resources/Prototypes/Catalog/Bounties/bounties.yml
Resources/Prototypes/Catalog/Fills/Boxes/general.yml
Resources/Prototypes/Catalog/Fills/Crates/cargo.yml
Resources/Prototypes/Catalog/Fills/Crates/fun.yml
Resources/Prototypes/Catalog/Fills/Crates/service.yml
Resources/Prototypes/Entities/Clothing/Back/smuggler.yml
Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml
Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml
Resources/Prototypes/Entities/Markers/Spawners/Random/toy_tabletop.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml
Resources/Prototypes/Entities/Objects/Fun/pai.yml
Resources/Prototypes/Entities/Objects/Fun/toys.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml
Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml

index 694f26249a979308fb4512223efb17c152b1beeb..636d8865c72dec53daf5299b80e5f2a70b35eb43 100644 (file)
@@ -132,7 +132,7 @@ bounty-description-food = After the rat king invasion, a neighboring Unathi stat
 bounty-description-fruit = A heroic monkey helped the chaplain catch a troublemaker hiding in the chapel, and the crew wants to reward him for his good work.
 bounty-description-vegetable = The new chef is a vegetarian, and botany can't keep up with their demands. We need some additional veggies to help keep things stocked.
 bounty-description-chili = Today's the CentComm Chili Cookoff, and, well, a few of us forgot to make some. Please help cover for us.
-bounty-description-rollerskates = CentComm Security is proposing a new strategy for helping officers win foot pursuits. Send them a couple so they can learn how bad an idea this is.
+bounty-description-rollerskates = CentComm Security is proposing a new strategy for helping officers win foot pursuits. Send them a pair so they can learn how bad an idea this is.
 bounty-description-bedsheet = Someone in Atmos keeps turning down the heater, and we're all shivering in our beds. Please send us some extra sheets to stay warm.
 bounty-description-bandana =  Bzzzt... Transmission from prison planet OC-1001: We're... reorganizing our command structure. Send us some bandanas so we can tell gan- I mean, departments apart.
 bounty-description-steak = The vegetarian cook is refusing to make us anything with meat, and the lizards are getting restless. Can you smuggle us a few steaks to keep them happy?
index a7514c7fd02ef9acd1899a1fdbdade9e886d0a11..a22efa776f947adc07c5cf1513320433669d90a6 100644 (file)
 
 - type: cargoBounty
   id: BountyRollerskates
-  reward: 6500
+  reward: 1400
   description: bounty-description-rollerskates
   entries:
   - name: bounty-item-rollerskates
-    amount: 2
     whitelist:
       components:
       - Skates
index b8aa2600c5b9a2e0be84c45a88d2dd534e968b69..4618fb66530c883312640f7c68b138702464c643 100644 (file)
           amount: 4
 
 - type: entity
-  name: darts box
   parent: BoxCardboard
   id: BoxDarts
+  name: darts box
   description: A box filled with colorful darts.
   components:
+  - type: Item
+    size: Normal
+    shape:
+    - 0,0,1,1
+  - type: Storage
+    maxItemSize: Tiny
   - type: Sprite
     layers:
       - state: box
index b3f0325529f487d6cd7d58e514166e66f8a68bdc..4a7edeb041a2c5e0994dec610e68682fbc2fc814 100644 (file)
     - id: WeaponShotgunHandmade
     - id: WeaponFlareGun
     - id: Bola
-    - id: ToySword
     - id: Shovel
-    - id: WeaponWaterPistol
-    - id: WeaponWaterBlaster
     - id: WeaponTurretXeno
-    - id: WeaponRifleFoam
-      weight: 3
+    - !type:NestedSelector
+      tableId: AllToyWeaponsTable
 
 - type: entityTable
   id: LotteryClothingEntityTable
index c9bb5f8fc7b87a289b1da703122efd560eaa29c3..35d94accab1742fa965fe678cbe2b1f2267016a0 100644 (file)
@@ -1,116 +1,3 @@
-- type: entityTable
-  id: AllPlushiesTable
-  table: !type:GroupSelector
-    children:
-    - !type:NestedSelector
-      tableId: AllLizardPlushieTable
-    - id: PlushieNuke
-    - id: PlushieSlime
-    - id: PlushieSnake
-    - id: PlushieExperiment
-    - id: PlushieVox
-    - id: PlushieRouny
-    - id: PlushieAtmosian
-    - id: PlushieDiona
-    - id: PlushieXeno
-    - id: PlushieHampter
-    - id: PlushieMoth
-    - id: PlushieArachind
-    - id: PlushiePenguin
-    - id: PlushieVulp
-    - !type:GroupSelector
-      children:
-      - id: PlushieBee
-      - id: PlushieRGBee
-        weight: 0.1
-    - !type:GroupSelector
-      children:
-      - id: PlushieCarp
-      - id: PlushieHolocarp
-        weight: 0.25
-      - id: PlushieMagicarp
-        weight: 0.25
-      - id: PlushieRainbowCarp
-        weight: 0.15
-    - !type:GroupSelector
-      children:
-      - id: PlushieSharkBlue
-      - id: PlushieSharkGrey
-      - id: PlushieSharkPink
-    - !type:GroupSelector # Toy plushies
-      children:
-      - id: ToyIan
-      - id: ToyAmongPequeno
-      - id: ToyMouse
-    - !type:GroupSelector # Giant plushies
-      children:
-      - id: PlushieNar
-      - id: PlushieRatvar
-    - !type:GroupSelector # Rare plushies
-      weight: 0.1 # 1 in >210
-      children:
-      - id: PlushieHuman
-      - id: PlushieGhost
-      - id: PlushieLamp
-    - !type:GroupSelector # Legendary plushies
-      weight: 0.002 # 1 in >10,500
-      children:
-      - id: PlushieThrongler
-      - id: PlushieGhostRevenant # You got the god roll, and failed
-
-- type: entityTable
-  id: AllLizardPlushieTable
-  table: !type:GroupSelector
-    children:
-    - id: PlushieLizard
-      weight: 8
-    - id: PlushieSpaceLizard
-      weight: 1
-    - id: PlushieLizardInversed
-      weight: 0.1 # 1 in >100
-    - !type:GroupSelector # Lizard gets a job table
-      children:
-      - id: PlushieLizardJobAtmospherictechnician
-      - id: PlushieLizardJobBartender
-      - id: PlushieLizardJobBotanist
-      - id: PlushieLizardJobBoxer
-      - id: PlushieLizardJobCaptain
-      - id: PlushieLizardJobCargotechnician
-      - id: PlushieLizardJobChaplain
-      - id: PlushieLizardJobChef
-      - id: PlushieLizardJobChemist
-      - id: PlushieLizardJobChiefengineer
-      - id: PlushieLizardJobChiefmedicalofficer
-      - id: PlushieLizardJobClown # :o)
-      - id: PlushieLizardJobDetective
-      - id: PlushieLizardJobHeadofpersonnel
-      - id: PlushieLizardJobHeadofsecurity
-      - id: PlushieLizardJobJanitor
-      - id: PlushieLizardJobLawyer
-      - id: PlushieLizardJobLibrarian
-      - id: PlushieLizardJobMedicaldoctor
-      - id: PlushieLizardJobMedicalintern
-      - id: PlushieLizardJobMime #
-      - id: PlushieLizardJobMusician
-      - id: PlushieLizardJobParamedic
-      - id: PlushieLizardJobPassenger
-      - id: PlushieLizardJobPsychologist
-      - id: PlushieLizardJobQuartermaster
-      - id: PlushieLizardJobReporter
-      - id: PlushieLizardJobResearchassistant
-      - id: PlushieLizardJobResearchdirector
-      - id: PlushieLizardJobSalvagespecialist
-      - id: PlushieLizardJobScientist
-      - id: PlushieLizardJobSecuritycadet
-      - id: PlushieLizardJobSecurityofficer
-      - id: PlushieLizardJobServiceworker
-      - id: PlushieLizardJobStationengineer
-      - id: PlushieLizardJobTechnicalassistant
-      - id: PlushieLizardJobZookeeper
-      - id: PlushieLizardJobMultiweh
-        weight: 0.5 # 1 in >800
-
-
 - type: entityTable
   id: AllPottedPlantsTable
   table: !type:GroupSelector
   parent: CratePlastic
   id: CrateFunFoamGuns
   name: Foam Force crate
-  description: Contains four Foam Force rifles, some grenades, and extra ammo. It's [REDACTED] or nothing!
+  description: Contains four Foam Force Battle Kits™. It's [REDACTED] or nothing!
   components:
   - type: EntityTableContainerFill
     containers:
       entity_storage: !type:AllSelector
         children:
-        - id: WeaponRifleFoam
-          amount: 4
-        - id: BoxDonkSoftBox
-          amount: 2
+        - !type:NestedSelector
+          tableId: RandomFoamGunTable
+          rolls: 4
         - id: GrenadeFoamDart
           amount: 4
 
     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:NestedSelector
+          tableId: AllToyWeaponsTable
+          rolls: 2
+        - !type:NestedSelector
+          tableId: AllToySoundMakerTable
+          rolls: 2
+        - !type:NestedSelector
+          tableId: AllMiscToysTable
+          rolls: 2
+        - !type:NestedSelector # Extras rolls for extra variety
+          tableId: AllToysTable
+          rolls: 2
 
 - type: entity
   parent: CrateGenericSteel
index 961f09bcd2345413a37ea1a43da3b6c6e1d4680e..9d53c1e2b4e57a7173a05ddb0f7d8c8fd8540e01 100644 (file)
     containers:
       entity_storage: !type:AllSelector
         children:
-        - id: ClothingUniformJumpskirtPerformer
-        - id: ClothingShoesBootsPerformer
-        - id: ClothingHeadPerformerWig
+        - id: BarberScissors
         - 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
+        - id: ClothingHeadHatMagician
+        - !type:AllSelector # Cloaks
+          children:
+          - id: ClothingNeckCloakMoth
+          - id: ClothingNeckCloakVoid
+        - !type:AllSelector # Clown starter kit
+          children:
+          - id: ClothingMaskClown
+          - id: ClownRecorder
+          - !type:GroupSelector
+            children:
+            - id: ClothingShoesClown
+            - id: ClothingShoesClownLarge
+              weight: 0.1
+          - !type:NestedSelector
+            tableId: RandomBikeHornTable
+        - !type:AllSelector # Mime starter kit
+          children:
+          - id: ClothingMaskMime
+          - id: ClothingBeltSuspendersRed
+          - id: ClothingBeltSuspendersBlack
+        - !type:AllSelector # Performer starter kit
+          children:
+          - id: ClothingUniformJumpskirtPerformer
+          - id: ClothingShoesBootsPerformer
+          - id: ClothingHeadPerformerWig
 
 - type: entity
   parent: CrateGenericSteel
index 3a4495f8959c3f194bc0cad79ad34ba6537a4855..8545dab9a6857a3cd5d5c6c8d246b27e8e10e958 100644 (file)
   components:
   - type: EntityTableContainerFill
     containers:
-      storagebase: !type:AllSelector
-        children:
-        - id: SpeedLoaderCap
-          amount: !type:RangeNumberSelector
-            range: 4, 8
-        - !type:GroupSelector
-          children:
-          - id: RevolverCapGun
-            amount: !type:RangeNumberSelector
-              range: 4, 6
-            weight: 95
-          - id: RevolverCapGunFake
-            amount: !type:RangeNumberSelector
-              range: 1, 6
-            weight: 5
+      storagebase: !type:NestedSelector
+        tableId: RandomCapGunTable
+        rolls: 4, 7
 
 - type: entity
   parent: ClothingBackpackSatchelSmuggler
index 09378f25cd0ea32dd71f2483e6e7ab4afd34a3da..f89ff9a4330ac3c92e8230dffc56e7f0e97816a0 100644 (file)
@@ -6,6 +6,9 @@
     - !type:GroupSelector
       weight: 75
       children:
+      - !type:NestedSelector
+        weight: 5 # Roughly 7% chance
+        tableId: AllToysTable
       # Smoker's specialty
       - !type:AllSelector
         children:
         - id: ClothingNeckCloakEnby
         - id: ClothingNeckCloakPan
       - id: ToyFigurineSkeleton
-      - id: Basketball
-      - id: Football
-      - id: TennisBall
-      - id: BalloonNT
-      - id: BalloonCorgi
       - id: MysteryFigureBox
-      - id: RubberChicken
       # Cult
       - !type:AllSelector
         children:
     - !type:GroupSelector
       weight: 2
       children:
-      - id: Skub
-      - id: PonderingOrb
-      - id: CluwneHorn
-      - id: ClothingShoesSkates
       - id: DrinkMugDog
       - id: CigarGold
       - id: ClothingUniformJumpsuitFamilyGuy
       - id: WristwatchGold
       - id: RubberStampGreytide
       - id: MysteryLighterBox
-      - id: GoldenPersonalAI
 
 - type: entity
   name: Maint Loot Spawner
       - id: SawImprov
       - id: HydroponicsToolMiniHoe
       - id: ClothingHandsKnuckleDusters
+      - !type:NestedSelector
+        tableId: AllToyWeaponsTable
 
 - type: entity
   name: Maint Loot Spawner
index a8128e0f5a1fd9619142166bb5ffdd61da2ba4c8..c7ef7f4a07170728374656bf4494bfa94e2869be 100644 (file)
@@ -1,4 +1,139 @@
-- type: entityTable # Max size 1x2
+# Items in this table are generally useless. They don't help in most situations and aren't interesting to serious people.
+# If you're wondering if an entity should go in this table, ask your inner child / local clown.
+- type: entityTable # size 2x4 or 3x3  # price 100
+  id: AllToysTable
+  table: !type:GroupSelector
+    children:
+    - !type:GroupSelector # Boring toys (subjective) :o)
+      weight: 0.5 # 1 in 7
+      children:
+      - !type:NestedSelector
+        tableId: AllPlushiesTable
+      - !type:NestedSelector
+        tableId: AllFigurinesTable
+    - !type:NestedSelector
+      tableId: AllToyWeaponsTable
+    - !type:NestedSelector
+      tableId: AllMiscToysTable
+    - !type:NestedSelector
+      tableId: AllToySoundMakerTable
+
+# Soft friends to play with, cut open with a knife, and throw away when you need space
+- type: entityTable # size ginormous  # price 5
+  id: AllPlushiesTable
+  table: !type:GroupSelector
+    children:
+    - !type:NestedSelector
+      tableId: AllLizardPlushieTable
+    - id: PlushieNuke
+    - id: PlushieSlime
+    - id: PlushieSnake
+    - id: PlushieExperiment
+    - id: PlushieVox
+    - id: PlushieRouny
+    - id: PlushieAtmosian
+    - id: PlushieDiona
+    - id: PlushieXeno
+    - id: PlushieHampter
+    - id: PlushieMoth
+    - id: PlushieArachind
+    - id: PlushiePenguin
+    - id: PlushieVulp
+    - !type:GroupSelector
+      children:
+      - id: PlushieBee
+      - id: PlushieRGBee
+        weight: 0.1
+    - !type:GroupSelector
+      children:
+      - id: PlushieCarp
+      - id: PlushieHolocarp
+        weight: 0.25
+      - id: PlushieMagicarp
+        weight: 0.25
+      - id: PlushieRainbowCarp
+        weight: 0.15
+    - !type:GroupSelector
+      children:
+      - id: PlushieSharkBlue
+      - id: PlushieSharkGrey
+      - id: PlushieSharkPink
+    - !type:GroupSelector # Toy plushies
+      children:
+      - id: ToyIan
+      - id: ToyAmongPequeno
+      - id: ToyMouse
+    - !type:GroupSelector # Giant plushies
+      children:
+      - id: PlushieNar
+      - id: PlushieRatvar
+    - !type:GroupSelector # Rare plushies
+      weight: 0.1 # 1 in >210
+      children:
+      - id: PlushieHuman
+      - id: PlushieGhost
+      - id: PlushieLamp
+    - !type:GroupSelector # Legendary plushies
+      weight: 0.002 # 1 in >10,500
+      children:
+      - id: PlushieThrongler
+      - id: PlushieGhostRevenant # You got the god roll, and failed
+
+# Weh!
+- type: entityTable
+  id: AllLizardPlushieTable
+  table: !type:GroupSelector
+    children:
+    - id: PlushieLizard
+      weight: 8
+    - id: PlushieSpaceLizard
+      weight: 1
+    - id: PlushieLizardInversed
+      weight: 0.1 # 1 in >100
+    - !type:GroupSelector # Lizard gets a job table
+      children:
+      - id: PlushieLizardJobAtmospherictechnician
+      - id: PlushieLizardJobBartender
+      - id: PlushieLizardJobBotanist
+      - id: PlushieLizardJobBoxer
+      - id: PlushieLizardJobCaptain
+      - id: PlushieLizardJobCargotechnician
+      - id: PlushieLizardJobChaplain
+      - id: PlushieLizardJobChef
+      - id: PlushieLizardJobChemist
+      - id: PlushieLizardJobChiefengineer
+      - id: PlushieLizardJobChiefmedicalofficer
+      - id: PlushieLizardJobClown # :o)
+      - id: PlushieLizardJobDetective
+      - id: PlushieLizardJobHeadofpersonnel
+      - id: PlushieLizardJobHeadofsecurity
+      - id: PlushieLizardJobJanitor
+      - id: PlushieLizardJobLawyer
+      - id: PlushieLizardJobLibrarian
+      - id: PlushieLizardJobMedicaldoctor
+      - id: PlushieLizardJobMedicalintern
+      - id: PlushieLizardJobMime #
+      - id: PlushieLizardJobMusician
+      - id: PlushieLizardJobParamedic
+      - id: PlushieLizardJobPassenger
+      - id: PlushieLizardJobPsychologist
+      - id: PlushieLizardJobQuartermaster
+      - id: PlushieLizardJobReporter
+      - id: PlushieLizardJobResearchassistant
+      - id: PlushieLizardJobResearchdirector
+      - id: PlushieLizardJobSalvagespecialist
+      - id: PlushieLizardJobScientist
+      - id: PlushieLizardJobSecuritycadet
+      - id: PlushieLizardJobSecurityofficer
+      - id: PlushieLizardJobServiceworker
+      - id: PlushieLizardJobStationengineer
+      - id: PlushieLizardJobTechnicalassistant
+      - id: PlushieLizardJobZookeeper
+      - id: PlushieLizardJobMultiweh
+        weight: 0.5 # 1 in >800
+
+# Figurines representing all your favorite coworkers
+- type: entityTable # size 1x2  # price 75
   id: AllFigurinesTable
   table: !type:GroupSelector
     children:
     - !type:NestedSelector
       tableId: AllFigurineMechsTable
 
-- type: entityTable # Max size 1x2
+# Figurines representing the hopes and dreams of the robotics department
+- type: entityTable # size 1x2  # price 75
   id: AllFigurineMechsTable
   table: !type:GroupSelector
     children:
     - id: ToyPhazon
     - id: ToyReticence
 
+# Items that are used to "attack" people. Legitimate combat use for these is limited
+- type: entityTable # size 2x4  # price 100
+  id: AllToyWeaponsTable
+  table: !type:GroupSelector
+    children:
+    - !type:GroupSelector # Swords type group
+      children:
+      - id: ToyHammer
+      - id: ToySword
+      - id: FoamBlade
+      - id: FoamCutlass
+      - id: CardSword
+    - !type:GroupSelector # Throwing type group
+      rolls: 2 # Expendables need restocks
+      children:
+      - id: SnapPopBox
+      - id: BoxDarts
+      - id: GrenadeFoamDart
+      - !type:GroupSelector # REAL fake grenades
+        weight: 0.05 # 2 in 186. Rare in order to not spoil the surprise
+        children:
+        - id: GrenadeDummy
+        - id: SyndieTrickyBomb
+    - !type:GroupSelector # Guns type group
+      children:
+      - id: WeaponStickyHand
+      - !type:GroupSelector # Water subgroup
+        children:
+        - id: WeaponWaterBlaster
+        - id: WeaponWaterPistol
+      - !type:NestedSelector
+        tableId: RandomFoamGunTable
+      - !type:NestedSelector
+        tableId: RandomCapGunTable
+
+- type: entityTable # price 100
+  id: RandomFoamGunTable
+  table: !type:AllSelector # Need to spawn with ammo
+    children:
+    - !type:GroupSelector
+      children:
+      - id: FoamCrossbow
+      - id: WeaponRifleFoam
+    - id: BoxDonkSoftBox
+
+- type: entityTable
+  id: RandomCapGunTable
+  table: !type:AllSelector
+    children:
+    - !type:GroupSelector # real or fake?
+      children:
+      - id: RevolverCapGun
+      - id: RevolverCapGunFake
+        weight: 0.01 # 1 in 101
+    - !type:GroupSelector # ready for reload
+      prob: 0.9
+      children:
+      - id: SpeedLoaderCap
+      - id: BoxCartridgeCap
+
+# A group of items with fun or unique properties. Highly varied (some are more fun than others)
+- type: entityTable # size 3x3  # price 100
+  id: AllMiscToysTable
+  table: !type:GroupSelector
+    children:
+    - !type:NestedSelector
+      tableId: AllCrayonsTable
+    - id: CrayonBox
+    - id: PlasticBanana
+    - id: NukeDiskFake
+    - id: DiceBag
+    - id: SpectralLocator
+    - id: BarberScissors
+    - id: SprayFlowerPin
+    - id: ClothingShoesSkates
+    - id: CrazyGlue
+    - id: CrazyLube
+    - !type:NestedSelector
+      tableId: AllBoardGamesTable
+    - !type:GroupSelector # Where there's Chips there's Dips
+      children:
+      - id: MrChips
+      - id: MrDips
+    - !type:GroupSelector # Ballons
+      children:
+      - id: BalloonNT
+        weight: 5 # NT bias
+      - id: BalloonCorgi
+      - id: BalloonSyn
+    - !type:GroupSelector # Sports ball
+      children:
+      - id: Basketball
+      - id: Football
+      - id: BeachBall
+      - id: TennisBall
+        amount: 2
+    - !type:GroupSelector # PAIs are basically toys
+      children:
+      - id: PersonalAI
+        weight: 8
+      - id: PotatoAI
+      - id: GoldenPersonalAI
+        weight: 0.1 # 1 in 1,456. A truly rare item
+    - !type:GroupSelector # Orbs of "power"
+      weight: 0.05 # 1 in 320
+      children:
+      - id: SingularityToy
+      - id: TeslaToy
+      - id: PonderingOrb
+
+# Entities that don't do much more than make a unique sound. Plushies excluded.
+- type: entityTable # size 1x2  # price 100
+  id: AllToySoundMakerTable
+  table: !type:GroupSelector
+    children:
+    - id: ToyRubberDuck
+    - id: RubberChicken
+    - id: ClownRecorder
+    - id: WhoopieCushion
+    - id: NewtonCradle
+    - id: Skub
+    - id: DeskBell
+    - id: BikeHornImplanter
+    - id: SadTromboneImplanter
+    - !type:GroupSelector
+      children:
+      - id: Whistle
+        weight: 5
+      - id: SecurityWhistle
+      - id: SyndicateWhistle
+        weight: 0.5 # 1 in 143
+    - !type:NestedSelector # The original
+      tableId: RandomBikeHornTable
+
+- type: entityTable # size 1x2  # price 100
+  id: RandomBikeHornTable
+  table: !type:GroupSelector
+    children:
+    - id: BikeHorn
+    - !type:GroupSelector # Usually get the normal horn
+      weight: .005 # 1 in 200
+      children:
+      - id: CluwneHorn # you lose, clown >:o)
+      - id: BananiumHorn
+      - id: PushHorn
+      - id: GoldenBikeHorn
+
+- type: entityTable # size 1x1
+  id: AllCrayonsTable
+  table: !type:GroupSelector
+    children:
+    - id: CrayonMime
+    - id: CrayonRainbow
+    - id: CrayonWhite
+    - id: CrayonBlack
+    - id: CrayonRed
+    - id: CrayonOrange
+    - id: CrayonYellow
+    - id: CrayonGreen
+    - id: CrayonBlue
+    - id: CrayonPurple
+
+## Spawners ##
+
+- type: entity
+  parent: MarkerBase
+  id: ToySpawner90
+  name: Toy Spawner
+  suffix: 90
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/bikehorn.rsi
+      state: icon
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      tableId: AllToysTable
+      prob: 0.9
+
 - type: entity
   parent: MarkerBase
   id: PlushieSpawner50
       tableId: AllPlushiesTable
       prob: 0.5
 
+- type: entity
+  parent: MarkerBase
+  id: SpacemenFigurineSpawner90
+  name: Spacemen Minifigure Spawner
+  suffix: 90
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/figurines.rsi
+      state: figurine_spawner
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      tableId: AllFigurinesTable
+      prob: 0.9
+
 - type: entity
   parent: MarkerBase
   id: MechFigurineSpawner50
 
 - type: entity
   parent: MarkerBase
-  id: SpacemenFigurineSpawner90
-  name: Spacemen Minifigure Spawner
-  suffix: 90. Librarian only, map with care!
+  id: ToyWeaponSpawner90
+  name: Toy Weapon Spawner
+  suffix: 90
   components:
   - type: Sprite
     layers:
-    - sprite: Objects/Fun/figurines.rsi
-      state: figurine_spawner
+    - state: red
+    - sprite: Objects/Fun/rubber_hammer.rsi
+      state: icon
   - type: EntityTableSpawner
     table: !type:NestedSelector
-      tableId: AllFigurinesTable
+      tableId: AllToyWeaponsTable
+      prob: 0.9
+
+- type: entity
+  parent: MarkerBase
+  id: CapGunSpawner90
+  name: Cap Gun Spawner
+  suffix: 90
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/capgun.rsi
+      state: base
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      tableId: RandomCapGunTable
+      prob: 0.9
+
+- type: entity
+  parent: MarkerBase
+  id: MiscToySpawner90
+  name: Miscellaneous Toy Spawner
+  suffix: 90
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/Balloons/nanotrasen.rsi
+      state: icon
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      tableId: AllMiscToysTable
+      prob: 0.9
+
+- type: entity
+  parent: MarkerBase
+  id: ToySoundMakerSpawner90
+  name: Toy Sound Maker Spawner
+  suffix: 90
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/rubber_chicken.rsi
+      state: icon
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      tableId: AllToySoundMakerTable
+      prob: 0.9
+
+- type: entity
+  parent: MarkerBase
+  id: CrayonSpawner90
+  name: Crayon Spawner
+  suffix: 90
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/crayons.rsi
+      state: rainbow
+  - type: EntityTableSpawner
+    table: !type:GroupSelector
       prob: 0.9
+      children:
+      - !type:NestedSelector
+        tableId: AllCrayonsTable
+      - id: CrayonBox
+        weight: 0.05 # 1 in 20
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/toy_tabletop.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/toy_tabletop.yml
new file mode 100644 (file)
index 0000000..d0f4723
--- /dev/null
@@ -0,0 +1,52 @@
+- type: entityTable # size 1x2
+  id: AllBoardGamesTable
+  table: !type:GroupSelector
+    children:
+    - id: BackgammonBoard
+    - id: ChessBoard
+    - id: ParchisBoard
+    - id: CheckerBoard
+
+- type: entityTable # size 1x2
+  id: AllBattlemapsTable
+  table: !type:GroupSelector
+    children:
+    - id: GrassBattlemap
+    - id: MoonBattlemap
+    - id: SandBattlemap
+    - id: SnowBattlemap
+    - id: ShipBattlemap
+
+## Spawners ##
+
+- type: entity
+  parent: MarkerBase
+  id: BoardGameSpawner100
+  name: Board Game Spawner
+  suffix: 100
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/Tabletop/chessboard.rsi
+      state: chessboard
+  - type: EntityTableSpawner
+    offset: 0
+    table: !type:NestedSelector
+      tableId: AllBoardGamesTable
+
+- type: entity
+  parent: MarkerBase
+  id: BattleMapSpawner100
+  name: Battle Map Spawner
+  suffix: 100
+  components:
+  - type: Sprite
+    layers:
+    - state: red
+    - sprite: Objects/Fun/Tabletop/Battlemaps/grassbm.rsi
+      state: icon
+  - type: EntityTableSpawner
+    offset: 0
+    table: !type:NestedSelector
+      tableId: AllBattlemapsTable
index e5f68aac8fca517d00cd12ee3527bbda57ddd93c..e7efa14dc42b69f79199e03dd16cde0a3347c1f5 100644 (file)
     slots: [Belt]
   - type: Prayable
   - type: StaticPrice
-    price: 1000
+    price: 100 # reduced price due to heisentests
   - type: PointLight
     radius: 1.2
     energy: 2.2
index ad23694a47570e2bf37a4a4e515897a3937c073a..9967eb3a300ab68d766f7e6f9b884aeca436f068 100644 (file)
       shader: unshaded
       map: ["screen"]
   - type: Appearance
-  - type: StaticPrice
-    price: 5000
 
 - type: entity
   parent: PersonalAI
index 9dc62e0a1e3f48e6830e92b91eef68a31cc9d0c0..52d13d6214b6c0237da8d04e592bc089c07fdb5e 100644 (file)
   - type: Item
     sprite: Objects/Fun/Balloons/syndicate.rsi
   - type: StaticPrice
-    price: 5000 # Entertainment.
+    price: 100 # Entertainment.
 
 - type: entity
   parent: BaseBalloon
index 425bc4da58c675bbf9d50b8e0586fab5c80b6b51..52dbb241494a171fd1cecf9a9cb8bb2b3ca6a2a2 100644 (file)
   name: XL8
   description: |-
     The Experimental Lecter 8
-    An unreasonably expensive military grade assault rifle with integrated optic. 
+    An unreasonably expensive military grade assault rifle with integrated optic.
     Uses .20 rifle ammo.
   components:
   - type: Sprite
     - Burst
     - SemiAuto
     - FullAuto
-  
+
 - type: entity
   name: Estoc DMR
   parent: [BaseWeaponRifle, BaseSyndicateContraband]
       path: /Audio/Weapons/Guns/Empty/empty.ogg
     clumsyProof: true
   - type: PacifismAllowedGun
+  - type: StaticPrice
+    price: 100
index 26520c2fd543c7492e60c89d2b18063a956c67f3..2a197e2685a304140b73f5a1bbf765845aafbab9 100644 (file)
       gas_tank: !type:ContainerSlot
 
 - type: entity
-  name: pie cannon
   parent: BaseStorageItem
   id: LauncherCreamPie
+  name: pie cannon
+  suffix: Empty
   description: Load cream pie for optimal results.
   components:
   - type: Sprite
index 6fb94e1f0aac019bfad3f5fe36cfa17113254165..7cce1d49caf3faaf516d0760afa9a1a7f170374b 100644 (file)
       params:
         volume: 12
   - type: StaticPrice
-    price: 1000
+    price: 50