трусы#33
Conversation
📝 WalkthroughWalkthroughThis PR adds three new equippable clothing slots (socks, underwearb, underweart) with full system support including entity prototypes, sprite rendering, inventory templates, sex-based loadout restrictions, and Russian localization across multiple species definitions. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Poem
Pre-merge checks❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 11
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/Mobs/Species/base.yml (2)
274-282: Fix duplicate layer definitions.Lines 276-277 define
enum.HumanoidVisualLayers.LFootandenum.HumanoidVisualLayers.RFoot, but lines 280-281 define them again. Duplicate layer map keys will cause rendering issues as the sprite system cannot have two layers with the same identifier.Apply this diff to remove the duplicate definitions:
- map: [ "underwearb" ] #White - map: [ "underweart" ] #White - map: [ "enum.HumanoidVisualLayers.LFoot" ] - map: [ "enum.HumanoidVisualLayers.RFoot" ] - map: [ "socks" ] #White - map: ["jumpsuit"] - - map: ["enum.HumanoidVisualLayers.LFoot"] - - map: ["enum.HumanoidVisualLayers.RFoot"] - map: ["enum.HumanoidVisualLayers.LHand"]
616-624: Fix duplicate layer definitions in BaseSpeciesDummy.Same issue as BaseMobSpecies: lines 618-619 define
enum.HumanoidVisualLayers.LFootandenum.HumanoidVisualLayers.RFoot, but lines 622-623 define them again.Apply this diff:
- map: [ "underwearb" ] #White - map: [ "underweart" ] #White - map: [ "enum.HumanoidVisualLayers.LFoot" ] - map: [ "enum.HumanoidVisualLayers.RFoot" ] - map: [ "socks" ] #White - map: ["jumpsuit"] - - map: ["enum.HumanoidVisualLayers.LFoot"] - - map: ["enum.HumanoidVisualLayers.RFoot"] - map: ["enum.HumanoidVisualLayers.LHand"]Content.Shared/Inventory/InventoryTemplatePrototype.cs (1)
68-73: Mutations toStripHiddencorrupt shared prototype state—all entities using the same template are affected.
InventoryComponent.Slotsholds a direct reference toInventoryTemplatePrototype.Slots(assigned atInventorySystem.Slots.cs:150without cloning). WhenInventorySystem.Hide.csmutatesslotDef.StripHidden, it modifies the prototype'sSlotDefinitionarray. Every entity sharing that template sees the corrupted state. This breaks per-entity hiding logic and is impossible to reason about.Change the setter to
internaland manage hide state outside the prototype:- [DataField("stripHidden")] public bool StripHidden { get; set; } // maid changes + [DataField("stripHidden")] public bool StripHidden { get; internal set; }Then track per-entity hidden state in the
InventorySystemor via a separate component, not by mutating shared prototype objects.
♻️ Duplicate comments (11)
Resources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution concern as other imported sock assets.Consider expanding attribution beyond “Taken from ” to include original author(s) and change notes per your REUSE/CC-BY-SA compliance approach.
Resources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution concern as other imported sock assets.Resources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution concern as other imported sock assets.Resources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution concern as other imported sock assets.Resources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/meta.json (1)
1-18: Same CC-BY-SA attribution concern as other imported underwear assets.Resources/Textures/White/Clothing/Underwear/Top/bra.rsi/meta.json (1)
1-18: Same CC-BY-SA attribution concern as other imported underwear assets.Resources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution/licensing verification needed as other added underwear textures.
Please ensure upstream file license + author attribution is captured adequately for CC-BY-SA-3.0.Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution/licensing verification needed as other added underwear textures.
Please ensure upstream file license + author attribution is captured adequately for CC-BY-SA-3.0.Resources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution/licensing verification needed as other added underwear textures.
Please ensure upstream file license + author attribution is captured adequately for CC-BY-SA-3.0.Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution/licensing verification needed as other added underwear textures.
Please ensure upstream file license + author attribution is captured adequately for CC-BY-SA-3.0.Resources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/meta.json (1)
1-22: Same CC-BY-SA attribution/licensing verification needed as other added underwear textures.
Please ensure upstream file license + author attribution is captured adequately for CC-BY-SA-3.0.
🧹 Nitpick comments (5)
Resources/Locale/ru-RU/clothing/underwear.ftl (1)
73-73: Minor: Extraneous blank lines. Lines 73 and 95 contain extra blank lines that can be removed for cleaner formatting. This is optional and non-functional.Apply this diff to clean up blank lines:
ent-ClothingUnderwearBottomPantiesBeeKini = трусики .desc = Пчелки. - + ent-ClothingUnderwearBottomPantiesKinky = трусикиAnd at the end:
ent-ClothingUnderwearBottomPantiesThong = трусики .desc = Стринги. - +Also applies to: 95-95
Content.Shared/Inventory/InventorySystem.Hide.cs (1)
5-15: Prefer storingstring[]/HashSet<string>instead of CSV +Spliteach call.
The “serialization issues” note doesn’t apply to aprivate static readonlymapping, and pre-splitting avoids repeated parsing.Resources/Prototypes/White/Entities/Clothing/Underwear/Socks.yml (2)
18-243: Names/descriptions are inconsistent (“Socks” vs “stockings”); consider tightening for UX + localizationMany entities have
name: Sockswhile descriptions call them “stockings” (and vice versa). Recommend aligning terminology per variant (short socks vs thigh-high vs stockings) so RU/EN localization keys stay meaningful.
18-44: Normalize YAML indentation style forcomponentsblocksThe file mixes
components:\n - ...andcomponents:\n - .... Both can be valid YAML, but consistent formatting reduces review/merge conflicts and avoids subtle copy/paste errors.Also applies to: 100-135
Resources/Prototypes/White/Entities/Clothing/Underwear/Top.yml (1)
18-281: Consider normalizingnamecasing/terminology across variants for better UI + i18nRight now there’s a mix of lowercase/Title Case and inconsistent noun choice (“bra” vs “Bee-Kini” vs “Fishnet Bra”). If the project uses FTL for display names, you may prefer making names consistent (or omitting hardcoded English names entirely and relying on localization keys).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (216)
Resources/Textures/Interface/Classic/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Classic/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Classic/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Default/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Default/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Default/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Eris/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Eris/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Eris/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/bee_shorts.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers_heart.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/boxers_striped.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/briefs.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/fishnet_lower.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/ce/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hop/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/hos/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/qm/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/heads/rd/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/jockstrap.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/mankini.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_bee_kini.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_kinky.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_neko.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_slim.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_swimming.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/panties_thin.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/striped_panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Bottom/thong.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_norm.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/fishnet.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/garter.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/pantyhose.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/pantyhose_ripped.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/rainbow_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_norm.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/socks_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_blue.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_dpink.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_lpink.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_orange.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_purple.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/stockings_yellow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/striped_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/striped_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/thin_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_bee_kini.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_binder.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_kinky.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_neko.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_strapless.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_strapless_alt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_swimming.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_swimming_alt.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_swimming_alt.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_swimming_alt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_thin.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_thin.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/bra_thin.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/cow.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/cow.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/cow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/fishnet_body.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/fishnet_body.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/White/Clothing/Underwear/Top/fishnet_body.rsi/icon.pngis excluded by!**/*.png
📒 Files selected for processing (84)
Content.Client/Clothing/ClientClothingSystem.cs(1 hunks)Content.Shared/Inventory/InventorySystem.Equip.cs(2 hunks)Content.Shared/Inventory/InventorySystem.Hide.cs(1 hunks)Content.Shared/Inventory/InventoryTemplatePrototype.cs(2 hunks)Content.Shared/Inventory/SlotFlags.cs(1 hunks)Resources/Locale/ru-RU/clothing/socks.ftl(1 hunks)Resources/Locale/ru-RU/clothing/top.ftl(1 hunks)Resources/Locale/ru-RU/clothing/underwear.ftl(1 hunks)Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml(1 hunks)Resources/Prototypes/Entities/Mobs/Species/base.yml(2 hunks)Resources/Prototypes/InventoryTemplates/human_inventory_template.yml(1 hunks)Resources/Prototypes/White/Entities/Clothing/Underwear/Bottom.yml(1 hunks)Resources/Prototypes/White/Entities/Clothing/Underwear/Socks.yml(1 hunks)Resources/Prototypes/White/Entities/Clothing/Underwear/Top.yml(1 hunks)Resources/Prototypes/tags.yml(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/bee_shorts.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/boxers_heart.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/boxers_striped.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/briefs.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/fishnet_lower.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/jockstrap.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/mankini.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/panties_bee_kini.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/panties_kinky.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/panties_neko.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/panties_slim.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/panties_swimming.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/panties_thin.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/striped_panties.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Bottom/thong.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/bee_knee.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/bee_norm.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/fishnet.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/garter.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/pantyhose.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/pantyhose_ripped.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/rainbow_knee.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/socks_knee.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/socks_norm.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/socks_thigh.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_blue.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_dpink.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_lpink.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_orange.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_purple.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/stockings_yellow.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/striped_knee.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/striped_thigh.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/thin_knee.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_bee_kini.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_binder.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_kinky.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_neko.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_strapless.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_strapless_alt.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_swimming.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_swimming_alt.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/bra_thin.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/cow.rsi/meta.json(1 hunks)Resources/Textures/White/Clothing/Underwear/Top/fishnet_body.rsi/meta.json(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
Content.Shared/Inventory/InventorySystem.Equip.cs (1)
Content.Shared/Inventory/InventorySystem.Hide.cs (2)
HideSlotsOnConcealerUnequip(33-48)HideSlotsOnConcealerEquip(17-31)
Content.Shared/Inventory/InventorySystem.Hide.cs (1)
Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs (1)
TryGetSlot(233-244)
There was a problem hiding this comment.
Actionable comments posted: 4
♻️ Duplicate comments (3)
Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml (3)
1-16: Personal Discord handle in prototype description - already flagged.The description contains a personal Discord handle which is inappropriate for long-term maintenance. This was flagged in a previous review.
166-166: Profane comment - already flagged.The comment
# ТРУСЫ БЛЯТЬcontains profanity. This was flagged in a previous review.
168-176: YAML indentation inconsistency - already flagged.The
components:list items use 4-space indentation here, while earlier entries use 2-space indentation. This was flagged in a previous review regarding parse risk.
🧹 Nitpick comments (3)
Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs (1)
14-14: Unused public dictionarySlotHideCounts.This dictionary is declared but never read or written. Either remove it or implement the intended tracking logic.
- public Dictionary<(EntityUid, string), int> SlotHideCounts { get; set; } = new();Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml (1)
18-53: Consider unique display names for sock variants.Multiple entities (lines 21, 30, 39, 48) all use
name: Socks, making them indistinguishable in inventory/vendor UIs. Consider more descriptive names like "Bee Knee Socks", "Bee Thigh Socks", "Fishnet Stockings" to improve player experience.Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml (1)
156-172: Duplicate display names for different entities.
ClothingUnderwearTopBraStrapless(line 158) andClothingUnderwearTopBraStraplessAlt(line 167) both havename: Strapless Bra. Consider differentiating them (e.g., "Strapless Bra (Alt)") for clarity.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
Content.Shared/Inventory/InventoryTemplatePrototype.cs(2 hunks)Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs(1 hunks)Resources/Prototypes/Entities/Mobs/Species/base.yml(2 hunks)Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml(1 hunks)Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml(1 hunks)Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs (1)
Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs (1)
TryGetSlot(233-244)
🔇 Additional comments (4)
Content.Shared/Inventory/InventoryTemplatePrototype.cs (1)
72-74: LGTM - Properties support slot concealment logic.The
internal setmodifier onStripHiddenand the newHideCountproperty enable theHideWhenConcealedSystemto dynamically manage slot visibility. Consider adding XML doc comments toHideCountfor consistency with other properties (e.g.,StripHiddenhas a summary).Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml (1)
1-16: Base entity structure looks correct.The abstract base properly defines the
socksslot, tag, and common components. Child entities will inherit these correctly.Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml (1)
1-16: Base entity structure looks correct.The abstract base properly defines the
underweartslot and tag configuration.Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml (1)
44-44: No changes needed - sprite paths are correct.The sprite paths reference
White/Clothing/Underwear/Bottom/heads/capitan/which correctly matches the actual asset directories in the repository (Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/). The naming is intentional, not a typo.Likely an incorrect or invalid review comment.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs (1)
35-36: Minor inconsistency: mixingent.Ownerandargs.Equipee.Both
ent.Ownerandargs.Equipeereference the same entity (the equipee/mob), but using both in the same method is inconsistent. Consider using onlyargs.Equipeethroughout for clarity, since it's explicitly named and already available from the event args.- if (!TryComp<InventoryComponent>(ent.Owner, out var inv)) + if (!TryComp<InventoryComponent>(args.Equipee, out var inv)) return;Apply the same change in both
OnUnequipandOnEquip.Also applies to: 46-47, 66-67, 77-78
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs(1 hunks)Resources/Locale/ru-RU/clothing/socks.ftl(1 hunks)Resources/Prototypes/Entities/Mobs/Species/base.yml(2 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs (2)
Content.Shared/Inventory/InventorySystem.Equip.cs (1)
InventorySystem(126-672)Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs (1)
TryGetSlot(233-244)
🔇 Additional comments (10)
Resources/Prototypes/Entities/Mobs/Species/base.yml (2)
274-278: LGTM! Layer ordering is now correct and consistent.The sprite layer ordering in BaseMobSpecies correctly positions feet (LFoot, RFoot) before socks, ensuring proper visual rendering. The previously flagged critical inconsistency with BaseSpeciesDummy has been successfully resolved.
614-618: LGTM! BaseSpeciesDummy now matches BaseMobSpecies layer ordering.The sprite layer sequence is now consistent with BaseMobSpecies, ensuring character previews and dummy displays render correctly with feet under socks.
Resources/Locale/ru-RU/clothing/socks.ftl (1)
1-75: LGTM! Duplicate key fixed and translations are well-structured.The duplicate
ent-ClothingUnderwearSocksRainbowThighkey has been successfully resolved. All 25 sock/stocking entries now have unique keys with consistent Russian translations following proper Fluent format.Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs (7)
1-10: LGTM: Clean class structure.The imports, namespace, and class declaration follow standard patterns for an EntitySystem implementation.
12-24: LGTM: Dictionary structure is correct after the previous fix.The
SlotsToHidedictionary now correctly maps slot names (which matchargs.Slotvalues) to comma-separated lists of affected slots. The static approach is appropriate for this immutable configuration.
26-31: LGTM: Standard event subscription pattern.The initialization correctly subscribes to the equip and unequip events on entities with
MobStateComponent.
51-52: LGTM: Good defensive check.The guard condition prevents
HideCountfrom going negative, which is good defensive programming.
41-42: LGTM: Robust string parsing.Using
StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntriesensures the comma-separated slot IDs are parsed correctly even if there are extra spaces or trailing commas.Also applies to: 72-73
38-39: Verify thatargs.Slotis a string and matches slot definition IDs.The code assumes
args.Slotis a string that matches the slot IDs used inSlotsToHide(e.g., "outerClothing", "jumpsuit"). While the previous fix correctly changed from prototype ID lookup to slot lookup, confirm thatDidEquipEvent.SlotandDidUnequipEvent.Slotproperties are indeed strings (or implicitly convertible) and contain the slot name rather than a different identifier.#!/bin/bash # Find the DidEquipEvent and DidUnequipEvent definitions to verify Slot property type echo "=== Searching for DidEquipEvent and DidUnequipEvent definitions ===" ast-grep --pattern $'class DidEquipEvent { $$$ }' ast-grep --pattern $'class DidUnequipEvent { $$$ }' echo "" echo "=== Alternative: Search for event definitions with 'Slot' property ===" rg -n -A 10 'class Did(Equip|Unequip)Event' --type csAlso applies to: 69-70
33-62: The premise of this review comment is incorrect.DidEquipEventfires even for items equipped during entity initialization becauseEquipStartingGearcallsInventorySystem.TryEquip(), which uses the container system to insert items. When items are inserted into containers, the container system raisesEntInsertedIntoContainerMessage, triggeringOnEntInserted()which raisesDidEquipEvent. This happens regardless of theraiseEvent: falseparameter, which only controlsStartingGearEquippedEvent. Therefore,HideCountwill be initialized correctly for pre-equipped concealing items, and no separate initialization pass is needed.Likely an incorrect or invalid review comment.
|
RSI Diff Bot; head commit ea3ba56 merging into f2deb14 Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi
Resources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi
Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi
Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi
Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
Resources/Prototypes/_Maid/Loadouts/Underwear/underwear.yml (1)
2-15: Consider addingUnsexedtoFemaleUnderwearfor consistency.
MaleUnderwearincludes bothMaleandUnsexed, butFemaleUnderwearonly includesFemale. This asymmetry may prevent unsexed characters from selecting female-designated underwear options. If intentional, document the reasoning; otherwise, consider addingUnsexedtoFemaleUnderwearfor parity.
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
Content.Shared/Inventory/InventoryTemplatePrototype.cs(2 hunks)Content.Shared/_Maid/Preferences/Loadouts/Effects/SexLoadoutEffect.cs(1 hunks)Resources/Prototypes/InventoryTemplates/human_inventory_template.yml(1 hunks)Resources/Prototypes/Loadouts/role_loadouts.yml(39 hunks)Resources/Prototypes/_Maid/Loadouts/Underwear/head_loadouts.yml(1 hunks)Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml(1 hunks)Resources/Prototypes/_Maid/Loadouts/Underwear/underwear.yml(1 hunks)
🔇 Additional comments (5)
Resources/Prototypes/Loadouts/role_loadouts.yml (2)
137-138: Underwear loadout groups are consistently applied across roles.The pattern of role-specific underwear groups for head positions (Captain, CE, CMO, HoP, HoS, QM, RD) and
DefaultUnderwearWhitefor regular roles is applied consistently throughout the file.
962-963: Unrelated change:SurvivalExtendedadded toRoleSurvivalEVA.This addition appears unrelated to the underwear feature. If intentional, consider documenting the purpose. If accidental, this should be removed or addressed in a separate PR.
Resources/Prototypes/InventoryTemplates/human_inventory_template.yml (1)
32-64: New underwear slots are properly configured and fully supported.All three slots follow the existing pattern with appropriate
stripHidden: truefor privacy. The referencedslotTexturevalues (socks,underwearb,underweart) are all defined with corresponding tags, entity definitions, and UI texture assets across multiple interface themes. The whitelist tags correctly restrict equipment to appropriate items.Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml (1)
17-20: All three loadout IDs (CaptainUnderwearBottomBoxers,CaptainUnderwearBottomPanties,CaptainUnderwearTopBra) are defined inhead_loadouts.ymland properly referenced. No action needed.Resources/Prototypes/_Maid/Loadouts/Underwear/head_loadouts.yml (1)
1-174: Role-specific loadouts are well-structured and properly configured.The loadout definitions follow a consistent pattern across all 7 roles with appropriate sex-based effect groups. All referenced entity prototypes (e.g.,
ClothingUnderwearBottomBoxersCap,ClothingUnderwearTopBraCE) are defined in the underwear entity files, and loadout IDs are correctly referenced inloadout_groups.yml.
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (1)
Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml (1)
1-9: Previous localization key issue has been addressed.The
namefield now correctly usesloadout-group-default-white-underwearinstead of the previously incorrectloadout-group-default-captain-underwear.
🧹 Nitpick comments (3)
Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml (3)
60-70: Consider whetherstripHidden: trueis appropriate for socks.The
socksslot hasstripHidden: true, which is typically used for private/intimate clothing items. Socks are generally not considered private items in most contexts. This setting affects whether the slot is visible during stripping interactions.Review whether this matches your intended game mechanics. If socks should be treated as regular visible clothing, consider removing
stripHidden: trueor setting it tofalse.🔎 Proposed change if socks should be visible
- name: socks #WD slot slotTexture: socks slotFlags: SOCKS stripTime: 6 uiWindowPos: 4,1 strippingWindowPos: 3,3 displayName: Socks - stripHidden: true whitelist: tags: - socks
71-81: Consider more neutral terminology fordisplayName.The slot uses
displayName: Panties, which is a gendered/specific term. In games with diverse character customization options, consider using more neutral terminology such as:
- "Bottom Underwear"
- "Underwear (Bottom)"
- "Lower Underwear"
This is purely a UX consideration and may depend on your game's tone and target audience. If the specific terminology is intentional for your setting, this can be safely ignored.
🔎 Example of neutral terminology
- name: underwearb #WD slot slotTexture: underwearb slotFlags: UNDERWEARB stripTime: 6 uiWindowPos: 4,2 strippingWindowPos: 3,2 - displayName: Panties + displayName: Bottom Underwear stripHidden: true whitelist: tags: - underwearb
82-92: Consider more neutral terminology fordisplayName.The slot uses
displayName: Bra, which is a gender-specific term. In games with diverse character options, consider using more inclusive terminology such as:
- "Top Underwear"
- "Underwear (Top)"
- "Upper Underwear"
- "Chest Underwear"
As with the
underwearbslot, this depends on your game's design philosophy and target audience.🔎 Example of neutral terminology
- name: underweart #WD slot slotTexture: underweart slotFlags: UNDERWEART stripTime: 6 uiWindowPos: 4,3 strippingWindowPos: 3,1 - displayName: Bra + displayName: Top Underwear stripHidden: true whitelist: tags: - underweart
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (15)
Content.Shared/Inventory/InventoryTemplatePrototype.cs(1 hunks)Resources/Locale/ru-RU/_Maid/underwear.ftl(1 hunks)Resources/Prototypes/Entities/Mobs/Species/arachnid.yml(1 hunks)Resources/Prototypes/Entities/Mobs/Species/moth.yml(1 hunks)Resources/Prototypes/Entities/Mobs/Species/vox.yml(1 hunks)Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml(2 hunks)Resources/Prototypes/Loadouts/role_loadouts.yml(39 hunks)Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml(1 hunks)Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml(4 hunks)Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml(1 hunks)Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml(2 hunks)Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml(2 hunks)Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml(2 hunks)Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml(1 hunks)Resources/Prototypes/_Maid/Loadouts/socks_loadouts.yml(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- Content.Shared/Inventory/InventoryTemplatePrototype.cs
- Resources/Prototypes/Loadouts/role_loadouts.yml
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-12-18T00:29:34.755Z
Learnt from: RedBurningPhoenix
Repo: TheMaidDev/The-Maid-14 PR: 34
File: Resources/Prototypes/Datasets/Names/base_gendered.yml:11-11
Timestamp: 2025-12-18T00:29:34.755Z
Learning: The-Maid-14 is a Russian-focused fork where ru-RU locale is the primary and most complete locale. Dataset counts in Resources/Prototypes/Datasets/ are based on ru-RU availability, and it's acceptable for en-US to have fewer entries.
Applied to files:
Resources/Locale/ru-RU/_Maid/underwear.ftl
🔇 Additional comments (15)
Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml (2)
11-86: Consistent structure across role-specific underwear groups.All role-specific groups follow a uniform pattern with appropriate localization keys,
minLimit: 2, andhidden: true. Each group provides boxers, panties, and bra options.
90-118: All referenced loadout definitions are properly defined.The SocksUnderwear group references 24 loadout IDs, and verification confirms all of them are defined in the codebase.
Resources/Locale/ru-RU/_Maid/underwear.ftl (1)
1-1: Localization entry looks correct.The sex restriction message provides clear feedback for sex-based loadout validation. Based on learnings, ru-RU is the primary locale for this Russian-focused fork, so no en-US fallback is required.
Resources/Prototypes/_Maid/Loadouts/socks_loadouts.yml (1)
1-124: Well-structured loadout definitions with consistent pattern.All 25 sock/stocking loadouts follow a uniform structure mapping the
socksequipment slot to clothing entities. The IDs correctly correspond to those referenced in theSocksUnderweargroup, and all referenced clothing entity prototypes exist in Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml.Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml (1)
253-254: LGTM - Consistent layer additions across both entities.The visual layers are correctly added to both
BaseMobResomiandMobResomiDummy, maintaining consistency between the in-game entity and character setup dummy. Layer positioning follows the same logical pattern as other species.Also applies to: 257-257, 379-380, 383-383
Resources/Prototypes/Entities/Mobs/Species/moth.yml (1)
215-216: LGTM - Visual layers integrated correctly with existing underwear system.The new layers are appropriately positioned after the existing
Undershirtlayer, maintaining proper visual hierarchy. The integration with moth's existing underwear visualization system is logical.Also applies to: 222-222
Resources/Prototypes/Entities/Mobs/Species/arachnid.yml (1)
142-143: LGTM - Layers positioned correctly.Visual layers integrated appropriately with arachnid's existing sprite definition. Layer ordering ensures proper rendering hierarchy.
Also applies to: 147-147
Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml (1)
97-98: LGTM - Standard layer implementation.Visual layers added consistently with the pattern established across other species files.
Also applies to: 104-104
Resources/Prototypes/Entities/Mobs/Species/vox.yml (1)
207-208: LGTM - Layers integrate well with Vox's custom rendering order.The new layers fit appropriately into Vox's specialized sprite layer ordering (which redefines the entire order for tail rendering over equipment). No conflicts with existing layer hierarchy.
Also applies to: 212-212
Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml (1)
82-83: LGTM - Correct positioning relative to stencil operations.The layers are properly positioned before the
StencilClearshader, ensuring they're affected by Vulpkanin's stencil masking system. This maintains visual consistency with the species' rendering pipeline.Also applies to: 99-99
Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml (1)
96-97: LGTM - Consistent implementation across species.Visual layers added following the same pattern as other species. The underwear and socks system has been uniformly implemented across all species definitions in this PR.
Also applies to: 103-103
Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml (1)
23-24: Visual layers correctly integrated with clothing system.The three new visual layers (underwearb, underweart, socks) are positioned appropriately in the rendering order: underwear layers after body parts but before other clothing, and socks after feet. These layers are properly registered in the tag system and mapped in ClientClothingSystem.cs, consistent with their usage across other species definitions (vulpkanin, rodentia, feroxi, and shadowkin).
Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml (2)
142-143: LGTM! Consistent layer definitions between main and dummy entities.The new visual layers are properly mirrored between
BaseMobFeroxiandMobFeroxiDummy, ensuring that character previews in the lobby will correctly display underwear and socks matching the in-game appearance.Also applies to: 156-156
46-47: Custom layer names are properly supported by the rendering system.The slot flags (UNDERWEARB, UNDERWEART, SOCKS) are correctly defined in
Content.Shared/Inventory/SlotFlags.csand mapped to string layer identifiers inContent.Client/Clothing/ClientClothingSystem.cs. The layers are consistently used across multiple species files (plasmaman, shadowkin, silicon_base) and supported by the tag system. The rendering pipeline properly handles these custom layers.Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml (1)
60-92: Add required tags to clothing entities for slot filtering.Textures and slot flags are properly defined, but the whitelist tags are missing: no clothing entities in the codebase are tagged with
socks,underwearb, orunderweart. This applies to both the arachnid and human templates. Clothing items like socks need these tags added so they can be placed in their respective inventory slots.
- Socks entities exist (e.g.,
ClothingUnderSocksBee,ClothingUnderSocksCoder) but need thesockstag- Underwearb and underweart clothing entities are not yet defined
- Add tags at the entity level in the appropriate clothing prototype files to enable slot filtering
There was a problem hiding this comment.
Actionable comments posted: 17
♻️ Duplicate comments (4)
Resources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/meta.json (1)
2-3: Add original creator attribution for CC-BY-SA-3.0 compliance.The copyright field must include the original creator/artist name to satisfy CC-BY-SA-3.0 legal requirements. Update from
"Taken from https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13"to include the creator's name (e.g.,"Original by [Artist Name] from S.P.L.U.R.T-Station-13").Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/meta.json (1)
1-22: Attribution concern already flagged.The CC-BY-SA attribution issue for this file was addressed in a previous review comment. No additional concerns beyond that.
Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/meta.json (1)
1-22: Same attribution concern as other sock assets.This file has the same minimal CC-BY-SA attribution pattern flagged in
rainbow_knee.rsi. Consider updating all sock asset metadata files consistently with proper attribution (author, source, license, modifications).Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/meta.json (1)
1-22: Same license compatibility verification needed as stockings_blue variant.This file is structurally identical to the stockings_blue.rsi/meta.json file and shares the same CC-BY-SA-3.0 license with attribution to SPLURT-Station. The same license compatibility verification applies here.
🧹 Nitpick comments (4)
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/meta.json (1)
1-22: Consider correcting the directory path.The file path includes
/heads/hos/boxers.rsi, but "heads" is semantically incorrect for bottom underwear. This naming inconsistency could confuse maintainers who expect head-slot items in a "heads" directory.Consider renaming the directory structure to something like
/departments/hos/boxers.rsior/roles/hos/boxers.rsifor better clarity.</review_comment_end -->
Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml (2)
110-281: Consider adding more descriptive flavor text.Many entity descriptions (lines 115, 124, 133, 142, 151, 160, 169, 179, 188, 197, 206, 215, 224, 233, 242, 251, 260, 269, 278) simply repeat the item name with no additional context or flavor text. This contrasts with the department head underwear items (lines 50, 59, 68, 77, 86, 95, 104), which include more engaging descriptions.
Adding unique, descriptive text would improve the player experience and item discoverability.
111-281: Consider standardizing name capitalization.The capitalization of "bra" in item names is inconsistent:
- Items like "Fishnet Bra" (line 205), "Halterneck Bra" (line 232), "Shibari Bra" (line 241) capitalize "Bra"
- Items like "Binder bra" (line 123), "Kinky bra" (line 141), "Neko bra" (line 150), "Strapless bra" (line 160) use lowercase "bra"
Standardizing to either title case ("Bra") or sentence case ("bra") throughout would improve consistency.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/meta.json (1)
1-22: Note: Directory name uses "capitan" spelling.The parent directory uses "capitan" instead of the standard English spelling "captain". If this is intentional (e.g., for localization or lore reasons), it's fine. However, if it's a typo, you may want to ensure consistency across all related files.
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (196)
Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming_alt.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.png
📒 Files selected for processing (73)
Resources/Locale/ru-RU/_Maid/underwear.ftlResources/Prototypes/_DV/Entities/Mobs/Species/chitinid.ymlResources/Prototypes/_DV/Entities/Mobs/Species/feroxi.ymlResources/Prototypes/_DV/Entities/Mobs/Species/rodentia.ymlResources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.ymlResources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.ymlResources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.ymlResources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.ymlResources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/meta.json
✅ Files skipped from review due to trivial changes (27)
- Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/meta.json
- Resources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/meta.json
🚧 Files skipped from review as they are similar to previous changes (6)
- Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml
- Resources/Locale/ru-RU/_Maid/underwear.ftl
- Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml
- Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml
- Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml
- Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml
🔇 Additional comments (40)
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/meta.json (1)
1-22: JSON metadata is well-formed and properly configured.The file correctly follows the RSI format with valid sprite state definitions. The UNDERWEARB slot is properly defined in the inventory templates, and the CC-BY-SA-3.0 license is consistent with all other texture assets throughout the codebase.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/meta.json (1)
1-22: Verify the file path contains correct directory structure.The file path includes
heads/hop/directory structure (Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/meta.json), which seems unusual for a general underwear bottom item.Please confirm:
- Is this asset intended to be role-specific (Head of Personnel)?
- Are entity definitions and loadout references using the correct path with
heads/hop/?- Do other underwear bottom assets follow a similar directory structure, or is this unique to this item?
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/meta.json (1)
1-22: License and copyright attribution are correct.The CC-BY-SA-3.0 license and attribution to SPLURT-Station are accurate. SPLURT-Station assets use CC-BY-SA 3.0, and the source repository URL provides proper attribution per the license requirements.
Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/meta.json (2)
11-11: The SOCKS slot is properly defined in the inventory system asSOCKS = 1 << 18in SlotFlags.cs, and the state namesequipped-SOCKSandequipped-SOCKS-body-slimin the metadata file correctly correspond to this slot flag.
2-3: Verify license compatibility and attribution requirements.The asset uses CC-BY-SA-3.0, which is a copyleft license requiring derivative works to be shared under the same license. Ensure this is compatible with the project's AGPL-3.0-or-later licensing. Additionally, verify that the attribution to SPLURT-Station meets CC-BY-SA-3.0 requirements (author names, link to license, indication of changes if any).
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/meta.json (2)
9-21: Verify sprite files exist in the RSI directory.The metadata defines three sprite states:
equipped-UNDERWEARB,equipped-UNDERWEARB-body-slim, andicon. Ensure the corresponding PNG files exist in the same directory:
equipped-UNDERWEARB.png(with directional frames for 4 directions)equipped-UNDERWEARB-body-slim.png(with directional frames for 4 directions)icon.pngThe state naming follows the expected
UNDERWEARBslot convention, and including slim body variants supports multiple character body types.
1-8: Verify file path matches entity references and license compatibility.The file path indicates this is a QM-specific variant (
heads/qm/boxers.rsi), but the AI summary references a baseboxers.rsi/meta.json. Please confirm:
Path consistency: Ensure entity definitions in
Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.ymlcorrectly reference this path as_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsifor QM boxers.License compatibility: The CC-BY-SA-3.0 license requires derivative works to be shared under the same or compatible license. Verify that this combination is acceptable with the project's AGPL-3.0 licensing policy and that proper attribution is maintained.
Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml (2)
99-99: Verify socks layer naming and cross-species consistency.The socks layer is well-positioned after feet and before handcuffs for proper rendering order. However, please verify:
- The layer name
socksmatches the casing expected by the client clothing system (the SlotFlags enum may define this asSOCKSin all-caps).- This layer has been added consistently to all other species files.
82-83: No action needed. The layer namesunderwearbandunderweartare correctly named for the client clothing system, which expects lowercase keys that map to the uppercase enum values (UNDERWEART,UNDERWEARB). This pattern is consistently applied across all species files (arachnid, base, moth, vox, chitinid, feroxi, rodentia, vulpkanin, plasmaman, resomi). The positioning beforeStencilClearis correct for the rendering pipeline.Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/meta.json (1)
1-22: JSON structure and metadata look correct.The metadata file is well-formed with appropriate:
- Size specification (32×32)
- State definitions for equipped sprites with 4 directions for both standard and slim body types
- Icon state for inventory display
This follows the expected pattern for clothing texture assets in the game engine.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/meta.json (2)
9-21: LGTM: State definitions follow standard RSI pattern.The state definitions are correctly structured:
equipped-UNDERWEARBandequipped-UNDERWEARB-body-slimwith 4 directions for different body typesiconstate for inventory displayThis matches the standard pattern described in the AI summary across multiple underwear variants.
2-3: License and attribution are correctly declared.Verification confirms that SPLURT-Station's texture assets are licensed under CC-BY-SA-3.0, and the metadata correctly references the source repository. The attribution in line 3 provides appropriate traceability to the source.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/meta.json (1)
1-22: The SPLURT-Station repository exists and is accessible, but verify license compatibility with your project.The copyright source is valid. However, CC-BY-SA-3.0 assets are not compatible with AGPL-3.0 licensing—Creative Commons designated only CC-BY-SA-4.0 as compatible with GPLv3/AGPL-3.0. Using CC-BY-SA-3.0 assets in an AGPL-3.0 project requires explicit permission from the original rightsholder or dual-licensing arrangements.
Note: This same attribution and licensing pattern is used across many asset files in your codebase (60+ underwear-related RSI files follow this exact pattern). If not already addressed through project licensing agreements, consider clarifying your asset licensing policy to ensure compliance.
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/meta.json (2)
1-22: JSON structure is valid and well-formed.The metadata structure correctly defines the RSI asset with appropriate states for equipped items (with directional sprites) and icons. The 32x32 size and state definitions are consistent with similar assets.
2-3: Verify upstream license and improve attribution consistency.The copyright field uses minimal attribution (URL only) while other similar SPLURT-Station assets in the codebase include commit hashes and contributor names. For CC-BY-SA-3.0 compliance, consider:
- Adding a specific commit hash (e.g., as shown in other files like snouts.rsi)
- Including original author/artist names if available from upstream
- Confirming compatibility with the project's AGPL-3.0 license for redistributed CC-BY-SA-3.0 assets
Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/meta.json (1)
1-22: JSON metadata structure is correct.The RSI metadata follows the proper SS14 format with valid JSON syntax and appropriate state definitions for clothing items (equipped states for different body types plus icon state).
Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/meta.json (1)
1-22: LGTM! Consistent metadata structure.The metadata structure matches the pantyhose_ripped variant, which is good for consistency. JSON syntax is valid and state definitions are appropriate for the clothing system.
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/meta.json (1)
1-22: LGTM!The metadata structure is valid and follows the established pattern for stocking assets, including both regular and slim body variants with proper directional states.
Resources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/meta.json (1)
1-18: LGTM!Valid metadata structure consistent with other bra texture assets.
Resources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/meta.json (1)
1-18: LGTM!Metadata follows the established pattern for top underwear assets.
Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/meta.json (1)
1-18: LGTM!Consistent metadata structure for the BeeKini bra variant.
Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/meta.json (1)
1-18: LGTM!Valid metadata for strapless bra alternative variant.
Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/meta.json (1)
1-18: LGTM!Valid metadata for strapless bra variant.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/meta.json (1)
1-22: LGTM!Valid metadata for the Quartermaster-specific panties variant, properly including both regular and slim body states.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/meta.json (1)
1-22: LGTM!Valid metadata for the neko panties variant with proper state definitions.
Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml (1)
1-16: "underweart" is the correct slot name—no issues found.The codebase verification confirms that "underweart" is the intentional slot name defined in the inventory templates (
human_inventory_template.ymlandarachnid_inventory_template.yml), not a typo. The parallel slot naming "underwearb" for bottom underwear confirms this is a deliberate naming convention. The usage in Top.yml lines 5, 13, and 16 is correct.Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/meta.json (1)
1-22: JSON structure looks good.The RSI metadata is well-formed and follows Space Station 14 conventions. The sprite states are properly defined with appropriate directional variants for the base and slim body types, plus an icon state for inventory display.
Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/meta.json (2)
1-22: Well-formed RSI metadata structure.The JSON structure is valid and follows the standard RSI metadata pattern with all required fields present.
11-19: Verify SOCKS slot name consistency.The sprite states use "SOCKS" as the slot identifier. Confirm this matches the exact slot name defined in the inventory system (referenced in Content.Shared/Inventory/SlotFlags.cs per the AI summary).
Resources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/meta.json (1)
11-16: [Rewritten review comment]
[Classification tag]Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/meta.json (1)
1-22: No changes needed. The copyright URL is accessible, and CC-BY-SA-3.0 artwork distributed as a separate asset file alongside AGPL-3.0-or-later code is standard practice in game projects and fully compliant when both licenses are properly maintained and attributed (as they are here).Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/meta.json (1)
1-22: Confirm license compatibility with project policy for CC-BY-SA-3.0 assets.The asset uses CC-BY-SA-3.0 while the codebase uses AGPL-3.0-or-later. These licenses can coexist when kept separately (each file retains its original license), but CC-BY-SA-3.0 itself is not directly relicensable to AGPL-3.0. Please confirm this mixed-licensing arrangement is intentional and documented in the project's licensing policy.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/meta.json (1)
1-22: JSON structure is valid and follows RSI metadata conventions.The metadata structure correctly defines the sprite states, size, and versioning for the mankini underwear asset.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/meta.json (1)
5-21: JSON structure and state definitions look correct.The metadata structure follows the RSI format properly:
- Standard 32×32 size for clothing sprites
- Three states defined: equipped variant for normal body, equipped variant for slim body, and inventory icon
- Directional states (4 directions) are appropriate for character-facing clothing items
Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/meta.json (1)
9-21: Sprite state definitions look correct.The JSON structure properly defines three sprite states following the expected pattern:
equipped-UNDERWEARB: Main equipped state with 4 directional spritesequipped-UNDERWEARB-body-slim: Variant for slim body types with 4 directional spritesicon: Static inventory iconThe structure aligns with the established pattern mentioned in the AI summary.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/meta.json (2)
1-22: LGTM: JSON structure is well-formed.The metadata file follows the expected RSI format with proper JSON syntax and all required fields present.
9-21: Sprite states are properly defined.The sprite states follow the expected pattern for clothing items:
- Base equipped state with directional support
- Body-type variant (slim) with directional support
- Icon state for inventory display
This aligns with the structure used by other underwear items in the system.
Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/meta.json (1)
1-22: JSON structure is valid.The RSI metadata file is properly formatted with correct syntax, appropriate states for directional clothing sprites with body-type variants, and standard dimensions.
Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/meta.json (2)
4-8: LGTM!The metadata structure follows the standard RSI format with appropriate version and sprite dimensions (32x32).
9-21: LGTM!The sprite states are properly defined with:
- Directional sprites (4 directions) for the underwear bottom slot
- Body type variant for slim characters
- Icon state for inventory display
The structure follows the expected RSI format correctly.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
Resources/Locale/ru-RU/_Maid/underwear.ftl (1)
1-9: LGTM! Russian localizations are accurate and grammatically correct.All translations are well-formed:
- Sex restriction message is clear and appropriate
- Job titles correctly use genitive case after "нижнее белье"
- Key naming is consistent and aligns with the loadout system
Optional style suggestion for line 1:
In Russian, "недоступен" (one word) is slightly more idiomatic than "не доступен" (two words), though both are grammatically acceptable.
🔎 Optional style refinement
-loadout-group-sex-restriction = Этот предмет не доступен для вашего пола. +loadout-group-sex-restriction = Этот предмет недоступен для вашего пола.
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
Resources/Locale/ru-RU/_Maid/underwear.ftl
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-12-18T00:29:41.784Z
Learnt from: RedBurningPhoenix
Repo: TheMaidDev/The-Maid-14 PR: 34
File: Resources/Prototypes/Datasets/Names/base_gendered.yml:11-11
Timestamp: 2025-12-18T00:29:41.784Z
Learning: The-Maid-14 is a Russian-focused fork where ru-RU locale is the primary and most complete locale. Dataset counts in Resources/Prototypes/Datasets/ are based on ru-RU availability, and it's acceptable for en-US to have fewer entries.
Applied to files:
Resources/Locale/ru-RU/_Maid/underwear.ftl
There was a problem hiding this comment.
Actionable comments posted: 6
♻️ Duplicate comments (1)
Resources/Prototypes/tags.yml (1)
1776-1790: Fix alphabetical ordering and naming inconsistency in Maid tags section.As previously flagged, the tags in the Maid section violate the file's alphabetical ordering requirement (line 249: "PUT YOUR TAGS IN ALPHABETICAL ORDER"). The current order is
socks,underwearb,underweart,Crystal, but alphabetically it should beCrystal(orcrystal),socks,underwearb,underweart.Additionally, the
Crystaltag uses PascalCase while the other three tags use lowercase, creating a naming inconsistency. Based on the past review, theCrystaltag also appears to have no references elsewhere in the codebase.🔎 Recommended fix
# Maid start - type: Tag - id: socks + id: Crystal - type: Tag - id: underwearb + id: socks - type: Tag - id: underweart + id: underwearb - type: Tag - id: Crystal + id: underweart # Maid endOr, if
Crystalis unused, consider removing it entirely:# Maid start - type: Tag - id: socks - -- type: Tag - id: underwearb - -- type: Tag - id: underweart - -- type: Tag - id: Crystal + id: socks + +- type: Tag + id: underwearb + +- type: Tag + id: underweart # Maid endBased on past review comments, this issue was previously identified but not yet resolved.
🧹 Nitpick comments (3)
Resources/Prototypes/_EinsteinEngines/InventoryTemplates/ipc_inventory_template.yml (1)
175-175: Consider using localization keys for displayName.The
displayNamevalues use hardcoded English strings. While this matches the existing pattern in the file, using localization keys (e.g.,inventory-slot-socks) would improve internationalization support.Also applies to: 185-185, 195-195
Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml (2)
91-93: Remove or clarify the "Wtf?" comment.The comment "# Wtf?" is unprofessional and provides no useful context. Either remove it or replace it with a meaningful explanation if there's something unusual about the socks layer.
🔎 Suggested fix
- map: [ "underwearb" ] # Maid - map: [ "underweart" ] # Maid - - map: [ "socks" ] # Wtf? + - map: [ "socks" ] # Maid
243-245: Remove or clarify the "Wtf?" comment (duplicate issue).Same unprofessional comment appears here in the dummy entity definition.
🔎 Suggested fix
- map: [ "underwearb" ] # Maid - map: [ "underweart" ] # Maid - - map: [ "socks" ] # Wtf? + - map: [ "socks" ] # Maid
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (27)
Resources/Textures/Interface/Ashen/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Ashen/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Ashen/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Clockwork/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Clockwork/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Clockwork/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Default/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Default/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Default/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Minimalist/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Minimalist/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Minimalist/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Plasmafire/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Plasmafire/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Plasmafire/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Retro/SlotBackground.pngis excluded by!**/*.pngResources/Textures/Interface/Retro/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Retro/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Retro/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/Interface/Slimecore/Slots/socks.pngis excluded by!**/*.pngResources/Textures/Interface/Slimecore/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/Interface/Slimecore/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Interface/CosmicCult/Slots/socks.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Interface/CosmicCult/Slots/underwearb.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Interface/CosmicCult/Slots/underweart.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.pngResources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART-body-slim.pngis excluded by!**/*.png
📒 Files selected for processing (28)
Resources/Locale/ru-RU/_Maid/underwear.ftlResources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.ymlResources/Prototypes/Entities/Mobs/Species/arachnid.ymlResources/Prototypes/Entities/Mobs/Species/base.ymlResources/Prototypes/Entities/Mobs/Species/moth.ymlResources/Prototypes/Entities/Mobs/Species/vox.ymlResources/Prototypes/InventoryTemplates/arachnid_inventory_template.ymlResources/Prototypes/InventoryTemplates/corpse_inventory_template.ymlResources/Prototypes/InventoryTemplates/digitigrade_inventory_template.ymlResources/Prototypes/InventoryTemplates/diona_inventory_template.ymlResources/Prototypes/InventoryTemplates/human_inventory_template.ymlResources/Prototypes/InventoryTemplates/monkey_inventory_template.ymlResources/Prototypes/Loadouts/role_loadouts.ymlResources/Prototypes/_DV/Entities/Mobs/Species/chitinid.ymlResources/Prototypes/_DV/Entities/Mobs/Species/feroxi.ymlResources/Prototypes/_DV/Entities/Mobs/Species/harpy.ymlResources/Prototypes/_DV/Entities/Mobs/Species/rodentia.ymlResources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.ymlResources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.ymlResources/Prototypes/_EinsteinEngines/InventoryTemplates/ipc_inventory_template.ymlResources/Prototypes/_EinsteinEngines/InventoryTemplates/plasmaman_inventory_template.ymlResources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.ymlResources/Prototypes/_Goobstation/InventoryTemplates/yowie_inventory_template.ymlResources/Prototypes/_Maid/Loadouts/Underwear/head_loadouts.ymlResources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.ymlResources/Prototypes/tags.ymlResources/Textures/Interface/Default/meta.jsonResources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/meta.json
🚧 Files skipped from review as they are similar to previous changes (7)
- Resources/Prototypes/_Maid/Loadouts/Underwear/head_loadouts.yml
- Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml
- Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml
- Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml
- Resources/Locale/ru-RU/_Maid/underwear.ftl
- Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml
- Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml
⏰ 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: Test Packaging
- GitHub Check: YAML Linter
- GitHub Check: YAML map schema validator
- GitHub Check: build (ubuntu-latest)
- GitHub Check: build (ubuntu-latest)
🔇 Additional comments (20)
Resources/Textures/Interface/Default/meta.json (1)
84-93: LGTM! The JSON syntax and format are correct.The three new state entries (socks, underwearb, underweart) are properly formatted and consistent with existing entries. The naming convention matches the system-wide slot definitions in
SlotFlags.csand the clothing system mappings inClientClothingSystem.cs, confirming intentional naming across the codebase.Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/meta.json (2)
2-3: Verify CC-BY-SA-3.0 license compatibility with project AGPL-3.0.The asset uses CC-BY-SA-3.0 while the project is AGPL-3.0-or-later. While Creative Commons licenses are commonly used for game assets alongside AGPL code, you should confirm that this license combination is acceptable for your project's compliance requirements. Attribution to SPLURT-Station is properly provided.
9-21: Slot naming matches inventory system constants.The
UNDERWEARTconstant is properly defined in SlotFlags (Content.Shared/Inventory/SlotFlags.cs), confirming the state namesequipped-UNDERWEARTandequipped-UNDERWEART-body-slimare correctly aligned with the inventory system. The JSON structure is valid, supporting multiple body types for inclusive character customization, and the icon state correctly omits the directions property for inventory display.Resources/Prototypes/_Goobstation/InventoryTemplates/yowie_inventory_template.yml (1)
144-144: Good addition of the trailing newline.Adding a newline at the end of the file follows best practices and POSIX standards.
Resources/Prototypes/Entities/Mobs/Species/base.yml (1)
274-278: LGTM! Layer ordering is now consistent.The sprite layer ordering between
BaseMobSpeciesandBaseSpeciesDummyis now consistent, with the previous critical issue resolved. Both entities correctly render feet layers before socks and clothing.Also applies to: 614-618
Resources/Prototypes/_EinsteinEngines/InventoryTemplates/ipc_inventory_template.yml (1)
70-75: LGTM! Position adjustment accommodates new slots.The gloves position adjustment from 2,1 to 2,2 makes room for the new Maid inventory slots below.
Resources/Prototypes/InventoryTemplates/monkey_inventory_template.yml (1)
54-60: LGTM! Position adjustment is consistent with other templates.The ears slot position change from 2,2 to 2,3 aligns with similar adjustments across other inventory templates to accommodate the new Maid slots.
Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml (1)
82-83: Verify layer ordering is correct for Vulpkanin's stencil masking system.The new Maid layers are positioned differently from
BaseMobSpecies:
- vulpkanin.yml: underwearb → underweart → [StencilClear/jumpsuit] → LFoot → RFoot → socks
- base.yml: underwearb → underweart → LFoot → RFoot → socks → jumpsuit
The underwearb/underweart layers render before the StencilClear shader (line 84), while socks render after feet but well after jumpsuit. Confirm this ordering is intentional for Vulpkanin's digitigrade masking system, as the inconsistency with base species may cause unexpected visual results.
Also applies to: 99-99
Resources/Prototypes/InventoryTemplates/corpse_inventory_template.yml (1)
47-52: UI position adjustment looks reasonable.The gloves slot
uiWindowPosshift from2,1to2,2aligns with similar adjustments in other inventory templates (diona, etc.) to accommodate the new Maid-related slots being added across the PR.Resources/Prototypes/Entities/Mobs/Species/arachnid.yml (1)
142-147: Sprite layer additions are properly positioned.The new Maid-related sprite map entries (
underwearb,underweart,socks) are positioned logically in the rendering order—undergarments after base body layers and socks positioned with footwear layers.Resources/Prototypes/InventoryTemplates/diona_inventory_template.yml (1)
39-44: UI position adjustments are consistent.The gloves and ears slot position shifts align with the pattern seen in other inventory templates and make room for the new Maid slots in the UI grid.
Also applies to: 64-70
Resources/Prototypes/Entities/Mobs/Species/vox.yml (1)
207-212: Visual layer ordering looks correct.The new underwear layers (underwearb, underweart, socks) are appropriately positioned in the rendering order—underwear appears before the jumpsuit, and socks are placed after feet but before other clothing layers.
Resources/Prototypes/_EinsteinEngines/InventoryTemplates/plasmaman_inventory_template.yml (2)
31-31: UI position adjustments are correct.The gloves and ears slots have been shifted to accommodate the new underwear slots without causing position conflicts.
Also applies to: 60-60
134-165: New Maid slots are properly configured.The three new slots (socks, underwearb, underweart) have complete definitions with appropriate strip times, UI positions, whitelist tags, and display names.
Resources/Prototypes/InventoryTemplates/human_inventory_template.yml (1)
49-49: LGTM - consistent with other inventory templates.The UI position adjustments and new Maid slots are properly configured and consistent with the plasmaman template.
Also applies to: 75-75, 148-179
Resources/Prototypes/InventoryTemplates/digitigrade_inventory_template.yml (1)
141-162: This concern appears unfounded. The socks slot is not a standard inventory slot—only 2 out of 20 templates include it (human and arachnid). The original review comment incorrectly stated that plasmaman templates have socks (no plasmaman template exists in the repository), and digitigrade's omission of socks is actually consistent with 18 other templates. The socks slot is a humanoid-specific feature, not a standard expectation for all templates.Resources/Prototypes/Loadouts/role_loadouts.yml (2)
997-1001: Consider adding underwear loadouts toRoleSurvivalEVA.Unlike other role loadouts,
RoleSurvivalEVAdoes not include theDefaultUnderwearWhiteandSocksUnderweargroups. If this is intentional (e.g., for non-crew antag spawns as noted in the comments at line 931-932), this is fine. Otherwise, consider adding them for consistency.
137-139: LGTM!The Maid underwear and socks loadout additions are consistently applied across crew roles. Command roles receive role-specific underwear groups while other roles receive the default white variant. The pattern is well-maintained throughout the file.
Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml (2)
46-47: LGTM!The sprite layer mappings for
underwearb,underweart, andsocksare correctly positioned in the render order. Underwear layers are placed before the jumpsuit layer for proper occlusion, and socks are placed after the foot layers as expected.Also applies to: 60-60
142-143: Consistent layer definitions.The
MobFeroxiDummysprite layers correctly mirror theBaseMobFeroxilayer structure, ensuring the lobby character preview matches in-game rendering.Also applies to: 156-156




















































































































About the PR
Requirements
Changelog
Summary by CodeRabbit
Release Notes
✏️ Tip: You can customize this high-level summary in your review settings.