Skip to content

трусы#33

Merged
RedBurningPhoenix merged 14 commits into
TheMaidDev:masterfrom
xsainteer:underwear
Jan 3, 2026
Merged

трусы#33
RedBurningPhoenix merged 14 commits into
TheMaidDev:masterfrom
xsainteer:underwear

Conversation

@xsainteer

@xsainteer xsainteer commented Dec 12, 2025

Copy link
Copy Markdown

About the PR

Requirements

Changelog

Summary by CodeRabbit

Release Notes

  • New Features
    • Added extensive new underwear and socks customization options, including multiple style variants and role-specific designs.
    • Added new inventory slots for underwear items.
    • Implemented new loadout system for clothing customization.
    • Added Russian localization support for clothing items.
    • Expanded character appearance customization across multiple species.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai

coderabbitai Bot commented Dec 12, 2025

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This 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

Cohort / File(s) Summary
Core System Changes
Content.Client/Clothing/ClientClothingSystem.cs, Content.Shared/Inventory/SlotFlags.cs, Content.Shared/Inventory/InventoryTemplatePrototype.cs
Added three slot name mappings (socks, underweart, underwearb) to clothing system; introduced three new SlotFlags enum members (SOCKS, UNDERWEARB, UNDERWEART at bit positions 18, 17, 16); added trailing newline to InventoryTemplatePrototype.
Sex-Based Loadout Validation
Content.Shared/_Maid/Preferences/Loadouts/Effects/SexLoadoutEffect.cs
New SexLoadoutEffect class implementing sex-based loadout restrictions; validates profile sex against configured sexes list and returns localized failure reason if mismatch.
Underwear Entity Prototypes
Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml, Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml, Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml
Added base abstract entities and 70+ derived clothing items (panties, boxers, bras, socks, stockings) with sprite mappings; uses hierarchical inheritance pattern from base classes.
Inventory Template Updates
Resources/Prototypes/InventoryTemplates/*_inventory_template.yml (15 files)
Adjusted UI positioning for gloves/ears slots (uiWindowPos shifts); added new Maid section with three slots (socks, underwearb, underweart) across human, arachnid, digitigrade, diona, monkey, ipc, plasmaman, and other templates.
Loadout Configuration
Resources/Prototypes/_Maid/Loadouts/Underwear/{loadout_groups.yml, head_loadouts.yml, underwear.yml}, Resources/Prototypes/_Maid/Loadouts/socks_loadouts.yml
Defined loadout groups (DefaultUnderwearWhite, CaptainUnderwear, SocksUnderwear, etc.) with sex restrictions; created role-specific underwear loadouts mapped to equipment slots.
Localization
Resources/Locale/ru-RU/clothing/{socks.ftl, top.ftl, underwear.ftl}, Resources/Locale/ru-RU/_Maid/underwear.ftl
Added Russian translations for 70+ clothing items and loadout group labels; includes sex restriction message.
Texture Metadata
Resources/Textures/_Maid/Clothing/Underwear/{Bottom,Socks,Top}/**/meta.json (~60 files)
New JSON metadata files for underwear texture assets; each defines sprite states (equipped-UNDERWEARB/UNDERWEART/SOCKS with 4 directions, icon), licensing, and 32×32 dimensions.
Species Sprite Layer Updates
Resources/Prototypes/Entities/Mobs/Species/{base.yml, arachnid.yml, moth.yml, vox.yml}, Resources/Prototypes/_DV/Entities/Mobs/Species/*, Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml, Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml
Added underwearb, underweart, and socks visual layer mappings across 10+ species; repositioned LFoot/RFoot entries in base humanoid layers; replaced old underpants/undershirt references with new slot names in harpy.
Misc. Updates
Resources/Prototypes/tags.yml, Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml, Resources/Textures/Interface/Default/meta.json
Added four new tags (socks, underwearb, underweart, Crystal); extended vending machine inventory with maid-themed underwear stock; added three new interface states for slot visualization.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

  • TheMaidDev/The-Maid-14#6: Related through shared Maid-specific sprite assets and prototype structures; both PRs extend the Maid content module with clothing/texture definitions.

Poem

🐰 Hops gleefully through your wardrobe branch,
Three new slots join the clothing stanch,
Socks and undergarments so fine,
With sprite layers perfectly aligned,
Now your characters dress with delight!

Pre-merge checks

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'трусы' (Russian for 'underwear/panties') is directly related to the changeset, which adds comprehensive underwear, socks, and related clothing items across multiple systems including prototypes, sprites, localizations, and inventory templates.

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

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.LFoot and enum.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.LFoot and enum.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 to StripHidden corrupt shared prototype state—all entities using the same template are affected.

InventoryComponent.Slots holds a direct reference to InventoryTemplatePrototype.Slots (assigned at InventorySystem.Slots.cs:150 without cloning). When InventorySystem.Hide.cs mutates slotDef.StripHidden, it modifies the prototype's SlotDefinition array. 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 internal and 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 InventorySystem or 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 storing string[]/HashSet<string> instead of CSV + Split each call.
The “serialization issues” note doesn’t apply to a private static readonly mapping, 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 + localization

Many entities have name: Socks while 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 for components blocks

The file mixes components:\n - ... and components:\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 normalizing name casing/terminology across variants for better UI + i18n

Right 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

📥 Commits

Reviewing files that changed from the base of the PR and between f2deb14 and c0937ee.

⛔ Files ignored due to path filters (216)
  • Resources/Textures/Interface/Classic/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Classic/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Classic/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Default/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Default/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Default/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Eris/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Eris/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Eris/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/bee_shorts.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers_heart.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/boxers_striped.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/briefs.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/fishnet_lower.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/ce/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hop/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/hos/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/qm/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/heads/rd/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/jockstrap.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/mankini.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_bee_kini.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_kinky.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_neko.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_slim.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_swimming.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/panties_thin.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/striped_panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Bottom/thong.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_norm.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/bee_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/fishnet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/garter.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/pantyhose.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/pantyhose_ripped.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/rainbow_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/rainbow_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_norm.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_short.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/socks_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_blue.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_cyan.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_dpink.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_green.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_lpink.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_orange.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_purple.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/stockings_yellow.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/striped_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/striped_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/thin_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Socks/thin_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_bee_kini.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_binder.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_binder_strapless.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_kinky.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_neko.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_strapless.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_strapless_alt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_swimming.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_swimming_alt.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_swimming_alt.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_swimming_alt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_thin.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_thin.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/bra_thin.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/cow.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/cow.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/cow.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/fishnet_body.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/fishnet_body.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/White/Clothing/Underwear/Top/fishnet_body.rsi/icon.png is 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)

Comment thread Content.Shared/Inventory/InventorySystem.Hide.cs Outdated
Comment thread Resources/Locale/ru-RU/clothing/socks.ftl
Comment thread Resources/Locale/ru-RU/clothing/socks.ftl Outdated
Comment thread Resources/Locale/ru-RU/clothing/top.ftl
Comment thread Resources/Prototypes/tags.yml Outdated
Comment thread Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml
Comment thread Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 dictionary SlotHideCounts.

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) and ClothingUnderwearTopBraStraplessAlt (line 167) both have name: Strapless Bra. Consider differentiating them (e.g., "Strapless Bra (Alt)") for clarity.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c0937ee and c6ed5ba.

📒 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 set modifier on StripHidden and the new HideCount property enable the HideWhenConcealedSystem to dynamically manage slot visibility. Consider adding XML doc comments to HideCount for consistency with other properties (e.g., StripHidden has a summary).

Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml (1)

1-16: Base entity structure looks correct.

The abstract base properly defines the socks slot, 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 underweart slot 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.

Comment thread Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs Outdated
Comment thread Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs Outdated
Comment thread Resources/Prototypes/Entities/Mobs/Species/base.yml Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
Content.Shared/_Maid/HideWhenConcealed/HideWhenConcealedSystem.cs (1)

35-36: Minor inconsistency: mixing ent.Owner and args.Equipee.

Both ent.Owner and args.Equipee reference the same entity (the equipee/mob), but using both in the same method is inconsistent. Consider using only args.Equipee throughout 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 OnUnequip and OnEquip.

Also applies to: 46-47, 66-67, 77-78

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c6ed5ba and c0073fd.

📒 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-ClothingUnderwearSocksRainbowThigh key 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 SlotsToHide dictionary now correctly maps slot names (which match args.Slot values) 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 HideCount from going negative, which is good defensive programming.


41-42: LGTM: Robust string parsing.

Using StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries ensures 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 that args.Slot is a string and matches slot definition IDs.

The code assumes args.Slot is a string that matches the slot IDs used in SlotsToHide (e.g., "outerClothing", "jumpsuit"). While the previous fix correctly changed from prototype ID lookup to slot lookup, confirm that DidEquipEvent.Slot and DidUnequipEvent.Slot properties 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 cs

Also applies to: 69-70


33-62: The premise of this review comment is incorrect. DidEquipEvent fires even for items equipped during entity initialization because EquipStartingGear calls InventorySystem.TryEquip(), which uses the container system to insert items. When items are inserted into containers, the container system raises EntInsertedIntoContainerMessage, triggering OnEntInserted() which raises DidEquipEvent. This happens regardless of the raiseEvent: false parameter, which only controls StartingGearEquippedEvent. Therefore, HideCount will be initialized correctly for pre-equipped concealing items, and no separate initialization pass is needed.

Likely an incorrect or invalid review comment.

@github-actions

github-actions Bot commented Dec 17, 2025

Copy link
Copy Markdown

RSI Diff Bot; head commit ea3ba56 merging into f2deb14
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi

State Old New Status
equipped-UNDERWEARB-body-slim Added
equipped-UNDERWEARB Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi

State Old New Status
equipped-SOCKS-body-slim Added
equipped-SOCKS Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi

State Old New Status
equipped-UNDERWEART-body-slim Added
equipped-UNDERWEART Added
icon Added

Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi

State Old New Status
equipped-UNDERWEART-body-slim Added
equipped-UNDERWEART Added

Edit: diff updated after ea3ba56

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (1)
Resources/Prototypes/_Maid/Loadouts/Underwear/underwear.yml (1)

2-15: Consider adding Unsexed to FemaleUnderwear for consistency.

MaleUnderwear includes both Male and Unsexed, but FemaleUnderwear only includes Female. This asymmetry may prevent unsexed characters from selecting female-designated underwear options. If intentional, document the reasoning; otherwise, consider adding Unsexed to FemaleUnderwear for parity.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c0073fd and dcd1fdb.

📒 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 DefaultUnderwearWhite for regular roles is applied consistently throughout the file.


962-963: Unrelated change: SurvivalExtended added to RoleSurvivalEVA.

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: true for privacy. The referenced slotTexture values (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 in head_loadouts.yml and 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 in loadout_groups.yml.

Comment thread Content.Shared/Inventory/InventoryTemplatePrototype.cs Outdated
Comment thread Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml Outdated
Comment thread Resources/Prototypes/_Maid/Loadouts/Underwear/underwear.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 name field now correctly uses loadout-group-default-white-underwear instead of the previously incorrect loadout-group-default-captain-underwear.

🧹 Nitpick comments (3)
Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml (3)

60-70: Consider whether stripHidden: true is appropriate for socks.

The socks slot has stripHidden: 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: true or setting it to false.

🔎 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 for displayName.

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 for displayName.

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 underwearb slot, 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

📥 Commits

Reviewing files that changed from the base of the PR and between dcd1fdb and 974b8d9.

📒 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, and hidden: 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 socks equipment slot to clothing entities. The IDs correctly correspond to those referenced in the SocksUnderwear group, 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 BaseMobResomi and MobResomiDummy, 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 Undershirt layer, 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 StencilClear shader, 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 BaseMobFeroxi and MobFeroxiDummy, 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.cs and mapped to string layer identifiers in Content.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, or underweart. 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 the socks tag
  • 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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.rsi or /roles/hos/boxers.rsi for 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

📥 Commits

Reviewing files that changed from the base of the PR and between 974b8d9 and 093568c.

⛔ Files ignored due to path filters (196)
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/equipped-UNDERWEARB.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/equipped-UNDERWEART.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_swimming_alt.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
📒 Files selected for processing (73)
  • Resources/Locale/ru-RU/_Maid/underwear.ftl
  • Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml
  • Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml
  • Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Socks.yml
  • Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/bee_shorts.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_heart.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/boxers_striped.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/briefs.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/fishnet_lower.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/capitan/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/ce/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/cmo/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hop/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/hos/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/qm/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/boxers.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/heads/rd/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/jockstrap.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/mankini.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_bee_kini.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_kinky.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_neko.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_slim.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_swimming.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/panties_thin.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/striped_panties.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Bottom/thong.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_knee.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_norm.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/bee_thigh.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/fishnet.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/garter.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/pantyhose_ripped.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_knee.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/rainbow_thigh.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_knee.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_norm.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_short.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/socks_thigh.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_blue.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_cyan.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_dpink.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_green.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_lpink.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_orange.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_purple.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/stockings_yellow.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_knee.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/striped_thigh.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_knee.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Socks/thin_thigh.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_binder_strapless.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_kinky.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_neko.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless.rsi/meta.json
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_strapless_alt.rsi/meta.json
  • Resources/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 as SOCKS = 1 << 18 in SlotFlags.cs, and the state names equipped-SOCKS and equipped-SOCKS-body-slim in 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, and icon. 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.png

The state naming follows the expected UNDERWEARB slot 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 base boxers.rsi/meta.json. Please confirm:

  1. Path consistency: Ensure entity definitions in Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Bottom.yml correctly reference this path as _Maid/Clothing/Underwear/Bottom/heads/qm/boxers.rsi for QM boxers.

  2. 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:

  1. The layer name socks matches the casing expected by the client clothing system (the SlotFlags enum may define this as SOCKS in all-caps).
  2. This layer has been added consistently to all other species files.

82-83: No action needed. The layer names underwearb and underweart are 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 before StencilClear is 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-UNDERWEARB and equipped-UNDERWEARB-body-slim with 4 directions for different body types
  • icon state for inventory display

This 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:

  1. Adding a specific commit hash (e.g., as shown in other files like snouts.rsi)
  2. Including original author/artist names if available from upstream
  3. 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.yml and arachnid_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 sprites
  • equipped-UNDERWEARB-body-slim: Variant for slim body types with 4 directional sprites
  • icon: Static inventory icon

The 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.

Comment thread Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml
Comment thread Resources/Prototypes/_Maid/Entities/Clothing/Underwear/Top.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 093568c and 65ef13d.

📒 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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 be Crystal (or crystal), socks, underwearb, underweart.

Additionally, the Crystal tag uses PascalCase while the other three tags use lowercase, creating a naming inconsistency. Based on the past review, the Crystal tag 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 end

Or, if Crystal is 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 end

Based 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 displayName values 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

📥 Commits

Reviewing files that changed from the base of the PR and between 8cadf97 and ea3ba56.

⛔ Files ignored due to path filters (27)
  • Resources/Textures/Interface/Ashen/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Ashen/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Ashen/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Clockwork/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Clockwork/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Clockwork/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Default/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Default/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Default/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Minimalist/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Minimalist/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Minimalist/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Plasmafire/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Plasmafire/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Plasmafire/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Retro/SlotBackground.png is excluded by !**/*.png
  • Resources/Textures/Interface/Retro/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Retro/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Retro/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/Interface/Slimecore/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/Interface/Slimecore/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/Interface/Slimecore/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Interface/CosmicCult/Slots/socks.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Interface/CosmicCult/Slots/underwearb.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Interface/CosmicCult/Slots/underweart.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
  • Resources/Textures/_Maid/Clothing/Underwear/Top/bra_bee_kini.rsi/equipped-UNDERWEART-body-slim.png is excluded by !**/*.png
📒 Files selected for processing (28)
  • Resources/Locale/ru-RU/_Maid/underwear.ftl
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml
  • Resources/Prototypes/Entities/Mobs/Species/arachnid.yml
  • Resources/Prototypes/Entities/Mobs/Species/base.yml
  • Resources/Prototypes/Entities/Mobs/Species/moth.yml
  • Resources/Prototypes/Entities/Mobs/Species/vox.yml
  • Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml
  • Resources/Prototypes/InventoryTemplates/corpse_inventory_template.yml
  • Resources/Prototypes/InventoryTemplates/digitigrade_inventory_template.yml
  • Resources/Prototypes/InventoryTemplates/diona_inventory_template.yml
  • Resources/Prototypes/InventoryTemplates/human_inventory_template.yml
  • Resources/Prototypes/InventoryTemplates/monkey_inventory_template.yml
  • Resources/Prototypes/Loadouts/role_loadouts.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml
  • Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml
  • Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml
  • Resources/Prototypes/_EinsteinEngines/InventoryTemplates/ipc_inventory_template.yml
  • Resources/Prototypes/_EinsteinEngines/InventoryTemplates/plasmaman_inventory_template.yml
  • Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml
  • Resources/Prototypes/_Goobstation/InventoryTemplates/yowie_inventory_template.yml
  • Resources/Prototypes/_Maid/Loadouts/Underwear/head_loadouts.yml
  • Resources/Prototypes/_Maid/Loadouts/Underwear/loadout_groups.yml
  • Resources/Prototypes/tags.yml
  • Resources/Textures/Interface/Default/meta.json
  • Resources/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.cs and the clothing system mappings in ClientClothingSystem.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 UNDERWEART constant is properly defined in SlotFlags (Content.Shared/Inventory/SlotFlags.cs), confirming the state names equipped-UNDERWEART and equipped-UNDERWEART-body-slim are 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 BaseMobSpecies and BaseSpeciesDummy is 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 uiWindowPos shift from 2,1 to 2,2 aligns 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 to RoleSurvivalEVA.

Unlike other role loadouts, RoleSurvivalEVA does not include the DefaultUnderwearWhite and SocksUnderwear groups. 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, and socks are 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 MobFeroxiDummy sprite layers correctly mirror the BaseMobFeroxi layer structure, ensuring the lobby character preview matches in-game rendering.

Also applies to: 156-156

Comment thread Resources/Prototypes/Entities/Mobs/Species/moth.yml
@RedBurningPhoenix RedBurningPhoenix merged commit bfcdc3d into TheMaidDev:master Jan 3, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants