From 26d68a7557dee368c8cb9b73930952d089ac2290 Mon Sep 17 00:00:00 2001 From: Spatison <137375981+Spatison@users.noreply.github.com> Date: Sat, 21 Dec 2024 00:32:07 +0300 Subject: [PATCH 01/15] feature: body types --- .../Clothing/ClientClothingSystem.cs | 18 +- .../Humanoid/HumanoidAppearanceSystem.cs | 8 +- .../Lobby/UI/HumanoidProfileEditor.xaml | 8 + .../Lobby/UI/HumanoidProfileEditor.xaml.cs | 50 + .../Tests/Preferences/ServerDbSqliteTests.cs | 1 + .../20241220195443_AddBodyType.Designer.cs | 1821 +++++++++++++++++ .../Postgres/20241220195443_AddBodyType.cs | 29 + .../PostgresServerDbContextModelSnapshot.cs | 5 + .../20241220195437_AddBodyType.Designer.cs | 1750 ++++++++++++++++ .../Sqlite/20241220195437_AddBodyType.cs | 29 + .../SqliteServerDbContextModelSnapshot.cs | 5 + Content.Server.Database/Model.cs | 1 + Content.Server/Database/ServerDbBase.cs | 2 + .../HumanoidAppearanceSystem.Modifier.cs | 3 + .../Systems/HumanoidAppearanceSystem.cs | 2 + .../SharedBodySystem.PartAppearance.cs | 8 +- .../Humanoid/HumanoidAppearanceComponent.cs | 10 +- .../Humanoid/Markings/MarkingManager.cs | 8 +- .../Prototypes/HumanoidSpritePrototypes.cs | 20 - .../Humanoid/Prototypes/SpeciesPrototype.cs | 9 +- .../SharedHumanoidAppearanceSystem.cs | 31 + .../SharedHumanoidMarkingModifierSystem.cs | 3 + .../Preferences/HumanoidCharacterProfile.cs | 16 + .../Humanoid/Prototypes/BodyTypePrototype.cs | 35 + .../Prototypes/DeltaV/Species/vulpkanin.yml | 11 +- .../Prototypes/Nyanotrasen/Species/Oni.yml | 5 +- .../Nyanotrasen/Species/felinid.yml | 5 +- Resources/Prototypes/Species/arachne.yml | 12 +- Resources/Prototypes/Species/arachnid.yml | 11 +- Resources/Prototypes/Species/diona.yml | 11 +- Resources/Prototypes/Species/dwarf.yml | 5 +- Resources/Prototypes/Species/gingerbread.yml | 11 +- Resources/Prototypes/Species/harpy.yml | 11 +- Resources/Prototypes/Species/human.yml | 109 +- Resources/Prototypes/Species/ipc.yml | 11 +- Resources/Prototypes/Species/moth.yml | 11 +- Resources/Prototypes/Species/reptilian.yml | 11 +- Resources/Prototypes/Species/shadowkin.yml | 11 +- Resources/Prototypes/Species/skeleton.yml | 11 +- Resources/Prototypes/Species/slime.yml | 11 +- Resources/Prototypes/Species/vox.yml | 11 +- .../equipped-HAND-body-slim.png | Bin 0 -> 2485 bytes .../Gloves/Boxing/boxingblue.rsi/meta.json | 6 +- .../equipped-HAND-body-slim.png | Bin 0 -> 2483 bytes .../Gloves/Boxing/boxinggreen.rsi/meta.json | 6 +- .../boxingred.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2440 bytes .../Gloves/Boxing/boxingred.rsi/meta.json | 6 +- .../equipped-HAND-body-slim.png | Bin 0 -> 2491 bytes .../Gloves/Boxing/boxingyellow.rsi/meta.json | 6 +- .../black.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1990 bytes .../Hands/Gloves/Color/black.rsi/meta.json | 4 + .../yellow.rsi/equipped-HAND-body-slim.png | Bin 0 -> 1968 bytes .../Color/yellow.rsi/equipped-HAND-vox.png | Bin 0 -> 387 bytes .../Hands/Gloves/Color/yellow.rsi/meta.json | 8 + .../captain.rsi/equipped-HAND-body-slim.png | Bin 0 -> 2050 bytes .../Hands/Gloves/captain.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 | 6 +- .../equipped-HAND-body-slim.png | Bin 0 -> 2165 bytes .../Hands/Gloves/powerglove.rsi/meta.json | 10 +- .../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 | 6 +- .../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 .../equipped-OUTERCLOTHING.png | Bin 449 -> 1142 bytes .../Armor/armor_reflec.rsi/icon.png | Bin 344 -> 507 bytes .../Armor/armor_reflec.rsi/inhand-left.png | Bin 292 -> 415 bytes .../Armor/armor_reflec.rsi/inhand-right.png | Bin 289 -> 411 bytes .../Armor/armor_reflec.rsi/meta.json | 8 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 834 bytes .../equipped-OUTERCLOTHING.png | Bin 622 -> 844 bytes .../Armor/bulletproof.rsi/icon.png | Bin 236 -> 373 bytes .../Armor/bulletproof.rsi/inhand-left.png | Bin 333 -> 584 bytes .../Armor/bulletproof.rsi/inhand-right.png | Bin 346 -> 588 bytes .../Armor/bulletproof.rsi/meta.json | 8 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2161 bytes .../Armor/cult_armour.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2877 bytes .../OuterClothing/Armor/heavy.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3165 bytes .../Armor/heavygreen.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3158 bytes .../Armor/heavyred.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3132 bytes .../Armor/lingarmor.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2501 bytes .../Armor/magusblue.rsi/icon.png | Bin 809 -> 661 bytes .../Armor/magusblue.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2457 bytes .../OuterClothing/Armor/magusred.rsi/icon.png | Bin 791 -> 646 bytes .../Armor/magusred.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1537 bytes .../Armor/riot.rsi/equipped-OUTERCLOTHING.png | Bin 648 -> 1481 bytes .../OuterClothing/Armor/riot.rsi/icon.png | Bin 231 -> 577 bytes .../Armor/riot.rsi/inhand-left.png | Bin 541 -> 381 bytes .../Armor/riot.rsi/inhand-right.png | Bin 546 -> 376 bytes .../OuterClothing/Armor/riot.rsi/meta.json | 58 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1547 bytes .../security.rsi/equipped-OUTERCLOTHING.png | Bin 413 -> 731 bytes .../OuterClothing/Armor/security.rsi/icon.png | Bin 193 -> 341 bytes .../Armor/security.rsi/inhand-left.png | Bin 286 -> 369 bytes .../Armor/security.rsi/inhand-right.png | Bin 291 -> 333 bytes .../Armor/security.rsi/meta.json | 8 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1547 bytes .../equipped-OUTERCLOTHING.png | Bin 484 -> 731 bytes .../Armor/security_slim.rsi/icon.png | Bin 195 -> 341 bytes .../Armor/security_slim.rsi/inhand-left.png | Bin 374 -> 369 bytes .../Armor/security_slim.rsi/inhand-right.png | Bin 368 -> 333 bytes .../Armor/security_slim.rsi/meta.json | 8 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1318 bytes .../OuterClothing/Bio/cmo.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1317 bytes .../OuterClothing/Bio/general.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1312 bytes .../OuterClothing/Bio/janitor.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1304 bytes .../OuterClothing/Bio/scientist.rsi/meta.json | 4 + .../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 | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1379 bytes .../OuterClothing/Coats/bomber.rsi/meta.json | 8 + .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 943 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2675 bytes .../Coats/brigmedic.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1753 bytes .../Coats/damedanecoat.rsi/meta.json | 6 +- .../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 | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1929 bytes .../Coats/hos_trenchcoat.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1764 bytes .../Coats/insp_coat.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1905 bytes .../Coats/jensencoat.rsi/meta.json | 6 +- .../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 | 12 +- .../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 | 10 +- .../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 | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1842 bytes .../OuterClothing/Coats/rd_coat.rsi/meta.json | 10 +- .../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 | 10 +- .../open-equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1879 bytes .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2495 bytes .../ERTSuits/ertengineer.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2545 bytes .../ERTSuits/ertjanitor.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2540 bytes .../ERTSuits/ertleader.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2382 bytes .../ERTSuits/ertmedical.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2315 bytes .../ERTSuits/ertsecurity.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2430 bytes .../Hardsuits/basic.rsi/meta.json | 6 +- .../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 | 6 +- .../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 -> 2193 bytes .../Hardsuits/lingspacesuit.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3053 bytes .../Hardsuits/luxury.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2447 bytes .../Hardsuits/medical.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2425 bytes .../Hardsuits/paramed.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3225 bytes .../OuterClothing/Hardsuits/rd.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 3113 bytes .../Hardsuits/salvage.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 8147 bytes .../Hardsuits/security-red.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 8174 bytes .../Hardsuits/security-warden.rsi/meta.json | 4 + .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2765 bytes .../Hardsuits/spatio.rsi/meta.json | 5 +- .../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 | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1806 bytes .../OuterClothing/Misc/apron.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1522 bytes .../Misc/apronbotanist.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1448 bytes .../Misc/apronchef.rsi/meta.json | 6 +- .../cardborg.rsi/equipped-OUTERCLOTHING.png | Bin 890 -> 1068 bytes .../OuterClothing/Misc/cardborg.rsi/icon.png | Bin 445 -> 532 bytes .../Misc/cardborg.rsi/inhand-left.png | Bin 464 -> 492 bytes .../Misc/cardborg.rsi/inhand-right.png | Bin 479 -> 503 bytes .../OuterClothing/Misc/cardborg.rsi/meta.json | 4 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1924 bytes .../Misc/chaplain_hoodie.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1800 bytes .../OuterClothing/Misc/chef.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1682 bytes .../Misc/classicponcho.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2117 bytes .../Misc/cultrobes.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1768 bytes .../Misc/grey_hoodie.rsi/meta.json | 10 +- .../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 | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1971 bytes .../OuterClothing/Misc/nunrobe.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2825 bytes .../Misc/plaguedoctorsuit.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1843 bytes .../Misc/redwizard.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2477 bytes .../OuterClothing/Misc/santa.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1504 bytes .../OuterClothing/Misc/skubbody.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2522 bytes .../Misc/straight_jacket.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2526 bytes .../Misc/violetwizard.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2157 bytes .../OuterClothing/Misc/wizard.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2675 bytes .../Suits/atmos_firesuit.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2396 bytes .../Suits/bombsuit.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2311 bytes .../OuterClothing/Suits/chicken.rsi/meta.json | 6 +- .../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 | 6 +- .../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 | 6 +- .../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 | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1471 bytes .../OuterClothing/Vests/vest.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1851 bytes .../OuterClothing/Vests/webvest.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1301 bytes .../WinterCoats/coat.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1470 bytes .../WinterCoats/coatatmos.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2279 bytes .../WinterCoats/coatbar.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1383 bytes .../WinterCoats/coatcap.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1543 bytes .../WinterCoats/coatcargo.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1488 bytes .../WinterCoats/coatce.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1440 bytes .../WinterCoats/coatcentcom.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1850 bytes .../WinterCoats/coatchef.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1468 bytes .../WinterCoats/coatchem.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1442 bytes .../WinterCoats/coatcmo.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1431 bytes .../WinterCoats/coatengi.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1474 bytes .../WinterCoats/coatgen.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1336 bytes .../WinterCoats/coathop.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2046 bytes .../coathos.rsi/equipped-OUTERCLOTHING.png | Bin 1372 -> 1210 bytes .../WinterCoats/coathos.rsi/icon.png | Bin 542 -> 448 bytes .../WinterCoats/coathos.rsi/meta.json | 8 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1517 bytes .../WinterCoats/coathydro.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1415 bytes .../WinterCoats/coatjani.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1417 bytes .../WinterCoats/coatmed.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1184 bytes .../WinterCoats/coatmime.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1408 bytes .../WinterCoats/coatminer.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1673 bytes .../WinterCoats/coatnomi.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1246 bytes .../WinterCoats/coatparamed.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1346 bytes .../WinterCoats/coatqm.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1413 bytes .../WinterCoats/coatrd.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1527 bytes .../WinterCoats/coatrobo.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1463 bytes .../WinterCoats/coatsci.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1857 bytes .../coatsec.rsi/equipped-OUTERCLOTHING.png | Bin 1340 -> 1128 bytes .../WinterCoats/coatsec.rsi/icon.png | Bin 517 -> 497 bytes .../WinterCoats/coatsec.rsi/meta.json | 8 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 1510 bytes .../WinterCoats/coatviro.rsi/meta.json | 6 +- .../WinterCoats/coatwarden.rsi/meta.json | 6 +- .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 2484 bytes .../equipped-OUTERCLOTHING-vox.png | Bin .../coatwardenarmored.rsi/meta.json | 10 +- .../equipped-FEET-body-slim.png | Bin 0 -> 635 bytes .../Shoes/Boots/combatboots.rsi/meta.json | 6 +- .../explorer.rsi/equipped-FEET-body-slim.png | Bin 0 -> 564 bytes .../Shoes/Boots/explorer.rsi/meta.json | 6 +- .../jackboots.rsi/equipped-FEET-body-slim.png | Bin 0 -> 543 bytes .../Shoes/Boots/jackboots.rsi/meta.json | 6 +- .../laceups.rsi/equipped-FEET-body-slim.png | Bin 0 -> 462 bytes .../Shoes/Boots/laceups.rsi/meta.json | 6 +- .../performer.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1719 bytes .../Shoes/Boots/performer.rsi/meta.json | 8 +- .../workboots.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1416 bytes .../Shoes/Boots/workboots.rsi/meta.json | 4 + .../equipped-FEET-body-slim.png | Bin 0 -> 1360 bytes .../Shoes/Misc/damedaneshoes.rsi/meta.json | 6 +- .../equipped-FEET-body-slim.png | Bin 0 -> 1378 bytes .../Shoes/Misc/duck-slippers.rsi/meta.json | 6 +- .../flippers.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1388 bytes .../Shoes/Misc/flippers.rsi/meta.json | 6 +- .../leather.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1342 bytes .../Clothing/Shoes/Misc/leather.rsi/meta.json | 6 +- .../slippers.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1408 bytes .../Shoes/Misc/slippers.rsi/meta.json | 6 +- .../tourist.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1471 bytes .../Clothing/Shoes/Misc/tourist.rsi/meta.json | 6 +- .../chef.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1436 bytes .../Shoes/Specific/chef.rsi/meta.json | 6 +- .../clown.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1356 bytes .../Shoes/Specific/clown.rsi/meta.json | 4 + .../cult.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1353 bytes .../Shoes/Specific/cult.rsi/meta.json | 6 +- .../equipped-FEET-body-slim.png | Bin 0 -> 1386 bytes .../Shoes/Specific/spaceninja.rsi/meta.json | 6 +- .../swat.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1476 bytes .../Shoes/Specific/swat.rsi/meta.json | 6 +- .../wizard.rsi/equipped-FEET-body-slim.png | Bin 0 -> 1297 bytes .../Shoes/Specific/wizard.rsi/meta.json | 6 +- .../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 .../equipped-OUTERCLOTHING-body-slim.png | Bin 0 -> 8714 bytes .../OuterClothing/Hardsuits/hop.rsi/meta.json | 4 + 395 files changed, 4962 insertions(+), 291 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20241220195443_AddBodyType.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241220195443_AddBodyType.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241220195437_AddBodyType.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241220195437_AddBodyType.cs create mode 100644 Content.Shared/_White/Humanoid/Prototypes/BodyTypePrototype.cs 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/yellow.rsi/equipped-HAND-body-slim.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/equipped-HAND-vox.png create mode 100644 Resources/Textures/Clothing/Hands/Gloves/captain.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/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/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/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/rd_coat.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/rd_coat.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/lingspacesuit.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.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/paramed.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/security-red.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/security-warden.rsi/equipped-OUTERCLOTHING-body-slim.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.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/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/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/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/coatwardenarmored.rsi/equipped-OUTERCLOTHING-body-slim.png rename Resources/Textures/Clothing/OuterClothing/WinterCoats/{coatwarden.rsi => coatwardenarmored.rsi}/equipped-OUTERCLOTHING-vox.png (100%) 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/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/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/chef.rsi/equipped-FEET-body-slim.png create mode 100644 Resources/Textures/Clothing/Shoes/Specific/clown.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/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/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 create mode 100644 Resources/Textures/_White/Clothing/OuterClothing/Hardsuits/hop.rsi/equipped-OUTERCLOTHING-body-slim.png diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index b3d6848915..d18e6f5fc1 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -3,6 +3,7 @@ using System.Numerics; using Content.Client.DisplacementMap; using Content.Client.Inventory; +using Content.Shared._White.Humanoid.Prototypes; using Content.Shared.Clothing; using Content.Shared.Clothing.Components; using Content.Shared.Clothing.EntitySystems; @@ -14,6 +15,7 @@ using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.TypeSerializers.Implementations; using Robust.Shared.Utility; @@ -54,6 +56,8 @@ public sealed class ClientClothingSystem : ClothingSystem [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly DisplacementMapSystem _displacement = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; // WD EDIT + public override void Initialize() { base.Initialize(); @@ -100,7 +104,7 @@ private void OnGetVisuals(EntityUid uid, ClothingComponent item, GetEquipmentVis if (layers == null && !item.ClothingVisuals.TryGetValue(args.Slot, out layers)) { // 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, args.Equipee, out layers)) // WD EDIT return; } @@ -127,7 +131,7 @@ private void OnGetVisuals(EntityUid uid, ClothingComponent item, GetEquipmentVis /// Useful for lazily adding clothing sprites without modifying yaml. And for backwards compatibility. /// private bool TryGetDefaultVisuals(EntityUid uid, ClothingComponent clothing, string slot, string? speciesId, - [NotNullWhen(true)] out List? layers) + EntityUid target, [NotNullWhen(true)] out List? layers) // WD EDIT { layers = null; @@ -154,6 +158,16 @@ private bool TryGetDefaultVisuals(EntityUid uid, ClothingComponent clothing, str if (clothing.EquippedState != null) state = $"{clothing.EquippedState}"; + // WD EDIT START + // body type specific + if (TryComp(target, out HumanoidAppearanceComponent? humanoid)) + { + var bodyTypeName = _prototype.Index(humanoid.BodyType).Name; + if (rsi.TryGetState($"{state}-{bodyTypeName}", out _)) + state = $"{state}-{bodyTypeName}"; + } + // WD EDIT END + // species specific if (speciesId != null && rsi.TryGetState($"{state}-{speciesId}", out _)) { diff --git a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs index b05a16b6d4..3575943b57 100644 --- a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs +++ b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs @@ -1,9 +1,11 @@ using System.Numerics; +using Content.Shared._White.Humanoid.Prototypes; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; using Robust.Client.GameObjects; +using Robust.Shared.Physics; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -52,9 +54,8 @@ private void UpdateLayers(HumanoidAppearanceComponent component, SpriteComponent 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); // WD EDIT + foreach (var (key, id) in bodyTypeProto.Sprites) // WD EDIT { oldLayers.Remove(key); if (!component.CustomBaseLayers.ContainsKey(key)) @@ -206,6 +207,7 @@ public override void LoadProfile(EntityUid uid, HumanoidCharacterProfile? profil humanoid.Sex = profile.Sex; humanoid.Gender = profile.Gender; humanoid.Age = profile.Age; + humanoid.BodyType = profile.BodyType; // WD EDIT humanoid.Species = profile.Species; humanoid.SkinColor = profile.Appearance.SkinColor; humanoid.EyeColor = profile.Appearance.EyeColor; diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml index 687d5c45e5..8e871ddcd1 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml @@ -68,6 +68,14 @@ + + + + +