From 3a7a3a89ba6f4bcba83d1544f235f97830979fba Mon Sep 17 00:00:00 2001 From: DamianX Date: Sat, 23 Nov 2019 21:55:46 +0100 Subject: [PATCH] Added hair, facial hair, magic mirror (#452) * Added hair, facial hair, magic mirror * I forgot to commit the textures lmao * Use shader to fix hair color blending --- .../MagicMirrorBoundUserInterface.cs | 189 +++++++++++++++++ .../Components/Mobs/HairComponent.cs | 100 +++++++++ .../Components/MagicMirrorComponent.cs | 70 +++++++ .../Components/Mobs/HairComponent.cs | 11 + .../Components/Mobs/SharedHairComponent.cs | 96 +++++++++ .../Components/SharedMagicMirrorComponent.cs | 45 ++++ Content.Shared/GameObjects/ContentNetIDs.cs | 1 + .../Preferences/Appearance/HairStyles.cs | 192 ++++++++++++++++++ .../Appearance/HumanoidCharacterAppearance.cs | 11 + .../Prototypes/Entities/buildings/mirror.yml | 26 +++ Resources/Prototypes/Entities/mobs/human.yml | 12 +- Resources/Prototypes/Shaders/hair.yml | 6 + Resources/Shaders/hair.swsl | 8 + .../Textures/Buildings/mirror.rsi/meta.json | 1 + .../Textures/Buildings/mirror.rsi/mirror.png | Bin 0 -> 279 bytes .../Buildings/mirror.rsi/mirror_broke.png | Bin 0 -> 424 bytes .../Mob/human_facial_hair.rsi/3oclock.png | Bin 0 -> 175 bytes .../3oclockmoustache.png | Bin 0 -> 187 bytes .../Mob/human_facial_hair.rsi/5oclock.png | Bin 0 -> 174 bytes .../5oclockmoustache.png | Bin 0 -> 186 bytes .../Mob/human_facial_hair.rsi/7oclock.png | Bin 0 -> 178 bytes .../7oclockmoustache.png | Bin 0 -> 193 bytes .../Mob/human_facial_hair.rsi/abe.png | Bin 0 -> 178 bytes .../Mob/human_facial_hair.rsi/chaplin.png | Bin 0 -> 110 bytes .../Mob/human_facial_hair.rsi/chin.png | Bin 0 -> 130 bytes .../Mob/human_facial_hair.rsi/dwarf.png | Bin 0 -> 272 bytes .../Mob/human_facial_hair.rsi/elvis.png | Bin 0 -> 144 bytes .../Mob/human_facial_hair.rsi/fullbeard.png | Bin 0 -> 197 bytes .../Textures/Mob/human_facial_hair.rsi/gt.png | Bin 0 -> 170 bytes .../Mob/human_facial_hair.rsi/hip.png | Bin 0 -> 146 bytes .../Mob/human_facial_hair.rsi/hogan.png | Bin 0 -> 158 bytes .../Mob/human_facial_hair.rsi/jensen.png | Bin 0 -> 164 bytes .../Mob/human_facial_hair.rsi/longbeard.png | Bin 0 -> 226 bytes .../Mob/human_facial_hair.rsi/meta.json | 1 + .../Mob/human_facial_hair.rsi/mutton.png | Bin 0 -> 217 bytes .../Mob/human_facial_hair.rsi/muttonmu.png | Bin 0 -> 212 bytes .../Mob/human_facial_hair.rsi/neckbeard.png | Bin 0 -> 164 bytes .../Mob/human_facial_hair.rsi/selleck.png | Bin 0 -> 125 bytes .../Mob/human_facial_hair.rsi/shaved.png | Bin 0 -> 96 bytes .../Mob/human_facial_hair.rsi/vandyke.png | Bin 0 -> 146 bytes .../Mob/human_facial_hair.rsi/volaju.png | Bin 0 -> 179 bytes .../Mob/human_facial_hair.rsi/walrus.png | Bin 0 -> 160 bytes .../Mob/human_facial_hair.rsi/watson.png | Bin 0 -> 124 bytes .../Mob/human_facial_hair.rsi/wise.png | Bin 0 -> 231 bytes Resources/Textures/Mob/human_hair.rsi/.png | Bin 0 -> 153 bytes Resources/Textures/Mob/human_hair.rsi/80s.png | Bin 0 -> 484 bytes .../Textures/Mob/human_hair.rsi/afro.png | Bin 0 -> 527 bytes .../Textures/Mob/human_hair.rsi/afro2.png | Bin 0 -> 306 bytes .../Textures/Mob/human_hair.rsi/asymmbob.png | Bin 0 -> 519 bytes .../Textures/Mob/human_hair.rsi/bald.png | Bin 0 -> 96 bytes .../Textures/Mob/human_hair.rsi/balding.png | Bin 0 -> 146 bytes .../Textures/Mob/human_hair.rsi/bedhead.png | Bin 0 -> 541 bytes .../Textures/Mob/human_hair.rsi/bedheadv2.png | Bin 0 -> 648 bytes .../Textures/Mob/human_hair.rsi/bedheadv3.png | Bin 0 -> 421 bytes .../Textures/Mob/human_hair.rsi/beehive.png | Bin 0 -> 540 bytes .../Textures/Mob/human_hair.rsi/beehive2.png | Bin 0 -> 487 bytes .../Textures/Mob/human_hair.rsi/bigafro.png | Bin 0 -> 832 bytes .../Textures/Mob/human_hair.rsi/birdnest.png | Bin 0 -> 284 bytes .../Textures/Mob/human_hair.rsi/birdnest2.png | Bin 0 -> 283 bytes .../Mob/human_hair.rsi/blackswordsman.png | Bin 0 -> 440 bytes .../Textures/Mob/human_hair.rsi/bobcurl.png | Bin 0 -> 396 bytes .../Textures/Mob/human_hair.rsi/bobcut.png | Bin 0 -> 278 bytes .../Textures/Mob/human_hair.rsi/bowlcut1.png | Bin 0 -> 171 bytes .../Textures/Mob/human_hair.rsi/bowlcut2.png | Bin 0 -> 301 bytes .../Textures/Mob/human_hair.rsi/braid.png | Bin 0 -> 995 bytes Resources/Textures/Mob/human_hair.rsi/bun.png | Bin 0 -> 594 bytes .../Textures/Mob/human_hair.rsi/bun2.png | Bin 0 -> 567 bytes .../Textures/Mob/human_hair.rsi/bun3.png | Bin 0 -> 530 bytes .../Textures/Mob/human_hair.rsi/bunalt.png | Bin 0 -> 400 bytes .../Textures/Mob/human_hair.rsi/business.png | Bin 0 -> 375 bytes .../Textures/Mob/human_hair.rsi/business2.png | Bin 0 -> 560 bytes .../Textures/Mob/human_hair.rsi/business3.png | Bin 0 -> 530 bytes .../Textures/Mob/human_hair.rsi/business4.png | Bin 0 -> 491 bytes .../Textures/Mob/human_hair.rsi/buzzcut.png | Bin 0 -> 239 bytes .../Textures/Mob/human_hair.rsi/chop.png | Bin 0 -> 400 bytes Resources/Textures/Mob/human_hair.rsi/cia.png | Bin 0 -> 530 bytes .../Mob/human_hair.rsi/coffeehouse.png | Bin 0 -> 379 bytes .../Textures/Mob/human_hair.rsi/combover.png | Bin 0 -> 278 bytes .../Textures/Mob/human_hair.rsi/crewcut.png | Bin 0 -> 216 bytes .../Textures/Mob/human_hair.rsi/curls.png | Bin 0 -> 522 bytes .../Textures/Mob/human_hair.rsi/cuthair.png | Bin 0 -> 349 bytes .../Mob/human_hair.rsi/dandypompadour.png | Bin 0 -> 415 bytes .../Textures/Mob/human_hair.rsi/devilock.png | Bin 0 -> 306 bytes .../Textures/Mob/human_hair.rsi/doublebun.png | Bin 0 -> 447 bytes .../Textures/Mob/human_hair.rsi/dreads.png | Bin 0 -> 551 bytes .../Textures/Mob/human_hair.rsi/drillruru.png | Bin 0 -> 643 bytes Resources/Textures/Mob/human_hair.rsi/emo.png | Bin 0 -> 380 bytes .../Textures/Mob/human_hair.rsi/emofringe.png | Bin 0 -> 404 bytes .../Textures/Mob/human_hair.rsi/emolong.png | Bin 0 -> 481 bytes .../Textures/Mob/human_hair.rsi/father.png | Bin 0 -> 295 bytes .../Textures/Mob/human_hair.rsi/feather.png | Bin 0 -> 438 bytes .../Textures/Mob/human_hair.rsi/femc.png | Bin 0 -> 456 bytes .../Textures/Mob/human_hair.rsi/flair.png | Bin 0 -> 451 bytes .../Textures/Mob/human_hair.rsi/flowhair.png | Bin 0 -> 329 bytes .../Mob/human_hair.rsi/fringetail.png | Bin 0 -> 382 bytes .../Textures/Mob/human_hair.rsi/gelled.png | Bin 0 -> 232 bytes .../Textures/Mob/human_hair.rsi/gentle.png | Bin 0 -> 363 bytes .../Textures/Mob/human_hair.rsi/halfbang.png | Bin 0 -> 323 bytes .../Mob/human_hair.rsi/halfbang_alt.png | Bin 0 -> 365 bytes .../Mob/human_hair.rsi/halfshaved.png | Bin 0 -> 409 bytes .../Mob/human_hair.rsi/halfshaved_emo.png | Bin 0 -> 431 bytes .../Textures/Mob/human_hair.rsi/hamasaki.png | Bin 0 -> 399 bytes .../Textures/Mob/human_hair.rsi/hbangs.png | Bin 0 -> 682 bytes .../Mob/human_hair.rsi/hbangs_alt.png | Bin 0 -> 510 bytes .../Textures/Mob/human_hair.rsi/hbraid.png | Bin 0 -> 588 bytes .../Mob/human_hair.rsi/highponytail.png | Bin 0 -> 724 bytes .../Textures/Mob/human_hair.rsi/himecut.png | Bin 0 -> 743 bytes .../Mob/human_hair.rsi/himecut_alt.png | Bin 0 -> 691 bytes .../Textures/Mob/human_hair.rsi/hitop.png | Bin 0 -> 226 bytes .../Textures/Mob/human_hair.rsi/jensen.png | Bin 0 -> 296 bytes .../Textures/Mob/human_hair.rsi/joestar.png | Bin 0 -> 494 bytes .../Textures/Mob/human_hair.rsi/kagami.png | Bin 0 -> 283 bytes .../Textures/Mob/human_hair.rsi/kare.png | Bin 0 -> 370 bytes .../Textures/Mob/human_hair.rsi/kusanagi.png | Bin 0 -> 408 bytes .../Textures/Mob/human_hair.rsi/ladylike.png | Bin 0 -> 1399 bytes .../Textures/Mob/human_hair.rsi/ladylike2.png | Bin 0 -> 1315 bytes .../Mob/human_hair.rsi/longeralt2.png | Bin 0 -> 564 bytes .../Textures/Mob/human_hair.rsi/longest.png | Bin 0 -> 725 bytes .../Mob/human_hair.rsi/longfringe.png | Bin 0 -> 559 bytes .../Mob/human_hair.rsi/longovereye.png | Bin 0 -> 496 bytes .../Textures/Mob/human_hair.rsi/manbun.png | Bin 0 -> 377 bytes .../Mob/human_hair.rsi/mediumbraid.png | Bin 0 -> 558 bytes .../Textures/Mob/human_hair.rsi/messybun.png | Bin 0 -> 756 bytes .../Textures/Mob/human_hair.rsi/meta.json | 1 + .../Textures/Mob/human_hair.rsi/modern.png | Bin 0 -> 739 bytes .../Textures/Mob/human_hair.rsi/mohawk.png | Bin 0 -> 161 bytes .../Textures/Mob/human_hair.rsi/mulder.png | Bin 0 -> 491 bytes Resources/Textures/Mob/human_hair.rsi/nia.png | Bin 0 -> 775 bytes .../Textures/Mob/human_hair.rsi/nitori.png | Bin 0 -> 481 bytes .../Textures/Mob/human_hair.rsi/odango.png | Bin 0 -> 451 bytes .../Textures/Mob/human_hair.rsi/ombre.png | Bin 0 -> 494 bytes .../Mob/human_hair.rsi/oneshoulder.png | Bin 0 -> 491 bytes .../Textures/Mob/human_hair.rsi/oxton.png | Bin 0 -> 471 bytes .../Textures/Mob/human_hair.rsi/parted.png | Bin 0 -> 397 bytes .../Textures/Mob/human_hair.rsi/pixie.png | Bin 0 -> 328 bytes .../Textures/Mob/human_hair.rsi/pompadour.png | Bin 0 -> 254 bytes .../Textures/Mob/human_hair.rsi/ponytail.png | Bin 0 -> 318 bytes .../Textures/Mob/human_hair.rsi/ponytail2.png | Bin 0 -> 463 bytes .../Textures/Mob/human_hair.rsi/ponytail3.png | Bin 0 -> 375 bytes .../Textures/Mob/human_hair.rsi/ponytail4.png | Bin 0 -> 533 bytes .../Textures/Mob/human_hair.rsi/ponytail5.png | Bin 0 -> 495 bytes .../Textures/Mob/human_hair.rsi/ponytail6.png | Bin 0 -> 600 bytes .../Textures/Mob/human_hair.rsi/ponytail7.png | Bin 0 -> 475 bytes .../Textures/Mob/human_hair.rsi/ponytailf.png | Bin 0 -> 613 bytes .../Textures/Mob/human_hair.rsi/poofy.png | Bin 0 -> 558 bytes .../Textures/Mob/human_hair.rsi/poofy2.png | Bin 0 -> 813 bytes .../Textures/Mob/human_hair.rsi/quiff.png | Bin 0 -> 272 bytes .../Textures/Mob/human_hair.rsi/ramona.png | Bin 0 -> 517 bytes .../Mob/human_hair.rsi/reversemohawk.png | Bin 0 -> 326 bytes .../Textures/Mob/human_hair.rsi/ronin.png | Bin 0 -> 324 bytes .../Textures/Mob/human_hair.rsi/rows1.png | Bin 0 -> 252 bytes .../Textures/Mob/human_hair.rsi/rows2.png | Bin 0 -> 310 bytes .../Textures/Mob/human_hair.rsi/rows3.png | Bin 0 -> 303 bytes .../Textures/Mob/human_hair.rsi/sargeant.png | Bin 0 -> 188 bytes .../Textures/Mob/human_hair.rsi/scully.png | Bin 0 -> 578 bytes .../Mob/human_hair.rsi/shavedmohawk.png | Bin 0 -> 212 bytes .../Mob/human_hair.rsi/shavedpart.png | Bin 0 -> 433 bytes .../Textures/Mob/human_hair.rsi/short.png | Bin 0 -> 291 bytes .../Textures/Mob/human_hair.rsi/short2.png | Bin 0 -> 441 bytes .../Textures/Mob/human_hair.rsi/short3.png | Bin 0 -> 490 bytes .../Mob/human_hair.rsi/shortbangs.png | Bin 0 -> 321 bytes .../Mob/human_hair.rsi/shortbraid.png | Bin 0 -> 813 bytes .../Mob/human_hair.rsi/shortovereye.png | Bin 0 -> 383 bytes .../Mob/human_hair.rsi/shoulderlen.png | Bin 0 -> 421 bytes .../Textures/Mob/human_hair.rsi/sidepart.png | Bin 0 -> 302 bytes .../Textures/Mob/human_hair.rsi/sideswipe.png | Bin 0 -> 254 bytes .../Textures/Mob/human_hair.rsi/skinhead.png | Bin 0 -> 199 bytes .../Textures/Mob/human_hair.rsi/sleeze.png | Bin 0 -> 287 bytes .../Textures/Mob/human_hair.rsi/smessy.png | Bin 0 -> 382 bytes .../Textures/Mob/human_hair.rsi/spikey.png | Bin 0 -> 370 bytes .../Mob/human_hair.rsi/spikyponytail.png | Bin 0 -> 772 bytes .../Textures/Mob/human_hair.rsi/stail.png | Bin 0 -> 603 bytes .../Textures/Mob/human_hair.rsi/stylo.png | Bin 0 -> 444 bytes .../Mob/human_hair.rsi/thefamilyman.png | Bin 0 -> 427 bytes .../Textures/Mob/human_hair.rsi/thinning.png | Bin 0 -> 363 bytes .../Mob/human_hair.rsi/thinningfront.png | Bin 0 -> 324 bytes .../Mob/human_hair.rsi/thinningrear.png | Bin 0 -> 330 bytes .../Textures/Mob/human_hair.rsi/topknot.png | Bin 0 -> 268 bytes .../Textures/Mob/human_hair.rsi/toriyama.png | Bin 0 -> 523 bytes .../Textures/Mob/human_hair.rsi/toriyama2.png | Bin 0 -> 457 bytes .../Mob/human_hair.rsi/tressshoulder.png | Bin 0 -> 578 bytes .../Textures/Mob/human_hair.rsi/undercut.png | Bin 0 -> 320 bytes .../Textures/Mob/human_hair.rsi/unkept.png | Bin 0 -> 807 bytes .../Textures/Mob/human_hair.rsi/updo.png | Bin 0 -> 422 bytes .../Mob/human_hair.rsi/veryshortovereye.png | Bin 0 -> 440 bytes .../veryshortovereyealternate.png | Bin 0 -> 424 bytes .../Textures/Mob/human_hair.rsi/vlong.png | Bin 0 -> 564 bytes .../Mob/human_hair.rsi/vlongfringe.png | Bin 0 -> 767 bytes .../Textures/Mob/human_hair.rsi/volaju.png | Bin 0 -> 611 bytes .../Textures/Mob/human_hair.rsi/wisp.png | Bin 0 -> 922 bytes .../Textures/Mob/human_hair.rsi/ziegler.png | Bin 0 -> 567 bytes .../Textures/Mob/human_hair.rsi/zone.png | Bin 0 -> 615 bytes 192 files changed, 767 insertions(+), 3 deletions(-) create mode 100644 Content.Client/GameObjects/Components/MagicMirrorBoundUserInterface.cs create mode 100644 Content.Client/GameObjects/Components/Mobs/HairComponent.cs create mode 100644 Content.Server/GameObjects/Components/MagicMirrorComponent.cs create mode 100644 Content.Server/GameObjects/Components/Mobs/HairComponent.cs create mode 100644 Content.Shared/GameObjects/Components/Mobs/SharedHairComponent.cs create mode 100644 Content.Shared/GameObjects/Components/SharedMagicMirrorComponent.cs create mode 100644 Content.Shared/Preferences/Appearance/HairStyles.cs create mode 100644 Content.Shared/Preferences/Appearance/HumanoidCharacterAppearance.cs create mode 100644 Resources/Prototypes/Entities/buildings/mirror.yml create mode 100644 Resources/Prototypes/Shaders/hair.yml create mode 100644 Resources/Shaders/hair.swsl create mode 100644 Resources/Textures/Buildings/mirror.rsi/meta.json create mode 100644 Resources/Textures/Buildings/mirror.rsi/mirror.png create mode 100644 Resources/Textures/Buildings/mirror.rsi/mirror_broke.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/3oclock.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/3oclockmoustache.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/5oclock.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/5oclockmoustache.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/7oclock.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/7oclockmoustache.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/abe.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/chaplin.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/chin.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/dwarf.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/elvis.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/fullbeard.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/gt.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/hip.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/hogan.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/jensen.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/longbeard.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/meta.json create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/mutton.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/muttonmu.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/neckbeard.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/selleck.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/shaved.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/vandyke.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/volaju.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/walrus.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/watson.png create mode 100644 Resources/Textures/Mob/human_facial_hair.rsi/wise.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/80s.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/afro.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/afro2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/asymmbob.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bald.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/balding.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bedhead.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bedheadv2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bedheadv3.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/beehive.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/beehive2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bigafro.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/birdnest.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/birdnest2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/blackswordsman.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bobcurl.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bobcut.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bowlcut1.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bowlcut2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/braid.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bun.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bun2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bun3.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/bunalt.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/business.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/business2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/business3.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/business4.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/buzzcut.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/chop.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/cia.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/coffeehouse.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/combover.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/crewcut.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/curls.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/cuthair.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/dandypompadour.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/devilock.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/doublebun.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/dreads.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/drillruru.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/emo.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/emofringe.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/emolong.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/father.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/feather.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/femc.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/flair.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/flowhair.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/fringetail.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/gelled.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/gentle.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/halfbang.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/halfbang_alt.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/halfshaved.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/halfshaved_emo.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/hamasaki.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/hbangs.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/hbangs_alt.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/hbraid.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/highponytail.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/himecut.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/himecut_alt.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/hitop.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/jensen.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/joestar.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/kagami.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/kare.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/kusanagi.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ladylike.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ladylike2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/longeralt2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/longest.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/longfringe.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/longovereye.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/manbun.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/mediumbraid.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/messybun.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/meta.json create mode 100644 Resources/Textures/Mob/human_hair.rsi/modern.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/mohawk.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/mulder.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/nia.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/nitori.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/odango.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ombre.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/oneshoulder.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/oxton.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/parted.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/pixie.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/pompadour.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytail.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytail2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytail3.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytail4.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytail5.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytail6.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytail7.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ponytailf.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/poofy.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/poofy2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/quiff.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ramona.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/reversemohawk.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ronin.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/rows1.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/rows2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/rows3.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/sargeant.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/scully.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/shavedmohawk.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/shavedpart.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/short.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/short2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/short3.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/shortbangs.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/shortbraid.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/shortovereye.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/shoulderlen.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/sidepart.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/sideswipe.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/skinhead.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/sleeze.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/smessy.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/spikey.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/spikyponytail.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/stail.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/stylo.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/thefamilyman.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/thinning.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/thinningfront.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/thinningrear.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/topknot.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/toriyama.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/toriyama2.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/tressshoulder.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/undercut.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/unkept.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/updo.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/veryshortovereye.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/veryshortovereyealternate.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/vlong.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/vlongfringe.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/volaju.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/wisp.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/ziegler.png create mode 100644 Resources/Textures/Mob/human_hair.rsi/zone.png diff --git a/Content.Client/GameObjects/Components/MagicMirrorBoundUserInterface.cs b/Content.Client/GameObjects/Components/MagicMirrorBoundUserInterface.cs new file mode 100644 index 0000000000..6e6de6e31b --- /dev/null +++ b/Content.Client/GameObjects/Components/MagicMirrorBoundUserInterface.cs @@ -0,0 +1,189 @@ +using System; +using Content.Shared.GameObjects.Components; +using Content.Shared.Preferences.Appearance; +using Robust.Client.GameObjects.Components.UserInterface; +using Robust.Client.Interfaces.ResourceManagement; +using Robust.Client.ResourceManagement; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.GameObjects.Components.Renderable; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Utility; + +namespace Content.Client.GameObjects.Components +{ + public class MagicMirrorBoundUserInterface : BoundUserInterface + { +#pragma warning disable 649 + [Dependency] private readonly IResourceCache _resourceCache; + [Dependency] private readonly ILocalizationManager _localization; +#pragma warning restore 649 + private MagicMirrorWindow _window; + + public MagicMirrorBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + + _window = new MagicMirrorWindow(this,_resourceCache, _localization); + _window.OnClose += Close; + _window.Open(); + } + + internal void HairSelected(string name, bool isFacialHair) + { + SendMessage(new SharedMagicMirrorComponent.HairSelectedMessage(name, isFacialHair)); + } + + internal void HairColorSelected(Color color, bool isFacialHair) + { + SendMessage(new SharedMagicMirrorComponent.HairColorSelectedMessage(color, isFacialHair)); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + if (disposing) + { + _window.Dispose(); + } + } + } + + public class FacialHairPickerWindow : HairPickerWindow + { + public FacialHairPickerWindow(IResourceCache resourceCache, ILocalizationManager localization) : base(resourceCache, localization) + { + Title = "Facial hair"; + } + + public override void Populate() + { + var humanFacialHairRSIPath = SharedSpriteComponent.TextureRoot / "Mob/human_facial_hair.rsi"; + var humanFacialHairRSI = ResourceCache.GetResource(humanFacialHairRSIPath).RSI; + foreach (var (styleName, styleState) in HairStyles.FacialHairStylesMap) + { + Items.AddItem(styleName, humanFacialHairRSI[styleState].Frame0); + } + } + } + + public class HairPickerWindow : SS14Window + { + public event Action OnHairColorPicked; + public event Action OnHairStylePicked; + + protected readonly IResourceCache ResourceCache; + protected readonly ItemList Items; + protected override Vector2? CustomSize => (300, 300); + public HairPickerWindow(IResourceCache resourceCache, ILocalizationManager localization) + { + Title = "Hair"; + ResourceCache = resourceCache; + var vBox = new VBoxContainer(); + Contents.AddChild(vBox); + + var colorHBox = new HBoxContainer(); + vBox.AddChild(colorHBox); + + var colorLabel = new Label + { + Text = localization.GetString("Color: ") + }; + colorHBox.AddChild(colorLabel); + + var colorEdit = new LineEdit + { + SizeFlagsHorizontal = SizeFlags.FillExpand + }; + colorEdit.OnTextChanged += args => + { + var color = Color.TryFromHex(args.Text); + if (color.HasValue) + { + OnHairColorPicked?.Invoke(color.Value); + } + }; + colorHBox.AddChild(colorEdit); + + Items = new ItemList + { + SizeFlagsVertical = SizeFlags.FillExpand, + }; + vBox.AddChild(Items); + Items.OnItemSelected += ItemSelected; + } + + public virtual void Populate() + { + var humanHairRSIPath = SharedSpriteComponent.TextureRoot / "Mob/human_hair.rsi"; + var humanHairRSI = ResourceCache.GetResource(humanHairRSIPath).RSI; + foreach (var (styleName, styleState) in HairStyles.HairStylesMap) + { + Items.AddItem(styleName, humanHairRSI[styleState].Frame0); + } + } + + private void ItemSelected(ItemList.ItemListSelectedEventArgs args) + { + OnHairStylePicked?.Invoke(Items[args.ItemIndex].Text); + } + } + + public class MagicMirrorWindow : SS14Window + { + private readonly HairPickerWindow _hairPickerWindow; + private readonly FacialHairPickerWindow _facialHairPickerWindow; + + public MagicMirrorWindow(MagicMirrorBoundUserInterface owner, IResourceCache resourceCache, ILocalizationManager localization) + { + Title = "Magic Mirror"; + + _hairPickerWindow = new HairPickerWindow(resourceCache, localization); + _hairPickerWindow.Populate(); + _hairPickerWindow.OnHairStylePicked += newStyle => owner.HairSelected(newStyle, false); + _hairPickerWindow.OnHairColorPicked += newColor => owner.HairColorSelected(newColor, false); + + _facialHairPickerWindow = new FacialHairPickerWindow(resourceCache, localization); + _facialHairPickerWindow.Populate(); + _facialHairPickerWindow.OnHairStylePicked += newStyle => owner.HairSelected(newStyle, true); + _facialHairPickerWindow.OnHairColorPicked += newColor => owner.HairColorSelected(newColor, true); + + var vBox = new VBoxContainer(); + Contents.AddChild(vBox); + + var hairButton = new Button + { + Text = localization.GetString("Customize hair") + }; + hairButton.OnPressed += args => _hairPickerWindow.Open(); + vBox.AddChild(hairButton); + + var facialHairButton = new Button + { + Text = localization.GetString("Customize facial hair") + }; + facialHairButton.OnPressed += args => _facialHairPickerWindow.Open(); + vBox.AddChild(facialHairButton); + + Size = CombinedMinimumSize; + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + if (disposing) + { + _hairPickerWindow.Dispose(); + _facialHairPickerWindow.Dispose(); + } + } + } +} diff --git a/Content.Client/GameObjects/Components/Mobs/HairComponent.cs b/Content.Client/GameObjects/Components/Mobs/HairComponent.cs new file mode 100644 index 0000000000..5a929da39b --- /dev/null +++ b/Content.Client/GameObjects/Components/Mobs/HairComponent.cs @@ -0,0 +1,100 @@ +using Content.Shared.GameObjects.Components.Mobs; +using Content.Shared.Preferences.Appearance; +using Robust.Client.GameObjects; +using Robust.Client.Graphics.Shaders; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; + +namespace Content.Client.GameObjects.Components.Mobs +{ + [RegisterComponent] + public sealed class HairComponent : SharedHairComponent + { + private const string HairShaderName = "hair"; + private const string HairColorParameter = "hairColor"; + +#pragma warning disable 649 + [Dependency] private readonly IPrototypeManager _prototypeManager; +#pragma warning restore 649 + + private ShaderInstance _facialHairShader; + private ShaderInstance _hairShader; + + public override void Initialize() + { + base.Initialize(); + + var shaderProto = _prototypeManager.Index(HairShaderName); + + _facialHairShader = shaderProto.InstanceUnique(); + _hairShader = shaderProto.InstanceUnique(); + } + + protected override void Startup() + { + base.Startup(); + + if (Owner.TryGetComponent(out ISpriteComponent sprite)) + { + sprite.LayerSetShader(HumanoidVisualLayers.Hair, _hairShader); + sprite.LayerSetShader(HumanoidVisualLayers.FacialHair, _facialHairShader); + } + } + + public override string FacialHairStyleName + { + get => base.FacialHairStyleName; + set + { + base.FacialHairStyleName = value; + UpdateHairStyle(); + } + } + + public override string HairStyleName + { + get => base.HairStyleName; + set + { + base.HairStyleName = value; + UpdateHairStyle(); + } + } + + public override Color HairColor + { + get => base.HairColor; + set + { + base.HairColor = value; + UpdateHairStyle(); + } + } + + public override Color FacialHairColor + { + get => base.FacialHairColor; + set + { + base.FacialHairColor = value; + UpdateHairStyle(); + } + } + + private void UpdateHairStyle() + { + var sprite = Owner.GetComponent(); + + _hairShader?.SetParameter(HairColorParameter, HairColor); + _facialHairShader?.SetParameter(HairColorParameter, FacialHairColor); + + sprite.LayerSetState(HumanoidVisualLayers.Hair, + HairStyles.HairStylesMap[HairStyleName ?? HairStyles.DefaultHairStyle]); + sprite.LayerSetState(HumanoidVisualLayers.FacialHair, + HairStyles.FacialHairStylesMap[FacialHairStyleName ?? HairStyles.DefaultFacialHairStyle]); + } + } +} diff --git a/Content.Server/GameObjects/Components/MagicMirrorComponent.cs b/Content.Server/GameObjects/Components/MagicMirrorComponent.cs new file mode 100644 index 0000000000..317cbe2012 --- /dev/null +++ b/Content.Server/GameObjects/Components/MagicMirrorComponent.cs @@ -0,0 +1,70 @@ +using Content.Server.GameObjects.Components.Mobs; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Components; +using Content.Shared.Preferences.Appearance; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; + +namespace Content.Server.GameObjects.Components +{ + [RegisterComponent] + [ComponentReference(typeof(IActivate))] + public class MagicMirrorComponent : SharedMagicMirrorComponent, IActivate + { + private BoundUserInterface _userInterface; + + public override void Initialize() + { + base.Initialize(); + _userInterface = Owner.GetComponent() + .GetBoundUserInterface(MagicMirrorUiKey.Key); + _userInterface.OnReceiveMessage += OnUiReceiveMessage; + } + + private static void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj) + { + var hair = obj.Session.AttachedEntity.GetComponent(); + switch (obj.Message) + { + case HairSelectedMessage msg: + var map = + msg.IsFacialHair ? HairStyles.FacialHairStylesMap : HairStyles.HairStylesMap; + if (!map.ContainsKey(msg.HairName)) + return; + + if (msg.IsFacialHair) + { + hair.FacialHairStyleName = msg.HairName; + } + else + { + hair.HairStyleName = msg.HairName; + } + + break; + case HairColorSelectedMessage msg: + if (msg.IsFacialHair) + { + hair.FacialHairColor = msg.HairColor; + } + else + { + hair.HairColor = msg.HairColor; + } + + break; + } + } + + public void Activate(ActivateEventArgs eventArgs) + { + if (!eventArgs.User.TryGetComponent(out IActorComponent actor)) + { + return; + } + + _userInterface.Open(actor.playerSession); + } + } +} diff --git a/Content.Server/GameObjects/Components/Mobs/HairComponent.cs b/Content.Server/GameObjects/Components/Mobs/HairComponent.cs new file mode 100644 index 0000000000..fc1ec345e1 --- /dev/null +++ b/Content.Server/GameObjects/Components/Mobs/HairComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.GameObjects.Components.Mobs; +using Robust.Shared.GameObjects; + +namespace Content.Server.GameObjects.Components.Mobs +{ + [RegisterComponent] + public sealed class HairComponent : SharedHairComponent + { + + } +} diff --git a/Content.Shared/GameObjects/Components/Mobs/SharedHairComponent.cs b/Content.Shared/GameObjects/Components/Mobs/SharedHairComponent.cs new file mode 100644 index 0000000000..9f455f5fd1 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Mobs/SharedHairComponent.cs @@ -0,0 +1,96 @@ +using System; +using Robust.Shared.GameObjects; +using Robust.Shared.Maths; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Shared.GameObjects.Components.Mobs +{ + public abstract class SharedHairComponent : Component + { + private string _facialHairStyleName; + private string _hairStyleName; + private Color _hairColor; + private Color _facialHairColor; + + public sealed override string Name => "Hair"; + public sealed override uint? NetID => ContentNetIDs.HAIR; + public sealed override Type StateType => typeof(HairComponentState); + + [ViewVariables(VVAccess.ReadWrite)] + public virtual string HairStyleName + { + get => _hairStyleName; + set + { + _hairStyleName = value; + Dirty(); + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public virtual string FacialHairStyleName + { + get => _facialHairStyleName; + set + { + _facialHairStyleName = value; + Dirty(); + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public virtual Color HairColor + { + get => _hairColor; + set + { + _hairColor = value; + Dirty(); + } + } + + [ViewVariables(VVAccess.ReadWrite)] + public virtual Color FacialHairColor + { + get => _facialHairColor; + set + { + _facialHairColor = value; + Dirty(); + } + } + + public override ComponentState GetComponentState() + { + return new HairComponentState(HairStyleName, FacialHairStyleName, HairColor, FacialHairColor); + } + + public override void HandleComponentState(ComponentState curState, ComponentState nextState) + { + var cast = (HairComponentState) curState; + + HairStyleName = cast.HairStyleName; + FacialHairStyleName = cast.FacialHairStyleName; + HairColor = cast.HairColor; + FacialHairColor = cast.FacialHairColor; + } + + [Serializable, NetSerializable] + private sealed class HairComponentState : ComponentState + { + public string HairStyleName { get; } + public string FacialHairStyleName { get; } + public Color HairColor { get; } + public Color FacialHairColor { get; } + + public HairComponentState(string hairStyleName, string facialHairStyleName, Color hairColor, Color facialHairColor) : base(ContentNetIDs.HAIR) + { + HairStyleName = hairStyleName; + FacialHairStyleName = facialHairStyleName; + HairColor = hairColor; + FacialHairColor = facialHairColor; + } + } + } +} diff --git a/Content.Shared/GameObjects/Components/SharedMagicMirrorComponent.cs b/Content.Shared/GameObjects/Components/SharedMagicMirrorComponent.cs new file mode 100644 index 0000000000..ee4cef3e50 --- /dev/null +++ b/Content.Shared/GameObjects/Components/SharedMagicMirrorComponent.cs @@ -0,0 +1,45 @@ +using System; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Maths; +using Robust.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components +{ + public class SharedMagicMirrorComponent : Component + { + public override string Name => "MagicMirror"; + + [Serializable, NetSerializable] + public enum MagicMirrorUiKey + { + Key + } + + [Serializable, NetSerializable] + public class HairSelectedMessage : BoundUserInterfaceMessage + { + public readonly string HairName; + public readonly bool IsFacialHair; + + public HairSelectedMessage(string name, bool isFacialHair) + { + HairName = name; + IsFacialHair = isFacialHair; + } + } + + [Serializable, NetSerializable] + public class HairColorSelectedMessage : BoundUserInterfaceMessage + { + public readonly Color HairColor; + public readonly bool IsFacialHair; + + public HairColorSelectedMessage(Color color, bool isFacialHair) + { + HairColor = color; + IsFacialHair = isFacialHair; + } + } + } +} diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index 7fd98c5eb2..b909a664c8 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -34,5 +34,6 @@ public const uint ITEMCOOLDOWN = 1029; public const uint CARGO_ORDER_DATABASE = 1030; public const uint GALACTIC_MARKET = 1031; + public const uint HAIR = 1032; } } diff --git a/Content.Shared/Preferences/Appearance/HairStyles.cs b/Content.Shared/Preferences/Appearance/HairStyles.cs new file mode 100644 index 0000000000..6ee6b29957 --- /dev/null +++ b/Content.Shared/Preferences/Appearance/HairStyles.cs @@ -0,0 +1,192 @@ +using System.Collections; +using System.Collections.Generic; + +namespace Content.Shared.Preferences.Appearance +{ + public static class HairStyles + { + public const string DefaultHairStyle = "Bald"; + public const string DefaultFacialHairStyle = "Shaved"; + + public static readonly Dictionary HairStylesMap = new Dictionary + { + {"Bald", "bald"}, + {"Afro", "afro"}, + {"Big Afro", "bigafro"}, + {"Afro 2", "afro2"}, + {"Asymmetrical Bob", "asymmbob"}, + {"Balding Hair", "balding"}, + {"Bedhead", "bedhead"}, + {"Bedhead 2", "bedheadv2"}, + {"Bedhead 3", "bedheadv3"}, + {"Beehive", "beehive"}, + {"Beehive 2", "beehive2"}, + {"Birdnest", "birdnest"}, + {"Birdnest 2", "birdnest2"}, + {"Mercenary", "blackswordsman"}, + {"Bob", "bobcut"}, + {"Bobcurl", "bobcurl"}, + {"Bowl 1", "bowlcut1"}, + {"Bowl 2", "bowlcut2"}, + {"Floorlength Braid", "braid"}, + {"Long Braid", "hbraid"}, + {"Business Hair", "business"}, + {"Business Hair 2", "business2"}, + {"Business Hair 3", "business3"}, + {"Business Hair 4", "business4"}, + {"Bun", "bun"}, + {"Casual Bun", "bunalt"}, + {"Bun 2", "bun2"}, + {"Bun 3", "bun3"}, + {"Buzzcut", "buzzcut"}, + {"Chop", "chop"}, + {"CIA", "cia"}, + {"Combover", "combover"}, + {"Coffee House", "coffeehouse"}, + {"Crewcut", "crewcut"}, + {"Chrono", "toriyama"}, + {"Curls", "curls"}, + {"Cut Hair", "cuthair"}, + {"Dandy Pompadour", "dandypompadour"}, + {"Devil Lock", "devilock"}, + {"Double-Bun", "doublebun"}, + {"Dreadlocks", "dreads"}, + {"80's", "80s"}, + {"Emo", "emo"}, + {"Flow Hair", "flowhair"}, + {"The Family Man", "thefamilyman"}, + {"Father", "father"}, + {"Feather", "feather"}, + {"Cut Hair Alt", "femc"}, + {"Flaired Hair", "flair"}, + {"Emo Fringe", "emofringe"}, + {"Fringetail", "fringetail"}, + {"Gelled Back", "gelled"}, + {"Gentle", "gentle"}, + {"Half-banged Hair", "halfbang"}, + {"Half-banged Hair Alt", "halfbang_alt"}, + {"Half-Shaved", "halfshaved"}, + {"Half-Shaved Emo", "halfshaved_emo"}, + {"Hamaski Hair", "hamasaki"}, + {"Combed Hair", "hbangs"}, + {"Combed Hair Alt", "hbangs_alt"}, + {"High Ponytail", "highponytail"}, + {"Hime Cut", "himecut"}, + {"Hime Cut Alt", "himecut_alt"}, + {"Hitop", "hitop"}, + {"Adam Jensen Hair", "jensen"}, + {"Joestar", "joestar"}, + {"Pigtails", "kagami"}, + {"Kare", "kare"}, + {"Kusanagi Hair", "kusanagi"}, + {"Ladylike", "ladylike"}, + {"Ladylike alt", "ladylike2"}, + {"Long Emo", "emolong"}, + {"Long Hair", "vlong"}, + {"Long Hair Alt", "longeralt2"}, + {"Very Long Hair", "longest"}, + {"Longer Fringe", "vlongfringe"}, + {"Long Fringe", "longfringe"}, + {"Overeye Long", "longovereye"}, + {"Man Bun", "manbun"}, + {"Drillruru", "drillruru"}, + {"Medium Braid", "shortbraid"}, + {"Medium Braid Alt", "mediumbraid"}, + {"Messy Bun", "messybun"}, + {"Modern", "modern"}, + {"Mohawk", "mohawk"}, + {"Mulder", "mulder"}, + {"Nia", "nia"}, + {"Nitori", "nitori"}, + {"Odango", "odango"}, + {"Ombre", "ombre"}, + {"Oxton", "oxton"}, + {"Parted", "parted"}, + {"Pixie", "pixie"}, + {"Pompadour", "pompadour"}, + {"Ponytail 1", "ponytail"}, + {"Ponytail 2", "ponytail2"}, + {"Ponytail 3", "ponytail3"}, + {"Ponytail 4", "ponytail4"}, + {"Ponytail 5", "ponytail5"}, + {"Ponytail 6", "ponytail6"}, + {"Ponytail 7", "ponytail7"}, + {"Poofy", "poofy"}, + {"Poofy Alt", "poofy2"}, + {"Quiff", "quiff"}, + {"Ramona", "ramona"}, + {"Reverse Mohawk", "reversemohawk"}, + {"Ronin", "ronin"}, + {"Rows", "rows1"}, + {"Rows Alt", "rows2"}, + {"Rows Bun", "rows3"}, + {"Flat Top", "sargeant"}, + {"Scully", "scully"}, + {"Shaved Mohawk", "shavedmohawk"}, + {"Shaved Part", "shavedpart"}, + {"Short Hair", "short"}, + {"Short Hair 2", "short2"}, + {"Short Hair 3", "short3"}, + {"Short Bangs", "shortbangs"}, + {"Overeye Short", "shortovereye"}, + {"Shoulder-length Hair", "shoulderlen"}, + {"Sidepart Hair", "sidepart"}, + {"Side Ponytail", "stail"}, + {"One Shoulder", "oneshoulder"}, + {"Tress Shoulder", "tressshoulder"}, + {"Side Ponytail 2", "ponytailf"}, + {"Side Swipe", "sideswipe"}, + {"Skinhead", "skinhead"}, + {"Messy Hair", "smessy"}, + {"Sleeze", "sleeze"}, + {"Spiky", "spikey"}, + {"Stylo", "stylo"}, + {"Spiky Ponytail", "spikyponytail"}, + {"Top Knot", "topknot"}, + {"Thinning", "thinning"}, + {"Thinning Rear", "thinningrear"}, + {"Thinning Front", "thinningfront"}, + {"Undercut", "undercut"}, + {"Unkept", "unkept"}, + {"Updo", "updo"}, + {"Vegeta", "toriyama2"}, + {"Overeye Very Short", "veryshortovereye"}, + {"Overeye Very Short, Alternate", "veryshortovereyealternate"}, + {"Volaju", "volaju"}, + {"Wisp", "wisp"}, + {"Zieglertail", "ziegler"}, + {"Zone Braid", "zone"}, + }; + + public static readonly Dictionary FacialHairStylesMap = new Dictionary() + { + {"Shaved", "shaved"}, + {"Watson Mustache", "watson"}, + {"Hulk Hogan Mustache", "hogan"}, + {"Van Dyke Mustache", "vandyke"}, + {"Square Mustache", "chaplin"}, + {"Selleck Mustache", "selleck"}, + {"Neckbeard", "neckbeard"}, + {"Full Beard", "fullbeard"}, + {"Long Beard", "longbeard"}, + {"Very Long Beard", "wise"}, + {"Elvis Sideburns", "elvis"}, + {"Abraham Lincoln Beard", "abe"}, + {"Chinstrap", "chin"}, + {"Hipster Beard", "hip"}, + {"Goatee", "gt"}, + {"Adam Jensen Beard", "jensen"}, + {"Volaju", "volaju"}, + {"Dwarf Beard", "dwarf"}, + {"3 O'clock Shadow", "3oclock"}, + {"3 O'clock Shadow and Moustache", "3oclockmoustache"}, + {"5 O'clock Shadow", "5oclock"}, + {"5 O'clock Shadow and Moustache", "5oclockmoustache"}, + {"7 O'clock Shadow", "7oclock"}, + {"7 O'clock Shadow and Moustache", "7oclockmoustache"}, + {"Mutton Chops", "mutton"}, + {"Mutton Chops and Moustache", "muttonmu"}, + {"Walrus Moustache", "walrus"}, + }; + } +} diff --git a/Content.Shared/Preferences/Appearance/HumanoidCharacterAppearance.cs b/Content.Shared/Preferences/Appearance/HumanoidCharacterAppearance.cs new file mode 100644 index 0000000000..f7defbecc2 --- /dev/null +++ b/Content.Shared/Preferences/Appearance/HumanoidCharacterAppearance.cs @@ -0,0 +1,11 @@ +using System; +using Robust.Shared.Serialization; + +namespace Content.Shared.Preferences.Appearance +{ + public enum HumanoidVisualLayers + { + Hair, + FacialHair, + } +} diff --git a/Resources/Prototypes/Entities/buildings/mirror.yml b/Resources/Prototypes/Entities/buildings/mirror.yml new file mode 100644 index 0000000000..4fd2196cb7 --- /dev/null +++ b/Resources/Prototypes/Entities/buildings/mirror.yml @@ -0,0 +1,26 @@ +- type: entity + id: mirror + name: Mirror + components: + - type: Sprite + sprite: Buildings/mirror.rsi + state: mirror + - type: Icon + sprite: Buildings/mirror.rsi + state: mirror + - type: Collidable + shapes: + - !type:PhysShapeAabb + mask: 19 + layer: 16 + - type: Clickable + - type: Physics + mass: 25 + Anchored: true + - type: SnapGrid + offset: Center + - type: MagicMirror + - type: UserInterface + interfaces: + - key: enum.MagicMirrorUiKey.Key + type: MagicMirrorBoundUserInterface diff --git a/Resources/Prototypes/Entities/mobs/human.yml b/Resources/Prototypes/Entities/mobs/human.yml index 88afb8dacc..c899b07a20 100644 --- a/Resources/Prototypes/Entities/mobs/human.yml +++ b/Resources/Prototypes/Entities/mobs/human.yml @@ -12,7 +12,7 @@ - type: Thirst # Organs - type: Stomach - + - type: Inventory - type: Constructor - type: Clickable @@ -23,6 +23,12 @@ layers: - sprite: Mob/human.rsi state: male + - map: ["enum.HumanoidVisualLayers.Hair"] + state: bald + sprite: Mob/human_hair.rsi + - map: ["enum.HumanoidVisualLayers.FacialHair"] + state: shaved + sprite: Mob/human_facial_hair.rsi - map: ["enum.Slots.INNERCLOTHING"] - map: ["enum.Slots.IDCARD"] - map: ["enum.Slots.SHOES"] @@ -47,7 +53,7 @@ - type: Collidable shapes: - !type:PhysShapeAabb - bounds: "-0.5,-0.25,-0.05,0.25" + bounds: "-0.5,-0.25,-0.05,0.25" mask: 19 layer: 2 @@ -75,4 +81,4 @@ - type: Examiner - type: CharacterInfo - type: FootstepSound - + - type: Hair diff --git a/Resources/Prototypes/Shaders/hair.yml b/Resources/Prototypes/Shaders/hair.yml new file mode 100644 index 0000000000..a8d03e4421 --- /dev/null +++ b/Resources/Prototypes/Shaders/hair.yml @@ -0,0 +1,6 @@ +- type: shader + id: hair + kind: source + path: "/Shaders/hair.swsl" + params: + hairColor: "#000000" diff --git a/Resources/Shaders/hair.swsl b/Resources/Shaders/hair.swsl new file mode 100644 index 0000000000..50d8c736d0 --- /dev/null +++ b/Resources/Shaders/hair.swsl @@ -0,0 +1,8 @@ +// Additively blends the hair color onto the hair sprite. + +uniform vec4 hairColor; + +void fragment() { + COLOR = texture(TEXTURE, UV); + COLOR.rgb += hairColor.rgb; +} diff --git a/Resources/Textures/Buildings/mirror.rsi/meta.json b/Resources/Textures/Buildings/mirror.rsi/meta.json new file mode 100644 index 0000000000..fc8db81682 --- /dev/null +++ b/Resources/Textures/Buildings/mirror.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "mirror", "directions": 1, "delays": [[1.0]]}, {"name": "mirror_broke", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file diff --git a/Resources/Textures/Buildings/mirror.rsi/mirror.png b/Resources/Textures/Buildings/mirror.rsi/mirror.png new file mode 100644 index 0000000000000000000000000000000000000000..6411d2f12bdc2dd39380ec99d0764ecf62161ffe GIT binary patch literal 279 zcmV+y0qFjTP)2u=4Fd+R){xXn~6OU`R7$_;OHc(nzW#A5R zm4Q3N)dot7(*{HY^E}hy&N+xkIRoLA($^002ovPDHLkV1f=qe4hXS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Buildings/mirror.rsi/mirror_broke.png b/Resources/Textures/Buildings/mirror.rsi/mirror_broke.png new file mode 100644 index 0000000000000000000000000000000000000000..53a7cf64eebd18a451bec55ed7b95a7c3a1e31d5 GIT binary patch literal 424 zcmV;Z0ayNsP)0Ox&b#KZnz1mp#f9~IVekz#>s%~j1SQ}A`pLvMd0^7&mi!_~@Nzt;IQq_a5gQDW#frMUQ2Kt_-vhIp>Hma=Ba( zk-Djl-&*sq0F55jG^dm>#^Ajt#)yb)jz&b-SII*HU_JX7BhEQO2=ypL1n+(I!7YzG zML;V=H;*y0EDI^6DsJzKrweE!RS_YCI@ZqVp}Pv;+h`hTN{J8xr_%{*?a;=`a0XO_ z8qIr;wH6Vn;zk(CfR>qNKtyWPtuIDIbluz9eD*)qlGJZ)U%0n9{m5^3zxD?mAL$3( z9@t;K#+Xed!0LX@%AcUowh=4(ZL}K>neeOE-+T|i>WR_!z{_7m2L}fSFXt1kIVpU@ SGj8Mn0000&isXVX$WS8*y+p0aO@4UAzyRRh=Qg*<8O$rA` T{sjReT@csP)z4*}Q$iB})f+<7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/3oclockmoustache.png b/Resources/Textures/Mob/human_facial_hair.rsi/3oclockmoustache.png new file mode 100644 index 0000000000000000000000000000000000000000..899bc7f1f31f2364c2481ff648cdb43c83487824 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=O`a}}Ar*7p-rC9AV8FxRaF`>q z^{;z^TE+s$29HDQcdG@doIV$RRFJ`;O|SUh)mxViOt~Z=c-W*aELdWD*{xb%MSsn` zjHi#*6@3Jn1_JJT7pgB<)i&w=!>cXD`yG4@+24LuNy$Gp^DpD()%#D)KeKmbclG?k ecYlIa|4U@yeZg0>kWJDV#P@Xdb6Mw<&;$U`vPV<^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/5oclock.png b/Resources/Textures/Mob/human_facial_hair.rsi/5oclock.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0f99a3fac56d162edc9d5ba720c264ef8d1c68 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=rJgR1Ar*7p-a5$Dpuocr&~3N= z{99&gRzcO3OU2&Hwr)HtyIp{xfu;CS_4Q>v84Bgot@h{`lWx&$$;jb^DpxmDj#RKV=4~`_V2c#KSqe S{r5_75ZBYy&t;ucLK6V(L_om+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/5oclockmoustache.png b/Resources/Textures/Mob/human_facial_hair.rsi/5oclockmoustache.png new file mode 100644 index 0000000000000000000000000000000000000000..cc68970e4764d2b01398e6398bc334af6549c78d GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jh-%!Ar*7p-rC9AV8FxRaF}Ce zci~NbsSE*yNgrOX>l8V;>2qiy3&Vtkr{~mf-DYC2)Wqe8LGS#lBFEOwEsGC65$u(J zplIX#7#pBrKyV;1{{`oYRSTb#SC~G$qaP4_#YUakM6UY!5x(Y@yd f<#r&|4fPU?&6D`8{!KYz3F3RY`njxgN@xNAzbZ$n literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/7oclock.png b/Resources/Textures/Mob/human_facial_hair.rsi/7oclock.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc937751ea65f554d71130bbd1eca58b9a91655 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=m7Xq+Ar*7p-ZJECP~c&`kY%%M zb9>RZ1%7ILSxpNTROTxQeDaQzW@J#25dJ>fEalE!`-+pgOQyYhws-OUe<{N6%oLQ8 zZmoTO#|dZ{2t-{w-RS2yD@$v+YG*H(VKcPsmT zm6WB|YlcZrK5g0m&5Q|XC=eKI5;S6rwcYZBIgDGcvT*4f_?(}0p>RJv_GFxTiMV5H(kWI}0^7S^uzF+DS3e`c%J}|5Q W_#ZnBV%}2|ePA`~p>EUYq)0e)iTfH}n zeadWo^V%|v`pml-)28^(lYhARV{P@vT`{ss4<3CrS-p>0C39Z7=Oq*0_`m8W?Qh-A z>}r^D>6=7ZEzkjAFz>)-zlK>Yft4v8YoBMF;+cC>?Am7mn`ar%rf8b2cQxo{IH~S# zQ6;x2d#Oji6VGLi2_oBOHOgHp=a28X`kT)nRhBXK|HX^{>%pcqL{~7o{cv_sRZ5-; O67Y2Ob6Mw<&;$Th^=+&G literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/elvis.png b/Resources/Textures/Mob/human_facial_hair.rsi/elvis.png new file mode 100644 index 0000000000000000000000000000000000000000..903d9a404f7d8947c3c7e052cd2708eaddee25e5 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=;hrvzAr*7p-rUIBV8FxT(4Bhd zANQ;_I}gqqLgl$#_4Ttk7%H^H@85nZFYUdjwnq9YbI5aMphh70bHvikZT?V^ZWj}=k*kBFMoWy`1tmFPMfymIdtB?;N4g6 zQvG}#lfEVE+W!q!Zzert1RBf0@SxsUrmO7gg<|`Jwh!%FqP)J^ESgX?_lsK(*S}M{ s{AIKI_vjkEJv(J$@C3VWAPom*?KAr&hJF?C1`;sei=Q4BblP=r+%K9r&uK)986wnY5 zm=UgRDExSZ&H61-ujQt`Idk=?a8>VCNgYrfywSkLqKQo9~M^#9-RwCZ8pEz=xvpnedT_waaS zqnFjzd!J?gpPzH!MCA0(jL+Q;N8Qa514$oPopbv#kDSdzJzfyk)78&qol`;+0Ae9J AzW@LL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/jensen.png b/Resources/Textures/Mob/human_facial_hair.rsi/jensen.png new file mode 100644 index 0000000000000000000000000000000000000000..ead72037897ff55ae4878a0d22049116e40a2958 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=*`6+rAr*7p-ZJECP~c&`@XB(> z|8sM9u>ppyE1RBvG ZTg#B?sbZY2yyn#T`#ZBD&CNw;=Fbl=|75(5 zZ+Z9cTwh0jaruA#h+O9LQgvtV^3-2HEfTtQPNnF%bIc&EKg{o?x)cI2;}Z*Xq2 z`;qf@htg(7-o6?1KZM`*>;G(^!61;(GSS}k{>0jw(sj4RR|p19OV#{rGyj{}SDo#t zTi*noI=wTNTPXYWfyHh4J6AuHuabPU;%P@zopr E09wyil>h($ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/neckbeard.png b/Resources/Textures/Mob/human_facial_hair.rsi/neckbeard.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce30b70ae7803613c0d356ac9e9cd57fe960fb3 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=*`6+rAr*7p-m(^IP~c&8`0}s( zn4IQ}hMGBdh14d5t7|ecY&kji`~C@+tux-f;RxTbPR#7rwV?71>v*bDDu4z6K|`2z z&yn3#9e(ZYrW<~}7fgP;sdK&i)6M_0jjElW+~^enDN0z&9)3{ZH}6DFQ4rVD)z4*} HQ$iB}fId5i literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/selleck.png b/Resources/Textures/Mob/human_facial_hair.rsi/selleck.png new file mode 100644 index 0000000000000000000000000000000000000000..90422d2bb20dd4863ba1c2da316499611ae753b3 GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=E}kxqAr*7p-r6Y2Ai%?NVaBC@ zlU*LJ6xH}pU%N9}L6G6V`csE;^IkCm)q=pgz{UT0p6KjI_;S5j8Z7c*6Ygr+Ar*7p9%SSN@(wNd?w`wN fz5vKX1`XxR4h{^A{hv+-f`mO?{an^LB{Ts5qcarg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/vandyke.png b/Resources/Textures/Mob/human_facial_hair.rsi/vandyke.png new file mode 100644 index 0000000000000000000000000000000000000000..78a4f1f770395689ec76246ed9fdd6c75dbf6a84 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k)AG&Ar*7p-rC7{K!Jn7;lkf^ zHRUB8vn1YIaqW{*VrU3{+I&YUB;C7IIDhe8Tc8dwxP3Ct@?*$6LD8H0E4$|J{Bb7k l@IU5Thr*ku?gh)&J!OiHdD%!@&P;}(X&xNvknP0rsiI|;MqtBb7rP%VrY@Vm*vuk@9 zJ2Q>>fo1_grP~iF?XJY1zZ#_21>}F#XYRefydrz~t7Fi*Ar*7p-rC69?7+i%L4Jzi z9+ugMRU#jKQ{bI=smMx`@!sk;hwe|xR%bX6Yg@&>I_vk9wOilKiLWj@m+N^=WxdMh zd-K0>0F45Hf&<^rABZgTS=_WLOLFR0|J`8G9h1zPZDeK_@1tQF6*2UngHsG BIye9T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/watson.png b/Resources/Textures/Mob/human_facial_hair.rsi/watson.png new file mode 100644 index 0000000000000000000000000000000000000000..d1f00e0cfd7d33847dc6ff83f70c0b1640bb08ab GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=&YmugAr*7p-csaaP!M1~`1}8I z{@x}9J(anJSHDKHG8C-mmtL4{FIOrDR15?SA(ML#Y_~lWqQ1Z#Eb!nWQ$!p8$7yf0 QL8dZzy85}Sb4q9e0M|_;p#T5? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_facial_hair.rsi/wise.png b/Resources/Textures/Mob/human_facial_hair.rsi/wise.png new file mode 100644 index 0000000000000000000000000000000000000000..8885ae2fcbafbfbf158998203c611f941419af55 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=>pWc?Ln`LHy?KzYS%HTkVA~tx zAOG*Ci1Q!Yq3V?0zHfSkfU@p|7Ymm%91wi_;75FQn)-yd7uc>uU0;4D?E1aWr?YOi z>U|H^`*-o&{G)3a;imd;yka;0`(wEfwmdKI;Vst0H*6W ArT_o{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/80s.png b/Resources/Textures/Mob/human_hair.rsi/80s.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e19756424017962a5f714ac5a40e0eee85800d GIT binary patch literal 484 zcmVr=|YcmTeB9rDYh;mn`bcdP*svP@*4)jn9drt!{m0CJ`~|r(W@f z``*0ihzO;WO#0dY)I_3#P_&*dHSDE0nIWEOnv_5HPENHf+9s4Y3(OJdj(+iLh6)vM>E@_jGbtZMS1H3QDZ zMy>g3n3+h?0oox@GJNj+h&f=>PO0p+b`sPCK$F&?b3mn$Ds9Uo_(>r8|A4!8)G9E7 z8GP6nJt<1z^=B~$;Ol-00{{R3000000HB-RZKcC*?LbN!AnT5F*tYnU6VZpFCEfK5 zV82bS?hwxkkzSi!x+x{fIji+OD?~=HZ``3SVQD;(G8?tMRWm$lK6soyKdpXzYXDaE zfp`+>3#K$fpf>LBSPlNqH?(Ji9vLvh3C&?;7@Yw#oXTts)|Sk9oeka{goFMv44QoM zD3hBBF1#<&Qy?)*l%Anrm5%m7=)PlSak&E2SUc_?jwkcJ%vb*$r5Ue;z=gjEuVgmed z%!B=O*-`&(tX=hg)pjtG_`x~oO&sRdY|5_sBBI`Vb#NPU_*1k5dWMyg#{TSn$gtXKzd+fd73p(x3CI-x_Adko6+%AcDM8EbB z{P3jJ#y5e8%{7U3ee6rRj%O3__aC9a2i07ba6mrt7+um-n{DSE7C2&$AB9C-JTn4`nsRZ&h0$=WJAWpY*%b22Thfgb+dqA%qY@2qEOB@fScW_!Lcd RuxkJS002ovPDHLkV1oQ-{{R30 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/afro2.png b/Resources/Textures/Mob/human_hair.rsi/afro2.png new file mode 100644 index 0000000000000000000000000000000000000000..21805063e3464db388be9c089fb65add75a24208 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=KRsO>Ln`LHy>*uBkb!{PMZ>a- zZ}|S_*-`nu5+5Br`cLLuUX~niJr?(ncVd4Olz|^jCL@F3oY8Y^Vq!k xj+vYi4^(ge=k1D;Dp=0V;s2fqVkrYd_!qWaF)x&3w5*~*LY}UEF6*2UngEIgd@}$5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/asymmbob.png b/Resources/Textures/Mob/human_hair.rsi/asymmbob.png new file mode 100644 index 0000000000000000000000000000000000000000..92017a8c450115d9ad09f3d12570603c8531cddf GIT binary patch literal 519 zcmV+i0{H!jP)7xV6on5F28kab@&J7UCZ2`4W0&rIp>7%a7+q*P@)8IMAsB#iJ75PZ4Tw0l!*D*y z!Xo0HbNv^T8-Nhvh*+&j56e0pTCT#g*$e=XWm(-=t_T1Wd{p+3xCl?DQ(M#s$6N`y zmhqrH1@|C0&wkm`kF_17tZ7f*p*?)ydZMDQhsO3$Y|E-1s_q$+c-il6UGvF3GkmuP zmowlNZ=T}?*Qh)I`qUKw6aCc$msxr8W9ufi#*5YRJ3-8`ijj&#?aX1{Hl)`Sei=llskfx~skaoK*0AxHK zn_|f}g8mj(ML0P6l_e=ruF;%n91ABQ7Dh=!3c|$unYzR+rT`y_W z6Bc^~SpC?u53QMR0XVLJ%GKfH@tF6OQl`788pi_*07#Nc3a8U4nt0h65PJ(q@jQyG ze=&mQw!ylX`gb+dqA%qY@2qA<7Ygr+Ar*7p9%SSN@(wNd?w`wN fz5vKX1`XxR4h{^A{hv+-f`mO?{an^LB{Ts5qcarg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/balding.png b/Resources/Textures/Mob/human_hair.rsi/balding.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a78fe168b414ae6a8090b4c58368544c6dba0b GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k)AG&Ar*7p-ZJDnpuofIaOD4g zAN6Bg9bCP)b{lrjy}OiQO=kCZ|EK*Z^?<+!@#WtbjQh$@eyI_EC32HJ lrDmV^Mxn~dtsG$Kg4axD@%-PlIiqYrd{0+Dmvv4FO#tX*FV_G7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/bedhead.png b/Resources/Textures/Mob/human_hair.rsi/bedhead.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae1caaa44378118653c6b85ce496432577e7665 GIT binary patch literal 541 zcmV+&0^)5#x4KN^s5% z`*Y*2N;_bK_ugZ_->>YP9X}qAPq$gh678Hrj1d43LO|d5u;Ty_W31B$5y|%+IXhSL z2^ht=+1mLUu>m|De91LS;@dzmF?icAjsMg;KvlE%9^U)UN7s4pKfU+={5_zm**S-< z>kwmvs@`lb*P!b<)QCR_Av|pOr}ImQNDd)nRn42t=4STocL<^GG63$s^hcvmGm13Pnp`yw)$7|1X0Fz7j7YxbD+)}vbG<^OnN&5e*K72BU;p3e9sm1ZRiHscL_|bH fL_|bH^sD^^{=W-D0d4Ex00000NkvXXu0mjf{w($= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/bedheadv2.png b/Resources/Textures/Mob/human_hair.rsi/bedheadv2.png new file mode 100644 index 0000000000000000000000000000000000000000..027ce6fef340dbe730e390b848df1911204ac625 GIT binary patch literal 648 zcmV;30(bq1P);c8#AQA3+p_%Q+i+O~~;XDZ$RAq0#u006D^l@0(f#zbpK5*xGK zdT}o|VYu^*F;GffM&P_SsSEHY_Qo*zTS5GFFY?udTmDw^!Q7>o5Ot$c%FSjoG)?o+ zVa~aeQljg+m+k`p`PFre!{Kn1d}u;l*H|nTN%50JYOUQp6MXWU&1RAs5Sn{D9T)a7pdyje_vXJSy8_9B)05|8EUPyW}@d~zdid(C70PxZ0FffplAK7Y35 z*Yx?t?=wGE3-riV`)}E&?djgovF7%tjR%)bi4QvU%KhNe<7)L+jzvBBtu!rl2uz5=l48x;#f8%Ya54`rgqDR>xut%ZVS12`&ets!Kl}_e>FQf zao8tje_y`Sec=k%W32)c`QJHapFQs@xO2BcC1b~lwrIcXv&RefY_)!K%A&81eb=ud zF~!vt*H>=LmA)KRKEEboUb;08bM*DCxv`GRk1e*@s0MQtL&Nc(Z13K0I+Y<6Hwh%@ M>FVdQ&MBb@01@ZD#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/beehive.png b/Resources/Textures/Mob/human_hair.rsi/beehive.png new file mode 100644 index 0000000000000000000000000000000000000000..9455a291845f1c2bc9658a1492fb7879cf0aca0e GIT binary patch literal 540 zcmV+%0^|LOP)!8D4K^nqgVqeZO9e=VN&)Zv1qjK;M9@Rs5ljhi zXci=1{TC2I2qA{(R5D5|QfrlPk-L;`@$Et{LF&YJO_J1su7DEcsmH>V+vVZ$&e}Dln5wRHKVS>aMO+-2XT?pu!=05o4eBLZWt>2Yl z=mTz=`%q4GM~Tn}Kk_MrFzFM3ZVQ_uV_t~7?C#rzJaF$r2w~)-yJt232JZ~*ngQ4A z^^(~t`ZZU8x&36=kyTh7KJtqY@Yo2^xiWyqc%`Za;0ynVP`f|i%uiq`pbPNyg0{+{2qAJJO5s^F$Ll%+z z&iP-p;m$dX;|S**_C5()<}W@0B9f;N5MzY37BNOlAwX4kISE_mS5?4q7?4uBypF?A z^E1`9%>Q2UVFTnT1XybkLNN1jYi&Mx4+G>3m`A^{MwwrVF`_nqaRnSy;k~~K@!p$* zD)zVr4ys5gT^&m)p*Fwj61b!<5LKz$zN0fkN#u^j6vJ0 zpm+Y$N6lW3!fu|O;pRK=3hwRl$L~JynH8|;CU{U?^*#|15fKp)5fM>;s~Q<)Te|EO z?qRF!>ekr20O#Dzf?C@$yLv!kUcfkxH^*BlGv)z_HQ7}I62Q3^HxDWFQVvLzYg?lF z5-5ihdf8$?qN+O#oSTuabQ3Js)il@uSyeC7S-qyj%4`wIs+wy$Q>z9fL?rLM^Q91i z*?mkd1LoxYn#?9n-nTFRzw~T~ZjrruMyO{)^d*|H?_L3`yuwgK_cgqG1@Im~L_|bH dL_|dY&M(*a-};#Su@nFR002ovPDHLkV1lrt-Npa_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/bigafro.png b/Resources/Textures/Mob/human_hair.rsi/bigafro.png new file mode 100644 index 0000000000000000000000000000000000000000..b5321b9a15a642f534c67c4f56d984f1344a7967 GIT binary patch literal 832 zcmV-G1Hb%b`6MeOfM@(O1Iig- z0s^36o6^rzf=#8=y7sRPe9ehS?S#RnlQ6}8c8~G&`>rTJKy2?_Hy6Wxz4yqag!lf# z>u#~R=i&#YkmotNuEY6!esykF6le#(Ey1M>3`0I;v1Aw~APgSB)s`m4v3-wDf&g%C+Yirw)B2w7M)RN) z0K{!CrG%97&9QS14@%*ubMrfq?tp$3B4JgQd=w^q$50rCz!dv;B~Jkmy?-Bxi+58K z@=e>}cvlqh_mGfNqf7blS1^1L!WX@bG7Q5o48t%C!!QiPFbu=|KS(J_0QC6ycugQ) z3qtQhknW~*a+fj`{(jzUHaHlAEW6xpj0p~{1@$(OWf=~}V6)j^(Z9!2*|eMqSqcF2bbk>jRd=S_{{UpTWNO9%WhL+_tdR;?Rf3 zECl%}tpNyHy;6$GvLvNcZ1Y*ZPHHRIPJK#!9TN(7mB<7sI+dpT9k8YtnE`6htD}?>sSm-Y{eDmAeIBy|ZmwLA#KX!9ak(YW z^N{$yOo~=YWdL5Jlz4uA1^^Hdy!Y_lV~kvXGYN(cw%aX)5TL$7z*bUSwX-xFyq(% z{XXGpZC;xF>>kzUj~!u2mk1O-Ch+0@A`88l>$mHaya`a1jZ`yX$j?2lTD zDYSf7dSk^8v>yZxgxKCb8UFk8=55P!H^$CYv}C*(s%uBu%-R021+Z^>bP0l+XkKaRGDo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/birdnest2.png b/Resources/Textures/Mob/human_hair.rsi/birdnest2.png new file mode 100644 index 0000000000000000000000000000000000000000..addfdaa89309ec3f8184fff7c26adba69dfeacb6 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k33x*Ln`LHy>*eV$$+Od@xkBw zlKCo%8Jc&`?V9-a{@i14rtC^giWEDO%Uf3`zAn@`%-!>1`NO5zWvB0HaqnQ;c8~Sm zuejzq7wH7iqCI@#0xI$Lml$5(K5z5ezh#z4=79|HEY7QvwoLaP?S0RfX@2mv+2(uU zpReW5weKlDynJWI=`XxMXMllCsPW04-^)v`{qUI<8&$AAou#e9?tqq3a@3pD7IoKE z4`2M^J!iob7k2sOhuDN?KVqh>%s8-GQ|dyoMdaMIcNk~(PDs_PXWJ~lP;w#2iy%-j YonI+iMgICmZf_9R)78&qol`;+0QQS>t^fc4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/blackswordsman.png b/Resources/Textures/Mob/human_hair.rsi/blackswordsman.png new file mode 100644 index 0000000000000000000000000000000000000000..7db06423c58e9e94b6d70311a6a8d07b4a84cd0f GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV669aaSW-L^Y+%k+`|SutQX!d zVt%2NH=*0qaY5xCN3#nv?m6sAVg7dEQUKGIh8~Zy+y5IH3MMoxne)Sm>55v*0{f%; z=gA8%Fmzj+%;Bh>;KA7bZ2J;T)n3C@9Xz^^cK*EhQ&DM`PWQ4YC6Qut8``ILl;}FR z$jz$l+xyws#iV6{rs~%02cOTi2(-x@C_meOg8#wq_OmP6FRY$DKQ1;Q|C{}HrQ6l2 z=?o434%L-yOm~#+UzfR~{;rK699(p8KldVj?(elNeJ-=^y7ru6jip!pI8fam z#I@)9jOUUJ2Ir06eYgH}eZeO2>~BRob9|$9mrmJdelV@jZ29*2f8Ul>-w=OsvM6GU z)tYtJbSEw={KS%BJMEn1{3MxJ`I?hE@6WgsmN;*++}e8~FZZdNWJ%}rCvKhlQQ%yJ gFx=&WbI-DWocfWmqhHh;CRYWW=a zPS1Gq65mU@ZZT{3Z|O=u=zQny_iFdT#S#neKZy|O$opUNH*1mKn})kBa(^$&2JHCn zoATdw6ZfJz%byi{L-(&{&eHo|_FijQnS+R4Y@dI+Ng;2+caiH2ySY|uyYYhcL+lqu zpnIX_dhYy#HRt1( m_AL)jNHb@GIgjDM?$4~-%0FIN{X?<=BW@Nj?Y)c;FmkH4B#e^V$gZSr4s@AG#Sm7erZ zoA&IM{P}P>Gp#O*GnbxRe_}4rXdK-0@$H_Y5{EC`x4QE(B>d)Yjw$o63!dnfsBC*} z`f{lq&~6BL@~uXGL+Tze$4j}3>@$zXK412oF=)E=ujrq42?8pyvY+hrRl2#or~mQ# zcIDg+`#nJo(-#~+_jVJB>Ar*7p-rC69pdi8$P{RC8 zev;sp?H3&QIzR3eVsfw3STFJ~SK2Zp+jd>{+N}$BhdqDa`C<3hEhTl=8Rj{q@h7^~ zedh<71Oh)6Mc6Nx^4*H*gTe~DWM4fr3X58 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/bowlcut2.png b/Resources/Textures/Mob/human_hair.rsi/bowlcut2.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6e0bc38c60fcc426fc46c31311365225bf6864 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Up!qLLn`LHy=BYSY{1i&xSd-l z=grKW{|jeWGOu}gVU}V?nBNKhtG{&=1Zw=EHr`Nj(6Q%f78k64{wLjOLrJW2X{gMW`MHcY;=1X}x>Yhi`Cl`iv)r$9`r*#aufvPaz1?4Q|NExg+jaVC z_y6!(aBFU?nD~9se%ZBMB6AO$`2My}ocH|pI%c4wz+ge`tx4-Flpi!pEt*l?EVWAa zC6_T%`_G2+hFQvMq#qoFVdQ&MBb@0LAitBLDyZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/braid.png b/Resources/Textures/Mob/human_hair.rsi/braid.png new file mode 100644 index 0000000000000000000000000000000000000000..b16f731bcae3231d0400096deaa5e7a58990078f GIT binary patch literal 995 zcmV<9104K`P)Q@%|LXgE2!fjq9j z%zZG%6k|+Ht$}ksi3UX}Rg}^xO;D6l1;EM#-&RGIWtgfJf*`OiqqhN!F%?D8*}3=k z_lKEq+4UG>R^@qpzd$Kfgb;*bh%Cz>gzx|;0N|Wsx7+nDvnz}-m1S9V90UOcY(4jb*o>s_UGqk-{N{B zgg851E|=B+X`1#fua^NoKR-8HnseTGeITmx2_aV(NACi_bqh>@cd5aQ%Dz~?1~vDD zp9NKAzrVllt~_v`0kt=~C;W!s?d{F#`-4TmgHemc0)TzwT|Y@2!S{U-LaZat$q0y| z2#3RAkg}XK060c~ZT|-xHsEkL4D#l2)_|dy4VYTM)HrECp639Lvq0MwDJKm8;7KX* z^73L`kgEnD&+|dX0?ryR6iyo;rL=wyIBh@}hSp^`ZNPs=UHqMynVFdxjc3RQ=t5te zoyGx-F(rgRmSxtnuQAb^r$UI%I$Kv%Ip^x@>kGg!7XSb#rHJDgz~8$3ZnyI|=W5K| zVXa5s3;0_W*A)j)XHCdQ<% z#?!rZdd`_fL$@79<;}z-b0#*42}b4Bg{DfEwE^4hR@E6`-so8(;DXA4?RML!ug^2! zs(&-aCd&%|j?aM`{eKuur<}lBETQnMw=ef6DuWN_9&km&&>-8FWp4$zDADsR+C|$I-zAp5{<231*?3LFOrK7fO zZqgV5oO4x|lIjYCkk$n1Mgw#RIoA4skxtvz4d!t`(?ub~AU{i)iXaGDle-%Y@O>Xr z%5mr0Bf%JhloGz*9OR8xm&;}6wY6ttu~?k_prVdO1NQsz}6VPZCmphk59Rubpxc72!g`L;)4zu%i#Zrc`J*THcd zxUOr?IiJr~<6EzQ--Z9%@$cfg?nC$~W-a<(c)tohvz>il!U}k{KZTqU9{3L%06d1B z8lDhB2qAaaR_4DUD&JkP@z9soSgL!RfeG$D>-t&{=)j7?BVq3b%>HsQ-B zehxntAcVmEeg^ z&+`DlY7(sW29;9i`yN6FR8@tls=yeVJv{K%aK@OaLkNMs@6F2mD(k|>&NIfqIY*Xd zPu-YIl0?^aZGMYvC&PMo*!TUH2@e2SmMu8vV2r`{{dopWl4O=YMA>-7ng}6;5JCtc ggb+dqA%wh|Ut>rJz$|YeE&u=k07*qoM6N<$f)dXI*8l(j literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/bun2.png b/Resources/Textures/Mob/human_hair.rsi/bun2.png new file mode 100644 index 0000000000000000000000000000000000000000..50151dd3012939ad7c18ebca268951eeb9659030 GIT binary patch literal 567 zcmV-70?7S|P)QD6b9h8MvNbX(uEs!#sB|Z#9cuX5Fwnq805lL$0;-5+~j={6Rou8P}{ON0`6u5 z`utjIU_bf6v7GI8J4w?N^Z6WARY7ZwIF1L!AJXa3&3|V+CrT+%N+AdWD5W4GIGs)a zfV!@o<2!fQY&MeTIrjTK0AMzop(qL*kHrjI!rS2x6xq0`o9Iuxb zeO`V4UF`vEjAb+B~}T!5eEWTqeP}I@}FvjDfYbEl#=y9}ru*v6^@fa~nf% z**#c-z%&KQZmhdpI`78`?)(0uz4tD?JUY33ne!G1!w~47{_lJe^zvwO8_(fzc(mky z!wP8MH#v^S_kB^*@B3%k9Ms<}Ktx1DL_|bHL_|dN#2@gL-P%O+M?L@m002ovPDHLk FV1ggw3CaKf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/bun3.png b/Resources/Textures/Mob/human_hair.rsi/bun3.png new file mode 100644 index 0000000000000000000000000000000000000000..19f24283ecb4603b4aeaee219992e4cf06479e52 GIT binary patch literal 530 zcmV+t0`2{YP)+c^pe(Es;YWPU7?gxqLf0GWl%~%L~yxW003><#?L`( zEqL_)sC4(EI~)#@rm1W;o1vs>D*OF@QT$EF!_%HO#*B^_Pm35NNfOj`jXckXQr9)K z){Ei?HNe#Eb^`$AoKsa*`3(_GS(eDMY;>=0ge7(%5BI&VwMLR8aL$e9T-PAcDW!(_ z-@9I~i|Ps;0SW-xwtf0|V+^XQT4fv7U1A&ZCg`hTs|>J~fj^P%gn!;CMU&-r{MDfpadj znlE$CP5($yU2gGA7D6m(@fY()U+@CBIH*^EZ*BnZ_}!gBL_|bHL_|bHL_|N{8~LHz Uz=pQ3NdN!<07*qoM6N<$f{niR(EtDd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/bunalt.png b/Resources/Textures/Mob/human_hair.rsi/bunalt.png new file mode 100644 index 0000000000000000000000000000000000000000..93641aaf9c8bd5e64a6a122407069e13ebb0b943 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU<~(kaSW-L^Y)fuU$cP#>xKQ= z7b8rRFJ3tJ_xuy>9~_%~dw2{R8`#ZG)lceIWnpxJ z!NEmA$wO0dY00V%<)7MjKJzxT3gpPRb1O!?)1FoR&+W7Bg4b5kZ3lO)i*Bns&RZdv zQhR^5n1WL9z7C(YZ>qn~a=+eiYsc1q%RZ^Nro1|x9pH7co;Rxc)II%=CnY2CGtaq4|Go4a%Fmg&np-B;6N z*nhgQJlF5sr_ihSY_&JM_V1r8!O$R)Z24`Hv!HYl?@wQbhMJ1izPYEFId^1itPI}l nEF8`F|L*cDo-Qy@ve(|zW}Qp+-?y`XAgTe~DWM4f3#_n; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/business.png b/Resources/Textures/Mob/human_hair.rsi/business.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf6ed2ff79f2d954613c3a5e1c54808e5f77d94 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV6^jeaSW-L^Y)hGxh4l5)(4L` zZ~V}^sQkr7X6or4>AZk&)5k6IHH=!H)W;{W_~yi`>ggzL;b&lfkp3+pEiY}SEyD-L zBkY3nmz_L&hJE6e#1*TU3qotZ3O>Kv?fzrNAB9J&W|_5c+->WB{LZ=KL+M2h+2^*e zua{nzySx6-k7d{Ioz8ghh0#U${+_xmzl!qNCj|a4DHL5}`~K&ihcDQS*R<*`eRHbl z_ujcRxi|Jc?CgMpe>3m?U(Wo&U9*V&NnlsSr%9^sxFe>y9xI$uIj{KD_1!-!*go8n z`o1ndZQZK;t*=dMuRn@@nCy6Sb0^3Ct@3ZITGn1IdH-Qy+(r4FDt}MJ|NfcBYX9N2 zEmOR{`}+g83%~WpuYS9H_lyrW%R8R2_DQV9Uswgmu$5HQbkRs3Hy!HqH7;H8uR z0IhYZNuX4YlLrp~#+a=rrHTtM3EpGwJ8sHZ<;2|^NevEtCIMtaU3zvGp1?6vMe{-y!TZnplIG`t{uTON@S6C=*MLugoN^cV=pH|3krzn-Yv*2-=JFoj&4)sme@Y7G3Mr%aM*I421r`#B!oy> z>r}fe<(ZUHH#yyFpWjn71%UOZ*7rU3OI5y8jB%Tihv$^r(ZFqY_Pga=_W2#=@Bj~} y$*pFE$d4?-sX4uT0f>l*h=_=Yh=_>(SAPKC+wXJZcAKOC0000D7P)fV83-9avK2kUxVRq9DPfQvi87kA)2tc*x@M!R^%Gm-LpqzHim-ycXg ze1;b{^_&!Atjn@&`=u1-dG5Ma5AS__Jk}fk$I%lesLQgDQlgYXDTSQ#n@Nq}y|2a? z0CLXcoVUDsu6MWr);UTkSZlWgthE?ph%pXrLX5E*W45MSYXMm1nO`AvUGwLWFHcad zwaoK8dGG7K2{~szMb9QL1~OLg{z@1KD0 z^w9=%tr4m)^)5*GY%PZh(|%+=%ro5e_k3AyZJEk5dB&VXL_|bHL_|bHMC9502J~_T UB08pd0ssI207*qoM6N<$g6${x+W-In literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/business4.png b/Resources/Textures/Mob/human_hair.rsi/business4.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7bf0b70d941c9da3ad114e8f7a0f1d0f6991d6 GIT binary patch literal 491 zcmVbomDkAE=*9Fj5qFd93Y>GuIS-Ey>%8~A1+q^3qznIQf7{u! zy*}nOEP)u~r$M~;!xMN`{M6g`TRTEQLvfdvzg^rx(5m(qP146>k1oHJLj;j zD=wD{uGj0(Aw^0_@Ao@$&L6%DA>ekqb;a+x_*wC#6qIdi*NvLgEP(zIX~kRY5JLN` z_Yk@kBy!Ge8RA&H0?Q@Fp<^lqmRc)92rafPM}!bsjy<}P-47ux0RY&x?Ip805qa2H zF+KTw`v8n}zvp*;%L1tLzP-1D7}k*E9R5`sVte}>rfjX9bs1sm%HA0|e{{y2h=_=Y hh=_=Yh=}NH{sN@E6MtDcP=x>h002ovPDHLkV1mab;B^21 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/buzzcut.png b/Resources/Textures/Mob/human_hair.rsi/buzzcut.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b5722cf1182d5877ab0a74fa1b0564b431ff12 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=+dN$yLn`LHz2(W*Y{0`Ba7+5f zu{$%AFX(1Tww!c0T5YY=`hG@-uMy9OjP=~b&z;`Cob~^lPgh6b`<>e+{akJ>F8J8Q z*S<0O@zS@tW|Ql)*kww0ee+u}v3?b!yX?BX%vn#q|EP@J_HF6rv;Kcs7=bo2F#K@7 zxp-q`@}8@K(Hs99m+xKrj(tt<_8rmzi~GLtMX+s+tGWIs^?7uBZ{+1Y^ExEnZ}^b! k`+8S4bJcaQ_5*io878lC7N|_t$^{8{y85}Sb4q9e0MSBbIRF3v literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/chop.png b/Resources/Textures/Mob/human_hair.rsi/chop.png new file mode 100644 index 0000000000000000000000000000000000000000..b43bdb92a8e1cf3ca0307768f6660d02b2c493ad GIT binary patch literal 400 zcmV;B0dM|^P)U=4-EWw-X}sHw)k&$!9wKI`XE+)~ZgxNzpKmj-$iJmae*Xag000000095QOU?&K z*Pju1Yksdx-ij8H|I@erN7+%in?Yz$nN@Ic^0%t60xQ$2-szBD8!-@D9`Cg}xf2c* zN3B|GD?qN-wbph&MHNRSwXCU^-L9i;4oBG5U%y%}$F*_gdA9{`>C7Ye)FZHWM&R8d u&nHOw`4YTiN&3!X0{{R300000+{HIfl`#v@J|4>e0000D7P)fV83-9avK2kUxVRq9DPfQvi87kA)2tc*x@M!R^%Gm-LpqzHim-ycXg ze1;b{^_&!Atjn@&`=u1-dG5Ma5AS__Jk}fk$I%lesLQgDQlgYXDTSQ#n@Nq}y|2a? z0CLXcoVUDsu6MWr);UTkSZlWgthE?ph%pXrLX5E*W45MSYXMm1nO`AvUGwLWFHcad zwaoK8dGG7K2{~szMb9QL1~OLg{z@1KD0 z^w9=%tr4m)^)5*GY%PZh(|%+=%ro5e_k3AyZJEk5dB&VXL_|bHL_|bHMC9502J~_T UB08pd0ssI207*qoM6N<$g6${x+W-In literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/coffeehouse.png b/Resources/Textures/Mob/human_hair.rsi/coffeehouse.png new file mode 100644 index 0000000000000000000000000000000000000000..e887182a4e4c0bad5f83bcaf823ef9903ec10c0b GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV07|yaSW-L^Y*51(IEpK)(6k? zZlAr}>izEU%{RQU-M&ogG%w%sbV>WQPg3o$ze=Ro1_Oo1XU@dO9*)Y_e)sj6)Y<2} z9p~d!zpa|!vHfVf`9j}2G0HzC^KxV#+U%mpnzNU2<@3WT{tN+LmS6X5pQ`Ha_0srx zP4(R~58hq&__t2};QgleJAYX1+wGs$_SA4!#e!m{zNDEgw=zCo|HIqW0S71ST|PN| zk|}h^O7r{V^J$ao9#eH^J_eQd2ZNl>RbIcWW?cNedcL>j_AkmG-MULB#TPTamp=NZ z_}wqhVE6KO@1&<)%ofi}V-PT6ES|S*-BLk$+mCKtwGw|V3tu>DpUj_Z@GDfpN=9|3 zP6d;JtG?U;=YM6+Wx?hDmM6c;DCK<{@@Cox4(|NcYo%A%_UvL4gagZ6+K(>I)05{) R+X@U+22WQ%mvv4FO#mYGs6PMz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/combover.png b/Resources/Textures/Mob/human_hair.rsi/combover.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8a46bdd11747d0ae2e14773dcab06e8acd6095 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=cRgJkLn`LHy%osUtiaRo@DcA0 zr}y=0`9>dHd7M=mJ?=jGue$7G;+;*l}fy#0P> zPh2w#o%iHrXHHhr?PP&wV}5_}STEM)X(cah6$I-)7&wVo+D$la3$w@KCIiQWCgX#1 RFP4IYJYD@<);T3K0RXcfa)|%{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/crewcut.png b/Resources/Textures/Mob/human_hair.rsi/crewcut.png new file mode 100644 index 0000000000000000000000000000000000000000..06ef84b67e31f25cce9830718aa7626cb8236889 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=^F3W0Ln`LHy?L6iSwVpH!orvJ z<~5bOjWRuw4?8dXI;WR=%Fdn_Z5%tcT={UO_(M(b>-*MCd&F;ZZ`~68^zUt_(|*g7 z{%G8PwtijwZswxLH#97jigP)qNw*s7O@?3uZ<1E zdjR?0R7(b_YBz3cnr6|x9!_6XI}sTaRqdusmC^_BtE{4*Otb^gFF^cV+Qe8py<&|; z*zfnLP%j?qp}!bgeTwtc(z{?*K0 zO6wyABqzest3+w$bc3hQ-1|M{4luL+Dk8bVZ^BqN@szy-v!cTQ4k7~Q900&M2Q!12 zRk7q6SilCr=6pVH&1~Q$9FLEZ;)ii|$i0G-B2taBM1r?NN!n zwE($C005w>@ZR^^?_QYM#W@G>JybO|XC1@rGaH|J6n4(7nj;ud)e68RdI(7qotbTs zkt(xf2fP74sVVoEe9-OMw%w*)0KB7gq7)&75JCtcgb+dqA>^U?0zq;9_&qu{t^fc4 M07*qoM6N<$g2r&{ssI20 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/cuthair.png b/Resources/Textures/Mob/human_hair.rsi/cuthair.png new file mode 100644 index 0000000000000000000000000000000000000000..e05f2def6f0cda6fa86abc982a420c3183c755b6 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU{vvRaSW-L^Y)fw-eCoS)`!o# zxHqI59)G|!N5RsLTb{Wy$LEQguX09j@YnxleYyt?lH1QJF#f+~WOU-ptH+z?e7+FV zylUp#WbfvkHDCBLPHu0x{dM&snI*F#y`wDCbB{`N-4AU@Kk2V?X!Xzj-v3$$C0TDI zUCFO2fBB0k?(cc^H_Y8CmGA9s@7ygv{{9~GxoO35Nj=x6ZTTK&cD_ibK^YpUR?KezY3iJ>0yft2<*b;d>Y2K}C r1@V_3GOEvGef8~JHZ#<+2fTL}BFgI<|HzB{1_^n(`njxgN@xNA^Y5M> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/dandypompadour.png b/Resources/Textures/Mob/human_hair.rsi/dandypompadour.png new file mode 100644 index 0000000000000000000000000000000000000000..5faa1dd3d4137d448bb332a1ad21ff56c060434d GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU`+FLaSW-L^Y+%=-evdeau?p^$N>D;?7Pya+3KhWQKr=jFmy;Yo) z@#Ky@vcePJ{5d;)z0e~ei$3L6fnB;s_a0II_iS@Oe0+frIWj%iybDt1E*; zi_eMH`^pwye0Bdp)J{7u_PK5^4_!LATyS=v*8P>6ostZSFZv2AZMr#SqxjX?1tvdA z3zxFXFZH#^^0=z@#xy~5N%vm0kom0Emp5)-Wt^{k@8gY@Ytl=uJ!-aCxpJM}>2v%~ zuauPrHy*t!S$=zhK>DKZ^HzL1)_?mP!>;mNm~$8y{@OB{ggjui*t}~BNYK;O&t;uc GLK6VMp}0K& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/devilock.png b/Resources/Textures/Mob/human_hair.rsi/devilock.png new file mode 100644 index 0000000000000000000000000000000000000000..87a28c5e3e41647392115be96a3b4d3fa992eb41 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=KRsO>Ln`LHz4ef{$v~j(;rd?g z4NTf4|3f1d3TOOXs9Gh|(wx-se)5DZGrm=|e^@^C!~Lf6g!|u@Zfj30IKSDkGE-h| zzlWCQ(xBV>JM#6Wzu?*T?BBhz-u>GcOg$!u6rD@1KCLA4aqs^6h~Mu-jGsl<=X(pq zi2fIsU%&QQSHZCwpc^2dfa~$MFU70(?3@y0aQoACDr!uJQR`@pt~- z#iy6%O0z6OQ50y~7Jc8Jt#@~Ptu+9ks;albRoU+NyQaV>0btWKMV4h~ng+u#EXu@v z2+277os2Oumtf>jdn?QHJjenlW4NZ>G#xkcx;_cd|1Xa(J0W)CvGtZCynV?|pFA-d z4)Iw7?qt0l9G>@owF7{Q7Q3%2Dj^~wA|fIpA|fK9|0?7efHRKf<+U&1*r#6$x-lud z#SV5hKysZEK>Yo=&2tG;S?~m0SENq(*!aM)f0Nh>EIJ_w(fE&f`0$=9aviAa8eP|| z>#+#87Od;Gd7h&zO8`HIB!bQViG0IR_vPKJBcC{dr<=&<0v1-W59RUr-QlAh5bJyI p<4{hI9|1%}L_|bHL_|dNEZ;jr;l9~G237z7002ovPDHLkV1g2v%uxUU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/dreads.png b/Resources/Textures/Mob/human_hair.rsi/dreads.png new file mode 100644 index 0000000000000000000000000000000000000000..a986b30226c3d060250962656a3d06f08d97749c GIT binary patch literal 551 zcmV+?0@(eDP)-cX(y3b`6wd?N5JI4lsruhQY}+ zK*+D=P_jr$8H5n`ao_jw-WTmvsz3j(RR2%zg1WAQ5CVPQ0|16$fDmFas4a*($K&x` zTqXNuB|u6UPN&oT#;dAA*L8=!?_ZLH>Hb~UL2C`~JpkZ#yA|mtmrdMU2!ZSM`fgo( z7F#`s>EYs`XY-iMC+jCwKwZ~CYmI5?FA*!Dv>c!5r=YdY(oaf2(=@QwqN=K=;=?eY zX_{31B$}pya}F^HN~wqWIM!OjTAQW+Gy%q#V6DaFa)GsWF~jkOoO3vz&v4Gc7_&+h z7-Pb8U#&I9al9W|DTQ$y?}v|ZuBHDF$eO<^)&HOT002sr3Uwop~31-@|+V@E-3y z`o6ECAHaU6pOM$#xbvw6l#G`Z1!Sj>;U)sznPt>qnddC|+j$fPTIfGU0clHL#Ih^^ z0IYLa@)`sp7-L|agE0nysG0760(l=u+fUC)Q4~c{6h%=KMNt$*QT}%%Q}gO~`4WzL zo7M*aKM#MFoM`cB{GQ&@Macdv4(t^}LMWQZGlUR!x~6H``j&aFUmpPcJ%4FiU1`O+6deIUa)qCwRX%b@T9MH* zD}3Zw9a3rmzjOa!t;I6WTfIOC0oUsl<2dFH^%ALW@dege%(b(`5(0tSx`0+;@Sg4x zC-_oX8#71Q1>h$l)Gn2C&PAydNvyAWdEQ;p7ogS_@Cn~@$|pjhro3Px~u>I002ovPDHLkV1jy2Cba+n literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/emo.png b/Resources/Textures/Mob/human_hair.rsi/emo.png new file mode 100644 index 0000000000000000000000000000000000000000..2d20151168d7ad6b0dfee7fa1e0599ae8a2b4f64 GIT binary patch literal 380 zcmV-?0fYXDP)JtW2`F-B2Un}p)}B+2q(jKziQkLdE_EMyar zWJTBn)J4r=lYfQ!QA>?udcLZ*a$Whoi$`kw#?D#z%mwkt0K4*g*MNMWuE3MtWp&r$ zc?%3JVDX$TpLz}Ec`5r20000000000UK_PPV8s27+C=2msKwRf@pgua!P{Pe`urrf zY+r)eMC8|VGw%k8g0-tZFbSy|cy5=+Cu2?#PY(ItxiNJDLI{_($3@CEc&jDeYN3x* z53|H5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/emofringe.png b/Resources/Textures/Mob/human_hair.rsi/emofringe.png new file mode 100644 index 0000000000000000000000000000000000000000..244f8f206d1cedb313014218bf14708962cd5acd GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV2t*3aSW-L^Y)fwc8h@k>x1h~ z0*7LliccPG{{LT|%a7kw$aLF`T&2|e?3>nY+Gn_HX9`1AzP$dQYyVzY^*^f*V~gfs zylkS_vO#vW?jkdJhwnAa3HPeI4QG9~V|^a|x#szucbk*{m9JPOcet^S`NQdJYa1?G z3RaddWPQp%%Xn_*mgqSp(^7ZNuJ@i6A2PYVn!#mBg`bPT`Oj~e{sq@1DYo2QE#~AQ zoOJ$AuG2ZY`)-*`YD#dhs4PdKZ5{XI%CcLVq*h(|!p_jJ^3}Jamh7QNcO~7qvde03 zw0cbT%Wn)mq5l5$5^UXu%O3m67?s^zb?dpV&fOX=F+u6$8zTiDTRiiA5Z-*@+SRk_ zy4@NvzfCyG*GFECDdDMHw1%?CF{d}>C(_N12`QD%MK5lRFeh2=_eg>}k rqto7O`2XbAAH(^zOfGO>|C8zBoAr~lW^J(mhBkwztDnm{r-UW|M{=&b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/emolong.png b/Resources/Textures/Mob/human_hair.rsi/emolong.png new file mode 100644 index 0000000000000000000000000000000000000000..0afc0d2d89c19610b1036aac08697114784d9352 GIT binary patch literal 481 zcmV<70UrK|P)>k!it(9G?O=s|ZAUcYD&rF+t=`Ln`LHy>&3_h=NG#!{E27 z3VNUa`OnxoyL;zdpF;+h#e_PHm;PsWyzt`Ugt_5N|F-ro7WUGd7&K|7=JPf8cHfD8 zy=&FhvWmUo&+FxC?C-?B`zMl;rl?u+XtCVM{Ix5u{W7@_b-AJD=rzB~B9lt8A1D4f z^=E>})@y%vzPI1?;OYK1taa8;;%)eWj)8y%M!$HqX+ek1sCa6sKAp2w=k$crCoAVI z{=Tj>R@L)e-7d3-S5%B|^Xq4NBpxaE(){iF(Z7^Cyd&E1$h(DZ2`A*X{c1TI+j#8j kLuDtws^@zdVFvHHCcf%b;!^)#O4C6?p00i_>zopr07asM!~g&Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/feather.png b/Resources/Textures/Mob/human_hair.rsi/feather.png new file mode 100644 index 0000000000000000000000000000000000000000..62326b8ebd0fefda9933b0ff6b809182a1a4e81a GIT binary patch literal 438 zcmV;n0ZIOeP)!3s4e`bo0;4Up9R_&(41{SnW0YzA%qY@2qAV0eE3@ay>9^?2v}0w9GCgoF@62qAyI zf3JI@*Shonwa5X@mtsHk*52f zxiB*bo@7tzIon#1y<=kh)V~jT!$McQvXM|~5@6b}NBjLG_Wift7S%1!nb84+tE84K zSCp?WR$R7f*(x<9F{cw-&%FNl!N#n6rv3c$-Je~LM9I1O+cES!p0R(vpE|>iRWBt& zg$0uLl+Nq)xLoz+3Pa8Pj?+&kO=o&Azs2AEhd^?Sh{5&j51$WCYkq&!iQ{S1>y7`4 z{eE&PE}6CKkHEbx_up5yN_Ta79M96*c1(Uoc;xSX2|+mcYq@p(m^T@>#y{kF157%@WHw7b-%4Lw|IZ)nn-}+eTIZxoSob4Bd^Nt z6V5pIdaFlde^%9r-Of+8FPOKV*>ZD4UEWpU51ZW+xNUbnJXhDc+{BhKVzaF6%P8lY wefLhWJeg)`b!|)QLG|cWtsO9sv3nmwz@w#WcLq3x0Aq;3)78&qol`;+06*&0RR910 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/flair.png b/Resources/Textures/Mob/human_hair.rsi/flair.png new file mode 100644 index 0000000000000000000000000000000000000000..1c00579ee09e9e833a3b5eee39cddbcfaab14ba8 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC?dAaSW-L^Y)fw)?oty)(eH= z`wnvSnBU{(+4o8!!#6I#*sB?UryYR}RwOeEFf4{U{`1NnQ zofod;RJ(M()s4HgqebYmOr70=tB<_Dp5r6T+>ZYJ)LZMgPp%-@F z8j@npi@u0i{+Q+F@9EzZ=OiVvwy>$s2>ntow8_zFp5$(6Z-#S5o3&PYt$MfbO!ca? zZ&kb2?f0vjx4Kv`&h!28)8Terbr)B1w0Ew5ysP4Gy1?%z)~ncOe^?#-;i76wlMjEt{Bf4%fwf+mic7y37<*2dsk!vaj>6z~hQ61lFF9Yy0(2)B97rwO z`*WS`ucg9!UwM4by|!+0{4>L2ag90eRNfrZtJ|_Hx##NL)w{13%KZQ9dE?8I>38S* zJCw7#S}a|8%l*#PyI!UEo&C<7RV!xwT;`ri<<9E)tw}xQag!OL_AIz) X{@`&>h}qKGWRQrbtDnm{r-UW|KsJ-w literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/fringetail.png b/Resources/Textures/Mob/human_hair.rsi/fringetail.png new file mode 100644 index 0000000000000000000000000000000000000000..007d17a0000c9f0cc34fff846e6a8fc0fc51568e GIT binary patch literal 382 zcmV-^0fGLBP)_V8Ud) z_chlni66NPLep}5HPw2Q!4}?BHF}&VjV1}yoc~r1=bI1KpDt^Fk^4GtTL0G^thFK{ zvMft@d@9|h{g9knmqog(hU-4@I;He^pu0Ge;t8~oEh{D&L?00000 c002DX50h7tWct*a&;S4c07*qoM6N<$g8mbz+W-In literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/gelled.png b/Resources/Textures/Mob/human_hair.rsi/gelled.png new file mode 100644 index 0000000000000000000000000000000000000000..6c91e7d0fe6e2373c02a9e61d97410eb3f270645 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=>pfi@Ln`LHy>*bU$$*C;z~tY5 z{l~6CstFNm?<%~H^-#EQY3=Tu%PfJPUsav@v0a`iy;eU-yFK7dwbO%X&n3SlwItay zz0V1)s=NEYoUxC`;j+()S(|1CMQ_;3s`tDn`@lVo={imKf9=`%A7~p8Xr<=$hv#=K zc_Qe$>$zm(yV;BP`nAYhoD=<|=D@A$tE;;%D?e)&Om~d*Q~viS>B*gS$xpQU=SYL~ a-nC_X$fw9=tGe_Qi0|p@=d#Wzp$Pywh+sni literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/gentle.png b/Resources/Textures/Mob/human_hair.rsi/gentle.png new file mode 100644 index 0000000000000000000000000000000000000000..e11d9615e0a495cff0b57f3b775f580fa2de95ab GIT binary patch literal 363 zcmV-x0hIoUP)1YLL^}mPs(vw_kYr4zM<$HwQe@Yy-aCV$rw1d;ZfN0e990w4Gl0 zCOFD6)sXQD>m~bDd;_oNPQCyD00000KoYP00UqC%lI^lGbnX>s&j&fGeF?*wLJQ~} z%|3y!?B3o0xv@HIDq<8|H6cVb_{%z?)j^}p5|P<6wS*V3!@|U^dc2m$cVMc?`nT1F zWv$KKuEV-bZdc150g=5{WK(Ndxk++|+^(z!000000001!egS(nhz(&2dW!%6002ov JPDHLkV1h#9p)mje literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/halfbang.png b/Resources/Textures/Mob/human_hair.rsi/halfbang.png new file mode 100644 index 0000000000000000000000000000000000000000..f91bc945f1348952c944dc759d3822d58cbdb1b0 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC3?2aSW-L^Y)e_U$cTh>%)!N zeFoWO_x?M{9sFCO%+`5LsWjvAfA5ZiX8Vk8TvcFtz;wEORn+-EsXtovx!(n~2sq74 z&)gT2pS~)~(5>6>o5rD8p<+&R?zP-?6+61aG`@>z$?D*LFZFhdEQl#Neg8q=&%cSY zmQA03{a?eaKQ%&58FdM{j4q+Gouzp{+vMlzeD*%Nzxw#QDf{2;-@^xVCKxhBZ?HVw>$KciXxS=vTd(=fLP|-GE!OG2p%jYu6{1-oD!M<@@tGK literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/halfbang_alt.png b/Resources/Textures/Mob/human_hair.rsi/halfbang_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..f04d1882831e680bf1168dd6e58547215aa74a3b GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU^MY`aSW-L^Y)fuUbBJ7v5(Ww z*)bfRUCVOh0&{`Xe9gVy>gO)x$u!=T%~DFf+F6hkJ@udc$)*++`MQSb;(`pUH8vqv zzn|e>99uD?V7ih-@*|u5`}uCa+Ow)Ed+qjX-!u;CYU{R`>=OPrCncz7)z3*H3HQxT z?XREethnkX_gueUGmk%b`{cR)>s@L5=RW@_{Kj(5qyD}`vBkdJ+e_2-b##>u<^|K@1pU!_{D}H!smHqtF=l6UM z@MPq3TqX5>yGB#^Rp-2#HID!ClZzzUqMMCObY=&I%JXM_`Ok2(IpnJU0}0m8w`^Htu-LUcakn)dG)VC6JJ(tDnm{ Hr-UW|^#Gx$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/halfshaved.png b/Resources/Textures/Mob/human_hair.rsi/halfshaved.png new file mode 100644 index 0000000000000000000000000000000000000000..19bded3f616673b6da61d470e2b463a37bc433e9 GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU`+6IaSW-L^Y)fwUbBG!>xKL) z+-F2BJo_KbS+iz#?R87e@DIE*@(P?*Xc`=JUiwen)pNpwe%*;Wb_{>>AGQ{MUGRF& ztost@yOo-@3wVRI{T*9qwzMMr&s(Dcy&lS z?A+ZWU*j42Tkp>)3a`v#5JZ5VTBas?E>ASgTOLI9GjBfnY+YU59-+D0FRtoZmg#eI zTA2m=UG9?`*Zj%2EmnJ9`_sOPPT2`!8H?nG+7y}@|r$wdRF(VL%$lJ|a76DL@21KvqO2quJJh$uIqI<6$;d?AGDK=DR&c`*yI z#+a0g$PH+V(vq7$!rrBpnoT`F5w$tl`Fj_SwDX!aspf)s<^;R)_pSkUrwDuST*H6y zyYq9t1vW{RWnqN5q^-g3>^p_K2##c%$4fX@z{a|+5@CiAX+VroBFv-R^(#=E$QAHp z(>DMB000000001HBQ+l&5pPIt?tg++0eM!S-LE7Sa|wqvsTQ!e{S7T>-yu%kd(peY ztRjvQ7fn!c;^c2_K>NHruARHuoOA33aMyrOx5PCU!o%3kIoW_8+Il-@xXA-WQ{FCLCe`+EPc*nwNUwuC`e4lNgTC(fu$@RB4e2`I4x>Bt! zxbWJo!-b-0%M95B1$zxUW?sJj>zvw!>Uj0Fn~XxPwmYuY+IlVMy4POTkgt~{XV3Hu zwVm!P`oVMkK>_(M6A#LB=B@8LucmbDj9I?+n`pC@JsxyzziB4X-wOGEbJUJsh*CBLz+PTEosz(Z9y}J|oNp3=B3OnJaxZmY$8CD+dzvboFyt=akR{0J77pGNcGr z2UJ%+NfH16=Ntf#=Q%j%5JHSvgl6ZnENix-(QXz0kIjb}V@Q$&N~yXn&+~~=3VEJ` zF=lhR!J3`#`+qdo5pZh=n!fLbXS$Ano7;D{$1PSPpnLDz?*Bwq1z0YZ5AFX%Rs}en zP7m$>L{ZrI|8X)5LsLz~SMiln)l~iH@eSwPD5VVN z{LAd@wQW?l;&yTxhv#|CjvCH+Ya1@O=p&#Ruv7WB z=wAI-T#)*{t1AA^`8X+MYeY7-yZyEK@O(Z80L*4HXsscHz~yqWImOcnA)vK}QVK;; z0I*x9V7)-Xah$sIT5GtjYnSm8xvtyF#c>?#MH<%c0co0oF$S$Q7-Ov^YOf}xY~|8; zA-bE*o0AE{5CCvE9KaaEYPG^{w|m(N(LUSl)*O#VoX=;h*J}Vk9LK<&eY<-ENGVYi z1>!iK1VI2PCCaiKl=L%|WeF)If*?Q~$CIKc-a0A?A%qY@2qA5dr6b0au4zS$8iy6?JS(x(vufvqdLzI;c#ndocJ)dNeI)!`vlRBym(EoPH zxk**WxNaDRtY^Jld{rGqWKmRgTuZ7{d;m}7koZAEM*wpN_}8VAh+~IW9MK6~*M)(6 z@Hw&R{gPgGz*Nc!Mqo9$1E%5X%!@jqoFLF@a(+e>G|xW&wc(qRlghm5nF3?+qQT-9?8pL(hLBAuIrNO_v9OAj9JthW3n0# z6dtis&i*1sL_|bHL_|bHL`3f@_g~2)05nZASKMy5-#jll{z~ku_{ke1_}T-6s-mhY zR8<9I3`7Kd-xuGb@B4lf5g23U_^JvK0ZMO&v{oB9mK7&zyks#*7^cECkM=EghcP}g-<;62oJy~t%+3dSN( AK>z>% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/hbraid.png b/Resources/Textures/Mob/human_hair.rsi/hbraid.png new file mode 100644 index 0000000000000000000000000000000000000000..d02772467e9fba3007065ddb447942b381da9d43 GIT binary patch literal 588 zcmV-S0<-;zP)s|w0U4=ua0hDS1`=|P z;{^4-1<47y-*^9AA_L6-W)kuzDWwGfr4+Q*0D$dw8}zK9At-;Y%kh4tfx#82bd9&oR~ zuGPQV1h~z2>Hi>_S|FtkXaAxoI>ilgKy|aJHxI;f06775Ut1|Zg#n%c(HxMpYBBNK zF17nc!w|EFVHk#C7=~dOhG7`y>LDK`2_Y;1%x1IWT3MEZ97*MQemoH}#sC0zyB$dj z=}^>dzU_LS#L_~_mJq`Fm9LV@34Z0P7-PsTXhpGDSs{cKLfAadZIg)9I6Y2Zu~@a% z);d!{2zz_?i0$X=ac!vHui_U&&X@Rje{SspQUZW+48JN}h9PMPy3LPe<33JP(~LR? zDFH6KV}`1c?0_*R!5Gu81AxE1HHJ5VuOa017u*7_=Y~vzi|x;(-dn(@EX#?UFG&Go zBInDKflO_I*0_(1bL;&?yiA=Qil$Bu0K)n%7UyF3<^W*WYPaPYG%^gsFbu;m48t(Y a!2AGs5coTV2c0kg00005QcxQqyZC1Y?mbLSoZxNq|2@}VM$FiF@$Kii(?7uRcP@D-prSnC}3y$cUo&_ z0KyN>dCNI(=k{YNe|*0vgn$qNbBQ3Ov;#27zLx+}%Fd_|0#lvvC643CZ8!_SId2b# z!_Bp#D1Z-%@MP+F+jbV(cIwr2ZLisvmu)8j@;q;w zronc*4U92?)*1kylnQ)|yOL#D_dbfE?tPLZ-c!*z0vKcck2f99^W3#LXKcr91nl?w z?jGmdxjiQVcDvovkyc8*y#EgRk=8WL!+m3nvwi0X=!f1MD5ZjX9~fiMT6>A_y$`s@ zC;Z;QX0!3`{8uBTY_lwzXCt%(j4=SFM_%|2XXfB?xu9tpuZ6GA*G9lOhfm-o|l^^?Hq}swN*q{uVZQdODp@mgOiP$2`>9q@+E9 zuIswX4%_4Dk!`(`w(pY=qRU!YpUScv^y}rZxRkP0O8q<--aaaXK+`lxk^}&7JRaLm zM21a+Tf4wR!WLl|;(R^>==$)~ufb#SYu+Dens(QsC_)rPNYfOIF)+p;gg{XgzkW(< zj0uDgo!vA|JAW+J*D*@B|1mJlcKvh-HS_hxX(P^y%I|c7?tyS<&j96i`*0U^% z{Q`~tAh|LqK$0X6^Is{|@ARC%2m$aThFz;HVHn<2lsscp1oY>>QYx4$75)m&`Aztz zX^Q(|u75EofbD$0aXb2-sttOD^}%-<4hk?v#iijgFkhP;eittVP)Y^&n~ZOQF*X*AP9mW2!bGp?P)f*1;tlZHTz`njbEx-`m%IeB{oQ*9mB^QQU4J@7MzTEy@V?`@W9{driL!OH z3^1?jH30Nk0{_(}7|}Am68RaoeP~Rx*ED-Tt6W;QEEwRc0lpdFxiS3N04oDLURt+o z7~pYl_OHkIn5#8hQ4~c{6h%=KMNuw9NK;4Y>YSK(Y!TU>A}ARV@o#T$yZU%M#%8n0 zc1S@){O#>6R;$&nttg6ZUDr3MvXT`J#xE9&R%-kdnTZ@k8xf%_%U(`MRn~_AopYd$ zT%2=mPzQ8npo1>Wgm@%;?oZAO1aAXCS(b3l!8vC_NtM@w5rENVv$=83wRCAFWKbP; zdH8TBA=lZUeVExC(IrWrqzGWk`-rWZ>oL5Xb-B5Dzek9Q0zE&=VKG|3~4nd%=VcfJyaWO!^$OJfLOQR_Ly~^GgWYV&{dK z0owx1-$sP|NJ?pL+nS~c8Y={))SdjguH(ojA|n7(mZc#gQfN?ox4z9-E9WJL# zj+C-99)KaD*iPsSCZfT)cX;vUb8(ucgYTQo23l(|*8l6U5#Z{J838u(Za*U+0=%&K z@9Go(!*NcmlZ}+p5YgZ}=1zgtYV}nAvj_l9(*OXHB*8&zBuO&p_r=Qr-%UmYDdnA^ z0+;%e5qXc9e0@nzfh-%1F>~#o6Rov4Xl)9m2JMAX_;`PZ34E`481Z?b8LbafqLeb? z`rN-ghm7Z)0?}Ug9-vSPySjdA3~ze`U|gX#);={h%KB+woe(1brHY`7U0vh0Cj4r| zwbt0&?;nBVy%wJt`X^Fg%*Yt^=f@G_vCA+F!!QiPFbu;mOoyF@?#}D=I@*8ptE@X6 zLdFW2MKMY#oX_X3Ax%@9PA6nphN`M&otfEgx8`s-V6j->cszFPNs^$x%np0W_f@tt zzHM7*t*02%m%BSnM9A|z$O+yKumZK#AjeuxN8Cw+?SNCB)hr;3pXQ**wgy_QW~He;P%HsiHz z5%1#_Z2l=5OuTn{f44E;+PHh%|IWS!nhpdB5trMS?+)_nJF{@>@@=XP@9knU_};Ob zoZJ7a&OvMGo$zC`uZfhpzqs=4OAX(XsMnt}^s2cHT--5y U%U?G?{sH29y85}Sb4q9e0K@uQi2wiq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/jensen.png b/Resources/Textures/Mob/human_hair.rsi/jensen.png new file mode 100644 index 0000000000000000000000000000000000000000..286988bd123b2c6190fedd69bc034d51d773b54d GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=?>$`{Ln`LHy%osUtiaRoaMv4& zy_3_w`t4<}PF#1pLs~TO@qbmfrio@z^SU_J<#y~_vC7ls$eFOUo6YLZEv)`CMfgMb z^&hR;DxaQCTIHu?v}@lR<%3fjwx&#a?`c3an3DRB_UcM~yO+dCzdDHyI+kc*@+Pd*> z#lG)vc=e7JQ2WU(kdUXVpUXO@geCwl@q)ep literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/joestar.png b/Resources/Textures/Mob/human_hair.rsi/joestar.png new file mode 100644 index 0000000000000000000000000000000000000000..8c370d1169174d3c5d38acc73a8f1ab3f6afa507 GIT binary patch literal 494 zcmVp;G2(K$Y_B;)>>T}Tm{V5JxklRn#V9#wr#s< zd{lr|fQpEE?-lsjmLj6LZp-+2qD$A(!?~w;yHtScOuMD~&vtK-*TnxSZLkz%kI4go zv9{>`Z+83ZdZxKuu=W8I?|^r3JK4Q<9}y7|5fKp)5fKs5hgFTcQ zc6mSVz1P0)$CP;fye5880};^>0&ET zJ9i?xo)gMPWkLwE^(Ci79$tV~Cno2f_~yrCrsX@xi?HT|NU?XC_^n+Q0C>+u*lqGe kL_|bHL_|bHMD)SF0gH?M+#)x$&j0`b07*qoM6N<$f_xj|kpKVy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/kagami.png b/Resources/Textures/Mob/human_hair.rsi/kagami.png new file mode 100644 index 0000000000000000000000000000000000000000..58e2ba64cb3c73de3b81cfecf4687ed9e7204abe GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k33x*Ln`LHy?K%EumXoe;GO^f zi@$GKVmLF@)00evm#p!1VM*6Mbw9Q(yY<+A3D*4D{Ie$iG8kVelwJ)Nf0+6A z;g4B-8vOI4ZyLV57Atq}ya)T2ZPTxBK5)c?vFpoU_VBXMu5^bl(GE{k&&&6E-!eb2 zlsT@I$wgh@?GL6m$Nrdd0NugB&~W(-kH|k+`$`_oGfCO}uFB`{`6Ng89jjV@-osFO z&E4n4a&PPVjb;5eAJ}^;vTf3XCyoLK_*r4U5g$XFoi|0OUi$^>;Cxwq(5MQ~$u6$3iM}u%SI9H0rnv?BQ zV#V7ioAwr1oDTp100000004eaYoG4pvOWC)vIm#nW#6x#F$l5fOE|3QRo(`P=9aj3 zkG?0nyzzQ_-jnTm0vde*o0;9KW{Jxc%@KDq+o~Fd<<|1NYfOdVQ{W(TT7Q5vLY8hx z%bWGMrocDx48S(IG3rcSkoS7#K8?lvTjgmTnr>wQ%Wob4000000Kmuj2L-o;lpS5; QnE(I)07*qoM6N<$f)N^~-~a#s literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/kusanagi.png b/Resources/Textures/Mob/human_hair.rsi/kusanagi.png new file mode 100644 index 0000000000000000000000000000000000000000..77f372828edd91c37d5012ead5f0801317ee716a GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV2t;4aSW-L^Y)fw-(dwF)(iI| z4>Q&@-uZ8{vw^?i`!L z#r)JCYJw*S zU`px<2<`C5H8$?xII|}0&{Zc6{`LBs_dZ-4dCu5qL64(L5l3SA--Mj@HlqdczZdVH z|KO(7{7r)LX$N{9M9;CCX8pU(=z(a?Z~ywK4;#b zb9$Z6d)>3UwVa94!#s1{w>BUE~9{X#Y3EOJaT^o8Wbne$9`tyZ$uNCSqd*(U& z&b)IkX5L)tojCi4U0QX}lUqwG+%XzACX#JByY02UgP}_GyFdL{ed2(> wnUCjg=Ceg>l4rf+|K2E>KB)r^>`t5Sc)Uc8cjlK6V2Cq#y85}Sb4q9e0H@x%=Kufz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ladylike.png b/Resources/Textures/Mob/human_hair.rsi/ladylike.png new file mode 100644 index 0000000000000000000000000000000000000000..7824bfbcafcdb7bbf34888061e29143a83238a07 GIT binary patch literal 1399 zcmV--1&I2IP)WCyUkJ*9_d-EYP~TMi(Ki)Zu?H57^t>Or-lgU)8DH#7x`~_1?%gJBVLvcrcV_o_ zzBBX8?6Na~lpS#cxG_CFtpPn^-){offWLt@@D}jgsGMKHuY3c);=y!f1pd$V@x5Vm z4V?=i&NZNwQln^ui-4Y-oYci)v6BKiF2psMiFtjlTCMgiR7yP?S3pGaz>B~kfX&TK zwAQp*Erbxbu4}J*0eB*g;W!O&4tU-i-vxw8tH9dLn>T~kCCMay#ohs)vX#wdvy6?6 zA%s8(0f6Uu&j23-2NKo*z`1I*8aC;zm{eyt^TBHYySh{=Y1egisZ{D5yRNGXg@X1x zPkWxHfuDiHKxL5es1a}ucw=#KF|4d?e%pb(CrPdm{siWL&0?`gyY0KtTBEh!7wvYt z69oXC=RFNv0-Qm{;|zgY_@N(0x#v6|!|ovFf!BeBJ9qA&weG5{5Q0p`uST=kq~`Mt z(4xCjLWw&G+6HKZl$8R)c}1(tvx&HahIrP?>Iu&@vE5%9G+ zu47)8cj@~Ae)zY5Q&LKeKOyQup`abd(UnTY_WT?>sBn}BkoaR?Zgb6LpbAWxa~F6l zu9y%G;cI*ezk%^Q?>Im{pYM$O)z#H404cYV7*5nlaFFGB;B(;dp8VePSQHESpGrm9 z0zL)S8;yo&Hk+ODY&Of%($WTyGg(_9W*%P3PGO@ruTrUKV9s$IEv0M%>%g3paua`| zj74tnCHIwodNanx?mgKWjm8@At(5XOe(ygzI%y9M+VuYVPHukCBVb#klscQuw#|#t zBlla+$T2;il9G~=l9G~=l9G~=GAd@d_tA4C%hG)aYM32~N2S#4%*>3QnVA{ZIzUu9 zYZX?HQYv;M#9bMh6+)Z`e?>+qW%Ca(x`wb7KLDVV>Z}eKZ9|KMS*6shQc9ce^TBjG zm&>dG+I8L4VF@s3 zq!G$aA@a&}q#;mt3P-?SjA%5v7Kj!Je2J~s>#s(2ybHw2+QwOcc3W4B1^^n32Kl_d zFl{vtBF-FeZDC>IR!?5oewl#_lDioVXfN{6$n} zL*ReD$8+N9-l_d(R@OG^Q4BC(`r5!5#KM`E8bbdv7g*1$3ReF0xG;wbPu?+@ei7o*`=k2aeI zM!=vs;FL+1%=vlqYad5n0lx=C4IR((=4-Xu6!1P!Ga7=LtVXMSSDXwShxPI?lP&_< z^Sq%C1+yK-YO(%%vE?U2%63e@Ft-BiUY(&*b_%Nu-h>%hN7TpQVc^7oYksKJYQuaB zw0zItJ%}gpH7CZ%{*aI$52NOkl$4Z|l$4Z|l$4aw@E-y&(^YC!)mZ=l002ovPDHLk FV1j^>vLOHf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ladylike2.png b/Resources/Textures/Mob/human_hair.rsi/ladylike2.png new file mode 100644 index 0000000000000000000000000000000000000000..8685747db66d90d169039d497df994739c30445a GIT binary patch literal 1315 zcmV+;1>E|HP)A#po!w0JboXv%6Vic&of=jTnTwD^Zh~`@5Dhtb7WEW}-(c5+;6d;rh!Vtn zfXE(l5&vBD6d{^}izJYYB*;p1Hg2-pVRpL9!&FZ?lNqOb(mfie2Z~y%rr+PM-ma={ zx_iO!-0?oJ1^fX-z=y!gGj(8rs@LlZU0a}LB>gTB(AP_recqP6F_Boc^SuX1_cnn8t_5U29%{sa=`IyptzY(0nPzG1IqI}RjpQ)5JI`G zt31z(wXXp$7Ubda)E{-W$F=9cGVmI37d`m6EG{k%YC!qEujnUftpFcSto?Bmk$`td ztoP)g2$V%UxCB)FO&aD=Bq%pS{>P5(AkeUpuhaEEQ>G<2OV)Ddc9uU)CS%FJ^>ac1>wh@uFkl(KD`g@pxxIQLI?$PfXn4_`H^kg%5`03+qQBXM|qwXZ+=_A zFF9%Vu^`pJleAi`ypr$%{plY9Z|g*C0xC{ItyYT%zey4MP_x;bDrim#_>TVI&jD2- zL_AnktJRbcBCZdBO`V`jOxy#;t@%m3(rQh0ToT8wTw8QR2z&|b1wmkSyWK(m+}s?U zPG_ITSF_%TF!?cQHsrklF1hypa9gcbQ^2O{x=IMq1@`El{R7}$R*g(ofl0IBM6;Py ze-eKUH|U)nfFKAS0AC9sUe`@W^EQx)tea&{#CyQrGzVLgfAarD2%+ZY=AtkRqaX<8 z|7$-pN1u6v!C){L3s_i|NTa_y^9N~NE@C(GbTtmk>3 z=PEjaA&q-UFG2_oR7+sVwOas{O693DPvS}J?(XiJX@#d{NaLvX06-7~ zR4NtVvFAx-*#oxP?e^WFwj(2dIa{9apgnG-JvdbY?myVyJ-)Jf;ZWJSKBD`pv|V^9c_IJ|+NREe$&G~O`Qbk8)yY$@MPj#=QYtBB(VxbpVVoaD-*dh~BgB5t z^_4uuQgS8fVN4Qo<1pNP61P^+j@K)LA~G%V+ez)chiE(P6ZP(wedUFon#>aY17P%J==$ zx1iIaHDWKL1`h=!;1qCnOkZqbmK$NLH7)^X>3hzN+5SU9K0J?}4F-e3U@#aA27_TX Z`~%Tez&0Rs8(07U002ovPDHLkV1irAfSmvU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/longeralt2.png b/Resources/Textures/Mob/human_hair.rsi/longeralt2.png new file mode 100644 index 0000000000000000000000000000000000000000..3de1224d899e462fee6f26e9e2c3cac4670c0878 GIT binary patch literal 564 zcmV-40?Yl0P){&%6O1vyvD`}l^E~I>ZU-Vd3+UFq-}z-(Fwb)x zSF@%Hh%v%i`{VfGa2UMzgEWY>%Js|Si)or*twoHn`I^lO2Qz2yea{8&3=w5x3{py1 zmIc!^p)AOfxSAJ1@BPK&%-m}cys3xX$^WRUpt}2jU_Q+i@C>fJ^ZR@UJd2c)c;&Bc zHUZKvzwb7i005^~-y`2j54Y8~k5Wo0rIb=iDW#NB5AvU%i5UQxx%%nje9>{Jr-B zGq+yiF0M6i{G}-Y%$y}%7`?<8o7aJ+1YFASv+c{ZR)MHT=-DO>eBKCYpU^7OMW(lU zkzQld+vB(J@(EaN3*}$5#Htmblu}A5rIb=iy`B$G1pe>XSRiBo0000tS{nA;EjQ{Ba)=(GH^`#dpe$IpUPMTqMKJ}Ec4{{^apO;l z5GL{e-p_MFYy*k=hPiyGu4}z)+wb>IeMP4~h@ZVK1@#m4!2rzwT~*a6T2+;1Z-InB z1JFb?J0gU>ai3jw-1}Xa-u+7kxaj|K3FL2G2OaZEhzNO}0|4?o2N4C+)@4~|N-3u=!>GRleh&$oYH%Ss1B#+R z*LCB0-}g8kk0^@5slVt9n8G=qnc+fo1}LRw=bZD4?O!E213uy|4B(v45>-l#6=1Ia zXc%xHBF%PScfBkKfrs*E2Z!%<@CB0Q4IkAkCS8p0IyPx&jSD+ zgGUq^Ga5{X12kw_%g z#w=7Wj?rm5Z;*Pe2GU zuE(358N>OS%wq8x&vZMA*`VM}%mQ;$@NR}*Au}iEO~{f-JpL-6uIq6UvT2%|N#4*j z%{Wo&<(WhX@zL(Eo1w02&3sjXser3@d}VAaAhv~(tCI{^JAk!G2CN;x+T6VXUxoqO zSbhe*traq0=cVH-VjH9F5O}hD{~E*)Vp(zpk zZz|_U%q-V!UDsvx_3HSmIfDPxKDW8!Clw$DS+CbWUN2?Xf7f;W@l5=WoEteD4#QKm z)W07MlaA-ioYhzI6bRJdSakkhCx5T~p5y{dCA(x1=9FB3wrxj;`&9e8OD@3icuZ=4 zcgY2qdIC(f|0(x|dFg4u%+fTC5Yf%iG>t6%G+G=p$0YltiAdVEmBF>YEsV0!BE0s_ zmK6&yJO=;(00000004k;_CzFF>;4FB#c8b-5$y-DFZA_JFe`q}ex7KpM=vllIp>P* z5pK6z8QBOGA`FT;Bk(-ymiilQWG$f6Lq-uqsenUj! z_H^+b;@xhithEc99)- zj@SoI9UuSz002ovPDHLkV1go*0Qdj^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/longovereye.png b/Resources/Textures/Mob/human_hair.rsi/longovereye.png new file mode 100644 index 0000000000000000000000000000000000000000..96d91812662e037d378409e3aa3fa4803007109f GIT binary patch literal 496 zcmV>v&7jTdA2rhil*|QJTr%!sm-GO+LaJfy~Uu$B4eUuhhO==75 mz6xrp4*&oF00000FT)Sw(D=*hSx|fc0000xJ`o z7G&klbU;H1 z`}=r|jM*7NYj?gsdL||$FzR|uXemQp+PYPC?Z5BbKb&S47oH;hdivV1LqQ?0|6E#S z6aUrxtKNcAMm;6_xP9;P=hWK@-i%@V%<`t}h5rXH%jW{gHC-GG4lY3Y*__?=oqAJ) zs%FewK1DA4x|0h6)Ca6Eb7Ou`x_i;I(tWG8t#u8(dw2SUP0F{ch3Zb1fB$y-OKHVU zx#NX9^QG*b&z{-;_(k;AE$7^AUoV~TYrEXfr@Q9;Sp1y1?EQ*$=|9i>oa1j1eg56s zj|X}9S`OyCzmRtBO39C!117%PXS5vTxoq+^wl%!w+r6F1z6ckTnBUKCUDRs*X~i~R PkTQ6>`njxgN@xNAlhUvP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/mediumbraid.png b/Resources/Textures/Mob/human_hair.rsi/mediumbraid.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae94a079d924aeed0456edbe4b8c87f12cbb691 GIT binary patch literal 558 zcmV+}0@3}6P)5t)cu<)Gcb&bfE_Xfxtra4$qd zZ_h5-h33QG9*KjH#38%DPo?Mc#k;`gP^$TV74p-Z#&4jz)1r8Nzq<&^Vzza17NM?<)(y^CNfz)eIf#D?dJaq zq82bs({g7B6KdHzuz9`R+;F=u$KWYlC2Gd+vr3ja=e1w{T6) zvmyn0-Wg_wq%(jJ+JYe9;c&=~<8Zgz<+HOh-e&!7x64Gt0GNo_G|k%eN%sr=exK*_ zIh0bcZ5z+e&zQ|-==FMde0O+}zwiDTO3SP!xq${kG1BnHkKCEX%(9+7Ay8baHaS zS(fSCPFtF$0Dw4-kt7LTUS5#rIie`Scs#CkPeV7r-Q69%zP^5Y@BaRth?<=NhGD=k z49sRTOs7-4y}jY+=m@8$r!Wkyrqs4^u^A4BjW33->oNd7KR@Rvium&Kl9#!*vk>=s zy|smw!5X)}zyGb z8zV|727tj}0L!w_Znt4s*53j(g+JFG32%O;w?RZm({v{rbDrlhGvnjq16h_K2m+X<3D5H|9*=*N>Bnn; zQVK+b$z+1EENQV=kn6fTYdip?X-cl^VzF3IS(Y@JOh80XN;Ot6s?Cs}sh0r)>M m2qAlAOH^?U3pgDhzz-)2@yx|7SA}u#|AU4F{?zFxtm+d&VcnATKfM3o~ z^ODv&jN>@_%{f=~ts00Z#P>=mSZn*pC!#O_fzNyxW5W8|uVajv$&JfX^SwVMeYu&T}Df#hHBfm%k zPN&m!t%wkS;dZ-~%4|klzGe)-Lo3Jjpp_OFV}jN?QvE&MHgA+_fIFa`i{ zyK>PG}C}k=|SqrPbi}x2!bF8f*=UT^B;)w Vi2xJeMq~g0002ovPDHLkV1lbTS^fY3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/mohawk.png b/Resources/Textures/Mob/human_hair.rsi/mohawk.png new file mode 100644 index 0000000000000000000000000000000000000000..daad7eb4006e6ad328083dad29dc09736a39f42c GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=8J;eVAr*7p-g4w?P~c%XkoD*P z^sg>SdpKLJSroVHRxcIgvD`mzzdy%$twgVX9*jUOAn@nnsr*lwk;fnWJj2>q{q0({ zXFlW2*^2(T^WG`lYYWv@NO~9}Dt|v@9xqsVLx_0e3BkW>Cp3G5_@1tQF6*2UngD}o BIQ;+s literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/mulder.png b/Resources/Textures/Mob/human_hair.rsi/mulder.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7bf0b70d941c9da3ad114e8f7a0f1d0f6991d6 GIT binary patch literal 491 zcmVbomDkAE=*9Fj5qFd93Y>GuIS-Ey>%8~A1+q^3qznIQf7{u! zy*}nOEP)u~r$M~;!xMN`{M6g`TRTEQLvfdvzg^rx(5m(qP146>k1oHJLj;j zD=wD{uGj0(Aw^0_@Ao@$&L6%DA>ekqb;a+x_*wC#6qIdi*NvLgEP(zIX~kRY5JLN` z_Yk@kBy!Ge8RA&H0?Q@Fp<^lqmRc)92rafPM}!bsjy<}P-47ux0RY&x?Ip805qa2H zF+KTw`v8n}zvp*;%L1tLzP-1D7}k*E9R5`sVte}>rfjX9bs1sm%HA0|e{{y2h=_=Y hh=_=Yh=}NH{sN@E6MtDcP=x>h002ovPDHLkV1mab;B^21 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/nia.png b/Resources/Textures/Mob/human_hair.rsi/nia.png new file mode 100644 index 0000000000000000000000000000000000000000..b767aeb9328ee84741ebbb700064571b5379c080 GIT binary patch literal 775 zcmV+i1Ni)jP)zy?Tf?EjlFI7)A~p6y_lwHJ-5~h0DzSFk^KI<==BHP z&O-pCRCum-of3SzSLc4*yJ!sn{RU_T=XY(0;q_5|AfJ9UNBqn*+?@i(n02`m0I6nS z=bR7#NlJP5+^dx21n(c7_vmjLE-37FyFu_CYE$5%_38)EM^KP==C8HY|4F4_o@a9X zKN|6fQ7eHlCTXqL<+ip0P>sAhdOJmJgj%Qf;(`B$Qq1w_=otmgalpH|Xbn=S>izs) zjFCp^tMiHS`Ib?zjRc4IgQG#`SL$djF6eQF%~Jq{@BN255VF>aX`0p{E|mf)<*oGkh7de*ec9i#|arMdt&~LTxzXP|rVu zhs6SCW3Q9H!Uzn*Fbu;m48t&ov(3mHnTg$Ii4V^L@1>&vzOzGA`cPIWHFmfWYMsaH zn3NcyH`hUBgzmIBmZogM9NpEqA=~8BG_AYBHTku+y$mKgw;5VYRp;3k%Avm{m!0b_ zWrN9gsY`izyhf_1gIcA^kaSp{i_aUdEX&&ruq?}u_Vm^&b!{P|;Mx}XI}rd0)8suR zdtFX&o@c-Uh@;BlTF7e_d-o-pD@2SjDaKf=&p8WM=OD&-*JcvIxuYQwIFMdP*fa%j ztLbd>z67?hb$hJI0Qu(RCm@xg55_*J?1a3n+x7qK^n4fWPJz5M{gVhGG>wE^1Dv7$ z_gTo=Zj3oR>G3QW3X{eFB!b?+C%2tp7=~dOhGCeo`~%^u8tPh^g zYw*3p8)UvAF>k_7=ItK>FDn;xD5&H;(7Ok@epqmz{PG{k^`VK6eJ|gsy*K?t_|+E;6;b)?wBPT2FXO5* z@7nAa4L9F+?5p{$Gm)QrtCNm`?Xt&8M%j#&b@y2{X7-m%mAz2?spL+zJxJ)^@wdjR z|C2MCm>+G-4Xo_nwJxyozO}xr{Wje^-768>KlSHYd;fdDbY<1u1*=}oonAlxf8MI- zpW6hkCoimN5l|}F$@_k0{^vL4OFzA}JU{>Y&d;44aPZ=6tAJJSrF0X;d120Sv&z!M zH5FDKWHgNLc=Yhz?-}1-Uw-#Sh;>Q5-CD;`_0py6vlmxdFw8lh&T!!0YvBV+1ts0z zm{o?b%rUiJ%eH#u3)d6n?SHn%Cvg6p*Pt|8`O|@tWG9Y=IS&{FU+!sNv(50i#8(c6 z17*8eKisa5UmKR}Zzz3wThy9uNpDu^|Gg%kr0=$RZAC(7twaBeqSwNLFtB&2Jnu~{ VFP_H_&j6#2!PC{xWt~$(699;?;RFBx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/odango.png b/Resources/Textures/Mob/human_hair.rsi/odango.png new file mode 100644 index 0000000000000000000000000000000000000000..8c63074ec386ccb7714e7d2abe8a4e26bb1bcd25 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC?dAaSW-L^Y&KYq(cfkY!BwY zi)+w+@-O|AXc5!x+69F{G42i*1OMkATWQ3@c!a^4-K)F!U$AD+9OFkXDtD zCtfZTbe?dSr9daBVp_|mCviG5Pp^7t%nsPE_CHH+!i~-A+hhJrjcUAEv+=atZxQ2T zY1`iJpZ)A=EgM7o(fyZxp6oVXc0HieXNTSIch}7r?9gTe~DWM4fs*}+y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ombre.png b/Resources/Textures/Mob/human_hair.rsi/ombre.png new file mode 100644 index 0000000000000000000000000000000000000000..0a29c9f471454605568461dc3dcef96f31c5e50d GIT binary patch literal 494 zcmV20BoIvUG-Deqlo0c!d8oz^}P3Q>${o{t7;Sxm>EI{?x*>+$#nqW z*|=7}>I#GqAR-SUAp|$g*MzGk)1QyOsxIbhseS`Qq-uU`l8%VX?H&D^1Vr!seB?^Z z4BmU7-&?TIf7Z9?znXwq{Cqw?6N%~gbxK014>Ow^0Cd(z3i?yvp8p21Y}xBywtqn^ zdO`>xgb+dqA%qY@2qB~wxidVCx72nblDpJnYpmw_006T=IeBzjCSgo&u&M%gm;2Td zs3ie0-#D-^D!V5^L}F=*PKh|6Aqma(0m+umEa`4_0XZV#05~(dO>0_MlNPn<_GaRqW6AbN2_WahG8#D+9lm#7#`M@il^2VeYV*>t!an*2~KNBbpQYW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/oneshoulder.png b/Resources/Textures/Mob/human_hair.rsi/oneshoulder.png new file mode 100644 index 0000000000000000000000000000000000000000..0224a26c35a37ccfc7ef3059a3c6cd6e760a49be GIT binary patch literal 491 zcmV#?!YA-RY|NgLb)oc8~uD3LAu03TS&0sM2*o{PNq z`Tp3tuDk9vI{t@6@b8XWvyNXq0Dn!@066EehyVceTZssqb4|0LMV3_!K#UQVWyhao48OM8{JG}~z(`hx&bFa>uGg$+AEq*PS z3_!UMy&JQ)K$jKx$U3|Mh=_=Yh=_=YhzywR4*>e@5wP4JP<_!)|Nplh1nc{wflC9MWk3i4DJ4zu44jKHrP}&L)d1+t zHK>Rn##lD$=C`#6aq@4gQdLu+Y=8!B+2L2(Q%<}4hw+N)DWF+!308Z#IW5fYEzMOA zKuT#!Dd{{P_ViUb1x9A$5Z?Q8m&jPHx5zz>Af*Hm0ZI|x4HF?EHOD&(5iNj~2_vP1<2Y&&a?Ylz z+enDt>bJa)uc`pBjVwSYu!xvXTvdJb0icG61{iQzgeF6H{KyWdRWFl;s&4)&+wt}z z@M`iYC4VnGe&`7J#PPM#r)ux}9vwSOM9eez_V4pWix4TmWzwy(18zM6s=Bqu&UZj_ z47R)f4n2XP`7ZL1$MIb49%z&V5H{xEMnhBviHD3s6<>3j+7=hEr=CfZt85pDE;)Ss?zYN3S^8G= z>bCTY>v~hNEPV#QaLO~~X|&|o`-AD3o>YVRpn~zNC%wB=i|Dr(fD0l=>%^F>^A8m@nk=bG{O_#zNmD(JAP;hn8b7P zseSf6%o41={+7D~Dx*G}9r>%vFERsK$xodH(T;dI&rkBV&T7fF-tQ^LZzb%GKXoc! zP`lav*IdH(#&ZAw000000Kgr(m8b)9ePAov61q@CE8wXA=53KS7i2aO`SD&TR2~=k zEKBvM(|h6kZ&bqZD}^&~L95C#`|los+83W~_L(H^&hlUP%)h|U$+i84e)FHd{uFA;I&rzO z{)^e4+O5T1W;wn*Ai7oSzuBkc*F{2{o+>%3lHB*zO$~oO|D^n@8KwKLy}WlTvTAp} z+voOm47Xq2{JJ>odACQk_`RERjc+(_`1W$*{XOUJaGlt6%HKS7K{X@Lm0*x?O!Gav z#CprWr`|lPxtDFT)nq@9{_|qF&j;ha`3ScyJN#W@cJ{Y(2TuG<%UN|-uwwnO!&%es z?t8Ci9l!eMrqho%UAXl({b-EXtqJM+wR}&GR;)5T@K?4m_47~ul?$UTtWSm7biluo Y!8&hIRQ2(j^FbDSy85}Sb4q9e0BL%c!T*bUMS;il;-Me^ z>unD9P8Mis{pz^5*gxq?>y@yA;4}YXc74nd>=l->=WhD`E`9RR?;;5zIiZ3}KJGPs zU~2Zfc(3X9DoGEQKYK)~j+Q6AaK-sNPitLF6n$E&>5>dd2b tXS;ifH-Fw;*6FwF>uk|dLzvMFer4jPRk-u+e!dP8@^tlcS?83{1OVh@YH{k`W?lyf97o9%4EK0^V@N=OnRmC;>dZ%BJwupN`KlytYBFElZok&r<-i_TLqAa Mr>mdKI;Vst093_?+W-In literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ponytail2.png b/Resources/Textures/Mob/human_hair.rsi/ponytail2.png new file mode 100644 index 0000000000000000000000000000000000000000..1694107e9c4e9ec960e8d7e24b89b5f3c13f7776 GIT binary patch literal 463 zcmV;=0WkiFP)zlD{RjdfBgXy;W*ltj#^alQLLSXf;)lbN{5VkCn9Es=bQ znWybJV~nV+r{n*e37+TqZl~@r$1%n%uQTz3s%8fn$C0|OOSb3lyb|o>9iNHf2VVh1 z>*OUtze#Wbe91BFsFwM%#D(YRo+4dA>?|K96Kr_O*GOQkG?uf1dyV00000 z0002+cbvMLy4|FRwLf@eT+zM&Gf%D^8l}|jcWGTQeEm5hr~u47`H~#RkwOG% z5w<(VM~fhu1M0e7B^o<%mu;Vp5^s*q)sOXXl#BJuP~25uo(PRG$&=3q+3{~(f$U`_ z#!@FW_wCHG=yZ95H@m#Q-#qF*Z|pMw000000000$1i$Hc%6?|I84~~i002ovPDHLk FV1gv?)TRIc literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ponytail3.png b/Resources/Textures/Mob/human_hair.rsi/ponytail3.png new file mode 100644 index 0000000000000000000000000000000000000000..002fb4d149044b372da9018086c6d0d93aa28511 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV6^jeaSW-L^Y&JBUbBIK!^MT# zGg(vpbFNx1v~Rm{ELXxl`>PzM>M8cm2?dKJ1Q#5cXxVl={OYS8@vR4S=Wj1tk+u29 zHMS*=X7wSefr9bp(td;&|Cz*Tk!!!_{WG0wmg0M_Y2-Srd!XnmP-&jj=C5q_NX$cg z|Ei-GtQc?WJMz7>XTA8-c(OqbSNiUCRRv%F&s96BZ)vozpzvJleID1XIyV_6mJ7R_ z>W+`Q!2)zO2)uZ!`u*)n#Y<}q=X+1Qw14vYq|36myNYKer9bNHs8uak@hW%nCHd;( zH>#!dC%1QQO}=}(s+55la5-vsza&Ck%#!gZd+>Za3m_;`Cx0Mz{B?5qrQpyuiew;)9 zjksUNzfNCp#jUmRd>qH8PpW(;a(yY~)8`s}RseFQX(A%(j4_?HHVs4*gb>krYi$~c zYQ*U_j$;iZ&bO4&3GgWwZ|fK<~@k2C;{^vgo6qED}dZ_`S!rUrDS zL2GSsyaF8&mGXU+K05%H%cbd>|AySza9(#6P)d2{99N?n%aWKo&k6!70Da$ce%^{a z|5>TP3V;xs9vgOLnx>MY>^ktnyq@&0000000000@YSr{ zQ}aYbT5C$T$&E2h_UO_!T;KO}yWPTR6a8X;o`^~f)7@D#{yJE2cZL081P#ML_xqiU zG4ab5eS=)1V2dZlOki(|mz)pp1+?fIIp?CDF(%qD3_~2NiN9X2hfMvPQYs|2RU;Kh zoj+o$+-E_^?c1MR@IdDS>FirI8(Gc1kY|Y?(Gl&b2QO{$%*K5QcU)`zaowTCCbnH` z?w(Jp@XG)AHym99HnXYWueBzn)Lyn6!lnQ?=RWOyf%f2ifiJHC0000000000zzO*U X8dKwZ@jnYt00000NkvXXu0mjfn}_bk literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ponytail5.png b/Resources/Textures/Mob/human_hair.rsi/ponytail5.png new file mode 100644 index 0000000000000000000000000000000000000000..01517619e60bff78668625510b151ae3416e72fc GIT binary patch literal 495 zcmVa>JCMta&h%^@7n=vzmOaYRI)>`_$7p=8? zoPOW;0wBIVL;sDqOzW4^Z`X=jYyD@f_2Q1gZz9%LN-gd=`l}KU^L#!5pfScY*4i); zRcPDR2XCzn6HyGm-4e~GMj3d0rIfU7D@rL*N>wexS#UwcZoH`dFaeeH(?YefkKc`N z(=S0z4`@=0*4pHH0U7|Qde73|)C3PC4mLaaS4{u_;PrZK?)M1T2qAUUJO)bGUIF;hggiY9%8a!*yMU z`~4n1F6UtqetXrJ5AN;ZYsGiP7&Du|FbsG+9+=mFpSMw(SR?i_`4RkcC#*?8QgB`a zuqcO8IOn`x5HN;e@N1()Ut#@<`=$3QNO8T=&|D1-eF~+BpCdR7n6vE3WWN~?G7Q?M zl`I!4U?(Aj1R$NRcjs36-*yUHd-i@wOs8#IxYPA3`rr4w}X-41o^s|T4z*FCK zBYiXCTCQ3FsyZ4t0CT9zBF-B(_-k#^T!X{v9LIRxCQA~X8_jQj=@R9n2 z5JCtcgb+dqA%qY@{u>^34qy*At<^dck$=Vjt96SJtI5zX3{cfn*Y(JRX-d0Q@T=rn zQ+?pi;On}Es-|mWvWr;iDk2H5FS7xq-79HAt}&;N*OxS^bpwkznyRL%sxS-#`o2dO z4hY>7riUafl>8YZfWJB2t+Dj^Srt`P&DPP#FG%wN?>(&crMz(Qh)j&pjU(^Fr;{MZ z?3_>nT7TnEeNMz{}DTN?Mg=rnti{-RBg(9FhG+x0Quhp&yQ5Ktlz~L zU1QzOzN!`xDI!t;EcaVZeagPITmA6b|MEJLQi6yq_am65>F^kDB|ue6&UtxGDb?UZ zjB&Fx&&1lV!Pn26v&+7#0&39a>V~bniio(Y@Y~}6ItOjp3U(_gt+@AqD{#gh;NjIe z>v9U%)2E(D^|^0wemX8c)|Fq5R%?UAm4a>Mcm>25 zgYCjF8NOmd0`R=~y|WZ{smIGHgMF5d{x7*j0!BMP2qA`2qc__d_6K RTVntK002ovPDHLkV1lZD;v4_~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ponytailf.png b/Resources/Textures/Mob/human_hair.rsi/ponytailf.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a5be266a8ee85e73de582f3ebf714548350f13 GIT binary patch literal 613 zcmV-r0-F7aP)qmYwPNgj*&?I!40K#{p zT0460GyOjt4hjIAbJ-Ykc5VqsR!RvW1T`Tam@yYN&bbUA*T>U#mjRS^t>7HI_eBnX zeA@2vl>Fg3n;&imYwe_<&2f*@b_eI&ner`4P4%a7H^=>dUD)zi3t+9yT5E(506-1q zu0jaVT4QtEBZPpy?~zjC>M}`634PxqgaB(TwALUuqhkmG&N*0X+2gY6g6#qT)MaoR+6qGu(psbIx<$6auIr$+rY6ZL<5pYX^R_{Zqb;@T zEpRDI$kkSOOAj_J766P_dusKUdLjxyc>#KmjK!GsQt~Oh)#O`UK)AtMS%Dx3f*=Tj zAP9mW2!ilU%=xUG0n}-#r+%WQVd#CNX*+&*7bs;jufnQ3LW>2w)auQo zp7K;TQXfiKYp);ydlUB?EpiZcXz2$(R2n%b?Dq`-fGVaE~hX_A%?p8#1$ z&RGMXIcL?=PE$%608J_BE8_9`dfKUvuez9sXi70)ZL$eD{qObwU!>~d)_!Z&wrImr`1$wZ_GnGZjj+__J^^-rtNzE@g~KpFf$&`t0-y?nVHmdPug3HbhXWJ{L(bU8h7EjK;@UH9q?SJZl{8H&|CT w8Pa%%YOm!##YzYvgb+dqA%qY@2q9193uZ>1i{y^^;{X5v07*qoM6N<$g4Cq{-v9sr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/poofy2.png b/Resources/Textures/Mob/human_hair.rsi/poofy2.png new file mode 100644 index 0000000000000000000000000000000000000000..fb9b9070ee40ef0b4c26053b7fe586b589695ea8 GIT binary patch literal 813 zcmV+|1JeA7P)dT25Qcw0y$T`G(NOyc+`tELom2V%+<+svrlCVZw7lYJ2=U8iO=3rR(tM3K*){(# z9%iNe2VllomZe&2D*#w)>#{8MJN0|bK92JG$2`wCUSo`K&JC|Qg0;3P zrI1o;+VnR7c<+bwPkorOEu};V0rNbglma0{yYBlAV+?Z60B~s{=n3~52Y?tOwAKLd z=|r3kl9HgcMkxh3XQY&%l!BBJLI}hd0bILzf|782>c?sT#;V}gS#ip2DFq<}NGajH zpQtKIDFA?!625XKAL%QlV2nX2r6qlyXGkfbltL*5#uzB2hV-8%z*<|q_mffz&bcY) z3}XzoZJPjK+qQ{H-#IrarQp4vu1W&w(*wvkw~E{M9YP35DcjLYDGljAO#m%MXH9F} zHcxEZHudjQ&?6gtrr-aMdJjE$A;g<|M)Xe|0pM@LvDQ{9^&_PeSZgcwfvYjbAcW9j zImQM6Ap{s>hSoimfW8EuK_xg8#R>fo!kaEn$)GDW#1O*uO|TDy&f1Zj^W_^qLffe=Cog%hjEKB!=(QW*CNH7=~dOhG7_nVHk#CzI#UCt1|&TpZXnrUDuj(ZcZ^d zGIvTETpK#@J>AXk5j6KRM?vn+tdkYi)JTO_Ypz zp4)r^jmxa-T1P7I_ecP}F-osvjOYdLG)Vikd(FNY9+|g~I6WdmXS<)opi;Zr6@CxW zq~-{`9*;{WL`bY(u(zY>XpC;)t5B);mN{|Dga|Eo9Dw*}X5dba^9cR7&uta?6J`T` rVk`{9Fbu;m48t%C!!QiP{6G8wanx+u3tLV#00000NkvXXu0mjf4tZ}$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/quiff.png b/Resources/Textures/Mob/human_hair.rsi/quiff.png new file mode 100644 index 0000000000000000000000000000000000000000..664816f1fb5e8bfab1609cfc881f865f72ce4b5b GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=*F9YvLn`LHz2(T)qQKLd_<$|$ z;objT%A1W8SyoNZT>SCB(4#{c(Lr~v2sCI;`m`-KGN>;4Pt6*w&d|=3I&o4|BV(*@HdPc_@#GKDypR;wr_won#KQaRC1A}`jEoXk6 zb=|w`=hB$yhQ}|<%~n{cvq|)~@#lLpUlwe)crLG+#F1!jX5Q*LH{sum2Nf(q zr7V{s_2N!BcrV{L>D9;Y8#$kvAG~|l?ZU<#dhZ){N8Ey&Z*xU_PHTolubGrG$UaY3 KKbLh*2~7a~rEhfr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ramona.png b/Resources/Textures/Mob/human_hair.rsi/ramona.png new file mode 100644 index 0000000000000000000000000000000000000000..e0e758a03e79d7950a2905f04527fad538a12f0f GIT binary patch literal 517 zcmV+g0{Z=lP)VmbeMM#7)2s76UK@eW*cBl%&QDZrc8zWW`ouAK-&LZ~)Q2 zcG`23s+M}5a|QsI*{)~pjbG!YlmGzpJnxGCwl{b^%nSe^BIS!)pF%`R&KW7C*7*jPR)=Uh9??6CR(;Is2)cF~4gZQP=}K%xe& z1rpOVK}32V^KErAwzi|bh#^*6&TU`5?$M8l*yXxC1;FNQ@}BMS0-(L^WwZ~S_jjCD zWjX-1cOKYSB2()EM5LwvD_ROPy4trX1I+AH7n@omv{Z|{#1v3fm|0s3mi1srb{1R~ zL;UnQ(AK0?;l^P_66N~*VC#yMBdSw~h=_=Yh=_=Y=nwb+0(KBwb)uxh00000NkvXX Hu0mjf(cSJV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/reversemohawk.png b/Resources/Textures/Mob/human_hair.rsi/reversemohawk.png new file mode 100644 index 0000000000000000000000000000000000000000..00d179a53ea550b6517f829486a3ae28542f44d8 GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC405aSW-L^Y)f+cZ&f}!$XZ| zuB8fp|Jz^c7V$c8E-|N&U9zKR_q$Ja(|=v{jG7y)#B@OGSVXW_sEf+dkmR1P>yOE= z72fkb)Fox!^F;e?ufwwoy)-w;pFbwwbAG#m`{#Rie{(#KDLwb~^PJBDPA|B_LjyyD z|L7<4y|4STsnvXymXgxF-*ve%^W_UQm)`&X{agOu7cxNSK|$QyRWIa3mCsLEcD_n? zvbkk?an0uz0Vkk&o3^a_rq;UFruM7am!sA1m&&ext+gua9!qh1M@LQcA2Yt&xBqwQ zC)_yt+H%XBHEVc{$c-P-KX3%-md OAR$jzKbLh*2~7aFp^e!9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/ronin.png b/Resources/Textures/Mob/human_hair.rsi/ronin.png new file mode 100644 index 0000000000000000000000000000000000000000..f244ffa78389af708aef3974e1e147b5c2d459be GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC436aSW-L^Y)f+Uz3Bt(T~@Q z`*$^MfAC6p`@0*(6U@68@@ix$1id}}fBQ=hrBD%G?)gF+JYDAGSS$JIzABGR_msPS zw$7~X{3O1mBA!+~^Nn}DulBsOi*OgoUoV>@mA8NyeGxA+?wuk0D R>D~(x@pScbS?83{1OV;oij)8V literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/rows1.png b/Resources/Textures/Mob/human_hair.rsi/rows1.png new file mode 100644 index 0000000000000000000000000000000000000000..b272991aaad3f50cd0d84b73d037e38b5f0d21aa GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=hdo^!Ln`LHy%o#XtRUcaaeeRa zLrZT@z1e;%r77g_3ID6rLd^*&EDt*;GFY6M=aK`u6L5-}^|$OX&}yzn;Doowjv*mdKI;Vst0NN#NGXMYp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/rows2.png b/Resources/Textures/Mob/human_hair.rsi/rows2.png new file mode 100644 index 0000000000000000000000000000000000000000..f6990cbbed1cbf21e0a1a901741da496041647f8 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=e?46sLn`LHz2(byNI{_Oq5tE( zw-#?#U(KDZ#1gpdPuusK0*YmAjk^R?7}(mE9L;X;sW-1l_k43+H~Y^Orkb#-=_S^; zFH~^upEqCT{wC%n*N-I6Z=V>|5c;mG{?_@AVcVoWZq9d1=36N57@Tuj`-ARgaswR%0t#oRHuL=FKY6QNDe{rM9!orP?bfaf zCj08;p3lF^D|$a@WBG)uukZJq-^}s0;cZU$bAhPFu&6f<>7TZ)J9xJ`PeI-Xf(6R{?_;8B&+p5L0&zWE{an^LB{Ts5 D@lu1~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/rows3.png b/Resources/Textures/Mob/human_hair.rsi/rows3.png new file mode 100644 index 0000000000000000000000000000000000000000..c546a1c40724c8b9d0f7ec7dbcbf84e67b3466b9 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=-#lF$Ln`LHy%orJNI}5$;_^cN z%_n!w+T|J6DBq>Xk;S;s^S!5(Qm^a`r{9KC8A3ixy0%1C?*5rskLPRu+no32{o3q5 zYdJfNYp0e}ZQJ?zuI>AZuRrI^5>>EO`}guYhxaAEkGV7dR!g_kzUO|sBG)2Rle2wB z&4hi8e5RE^>%kyk`O;<6#gyEyv+q8#--Km<>Mu9d#H>F%R7B+$+f8{P_5XQK>#g0z zdL>KC6K)pmb=xVr!DG@)&q;HN{~i-swV~>KnMImr-^ypnol3@^1BD)Sy^&kBDN$zq sM%Tx0Pr1L9Q=8W{pV2s66=q*`DSPY9wByWn3hzKdp00i_>zopr09>PgV*mgE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/sargeant.png b/Resources/Textures/Mob/human_hair.rsi/sargeant.png new file mode 100644 index 0000000000000000000000000000000000000000..f40150553fae5cd8d1122709a346235a42fe3ed4 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=&7LlfAr*7p-a0ATpuofG@bzZ> z>01rbf&vB4deoHW)Ggzz%k_)dFIw?@`Pb_S%I>c7Os>yS{cz?c-}FD9kAAuF<*KLm zzj-G(CA|8j4X%i?0F7i|STN0FPKkK)^u86FuJxZ|Z|O>%RBHCn*Wy-?MC8`#)6^X& hRlhcrV+X6{xXJjfkW-px{^z?OzNf37%Q~loCIHwrM=AU|7m%jbKmWa)4Ls;WW=0k7BV zugm)(k`%yEI<6+W_Gq0$RaKYF58z`L-dbX3mR~Bp4A%}3x%dA75fKp)5fKp)5fRb9 z=Tr|*yR-mctwqx`Z|?=(6-V+3I_a_nWsJcUP0=-LjZ$OGsUjrZ9{>Pr$pasq**iKj zTV3K|7@(^mMN+lOviy`_Q54AYd}^BR^$x$vIT!UlfUQQTw(gHeUI9yYCa-horS^_S z=$8sG58#gE=i0W-`o2e1RWQa(uPtng9R* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/shavedmohawk.png b/Resources/Textures/Mob/human_hair.rsi/shavedmohawk.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7fd83e60bc94a077ea5598c7f2de665022299a GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=vproLLn`LHy%osatRTX6!R*`q z@cnmed0nnK`Q~4+ywKcM7rs(GR&2*s_v1H8F4-*ndHz`8`{r*M3x8Hd+)I_&Q!O$n0?otZ5Nr%9{1FvD$95C`omXt6y<_-I&9#d#xM0R`rm2`5Z}|)&t;uc GLK6Uyz*|lL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/shavedpart.png b/Resources/Textures/Mob/human_hair.rsi/shavedpart.png new file mode 100644 index 0000000000000000000000000000000000000000..72dad8dcd1fffe5308bb238f9f8196712d5cc167 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV65(BC;51AVZpMJBrzh3Rx>Q^ag3=GE2tNfP!jO0#8lPKhT43V7*SnTmlzn&RSg1eq^}i_Bt=qo&t0*BrRPo7k6PO!1mRz@U z;?NflEjhM__n*vh#g>YwFM3P4A1Hk?75`AM)bjtFxqM=!De39<3QF@mA52`u#BgTK zE2blMEjz5|ToDz2WSG8hQqtr2|GIl6oNkDn3C+35pOCixbLLmx`^m;ltN6B7Gu2Ig zcKleU*uvve#V78odLWs}>$@u?q;yBCc)So$pq=Bx<)ssU`)F^Ekrsr5yG{9FT5CF0 T=l?kZj0y%%S3j3^P6;Dx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/short.png b/Resources/Textures/Mob/human_hair.rsi/short.png new file mode 100644 index 0000000000000000000000000000000000000000..9f730a6fd705d75086fd886ecd0c3bdab982c9ed GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=uRL8GLn`LHy?L9r*?_0@;S%YJ z-d~!@DNNtyAE|Zf+97iENz;-4o-34A{IKAv^yE0O+V%PWH4k?$yY}Bi>tFt!t;@b< zt1r+IGT;AB;M}iy&#mW)3LM_|vuKUB;7Y0eLDr1nzTf7xNF3UC^HJRsI}`tNm4brY ziZePQ&Q;Ewo4KP@DDI{W&>3LR(EeLTS8mRcTMIVtoVL|=`QhCR@mDV=tX*q*ZC3is zU2Gcqp<6#idaaC}FlExz-c_q|KVR9mx$0(4cTd!}^moq+Yne9BwlgZ>-x0i_{b6KV iu7&8l8JtkFKbY8eHkc>P%hyQ-iFmsDxvX*t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/short2.png b/Resources/Textures/Mob/human_hair.rsi/short2.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ce9e45e99696d51b2212518e12c845aa4b21bb GIT binary patch literal 441 zcmV;q0Y?6bP)Kf6nig-W&PdM(E{s1X2{#)f5qvfg z@{p9$PTPzzLGSwOeD*`W@OL{Al5dQ0+k*4ILc&j{)645y@eSTR56S-y=}1*o?y1;% z;9Fuy}r#)H$jXsSGsNVvhzba zY?V^ui5>f*l%n(byy+wqMPaqp_j4h}xS^eu&)pn-7`&_NI*Q|%`8vKhj;ZT9@3oH?FTY$a)b~9#O(U`_vrW@%S^>WqS(e!-iYQ5v**#k8#eLvbz?CL5T-WtI zZ0o^KGu-TfrCT2t8^FU%Cg922Voe5K`E7JKn!bIPA6;17{$05@<=|EVtk j00000000000B{69otmW#g7}G@00000NkvXXu0mjfT~x{B literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/short3.png b/Resources/Textures/Mob/human_hair.rsi/short3.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c69538b1f14b0aaf69128c5f8279490d42fd9b GIT binary patch literal 490 zcmVP=X<**C< zb52M9C?auL763rkbr{F-@V#D18_v0S0)7k;i7oU+WK-WcXRoiSS?mfrY1`L ztzoKPimPf=)#$y?M{5)HPZm$2^>3|{poqlMPqQHW1=4Cu6K=Ko2qAxwXr0D#Up zTrL;%eV?xxhQahnq)C1bL-w%DGXS6$!TEf~^?Kdy;cf4Qsv4(h%9DRr1put;iVy+- zAcTM;Phl_K`;n$*2Gs8 zjWLSf_eb|NNIzZ>X0m0W)xY~b=BWz&I;DYL2kWEFzO1$GEzbCRIpLv}l51#p$DMb* zZ5`LdC$3uMKhuq^TkpWyj+vsy+DebQ3$D*wQe|trJ3FJUW5VZz2}`F0*|z8(NM50{ z?}z&f+brX4jrsQLx0bcK#LIp4onQVoy4L7mz~2|v2`^ht%-eJQ{-u3;4~tv=%9j8- z7YzQ)*n5usjp04Tt?uX8ZCF2SX6pYw`O34HL#KUKGG1HvdSUAu{Uf2F<$tYgL>`4c zOcM+;nf(6QiECm}+OvMKuxwt^K4aT^t7Xq;Rw`&EWv$DPg&E9XrS~_weD}<^N7+F_ Mp00i_>zopr09s>;y#N3J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/shortbraid.png b/Resources/Textures/Mob/human_hair.rsi/shortbraid.png new file mode 100644 index 0000000000000000000000000000000000000000..6aeecb7c09d28e74ec96fa9acead54d934610c05 GIT binary patch literal 813 zcmV+|1JeA7P)EG5QhJd$S7W1tfttG%J2U~TWztcEvyvYRge|Sr#Lt#2@rAtLUiV9AP$UwkH@)q z24JQ^M1hFH(i*hZi)aW!h#-Vm(g{Hb5dh3`!e*`tYb}0BEi8{{BAN=1_Z3AH`Q40p5F*WjV{nsvVH$`D`1j zcEJBmkWvO5-$SOd<_JhSpA5q=48t%C!!QhUYo4JVUa z&JEUibu&S09lpQ60sO56001Eblu`hI*Vk77fAfS|>u}HPaMTm~0{$gr;=lpa+TPyY zu4b!G6Kogo-nWjewaBup-jyYyP!t7(5MfTHrVk-RD2f6^6h1#c>-MUuPPC?JI>_c# zq0R8WAnK&;o(?$E*V*4Hr3Ph=#_kE8HKvq;b1ret-EHsyT7ASYAFA;ZlQ%_UY07@T zZ+iI=8warx5i`Nu{@`xv7vi9TI(RCtjp0l9pl)xh!Yxv z4;@Xwv4l=aIj@fJSP|Bje0Z7&I75(9Ue$N?8qmGPbOg-K&(Faalk~0sKJAfS@k*%x z)DJ*w%fN(qr?A#u)ZQBbo6QE^`}34h-&twPHwsIogr4}#{5MZY$uj;9N<{J%I>?W((C;f@3T~E`_})y zGk2?MPSYp5&iKE6N;O~CuDJQ5@3-caUq#NMHN0#}N=i$o96#|nJTO#q>7FCPj^?+Y zxx{?suL_7^O_^I~c2~ze^Z@&5+Xn6X@z>7pV{%V@U!`j^>uv!5iD&0re5N++`nW1< zZqH>=i&XXP_6MVb<{7<=13Di9)E@SG&oNNmVD_g`;&1uCnilu?n;#zbP0l+XkK5Sgo2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/shoulderlen.png b/Resources/Textures/Mob/human_hair.rsi/shoulderlen.png new file mode 100644 index 0000000000000000000000000000000000000000..029bb6927985c7cfcd98099c8b36f1a5c893067e GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV9fD!aSW-L^Y)f+U$X%ZYl87C z+4dK=i~s-Lq5e^4mVsKzEi03SSNHfk{dK&;r=oCGY~lahESqx-9jmw)1O)@HUc1l5 zoba@K?Z^F5P5w$nrOp4fSIRNm2rc~_dn(nVX7;6L%*(!4zLt`2SlYdzvefd+vD#YNccy6_gcJ9{-MkEhF!&if MUHx3vIVCg!0020?fdBvi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/sidepart.png b/Resources/Textures/Mob/human_hair.rsi/sidepart.png new file mode 100644 index 0000000000000000000000000000000000000000..622c2ee23a23c0ca7ff143b6e1a96ffe9f9cf12a GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Up-wMLn`LHy%orJNP*|r$8!}+ z@BL@671?(psC6g9;!RKfR~H3--+JLqYbS&4q*ZEyofb|WJ^|JIdL3EQ*U=$!#rXKi9j-k|hLu5nDU+XZTKqhJ^Sg6VbDCPE zkdt}><5pSuD!w~~Tf5Xgi_C~Dwl9xinE1=@{#J3Iv%sL?Ywi5AtY>l%D(70qUX8oTBhYv8^1V@rN}`~!)2y85}Sb4q9e00n%9k^lez literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/sideswipe.png b/Resources/Textures/Mob/human_hair.rsi/sideswipe.png new file mode 100644 index 0000000000000000000000000000000000000000..da43aa0dd5376d75bd9ee70203155f3d43b19c97 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=M?GB}Ln`LHz2(T)V!+`LXmaoW zsa;3imbW%-Jy+k!EzG*))v}I1JC9c0mlIj;?!kL)_NgU%KiW8DNA#Y|KA3&p00i_>zopr0G8covj6}9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/skinhead.png b/Resources/Textures/Mob/human_hair.rsi/skinhead.png new file mode 100644 index 0000000000000000000000000000000000000000..d41090b6dd711121d583d00a55789bb232feb375 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=eV#6kAr*7p-g4w?Rp4QD`1|o+ z__eF|B`!8B&6so3lZk)UuGc09m!CENw$AZ6&)NU1E%LSB#ird4+F5_2X5+QfHeCfgH`%FM{fk1N6Gv;^mOm*zD>=taf<{eSz&FJMgQ#Rn#D!oIO s9tuT%`_!R;Sa;Zw3-U8x#y85}Sb4q9e05m;KT>t<8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/sleeze.png b/Resources/Textures/Mob/human_hair.rsi/sleeze.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5505dbad171d66e198f523b3fe38ed3fbeceb0 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=&pcfmLn`LHy>*uNkO5Cy;$gP? zTsP~t_X+5^F3D9ASza1YDZf(O`@}hU@!LEN!PBM$dsVu?!TzD~QatFDy!-Bb>! bK?R${%?on=pIZ6EA0*=G>gTe~DWM4fwxM^W literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/smessy.png b/Resources/Textures/Mob/human_hair.rsi/smessy.png new file mode 100644 index 0000000000000000000000000000000000000000..25d5e49efdfbe1181d64059057a206145b2d45f7 GIT binary patch literal 382 zcmV-^0fGLBP)tV0gv{~H$51KB8zF!rxD_#SUxRqsSqt^vm4y~pSAD1H8z z00000004lso}Z%y=iGN?+cw*=IOoE#SobZ-Bk_G-;<^B=l91aP7po+^3qWjkW>gcP z{fbO&n>BKA*l&*3c76w%39uf#N`F0Wjj8$z2{<(qv=VUD+8;8<;s#2+dsPMi00000 c0Kk2H0Rk4CUGeAyQ2+n{07*qoM6N<$f>b`O3;+NC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/spikey.png b/Resources/Textures/Mob/human_hair.rsi/spikey.png new file mode 100644 index 0000000000000000000000000000000000000000..46475174a5f159994d9e292bee08a3d4e690726b GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV6^mfaSW-L^Y)f)-w_2K)(6L@ zeOXuAeWxY(S;&=lnK#u^giSUJO=!9J?zfcNGzsf-{>cndlhW0~uRi<}&s@EE71QKd z3szY!HM!F=kL}4?2AOc1D;$C+872fZ%~V`k(zQJ+@4&}()1UmPl*&s_3%L4bZ+pjq zYW~o(Y1h8ipXH61#>x=Wb8+U(ZbK`EyzcvYEgSxSySKk*dx32Ar`fgdA5GVKUw5{; z|81IysjWK>0246bIBN$_R-}l}a^N{?eM6gl{^E_kyYOT$luS7ndDVLPU|CRIMVHkWU zG<;P`p>{M-KJaaP+qMYbm&h-Q0If9uV45a`&##IA8c&>a#Sxel0W{t@hiRIil)^Mk zaLz$%jYsn_MLqzuZ42idfN$gJj1u`-4j}V9Lu-w392;wG6Xszpj4{6JIsiW_?wrH% zcwC&(bzQa-l0$~8&#>R^cFT8%VelNUnF_HDP-~6-evi#&10a7ROpX9+ZNsn+jR%0; zZr3m!YVQNw^cePBeWeu6=X3UaSt+2k#x-f7!#ZVHEv92qNKOG7O5@oV z6t=1Wz~ypDoidyC-0Trzvqamr%X2Ds9l*wjFt3=0YvTb_tq{lNZrk>svOV=nNrSr% z2t(gm+k_z&^E8{7o{dr}Y7qOCsHe5IQA#bTaF4qVU@pOJ?E8dkxj_VgL%2UYwj5%Ph*U_6m*-uo4rlZB+5-^*PI_pq=W|3< zP40|Zgt!7=72WmPX<)5oYb`5vh&F5Oe6-f`soJzg(ZUfFs8tXVk%0(nJK}3p(6a%Od#sd_ZB!2#0<&CT$ zMQ_)w8DEsEyow5fAP9mW2!bF8f*=TjAY4fHDz57skNpUyH8A!gJUq4lP=94OEWW$qraEUR7$6_}84VE;*aG$zc48!m#+hL&> zz_jLM*V?(%+seHWvik$3t?H7xWOGSl#!c_$E^|Jo0N!j0xX$r@_iG+kul`?++^YZI p@U4v(1VIo4K@bE%5ClQEgg?uJ0e9j3_x}I@002ovPDHLkV1oT>807!} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/stylo.png b/Resources/Textures/Mob/human_hair.rsi/stylo.png new file mode 100644 index 0000000000000000000000000000000000000000..e221a46e86b35d3f7a77fe9c3f054980d96e5638 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~KkuaSW-L^Y*51UW)+_>jQW5 zwB{QN*AxrAs~1{lFngD@P^Hr^=Qau7uXdc8KGwZ&Eu2jmJ7%>An6xbTz4qUa)7LM1 z@%Xk)GhgbtJ=d9oG4sx^?|wnn%O$JN%$*$0uuI2VZvQT!^k@EtHzFR~Xl-8-9I&@L zz;lPrp-g#R#wCS$yK`^1)pGCfTpNGq``e~PU%ljVBXa-7KiXx-a7DOOv%&Y8*r88C=Pym_Xk!#p3CfS%aC70)ZL70MLb^dCQ*n>Tlv z=km;;%}iQKQpqKji^T=!KL7bL!^b7ZCU#}V6Qw29KV*93l03t;JiaSUSv{|7!}@=+ z^L8C9agt|V@a&^%Nf!CNFW=V;$smDS%pHG~AtAF+2#;<-?H?N&k$r;-p` zg1w81L~_$svzn+s56}1>oAF={GegXt{kzP%?%cKa6~0z#d-dDqkNrg}W#t`qeXl;t z)LSnS-T!QJfUv+s28NHz%N#a8`0=*Io%uo)CldqP1A~q-x9ona1xxm>zoTCxU0hK& zYuTh9Q?$R@2kiQ@DgD6ev!83eKaq4bIA0uCT`DgsdsI2@??iVOIQU|py4QdEwYJ>b z59ZuHeWlPds$2N41G(=Ff`sE~4lxVtX1WCGSnW}!%xS^g`qg=Jj?n3&^~_h~F!nD56xWlO+Y zYYOKLk{(IFmGrf}oW-t^?n%Fs^j&hJkAgWC+I!a8FW1&!8W+3^{Vw#2@;?j0ZyF!^ zBB>9pG=34L@~>)Xz9gNJu{P<~&YxZ7+FyY==Pcxy#$VC0@m1FT0&}Zdb@k)@opZ5& z%KEkQkHLF?j&IyKXWsksU)Qv|xCn3g@Bjb+00000001Sn?4|XZwy5J4`Q^#Auhxe) z%`eI>U4Z!TZ8G-QQpi8amNcHu7#hi%X^T27uC_EIuj9Hy{uJ8mcPiwmtd?PR!YcyP z;Oc=3>Pc%_JHOM7;5~3j5>z5#{=fM S&0X#Z67qEQb6Mw<&;$TSl8>YS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/thinningrear.png b/Resources/Textures/Mob/human_hair.rsi/thinningrear.png new file mode 100644 index 0000000000000000000000000000000000000000..dd40f75e87ac0ff5fdee1addeafa188ea31b65a6 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=;LpaSW-L^Y+%k-ev=V)`#v} zczt*+4;@Y2(KKaB*^5?>>RVBJ#P`f{b?o%aneeGzC@9D2UImY(BBT7;+ZC}@kMncS z?)UsPv1FP_&e{LBB=(uzU&LAW@&5W})6EX(?<-z-a_;(@Epv=_?A$CJe!pew-TH5T zPXA1s_H2$y=BfF2YbFLi{4QU*{hRUy&q*_%e%v6j{g3=D|DKPN%I};B>iM{--1qEL zwVEf77=ca(gD7cL-?>vhUDT?WXnA(4N$J$+n)~0+&e|}^@~o+;Vb;cq_!y3bQNm6f z|7X=K=S*IklRy1--PyUv7uGG{Unlp&#dhDaORv4-C;XVq_r=KRb5!4k&))89IH9H& ZnC$=FAG?!d+mtSlh^MQc%Q~loCIBx9mlgm3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/topknot.png b/Resources/Textures/Mob/human_hair.rsi/topknot.png new file mode 100644 index 0000000000000000000000000000000000000000..d75299912e406ad0b62180e20c7253b574812681 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=mpxq^Ln`LHy_L&#Sb?YEVa0?y z|81Nx7+O^}y_&4j%nkhTG#bEFG5-x1`^{SyY{Oqyk_W=TI{cuQ{ln*n& z4&yjl2*Fg<^7lQ@KU$8jsun`9L;B+Y3n7?@TusIi9moSMKj(fp;7hUHXE%)FXv?wy z08&bbF(O_r=vA?t&*)X*y~jLFushoOE(h2U0#ZtA{N;Q`CxWi);JpU`^nH)h>GZh% zh=@7BRMi}?9_9IRMLb&Bei=6(<@pxz0sNnY?L_1y*lO_EcJjAJ)4}K9wO={!zm}8m z+2G3`W>33s_uLdhuoxo@aMLuoVHmEi=e=*hhii{A3=gznJD3s?~#lG5m+v12r z^7H@HVwRK8^j%b|&e$d{|x0mJ7T%tEBED)I)PWt#lLdjh=_=Yh=_=Yh=_<@z#l&DRL}L?pG^P& N002ovPDHLkV1f-g{p0`u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/toriyama2.png b/Resources/Textures/Mob/human_hair.rsi/toriyama2.png new file mode 100644 index 0000000000000000000000000000000000000000..1363ff73fce0ce8ba4efd86af950781fbd82f542 GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV4UFT;uumf=k2YtxrYsSSRX8Z z7r>jCmvHX!)Y_A5mySwrXm4UmUg9t{WYffb{2Yrc?E4qy#;QDEJ-z9M_Wk;+nm^@M ztx{8(R=jQE(F(tFH(ic|lxEn4T(z-zp2KNiZ>D7bJZDuF=Z@8fr7vFHq%*C-_Revo zB+d=@(hq*NJum&fv}8Zmp3fT@H#Xc$SA6#SN5z`2=Jru`dvc}ILM0}6X}&a0pAs~Q zF*EGww%oNpeV1k4I==n(+jl>I)S27geXabAVSdHmp5yLw1a^yGEc&DW^KDs9(|$Qq z!TDO}EI)qK|5qcT{%~`)q7n=&+FtUluHk;h+KrjH1+n2B9i1okxi5J7+qQx??)t8E ze-Awp3Xz$Av15mc+;^=XCtoV*dCSh8(2(fcG4tbj`^`aDO1O7Kif$FT5@p!Qz@R4B zli|dqlXfjC(EH$;Tjmyd-krORlaB9>tK&Da`5%}Yd&pKJFYu*M$<25O x{)t&OQJD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/tressshoulder.png b/Resources/Textures/Mob/human_hair.rsi/tressshoulder.png new file mode 100644 index 0000000000000000000000000000000000000000..60e92702f764eebeed37a48a55f272b911330710 GIT binary patch literal 578 zcmV-I0=@l-P)~W428|jo!BCIi5R-E@%|4|sjrYFQf7uIcWA>6v;|C)fQmnvhw;_KyFPBKX|-)TEA27T_IP>r}TY3P}J&^r29#^;6M^n0*$^3B4u$ zFXhM9T98tL)*6g4Va<7KEdT&WDXH;E2q8uVYOO&jH5_k&v~dU_ymRj5b#-0)zVE>~ zmvb}pLWq&jN~xiEYi;iMFgwMjBa|t=hr1BN3laSzcJ?Lco2HoyQcM7th!K4zLD~a^ z5YYGiTynXe1*%tZoO4C~f&t(@%@=0D*W(MU^~2-awmqi^P1E?x<#NvABhI@IoVIX= zVHk#C7=~dOhGCd*A(=k_pqxh_W&C9RfTizJkvcv}fKn!iPvTQ^Bnj}!6EOWgw@7Pp zps>0(7`j2h3jhF5z4?b{Ae#WU+bwQ?`#63$e!Tn0zc34_ISOz$K}qhqc0D8D6EFM)?KVo=&SSA}A8n-bm;i*2nPiVwN2f$R{GQVy;RV@!pJtEXEI z5OK5=j4=R&x~PeJL$xvgNqDzWB$yuYO?H@{W#6by8W`>lVz=YG#K z{=aO0zCJY8uM7KkfybhI?aT?Xf8Oi|x(Naf9G85@^R_fmIVp4c%NJHz`%Tw=dU-Q9 zdf)A~RJYZ){#9Pub|Tk*Kl8Ti`8Tf`O_~3T%cUh}|CcA}l3dvg{B@Kmhlxz_VM+i}36O+Bo{F*2hcs@M- zV8+0klZ3ofRaLK)x@a@T1oic5`Q9&St^2lZ(RCdFKnMWWgi;D^+d^yI`zo+he%E!2w_M#GOuwJDrj&&#^NG(|H+-vGLBip)Ewdw*!E)@#Fu8!y%z)hz-qo z=N!^By=wQx%K>B0&(SnZkP?rgltR~aSH{y?5Q29EtTocNm>Lh@>c0;UJK)h3Hr7s{ zweIV>9*lL)4bGr-pss6g`9W*I9Di0^1Ex_xP6&yFhaGV5kn#6)8lHQ06wv;kWf{7z z8w?#AoMl;1-(C@5txfXH2C0-62BuQ>`DO!aZ2~<1SWNxVLPsG_(19#uCkUDX({NuS z{FPF0&fPRJP1B&Az}o@V+GK7OrqPduF(%n=w>Tb;vvXYtfubn9qi?k@xM!iY?&-WC zgc!~R+wC^~$Iy4c7?Tu5anTlP{C|zsx-ZMJkNpM8Fbu;m48t%C!!SRPMfU@!SlTpA zP&z6U$_f=lG3d~?E%y7pxBNx-11Kd$tl@-lN(}gy7861Q-4XD5n1oXif>KjdF$S&+ zr_Uw`4xAc03tBr{g1d zIe_Z#)3mgd5_DIIEXoRhT00oOq@NJT37^(3>c`sw)3Vf*m<5u1 zec#h;trmZ;& zREiq6m1WuIdHym7FTM?mb05wT^z{S
2!&pSyyx$(zGM~2s24N6K+j~a)yN^NJbka@It$&{|F zmaPr5{!9sC{E#daTPpX#lOd{RDob$Huj(^RhW|bpb#xzOWUzdG`uA*6!Iya*9tR#7 zRm^HIdwZ+&K)Um*y8AEQ{S;)AepGUO`wfBYp5%zC=Rpyb%4>BRtskB~zq@B*@v$8| zI(N@D+&yIR>qUCwQ3jv#+Q}>n-dF5S7ybX_)4TOiLSIY;;o$AFP>I}gLY6(0Ke0u)t)WORN z(l5(o!rIkJrtKA8=>0VJZ@&KY=_kwis|=L>+)jRXzjQ_i4BY$4S{}LS?7XRST7luu N;OXk;vd$@?2>=q4#TWnp literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/veryshortovereye.png b/Resources/Textures/Mob/human_hair.rsi/veryshortovereye.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4a136161e1351a8969aa94e328e44a487479dc GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV669aaSW-L^Y)fw-eCm+)(h`f zS@S*I|NZD3VO83lWEo{#4i@Alm4aA|$o>|({~dLRD^^a)(>zg$u;-?!|e=dTN# zv#+bPmwj4r+2m+L@gx`HYTo0IpDVpL?d)0jWqNAo<9BKEQ!Cf*yf5gkK5vm_g388O z2hTj1b6WrYqd6Cv&&TcVNS!z3pW5A0l#oX?*cK z`rN%#;w=Tw`FY(pQ$nS7-h0s4&93+IWXfs3%OPgF4L`{_+~1kNW^nw} z>rLKIrq7jJAGKgkc~NE5N41q2>zw;j?&w_1ogUHkWNZ0@l1s0*sr;LKZt{ol#pf^l gFn)?~M^TmhA@5rukAu8afic41>FVdQ&MBb@0LsnO)Bpeg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/veryshortovereyealternate.png b/Resources/Textures/Mob/human_hair.rsi/veryshortovereyealternate.png new file mode 100644 index 0000000000000000000000000000000000000000..b166fa158020052d12df2311db781d4affaac7ef GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV9fV)aSW-L^Y+%kuEPovEDt)@ z9cg}``u=|(BmY!|cdCMqcX2Pfy5&ucfKyK5m;Pk}+ybVvpIb6%^#7mu-@D?@ZF{}= zEp65BFK;z`R^s;DI`EnHQorZgKYdv>a&NOSOfJs*bnkhqgcHX^w)cC_b6@nGm3M5$ zrd!I>98ZONxhlGZc)2dUav`;XWnKu^C0%>_PfR?g*0cAnva7TEG4Ge^j!!%@vU>0R z&Z=e?Zn#yof6D(W&L7;KCb)~v?|_3BlVfY=%P}5^>K1UyDmlknX+J;zu&3t6b*~F8 zRrc?)=U=cb@mEpxv3U2%>yN!ZzE}7{)Z>p82P~)CO$ple%v{@8tF|*^2IpGV6@34G z#5?Shsp3>zV)H!aRr58gtzSi^r|wLBH9gB)@pZI$rGwp%hpZZ#{A*uLi(tEF@x$5f zx8B)f%iexWo}1cuU~lwg_cE!Hi^ugAZT)s`cih(RFW>%hb%B8|Vfz@x`uBbMp0IEm QFa{VrUHx3vIVCg!0Q4Tk&j0`b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/vlong.png b/Resources/Textures/Mob/human_hair.rsi/vlong.png new file mode 100644 index 0000000000000000000000000000000000000000..86631fba6fb6743a481b501e1d521c56c548f2ed GIT binary patch literal 564 zcmV-40?Yl0P)V;=5QQIA7nOW~EdBOb_69jj@02@rnFEZMT~$gK&5kYtE+M!nBtU=WlMptR{buk0 zmIpxj-_|dHKoXM(Y~iy?AZg<^5h>EYD;1xd^8hfCNuz2&(oP~LZO)b^`qsD- z3c6!os_K)pBxf5;&{kbP5<6k3{g$L0$N6~{_a%m;#+z$v5{4nyPCQw2!05*O61;Hz zme{Cn!i6xeJ_O?MPu024%w7eCVMw;Oc>AMUa#Ktq7b7%9RtF5jfYoZ1ye1-MsdH}3 zA#n5n%tP}~U3s(FG@s-`4DjMY{oU0sB=_NYPy4D9d;`1(PS3|Bb5Qmi(3#yN;=}$S ztX=!Aqit;M!_2yctuxmJyM;;W~WM>q*rT@Ad@dcB_O zYGMUcUx|LwTVLWg*r+Iqq9}@@D2k#eilQh=KRy6~srX=|a@8gP0000}90c0RTfjFoNmSZR%{*@)=!6=0azG~Tus zh{&Cf1~VJ0gB`K^9K^RFiun0fRh0r@s;U~Y+`D*h;R#9sC)9SRs!H)2@Ar-I#!>i3 zm`6_mKm5DK&^3eq0`vL2bAF87cZ;8oR}6a-(adGixh@G9C#ZG~{Ce$CA@s61{?sH7}lVfX;0v;Tr+xsCkD7Xep%ZxEa}>a@v4rn*Wo>IJ z&-3W5x;)Q!czcbZ06du;PKXx?t{~q57^zWva&j_5hXXt(MB{}p$M~^P zL^N}q?;YIeO;BHez3yzrj3c6uCH6&YsM`^C&n@*O$N_E(dbA^9J+QjilWWoN^FB!u zLqt=g0EkFg9sE=XStmFG0N^ywtr8)hM}v|CM?_FSa0K*rfZb_I5>!>yj*G=2NZ`I$ zEEf22e%?MSr9epnwbk{x?>a#daGK{>uh(t*r)i3!C?+WfMNt?42WgtxDMLiFCOUiT z6y$)iEETXdoQNhf-cl6B^V8GQ0TCfhQ&pCwsq6Y6WQ{@R1gAFKWw~5F=Xu_4WL?)m xMR1Sse5NfD5QJw;rvdUHtD6U~7;ABgLy`rUKq*CC*MTv{?)Uqkdv8RaFOy}Nt*YwV`(YSzI2^q6|M-Zz zc3sy2KqvTz&%Kjp!2?uP<*h$z20VE8JNsLCWsO%=HO&lYc-Hx3!NWbcFbsRwt{sM< zcktkufM+8x$5)`Ls$Q@zDUE%$uYiwT5ClOG1VIo4K@bE%5ClOGehH%s8Cq)#_ksk# z>2zYV**q+ly$fTEbvke_g#nahIa+hfi&iNGz;d~4jjPoPfb;p>)(+o^Qp&E^YXB~n zOKZPguK?6_4I|~_1CeerU7xWG}tc1mt;cqbTZS*lk3gqN`sNMG!?1d7e-6CE9Mcw%eXe x$df$J?a;SR`XdN}AP9mW2!bF8f*=ULoG(*T28V6>{0;yB002ovPDHLkV1iK(754xD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mob/human_hair.rsi/wisp.png b/Resources/Textures/Mob/human_hair.rsi/wisp.png new file mode 100644 index 0000000000000000000000000000000000000000..ddacb26468c7dd62d69d6c2509f549183320903f GIT binary patch literal 922 zcmV;L17-Y)P)B*66vzJ#2Z55wlw80{Iux%3b3Qa{TwZGEj9 zg?PW;2j_fiBXsnGAi!WSz|GAK7-QP{$~SqQS6*CPY@DA?r+aaN=XoXP9KP>kI2>Xy z7~tvYNn5|OjWO|jj@fL6Fboj{!P>HH3(h%?j*dVn1pr)MU(0Jc`ae|uJRXnBpU20D z=X0dXrHuV*K4_Eicw92Z(CKvW_Vy;vhhYdp2pD6^V=AwJbh%ucJn)_bXR{fCAW$|y z7u&W009RL6cz%8cV+@24<#Dt^pf2l+WY{KRl0{L#bzR)v-pXr)5F|;WJf>0zeMc_|l*#hMd(y&k61sj>ko{7G^p08mPCd3lNZ`+ERDk|bEIR?10G$pMSS!YYcQ ztjo4VQK)JwW7~F_WtrtTPANj*?(Pl%uv)Dw+qO$pCuoJh$E4?ZUaeDhO?7g;UJn59 z`ud8Klar0>P1$N26nw>-pulxqJU%||Pw-!R?LOWE1h#FLlgXqMnv=<-eeEXu{l4A_ zfOjYC)9DAvw|0Q*y5D#527|$1Fc=I5gTY`h7z_qY8h_6I*pTq?Tb!s1IF8d=ji5Sq zoxV=fM58~6h6DhJq6mz!jY6m>i?v-K5tFRbCxqbq{9OKSVoT$~NSdZd(^O7AiXs5- zrRgY&v?{Z@5JC_|5yCJ8@cvMOAOK@b+S!y(9Z-GxqWW4DD2f7^TVAJNm(KrN> zBtf3%0M=Ik=X|f#Ac5!=5(t~}JXh)y_|ySemRX`9K@i6=PDdl@<*z7?3e7MKaXK0y zj$?VvbzKxivD+jFKn}_|N2l9uEYcR@;dHuPaL(m#6_i2%Xm_9AhU$C3PD7whNL8e5 zge|T2304ItrIzpeUs|1Y9H;bsAJv^f)d`IqP}hTZ2&A9Xf(>IOq2Cvk5)uJ@!8~-sb^y!*J25f+bLhH9(u$GP7o0uv1Il1(~7@zuP^Mgn7;2l0Nn5Qc+NQoV+?M$Ti5r! zzh19(G%U?>%e{ax#v5Z|6c}SX@NiB|Ua{gY5*&X%pQ~$oyTRvZ5e0-0LI@#*5JCtc zgb?yK$-L{2Z-!gf1T3MnQe$(X4kxkk zq$$;TNWL<4LN!BWWD}%%V$`+mXahOV3l8$kJ?kqG?&o^ENW_6@GGwm#EDnvpBi0(i@Y3~pjTgY#s+1($SL<0-BQ$j!ycv#R#@E`~O;Q)+)A~Twt{H_tcV3M)LbLxg zFWr^S6-`y5m7QXmh&*9mDl#7|wm6;JwL#Fm>95KfON75^X=J2zK3&ebwZB5HUw5->HH$x zWD?wtGUptaxoGsM96&_7&Tq?W@~X2TgkmQgCE_atUQRU3++=OA=tLrl%p8emJ#k!QiRF$S7a91KT1E?PYw`F+)0B;xqun;H=f&T$no!(`Q(ww*MykQuIVHk#C z7}wMC56Nj-XXOW!wso2QDft0F(;R_Q^-swU5Q7@z2%N5eT7H0()#hw{wFA1Y!}Ixk zS@w85sym_UI!x2lA$ii9`~Vf25Qxl-d7l4y!%|jt4w&az+Fy0jjxQfb4~Kzj4v@Y0 zd7i&@L`AmF-8nniBRIri2gs*qaYBkXBY8S4*=cU=Q&s+fn8w>M3~Rwfod@uD?oiD< zrI#C#!!TU>Nm?>QWN#p`@er!~fYQDA77$UaG78e%oSW~&RLf*3-ivR@`-Xs)!z)2c zNBLbLa2WME!1m(r{RU{l+dIH848t%C!!V5B&nK?cG`Acae^&qi002ovPDHLkV1m`} B9*_V4 literal 0 HcmV?d00001