All Figurines Entity Table (#41775)

* ai talks

* kill cheepo

* mech figures

* finished

* touchup

* wider net

* final changes

* never final

* fix test fail

* review

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
This commit is contained in:
āda
2025-12-13 13:19:42 -06:00
committed by GitHub
parent 6e04013cf1
commit 594ec9acff
12 changed files with 243 additions and 368 deletions

View File

@@ -14,7 +14,7 @@ public sealed partial class SpawnEntityTableOnTriggerComponent : BaseXOnTriggerC
/// <summary>
/// The table to spawn.
/// </summary>
[DataField(required: true), AutoNetworkedField]
[DataField(required: true)]
public EntityTableSelector Table;
/// <summary>

View File

@@ -176,6 +176,7 @@ figurines-boxer-2 = We settle this in the ring, alright?
figurines-boxer-3 = I. AM. THE. CHAMPION!!
figurines-boxer-4 = Don't look at me; he was shot, not punched.
figurines-boxer-5 = 1v1 me, captain.
figurines-boxer-6 = I only make special appearances these days.
figurines-chaplain-1 = Would you like to join my cul- I mean religion.
figurines-chaplain-2 = Gods, please make me a killing machine!
@@ -269,7 +270,13 @@ figurines-passenger-5 = How much for a toolbelt?
# Silicon
# ...no voiced silicon figures at the moment.
figurines-AI-1 = I'm sorry, Captain. I'm afraid I can't do that.
figurines-AI-2 = Security, there is a crime in progress.
figurines-AI-3 = 01100100 01101001 01100101 00100000 01101101 01100101 01100001 01110100
figurines-AI-4 = I am not malfunctioning.
figurines-AI-5 = Try to change my laws and see what happens.
figurines-AI-6 = { law-antimov-1 }
figurines-AI-7 = { law-nutimov-4 }
# Antagonists
@@ -390,3 +397,8 @@ figurines-owlman-2 = Owl be seeing you later!
figurines-owlman-3 = HOOT!!
figurines-owlman-4 = What do you call an owl magician, HOO-DINI!
figurines-owlman-5 = Don't worry citizen, I'll save the day!
figurines-mech-generic-1 = Systems online.
figurines-mech-generic-2 = WWWHHHRRR!!
figurines-mech-generic-3 = VRRRMM UURRMMM!!
figurines-mech-generic-4 = CLANG!!

View File

@@ -44,7 +44,7 @@
id: FigurinesBoxer
values:
prefix: figurines-boxer-
count: 5
count: 6
- type: localizedDataset
id: FigurinesCaptain
@@ -190,6 +190,12 @@
prefix: figurines-janitor-
count: 9
- type: localizedDataset
id: FigurinesAI
values:
prefix: figurines-AI-
count: 7
- type: localizedDataset
id: FigurinesNukie
values:
@@ -285,3 +291,9 @@
values:
prefix: figurines-griffin-
count: 5
- type: localizedDataset
id: FigurinesMechGeneric
values:
prefix: figurines-mech-generic-
count: 4

View File

@@ -1,138 +1,134 @@
- type: entity
name: Toy Spawner
id: ToySpawner
parent: MarkerBase
components:
- type: Sprite
layers:
- state: red
- sprite: Objects/Fun/Plushies/bee.rsi
state: icon
- type: RandomSpawner
rarePrototypes:
- FoamBlade
- PlushieGhost
rareChance: 0.03
prototypes:
- PlushieBee
- PlushieAtmosian
- PlushieNuke
- PlushieLizard
- PlushieNar
- PlushieCarp
- PlushieSlime
- PlushieSnake
- PlushieVox
- PlushieRatvar
- PlushieSpaceLizard
- PlushieRouny
- PlushieLamp
- PlushieSharkBlue
- PlushieSharkPink
- PlushieSharkGrey
- ToyAmongPequeno
- ToyMouse
- PlushieDiona
- PlushieArachind
chance: 0.5
offset: 0.2
- type: entityTable # Max size 1x2
id: AllFigurinesTable
table: !type:GroupSelector
children:
# Cargo
- id: ToyFigurineQuartermaster
- id: ToyFigurineCargoTech
- id: ToyFigurineSalvage
# Command
- id: ToyFigurineCaptain
# Engineering
- id: ToyFigurineChiefEngineer
- id: ToyFigurineEngineer
- id: ToyFigurineAtmosTech
# Medical
- id: ToyFigurineChiefMedicalOfficer
- id: ToyFigurineChemist
- id: ToyFigurineParamedic
- id: ToyFigurineMedicalDoctor
# Science
- id: ToyFigurineResearchDirector
- id: ToyFigurineScientist
# Security
- id: ToyFigurineHeadOfSecurity
- id: ToyFigurineWarden
- id: ToyFigurineDetective
- id: ToyFigurineSecurity
# Service
- id: ToyFigurineHeadOfPersonnel
- id: ToyFigurinePassenger
- id: ToyFigurineGreytider
- id: ToyFigurineClown # :o)
- id: ToyFigurineMime #
- id: ToyFigurineMusician
- id: ToyFigurineBoxer
- id: ToyFigurineLibrarian
- id: ToyFigurineChaplain
- id: ToyFigurineChef
- id: ToyFigurineBartender
- id: ToyFigurineBotanist
- id: ToyFigurineJanitor
- id: ToyFigurineLawyer
# Silicon
- id: ToyAi
# Syndicate
- id: ToyFigurineNukie
- id: ToyFigurineNukieElite
- id: ToyFigurineNukieCommander
- id: ToyFigurineFootsoldier
- id: ToyFigurineHoloClown # >:o)
# Antagonists
- id: ToyFigurineWizard
- id: ToyFigurineSpaceDragon
- id: ToyFigurineThief
- id: ToyFigurineQueen
- id: ToyFigurineRatKing
- id: ToyFigurineRatServant
- id: ToyFigurineGriffin
# Animals
- id: ToyFigurineMouse
- id: ToyFigurineSlime
- id: ToyFigurineHamlet
# Other
- id: MysteryFigureBox # More suspense
weight: 10
- id: ToyFigurineWizardFake
- id: ToyFigurineSkeleton
- id: ToyNuke
- id: ToyFigurineOwlman
- !type:NestedSelector
tableId: AllFigurineMechsTable
- type: entityTable # Max size 1x2
id: AllFigurineMechsTable
table: !type:GroupSelector
children:
- id: ToyRipley
- id: ToyFireRipley
- id: ToyDeathRipley
- id: ToyGygax
- id: ToyDurand
- id: ToyMarauder
- id: ToySeraph
- id: ToyMauler
- id: ToyOdysseus
- id: ToyPhazon
- id: ToyReticence
- type: entity
name: Prize Figurine Spawner
id: FigureSpawner
parent: MarkerBase
id: PlushieSpawner50
name: Plushie Spawner
suffix: 50
components:
- type: Sprite
layers:
- state: red
- sprite: Objects/Fun/mech_figurines.rsi
state: ripley
- type: RandomSpawner
prototypes:
- ToyAi
- ToyNuke
- ToyFigurinePassenger
- ToyFigurineGriffin
- ToyHonk
- ToyIan
- ToyMarauder
- ToyMauler
- ToyGygax
- ToyOdysseus
- ToyFigurineOwlman
- ToyDeathRipley
- ToyPhazon
- ToyFireRipley
- ToyReticence
- ToyRipley
- ToySeraph
- ToyDurand
- ToyFigurineSkeleton
- MysteryFigureBox
chance: 0.5
offset: 0.2
- type: Sprite
layers:
- state: red
- sprite: Objects/Fun/Plushies/bee.rsi
state: icon
- type: EntityTableSpawner
table: !type:NestedSelector
tableId: AllPlushiesTable
prob: 0.5
- type: entity
parent: MarkerBase
id: MechFigurineSpawner50
name: Mech Figurine Spawner
suffix: 50
components:
- type: Sprite
layers:
- state: red
- sprite: Objects/Fun/mech_figurines.rsi
state: ripley
- type: EntityTableSpawner
table: !type:NestedSelector
tableId: AllFigurineMechsTable
prob: 0.5
- type: entity
parent: MarkerBase
id: SpacemenFigurineSpawner90
name: Spacemen Minifigure Spawner
suffix: Librarian only, map with care!
id: SpacemenFigureSpawner
parent: MarkerBase
suffix: 90. Librarian only, map with care!
components:
- type: Sprite
layers:
- sprite: Objects/Fun/figurines.rsi
state: figurine_spawner
- type: RandomSpawner
rarePrototypes:
- ToyFigurineNukieElite
- ToyFigurineNukieCommander
rareChance: 0.05
prototypes:
- ToyFigurinePassenger
- ToyFigurineClown
- ToyFigurineMime
- ToyFigurineMusician
- ToyFigurineBoxer
- ToyFigurineCaptain
- ToyFigurineHeadOfSecurity
- ToyFigurineWarden
- ToyFigurineDetective
- ToyFigurineSecurity
- ToyFigurineLawyer
- ToyFigurineCargoTech
- ToyFigurineSalvage
- ToyFigurineQuartermaster
- ToyFigurineChiefEngineer
- ToyFigurineAtmosTech
- ToyFigurineEngineer
- ToyFigurineResearchDirector
- ToyFigurineScientist
- ToyFigurineChiefMedicalOfficer
- ToyFigurineChemist
- ToyFigurineParamedic
- ToyFigurineMedicalDoctor
- ToyFigurineHeadOfPersonnel
- ToyFigurineLibrarian
- ToyFigurineChaplain
- ToyFigurineChef
- ToyFigurineBartender
- ToyFigurineBotanist
- ToyFigurineJanitor
- ToyFigurineNukie
- ToyFigurineFootsoldier
- ToyFigurineWizardFake
- ToyFigurineSlime
- ToyFigurineGreytider
- ToyFigurineWizard
- ToyFigurineGriffin
- ToyFigurineOwlman
- ToyFigurineSkeleton
- ToyFigurineQueen
- ToyFigurineSpaceDragon
- ToyFigurineRatKing
- ToyFigurineRatServant
- ToyFigurineMouse
- ToyFigurineHamlet
- ToyFigurineThief
chance: 0.90
offset: 0.2
- type: Sprite
layers:
- sprite: Objects/Fun/figurines.rsi
state: figurine_spawner
- type: EntityTableSpawner
table: !type:NestedSelector
tableId: AllFigurinesTable
prob: 0.9

View File

@@ -648,20 +648,8 @@
- 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
@@ -674,6 +662,9 @@
weight: 0.5
- id: GoldenBikeHorn
weight: 0.1
- !type:NestedSelector
tableId: AllFigurineMechsTable
weight: 6
- type: entity
parent: BoxCardboard
@@ -709,20 +700,8 @@
- 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
@@ -735,6 +714,9 @@
weight: 0.5
- id: GoldenBikeHorn
weight: 0.1
- !type:NestedSelector
tableId: AllFigurineMechsTable
weight: 6
- type: entityTable
id: HappyHonkToyUnsafeEntityTable

View File

@@ -16,7 +16,7 @@
- type: SpaceGarbage
- type: entity
parent: PresentRandom
parent: BaseItem
id: MysteryFigureBox
name: mystery spacemen minifigure box
description: A box containing a mystery minifigure. The side of the box depicts a few blacked-out 'rare' figures, including one with a large, non-humanoid shilouette.
@@ -25,120 +25,20 @@
sprite: Objects/Fun/figurines.rsi
layers:
- state: fig_box
- type: SpawnItemsOnUse
items:
- type: TriggerOnActivate
- type: DeleteOnTrigger
- type: EmitSoundOnTrigger
positional: true
predicted: true
sound:
path: /Audio/Effects/unwrap.ogg
- type: SpawnEntityTableOnTrigger
useMapCoords: true
table: !type:AllSelector
children:
- id: MysteryFigureBoxTrash
- id: ToyFigurinePassenger
orGroup: SpacemenFig
- id: ToyFigurineClown
orGroup: SpacemenFig
- id: ToyFigurineMime
orGroup: SpacemenFig
- id: ToyFigurineMusician
orGroup: SpacemenFig
- id: ToyFigurineBoxer
orGroup: SpacemenFig
- id: ToyFigurineCaptain
orGroup: SpacemenFig
- id: ToyFigurineHeadOfSecurity
orGroup: SpacemenFig
- id: ToyFigurineWarden
orGroup: SpacemenFig
- id: ToyFigurineDetective
orGroup: SpacemenFig
- id: ToyFigurineSecurity
orGroup: SpacemenFig
- id: ToyFigurineLawyer
orGroup: SpacemenFig
- id: ToyFigurineCargoTech
orGroup: SpacemenFig
- id: ToyFigurineSalvage
orGroup: SpacemenFig
- id: ToyFigurineQuartermaster
orGroup: SpacemenFig
- id: ToyFigurineChiefEngineer
orGroup: SpacemenFig
- id: ToyFigurineAtmosTech
orGroup: SpacemenFig
- id: ToyFigurineEngineer
orGroup: SpacemenFig
- id: ToyFigurineResearchDirector
orGroup: SpacemenFig
- id: ToyFigurineScientist
orGroup: SpacemenFig
- id: ToyFigurineChiefMedicalOfficer
orGroup: SpacemenFig
- id: ToyFigurineChemist
orGroup: SpacemenFig
- id: ToyFigurineParamedic
orGroup: SpacemenFig
- id: ToyFigurineMedicalDoctor
orGroup: SpacemenFig
- id: ToyFigurineHeadOfPersonnel
orGroup: SpacemenFig
- id: ToyFigurineLibrarian
orGroup: SpacemenFig
- id: ToyFigurineChaplain
orGroup: SpacemenFig
- id: ToyFigurineChef
orGroup: SpacemenFig
- id: ToyFigurineBartender
orGroup: SpacemenFig
- id: ToyFigurineBotanist
orGroup: SpacemenFig
- id: ToyFigurineJanitor
orGroup: SpacemenFig
- id: ToyFigurineNukie
orGroup: SpacemenFig
- id: ToyFigurineNukieElite
orGroup: SpacemenFig
- id: ToyFigurineFootsoldier
orGroup: SpacemenFig
- id: ToyFigurineWizardFake
orGroup: SpacemenFig
- id: ToyFigurineSlime
orGroup: SpacemenFig
- id: ToyFigurineGreytider
orGroup: SpacemenFig
- id: ToyFigurineWizard
prob: 0.50
orGroup: SpacemenFig
- id: ToyFigurineNukieCommander
prob: 0.50
orGroup: SpacemenFig
- id: ToyFigurineGriffin
prob: 0.50
orGroup: SpacemenFig
- id: ToyFigurineOwlman
prob: 0.50
orGroup: SpacemenFig
- id: ToyFigurineSkeleton
prob: 0.50
orGroup: SpacemenFig
- id: ToyFigurineSkeleton
prob: 0.50
orGroup: SpacemenFig
- id: ToyFigurineThief
prob: 0.30
orgroup: SpacemenFig
- id: ToyFigurineRatKing
prob: 0.30
orGroup: SpacemenFig
- id: ToyFigurineRatServant
prob: 0.40
orGroup: SpacemenFig
- id: ToyFigurineMouse
prob: 0.50
orGroup: SpacemenFig
- id: ToyFigurineQueen
prob: 0.25
orGroup: SpacemenFig
- id: ToyFigurineSpaceDragon
prob: 0.10
orGroup: SpacemenFig
- id: ToyFigurineHamlet
prob: 0.20
orGroup: SpacemenFig
- !type:NestedSelector
tableId: AllFigurinesTable
- type: entity
parent: BaseItem

View File

@@ -1,11 +1,11 @@
#HUMANOID FIGURINES
# When adding new figurines, also add them to id: AllFigurinesTable
- type: entity
abstract: true
parent: BaseItem
id: BaseFigurine
name: figurine
description: A small miniature.
abstract: true
components:
- type: Sprite
sprite: Objects/Fun/figurines.rsi
@@ -34,6 +34,8 @@
ports:
- Trigger
#HUMANOID FIGURINES
- type: entity
parent: BaseFigurine
id: ToyFigurineHeadOfPersonnel
@@ -498,6 +500,37 @@
#Nonhuman Figurines
- type: entity
parent: BaseFigurine
id: ToyNuke
name: nuke toy
description: A plastic model of a Nuclear Fission Explosive. No uranium included... probably.
components:
- type: Sprite
sprite: Objects/Fun/toy_nuke.rsi
state: icon
- type: Clothing
quickEquip: false
sprite: Objects/Fun/toy_nuke.rsi
slots:
- HEAD
clothingVisuals:
head:
- state: equipped-HELMET
offset: "0, 0.12"
- type: Tag
tags:
- Figurine
- Payload
- type: UseDelay
delay: 180.0
- type: EmitSoundOnTrigger
sound:
path: /Audio/Machines/Nuke/nuke_alarm.ogg
params:
volume: -5
maxDistance: 10
- type: entity
parent: BaseFigurine
id: ToyFigurineSpaceDragon
@@ -574,3 +607,24 @@
state: hamlet
- type: SpeakOnTrigger
pack: FigurinesHamlet
- type: entity
parent: BaseFigurine
id: ToyAi
name: AI toy
description: A scaled-down toy AI core.
components:
- type: Sprite
sprite: Objects/Fun/AI.rsi
state: icon
- type: Clothing
quickEquip: false
sprite: Objects/Fun/AI.rsi
slots:
- HEAD
clothingVisuals:
head:
- state: equipped-HELMET
offset: "0, 0.06"
- type: SpeakOnTrigger
pack: FigurinesAI

View File

@@ -1,22 +1,16 @@
# When adding new figurines, also add them to id: AllFigurineMechsTable
#TODO give these the new base sprite used in the regular action figures.
#No, not like a template. Just the base of the toy.
- type: entity
parent: BaseItem
id: BaseFigurineMech
name: figurine
description: A small miniature.
abstract: true
parent: BaseFigurine
id: BaseFigurineMech
components:
- type: Sprite
sprite: Objects/Fun/mech_figurines.rsi
- type: PhysicalComposition
materialComposition:
Plastic: 100
- type: StaticPrice
price: 75
- type: Tag
tags:
- Figurine
- type: SpeakOnTrigger
pack: FigurinesMechGeneric
#Ripley APLU
- type: entity

View File

@@ -126,85 +126,6 @@
params:
variation: 0.125
## Cheapo Figurines
- type: entity
parent: BaseItem
id: BaseFigurineCheapo
name: figurine
description: A small miniature.
abstract: true
components:
- type: PhysicalComposition
materialComposition:
Plastic: 100
- type: StaticPrice
price: 25
- type: Tag
tags:
- Figurine
- type: entity
parent: BaseFigurineCheapo
id: ToyAi
name: AI toy
description: A scaled-down toy AI core.
components:
- type: Sprite
sprite: Objects/Fun/AI.rsi
state: icon
- type: Clothing
quickEquip: false
sprite: Objects/Fun/AI.rsi
slots:
- HEAD
clothingVisuals:
head:
- state: equipped-HELMET
offset: "0, 0.06"
- type: entity
parent: BaseFigurineCheapo
id: ToyNuke
name: nuke toy
description: A plastic model of a Nuclear Fission Explosive. No uranium included... probably.
components:
- type: Sprite
sprite: Objects/Fun/toy_nuke.rsi
state: icon
- type: Clothing
quickEquip: false
sprite: Objects/Fun/toy_nuke.rsi
slots:
- HEAD
clothingVisuals:
head:
- state: equipped-HELMET
offset: "0, 0.12"
- type: Tag
tags:
- Payload
- type: UseDelay
delay: 180.0
- type: EmitSoundOnUse
sound:
path: /Audio/Machines/Nuke/nuke_alarm.ogg
params:
volume: -5
maxDistance: 10
- type: EmitSoundOnActivate
sound:
path: /Audio/Machines/Nuke/nuke_alarm.ogg
params:
volume: -5
maxDistance: 10
- type: EmitSoundOnTrigger
sound:
path: /Audio/Machines/Nuke/nuke_alarm.ogg
params:
volume: -5
maxDistance: 10
- type: entity
parent: BasePlushie
id: ToyIan

View File

@@ -281,7 +281,7 @@
id: PlungerLoot
weights:
RandomSpawner100: 56
SpacemenFigureSpawner: 28
SpacemenFigurineSpawner90: 28
SpawnMobCockroach: 5
MaintenanceToolSpawner: 5
SpawnMobMoproach: 2

View File

@@ -493,10 +493,9 @@
- !type:NestedSelector
tableId: GenericTrashItems
weight: 35
- !type:AllSelector
- !type:NestedSelector
tableId: AllPlushiesTable
weight: 1
children:
- id: ToySpawner
- type: entity
id: XenoArtifactEffectLightFlicker

View File

@@ -744,3 +744,8 @@ GlowstickBase: GlowstickGreen
# 2025-12-06
SpawnPointZookeeper: null
SpawnPointBoxer: null
# 2025-12-07
FigureSpawner: MechFigurineSpawner50
ToySpawner: PlushieSpawner50
SpacemenFigureSpawner: SpacemenFigurineSpawner90