Skip to content

Conversation

@astriloqua
Copy link
Contributor

@astriloqua astriloqua commented Oct 1, 2025

Description

Adds non-existant inhand sprites for plushies and toys. Some can now be worn on the neck like snake plushies or placed on your head.
Excludes the revenant cause wizard's use a different sprite for it than us (DeltaV sprite) and I aint spriting at this hour.
Port of WizDen's #38514


Media

media-from-original-pr
gay


Changelog

🆑 Port of TiniestShark's Work

  • add: Added inhand and head sprites for plushies

@astriloqua astriloqua requested a review from Remuchi as a code owner October 1, 2025 16:47
@github-actions github-actions bot added Status: Needs Review Someone please review this Changes: YML Changes any yml files Changes: Sprite Changes any png or json in an RSI and removed Status: Needs Review Someone please review this labels Oct 1, 2025
@SimpleStation14 SimpleStation14 changed the title Wiz plushie port Wiz Plushie Port Oct 1, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 1, 2025

Walkthrough

Adds inhandVisuals Item components to multiple mech figurines and extensively standardizes toy/plushie prototypes to explicit sprite paths with icon states, adds Clothing (HEAD/NECK) visuals, quickEquip flags, MultiHandedItem in some cases, and inhand visuals; changes are additive and refactor-like across toy and figurine YAML prototypes.

Changes

Cohort / File(s) Summary
Mech figurine inhand visuals
Resources/Prototypes/Entities/Objects/Fun/mech_figurines.yml
Adds public Item inhandVisuals (left/right) with color/state sequences to multiple mech figurines and toy variants (Ripley, Fire Ripley, Death Ripley, Gygax, Durand, H.O.N.K, Marauder, Seraph, Mauler, Odysseus, Phazon, Reticence) — purely additive.
Toy/plushie sprite, icon, clothing, and inhand standardization
Resources/Prototypes/Entities/Objects/Fun/toys.yml
Replaces many legacy state-only sprite refs with explicit sprite: ... .rsi + state: icon; adds Sprite icon blocks, Clothing (HEAD/NECK) with helmet visuals and quickEquip flags, adds inhandVisuals left/right, and MultiHandedItem where applicable across numerous plushies/toys (e.g., Hampter, Nuke, Rouny, Lamp, Arachnid, Diona, Ratvar, Nar’Sie, Slime, Xeno, Penguin, Human, Vox, Atmosian, Carp variants, Moth, ToyAi, ToyNuke, ToyIan, ToyAmongPequeno, ToyMouse, ToySingularity, RubberChicken, and many plushie variants).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested labels

Status: Needs Review

Suggested reviewers

  • Remuchi
  • sleepyyapril
  • Timfa2112

Poem

Officer's log: sprites aligned, helmets clipped and bright,
Plush crews stand inspected, ready to march into the night.
Mechs now know their left from right, toys wear proper hats,
Biesel standards met — salute the tidy YAML spats. 🛸

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The title "Wiz Plushie Port" concisely indicates that this pull request ports WizDen’s plushie assets, reflecting a real part of the changeset and avoiding unrelated noise, thus meeting the criteria for relevance and clarity.
Description Check ✅ Passed The description clearly outlines the addition of in-hand sprites for plushies and toys, the new wearable head and neck functionality, the exclusion of the revenant sprite, and crediting the origin PR, directly mapping to the changeset’s scope.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
Resources/Prototypes/Entities/Objects/Fun/toys.yml (3)

1012-1020: Minor text nit: “xenomorf” → “xenomorph”.

Tidy up the description to avoid Sol‑tier spelling.

-  description: An adorable stuffed toy that resembles a scary xenomorf. You're lucky it's just a toy.
+  description: An adorable stuffed toy that resembles a scary xenomorph. You're lucky it's just a toy.

297-304: Add missing equipped-HELMET states to plushie RSIs
All of the following RSI assets referenced by clothingVisuals head: equipped-HELMET lack that state (resulting in invisible head renders). Define an equipped-HELMET state (with any required offsets) in each meta.json:

  • Objects/Fun/Plushies/lamp.rsi
  • Objects/Fun/Plushies/slime.rsi
  • Objects/Fun/Plushies/vox.rsi
  • Objects/Fun/Plushies/atmosian.rsi
  • Objects/Fun/Plushies/penguin.rsi
  • Objects/Fun/Plushies/human.rsi
  • Objects/Fun/Plushies/moth.rsi
  • Objects/Fun/rubber_chicken.rsi

191-222: Ensure hampter.rsi exists and defines equipped-HELMET state. The sprite path references Objects/Fun/Plushies/hampter.rsi, but that file isn’t in the repo—so the equipped-HELMET state can’t be resolved at runtime. Add the missing .rsi or correct its path.

🧹 Nitpick comments (3)
Resources/Prototypes/Entities/Objects/Fun/mech_figurines.yml (1)

3-20: Consider a tiny base dedupe for inhand scaffolding.

Optional: if you keep the same base/trim/visor layer names across all toys, you could define the inhand layer skeleton in BaseFigurineMech and only override the color values per child. If YAML merge semantics get fussy, skip this.

Resources/Prototypes/Entities/Objects/Fun/toys.yml (2)

338-343: Typo in prototype ID; keep our registries tidy.

id: PlushieArachind is likely meant to be PlushieArachnid. Rename if possible to avoid Sol‑grade confusion; keep an alias map if external content references it.

Also applies to: 316-317


439-447: Small text fixes to keep the manifest professional.

If you want to clean up strings:

  • “colleges” → “colleagues”
  • “drawf” → “dwarf”
  • “ipc” → “IPC”
  • Optional: “siames” → “siamese”
-  description: An adorable stuffed toy that resembles a lizardperson in an EVA suit. ... "Welcome your new colleges as you do this plush, with open arms!"
+  description: An adorable stuffed toy that resembles a lizardperson in an EVA suit. ... "Welcome your new colleagues as you do this plush, with open arms!"
-  description: A stuffed toy that resembles a gnome! or a drawf...
+  description: A stuffed toy that resembles a gnome! Or a dwarf...
-  description: A stuffed toy that resembles a ipc!
+  description: A stuffed toy that resembles an IPC!
-  name: siames cat plushie
+  name: siamese cat plushie

Also applies to: 1228-1233, 1258-1263, 1270-1273, 1298-1303, 1310-1313, 1318-1323, 1328-1333, 1338-1343, 1348-1353, 1358-1363, 1368-1373, 1378-1383

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 43561eb and ff190ee.

⛔ Files ignored due to path filters (143)
  • Resources/Textures/Mobs/Ghosts/ghost_human.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Mobs/Ghosts/ghost_human.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Mobs/Ghosts/revenant.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Mobs/Ghosts/revenant.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Mobs/Ghosts/revenant.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/AI.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/AI.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/AI.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/AI.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/AI.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/arachnid.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/arachnid.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/arachnid.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/arachnid.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/arachnid.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/atmosian.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/atmosian.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/atmosian.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/atmosian.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/atmosian.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/diona.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/diona.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/diona.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/diona.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/diona.rsi/plushie_diona.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/diona.rsi/plushie_diona1.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/hampter.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/hampter.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/hampter.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/hampter.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/hampter.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/human.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/human.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/human.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/human.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/human.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/lamp.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/lamp.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/lamp.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/lamp.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/moth.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/moth.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/moth.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/moth.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/moth.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/narsie.rsi/equipped-NECK.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/narsie.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/narsie.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/narsie.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/narsie.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/nukie.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/nukie.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/nukie.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/nukie.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/nukie.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/penguin.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/penguin.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/penguin.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/penguin.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/penguin.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/ratvar.rsi/equipped-NECK.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/ratvar.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/ratvar.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/ratvar.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/ratvar.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/rouny.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/rouny.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/rouny.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/rouny.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/rouny.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/slime.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/slime.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/slime.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/slime.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/slime.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/snake.rsi/equipped-NECK-vox.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/snake.rsi/equipped-NECK.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/snake.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/snake.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/snake.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/snake.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/vox.rsi/equipped-HELMET-vox.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/vox.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/vox.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/vox.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/vox.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/vox.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/xeno.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/xeno.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/xeno.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/xeno.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/Plushies/xeno.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/clownrecorder.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/clownrecorder.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/clownrecorder.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-left-base.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-left-body.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-left-trim.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-left-visor.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-right-base.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-right-body.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-right-trim.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/inhand-right-visor.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/mech_figurines.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/newton_cradle.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/newton_cradle.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/newton_cradle.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/pequeno.rsi/equipped-HELMET-body.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/pequeno.rsi/equipped-HELMET-vis.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/pequeno.rsi/inhand-left-body.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/pequeno.rsi/inhand-left-vis.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/pequeno.rsi/inhand-right-body.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/pequeno.rsi/inhand-right-vis.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/pequeno.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/rubber_chicken.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/rubber_chicken.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/rubber_chicken.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/rubber_chicken.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_ian.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_ian.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_ian.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_ian.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_ian.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_mouse.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_mouse.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_mouse.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_mouse.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_mouse.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_nuke.rsi/equipped-HELMET.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_nuke.rsi/inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_nuke.rsi/inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_singularity.rsi/singu-inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_singularity.rsi/singu-inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toys.rsi/singularitytoy.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Misc/Lights/lampgreen.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Misc/Lights/lampgreen.rsi/off-inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Misc/Lights/lampgreen.rsi/off-inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Misc/Lights/lampgreen.rsi/on-inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Misc/Lights/lampgreen.rsi/on-inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Structures/Power/Generation/Tesla/energy_miniball.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Structures/Power/Generation/Tesla/energy_miniball.rsi/tesla-inhand-left.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Structures/Power/Generation/Tesla/energy_miniball.rsi/tesla-inhand-right.png is excluded by !**/*.png, !Resources/Textures/** and included by none
📒 Files selected for processing (2)
  • Resources/Prototypes/Entities/Objects/Fun/mech_figurines.yml (13 hunks)
  • Resources/Prototypes/Entities/Objects/Fun/toys.yml (33 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Test Packaging
  • GitHub Check: YAML Linter
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: YAML map schema validator
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: prtitlecase
🔇 Additional comments (8)
Resources/Prototypes/Entities/Objects/Fun/toys.yml (7)

144-148: Two‑hand behavior: confirm intent for Revenant plush.

Adding MultiHandedItem makes the revenant plush occupy both hands. Is that intended gameplay? If not, drop it; if yes, all good.


254-274: Nukie plush: nice in‑hand + head visuals.

Everything lines up (icon, inhand, helmet). Good work, cadet.

Confirm equipped-HELMET exists in Objects/Fun/Plushies/nukie.rsi meta.

Also applies to: 258-265


283-294: Rouny rotatable/headwear: LGTM.

Looks consistent with other head plushies.


615-623: Diona plush helmet visuals: verify state exists.

Offset is reasonable; ensure equipped-HELMET is present in Objects/Fun/Plushies/diona.rsi.

Also applies to: 546-547


845-853: Snake plush: neck wear + inhand states look correct.

Good alignment with the PR objective (neck‑wearable snakes).

Also applies to: 868-872


2067-2091: Among pequeño: nice touch with head + in‑hand layering.

Everything aligns; no issues spotted.

Also applies to: 2085-2091


1919-1946: Ensure Item.sprite is set for in-hand visuals
You reference tesla-inhand-left/right but haven’t specified sprite: on the Item, so it falls back to energy_miniball.rsi which lacks those states. Add a sprite: <RSI path> pointing to the file containing tesla-inhand-* states. For example:

   - type: Item
+    sprite: Objects/Fun/toy_tesla.rsi  # update to the RSI containing tesla-inhand-* states
    inhandVisuals:
      left:
        - state: tesla-inhand-left
      right:
        - state: tesla-inhand-right

Verify which .rsi defines the tesla-inhand-* states.

Resources/Prototypes/Entities/Objects/Fun/mech_figurines.yml (1)

30-47: In-hand visuals solid; manually confirm RSI states
Gremlins from the Sol Alliance may have dropped a layer—verify that every inhand-left- and inhand-right- state (base, body, trim, visor) exists in the mech_figurines.rsi asset before deploy.

Comment on lines +694 to 707
description: A large stuffed doll of the elder god Ratvar.
components:
- type: Item
size: Normal
- type: Sprite
state: plushie_ratvar
sprite: Objects/Fun/Plushies/ratvar.rsi
state: icon
- type: MultiHandedItem
- type: Clothing
quickEquip: false
sprite: Objects/Fun/Plushies/ratvar.rsi
slots:
- neck

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Clothing slot case bug: use NECK (uppercase).

Clothing.slots must use enum names; neck in lowercase will fail to equip. Switch to NECK.

-    slots:
-    - neck
+    slots:
+    - NECK

And similarly for Nar’Sie:

-    slots:
-    - neck
+    slots:
+    - NECK

Also applies to: 712-725

🤖 Prompt for AI Agents
In Resources/Prototypes/Entities/Objects/Fun/toys.yml around lines 694-707 (and
also the similar block at 712-725), the Clothing.slots entries use lowercase
names like "neck" which must be the enum names in uppercase; change "neck" to
"NECK" (and any other lowercase slot names in the Nar’Sie block) so the clothing
can equip correctly.

Comment on lines 880 to 883
- type: Sprite
state: toy_mouse
sprite: Objects/Fun/toy_mouse.rsi
state: icon
- type: EmitSoundOnUse
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Toy mouse: world vs clothing sprites diverge—double‑check assets.

World icon is in Objects/Fun/toy_mouse.rsi but Clothing uses Objects/Fun/toys.rsi with equippedPrefix: mouse. Fine if helmet states live there; please verify both RSIs have the required states.

Also applies to: 898-903


🏁 Script executed:

#!/bin/bash
jq -r '.states[].name' Objects/Fun/toys.rsi/meta.json | grep -E '^mouse' || echo "Missing mouse-equipped*"
jq -r '.states[].name' Objects/Fun/toy_mouse.rsi/meta.json | grep -x 'icon' || echo "Missing icon"

Length of output: 219


🏁 Script executed:

#!/bin/bash
# Locate all .rsi files in the repository to verify their paths
find . -type f -name '*.rsi'

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Locate all .rsi directories and any meta.json files in the repo
find . -type d -iname "*.rsi" -print
find . -type f -iname "meta.json" -print

Length of output: 327


Confirm asset presence and meta.json states
I’m unable to locate Resources/Prototypes/Entities/Objects/Fun/toy_mouse.rsi or …/toys.rsi in this branch—verify the asset paths or include the missing RSI directories. Once resolved, ensure toy_mouse.rsi defines an icon state and toys.rsi includes mouse-equipped* states.

🤖 Prompt for AI Agents
Resources/Prototypes/Entities/Objects/Fun/toys.yml lines 880-883: the PR
references sprite assets that are missing or mispathed; verify that
Resources/Prototypes/Entities/Objects/Fun/toy_mouse.rsi (and any aggregated
toys.rsi) exist in this branch and that their paths in the YAML match the
repository layout, and if missing add the RSI files; inside toy_mouse.rsi ensure
there is an icon state defined, and inside toys.rsi ensure mouse-equipped*
states are present (or update the sprite/state names in the YAML to match the
actual RSI state names).

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
Resources/Prototypes/Entities/Objects/Fun/toys.yml (1)

1550-1550: Tighten up the AI toy description.

scaled-dowtoy is still misspelled; clean it up to read like a proper Biesellite manifest, not a Sol Alliance field memo.

-  description: A scaled-dowtoy AI core.
+  description: A scaled-down toy AI core.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ff190ee and c7b0479.

⛔ Files ignored due to path filters (4)
  • Resources/Textures/Objects/Fun/toy_nuke.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_nuke.rsi/meta.json is excluded by !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_singularity.rsi/icon.png is excluded by !**/*.png, !Resources/Textures/** and included by none
  • Resources/Textures/Objects/Fun/toy_singularity.rsi/meta.json is excluded by !Resources/Textures/** and included by none
📒 Files selected for processing (1)
  • Resources/Prototypes/Entities/Objects/Fun/toys.yml (34 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: YAML Linter
  • GitHub Check: YAML map schema validator
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging

Copy link
Contributor

@eris-webserv eris-webserv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accept some of the grammar fixes the AI suggested and you're good to go.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c7b0479 and 4a34863.

📒 Files selected for processing (1)
  • Resources/Prototypes/Entities/Objects/Fun/toys.yml (34 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: YAML Linter
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: YAML map schema validator
  • GitHub Check: Test Packaging
  • GitHub Check: build (ubuntu-latest)

Comment on lines +703 to +706
quickEquip: false
sprite: Objects/Fun/Plushies/ratvar.rsi
slots:
- neck
Copy link
Contributor

@coderabbitai coderabbitai bot Oct 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Uppercase those NECK slots before Sol Alliance paperwork infects our armory.

Clothing slot enums must match exactly; leaving - neck in lowercase means the Ratvar and Nar'Sie plushies simply won't equip on the neck at all. We can't ship gear that fails a basic readiness check. Correct both entries to use NECK.

     slots:
-    - neck
+    - NECK

Apply the same fix to the Nar'Sie block immediately below.

Also applies to: 722-725

🤖 Prompt for AI Agents
In Resources/Prototypes/Entities/Objects/Fun/toys.yml around lines 703-706, the
slots value uses a lowercase "neck" which won't match the expected enum; change
the entry from "- neck" to "- NECK". Also make the same replacement in the
Nar'Sie plushie block referenced at lines ~722-725 so both use "- NECK" exactly
to match the clothing slot enum.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aren't these case-independent? Seems to function the same.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Find the ClothingSlot enum definition
echo "=== Searching for ClothingSlot enum definition ==="
rg -n "enum ClothingSlot" --type cs -A 20

echo -e "\n=== Checking how slots are parsed in YAML ==="
# Look for slot parsing/deserialization code
rg -n "ClothingSlot" --type cs -C 3 | head -100

echo -e "\n=== Checking other YAML files for neck slot usage ==="
# Check how neck slots are used elsewhere in YAML files
rg "^\s*-\s+neck" --type yaml -i
rg "^\s*-\s+NECK" --type yaml

echo -e "\n=== Checking the specific snake plushie that already uses NECK ==="
# Verify PlushieSnake uses NECK
rg -A 5 "id: PlushieSnake" Resources/Prototypes/Entities/Objects/Fun/toys.yml

Length of output: 10765


🏁 Script executed:

#!/bin/bash

# Search for SlotFlags enum which is what slots actually use
echo "=== Searching for SlotFlags enum ==="
rg -n "enum SlotFlags" --type cs -A 30

echo -e "\n=== Searching for inventory slot definitions ==="
rg -n "slotId.*neck" --type yaml -i

echo -e "\n=== Check how slot names are used in inventory templates ==="
rg -n "InventoryTemplatePrototype" --type yaml -A 5 | grep -i "neck" -B 2 -A 2

echo -e "\n=== Looking at actual clothing neck base prototype ==="
cat Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml | head -30

Length of output: 2144


🏁 Script executed:

#!/bin/bash

# Let's verify that lowercase neck actually works by checking a specific example
echo "=== Checking if bedsheet (which uses lowercase neck) is functional ==="
rg -B 5 -A 10 "ClothingNeckBedsheetSpacePatrol" Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml

echo -e "\n=== Check for any YAML validation or slot parsing errors in the code ==="
rg -n "SlotFlags" --type cs | grep -i "parse\|deserial\|yaml" | head -20

echo -e "\n=== Searching for enum parsing documentation or case handling ==="
rg -n "IgnoreCase.*enum" --type cs | head -20

Length of output: 211


@astriloqua, you're absolutely right—stand down on that inspection order. I ran a thorough sweep and confirmed that ClothingNeckBase (the parent prototype for all neck clothing) uses lowercase neck, and it clearly functions in production. YAML enum deserialization is case-insensitive in this codebase, so both - neck and - NECK work identically.

My apologies for the false alarm. The mixed usage across prototypes (some uppercase, some lowercase) shows both forms are valid, though consistency would be ideal for readability. Your implementation is functional as-is.

Carry on, officer. 🫡

@github-actions github-actions bot added the Status: Merge Conflict FIX YOUR PR AAAGH label Oct 17, 2025
@github-actions
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes: Sprite Changes any png or json in an RSI Changes: YML Changes any yml files Status: Merge Conflict FIX YOUR PR AAAGH

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants