From 3515e87f7489055280d54ea3ac9a68dd5353dc3e Mon Sep 17 00:00:00 2001 From: Remuchi <72476615+Remuchi@users.noreply.github.com> Date: Sat, 24 Feb 2024 17:06:32 +0700 Subject: [PATCH] =?UTF-8?q?[Feat]=20=D0=A2=D0=BE=D0=BD=D0=BA=D0=B8=D0=B5?= =?UTF-8?q?=20=D1=81=D0=BF=D1=80=D0=B0=D0=B9=D1=82=D1=8B=20=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=20=D0=B2=20=D1=81=D1=82=D1=80=D0=BE=D1=8E=20?= =?UTF-8?q?(#102)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Hair Overhaul (#19298)" This reverts commit 9491f322de3a534595b3ade8e9db0542a6c7bbdf. # Conflicts: # Resources/Textures/Mobs/Customization/human_hair.rsi/a.png # Resources/Textures/Mobs/Customization/human_hair.rsi/afro.png # Resources/Textures/Mobs/Customization/human_hair.rsi/afro2.png # Resources/Textures/Mobs/Customization/human_hair.rsi/bigafro.png # Resources/Textures/Mobs/Customization/human_hair.rsi/cornrows2.png # Resources/Textures/Mobs/Customization/human_hair.rsi/emofringe.png # Resources/Textures/Mobs/Customization/human_hair.rsi/keanu.png # Resources/Textures/Mobs/Customization/human_hair.rsi/long.png # Resources/Textures/Mobs/Customization/human_hair.rsi/long2.png # Resources/Textures/Mobs/Customization/human_hair.rsi/long3.png # Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json # Resources/Textures/Mobs/Customization/human_hair.rsi/modern.png # Resources/Textures/Mobs/Customization/human_hair.rsi/quiff.png * add: возврат системы тонкоспрайтов * fix: небольшие фиксы после реверта причесок * add: старые текстуры для slim бодитайпа * fix: фикс причесок после апстрима --- .../Clothing/ClientClothingSystem.cs | 113 +- .../Humanoid/HumanoidAppearanceSystem.cs | 42 +- ...manoidMarkingModifierBoundUserInterface.cs | 2 +- .../HumanoidMarkingModifierWindow.xaml.cs | 11 +- Content.Client/Humanoid/MarkingPicker.xaml.cs | 15 +- .../Preferences/UI/HumanoidProfileEditor.xaml | 6 + .../UI/HumanoidProfileEditor.xaml.cs | 77 +- .../Tests/Preferences/ServerDbSqliteTests.cs | 2 +- .../20240219145443_AddBodyType.Designer.cs | 1821 +++++++++++++++++ .../Postgres/20240219145443_AddBodyType.cs | 29 + .../PostgresServerDbContextModelSnapshot.cs | 5 + .../20240219145431_AddBodyType.Designer.cs | 1750 ++++++++++++++++ .../Sqlite/20240219145431_AddBodyType.cs | 29 + .../SqliteServerDbContextModelSnapshot.cs | 5 + Content.Server.Database/Model.cs | 1 + Content.Server/Database/ServerDbBase.cs | 3 + .../HumanoidAppearanceSystem.Modifier.cs | 34 +- .../Systems/HumanoidAppearanceSystem.cs | 139 +- .../Managers/ServerPreferencesManager.cs | 51 +- .../Humanoid/HumanoidAppearanceComponent.cs | 8 +- .../Humanoid/HumanoidCharacterAppearance.cs | 42 +- .../Humanoid/HumanoidVisualLayers.cs | 3 +- .../Humanoid/HumanoidVisualLayersExtension.cs | 13 +- .../Humanoid/Markings/MarkingManager.cs | 61 +- .../Humanoid/Markings/MarkingsSet.cs | 61 +- .../Humanoid/Prototypes/BodyTypePrototype.cs | 35 + .../Prototypes/HumanoidSpritePrototypes.cs | 4 +- .../Humanoid/Prototypes/SpeciesPrototype.cs | 12 +- .../SharedHumanoidAppearanceSystem.cs | 104 +- .../SharedHumanoidMarkingModifierSystem.cs | 3 + .../Preferences/HumanoidCharacterProfile.cs | 207 +- .../Locale/en-US/accessories/human-hair.ftl | 9 - Resources/Prototypes/Body/Parts/human.yml | 19 +- .../Customization/Markings/human_hair.yml | 63 - Resources/Prototypes/Species/arachnid.yml | 22 +- Resources/Prototypes/Species/diona.yml | 20 +- Resources/Prototypes/Species/dwarf.yml | 3 +- Resources/Prototypes/Species/gingerbread.yml | 20 +- Resources/Prototypes/Species/human.yml | 113 +- Resources/Prototypes/Species/moth.yml | 22 +- Resources/Prototypes/Species/reptilian.yml | 21 +- Resources/Prototypes/Species/skeleton.yml | 17 +- Resources/Prototypes/Species/slime.yml | 20 +- Resources/Prototypes/Species/terminator.yml | 16 +- Resources/Prototypes/Species/vox.yml | 20 +- .../Prototypes/_White/BodyTypes/normal.yml | 180 ++ .../Prototypes/_White/BodyTypes/slim.yml | 43 + .../equipped-HAND-body-slim.png | Bin 0 -> 2485 bytes .../Gloves/Boxing/boxingblue.rsi/meta.json | 4 + .../equipped-HAND-body-slim.png | Bin 0 -> 2483 bytes .../Gloves/Boxing/boxinggreen.rsi/meta.json | 4 + .../boxingred.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2440 bytes .../Gloves/Boxing/boxingred.rsi/meta.json | 4 + .../equipped-HAND-body-slim.png | Bin 0 -> 2491 bytes .../Gloves/Boxing/boxingyellow.rsi/meta.json | 4 + .../black.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1990 bytes .../Hands/Gloves/Color/black.rsi/meta.json | 4 + .../blue.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2038 bytes .../Hands/Gloves/Color/blue.rsi/meta.json | 4 + .../brown.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2064 bytes .../Hands/Gloves/Color/brown.rsi/meta.json | 4 + .../gray.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2022 bytes .../Hands/Gloves/Color/gray.rsi/meta.json | 4 + .../green.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1922 bytes .../Hands/Gloves/Color/green.rsi/meta.json | 4 + .../equipped-HAND-body-slim.png | Bin 0 -> 2053 bytes .../Gloves/Color/lightbrown.rsi/meta.json | 4 + .../orange.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1924 bytes .../Hands/Gloves/Color/orange.rsi/meta.json | 4 + .../purple.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1904 bytes .../Hands/Gloves/Color/purple.rsi/meta.json | 4 + .../Color/red.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1918 bytes .../Hands/Gloves/Color/red.rsi/meta.json | 4 + .../white.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1970 bytes .../Hands/Gloves/Color/white.rsi/meta.json | 4 + .../yellow.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1968 bytes .../Hands/Gloves/Color/yellow.rsi/meta.json | 36 +- .../captain.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2050 bytes .../Hands/Gloves/captain.rsi/meta.json | 4 + .../equipped-HAND-body-slim.png | Bin 0 -> 1924 bytes .../Hands/Gloves/fingerless.rsi/meta.json | 4 + .../ihscombat.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2121 bytes .../Hands/Gloves/ihscombat.rsi/meta.json | 4 + .../latex.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1961 bytes .../Clothing/Hands/Gloves/latex.rsi/meta.json | 4 + .../leather.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2005 bytes .../Hands/Gloves/leather.rsi/meta.json | 4 + .../equipped-HAND-body-slim.png | Bin 0 -> 2165 bytes .../Hands/Gloves/powerglove.rsi/meta.json | 8 + .../on-equipped-HAND-body-slim.png | Bin 0 -> 2215 bytes .../robohands.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1969 bytes .../Hands/Gloves/robohands.rsi/meta.json | 4 + .../equipped-HAND-body-slim.png | Bin 0 -> 2080 bytes .../green-equipped-HAND-body-slim.png | Bin 0 -> 2091 bytes .../Hands/Gloves/spaceninja.rsi/meta.json | 12 + .../red-equipped-HAND-body-slim.png | Bin 0 -> 2091 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1935 bytes .../Armor/armor_reflec.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 834 bytes .../Armor/bulletproof.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 963 bytes .../Armor/captain_carapace.rsi/meta.json | 5 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2161 bytes .../Armor/cult_armour.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2877 bytes .../OuterClothing/Armor/heavy.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3165 bytes .../Armor/heavygreen.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3158 bytes .../Armor/heavyred.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3132 bytes .../Armor/lingarmor.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2501 bytes .../Armor/magusblue.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2457 bytes .../Armor/magusred.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1537 bytes .../OuterClothing/Armor/riot.rsi/meta.json | 5 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2195 bytes .../OuterClothing/Armor/scaf.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 343 bytes .../Armor/security.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 428 bytes .../Armor/security_slim.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1318 bytes .../OuterClothing/Bio/cmo.rsi/meta.json | 5 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1317 bytes .../OuterClothing/Bio/general.rsi/meta.json | 5 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1312 bytes .../OuterClothing/Bio/janitor.rsi/meta.json | 5 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1304 bytes .../OuterClothing/Bio/scientist.rsi/meta.json | 5 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2435 bytes .../OuterClothing/Bio/security.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1330 bytes .../OuterClothing/Bio/virology.rsi/meta.json | 5 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1379 bytes .../OuterClothing/Coats/bomber.rsi/meta.json | 9 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 943 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2675 bytes .../Coats/brigmedic.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2345 bytes .../Coats/clownpriest.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1753 bytes .../Coats/damedanecoat.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1846 bytes .../Coats/detective.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1826 bytes .../Coats/gentlecoat.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1929 bytes .../Coats/hos_trenchcoat.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1764 bytes .../Coats/insp_coat.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1905 bytes .../Coats/jensencoat.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1746 bytes .../OuterClothing/Coats/labcoat.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1737 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1929 bytes .../Coats/labcoat_chem.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1908 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1770 bytes .../Coats/labcoat_cmo.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1731 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1851 bytes .../Coats/labcoat_gene.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1903 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2116 bytes .../Coats/labcoat_robo.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2062 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1740 bytes .../Coats/labcoat_viro.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1738 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2019 bytes .../OuterClothing/Coats/pirate.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1842 bytes .../OuterClothing/Coats/rndcoat.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1852 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2245 bytes .../OuterClothing/Coats/warden.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1963 bytes .../Coats/windbreaker_paramedic.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1879 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2495 bytes .../ERTSuits/ertengineer.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2545 bytes .../ERTSuits/ertjanitor.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2540 bytes .../ERTSuits/ertleader.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2382 bytes .../ERTSuits/ertmedical.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2315 bytes .../ERTSuits/ertsecurity.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2430 bytes .../Hardsuits/basic.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 9384 bytes .../Hardsuits/capspace.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2482 bytes .../Hardsuits/cburn.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2980 bytes .../Hardsuits/cybersun.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 9202 bytes .../Hardsuits/deathsquad.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3344 bytes .../Hardsuits/evaprisoner.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2193 bytes .../Hardsuits/lingspacesuit.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2447 bytes .../Hardsuits/medical.rsi/meta.json | 4 + .../Hardsuits/paramed.rsi/meta.json | 4 + .../OuterClothing/Hardsuits/rd.rsi/meta.json | 4 + .../Hardsuits/salvage.rsi/meta.json | 4 + .../Hardsuits/security-red.rsi/meta.json | 4 + .../Hardsuits/spatio.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 4429 bytes .../Hardsuits/syndicate.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 4607 bytes .../Hardsuits/syndiecommander.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 4544 bytes .../Hardsuits/syndieelite.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2807 bytes .../Hardsuits/wizard.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1806 bytes .../OuterClothing/Misc/apron.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1522 bytes .../Misc/apronbotanist.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1448 bytes .../Misc/apronchef.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1770 bytes .../Misc/black_hoodie.rsi/meta.json | 10 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1709 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1924 bytes .../Misc/chaplain_hoodie.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1800 bytes .../OuterClothing/Misc/chef.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1682 bytes .../Misc/classicponcho.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2117 bytes .../Misc/cultrobes.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1768 bytes .../Misc/grey_hoodie.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1745 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1860 bytes .../OuterClothing/Misc/judge.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1971 bytes .../OuterClothing/Misc/nunrobe.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2825 bytes .../Misc/plaguedoctorsuit.rsi/meta.json | 8 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1843 bytes .../Misc/redwizard.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2477 bytes .../OuterClothing/Misc/santa.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1504 bytes .../OuterClothing/Misc/skubbody.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2522 bytes .../Misc/straight_jacket.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2526 bytes .../Misc/violetwizard.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2157 bytes .../OuterClothing/Misc/wizard.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2675 bytes .../Suits/atmos_firesuit.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2396 bytes .../Suits/bombsuit.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2311 bytes .../OuterClothing/Suits/chicken.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2450 bytes .../OuterClothing/Suits/fire.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2029 bytes .../OuterClothing/Suits/monkey.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2395 bytes .../OuterClothing/Suits/rad.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2158 bytes .../Suits/shrine-maiden.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1518 bytes .../OuterClothing/Vests/detvest.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1681 bytes .../OuterClothing/Vests/hazard.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1635 bytes .../Vests/mercwebvest.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1471 bytes .../OuterClothing/Vests/vest.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1851 bytes .../OuterClothing/Vests/webvest.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1301 bytes .../WinterCoats/coat.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1470 bytes .../WinterCoats/coatatmos.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2279 bytes .../WinterCoats/coatbar.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1383 bytes .../WinterCoats/coatcap.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1543 bytes .../WinterCoats/coatcargo.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1488 bytes .../WinterCoats/coatce.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1440 bytes .../WinterCoats/coatcentcom.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1850 bytes .../WinterCoats/coatchef.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1468 bytes .../WinterCoats/coatchem.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2033 bytes .../WinterCoats/coatclown.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1442 bytes .../WinterCoats/coatcmo.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1431 bytes .../WinterCoats/coatengi.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1474 bytes .../WinterCoats/coatgen.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1336 bytes .../WinterCoats/coathop.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2046 bytes .../WinterCoats/coathos.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1517 bytes .../WinterCoats/coathydro.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1415 bytes .../WinterCoats/coatjani.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1417 bytes .../WinterCoats/coatmed.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1184 bytes .../WinterCoats/coatmime.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1408 bytes .../WinterCoats/coatminer.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1673 bytes .../WinterCoats/coatnomi.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1246 bytes .../WinterCoats/coatparamed.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1346 bytes .../WinterCoats/coatqm.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1413 bytes .../WinterCoats/coatrd.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1527 bytes .../WinterCoats/coatrobo.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1463 bytes .../WinterCoats/coatsci.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1857 bytes .../WinterCoats/coatsec.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1510 bytes .../WinterCoats/coatviro.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2484 bytes .../WinterCoats/coatwarden.rsi/meta.json | 4 + .../equipped-FEET-body-slim.png | Bin 0 -> 635 bytes .../Shoes/Boots/combatboots.rsi/meta.json | 4 + .../explorer.rsi/equipped-FEET-body-slim.png | Bin 0 -> 564 bytes .../Shoes/Boots/explorer.rsi/meta.json | 4 + .../jackboots.rsi/equipped-FEET-body-slim.png | Bin 0 -> 543 bytes .../Shoes/Boots/jackboots.rsi/meta.json | 4 + .../laceups.rsi/equipped-FEET-body-slim.png | Bin 0 -> 462 bytes .../Shoes/Boots/laceups.rsi/meta.json | 4 + .../equipped-FEET-body-slim.png | Bin 0 -> 1641 bytes .../Boots/magboots-advanced.rsi/meta.json | 8 + .../on-equipped-FEET-body-slim.png | Bin 0 -> 1647 bytes .../equipped-FEET-body-slim.png | Bin 0 -> 1628 bytes .../Boots/magboots-syndicate.rsi/meta.json | 8 + .../on-equipped-FEET-body-slim.png | Bin 0 -> 1633 bytes .../magboots.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1670 bytes .../Shoes/Boots/magboots.rsi/meta.json | 8 + .../on-equipped-FEET-body-slim.png | Bin 0 -> 1678 bytes .../performer.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1719 bytes .../Shoes/Boots/performer.rsi/meta.json | 4 + .../workboots.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1416 bytes .../Shoes/Boots/workboots.rsi/meta.json | 4 + .../blue.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1400 bytes .../Clothing/Shoes/Color/blue.rsi/meta.json | 4 + .../brown.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1399 bytes .../Clothing/Shoes/Color/brown.rsi/meta.json | 4 + .../green.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1396 bytes .../Clothing/Shoes/Color/green.rsi/meta.json | 4 + .../orange.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1401 bytes .../Clothing/Shoes/Color/orange.rsi/meta.json | 4 + .../purple.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1396 bytes .../Clothing/Shoes/Color/purple.rsi/meta.json | 4 + .../white.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1382 bytes .../Clothing/Shoes/Color/white.rsi/meta.json | 4 + .../yellow.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1396 bytes .../Clothing/Shoes/Color/yellow.rsi/meta.json | 4 + .../equipped-FEET-body-slim.png | Bin 0 -> 1360 bytes .../Shoes/Misc/damedaneshoes.rsi/meta.json | 4 + .../equipped-FEET-body-slim.png | Bin 0 -> 1378 bytes .../Shoes/Misc/duck-slippers.rsi/meta.json | 4 + .../flippers.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1388 bytes .../Shoes/Misc/flippers.rsi/meta.json | 4 + .../leather.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1342 bytes .../Clothing/Shoes/Misc/leather.rsi/meta.json | 4 + .../slippers.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1408 bytes .../Shoes/Misc/slippers.rsi/meta.json | 4 + .../tourist.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1471 bytes .../Clothing/Shoes/Misc/tourist.rsi/meta.json | 4 + .../bling.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1439 bytes .../Shoes/Specific/bling.rsi/meta.json | 4 + .../chef.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1436 bytes .../Shoes/Specific/chef.rsi/meta.json | 4 + .../cult.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1353 bytes .../Shoes/Specific/cult.rsi/meta.json | 4 + .../galoshes.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1296 bytes .../Shoes/Specific/galoshes.rsi/meta.json | 4 + .../jester.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1407 bytes .../Shoes/Specific/jester.rsi/meta.json | 4 + .../equipped-FEET-body-slim.png | Bin 0 -> 1386 bytes .../Shoes/Specific/spaceninja.rsi/meta.json | 4 + .../swat.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1476 bytes .../Shoes/Specific/swat.rsi/meta.json | 4 + .../wizard.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1297 bytes .../Shoes/Specific/wizard.rsi/meta.json | 4 + .../Socks/bee.rsi/equipped-FEET-body-slim.png | Bin 0 -> 747 bytes .../Clothing/Under/Socks/bee.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1016 bytes .../Jumpskirt/Color/black.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1089 bytes .../Jumpskirt/Color/blue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1079 bytes .../Jumpskirt/Color/brown.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1113 bytes .../Jumpskirt/Color/darkblue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1092 bytes .../Jumpskirt/Color/darkgreen.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1052 bytes .../Jumpskirt/Color/green.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1171 bytes .../Jumpskirt/Color/grey.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1089 bytes .../Jumpskirt/Color/lightbrown.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1079 bytes .../Jumpskirt/Color/lightpurple.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1105 bytes .../Jumpskirt/Color/maroon.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1088 bytes .../Jumpskirt/Color/orange.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1100 bytes .../Jumpskirt/Color/pink.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1071 bytes .../Jumpskirt/Color/red.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1083 bytes .../Jumpskirt/Color/teal.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1040 bytes .../Jumpskirt/Color/white.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1106 bytes .../Jumpskirt/Color/yellow.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1267 bytes .../Uniforms/Jumpskirt/atmosf.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1287 bytes .../Uniforms/Jumpskirt/captain.rsi/meta.json | 6 +- .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1445 bytes .../Uniforms/Jumpskirt/ce.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2656 bytes .../centcomformaldress.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1067 bytes .../Uniforms/Jumpskirt/chaplain.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1025 bytes .../Uniforms/Jumpskirt/chef.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1286 bytes .../Jumpskirt/chemistry.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1297 bytes .../Uniforms/Jumpskirt/cmo.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1085 bytes .../Jumpskirt/detective.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1078 bytes .../Jumpskirt/detective_grey.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1263 bytes .../Jumpskirt/engineering.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1210 bytes .../Uniforms/Jumpskirt/hop.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2419 bytes .../Uniforms/Jumpskirt/hos.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2166 bytes .../Uniforms/Jumpskirt/hos_alt.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1767 bytes .../Jumpskirt/hos_parade.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2691 bytes .../Jumpskirt/hosformaldress.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1306 bytes .../Uniforms/Jumpskirt/janimaid.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1555 bytes .../Uniforms/Jumpskirt/janitor.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1134 bytes .../Jumpskirt/lawyerblack.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1161 bytes .../Jumpskirt/lawyerblue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1191 bytes .../Jumpskirt/lawyergood.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1237 bytes .../Jumpskirt/lawyerpurple.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1159 bytes .../Jumpskirt/lawyerred.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1239 bytes .../Uniforms/Jumpskirt/medical.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 994 bytes .../Jumpskirt/operative_s.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1281 bytes .../Jumpskirt/paramedic.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2875 bytes .../Jumpskirt/performer.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1342 bytes .../Uniforms/Jumpskirt/prisoner.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1211 bytes .../Uniforms/Jumpskirt/rnd.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2314 bytes .../Jumpskirt/scientist.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2134 bytes .../Uniforms/Jumpskirt/security.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2224 bytes .../Uniforms/Jumpskirt/warden.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 924 bytes .../Jumpsuit/Color/black.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1013 bytes .../Jumpsuit/Color/blue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1019 bytes .../Jumpsuit/Color/brown.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1016 bytes .../Jumpsuit/Color/darkblue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1003 bytes .../Jumpsuit/Color/darkgreen.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 999 bytes .../Jumpsuit/Color/green.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 943 bytes .../Jumpsuit/Color/grey.rsi/meta.json | 1 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1013 bytes .../Jumpsuit/Color/lightbrown.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1008 bytes .../Jumpsuit/Color/lightpurple.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 983 bytes .../Jumpsuit/Color/maroon.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 985 bytes .../Jumpsuit/Color/orange.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 994 bytes .../Jumpsuit/Color/pink.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1007 bytes .../Uniforms/Jumpsuit/Color/red.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 994 bytes .../Jumpsuit/Color/teal.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 944 bytes .../Jumpsuit/Color/white.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 987 bytes .../Jumpsuit/Color/yellow.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1280 bytes .../Uniforms/Jumpsuit/atmos.rsi/meta.json | 6 +- .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1436 bytes .../Jumpsuit/bartender_purple.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1396 bytes .../Uniforms/Jumpsuit/captain.rsi/meta.json | 8 +- .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1399 bytes .../Uniforms/Jumpsuit/ce.rsi/meta.json | 8 + .../s-equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1000 bytes .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1273 bytes .../Jumpsuit/centcom_official.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2310 bytes .../Jumpsuit/centcomformal.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1319 bytes .../Uniforms/Jumpsuit/chemistry.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1322 bytes .../Uniforms/Jumpsuit/cmo.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1248 bytes .../Jumpsuit/damedaneoutfit.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1093 bytes .../Uniforms/Jumpsuit/detective.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1087 bytes .../Jumpsuit/detective_grey.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1277 bytes .../Jumpsuit/engineering.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1391 bytes .../Jumpsuit/engineering_hazard.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1363 bytes .../Jumpsuit/ert_engineer.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1372 bytes .../Jumpsuit/ert_janitor.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1372 bytes .../Jumpsuit/ert_leader.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1340 bytes .../Uniforms/Jumpsuit/ert_medic.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1334 bytes .../Jumpsuit/ert_security.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2034 bytes .../Uniforms/Jumpsuit/hop.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1381 bytes .../Uniforms/Jumpsuit/hos.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1979 bytes .../Uniforms/Jumpsuit/hos_alt.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1922 bytes .../Uniforms/Jumpsuit/hos_blue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2260 bytes .../Uniforms/Jumpsuit/hos_grey.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2397 bytes .../Jumpsuit/hos_parade.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2401 bytes .../Uniforms/Jumpsuit/hosformal.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1611 bytes .../Uniforms/Jumpsuit/janitor.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1066 bytes .../Jumpsuit/journalist.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1148 bytes .../Jumpsuit/lawyerblack.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1163 bytes .../Jumpsuit/lawyerblue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1167 bytes .../Jumpsuit/lawyergood.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 2279 bytes .../Jumpsuit/lawyerpurple.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1154 bytes .../Uniforms/Jumpsuit/lawyerred.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1496 bytes .../Uniforms/Jumpsuit/librarian.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1223 bytes .../Uniforms/Jumpsuit/medical.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1631 bytes .../Jumpsuit/monastic_robe_dark.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1782 bytes .../monastic_robe_light.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 972 bytes .../Jumpsuit/nanotrasen.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1879 bytes .../Uniforms/Jumpsuit/operative.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1337 bytes .../Uniforms/Jumpsuit/overalls.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1363 bytes .../Uniforms/Jumpsuit/paramedic.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1393 bytes .../Uniforms/Jumpsuit/prisoner.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1292 bytes .../Jumpsuit/psychologist.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1007 bytes .../pyjamasyndicateblack.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1073 bytes .../pyjamasyndicatepink.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1046 bytes .../Jumpsuit/pyjamasyndicatered.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1484 bytes .../Uniforms/Jumpsuit/rainbow.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1066 bytes .../Uniforms/Jumpsuit/reporter.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1241 bytes .../Uniforms/Jumpsuit/rnd.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 947 bytes .../Uniforms/Jumpsuit/safari.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1497 bytes .../Uniforms/Jumpsuit/scientist.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1305 bytes .../Uniforms/Jumpsuit/security.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1104 bytes .../Jumpsuit/security_blue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1433 bytes .../Jumpsuit/security_grey.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1366 bytes .../Uniforms/Jumpsuit/warden.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1039 bytes .../Uniforms/Scrubs/blue.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1050 bytes .../Uniforms/Scrubs/green.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 1058 bytes .../Uniforms/Scrubs/purple.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 570 bytes .../Uniforms/Shorts/Color/red.rsi/meta.json | 4 + .../equipped-INNERCLOTHING-body-slim.png | Bin 0 -> 863 bytes .../Shorts/Color/red_female.rsi/meta.json | 4 + .../Mobs/Customization/human_hair.rsi/80s.png | Bin 918 -> 684 bytes .../Mobs/Customization/human_hair.rsi/a.png | Bin 324 -> 227 bytes .../Customization/human_hair.rsi/afro.png | Bin 690 -> 326 bytes .../Customization/human_hair.rsi/afro2.png | Bin 726 -> 257 bytes .../Customization/human_hair.rsi/antenna.png | Bin 840 -> 317 bytes .../Mobs/Customization/human_hair.rsi/b.png | Bin 666 -> 250 bytes .../Customization/human_hair.rsi/bedhead.png | Bin 738 -> 277 bytes .../human_hair.rsi/bedheadv2.png | Bin 759 -> 346 bytes .../human_hair.rsi/bedheadv3.png | Bin 723 -> 257 bytes .../Customization/human_hair.rsi/beehive.png | Bin 801 -> 378 bytes .../human_hair.rsi/beehivev2.png | Bin 756 -> 277 bytes .../Customization/human_hair.rsi/bigafro.png | Bin 849 -> 433 bytes .../human_hair.rsi/bigflattop.png | Bin 663 -> 258 bytes .../human_hair.rsi/bigpompadour.png | Bin 708 -> 271 bytes .../Mobs/Customization/human_hair.rsi/bob.png | Bin 696 -> 264 bytes .../Customization/human_hair.rsi/bob2.png | Bin 717 -> 285 bytes .../Customization/human_hair.rsi/bob4.png | Bin 714 -> 319 bytes .../Customization/human_hair.rsi/bobcurl.png | Bin 732 -> 243 bytes .../Customization/human_hair.rsi/bobcut.png | Bin 669 -> 233 bytes .../human_hair.rsi/boddicker.png | Bin 504 -> 187 bytes .../Customization/human_hair.rsi/bowlcut.png | Bin 435 -> 171 bytes .../Customization/human_hair.rsi/bowlcut2.png | Bin 519 -> 274 bytes .../Customization/human_hair.rsi/braid.png | Bin 1083 -> 483 bytes .../Customization/human_hair.rsi/braid2.png | Bin 945 -> 384 bytes .../Customization/human_hair.rsi/braided.png | Bin 807 -> 285 bytes .../human_hair.rsi/braidfront.png | Bin 720 -> 310 bytes .../human_hair.rsi/braidtail.png | Bin 759 -> 253 bytes .../Mobs/Customization/human_hair.rsi/bun.png | Bin 651 -> 288 bytes .../Customization/human_hair.rsi/bun3.png | Bin 663 -> 530 bytes .../Customization/human_hair.rsi/bunhead2.png | Bin 750 -> 275 bytes .../Customization/human_hair.rsi/business.png | Bin 627 -> 253 bytes .../human_hair.rsi/business2.png | Bin 630 -> 275 bytes .../human_hair.rsi/business3.png | Bin 654 -> 263 bytes .../human_hair.rsi/business4.png | Bin 654 -> 266 bytes .../Customization/human_hair.rsi/buzzcut.png | Bin 513 -> 176 bytes .../Mobs/Customization/human_hair.rsi/c.png | Bin 549 -> 220 bytes .../Mobs/Customization/human_hair.rsi/cia.png | Bin 573 -> 301 bytes .../human_hair.rsi/classicafro.png | Bin 326 -> 0 bytes .../human_hair.rsi/classicbigafro.png | Bin 433 -> 0 bytes .../human_hair.rsi/classicbusiness.png | Bin 253 -> 0 bytes .../human_hair.rsi/classiccia.png | Bin 301 -> 0 bytes .../human_hair.rsi/classiccornrows2.png | Bin 220 -> 0 bytes .../classicfloorlength_bedhead.png | Bin 992 -> 0 bytes .../human_hair.rsi/classicmodern.png | Bin 848 -> 0 bytes .../human_hair.rsi/classicmulder.png | Bin 300 -> 0 bytes .../human_hair.rsi/classicwisp.png | Bin 681 -> 0 bytes .../human_hair.rsi/coffeehouse.png | Bin 633 -> 250 bytes .../Customization/human_hair.rsi/combover.png | Bin 591 -> 247 bytes .../human_hair.rsi/cornrowbraid.png | Bin 660 -> 250 bytes .../human_hair.rsi/cornrowbun.png | Bin 645 -> 358 bytes .../Customization/human_hair.rsi/cornrows.png | Bin 579 -> 184 bytes .../human_hair.rsi/cornrows2.png | Bin 681 -> 220 bytes .../human_hair.rsi/cornrowtail.png | Bin 708 -> 243 bytes .../Customization/human_hair.rsi/country.png | Bin 798 -> 554 bytes .../Customization/human_hair.rsi/crewcut.png | Bin 504 -> 218 bytes .../Customization/human_hair.rsi/curls.png | Bin 672 -> 339 bytes .../Mobs/Customization/human_hair.rsi/d.png | Bin 453 -> 166 bytes .../human_hair.rsi/dandypompadour.png | Bin 672 -> 336 bytes .../Customization/human_hair.rsi/devilock.png | Bin 558 -> 238 bytes .../human_hair.rsi/doublebun.png | Bin 789 -> 369 bytes .../Customization/human_hair.rsi/dreads.png | Bin 699 -> 281 bytes .../human_hair.rsi/drillhair.png | Bin 792 -> 324 bytes .../human_hair.rsi/drillhairextended.png | Bin 924 -> 358 bytes .../human_hair.rsi/drillruru.png | Bin 780 -> 432 bytes .../Mobs/Customization/human_hair.rsi/e.png | Bin 393 -> 136 bytes .../Mobs/Customization/human_hair.rsi/emo.png | Bin 681 -> 256 bytes .../Customization/human_hair.rsi/emo2.png | Bin 669 -> 427 bytes .../human_hair.rsi/emofringe.png | Bin 663 -> 324 bytes .../Mobs/Customization/human_hair.rsi/f.png | Bin 525 -> 380 bytes .../Customization/human_hair.rsi/father.png | Bin 492 -> 208 bytes .../Customization/human_hair.rsi/feather.png | Bin 762 -> 318 bytes .../Customization/human_hair.rsi/flair.png | Bin 840 -> 381 bytes .../human_hair.rsi/floorlength_bedhead.png | Bin 1536 -> 992 bytes .../human_hair.rsi/fringetail.png | Bin 750 -> 331 bytes .../Customization/human_hair.rsi/gelled.png | Bin 576 -> 172 bytes .../Customization/human_hair.rsi/gentle.png | Bin 717 -> 370 bytes .../Customization/human_hair.rsi/halfbang.png | Bin 615 -> 230 bytes .../human_hair.rsi/halfbang2.png | Bin 624 -> 247 bytes .../human_hair.rsi/halfshaved.png | Bin 648 -> 347 bytes .../Customization/human_hair.rsi/hbraid.png | Bin 855 -> 389 bytes .../Customization/human_hair.rsi/hedgehog.png | Bin 645 -> 268 bytes .../human_hair.rsi/highponytail.png | Bin 888 -> 374 bytes .../Customization/human_hair.rsi/himecut.png | Bin 711 -> 395 bytes .../Customization/human_hair.rsi/himecut2.png | Bin 720 -> 373 bytes .../Customization/human_hair.rsi/himeup.png | Bin 822 -> 314 bytes .../Customization/human_hair.rsi/hitop.png | Bin 513 -> 151 bytes .../Customization/human_hair.rsi/jade.png | Bin 858 -> 328 bytes .../Customization/human_hair.rsi/jensen.png | Bin 606 -> 203 bytes .../Customization/human_hair.rsi/joestar.png | Bin 750 -> 308 bytes .../Customization/human_hair.rsi/kagami.png | Bin 741 -> 307 bytes .../Customization/human_hair.rsi/keanu.png | Bin 651 -> 269 bytes .../Customization/human_hair.rsi/kusanagi.png | Bin 651 -> 240 bytes .../Customization/human_hair.rsi/largebun.png | Bin 669 -> 255 bytes .../Customization/human_hair.rsi/lbangs.png | Bin 780 -> 263 bytes .../Customization/human_hair.rsi/long.png | Bin 1002 -> 417 bytes .../Customization/human_hair.rsi/long2.png | Bin 921 -> 351 bytes .../Customization/human_hair.rsi/long3.png | Bin 981 -> 412 bytes .../human_hair.rsi/long_bedhead.png | Bin 1158 -> 748 bytes .../Customization/human_hair.rsi/longemo.png | Bin 786 -> 333 bytes .../Customization/human_hair.rsi/longest.png | Bin 882 -> 438 bytes .../Customization/human_hair.rsi/longest2.png | Bin 897 -> 443 bytes .../human_hair.rsi/longfringe.png | Bin 756 -> 350 bytes .../human_hair.rsi/longovereye.png | Bin 819 -> 445 bytes .../human_hair.rsi/longsidepart.png | Bin 999 -> 431 bytes .../human_hair.rsi/longstraightponytail.png | Bin 876 -> 408 bytes .../Customization/human_hair.rsi/manbun.png | Bin 633 -> 339 bytes .../human_hair.rsi/megaeyebrows.png | Bin 471 -> 208 bytes .../Customization/human_hair.rsi/messy.png | Bin 795 -> 290 bytes .../Customization/human_hair.rsi/meta.json | 50 +- .../Customization/human_hair.rsi/modern.png | Bin 921 -> 848 bytes .../Customization/human_hair.rsi/mulder.png | Bin 687 -> 300 bytes .../Customization/human_hair.rsi/nitori.png | Bin 831 -> 681 bytes .../Customization/human_hair.rsi/odango.png | Bin 702 -> 315 bytes .../Customization/human_hair.rsi/ombre.png | Bin 798 -> 309 bytes .../human_hair.rsi/oneshoulder.png | Bin 750 -> 286 bytes .../Customization/human_hair.rsi/oxton.png | Bin 765 -> 308 bytes .../Customization/human_hair.rsi/part.png | Bin 615 -> 238 bytes .../Customization/human_hair.rsi/parted.png | Bin 705 -> 265 bytes .../Customization/human_hair.rsi/pigtails.png | Bin 822 -> 319 bytes .../human_hair.rsi/pigtails2.png | Bin 708 -> 288 bytes .../Customization/human_hair.rsi/pixie.png | Bin 699 -> 232 bytes .../human_hair.rsi/pompadour.png | Bin 597 -> 212 bytes .../Customization/human_hair.rsi/ponytail.png | Bin 624 -> 217 bytes .../human_hair.rsi/ponytail2.png | Bin 807 -> 266 bytes .../human_hair.rsi/ponytail3.png | Bin 702 -> 288 bytes .../human_hair.rsi/ponytail4.png | Bin 801 -> 316 bytes .../human_hair.rsi/ponytail5.png | Bin 744 -> 247 bytes .../human_hair.rsi/ponytail6.png | Bin 786 -> 603 bytes .../human_hair.rsi/ponytail7.png | Bin 864 -> 594 bytes .../Customization/human_hair.rsi/poofy.png | Bin 765 -> 669 bytes .../human_hair.rsi/protagonist.png | Bin 690 -> 246 bytes .../Customization/human_hair.rsi/quiff.png | Bin 600 -> 252 bytes .../human_hair.rsi/reversemohawk.png | Bin 486 -> 215 bytes .../Customization/human_hair.rsi/ronin.png | Bin 699 -> 396 bytes .../Customization/human_hair.rsi/rosa.png | Bin 705 -> 282 bytes .../Customization/human_hair.rsi/sargeant.png | Bin 552 -> 209 bytes .../human_hair.rsi/shavedmohawk.png | Bin 405 -> 162 bytes .../human_hair.rsi/shavedpart.png | Bin 600 -> 279 bytes .../human_hair.rsi/shortbangs.png | Bin 636 -> 275 bytes .../human_hair.rsi/shortbraid.png | Bin 801 -> 422 bytes .../human_hair.rsi/shorthair2.png | Bin 735 -> 255 bytes .../human_hair.rsi/shorthair3.png | Bin 711 -> 284 bytes .../human_hair.rsi/shorthairg.png | Bin 699 -> 332 bytes .../human_hair.rsi/shorthime.png | Bin 669 -> 488 bytes .../human_hair.rsi/shortovereye.png | Bin 774 -> 380 bytes .../Customization/human_hair.rsi/sidecut.png | Bin 657 -> 277 bytes .../Customization/human_hair.rsi/sidetail.png | Bin 771 -> 273 bytes .../human_hair.rsi/sidetail2.png | Bin 750 -> 334 bytes .../human_hair.rsi/sidetail3.png | Bin 705 -> 345 bytes .../human_hair.rsi/sidetail4.png | Bin 774 -> 311 bytes .../Customization/human_hair.rsi/spikey.png | Bin 594 -> 226 bytes .../Customization/human_hair.rsi/spiky.png | Bin 789 -> 287 bytes .../Customization/human_hair.rsi/spiky2.png | Bin 690 -> 278 bytes .../human_hair.rsi/spikyponytail.png | Bin 933 -> 496 bytes .../Customization/human_hair.rsi/stail.png | Bin 846 -> 622 bytes .../Customization/human_hair.rsi/swept.png | Bin 657 -> 268 bytes .../Customization/human_hair.rsi/swept2.png | Bin 651 -> 264 bytes .../Customization/human_hair.rsi/thinning.png | Bin 507 -> 246 bytes .../human_hair.rsi/thinningfront.png | Bin 543 -> 317 bytes .../human_hair.rsi/thinningrear.png | Bin 513 -> 261 bytes .../Customization/human_hair.rsi/tightbun.png | Bin 573 -> 205 bytes .../Customization/human_hair.rsi/topknot.png | Bin 636 -> 310 bytes .../human_hair.rsi/tressshoulder.png | Bin 792 -> 330 bytes .../Customization/human_hair.rsi/trimflat.png | Bin 504 -> 182 bytes .../Customization/human_hair.rsi/trimmed.png | Bin 492 -> 150 bytes .../Customization/human_hair.rsi/twintail.png | Bin 786 -> 367 bytes .../Customization/human_hair.rsi/undercut.png | Bin 612 -> 209 bytes .../human_hair.rsi/undercutleft.png | Bin 636 -> 328 bytes .../human_hair.rsi/undercutright.png | Bin 642 -> 292 bytes .../Customization/human_hair.rsi/unkept.png | Bin 987 -> 639 bytes .../human_hair.rsi/unshaven_mohawk.png | Bin 660 -> 431 bytes .../Customization/human_hair.rsi/updo.png | Bin 735 -> 304 bytes .../veryshortovereyealternate.png | Bin 678 -> 302 bytes .../Customization/human_hair.rsi/vlong.png | Bin 777 -> 376 bytes .../human_hair.rsi/vlongfringe.png | Bin 753 -> 459 bytes .../Customization/human_hair.rsi/volaju.png | Bin 828 -> 369 bytes .../Customization/human_hair.rsi/wisp.png | Bin 963 -> 681 bytes .../female_body-slim_full.png | Bin 0 -> 1157 bytes .../female_body-slim_none.png | Bin 0 -> 1568 bytes .../female_body-slim_top.png | Bin 0 -> 130 bytes .../masking_helpers.rsi/meta.json | 12 + .../Mobs/Species/Human/parts.rsi/head.png | Bin 0 -> 606 bytes .../Species/Human/parts.rsi/head_slim.png | Bin 0 -> 1751 bytes .../Species/Human/parts.rsi/head_slim_f.png | Bin 0 -> 1456 bytes .../Species/Human/parts.rsi/l_arm_slim.png | Bin 0 -> 1266 bytes .../Species/Human/parts.rsi/l_foot_slim.png | Bin 0 -> 1217 bytes .../Species/Human/parts.rsi/l_hand_slim.png | Bin 0 -> 1173 bytes .../Species/Human/parts.rsi/l_leg_slim.png | Bin 0 -> 1389 bytes .../Mobs/Species/Human/parts.rsi/meta.json | 174 +- .../Species/Human/parts.rsi/r_arm_slim.png | Bin 0 -> 1276 bytes .../Species/Human/parts.rsi/r_foot_slim.png | Bin 0 -> 1226 bytes .../Species/Human/parts.rsi/r_hand_slim.png | Bin 0 -> 1167 bytes .../Species/Human/parts.rsi/r_leg_slim.png | Bin 0 -> 1391 bytes .../Mobs/Species/Human/parts.rsi/torso.png | Bin 0 -> 3239 bytes .../Species/Human/parts.rsi/torso_slim.png | Bin 0 -> 2030 bytes .../Species/Human/parts.rsi/torso_slim_f.png | Bin 0 -> 1987 bytes 850 files changed, 6170 insertions(+), 675 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20240219145443_AddBodyType.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20240219145443_AddBodyType.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240219145431_AddBodyType.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240219145431_AddBodyType.cs create mode 100644 Content.Shared/Humanoid/Prototypes/BodyTypePrototype.cs create mode 100644 Resources/Prototypes/_White/BodyTypes/normal.yml create mode 100644 Resources/Prototypes/_White/BodyTypes/slim.yml create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Boxing/boxingblue.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Boxing/boxinggreen.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Boxing/boxingred.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Boxing/boxingyellow.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/captain.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/latex.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/leather.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/armor_reflec.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/bulletproof.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/captain_carapace.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/cult_armour.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/heavy.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/heavygreen.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/heavyred.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/lingarmor.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/magusblue.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/magusred.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/security.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/security_slim.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Bio/cmo.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Bio/general.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Bio/janitor.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Bio/scientist.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Bio/security.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Bio/virology.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/bomber.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/bomber.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/brigmedic.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/clownpriest.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/damedanecoat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/gentlecoat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/insp_coat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/jensencoat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_robo.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_robo.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/pirate.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/windbreaker_paramedic.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/windbreaker_paramedic.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertengineer.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertjanitor.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertleader.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertmedical.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertsecurity.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/basic.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/cburn.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/deathsquad.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/evaprisoner.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/lingspacesuit.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/apron.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/apronbotanist.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/apronchef.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/black_hoodie.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/black_hoodie.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/chaplain_hoodie.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/chef.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/classicponcho.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/cultrobes.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/grey_hoodie.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/grey_hoodie.rsi/open-equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/judge.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/nunrobe.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/plaguedoctorsuit.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/redwizard.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/santa.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/skubbody.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/straight_jacket.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/violetwizard.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/atmos_firesuit.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/bombsuit.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/chicken.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/fire.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/monkey.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/rad.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/shrine-maiden.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/mercwebvest.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/vest.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/webvest.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatatmos.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatbar.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatcap.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatcargo.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatce.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatcentcom.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatchef.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatchem.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatclown.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatcmo.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatengi.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatgen.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coathop.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coathos.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coathydro.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatjani.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatmed.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatmime.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatminer.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatnomi.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatparamed.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatqm.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatrd.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatrobo.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatsci.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatsec.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatviro.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/coatwarden.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/explorer.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/jackboots.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/laceups.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/magboots-advanced.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/magboots-advanced.rsi/on-equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/magboots-syndicate.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/magboots-syndicate.rsi/on-equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/magboots.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/magboots.rsi/on-equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/performer.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/workboots.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Color/blue.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Color/brown.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Color/green.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Color/orange.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Color/purple.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Color/white.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Color/yellow.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Misc/damedaneshoes.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Misc/duck-slippers.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Misc/flippers.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Misc/leather.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Misc/slippers.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Misc/tourist.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/bling.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/chef.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/cult.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/galoshes.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/jester.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/spaceninja.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/swat.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/wizard.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Under/Socks/bee.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/atmosf.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/ce.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/centcomformaldress.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/chaplain.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/chef.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/chemistry.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/detective.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/detective_grey.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/engineering.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/hop.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/hos.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_alt.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/hos_parade.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/hosformaldress.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/janimaid.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/janitor.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/lawyerblack.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/lawyerblue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/lawyergood.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/lawyerpurple.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/lawyerred.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/medical.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/operative_s.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/paramedic.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/performer.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/rnd.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/scientist.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/security.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/bartender_purple.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ce.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ce.rsi/s-equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/centcom_official.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/centcomformal.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/chemistry.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/damedaneoutfit.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/detective.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/detective_grey.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/engineering.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/engineering_hazard.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_engineer.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_janitor.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_leader.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_medic.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_security.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/hop.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_alt.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_blue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_grey.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/hos_parade.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/hosformal.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/janitor.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/journalist.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/lawyerblack.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/lawyerblue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/lawyergood.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/lawyerpurple.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/lawyerred.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/medical.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/monastic_robe_dark.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/monastic_robe_light.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/nanotrasen.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/operative.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/overalls.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/paramedic.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/psychologist.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/pyjamasyndicateblack.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/pyjamasyndicatepink.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/pyjamasyndicatered.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/rainbow.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/reporter.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/rnd.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/safari.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/scientist.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/security_blue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/security_grey.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Scrubs/blue.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Scrubs/green.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Scrubs/purple.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Shorts/Color/red.rsi/equipped-INNERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/Uniforms/Shorts/Color/red_female.rsi/equipped-INNERCLOTHING-body-slim.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classicafro.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classicbigafro.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classicbusiness.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classiccia.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classiccornrows2.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classicfloorlength_bedhead.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classicmodern.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classicmulder.png delete mode 100644 Resources/Textures/Mobs/Customization/human_hair.rsi/classicwisp.png create mode 100644 Resources/Textures/Mobs/Customization/masking_helpers.rsi/female_body-slim_full.png create mode 100644 Resources/Textures/Mobs/Customization/masking_helpers.rsi/female_body-slim_none.png create mode 100644 Resources/Textures/Mobs/Customization/masking_helpers.rsi/female_body-slim_top.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/head.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/head_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/head_slim_f.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/l_arm_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/l_foot_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/l_hand_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/l_leg_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/r_arm_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/r_foot_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/r_hand_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/r_leg_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/torso.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/torso_slim.png create mode 100644 Resources/Textures/Mobs/Species/Human/parts.rsi/torso_slim_f.png diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 261eae2abb..91ed73c89a 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -5,12 +5,14 @@ using Content.Shared.Clothing; using Content.Shared.Clothing.Components; using Content.Shared.Clothing.EntitySystems; using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Prototypes; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; using Content.Shared.Item; using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations; using Robust.Shared.Utility; using static Robust.Client.GameObjects.SpriteComponent; @@ -28,30 +30,31 @@ public sealed class ClientClothingSystem : ClothingSystem /// private static readonly Dictionary TemporarySlotMap = new() { - {"head", "HELMET"}, - {"eyes", "EYES"}, - {"ears", "EARS"}, - {"mask", "MASK"}, - {"outerClothing", "OUTERCLOTHING"}, - {Jumpsuit, "INNERCLOTHING"}, - {"neck", "NECK"}, - {"back", "BACKPACK"}, - {"belt", "BELT"}, - {"gloves", "HAND"}, - {"shoes", "FEET"}, - {"id", "IDCARD"}, - {"pocket1", "POCKET1"}, - {"pocket2", "POCKET2"}, - {"suitstorage", "SUITSTORAGE"}, + { "head", "HELMET" }, + { "eyes", "EYES" }, + { "ears", "EARS" }, + { "mask", "MASK" }, + { "outerClothing", "OUTERCLOTHING" }, + { Jumpsuit, "INNERCLOTHING" }, + { "neck", "NECK" }, + { "back", "BACKPACK" }, + { "belt", "BELT" }, + { "gloves", "HAND" }, + { "shoes", "FEET" }, + { "id", "IDCARD" }, + { "pocket1", "POCKET1" }, + { "pocket2", "POCKET2" }, + { "suitstorage", "SUITSTORAGE" }, //WHITE EDIT - {"socks", "SOCKS"}, - {"underweart", "UNDERWEART"}, - {"underwearb", "UNDERWEARB"}, + { "socks", "SOCKS" }, + { "underweart", "UNDERWEART" }, + { "underwearb", "UNDERWEARB" }, // WHITE EDIT }; [Dependency] private readonly IResourceCache _cache = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; public override void Initialize() { @@ -99,8 +102,13 @@ public sealed class ClientClothingSystem : ClothingSystem // if that returned nothing, attempt to find generic data if (layers == null && !item.ClothingVisuals.TryGetValue(args.Slot, out layers)) { + if (!TryComp(args.Equipee, out HumanoidAppearanceComponent? humanoid)) + { + return; + } + // No generic data either. Attempt to generate defaults from the item's RSI & item-prefixes - if (!TryGetDefaultVisuals(uid, item, args.Slot, inventory.SpeciesId, out layers)) + if (!TryGetDefaultVisuals(uid, item, args.Slot, inventory.SpeciesId, humanoid, out layers)) return; } @@ -126,7 +134,12 @@ public sealed class ClientClothingSystem : ClothingSystem /// /// Useful for lazily adding clothing sprites without modifying yaml. And for backwards compatibility. /// - private bool TryGetDefaultVisuals(EntityUid uid, ClothingComponent clothing, string slot, string? speciesId, + private bool TryGetDefaultVisuals( + EntityUid uid, + ClothingComponent clothing, + string slot, + string? speciesId, + HumanoidAppearanceComponent humanoid, [NotNullWhen(true)] out List? layers) { layers = null; @@ -138,14 +151,12 @@ public sealed class ClientClothingSystem : ClothingSystem else if (TryComp(uid, out SpriteComponent? sprite)) rsi = sprite.BaseRSI; - if (rsi == null || rsi.Path == null) + if (rsi?.Path == null) return false; var correctedSlot = slot; TemporarySlotMap.TryGetValue(correctedSlot, out correctedSlot); - - var state = $"equipped-{correctedSlot}"; if (clothing.EquippedPrefix != null) @@ -154,6 +165,13 @@ public sealed class ClientClothingSystem : ClothingSystem if (clothing.EquippedState != null) state = $"{clothing.EquippedState}"; + // body type specific + var bodyTypeProto = _prototypeManager.Index(humanoid.BodyType); + if (rsi.TryGetState($"{state}-{bodyTypeProto.Name}", out _)) + { + state = $"{state}-{bodyTypeProto.Name}"; + } + // species specific if (speciesId != null && rsi.TryGetState($"{state}-{speciesId}", out _)) { @@ -164,10 +182,13 @@ public sealed class ClientClothingSystem : ClothingSystem return false; } - var layer = new PrototypeLayerData(); - layer.RsiPath = rsi.Path.ToString(); - layer.State = state; - layers = new() { layer }; + var layer = new PrototypeLayerData + { + RsiPath = rsi.Path.ToString(), + State = state + }; + + layers = new List { layer }; return true; } @@ -189,7 +210,7 @@ public sealed class ClientClothingSystem : ClothingSystem && TryComp(uid, out SpriteComponent? sprite) && sprite.LayerMapTryGet(HumanoidVisualLayers.StencilMask, out var maskLayer)) { - sprite.LayerSetVisible(maskLayer, false); + sprite.LayerSetVisible(maskLayer, false); } if (!TryComp(uid, out InventorySlotsComponent? inventorySlots)) @@ -204,6 +225,7 @@ public sealed class ClientClothingSystem : ClothingSystem { component.RemoveLayer(layer); } + revealedLayers.Clear(); } @@ -226,12 +248,17 @@ public sealed class ClientClothingSystem : ClothingSystem RenderEquipment(args.Equipee, uid, args.Slot, clothingComponent: component); } - private void RenderEquipment(EntityUid equipee, EntityUid equipment, string slot, - InventoryComponent? inventory = null, SpriteComponent? sprite = null, ClothingComponent? clothingComponent = null, + private void RenderEquipment( + EntityUid equipee, + EntityUid equipment, + string slot, + InventoryComponent? inventory = null, + SpriteComponent? sprite = null, + ClothingComponent? clothingComponent = null, InventorySlotsComponent? inventorySlots = null) { if (!Resolve(equipee, ref inventory, ref sprite, ref inventorySlots) || - !Resolve(equipment, ref clothingComponent, false)) + !Resolve(equipment, ref clothingComponent, false)) { return; } @@ -250,11 +277,12 @@ public sealed class ClientClothingSystem : ClothingSystem { sprite.RemoveLayer(key); } + revealedLayers.Clear(); } else { - revealedLayers = new(); + revealedLayers = new HashSet(); inventorySlots.VisualLayerKeys[slot] = revealedLayers; } @@ -276,7 +304,9 @@ public sealed class ClientClothingSystem : ClothingSystem { if (!revealedLayers.Add(key)) { - Logger.Warning($"Duplicate key for clothing visuals: {key}. Are multiple components attempting to modify the same layer? Equipment: {ToPrettyString(equipment)}"); + Logger.Warning( + $"Duplicate key for clothing visuals: {key}. Are multiple components attempting to modify the same layer? Equipment: {ToPrettyString(equipment)}"); + continue; } @@ -315,12 +345,10 @@ public sealed class ClientClothingSystem : ClothingSystem RaiseLocalEvent(equipment, new EquipmentVisualsUpdatedEvent(equipee, slot, revealedLayers), true); } - /// /// Sets a sprite's gendered mask based on gender (obviously). /// /// Sprite to modify - /// Humanoid, to get gender from /// Clothing component, to get mask sprite type private void SetGenderedMask(EntityUid uid, SpriteComponent sprite, ClothingComponent clothing) { @@ -330,7 +358,12 @@ public sealed class ClientClothingSystem : ClothingSystem ClothingMask mask; string prefix; - switch (CompOrNull(uid)?.Sex) + if (!TryComp(uid, out HumanoidAppearanceComponent? humanoid)) + { + return; + } + + switch (humanoid.Sex) { case Sex.Male: mask = clothing.MaleMask; @@ -338,7 +371,8 @@ public sealed class ClientClothingSystem : ClothingSystem break; case Sex.Female: mask = clothing.FemaleMask; - prefix = "female_"; + var bodyTypeProto = _prototypeManager.Index(humanoid.BodyType!); + prefix = bodyTypeProto.Name != "body-normal" ? $"female_{bodyTypeProto.Name}_" : "female_"; break; default: mask = clothing.UnisexMask; @@ -348,10 +382,11 @@ public sealed class ClientClothingSystem : ClothingSystem sprite.LayerSetState(layer, mask switch { - ClothingMask.NoMask => $"{prefix}none", + ClothingMask.NoMask => $"{prefix}none", ClothingMask.UniformTop => $"{prefix}top", - _ => $"{prefix}full", + _ => $"{prefix}full", }); + sprite.LayerSetVisible(layer, true); } } diff --git a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs index 5bae35da5b..ddb1853ef2 100644 --- a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs +++ b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs @@ -42,9 +42,8 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem component.BaseLayers.Clear(); // add default species layers - var speciesProto = _prototypeManager.Index(component.Species); - var baseSprites = _prototypeManager.Index(speciesProto.SpriteSet); - foreach (var (key, id) in baseSprites.Sprites) + var bodyTypeProto = _prototypeManager.Index(component.BodyType); + foreach (var (key, id) in bodyTypeProto.Sprites) { oldLayers.Remove(key); if (!component.CustomBaseLayers.ContainsKey(key)) @@ -108,13 +107,17 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem /// This should not be used if the entity is owned by the server. The server will otherwise /// override this with the appearance data it sends over. /// - public override void LoadProfile(EntityUid uid, HumanoidCharacterProfile profile, HumanoidAppearanceComponent? humanoid = null) + public override void LoadProfile( + EntityUid uid, + HumanoidCharacterProfile profile, + HumanoidAppearanceComponent? humanoid = null) { if (!Resolve(uid, ref humanoid)) { return; } + humanoid.BodyType = profile.BodyType; var customBaseLayers = new Dictionary(); var speciesPrototype = _prototypeManager.Index(profile.Species); @@ -142,15 +145,19 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem //markings.RemoveCategory(MarkingCategories.FacialHair); // We need to ensure hair before applying it or coloring can try depend on markings that can be invalid - var hairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.Hair, out var hairAlpha, _prototypeManager) + var hairColor = _markingManager.MustMatchSkin(profile.BodyType, HumanoidVisualLayers.Hair, out var hairAlpha, + _prototypeManager) ? profile.Appearance.SkinColor.WithAlpha(hairAlpha) : profile.Appearance.HairColor; + var hair = new Marking(profile.Appearance.HairStyleId, new[] { hairColor }); - var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, out var facialHairAlpha, _prototypeManager) + var facialHairColor = _markingManager.MustMatchSkin(profile.BodyType, HumanoidVisualLayers.FacialHair, + out var facialHairAlpha, _prototypeManager) ? profile.Appearance.SkinColor.WithAlpha(facialHairAlpha) : profile.Appearance.FacialHairColor; + var facialHair = new Marking(profile.Appearance.FacialHairStyleId, new[] { facialHairColor }); @@ -158,6 +165,7 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem { markings.AddBack(MarkingCategories.Hair, hair); } + if (_markingManager.CanBeApplied(profile.Species, profile.Sex, facialHair, _prototypeManager)) { markings.AddBack(MarkingCategories.FacialHair, facialHair); @@ -172,10 +180,13 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem profile.Appearance.EyeColor, markings ); + markings.AddBack(prototype.MarkingCategory, new Marking(marking.MarkingId, markingColors)); } - markings.EnsureSpecies(profile.Species, profile.Appearance.SkinColor, _markingManager, _prototypeManager); + markings.EnsureSpecies(profile.Species, profile.BodyType, profile.Appearance.SkinColor, _markingManager, + _prototypeManager); + markings.EnsureSexes(profile.Sex, _markingManager); markings.EnsureDefault( profile.Appearance.SkinColor, @@ -190,6 +201,7 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem humanoid.CustomBaseLayers = customBaseLayers; humanoid.Sex = profile.Sex; humanoid.Gender = profile.Gender; + humanoid.BodyType = profile.BodyType; humanoid.Age = profile.Age; humanoid.Species = profile.Species; humanoid.SkinColor = profile.Appearance.SkinColor; @@ -261,7 +273,9 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem spriteComp.RemoveLayer(index); } } - private void ApplyMarking(MarkingPrototype markingPrototype, + + private void ApplyMarking( + MarkingPrototype markingPrototype, IReadOnlyList? colors, bool visible, HumanoidAppearanceComponent humanoid, @@ -274,7 +288,7 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem visible &= !IsHidden(humanoid, markingPrototype.BodyPart); visible &= humanoid.BaseLayers.TryGetValue(markingPrototype.BodyPart, out var setting) - && setting.AllowsMarkings; + && setting.AllowsMarkings; for (var j = 0; j < markingPrototype.Sprites.Count; j++) { @@ -315,7 +329,12 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem } } - public override void SetSkinColor(EntityUid uid, Color skinColor, bool sync = true, bool verify = true, HumanoidAppearanceComponent? humanoid = null) + public override void SetSkinColor( + EntityUid uid, + Color skinColor, + bool sync = true, + bool verify = true, + HumanoidAppearanceComponent? humanoid = null) { if (!Resolve(uid, ref humanoid) || humanoid.SkinColor == skinColor) return; @@ -366,7 +385,8 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem { foreach (var marking in markingList) { - if (_markingManager.TryGetMarking(marking, out var markingPrototype) && markingPrototype.BodyPart == layer) + if (_markingManager.TryGetMarking(marking, out var markingPrototype) && + markingPrototype.BodyPart == layer) ApplyMarking(markingPrototype, marking.MarkingColors, marking.Visible, humanoid, sprite); } } diff --git a/Content.Client/Humanoid/HumanoidMarkingModifierBoundUserInterface.cs b/Content.Client/Humanoid/HumanoidMarkingModifierBoundUserInterface.cs index a8872604a4..cbb9713f7e 100644 --- a/Content.Client/Humanoid/HumanoidMarkingModifierBoundUserInterface.cs +++ b/Content.Client/Humanoid/HumanoidMarkingModifierBoundUserInterface.cs @@ -40,7 +40,7 @@ public sealed class HumanoidMarkingModifierBoundUserInterface : BoundUserInterfa return; } - _window.SetState(cast.MarkingSet, cast.Species, cast.Sex, cast.SkinColor, cast.CustomBaseLayers); + _window.SetState(cast.MarkingSet, cast.Species, cast.Sex, cast.BodyType, cast.SkinColor, cast.CustomBaseLayers); } private void SendMarkingSet(MarkingSet set) diff --git a/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs b/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs index 4cde587c58..1a19df57b9 100644 --- a/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs +++ b/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs @@ -59,10 +59,12 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow string? state = _protoMan.HasIndex(modifier.Text) ? modifier.Text : null; OnLayerInfoModified?.Invoke(layer, new CustomBaseLayerInfo(state, modifier.Color)); } + public void SetState( MarkingSet markings, string species, Sex sex, + string bodyType, Color skinColor, Dictionary info ) @@ -84,7 +86,7 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow eyesColor = eyes.Color.Value; } - MarkingPickerWidget.SetData(markings, species, sex, skinColor, eyesColor); + MarkingPickerWidget.SetData(markings, species, sex, bodyType, skinColor, eyesColor); } private sealed class HumanoidBaseLayerModifier : BoxContainer @@ -95,7 +97,9 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow private BoxContainer _infoBox; public bool Enabled => _enable.Pressed; + public string Text => _lineEdit.Text; + public Color Color => _colorSliders.Color; public Action? OnStateChanged; @@ -109,6 +113,7 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow MinWidth = 250, HorizontalExpand = true }; + AddChild(labelBox); labelBox.AddChild(new Label @@ -116,6 +121,7 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow HorizontalExpand = true, Text = layer.ToString() }); + _enable = new CheckBox { Text = "Enable", @@ -128,6 +134,7 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow Orientation = LayoutOrientation.Vertical, Visible = false }; + _enable.OnToggled += args => { _infoBox.Visible = args.Pressed; @@ -135,7 +142,7 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow }; var lineEditBox = new BoxContainer(); - lineEditBox.AddChild(new Label { Text = "Prototype id: "}); + lineEditBox.AddChild(new Label { Text = "Prototype id: " }); // TODO: This line edit should really be an options / dropdown selector, not text. _lineEdit = new() { MinWidth = 200 }; diff --git a/Content.Client/Humanoid/MarkingPicker.xaml.cs b/Content.Client/Humanoid/MarkingPicker.xaml.cs index f5b85ca89c..600e4792c1 100644 --- a/Content.Client/Humanoid/MarkingPicker.xaml.cs +++ b/Content.Client/Humanoid/MarkingPicker.xaml.cs @@ -40,6 +40,7 @@ public sealed partial class MarkingPicker : Control private List _markingCategories = Enum.GetValues().ToList(); private string _currentSpecies = SharedHumanoidAppearanceSystem.DefaultSpecies; + private string _currentBodyType = SharedHumanoidAppearanceSystem.DefaultBodyType; private Sex _currentSex = Sex.Unsexed; public Color CurrentSkinColor = Color.White; public Color CurrentEyeColor = Color.Black; @@ -83,7 +84,7 @@ public sealed partial class MarkingPicker : Control } } - public void SetData(List newMarkings, string species, Sex sex, Color skinColor, Color eyeColor) + public void SetData(List newMarkings, string species, Sex sex, string bodyType, Color skinColor, Color eyeColor) { var pointsProto = _prototypeManager .Index(species).MarkingPoints; @@ -91,7 +92,7 @@ public sealed partial class MarkingPicker : Control if (!IgnoreSpecies) { - _currentMarkings.EnsureSpecies(species, skinColor, _markingManager); // should be validated server-side but it can't hurt + _currentMarkings.EnsureSpecies(species, bodyType, skinColor, _markingManager); // should be validated server-side but it can't hurt } _currentSpecies = species; @@ -103,13 +104,13 @@ public sealed partial class MarkingPicker : Control PopulateUsed(); } - public void SetData(MarkingSet set, string species, Sex sex, Color skinColor, Color eyeColor) + public void SetData(MarkingSet set, string species, Sex sex, string bodyType, Color skinColor, Color eyeColor) { _currentMarkings = set; if (!IgnoreSpecies) { - _currentMarkings.EnsureSpecies(species, skinColor, _markingManager); // should be validated server-side but it can't hurt + _currentMarkings.EnsureSpecies(species, bodyType, skinColor, _markingManager); // should be validated server-side but it can't hurt } _currentSpecies = species; @@ -234,7 +235,7 @@ public sealed partial class MarkingPicker : Control if (!IgnoreSpecies) { - _currentMarkings.EnsureSpecies(_currentSpecies, null, _markingManager); + _currentMarkings.EnsureSpecies(_currentSpecies, _currentBodyType, null, _markingManager); } // walk backwards through the list for visual purposes @@ -338,7 +339,7 @@ public sealed partial class MarkingPicker : Control var speciesPrototype = _prototypeManager.Index(species); _currentMarkings = new(markingList, speciesPrototype.MarkingPoints, _markingManager, _prototypeManager); - _currentMarkings.EnsureSpecies(species, null, _markingManager); + _currentMarkings.EnsureSpecies(species, _currentBodyType, null, _markingManager); _currentMarkings.EnsureSexes(_currentSex, _markingManager); Populate(CMarkingSearch.Text); @@ -353,7 +354,7 @@ public sealed partial class MarkingPicker : Control var speciesPrototype = _prototypeManager.Index(_currentSpecies); _currentMarkings = new(markingList, speciesPrototype.MarkingPoints, _markingManager, _prototypeManager); - _currentMarkings.EnsureSpecies(_currentSpecies, null, _markingManager); + _currentMarkings.EnsureSpecies(_currentSpecies, _currentBodyType, null, _markingManager); _currentMarkings.EnsureSexes(_currentSex, _markingManager); Populate(CMarkingSearch.Text); diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml index fcdb6322f1..7278e3e1a5 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml @@ -75,6 +75,12 @@ + + +