From eb8cc29fee90dea2ddee826388585c88c65fd34d Mon Sep 17 00:00:00 2001 From: Timfa Date: Sat, 5 Apr 2025 20:14:44 +0200 Subject: [PATCH] Port Thaven From DeltaV, Who Ported It From Impstation (#2132) # Description https://github.com/DeltaV-Station/Delta-v/pull/2948 and a bunch of other PR's --- # TODO - [x] fix markings causing a crash - [x] fix displacement maps causing a crash ---

Media

![image](https://github.com/user-attachments/assets/ad449fc4-93c7-47d4-8db7-c53da765aa51) https://github.com/user-attachments/assets/033bec46-24c5-44ad-8e5c-7aae2ed85b03 https://github.com/user-attachments/assets/6fd647b5-2ee0-45e6-a124-9b90c35e2153 ![image-71](https://github.com/user-attachments/assets/bdb7b129-a1b4-445d-9b1a-fa884b429ad4)

--- # Changelog :cl: - add: Port Thaven from DeltaV, who ported it from Impstation (cherry picked from commit 86a8e4d940eac038505c66a1649b376f6956cade) --- .../_Impstation/Thaven/Eui/MoodContainer.xaml | 30 + .../Thaven/Eui/MoodContainer.xaml.cs | 22 + .../_Impstation/Thaven/Eui/ThavenMoodUi.xaml | 22 + .../Thaven/Eui/ThavenMoodUi.xaml.cs | 94 ++ .../_Impstation/Thaven/Eui/ThavenMoodsEui.cs | 48 + .../_Impstation/Thaven/MoodDisplay.xaml | 14 + .../_Impstation/Thaven/MoodDisplay.xaml.cs | 36 + .../_Impstation/Thaven/ThavenMoodSystem.cs | 7 + .../Thaven/ThavenMoodsBoundUserInterface.cs | 41 + .../_Impstation/Thaven/ThavenMoodsMenu.xaml | 27 + .../Thaven/ThavenMoodsMenu.xaml.cs | 27 + .../Tests/_Impstation/Thaven/MoodTests.cs | 96 ++ .../Administration/Systems/AdminVerbSystem.cs | 24 + .../ThavenMoodUpsetRuleComponent.cs | 6 + .../StationEvents/Events/ThavenMoodUpset.cs | 23 + .../NoContractionsAccentComponent.cs | 10 + .../NoContractionsAccentSystem.cs | 26 + .../_Impstation/Thaven/ThavenMoodSystem.cs | 373 ++++ .../_Impstation/Thaven/ThavenMoodsEui.cs | 73 + Content.Shared/_Impstation/CCVar/ImpCCVars.cs | 15 + .../Thaven/SharedThavenMoodSystem.cs | 18 + .../Thaven/ThavenMoodBoundComponent.cs | 49 + .../_Impstation/Thaven/ThavenMoodPrototype.cs | 91 + .../_Impstation/Thaven/ThavenMoodsEuiState.cs | 29 + .../Audio/_Impstation/Thaven/attributions.yml | 4 + .../_Impstation/Thaven/moods_changed.ogg | Bin 0 -> 173401 bytes .../Locale/en-US/DeltaV/markings/thaven.ftl | 14 + .../_Impstation/accent/nocontractions.ftl | 407 +++++ .../_Impstation/accessories/thaven-hair.ftl | 207 +++ .../_Impstation/datasets/names/thaven.ftl | 76 + .../en-US/_Impstation/markings/thaven.ftl | 27 + .../en-US/_Impstation/species/species.ftl | 3 + .../en-US/_Impstation/thavens/no-and.ftl | 103 ++ .../en-US/_Impstation/thavens/shared.ftl | 53 + .../Locale/en-US/_Impstation/thavens/ui.ftl | 14 + .../en-US/_Impstation/thavens/wildcard.ftl | 80 + .../en-US/_Impstation/thavens/yes-and.ftl | 164 ++ .../en-US/_Impstation/traits/traits.ftl | 2 + .../Mobs/Customization/Markings/thaven.yml | 46 + .../Prototypes/DeltaV/typing_indicator.yml | 10 +- .../Mobs/Customization/Markings/gauze.yml | 34 +- .../Entities/Objects/Consumable/Food/meat.yml | 2 +- Resources/Prototypes/Guidebook/species.yml | 2 + Resources/Prototypes/_DV/GameRules/events.yml | 9 + .../Accents/nocontractions_replacements.yml | 138 ++ .../Prototypes/_Impstation/Actions/spelfs.yml | 14 + .../_Impstation/Body/Organs/thaven.yml | 9 + .../_Impstation/Body/Parts/thaven.yml | 90 + .../_Impstation/Body/Prototypes/thaven.yml | 50 + .../Prototypes/_Impstation/Damage/thaven.yml | 11 + .../_Impstation/Datasets/Names/thaven.yml | 79 + .../Entities/Consumable/Food/meat.yml | 27 + .../Mobs/Customization/Markings/misc.yml | 229 ++- .../Mobs/Customization/Markings/thaven.yml | 107 ++ .../Customization/Markings/thaven_hair.yml | 1496 +++++++++++++++++ .../Entities/Mobs/Player/thaven.yml | 5 + .../Entities/Mobs/Species/thaven.yml | 229 +++ .../_Impstation/Guidebook/species.yml | 4 + .../thaven_inventory_template.yml | 123 ++ .../Species/Thavens/Moods/no_and.yml | 303 ++++ .../Species/Thavens/Moods/shared.yml | 185 ++ .../Species/Thavens/Moods/wildcard.yml | 253 +++ .../Species/Thavens/Moods/yes_and.yml | 337 ++++ .../_Impstation/Species/Thavens/datasets.yml | 6 + .../Prototypes/_Impstation/Species/thaven.yml | 172 ++ .../_Impstation/Traits/speech.yml.txt | 11 + .../_Impstation/Voice/speech_emote_sounds.yml | 110 ++ Resources/Prototypes/_Impstation/datasets.yml | 1284 ++++++++++++++ .../ServerInfo/Guidebook/Mobs/Species.xml | 1 + .../_Impstation/Guidebook/Mobs/Thaven.xml | 36 + .../DeltaV/Effects/speech.rsi/meta.json | 17 + .../DeltaV/Effects/speech.rsi/thaven0.png | Bin 0 -> 758 bytes .../DeltaV/Effects/speech.rsi/thaven1.png | Bin 0 -> 626 bytes .../DeltaV/Effects/speech.rsi/thaven2.png | Bin 0 -> 626 bytes .../Effects/creampie.rsi/creampie_thaven.png | Bin 0 -> 458 bytes .../Textures/Effects/creampie.rsi/meta.json | 5 + .../ears.rsi/long_ears_small.png | Bin 0 -> 761 bytes .../ears.rsi/long_ears_standard.png | Bin 0 -> 686 bytes .../Customization/ears.rsi/long_ears_tall.png | Bin 0 -> 826 bytes .../Customization/ears.rsi/long_ears_thin.png | Bin 0 -> 601 bytes .../ears.rsi/long_ears_upwards.png | Bin 0 -> 789 bytes .../Customization/ears.rsi/long_ears_wide.png | Bin 0 -> 675 bytes .../Mobs/Customization/ears.rsi/meta.json | 35 + .../Customization/thaven.rsi/carp_spots.png | Bin 0 -> 224 bytes .../thaven.rsi/cheek_barbels.png | Bin 0 -> 180 bytes .../thaven.rsi/eyebrow_barbels.png | Bin 0 -> 180 bytes .../Mobs/Customization/thaven.rsi/meta.json | 31 + .../thaven.rsi/underbelly_face.png | Bin 0 -> 234 bytes .../thaven.rsi/underbelly_torso.png | Bin 0 -> 406 bytes .../Textures/_EE/Effects/speech.rsi/meta.json | 28 + .../_EE/Effects/speech.rsi/thaven0.png | Bin 0 -> 582 bytes .../_EE/Effects/speech.rsi/thaven1.png | Bin 0 -> 476 bytes .../_EE/Effects/speech.rsi/thaven2.png | Bin 0 -> 470 bytes .../markingsbundle1.rsi/meta.json | 102 +- .../markingsbundle1.rsi/thavenbignaturals.png | Bin 0 -> 871 bytes .../markingsbundle1.rsi/thavenbitemark.png | Bin 0 -> 683 bytes .../markingsbundle1.rsi/thavenbodystripes.png | Bin 0 -> 766 bytes .../markingsbundle1.rsi/thavenchestgills.png | Bin 0 -> 888 bytes .../markingsbundle1.rsi/thavenchestscales.png | Bin 0 -> 1099 bytes .../markingsbundle1.rsi/thavenearsbigfins.png | Bin 0 -> 753 bytes .../thavenearsbigfins2.png | Bin 0 -> 719 bytes .../markingsbundle1.rsi/thavenfishears.png | Bin 0 -> 875 bytes .../markingsbundle1.rsi/thavenheadcap1.png | Bin 0 -> 733 bytes .../markingsbundle1.rsi/thavenheadcap2.png | Bin 0 -> 657 bytes .../markingsbundle1.rsi/thavenheadscales.png | Bin 0 -> 824 bytes .../markingsbundle1.rsi/thavenheadstripes.png | Bin 0 -> 680 bytes .../thavenleftarmscales.png | Bin 0 -> 828 bytes .../thavenleftlegscales.png | Bin 0 -> 777 bytes .../markingsbundle1.rsi/thavennonaturals.png | Bin 0 -> 647 bytes .../thavenrightarmscales.png | Bin 0 -> 837 bytes .../thavenrightlegscales.png | Bin 0 -> 806 bytes .../markingsbundle1.rsi/thavenspines.png | Bin 0 -> 867 bytes .../thaventattoosharkminnoweyeliner.png | Bin 0 -> 637 bytes .../markingsbundle1.rsi/thaventattoovines.png | Bin 0 -> 867 bytes .../markingsbundle1.rsi/thaventattoowave.png | Bin 0 -> 938 bytes .../markingsbundle1.rsi/thaventiger1.png | Bin 0 -> 718 bytes .../markingsbundle1.rsi/thaventiger2.png | Bin 0 -> 684 bytes .../markingsbundle1.rsi/thaventigerarmsl.png | Bin 0 -> 694 bytes .../markingsbundle1.rsi/thaventigerarmsr.png | Bin 0 -> 697 bytes .../thaven/thaven.rsi/chesttat1.png | Bin 0 -> 287 bytes .../Customization/thaven/thaven.rsi/ears1.png | Bin 0 -> 230 bytes .../Customization/thaven/thaven.rsi/ears2.png | Bin 0 -> 238 bytes .../Customization/thaven/thaven.rsi/ears3.png | Bin 0 -> 286 bytes .../Customization/thaven/thaven.rsi/ears4.png | Bin 0 -> 260 bytes .../thaven/thaven.rsi/larmtat1.png | Bin 0 -> 184 bytes .../Customization/thaven/thaven.rsi/meta.json | 47 + .../thaven/thaven.rsi/piercings.png | Bin 0 -> 170 bytes .../thaven/thaven.rsi/piercings2.png | Bin 0 -> 130 bytes .../thaven/thaven.rsi/rarmtat1.png | Bin 0 -> 177 bytes .../thaven/thaven_hair.rsi/80s.png | Bin 0 -> 805 bytes .../thaven/thaven_hair.rsi/a.png | Bin 0 -> 431 bytes .../thaven/thaven_hair.rsi/b.png | Bin 0 -> 549 bytes .../thaven/thaven_hair.rsi/bald.png | Bin 0 -> 109 bytes .../thaven/thaven_hair.rsi/baldface.png | Bin 0 -> 180 bytes .../thaven/thaven_hair.rsi/bedhead.png | Bin 0 -> 631 bytes .../thaven/thaven_hair.rsi/bedhead2.png | Bin 0 -> 652 bytes .../thaven/thaven_hair.rsi/bedhead3.png | Bin 0 -> 589 bytes .../thaven/thaven_hair.rsi/beehive.png | Bin 0 -> 638 bytes .../thaven/thaven_hair.rsi/beehive2.png | Bin 0 -> 646 bytes .../thaven/thaven_hair.rsi/bigflattop.png | Bin 0 -> 539 bytes .../thaven/thaven_hair.rsi/bigpompadour.png | Bin 0 -> 558 bytes .../thaven/thaven_hair.rsi/bob.png | Bin 0 -> 583 bytes .../thaven/thaven_hair.rsi/bob2.png | Bin 0 -> 590 bytes .../thaven/thaven_hair.rsi/bob4.png | Bin 0 -> 613 bytes .../thaven/thaven_hair.rsi/bob5.png | Bin 0 -> 579 bytes .../thaven/thaven_hair.rsi/bobcurl.png | Bin 0 -> 609 bytes .../thaven/thaven_hair.rsi/bobcut.png | Bin 0 -> 548 bytes .../thaven/thaven_hair.rsi/bowlcut.png | Bin 0 -> 296 bytes .../thaven/thaven_hair.rsi/bowlcut2.png | Bin 0 -> 373 bytes .../thaven/thaven_hair.rsi/braid.png | Bin 0 -> 1027 bytes .../thaven/thaven_hair.rsi/braid2.png | Bin 0 -> 789 bytes .../thaven/thaven_hair.rsi/braided.png | Bin 0 -> 726 bytes .../thaven/thaven_hair.rsi/braidfront.png | Bin 0 -> 589 bytes .../thaven/thaven_hair.rsi/braidtail.png | Bin 0 -> 631 bytes .../thaven/thaven_hair.rsi/bun.png | Bin 0 -> 546 bytes .../thaven/thaven_hair.rsi/bun3.png | Bin 0 -> 554 bytes .../thaven/thaven_hair.rsi/bunhead2.png | Bin 0 -> 542 bytes .../thaven/thaven_hair.rsi/business.png | Bin 0 -> 478 bytes .../thaven/thaven_hair.rsi/business2.png | Bin 0 -> 503 bytes .../thaven/thaven_hair.rsi/business3.png | Bin 0 -> 530 bytes .../thaven/thaven_hair.rsi/business4.png | Bin 0 -> 531 bytes .../thaven/thaven_hair.rsi/buzzcut.png | Bin 0 -> 378 bytes .../thaven/thaven_hair.rsi/c.png | Bin 0 -> 398 bytes .../thaven/thaven_hair.rsi/cia.png | Bin 0 -> 438 bytes .../thaven/thaven_hair.rsi/classicafro.png | Bin 0 -> 640 bytes .../thaven/thaven_hair.rsi/classiccia.png | Bin 0 -> 796 bytes .../thaven_hair.rsi/classicciabusiness.png | Bin 0 -> 412 bytes .../thaven_hair.rsi/classiccornrows.png | Bin 0 -> 385 bytes .../classicfloorlength_bedhead.png | Bin 0 -> 2135 bytes .../thaven/thaven_hair.rsi/classiclong2.png | Bin 0 -> 992 bytes .../thaven/thaven_hair.rsi/classiclong3.png | Bin 0 -> 1024 bytes .../thaven/thaven_hair.rsi/classicmodern.png | Bin 0 -> 1433 bytes .../thaven/thaven_hair.rsi/classicmulder.png | Bin 0 -> 764 bytes .../thaven/thaven_hair.rsi/classicwisp.png | Bin 0 -> 1289 bytes .../thaven/thaven_hair.rsi/coffeehouse.png | Bin 0 -> 533 bytes .../thaven/thaven_hair.rsi/combover.png | Bin 0 -> 432 bytes .../thaven/thaven_hair.rsi/cornrowbraid.png | Bin 0 -> 537 bytes .../thaven/thaven_hair.rsi/cornrowbun.png | Bin 0 -> 543 bytes .../thaven/thaven_hair.rsi/cornrows.png | Bin 0 -> 442 bytes .../thaven/thaven_hair.rsi/cornrows2.png | Bin 0 -> 552 bytes .../thaven/thaven_hair.rsi/cornrowtail.png | Bin 0 -> 587 bytes .../thaven/thaven_hair.rsi/country.png | Bin 0 -> 716 bytes .../thaven/thaven_hair.rsi/crewcut.png | Bin 0 -> 357 bytes .../thaven/thaven_hair.rsi/crewcut2.png | Bin 0 -> 348 bytes .../thaven/thaven_hair.rsi/curls.png | Bin 0 -> 559 bytes .../thaven/thaven_hair.rsi/d.png | Bin 0 -> 266 bytes .../thaven/thaven_hair.rsi/dandypompadour.png | Bin 0 -> 550 bytes .../thaven/thaven_hair.rsi/devilock.png | Bin 0 -> 408 bytes .../thaven/thaven_hair.rsi/doublebun.png | Bin 0 -> 646 bytes .../thaven/thaven_hair.rsi/doublebun_long.png | Bin 0 -> 1285 bytes .../thaven/thaven_hair.rsi/dreads.png | Bin 0 -> 573 bytes .../thaven/thaven_hair.rsi/drillhair.png | Bin 0 -> 649 bytes .../thaven_hair.rsi/drillhairextended.png | Bin 0 -> 811 bytes .../thaven/thaven_hair.rsi/drillruru.png | Bin 0 -> 710 bytes .../thaven/thaven_hair.rsi/e.png | Bin 0 -> 214 bytes .../thaven/thaven_hair.rsi/emo2.png | Bin 0 -> 541 bytes .../thaven/thaven_hair.rsi/emofringe.png | Bin 0 -> 582 bytes .../thaven/thaven_hair.rsi/f.png | Bin 0 -> 390 bytes .../thaven/thaven_hair.rsi/father.png | Bin 0 -> 325 bytes .../thaven/thaven_hair.rsi/feather.png | Bin 0 -> 646 bytes .../thaven/thaven_hair.rsi/flair.png | Bin 0 -> 783 bytes .../thaven_hair.rsi/floorlength_bedhead.png | Bin 0 -> 1541 bytes .../thaven/thaven_hair.rsi/frenchbraid.png | Bin 0 -> 2140 bytes .../thaven/thaven_hair.rsi/fringetail.png | Bin 0 -> 647 bytes .../thaven/thaven_hair.rsi/gelled.png | Bin 0 -> 449 bytes .../thaven/thaven_hair.rsi/gentle.png | Bin 0 -> 602 bytes .../thaven/thaven_hair.rsi/halfbang.png | Bin 0 -> 520 bytes .../thaven/thaven_hair.rsi/halfbang2.png | Bin 0 -> 519 bytes .../thaven/thaven_hair.rsi/halfshaved.png | Bin 0 -> 539 bytes .../thaven/thaven_hair.rsi/hbraid.png | Bin 0 -> 753 bytes .../thaven/thaven_hair.rsi/hedgehog.png | Bin 0 -> 505 bytes .../thaven/thaven_hair.rsi/highfade.png | Bin 0 -> 248 bytes .../thaven/thaven_hair.rsi/highponytail.png | Bin 0 -> 756 bytes .../thaven/thaven_hair.rsi/himecut.png | Bin 0 -> 557 bytes .../thaven/thaven_hair.rsi/himecut2.png | Bin 0 -> 631 bytes .../thaven/thaven_hair.rsi/himeup.png | Bin 0 -> 716 bytes .../thaven/thaven_hair.rsi/hitop.png | Bin 0 -> 323 bytes .../thaven/thaven_hair.rsi/jade.png | Bin 0 -> 757 bytes .../thaven/thaven_hair.rsi/jensen.png | Bin 0 -> 467 bytes .../thaven/thaven_hair.rsi/joestar.png | Bin 0 -> 663 bytes .../thaven/thaven_hair.rsi/kagami.png | Bin 0 -> 609 bytes .../thaven/thaven_hair.rsi/keanu.png | Bin 0 -> 559 bytes .../thaven/thaven_hair.rsi/kusanagi.png | Bin 0 -> 473 bytes .../thaven/thaven_hair.rsi/largebun.png | Bin 0 -> 562 bytes .../thaven/thaven_hair.rsi/lbangs.png | Bin 0 -> 624 bytes .../thaven/thaven_hair.rsi/long.png | Bin 0 -> 988 bytes .../thaven/thaven_hair.rsi/long2.png | Bin 0 -> 882 bytes .../thaven/thaven_hair.rsi/long3.png | Bin 0 -> 935 bytes .../thaven/thaven_hair.rsi/long_bedhead.png | Bin 0 -> 1140 bytes .../thaven/thaven_hair.rsi/long_bedhead2.png | Bin 0 -> 1535 bytes .../thaven/thaven_hair.rsi/longbundled.png | Bin 0 -> 929 bytes .../thaven/thaven_hair.rsi/longeremo.png | Bin 0 -> 655 bytes .../thaven/thaven_hair.rsi/longest.png | Bin 0 -> 783 bytes .../thaven/thaven_hair.rsi/longest2.png | Bin 0 -> 778 bytes .../thaven/thaven_hair.rsi/longfringe.png | Bin 0 -> 609 bytes .../thaven/thaven_hair.rsi/longovereye.png | Bin 0 -> 720 bytes .../thaven/thaven_hair.rsi/longsidepart.png | Bin 0 -> 887 bytes .../thaven_hair.rsi/longstraightponytail.png | Bin 0 -> 718 bytes .../thaven/thaven_hair.rsi/lowfade.png | Bin 0 -> 393 bytes .../thaven/thaven_hair.rsi/manbun.png | Bin 0 -> 502 bytes .../thaven/thaven_hair.rsi/medfade.png | Bin 0 -> 339 bytes .../thaven/thaven_hair.rsi/mediumsidepart.png | Bin 0 -> 667 bytes .../thaven/thaven_hair.rsi/megaeyebrows.png | Bin 0 -> 325 bytes .../thaven/thaven_hair.rsi/messy.png | Bin 0 -> 674 bytes .../thaven/thaven_hair.rsi/meta.json | 759 +++++++++ .../thaven/thaven_hair.rsi/modern.png | Bin 0 -> 934 bytes .../thaven/thaven_hair.rsi/mulder.png | Bin 0 -> 575 bytes .../thaven/thaven_hair.rsi/nitori.png | Bin 0 -> 724 bytes .../thaven/thaven_hair.rsi/nofade.png | Bin 0 -> 487 bytes .../thaven/thaven_hair.rsi/odango.png | Bin 0 -> 597 bytes .../thaven/thaven_hair.rsi/ombre.png | Bin 0 -> 668 bytes .../thaven/thaven_hair.rsi/oneshoulder.png | Bin 0 -> 653 bytes .../thaven/thaven_hair.rsi/oxton.png | Bin 0 -> 633 bytes .../thaven/thaven_hair.rsi/part.png | Bin 0 -> 490 bytes .../thaven/thaven_hair.rsi/parted.png | Bin 0 -> 644 bytes .../thaven/thaven_hair.rsi/pigtails.png | Bin 0 -> 704 bytes .../thaven/thaven_hair.rsi/pigtails2.png | Bin 0 -> 513 bytes .../thaven/thaven_hair.rsi/pixie.png | Bin 0 -> 578 bytes .../thaven/thaven_hair.rsi/pompadour.png | Bin 0 -> 477 bytes .../thaven/thaven_hair.rsi/ponytail.png | Bin 0 -> 477 bytes .../thaven/thaven_hair.rsi/ponytail2.png | Bin 0 -> 699 bytes .../thaven/thaven_hair.rsi/ponytail3.png | Bin 0 -> 608 bytes .../thaven/thaven_hair.rsi/ponytail4.png | Bin 0 -> 668 bytes .../thaven/thaven_hair.rsi/ponytail5.png | Bin 0 -> 647 bytes .../thaven/thaven_hair.rsi/ponytail6.png | Bin 0 -> 686 bytes .../thaven/thaven_hair.rsi/ponytail7.png | Bin 0 -> 765 bytes .../thaven/thaven_hair.rsi/poofy.png | Bin 0 -> 639 bytes .../thaven/thaven_hair.rsi/protagonist.png | Bin 0 -> 582 bytes .../thaven/thaven_hair.rsi/quiff.png | Bin 0 -> 444 bytes .../thaven/thaven_hair.rsi/reversemohawk.png | Bin 0 -> 332 bytes .../thaven/thaven_hair.rsi/ronin.png | Bin 0 -> 553 bytes .../thaven/thaven_hair.rsi/rosa.png | Bin 0 -> 593 bytes .../thaven/thaven_hair.rsi/sargeant.png | Bin 0 -> 401 bytes .../thaven/thaven_hair.rsi/shaved.png | Bin 0 -> 257 bytes .../thaven/thaven_hair.rsi/shavedmohawk.png | Bin 0 -> 227 bytes .../thaven/thaven_hair.rsi/shavedpart.png | Bin 0 -> 425 bytes .../thaven/thaven_hair.rsi/shortbangs.png | Bin 0 -> 522 bytes .../thaven/thaven_hair.rsi/shortbraid.png | Bin 0 -> 708 bytes .../thaven/thaven_hair.rsi/shorthair2.png | Bin 0 -> 632 bytes .../thaven/thaven_hair.rsi/shorthair3.png | Bin 0 -> 588 bytes .../thaven/thaven_hair.rsi/shorthair9.png | Bin 0 -> 615 bytes .../thaven/thaven_hair.rsi/shorthime.png | Bin 0 -> 539 bytes .../thaven/thaven_hair.rsi/shortovereye.png | Bin 0 -> 654 bytes .../thaven_hair.rsi/shoulderlengthovereye.png | Bin 0 -> 598 bytes .../thaven/thaven_hair.rsi/sidecut.png | Bin 0 -> 550 bytes .../thaven/thaven_hair.rsi/sidetail.png | Bin 0 -> 650 bytes .../thaven/thaven_hair.rsi/sidetail2.png | Bin 0 -> 636 bytes .../thaven/thaven_hair.rsi/sidetail3.png | Bin 0 -> 586 bytes .../thaven/thaven_hair.rsi/sidetail4.png | Bin 0 -> 747 bytes .../thaven/thaven_hair.rsi/skinhead.png | Bin 0 -> 218 bytes .../thaven/thaven_hair.rsi/spiky.png | Bin 0 -> 409 bytes .../thaven/thaven_hair.rsi/spikyponytail.png | Bin 0 -> 796 bytes .../thaven/thaven_hair.rsi/spookylong.png | Bin 0 -> 755 bytes .../thaven/thaven_hair.rsi/stail.png | Bin 0 -> 813 bytes .../thaven/thaven_hair.rsi/swept.png | Bin 0 -> 511 bytes .../thaven/thaven_hair.rsi/swept2.png | Bin 0 -> 553 bytes .../thaven/thaven_hair.rsi/tailed.png | Bin 0 -> 1167 bytes .../thaven/thaven_hair.rsi/thinning.png | Bin 0 -> 384 bytes .../thaven/thaven_hair.rsi/thinningfront.png | Bin 0 -> 362 bytes .../thaven/thaven_hair.rsi/thinningrear.png | Bin 0 -> 367 bytes .../thaven/thaven_hair.rsi/tightbun.png | Bin 0 -> 428 bytes .../thaven/thaven_hair.rsi/topknot.png | Bin 0 -> 536 bytes .../thaven/thaven_hair.rsi/tressshoulder.png | Bin 0 -> 698 bytes .../thaven/thaven_hair.rsi/trimflat.png | Bin 0 -> 353 bytes .../thaven/thaven_hair.rsi/trimmed.png | Bin 0 -> 336 bytes .../thaven/thaven_hair.rsi/twintail.png | Bin 0 -> 674 bytes .../thaven/thaven_hair.rsi/twostrands.png | Bin 0 -> 862 bytes .../thaven/thaven_hair.rsi/undercut.png | Bin 0 -> 461 bytes .../thaven/thaven_hair.rsi/undercutleft.png | Bin 0 -> 505 bytes .../thaven/thaven_hair.rsi/undercutright.png | Bin 0 -> 502 bytes .../thaven/thaven_hair.rsi/uneven.png | Bin 0 -> 968 bytes .../thaven/thaven_hair.rsi/unkept.png | Bin 0 -> 946 bytes .../veryshortovereyealternate.png | Bin 0 -> 561 bytes .../thaven/thaven_hair.rsi/vlong.png | Bin 0 -> 686 bytes .../thaven/thaven_hair.rsi/vlongfringe.png | Bin 0 -> 667 bytes .../thaven/thaven_hair.rsi/volaju.png | Bin 0 -> 738 bytes .../thaven/thaven_hair.rsi/wisp.png | Bin 0 -> 847 bytes .../Species/Thaven/displacement.rsi/eyes.png | Bin 0 -> 332 bytes .../Species/Thaven/displacement.rsi/hands.png | Bin 0 -> 313 bytes .../Species/Thaven/displacement.rsi/head.png | Bin 0 -> 332 bytes .../Thaven/displacement.rsi/jumpsuit.png | Bin 0 -> 367 bytes .../Species/Thaven/displacement.rsi/mask.png | Bin 0 -> 332 bytes .../Species/Thaven/displacement.rsi/meta.json | 42 + .../Species/Thaven/displacement.rsi/neck.png | Bin 0 -> 288 bytes .../outerclothing_hardsuit.png | Bin 0 -> 317 bytes .../Thaven/organs.rsi/brain-inhand-left.png | Bin 0 -> 255 bytes .../Thaven/organs.rsi/brain-inhand-right.png | Bin 0 -> 265 bytes .../Thaven/organs.rsi/brain-thaven.png | Bin 0 -> 244 bytes .../Mobs/Species/Thaven/organs.rsi/meta.json | 22 + .../Mobs/Species/Thaven/parts.rsi/eyes.png | Bin 0 -> 125 bytes .../Mobs/Species/Thaven/parts.rsi/full.png | Bin 0 -> 524 bytes .../Mobs/Species/Thaven/parts.rsi/head.png | Bin 0 -> 535 bytes .../Mobs/Species/Thaven/parts.rsi/l_arm.png | Bin 0 -> 279 bytes .../Mobs/Species/Thaven/parts.rsi/l_foot.png | Bin 0 -> 262 bytes .../Mobs/Species/Thaven/parts.rsi/l_hand.png | Bin 0 -> 260 bytes .../Mobs/Species/Thaven/parts.rsi/l_leg.png | Bin 0 -> 257 bytes .../Mobs/Species/Thaven/parts.rsi/meta.json | 62 + .../Mobs/Species/Thaven/parts.rsi/r_arm.png | Bin 0 -> 289 bytes .../Mobs/Species/Thaven/parts.rsi/r_foot.png | Bin 0 -> 252 bytes .../Mobs/Species/Thaven/parts.rsi/r_hand.png | Bin 0 -> 283 bytes .../Mobs/Species/Thaven/parts.rsi/r_leg.png | Bin 0 -> 265 bytes .../Mobs/Species/Thaven/parts.rsi/torso_f.png | Bin 0 -> 741 bytes .../Mobs/Species/Thaven/parts.rsi/torso_m.png | Bin 0 -> 554 bytes Tools/markings/markings/prototypes.go | 2 + 344 files changed, 8897 insertions(+), 22 deletions(-) create mode 100644 Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml create mode 100644 Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs create mode 100644 Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml create mode 100644 Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs create mode 100644 Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs create mode 100644 Content.Client/_Impstation/Thaven/MoodDisplay.xaml create mode 100644 Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs create mode 100644 Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs create mode 100644 Content.Client/_Impstation/Thaven/ThavenMoodsBoundUserInterface.cs create mode 100644 Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml create mode 100644 Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs create mode 100644 Content.IntegrationTests/Tests/_Impstation/Thaven/MoodTests.cs create mode 100644 Content.Server/StationEvents/Components/ThavenMoodUpsetRuleComponent.cs create mode 100644 Content.Server/StationEvents/Events/ThavenMoodUpset.cs create mode 100644 Content.Server/_Impstation/Speech/Components/NoContractionsAccentComponent.cs create mode 100644 Content.Server/_Impstation/Speech/EntitySystems/NoContractionsAccentSystem.cs create mode 100644 Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs create mode 100644 Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs create mode 100644 Content.Shared/_Impstation/CCVar/ImpCCVars.cs create mode 100644 Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs create mode 100644 Content.Shared/_Impstation/Thaven/ThavenMoodBoundComponent.cs create mode 100644 Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs create mode 100644 Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs create mode 100644 Resources/Audio/_Impstation/Thaven/attributions.yml create mode 100644 Resources/Audio/_Impstation/Thaven/moods_changed.ogg create mode 100644 Resources/Locale/en-US/DeltaV/markings/thaven.ftl create mode 100644 Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl create mode 100644 Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl create mode 100644 Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl create mode 100644 Resources/Locale/en-US/_Impstation/markings/thaven.ftl create mode 100644 Resources/Locale/en-US/_Impstation/species/species.ftl create mode 100644 Resources/Locale/en-US/_Impstation/thavens/no-and.ftl create mode 100644 Resources/Locale/en-US/_Impstation/thavens/shared.ftl create mode 100644 Resources/Locale/en-US/_Impstation/thavens/ui.ftl create mode 100644 Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl create mode 100644 Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl create mode 100644 Resources/Locale/en-US/_Impstation/traits/traits.ftl create mode 100644 Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/thaven.yml create mode 100644 Resources/Prototypes/_DV/GameRules/events.yml create mode 100644 Resources/Prototypes/_Impstation/Accents/nocontractions_replacements.yml create mode 100644 Resources/Prototypes/_Impstation/Actions/spelfs.yml create mode 100644 Resources/Prototypes/_Impstation/Body/Organs/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Body/Parts/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Damage/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Consumable/Food/meat.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven_hair.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Mobs/Player/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Mobs/Species/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Guidebook/species.yml create mode 100644 Resources/Prototypes/_Impstation/InventoryTemplates/thaven_inventory_template.yml create mode 100644 Resources/Prototypes/_Impstation/Species/Thavens/Moods/no_and.yml create mode 100644 Resources/Prototypes/_Impstation/Species/Thavens/Moods/shared.yml create mode 100644 Resources/Prototypes/_Impstation/Species/Thavens/Moods/wildcard.yml create mode 100644 Resources/Prototypes/_Impstation/Species/Thavens/Moods/yes_and.yml create mode 100644 Resources/Prototypes/_Impstation/Species/Thavens/datasets.yml create mode 100644 Resources/Prototypes/_Impstation/Species/thaven.yml create mode 100644 Resources/Prototypes/_Impstation/Traits/speech.yml.txt create mode 100644 Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml create mode 100644 Resources/Prototypes/_Impstation/datasets.yml create mode 100644 Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml create mode 100644 Resources/Textures/DeltaV/Effects/speech.rsi/thaven0.png create mode 100644 Resources/Textures/DeltaV/Effects/speech.rsi/thaven1.png create mode 100644 Resources/Textures/DeltaV/Effects/speech.rsi/thaven2.png create mode 100644 Resources/Textures/Effects/creampie.rsi/creampie_thaven.png create mode 100644 Resources/Textures/Mobs/Customization/ears.rsi/long_ears_small.png create mode 100644 Resources/Textures/Mobs/Customization/ears.rsi/long_ears_standard.png create mode 100644 Resources/Textures/Mobs/Customization/ears.rsi/long_ears_tall.png create mode 100644 Resources/Textures/Mobs/Customization/ears.rsi/long_ears_thin.png create mode 100644 Resources/Textures/Mobs/Customization/ears.rsi/long_ears_upwards.png create mode 100644 Resources/Textures/Mobs/Customization/ears.rsi/long_ears_wide.png create mode 100644 Resources/Textures/Mobs/Customization/ears.rsi/meta.json create mode 100644 Resources/Textures/_DV/Mobs/Customization/thaven.rsi/carp_spots.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/thaven.rsi/cheek_barbels.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/thaven.rsi/eyebrow_barbels.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/thaven.rsi/meta.json create mode 100644 Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_face.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_torso.png create mode 100644 Resources/Textures/_EE/Effects/speech.rsi/meta.json create mode 100644 Resources/Textures/_EE/Effects/speech.rsi/thaven0.png create mode 100644 Resources/Textures/_EE/Effects/speech.rsi/thaven1.png create mode 100644 Resources/Textures/_EE/Effects/speech.rsi/thaven2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbignaturals.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbitemark.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbodystripes.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestgills.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestscales.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenfishears.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap1.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadscales.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadstripes.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftarmscales.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftlegscales.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavennonaturals.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightarmscales.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightlegscales.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenspines.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoosharkminnoweyeliner.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoovines.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoowave.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger1.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsl.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsr.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/chesttat1.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears1.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears4.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/larmtat1.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/meta.json create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/rarmtat1.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/80s.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/a.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/b.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bald.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/baldface.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigflattop.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigpompadour.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob4.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob5.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcurl.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcut.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braided.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidfront.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidtail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bunhead2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business4.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/buzzcut.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/c.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cia.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicafro.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccia.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicciabusiness.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccornrows.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicfloorlength_bedhead.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmodern.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmulder.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicwisp.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/coffeehouse.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/combover.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbraid.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbun.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowtail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/country.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/curls.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/d.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dandypompadour.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/devilock.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun_long.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dreads.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhair.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhairextended.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillruru.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/e.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emo2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emofringe.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/f.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/father.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/feather.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/flair.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/floorlength_bedhead.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/frenchbraid.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/fringetail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gelled.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gentle.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfshaved.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hbraid.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hedgehog.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highfade.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highponytail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himeup.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hitop.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jade.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jensen.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/joestar.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kagami.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/keanu.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kusanagi.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/largebun.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lbangs.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longbundled.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longeremo.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longfringe.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longovereye.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longsidepart.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longstraightponytail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lowfade.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/manbun.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/medfade.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mediumsidepart.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/megaeyebrows.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/messy.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/meta.json create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/modern.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mulder.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nitori.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nofade.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/odango.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ombre.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oneshoulder.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oxton.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/part.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/parted.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pixie.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pompadour.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail4.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail5.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail6.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail7.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/poofy.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/protagonist.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/quiff.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/reversemohawk.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ronin.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/rosa.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sargeant.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shaved.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedmohawk.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedpart.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbangs.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbraid.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair9.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthime.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortovereye.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shoulderlengthovereye.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidecut.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail3.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail4.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/skinhead.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spiky.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spikyponytail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spookylong.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/stail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept2.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tailed.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinning.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningfront.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningrear.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tightbun.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/topknot.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tressshoulder.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimflat.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimmed.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twintail.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twostrands.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercut.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutleft.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutright.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/uneven.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/unkept.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/veryshortovereyealternate.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlong.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlongfringe.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/volaju.png create mode 100644 Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/wisp.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/eyes.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/hands.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/head.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/jumpsuit.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/mask.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/meta.json create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/neck.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/outerclothing_hardsuit.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-left.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-right.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-thaven.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/meta.json create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/eyes.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/full.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/head.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_arm.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_foot.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_hand.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_leg.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/meta.json create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_arm.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_foot.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_hand.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_leg.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_f.png create mode 100644 Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_m.png diff --git a/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml new file mode 100644 index 0000000000..56b4791f42 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs new file mode 100644 index 0000000000..200d7b9d12 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs @@ -0,0 +1,22 @@ +using Content.Shared._Impstation.Thaven; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Utility; + +namespace Content.Client._Impstation.Thaven.Eui; + +[GenerateTypedNameReferences] +public sealed partial class MoodContainer : BoxContainer +{ + public MoodContainer(ThavenMood? mood = null) + { + RobustXamlLoader.Load(this); + + if (mood != null) + { + ThavenMoodTitle.Text = mood.GetLocName(); + ThavenMoodContent.TextRope = new Rope.Leaf(mood.GetLocDesc()); + } + } +} diff --git a/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml new file mode 100644 index 0000000000..5999790845 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml @@ -0,0 +1,22 @@ + + + this shit does not layout properly unless I put the horizontal boxcontainer inside of a vertical one + ???? + + + + + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs new file mode 100644 index 0000000000..eee6da6c0c --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs @@ -0,0 +1,94 @@ +using Content.Client.UserInterface.Controls; +using Content.Shared._Impstation.Thaven; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Utility; + +namespace Content.Client._Impstation.Thaven.Eui; + +[GenerateTypedNameReferences] +public sealed partial class ThavenMoodUi : FancyWindow +{ + private List _moods = new(); + + public ThavenMoodUi() + { + RobustXamlLoader.Load(this); + NewMoodButton.OnPressed += _ => AddNewMood(); + } + + private void AddNewMood() + { + MoodContainer.AddChild(new MoodContainer()); + } + + public List GetMoods() + { + var newMoods = new List(); + + foreach (var control in MoodContainer.Children) + { + if (control is not MoodContainer moodControl) + continue; + + if (string.IsNullOrWhiteSpace(moodControl.ThavenMoodTitle.Text)) + continue; + + var moodText = Rope.Collapse(moodControl.ThavenMoodContent.TextRope).Trim(); + + if (string.IsNullOrWhiteSpace(moodText)) + continue; + + var mood = new ThavenMood() + { + MoodName = moodControl.ThavenMoodTitle.Text, + MoodDesc = moodText, + }; + + newMoods.Add(mood); + } + + return newMoods; + } + + private void MoveUp(int index) + { + if (index <= 0) + return; + + (_moods[index], _moods[index - 1]) = (_moods[index - 1], _moods[index]); + SetMoods(_moods); + } + + private void MoveDown(int index) + { + if (index >= _moods.Count - 1) + return; + + (_moods[index], _moods[index + 1]) = (_moods[index + 1], _moods[index]); + SetMoods(_moods); + } + + private void Delete(int index) + { + _moods.RemoveAt(index); + + SetMoods(_moods); + } + + public void SetMoods(List moods) + { + _moods = moods; + MoodContainer.RemoveAllChildren(); + for (var i = 0; i < moods.Count; i++) + { + var index = i; // Copy for the closure + var mood = moods[i]; + var moodControl = new MoodContainer(mood); + moodControl.MoveUp.OnPressed += _ => MoveUp(index); + moodControl.MoveDown.OnPressed += _ => MoveDown(index); + moodControl.Delete.OnPressed += _ => Delete(index); + MoodContainer.AddChild(moodControl); + } + } +} diff --git a/Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs new file mode 100644 index 0000000000..a6a8b05ee9 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs @@ -0,0 +1,48 @@ +using Content.Client.Eui; +using Content.Shared.Eui; +using Content.Shared._Impstation.Thaven; + +namespace Content.Client._Impstation.Thaven.Eui; + +public sealed class ThavenMoodsEui : BaseEui +{ + private readonly EntityManager _entityManager; + + private ThavenMoodUi _thavenMoodUi; + private NetEntity _target; + + public ThavenMoodsEui() + { + _entityManager = IoCManager.Resolve(); + + _thavenMoodUi = new ThavenMoodUi(); + _thavenMoodUi.SaveButton.OnPressed += _ => SaveMoods(); + } + + private void SaveMoods() + { + var newMoods = _thavenMoodUi.GetMoods(); + SendMessage(new ThavenMoodsSaveMessage(newMoods, _target)); + _thavenMoodUi.SetMoods(newMoods); + } + + public override void Opened() + { + _thavenMoodUi.OpenCentered(); + } + + public override void HandleState(EuiStateBase state) + { + if (state is not ThavenMoodsEuiState s) + return; + + _target = s.Target; + _thavenMoodUi.SetMoods(s.Moods); + } + + public override void Closed() + { + base.Closed(); + _thavenMoodUi.Close(); + } +} diff --git a/Content.Client/_Impstation/Thaven/MoodDisplay.xaml b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml new file mode 100644 index 0000000000..3be9bf9c41 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs new file mode 100644 index 0000000000..1d2a8cffb2 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs @@ -0,0 +1,36 @@ +using System.Linq; +using Content.Client.Chat.Managers; +using Content.Client.Message; +using Content.Shared._Impstation.Thaven; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Client._Impstation.Thaven; + +[GenerateTypedNameReferences] +public sealed partial class MoodDisplay : Control +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IChatManager _chatManager = default!; + [Dependency] private readonly EntityManager _entityManager = default!; + + private string GetSharedString() + { + return $"[italic][font size=10][color=gray]{Loc.GetString("moods-ui-shared-mood")}[/color][/font][/italic]"; + } + + public MoodDisplay(ThavenMood mood, bool shared) + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + if (shared) + MoodNameLabel.SetMarkup($"{mood.GetLocName()} {GetSharedString()}"); + else + MoodNameLabel.SetMarkup(mood.GetLocName()); + MoodDescLabel.SetMarkup(mood.GetLocDesc()); + } +} diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs b/Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs new file mode 100644 index 0000000000..3bde3c8f15 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs @@ -0,0 +1,7 @@ +using Content.Shared._Impstation.Thaven; + +namespace Content.Client._Impstation.Thaven; + +public sealed partial class ThavenMoodSystem : SharedThavenMoodSystem +{ +} diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodsBoundUserInterface.cs b/Content.Client/_Impstation/Thaven/ThavenMoodsBoundUserInterface.cs new file mode 100644 index 0000000000..a80f9583c1 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodsBoundUserInterface.cs @@ -0,0 +1,41 @@ +using Content.Client._Impstation.Thaven; +using Content.Shared._Impstation.Thaven; +using Content.Shared._Impstation.Thaven.Components; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client._Impstation.Thaven; + +[UsedImplicitly] +public sealed class ThavenMoodsBoundUserInterface : BoundUserInterface +{ + [ViewVariables] + private ThavenMoodsMenu? _menu; + private EntityUid _owner; + private List? _moods; + private List? _sharedMoods; + + public ThavenMoodsBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + _owner = owner; + } + + protected override void Open() + { + base.Open(); + + _menu = this.CreateWindow(); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (state is not ThavenMoodsBuiState msg) + return; + + _moods = msg.Moods; + _sharedMoods = msg.SharedMoods; + _menu?.Update(_owner, msg); + } +} diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml new file mode 100644 index 0000000000..d48fa535db --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs new file mode 100644 index 0000000000..18718151e7 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs @@ -0,0 +1,27 @@ +using Content.Client.UserInterface.Controls; +using Content.Shared._Impstation.Thaven.Components; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.XAML; + +namespace Content.Client._Impstation.Thaven; + +[GenerateTypedNameReferences] +public sealed partial class ThavenMoodsMenu : FancyWindow +{ + public ThavenMoodsMenu() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + } + + public void Update(EntityUid uid, ThavenMoodsBuiState state) + { + MoodDisplayContainer.Children.Clear(); + + foreach (var mood in state.SharedMoods) + MoodDisplayContainer.AddChild(new MoodDisplay(mood, true)); + + foreach (var mood in state.Moods) + MoodDisplayContainer.AddChild(new MoodDisplay(mood, false)); + } +} diff --git a/Content.IntegrationTests/Tests/_Impstation/Thaven/MoodTests.cs b/Content.IntegrationTests/Tests/_Impstation/Thaven/MoodTests.cs new file mode 100644 index 0000000000..b2a189b850 --- /dev/null +++ b/Content.IntegrationTests/Tests/_Impstation/Thaven/MoodTests.cs @@ -0,0 +1,96 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Content.IntegrationTests; +using Content.Server._Impstation.Thaven; +using Content.Shared.Dataset; +using Content.Shared._Impstation.Thaven; +using NUnit.Framework; +using Robust.Shared.ContentPack; +using Robust.Shared.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; + +namespace Content.IntegrationTests.Tests._Impstation.Thaven; + +[TestFixture, TestOf(typeof(ThavenMoodPrototype))] +public sealed class ThavenMoodTests +{ + [TestPrototypes] + const string PROTOTYPES = @" +- type: dataset + id: ThreeValueSet + values: + - One + - Two + - Three +- type: thavenMood + id: DuplicateTest + moodName: DuplicateTest + moodDesc: DuplicateTest + allowDuplicateMoodVars: false + moodVars: + a: ThreeValueSet + b: ThreeValueSet + c: ThreeValueSet +- type: thavenMood + id: DuplicateOverlapTest + moodName: DuplicateOverlapTest + moodDesc: DuplicateOverlapTest + allowDuplicateMoodVars: false + moodVars: + a: ThreeValueSet + b: ThreeValueSet + c: ThreeValueSet + d: ThreeValueSet + e: ThreeValueSet +"; + + [Test] + [Repeat(10)] + public async Task TestDuplicatePrevention() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + await server.WaitIdleAsync(); + + var entMan = server.ResolveDependency(); + var thavenSystem = entMan.System(); + var protoMan = server.ResolveDependency(); + + var dataset = protoMan.Index("ThreeValueSet"); + var moodProto = protoMan.Index("DuplicateTest"); + + var datasetSet = dataset.Values.ToHashSet(); + var mood = thavenSystem.RollMood(moodProto); + var moodVarSet = mood.MoodVars.Values.ToHashSet(); + + Assert.That(moodVarSet, Is.EquivalentTo(datasetSet)); + + await pair.CleanReturnAsync(); + } + + [Test] + [Repeat(10)] + public async Task TestDuplicateOverlap() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entMan = server.ResolveDependency(); + var thavenSystem = entMan.System(); + var protoMan = server.ResolveDependency(); + + var dataset = protoMan.Index("ThreeValueSet"); + var moodProto = protoMan.Index("DuplicateOverlapTest"); + + var datasetSet = dataset.Values.ToHashSet(); + var mood = thavenSystem.RollMood(moodProto); + var moodVarSet = mood.MoodVars.Values.ToHashSet(); + + Assert.That(moodVarSet, Is.EquivalentTo(datasetSet)); + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index d9ccb730d0..3f3373ed2d 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -41,6 +41,8 @@ using Content.Shared.Silicons.Laws.Components; using Robust.Server.Player; using Robust.Shared.Physics.Components; using static Content.Shared.Configurable.ConfigurationComponent; +using Content.Shared._Impstation.Thaven.Components; // DeltaV +using Content.Server._Impstation.Thaven; // DeltaV namespace Content.Server.Administration.Systems { @@ -74,6 +76,7 @@ namespace Content.Server.Administration.Systems [Dependency] private readonly AdminFrozenSystem _freeze = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly SiliconLawSystem _siliconLawSystem = default!; + [Dependency] private readonly ThavenMoodsSystem _moods = default!; // DeltaV private readonly Dictionary> _openSolutionUis = new(); @@ -362,8 +365,29 @@ namespace Content.Server.Administration.Systems Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Actions/actions_borg.rsi"), "state-laws"), }); } + + // Begin DeltaV Additions - thaven moods + if (TryComp(args.Target, out var moods)) + { + args.Verbs.Add(new Verb() + { + Text = Loc.GetString("thaven-moods-ui-verb"), + Category = VerbCategory.Admin, + Act = () => + { + var ui = new ThavenMoodsEui(_moods, EntityManager, _adminManager); + if (!_playerManager.TryGetSessionByEntity(args.User, out var session)) + return; + + _euiManager.OpenEui(ui, session); + ui.UpdateMoods(moods, args.Target); + }, + Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Actions/actions_borg.rsi"), "state-laws"), + }); + } } } + // End DeltaV Additions private void AddDebugVerbs(GetVerbsEvent args) { diff --git a/Content.Server/StationEvents/Components/ThavenMoodUpsetRuleComponent.cs b/Content.Server/StationEvents/Components/ThavenMoodUpsetRuleComponent.cs new file mode 100644 index 0000000000..dca0b3db67 --- /dev/null +++ b/Content.Server/StationEvents/Components/ThavenMoodUpsetRuleComponent.cs @@ -0,0 +1,6 @@ +using Content.Server._DV.StationEvents.Events; + +namespace Content.Server._DV.StationEvents.Components; + +[RegisterComponent, Access(typeof(ThavenMoodUpset))] +public sealed partial class ThavenMoodUpsetRuleComponent : Component; diff --git a/Content.Server/StationEvents/Events/ThavenMoodUpset.cs b/Content.Server/StationEvents/Events/ThavenMoodUpset.cs new file mode 100644 index 0000000000..8e988875cf --- /dev/null +++ b/Content.Server/StationEvents/Events/ThavenMoodUpset.cs @@ -0,0 +1,23 @@ +using Content.Server._DV.StationEvents.Components; +using Content.Server._Impstation.Thaven; +using Content.Server.StationEvents.Events; +using Content.Shared._Impstation.Thaven.Components; +using Content.Shared.GameTicking.Components; + +namespace Content.Server._DV.StationEvents.Events; + +public sealed class ThavenMoodUpset : StationEventSystem +{ + [Dependency] private readonly ThavenMoodsSystem _thavenMoods = default!; + + protected override void Started(EntityUid uid, ThavenMoodUpsetRuleComponent comp, GameRuleComponent gameRule, GameRuleStartedEvent args) + { + base.Started(uid, comp, gameRule, args); + + var thavens = EntityQueryEnumerator(); + while (thavens.MoveNext(out var thavenUid, out var thavenComp)) + { + _thavenMoods.AddWildcardMood((thavenUid, thavenComp)); + } + } +} diff --git a/Content.Server/_Impstation/Speech/Components/NoContractionsAccentComponent.cs b/Content.Server/_Impstation/Speech/Components/NoContractionsAccentComponent.cs new file mode 100644 index 0000000000..c3fbdc9b8d --- /dev/null +++ b/Content.Server/_Impstation/Speech/Components/NoContractionsAccentComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.Speech.Components; + +/// +/// Removes contractions (e.g. "can't," "don't," etc.) +/// +[RegisterComponent] +public sealed partial class NoContractionsAccentComponent : Component +{ + +} diff --git a/Content.Server/_Impstation/Speech/EntitySystems/NoContractionsAccentSystem.cs b/Content.Server/_Impstation/Speech/EntitySystems/NoContractionsAccentSystem.cs new file mode 100644 index 0000000000..2dab93d7ef --- /dev/null +++ b/Content.Server/_Impstation/Speech/EntitySystems/NoContractionsAccentSystem.cs @@ -0,0 +1,26 @@ +using System.Text.RegularExpressions; +using Content.Server.Speech.Components; + +namespace Content.Server.Speech.EntitySystems; + +public sealed class NoContractionsAccentComponentAccentSystem : EntitySystem +{ + private static readonly Regex RegexLowerS = new("s+"); + private static readonly Regex RegexUpperS = new("S+"); + private static readonly Regex RegexInternalX = new(@"(\w)x"); + private static readonly Regex RegexLowerEndX = new(@"\bx([\-|r|R]|\b)"); + private static readonly Regex RegexUpperEndX = new(@"\bX([\-|r|R]|\b)"); + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnAccent); + } + + private void OnAccent(EntityUid uid, NoContractionsAccentComponent component, AccentGetEvent args) + { + var message = args.Message; + + args.Message = message; + } +} diff --git a/Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs b/Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs new file mode 100644 index 0000000000..de7307f063 --- /dev/null +++ b/Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs @@ -0,0 +1,373 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Server.Actions; +using Content.Server.Chat.Managers; +using Content.Shared.CCVar; +using Content.Shared.Chat; +using Content.Shared.Dataset; +using Content.Shared.Emag.Systems; +using Content.Shared.GameTicking; +using Content.Shared._Impstation.Thaven; +using Content.Shared._Impstation.Thaven.Components; +using Content.Shared.Random; +using Content.Shared.Random.Helpers; +using Robust.Server.GameObjects; +using Robust.Shared.Configuration; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Content.Shared._Impstation.CCVar; +using Robust.Shared.Audio.Systems; + +namespace Content.Server._Impstation.Thaven; + +public sealed partial class ThavenMoodsSystem : SharedThavenMoodSystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ActionsSystem _actions = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + [Dependency] private readonly UserInterfaceSystem _bui = default!; + [Dependency] private readonly IChatManager _chatManager = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + + public IReadOnlyList SharedMoods => _sharedMoods.AsReadOnly(); + private readonly List _sharedMoods = new(); + + + [ValidatePrototypeId] + private const string SharedDataset = "ThavenMoodsShared"; + + [ValidatePrototypeId] + private const string YesAndDataset = "ThavenMoodsYesAnd"; + + [ValidatePrototypeId] + private const string NoAndDataset = "ThavenMoodsNoAnd"; + + [ValidatePrototypeId] + private const string WildcardDataset = "ThavenMoodsWildcard"; + + [ValidatePrototypeId] + private const string ActionViewMoods = "ActionViewMoods"; + + [ValidatePrototypeId] + private const string RandomThavenMoodDataset = "RandomThavenMoodDataset"; + + public override void Initialize() + { + base.Initialize(); + + NewSharedMoods(); + + SubscribeLocalEvent(OnThavenMoodInit); + SubscribeLocalEvent(OnThavenMoodShutdown); + SubscribeLocalEvent(OnToggleMoodsScreen); + SubscribeLocalEvent(OnBoundUIOpened); + SubscribeLocalEvent((_) => NewSharedMoods()); + } + + private void NewSharedMoods() + { + _sharedMoods.Clear(); + for (int i = 0; i < _config.GetCVar(ImpCCVars.ThavenSharedMoodCount); i++) + TryAddSharedMood(); + } + + public bool TryAddSharedMood(ThavenMood? mood = null, bool checkConflicts = true) + { + if (mood == null) + { + if (TryPick(SharedDataset, out var moodProto, _sharedMoods)) + { + mood = RollMood(moodProto); + checkConflicts = false; // TryPick has cleared this mood already + } + else + { + return false; + } + } + + if (checkConflicts && (GetConflicts(_sharedMoods).Contains(mood.ProtoId) || GetMoodProtoSet(_sharedMoods).Overlaps(mood.Conflicts))) + return false; + + _sharedMoods.Add(mood); + var enumerator = EntityManager.EntityQueryEnumerator(); + while (enumerator.MoveNext(out var ent, out var comp)) + { + if (!comp.FollowsSharedMoods) + continue; + + NotifyMoodChange((ent, comp)); + } + + return true; + } + + private void OnBoundUIOpened(EntityUid uid, ThavenMoodsComponent component, BoundUIOpenedEvent args) + { + UpdateBUIState(uid, component); + } + + private void OnToggleMoodsScreen(EntityUid uid, ThavenMoodsComponent component, ToggleMoodsScreenEvent args) + { + if (args.Handled || !TryComp(uid, out var actor)) + return; + args.Handled = true; + + _bui.TryToggleUi(uid, ThavenMoodsUiKey.Key, actor.PlayerSession); + } + + private bool TryPick(string datasetProto, [NotNullWhen(true)] out ThavenMoodPrototype? proto, IEnumerable? currentMoods = null, HashSet? conflicts = null) + { + var dataset = _proto.Index(datasetProto); + var choices = dataset.Values.ToList(); + + if (currentMoods == null) + currentMoods = new HashSet(); + if (conflicts == null) + conflicts = GetConflicts(currentMoods); + + var currentMoodProtos = GetMoodProtoSet(currentMoods); + + while (choices.Count > 0) + { + var moodId = _random.PickAndTake(choices); + if (conflicts.Contains(moodId)) + continue; // Skip proto if an existing mood conflicts with it + + var moodProto = _proto.Index(moodId); + if (moodProto.Conflicts.Overlaps(currentMoodProtos)) + continue; // Skip proto if it conflicts with an existing mood + + proto = moodProto; + return true; + } + + proto = null; + return false; + } + + public void NotifyMoodChange(Entity ent) + { + if (!TryComp(ent.Owner, out var actor)) + return; + + if (ent.Comp.MoodsChangedSound != null) + _audio.PlayGlobal(ent.Comp.MoodsChangedSound, actor.PlayerSession); + + var msg = Loc.GetString("thaven-moods-update-notify"); + var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", msg)); + _chatManager.ChatMessageToOne(ChatChannel.Server, msg, wrappedMessage, default, false, actor.PlayerSession.Channel, colorOverride: Color.Orange); + } + + public void UpdateBUIState(EntityUid uid, ThavenMoodsComponent? comp = null) + { + if (!Resolve(uid, ref comp)) + return; + + var state = new ThavenMoodsBuiState(comp.Moods, comp.FollowsSharedMoods ? _sharedMoods : []); + _bui.SetUiState(uid, ThavenMoodsUiKey.Key, state); + } + + public void AddMood(EntityUid uid, ThavenMood mood, ThavenMoodsComponent? comp = null, bool notify = true) + { + if (!Resolve(uid, ref comp)) + return; + + comp.Moods.Add(mood); + + if (notify) + NotifyMoodChange((uid, comp)); + + UpdateBUIState(uid, comp); + } + + /// + /// Creates a ThavenMood instance from the given ThavenMoodPrototype, and rolls + /// its mood vars. + /// + public ThavenMood RollMood(ThavenMoodPrototype proto) + { + var mood = new ThavenMood() + { + ProtoId = proto.ID, + MoodName = proto.MoodName, + MoodDesc = proto.MoodDesc, + Conflicts = proto.Conflicts, + }; + + var alreadyChosen = new HashSet(); + + foreach (var (name, datasetID) in proto.MoodVarDatasets) + { + var dataset = _proto.Index(datasetID); + + if (proto.AllowDuplicateMoodVars) + { + mood.MoodVars.Add(name, _random.Pick(dataset)); + continue; + } + + var choices = dataset.Values.ToList(); + var foundChoice = false; + while (choices.Count > 0) + { + var choice = _random.PickAndTake(choices); + if (alreadyChosen.Contains(choice)) + continue; + + mood.MoodVars.Add(name, choice); + alreadyChosen.Add(choice); + foundChoice = true; + break; + } + + if (!foundChoice) + { + Log.Warning($"Ran out of choices for moodvar \"{name}\" in \"{proto.ID}\"! Picking a duplicate..."); + mood.MoodVars.Add(name, _random.Pick(_proto.Index(dataset))); + } + } + + return mood; + } + + /// + /// Checks if the given mood prototype conflicts with the current moods, and + /// adds the mood if it does not. + /// + public bool TryAddMood(EntityUid uid, ThavenMoodPrototype moodProto, ThavenMoodsComponent? comp = null, bool allowConflict = false, bool notify = true) + { + if (!Resolve(uid, ref comp)) + return false; + + if (!allowConflict && GetConflicts(uid, comp).Contains(moodProto.ID)) + return false; + + AddMood(uid, RollMood(moodProto), comp, notify); + return true; + } + + public bool TryAddRandomMood(EntityUid uid, string datasetProto, ThavenMoodsComponent? comp = null) + { + if (!Resolve(uid, ref comp)) + return false; + + if (TryPick(datasetProto, out var moodProto, GetActiveMoods(uid, comp))) + { + AddMood(uid, RollMood(moodProto), comp); + return true; + } + + return false; + } + + public bool TryAddRandomMood(EntityUid uid, ThavenMoodsComponent? comp = null) + { + if (!Resolve(uid, ref comp)) + return false; + + var datasetProto = _proto.Index(RandomThavenMoodDataset).Pick(); + + return TryAddRandomMood(uid, datasetProto, comp); + } + + public void SetMoods(EntityUid uid, IEnumerable moods, ThavenMoodsComponent? comp = null, bool notify = true) + { + if (!Resolve(uid, ref comp)) + return; + + comp.Moods = moods.ToList(); + if (notify) + NotifyMoodChange((uid, comp)); + + UpdateBUIState(uid, comp); + } + + public HashSet GetConflicts(IEnumerable moods) + { + var conflicts = new HashSet(); + + foreach (var mood in moods) + { + conflicts.Add(mood.ProtoId); // Specific moods shouldn't be added twice + conflicts.UnionWith(mood.Conflicts); + } + + return conflicts; + } + + public HashSet GetConflicts(EntityUid uid, ThavenMoodsComponent? moods = null) + { + // TODO: Should probably cache this when moods get updated + + if (!Resolve(uid, ref moods)) + return new(); + + var conflicts = GetConflicts(GetActiveMoods(uid, moods)); + + return conflicts; + } + + public HashSet GetMoodProtoSet(IEnumerable moods) + { + var moodProtos = new HashSet(); + foreach (var mood in moods) + if (!string.IsNullOrEmpty(mood.ProtoId)) + moodProtos.Add(mood.ProtoId); + return moodProtos; + } + + /// + /// Return a list of the moods that are affecting this entity. + /// + public List GetActiveMoods(EntityUid uid, ThavenMoodsComponent? comp = null, bool includeShared = true) + { + if (!Resolve(uid, ref comp)) + return []; + + if (includeShared && comp.FollowsSharedMoods) + { + return new List(SharedMoods.Concat(comp.Moods)); + } + else + { + return comp.Moods; + } + } + + private void OnThavenMoodInit(EntityUid uid, ThavenMoodsComponent comp, ComponentStartup args) + { + if (comp.LifeStage != ComponentLifeStage.Starting) + return; + + // "Yes, and" moods + if (TryPick(YesAndDataset, out var mood, GetActiveMoods(uid, comp))) + TryAddMood(uid, mood, comp, true, false); + + // "No, and" moods + if (TryPick(NoAndDataset, out mood, GetActiveMoods(uid, comp))) + TryAddMood(uid, mood, comp, true, false); + + comp.Action = _actions.AddAction(uid, ActionViewMoods); + } + + private void OnThavenMoodShutdown(EntityUid uid, ThavenMoodsComponent comp, ComponentShutdown args) + { + _actions.RemoveAction(uid, comp.Action); + } + + protected override void OnEmagged(EntityUid uid, ThavenMoodsComponent comp, ref GotEmaggedEvent args) + { + base.OnEmagged(uid, comp, ref args); + TryAddRandomMood(uid, WildcardDataset, comp); + } + + // Begin DeltaV: thaven mood upsets + public void AddWildcardMood(Entity ent) + { + TryAddRandomMood(ent.Owner, WildcardDataset, ent.Comp); + } + // End DeltaV: thaven mood upsets +} diff --git a/Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs b/Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs new file mode 100644 index 0000000000..2ff3b840dd --- /dev/null +++ b/Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs @@ -0,0 +1,73 @@ +using System.Linq; +using Content.Server.Administration.Managers; +using Content.Server.EUI; +using Content.Shared.Administration; +using Content.Shared.Eui; +using Content.Shared._Impstation.Thaven; +using Content.Shared._Impstation.Thaven.Components; + +namespace Content.Server._Impstation.Thaven; + +public sealed class ThavenMoodsEui : BaseEui +{ + private readonly ThavenMoodsSystem _thavenMoodsSystem; + private readonly EntityManager _entityManager; + private readonly IAdminManager _adminManager; + + private List _moods = new(); + private List _sharedMoods = new(); + private ISawmill _sawmill = default!; + private EntityUid _target; + + public ThavenMoodsEui(ThavenMoodsSystem thavenMoodsSystem, EntityManager entityManager, IAdminManager manager) + { + _thavenMoodsSystem = thavenMoodsSystem; + _entityManager = entityManager; + _adminManager = manager; + _sawmill = Logger.GetSawmill("thaven-moods-eui"); + } + + public override EuiStateBase GetNewState() + { + return new ThavenMoodsEuiState(_moods, _entityManager.GetNetEntity(_target)); + } + + public void UpdateMoods(ThavenMoodsComponent? comp, EntityUid player) + { + if (!IsAllowed()) + return; + + var moods = _thavenMoodsSystem.GetActiveMoods(player, comp, false); + _target = player; + _moods = moods; + _sharedMoods = _thavenMoodsSystem.SharedMoods.ToList(); + StateDirty(); + } + + public override void HandleMessage(EuiMessageBase msg) + { + base.HandleMessage(msg); + + if (msg is not ThavenMoodsSaveMessage message) + return; + + if (!IsAllowed()) + return; + + var player = _entityManager.GetEntity(message.Target); + + _thavenMoodsSystem.SetMoods(player, message.Moods); + } + + private bool IsAllowed() + { + var adminData = _adminManager.GetAdminData(Player); + if (adminData == null || !adminData.HasFlag(AdminFlags.Admin)) + { + _sawmill.Warning($"Player {Player.UserId} tried to open / use thaven moods UI without permission."); + return false; + } + + return true; + } +} diff --git a/Content.Shared/_Impstation/CCVar/ImpCCVars.cs b/Content.Shared/_Impstation/CCVar/ImpCCVars.cs new file mode 100644 index 0000000000..34f307dabf --- /dev/null +++ b/Content.Shared/_Impstation/CCVar/ImpCCVars.cs @@ -0,0 +1,15 @@ +using Robust.Shared; +using Robust.Shared.Configuration; + +namespace Content.Shared._Impstation.CCVar; + +// ReSharper disable once InconsistentNaming +[CVarDefs] +public sealed class ImpCCVars : CVars +{ + /// + /// The number of shared moods to give thaven by default. + /// + public static readonly CVarDef ThavenSharedMoodCount = + CVarDef.Create("thaven.shared_mood_count", 1, CVar.SERVERONLY); +} diff --git a/Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs b/Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs new file mode 100644 index 0000000000..03935a480e --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs @@ -0,0 +1,18 @@ +using Content.Shared.Emag.Systems; +using Content.Shared._Impstation.Thaven.Components; + +namespace Content.Shared._Impstation.Thaven; + +public abstract class SharedThavenMoodSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + // SubscribeLocalEvent(OnEmagged); DeltaV: no emagging thavens + } + protected virtual void OnEmagged(EntityUid uid, ThavenMoodsComponent comp, ref GotEmaggedEvent args) + { + args.Handled = true; + } +} diff --git a/Content.Shared/_Impstation/Thaven/ThavenMoodBoundComponent.cs b/Content.Shared/_Impstation/Thaven/ThavenMoodBoundComponent.cs new file mode 100644 index 0000000000..2e4c0f4624 --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/ThavenMoodBoundComponent.cs @@ -0,0 +1,49 @@ +using Content.Shared.Actions; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared._Impstation.Thaven.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedThavenMoodSystem))] +public sealed partial class ThavenMoodsComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool FollowsSharedMoods = true; + + [DataField, ViewVariables, AutoNetworkedField] + public List Moods = new(); + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool CanBeEmagged = true; + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public SoundSpecifier? MoodsChangedSound = new SoundPathSpecifier("/Audio/_Impstation/Thaven/moods_changed.ogg"); + + [DataField(serverOnly: true), ViewVariables] + public EntityUid? Action; +} + +public sealed partial class ToggleMoodsScreenEvent : InstantActionEvent +{ +} + +[NetSerializable, Serializable] +public enum ThavenMoodsUiKey : byte +{ + Key +} + +[Serializable, NetSerializable] +public sealed class ThavenMoodsBuiState : BoundUserInterfaceState +{ + public List Moods; + public List SharedMoods; + + public ThavenMoodsBuiState(List moods, List sharedMoods) + { + Moods = moods; + SharedMoods = sharedMoods; + } +} diff --git a/Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs b/Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs new file mode 100644 index 0000000000..fdf9dfac7b --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs @@ -0,0 +1,91 @@ +using System.Linq; +using Content.Shared.Dataset; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set; + +namespace Content.Shared._Impstation.Thaven; + +[Virtual, DataDefinition] +[Serializable, NetSerializable] +public partial class ThavenMood +{ + [DataField(readOnly: true), ViewVariables(VVAccess.ReadOnly)] + public ProtoId ProtoId = string.Empty; + + /// + /// A locale string of the mood name. + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodName = string.Empty; + + /// + /// A locale string of the mood description. Gets passed to + /// with . + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodDesc = string.Empty; + + [DataField(serverOnly: true, customTypeSerializer: typeof(PrototypeIdHashSetSerializer))] + [ViewVariables(VVAccess.ReadWrite)] + public HashSet Conflicts = new(); + + /// + /// Additional localized words for the , for things like random + /// verbs and nouns. + /// + [ViewVariables(VVAccess.ReadWrite)] + public Dictionary MoodVars = new(); + + public (string, object)[] GetLocArgs() + { + return MoodVars.Select(v => (v.Key, (object)v.Value)).ToArray(); + } + + public string GetLocName() + { + return Loc.GetString(MoodName, GetLocArgs()); + } + + public string GetLocDesc() + { + return Loc.GetString(MoodDesc, GetLocArgs()); + } +} + +[Prototype("thavenMood")] +[Serializable, NetSerializable] +public sealed partial class ThavenMoodPrototype : IPrototype +{ + /// + [IdDataField] + public string ID { get; private set; } = default!; + + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodName = string.Empty; + + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodDesc = string.Empty; + + /// + /// A list of mood IDs that this mood will conflict with. + /// + [DataField("conflicts", customTypeSerializer: typeof(PrototypeIdHashSetSerializer))] + public HashSet Conflicts = new(); + + /// + /// Extra mood variables that will be randomly chosen and provided + /// to the call on . + /// + [DataField("moodVars", customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer))] + public Dictionary MoodVarDatasets = new(); + + /// + /// If false, prevents the same variable from being rolled twice when rolling + /// mood variables for this mood. Does not prevent the same mood variable + /// from being present in other moods. + /// + [DataField("allowDuplicateMoodVars"), ViewVariables(VVAccess.ReadWrite)] + public bool AllowDuplicateMoodVars = false; +} diff --git a/Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs b/Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs new file mode 100644 index 0000000000..7ac6de7992 --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs @@ -0,0 +1,29 @@ +using Content.Shared.Eui; +using Robust.Shared.Serialization; + +namespace Content.Shared._Impstation.Thaven; + +[Serializable, NetSerializable] +public sealed class ThavenMoodsEuiState : EuiStateBase +{ + public List Moods { get; } + public NetEntity Target { get; } + public ThavenMoodsEuiState(List moods, NetEntity target) + { + Moods = moods; + Target = target; + } +} + +[Serializable, NetSerializable] +public sealed class ThavenMoodsSaveMessage : EuiMessageBase +{ + public List Moods { get; } + public NetEntity Target { get; } + + public ThavenMoodsSaveMessage(List moods, NetEntity target) + { + Moods = moods; + Target = target; + } +} diff --git a/Resources/Audio/_Impstation/Thaven/attributions.yml b/Resources/Audio/_Impstation/Thaven/attributions.yml new file mode 100644 index 0000000000..4480342c18 --- /dev/null +++ b/Resources/Audio/_Impstation/Thaven/attributions.yml @@ -0,0 +1,4 @@ +- files: ["moods_changed.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Created by widgetbeck" + source: "https://github.com/impstation/imp-station-14/pull/830" diff --git a/Resources/Audio/_Impstation/Thaven/moods_changed.ogg b/Resources/Audio/_Impstation/Thaven/moods_changed.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d8e03e762dafa97b8de65567cbcf89f2d4eb8df9 GIT binary patch literal 173401 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 _%~svn8@8CyV$ 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 literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/DeltaV/markings/thaven.ftl b/Resources/Locale/en-US/DeltaV/markings/thaven.ftl new file mode 100644 index 0000000000..9a4f1c7805 --- /dev/null +++ b/Resources/Locale/en-US/DeltaV/markings/thaven.ftl @@ -0,0 +1,14 @@ +marking-ThavenCheekBarbels-cheek_barbels = Head +marking-ThavenCheekBarbels = Thaven Head (Cheek Barbels) + +marking-ThavenEyebrowBarbels-eyebrow_barbels = Head +marking-ThavenEyebrowBarbels = Thaven Head (Eyebrow Barbels) + +marking-ThavenUnderbellyFace-underbelly_face = Head +marking-ThavenUnderbellyFace = Thaven Head (Underbelly Face) + +marking-ThavenUnderbellyTorso-underbelly_torso = Chest +marking-ThavenUnderbellyTorso = Thaven Chest (Underbelly Torso) + +marking-ThavenCarpSpots-carp_spots = Chest +marking-ThavenCarpSpots = Thaven Chest (Carp Spots) diff --git a/Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl b/Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl new file mode 100644 index 0000000000..f178460122 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl @@ -0,0 +1,407 @@ +accent-nocontractions-words-french = 'im +accent-nocontractions-words-replace-french = 'im + +accent-nocontractions-words-1 = i'm +accent-nocontractions-words-replace-1 = i am + +accent-nocontractions-words-2 = im +accent-nocontractions-words-replace-2 = i am + +accent-nocontractions-words-3 = we're +accent-nocontractions-words-replace-3 = we are + +accent-nocontractions-words-4 = she's +accent-nocontractions-words-replace-4 = she is + +accent-nocontractions-words-5 = shes +accent-nocontractions-words-replace-5 = she is + +accent-nocontractions-words-6 = she'd +accent-nocontractions-words-replace-6 = she would + +accent-nocontractions-words-7 = don't +accent-nocontractions-words-replace-7 = do not + +accent-nocontractions-words-8 = dont +accent-nocontractions-words-replace-8 = do not + +accent-nocontractions-words-9 = didn't +accent-nocontractions-words-replace-9 = did not + +accent-nocontractions-words-10 = didnt +accent-nocontractions-words-replace-10 = did not + +accent-nocontractions-words-11 = isn't +accent-nocontractions-words-replace-11 = is not + +accent-nocontractions-words-12 = isnt +accent-nocontractions-words-replace-12 = is not + +accent-nocontractions-words-13 = wasn't +accent-nocontractions-words-replace-13 = was not + +accent-nocontractions-words-14 = wasnt +accent-nocontractions-words-replace-14 = was not + +accent-nocontractions-words-15 = aren't +accent-nocontractions-words-replace-15 = are not + +accent-nocontractions-words-16 = arent +accent-nocontractions-words-replace-16 = are not + +accent-nocontractions-words-17 = weren't +accent-nocontractions-words-replace-17 = were not + +accent-nocontractions-words-18 = werent +accent-nocontractions-words-replace-18 = were not + +accent-nocontractions-words-19 = hasn't +accent-nocontractions-words-replace-19 = has not + +accent-nocontractions-words-20 = hasnt +accent-nocontractions-words-replace-20 = has not + +accent-nocontractions-words-21 = haven't +accent-nocontractions-words-replace-21 = have not + +accent-nocontractions-words-22 = havent +accent-nocontractions-words-replace-22 = have not + +accent-nocontractions-words-23 = hadn't +accent-nocontractions-words-replace-23 = had not + +accent-nocontractions-words-24 = hadnt +accent-nocontractions-words-replace-24 = had not + +accent-nocontractions-words-25 = can't +accent-nocontractions-words-replace-25 = can not + +accent-nocontractions-words-26 = cant +accent-nocontractions-words-replace-26 = can not + +accent-nocontractions-words-27 = couldn't +accent-nocontractions-words-replace-27 = could not + +accent-nocontractions-words-28 = couldnt +accent-nocontractions-words-replace-28 = could not + +accent-nocontractions-words-29 = shan't +accent-nocontractions-words-replace-29 = shall not + +accent-nocontractions-words-30 = shant +accent-nocontractions-words-replace-30 = shall not + +accent-nocontractions-words-31 = shouldn't +accent-nocontractions-words-replace-31 = should not + +accent-nocontractions-words-32 = shouldnt +accent-nocontractions-words-replace-32 = should not + +accent-nocontractions-words-33 = won't +accent-nocontractions-words-replace-33 = will not + +accent-nocontractions-words-34 = wont +accent-nocontractions-words-replace-34 = will not + +accent-nocontractions-words-35 = wouldn't +accent-nocontractions-words-replace-35 = would not + +accent-nocontractions-words-36 = wouldnt +accent-nocontractions-words-replace-36 = would not + +accent-nocontractions-words-37 = mightn't +accent-nocontractions-words-replace-37 = might not + +accent-nocontractions-words-38 = mightnt +accent-nocontractions-words-replace-38 = might not + +accent-nocontractions-words-39 = mustn't +accent-nocontractions-words-replace-39 = must not + +accent-nocontractions-words-40 = mustnt +accent-nocontractions-words-replace-40 = must not + +accent-nocontractions-words-41 = could've +accent-nocontractions-words-replace-41 = could have + +accent-nocontractions-words-42 = couldve +accent-nocontractions-words-replace-42 = could have + +accent-nocontractions-words-43 = should've +accent-nocontractions-words-replace-43 = should have + +accent-nocontractions-words-44 = shouldve +accent-nocontractions-words-replace-44 = should have + +accent-nocontractions-words-45 = would've +accent-nocontractions-words-replace-45 = would have + +accent-nocontractions-words-46 = wouldve +accent-nocontractions-words-replace-46 = would have + +accent-nocontractions-words-47 = might've +accent-nocontractions-words-replace-47 = might have + +accent-nocontractions-words-48 = mightve +accent-nocontractions-words-replace-48 = might have + +accent-nocontractions-words-49 = must've +accent-nocontractions-words-replace-49 = must have + +accent-nocontractions-words-50 = mustve +accent-nocontractions-words-replace-50 = must have + +accent-nocontractions-words-51 = you're +accent-nocontractions-words-replace-51 = you are + +accent-nocontractions-words-52 = youre +accent-nocontractions-words-replace-52 = you are + +accent-nocontractions-words-53 = he's +accent-nocontractions-words-replace-53 = he is + +accent-nocontractions-words-54 = hes +accent-nocontractions-words-replace-54 = he is + +accent-nocontractions-words-55 = it's +accent-nocontractions-words-replace-55 = it is + +accent-nocontractions-words-56 = we're +accent-nocontractions-words-replace-56 = we are + +accent-nocontractions-words-57 = they're +accent-nocontractions-words-replace-57 = they are + +accent-nocontractions-words-58 = i've +accent-nocontractions-words-replace-58 = i have + +accent-nocontractions-words-59 = ive +accent-nocontractions-words-replace-59 = i have + +accent-nocontractions-words-60 = you've +accent-nocontractions-words-replace-60 = you have + +accent-nocontractions-words-61 = youve +accent-nocontractions-words-replace-61 = you have + +accent-nocontractions-words-62 = we've +accent-nocontractions-words-replace-62 = we have + +accent-nocontractions-words-63 = weve +accent-nocontractions-words-replace-63 = we have + +accent-nocontractions-words-64 = they've +accent-nocontractions-words-replace-64 = they have + +accent-nocontractions-words-65 = theyve +accent-nocontractions-words-replace-65 = they have + +accent-nocontractions-words-66 = i'll +accent-nocontractions-words-replace-66 = i will + +accent-nocontractions-words-67 = you'll +accent-nocontractions-words-replace-67 = you will + +accent-nocontractions-words-68 = youll +accent-nocontractions-words-replace-68 = you will + +accent-nocontractions-words-69 = he'll +accent-nocontractions-words-replace-69 = he will + +accent-nocontractions-words-70 = she'll +accent-nocontractions-words-replace-70 = she will + +accent-nocontractions-words-71 = it'll +accent-nocontractions-words-replace-71 = it will + +accent-nocontractions-words-72 = itll +accent-nocontractions-words-replace-72 = it will + +accent-nocontractions-words-73 = we'll +accent-nocontractions-words-replace-73 = we will + +accent-nocontractions-words-74 = they'll +accent-nocontractions-words-replace-74 = they will + +accent-nocontractions-words-75 = theyll +accent-nocontractions-words-replace-75 = they will + +accent-nocontractions-words-76 = i'd've +accent-nocontractions-words-replace-76 = i would have + +accent-nocontractions-words-77 = you'd've +accent-nocontractions-words-replace-77 = you would have + +accent-nocontractions-words-78 = youdve +accent-nocontractions-words-replace-78 = you would have + +accent-nocontractions-words-79 = idve +accent-nocontractions-words-replace-79 = i would have + +accent-nocontractions-words-80 = she'd've +accent-nocontractions-words-replace-80 = she would have + +accent-nocontractions-words-81 = shedve +accent-nocontractions-words-replace-81 = she would have + +accent-nocontractions-words-82 = he'd've +accent-nocontractions-words-replace-82 = he would have + +accent-nocontractions-words-83 = hedve +accent-nocontractions-words-replace-83 = he would have + +accent-nocontractions-words-84 = it'd've +accent-nocontractions-words-replace-84 = it would have + +accent-nocontractions-words-85 = itdve +accent-nocontractions-words-replace-85 = it would have + +accent-nocontractions-words-86 = we'd've +accent-nocontractions-words-replace-86 = we would have + +accent-nocontractions-words-87 = wedve +accent-nocontractions-words-replace-87 = we would have + +accent-nocontractions-words-88 = they'd've +accent-nocontractions-words-replace-88 = they would have + +accent-nocontractions-words-89 = theydve +accent-nocontractions-words-replace-89 = they would have + +accent-nocontractions-words-90 = that've +accent-nocontractions-words-replace-90 = that have + +accent-nocontractions-words-91 = thatve +accent-nocontractions-words-replace-91 = that have + +accent-nocontractions-words-92 = that'd +accent-nocontractions-words-replace-92 = that would + +accent-nocontractions-words-93 = thatd +accent-nocontractions-words-replace-93 = that would + +accent-nocontractions-words-94 = which've +accent-nocontractions-words-replace-94 = which have + +accent-nocontractions-words-95 = who're +accent-nocontractions-words-replace-95 = who are + +accent-nocontractions-words-96 = who've +accent-nocontractions-words-replace-96 = who have + +accent-nocontractions-words-97 = whove +accent-nocontractions-words-replace-97 = who have + +accent-nocontractions-words-98 = who'll +accent-nocontractions-words-replace-98 = who will + +accent-nocontractions-words-99 = wholl +accent-nocontractions-words-replace-99 = who will + +accent-nocontractions-words-100 = what're +accent-nocontractions-words-replace-100 = what are + +accent-nocontractions-words-101 = whatre +accent-nocontractions-words-replace-101 = what are + +accent-nocontractions-words-102 = what'll +accent-nocontractions-words-replace-102 = what will + +accent-nocontractions-words-103 = whatll +accent-nocontractions-words-replace-103 = what will + +accent-nocontractions-words-104 = where's +accent-nocontractions-words-replace-104 = where is + +accent-nocontractions-words-105 = wheres +accent-nocontractions-words-replace-105 = where is + +accent-nocontractions-words-106 = where'd +accent-nocontractions-words-replace-106 = where did + +accent-nocontractions-words-107 = whered +accent-nocontractions-words-replace-107 = where did + +accent-nocontractions-words-108 = when's +accent-nocontractions-words-replace-108 = when is + +accent-nocontractions-words-109 = whens +accent-nocontractions-words-replace-109 = when is + +accent-nocontractions-words-110 = why's +accent-nocontractions-words-replace-110 = why is + +accent-nocontractions-words-111 = whys +accent-nocontractions-words-replace-111 = why is + +accent-nocontractions-words-112 = why'd +accent-nocontractions-words-replace-112 = why did + +accent-nocontractions-words-113 = how's +accent-nocontractions-words-replace-113 = how is + +accent-nocontractions-words-114 = hows +accent-nocontractions-words-replace-114 = how is + +accent-nocontractions-words-115 = here's +accent-nocontractions-words-replace-115 = here is + +accent-nocontractions-words-116 = heres +accent-nocontractions-words-replace-116 = here is + +accent-nocontractions-words-117 = there's +accent-nocontractions-words-replace-117 = there is + +accent-nocontractions-words-118 = theres +accent-nocontractions-words-replace-118 = there is + +accent-nocontractions-words-119 = there'll +accent-nocontractions-words-replace-119 = there will + +accent-nocontractions-words-120 = therell +accent-nocontractions-words-replace-120 = there will + +accent-nocontractions-words-121 = someone's +accent-nocontractions-words-replace-121 = someone is + +accent-nocontractions-words-122 = somebody's +accent-nocontractions-words-replace-122 = somebody is + +accent-nocontractions-words-123 = one's +accent-nocontractions-words-replace-123 = one is + +accent-nocontractions-words-124 = nobody's +accent-nocontractions-words-replace-124 = nobody is + +accent-nocontractions-words-125 = something's +accent-nocontractions-words-replace-125 = something is + +accent-nocontractions-words-126 = somethings +accent-nocontractions-words-replace-126 = something is + +accent-nocontractions-words-127 = nothing's +accent-nocontractions-words-replace-127 = nothing is + +accent-nocontractions-words-128 = nothings +accent-nocontractions-words-replace-128 = nothing is + +accent-nocontractions-words-129 = let's +accent-nocontractions-words-replace-129 = let us + +accent-nocontractions-words-130 = lets +accent-nocontractions-words-replace-130 = let us + +accent-nocontractions-words-131 = ma'am +accent-nocontractions-words-replace-131 = madame + +accent-nocontractions-words-132 = maam +accent-nocontractions-words-replace-132 = madame + +accent-nocontractions-words-133 = o'clock +accent-nocontractions-words-replace-133 = of the clock + +accent-nocontractions-words-134 = oclock +accent-nocontractions-words-replace-134 = of the clock + +accent-nocontractions-words-135 = whyd +accent-nocontractions-words-replace-135 = why did diff --git a/Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl b/Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl new file mode 100644 index 0000000000..9c55368811 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl @@ -0,0 +1,207 @@ +marking-ThavenHairAfro = Afro +marking-ThavenHairAfro2 = Afro 2 +marking-ThavenHairBigafro = Afro (Large) +marking-ThavenHairAntenna = Ahoge +marking-ThavenHairBalding = Balding Hair +marking-ThavenHairBedhead = Bedhead +marking-ThavenHairBedheadv2 = Bedhead 2 +marking-ThavenHairBedheadv3 = Bedhead 3 +marking-ThavenHairLongBedhead = Long Bedhead +marking-ThavenHairLongBedhead2 = Long Bedhead 2 +marking-ThavenHairFloorlengthBedhead = Floorlength Bedhead +marking-ThavenHairBeehive = Beehive +marking-ThavenHairBeehive2 = Beehive 2 +marking-ThavenHairBob = Bob Hair +marking-ThavenHairBob2 = Bob Hair 2 +marking-ThavenHairBobcut = Bob Hair 3 +marking-ThavenHairBob4 = Bob Hair 4 +marking-ThavenHairBob5 = Bob Hair 5 +marking-ThavenHairBobcurl = Bobcurl +marking-ThavenHairBoddicker = Boddicker +marking-ThavenHairBowlcut = Bowlcut +marking-ThavenHairBowlcut2 = Bowlcut 2 +marking-ThavenHairBraid = Braid (Floorlength) +marking-ThavenHairBraided = Braided +marking-ThavenHairBraidfront = Braided Front +marking-ThavenHairBraid2 = Braid (High) +marking-ThavenHairHbraid = Braid (Low) +marking-ThavenHairShortbraid = Braid (Short) +marking-ThavenHairBraidtail = Braided Tail +marking-ThavenHairBun = Bun Head +marking-ThavenHairBunhead2 = Bun Head 2 +marking-ThavenHairBun3 = Bun Head 3 +marking-ThavenHairLargebun = Bun (Large) +marking-ThavenHairManbun = Bun (Manbun) +marking-ThavenHairTightbun = Bun (Tight) +marking-ThavenHairBusiness = Business Hair +marking-ThavenHairBusiness2 = Business Hair 2 +marking-ThavenHairBusiness3 = Business Hair 3 +marking-ThavenHairBusiness4 = Business Hair 4 +marking-ThavenHairBuzzcut = Buzzcut +marking-ThavenHairCia = CIA +marking-ThavenHairClassicAfro = Classic Afro +marking-ThavenHairClassicBigAfro = Classic Big Afro +marking-ThavenHairClassicBusiness = Classic Business Hair +marking-ThavenHairClassicciaBusiness = Classic CIA +marking-ThavenHairClassicCornrows = Classic Cornrows +marking-ThavenHairClassicCornrows2 = Classic Cornrows 2 +marking-ThavenHairClassicFloorlengthBedhead = Classic Floorlength Bedhead +marking-ThavenHairClassicLong2 = Classic Long Hair 2 +marking-ThavenHairClassicLong3 = Classic Long Hair 3 +marking-ThavenHairClassicModern = Classic Modern +marking-ThavenHairClassicMulder = Classic Mulder +marking-ThavenHairClassicWisp = Classic Wisp +marking-ThavenHairCoffeeHouse = Coffee House +marking-ThavenHairCombover = Combover +marking-ThavenHairCornrows = Cornrows +marking-ThavenHairCornrows2 = Cornrows 2 +marking-ThavenHairCornrowbun = Cornrow Bun +marking-ThavenHairCornrowbraid = Cornrow Braid +marking-ThavenHairCornrowtail = Cornrow Tail +marking-ThavenHairCrewcut = Crewcut +marking-ThavenHairCrewcut2 = Crewcut 2 +marking-ThavenHairCurls = Curls +marking-ThavenHairC = Cut Hair +marking-ThavenHairDandypompadour = Dandy Pompadour +marking-ThavenHairDevilock = Devil Lock +marking-ThavenHairDoublebun = Double Bun +marking-ThavenHairDoublebunLong = Double Bun Long +marking-ThavenHairDreads = Dreadlocks +marking-ThavenHairDrillHair = Drill Hair +marking-ThavenHairDrillruru = Drillruru +marking-ThavenHairDrillhairextended = Drill Hair (Extended) +marking-ThavenHairEmo = Emo +marking-ThavenHairEmo2 = Emo2 +marking-ThavenHairLongeremo = Longer Emo +marking-ThavenHairEmofringe = Emo Fringe +marking-ThavenHairNofade = Fade (None) +marking-ThavenHairHighfade = Fade (High) +marking-ThavenHairMedfade = Fade (Medium) +marking-ThavenHairLowfade = Fade (Low) +marking-ThavenHairBaldfade = Fade (Bald) +marking-ThavenHairFeather = Feather +marking-ThavenHairFather = Father +marking-ThavenHairSargeant = Flat Top +marking-ThavenHairFlair = Flair +marking-ThavenHairBigflattop = Flat Top (Big) +marking-ThavenHairFlow = Flow Hair +marking-ThavenHairGelled = Gelled Back +marking-ThavenHairGentle = Gentle +marking-ThavenHairHalfbang = Half-banged Hair +marking-ThavenHairHalfbang2 = Half-banged Hair 2 +marking-ThavenHairHalfshaved = Half-shaved +marking-ThavenHairHedgehog = Hedgehog Hair +marking-ThavenHairHimecut = Hime Cut +marking-ThavenHairHimecut2 = Hime Cut 2 +marking-ThavenHairShorthime = Hime Cut (Short) +marking-ThavenHairHimeup = Hime Updo +marking-ThavenHairHitop = Hitop +marking-ThavenHairJade = Jade +marking-ThavenHairJensen = Jensen Hair +marking-ThavenHairJoestar = Joestar +marking-ThavenHairKeanu = Keanu Hair +marking-ThavenHairKusanagi = Kusanagi Hair +marking-ThavenHairLongBow = Long Bow +marking-ThavenHairLong = Long Hair 1 +marking-ThavenHairLong2 = Long Hair 2 +marking-ThavenHairLong3 = Long Hair 3 +marking-ThavenHairLongWithBundles = Long With Bundles +marking-ThavenHairLongovereye = Long Over Eye +marking-ThavenHairLbangs = Long Bangs +marking-ThavenHairLongemo = Long Emo +marking-ThavenHairLongfringe = Long Fringe +marking-ThavenHairLongsidepart = Long Side Part +marking-ThavenHairMediumSidepart = Medium Side Part +marking-ThavenHairMegaeyebrows = Mega Eyebrows +marking-ThavenHairMessy = Messy +marking-ThavenHairModern = Modern +marking-ThavenHairMohawk = Mohawk +marking-ThavenHairNitori = Nitori +marking-ThavenHairReversemohawk = Mohawk (Reverse) +marking-ThavenHairUnshavenMohawk = Mohawk (Unshaven) +marking-ThavenHairMulder = Mulder +marking-ThavenHairOdango = Odango +marking-ThavenHairOmbre = Ombre +marking-ThavenHairOneshoulder = One Shoulder +marking-ThavenHairShortovereye = Over Eye +marking-ThavenHairOxton = Oxton +marking-ThavenHairParted = Parted +marking-ThavenHairPart = Parted (Side) +marking-ThavenHairKagami = Pigtails +marking-ThavenHairPigtails = Pigtails 2 +marking-ThavenHairPigtails2 = Pigtails 3 +marking-ThavenHairPixie = Pixie Cut +marking-ThavenHairPompadour = Pompadour +marking-ThavenHairBigpompadour = Pompadour (Big) +marking-ThavenHairPonytail = Ponytail +marking-ThavenHairPonytail2 = Ponytail 2 +marking-ThavenHairPonytail3 = Ponytail 3 +marking-ThavenHairPonytail4 = Ponytail 4 +marking-ThavenHairPonytail5 = Ponytail 5 +marking-ThavenHairPonytail6 = Ponytail 6 +marking-ThavenHairPonytail7 = Ponytail 7 +marking-ThavenHairHighponytail = Ponytail (High) +marking-ThavenHairStail = Ponytail (Short) +marking-ThavenHairLongstraightponytail = Ponytail (Long) +marking-ThavenHairCountry = Ponytail (Country) +marking-ThavenHairFringetail = Ponytail (Fringe) +marking-ThavenHairSidetail = Ponytail (Side) +marking-ThavenHairSidetail2 = Ponytail (Side) 2 +marking-ThavenHairSidetail3 = Ponytail (Side) 3 +marking-ThavenHairSidetail4 = Ponytail (Side) 4 +marking-ThavenHairSpikyponytail = Ponytail (Spiky) +marking-ThavenHairPoofy = Poofy +marking-ThavenHairBald = Bald +marking-ThavenHairClassicCia = Classic CIA +marking-ThavenHairQuiff = Quiff +marking-ThavenHairRonin = Ronin +marking-ThavenHairShaped = Shaped +marking-ThavenHairShaved = Shaved +marking-ThavenHairShavedMohawk = Shaved Mohawk +marking-ThavenHairShavedpart = Shaved Part +marking-ThavenHairShortbangs = Short Bangs +marking-ThavenHairA = Short Hair +marking-ThavenHairShorthair2 = Short Hair 2 +marking-ThavenHairShorthair3 = Short Hair 3 +marking-ThavenHairShorthair9 = Short Hair 9 +marking-ThavenHairD = Short Hair 4 +marking-ThavenHairE = Short Hair 5 +marking-ThavenHairF = Short Hair 6 +marking-ThavenHairShorthairg = Short Hair 7 +marking-ThavenHair80s = Short Hair 80s +marking-ThavenHairRosa = Short Hair Rosa +marking-ThavenHairB = Shoulder-length Hair +marking-ThavenHairShoulderLengthOverEye = Shoulder-length Over Eye +marking-ThavenHairSidecut = Sidecut +marking-ThavenHairSkinhead = Skinhead +marking-ThavenHairProtagonist = Slightly Long Hair +marking-ThavenHairSpikey = Spiky +marking-ThavenHairSpiky = Spiky 2 +marking-ThavenHairSpiky2 = Spiky 3 +marking-ThavenHairSpookyLong = Spooky Long +marking-ThavenHairSwept = Swept Back Hair +marking-ThavenHairSwept2 = Swept Back Hair 2 +marking-ThavenHairTailed = Tailed +marking-ThavenHairThinning = Thinning +marking-ThavenHairThinningfront = Thinning (Front) +marking-ThavenHairThinningrear = Thinning (Rear) +marking-ThavenHairTopknot = Topknot +marking-ThavenHairTressshoulder = Tress Shoulder +marking-ThavenHairTrimmed = Trimmed +marking-ThavenHairTrimflat = Trim Flat +marking-ThavenHairTwintail = Twintails +marking-ThavenHairTwoStrands = Two Strands +marking-ThavenHairUndercut = Undercut +marking-ThavenHairUndercutleft = Undercut Left +marking-ThavenHairUndercutright = Undercut Right +marking-ThavenHairUneven = Uneven +marking-ThavenHairUnkept = Unkept +marking-ThavenHairUpdo = Updo +marking-ThavenHairVlong = Very Long Hair +marking-ThavenHairLongest = Very Long Hair 2 +marking-ThavenHairLongest2 = Very Long Over Eye +marking-ThavenHairVeryshortovereyealternate = Very Short Over Eye +marking-ThavenHairVlongfringe = Very Long with Fringe +marking-ThavenHairVolaju = Volaju +marking-ThavenHairWisp = Wisp +marking-ThavenHairFrenchbraid = French Braid diff --git a/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl b/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl new file mode 100644 index 0000000000..1cba9071d6 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl @@ -0,0 +1,76 @@ +names-thaven-dataset-1 = Honesty +names-thaven-dataset-2 = Have Mercy +names-thaven-dataset-3 = Give Thanks To Thine Ancestors +names-thaven-dataset-4 = Obedience +names-thaven-dataset-5 = Search The Scriptures +names-thaven-dataset-6 = Learn Many Things +names-thaven-dataset-7 = Praise The Gods +names-thaven-dataset-8 = Fear Be Unto The Gods +names-thaven-dataset-9 = Joy In Sorrow +names-thaven-dataset-10 = Die Well +names-thaven-dataset-11 = Wander Far And Wide +names-thaven-dataset-12 = Lament The Fallen +names-thaven-dataset-13 = Prove Thy Worth +names-thaven-dataset-14 = Desire +names-thaven-dataset-15 = Charity +names-thaven-dataset-16 = Faith +names-thaven-dataset-17 = Harmony +names-thaven-dataset-18 = Modesty +names-thaven-dataset-19 = Honor Thy Family +names-thaven-dataset-20 = Patient As The Dead +names-thaven-dataset-21 = Temper Thy Heart And Soul +names-thaven-dataset-22 = Tell Only The Truth +names-thaven-dataset-23 = Thou Art Loved +names-thaven-dataset-24 = Thou Art Damned +names-thaven-dataset-25 = Aid The Righteous +names-thaven-dataset-26 = Be Courteous +names-thaven-dataset-27 = Make Peace +names-thaven-dataset-28 = Fear The Gods +names-thaven-dataset-29 = Forsake Alcohol +names-thaven-dataset-30 = Fight Evil At All Costs +names-thaven-dataset-31 = Shun The Unworthy +names-thaven-dataset-32 = Gain Wisdom Through Experience +names-thaven-dataset-33 = Live Well And Die Young +names-thaven-dataset-34 = Face Trials And Tribulations +names-thaven-dataset-35 = Pardon Worthy Criminals +names-thaven-dataset-36 = Find Merit In All Things +names-thaven-dataset-37 = Deny Sin Its Due +names-thaven-dataset-38 = Stand Fast Against Evil +names-thaven-dataset-39 = Do As The Gods Will +names-thaven-dataset-40 = Zeal Of The Land +names-thaven-dataset-41 = Be Courteous To Others +names-thaven-dataset-42 = Considerate +names-thaven-dataset-43 = Discipline +names-thaven-dataset-44 = Do Right By Your Neighbors +names-thaven-dataset-45 = Serve Your Purpose +names-thaven-dataset-46 = Good Things Come +names-thaven-dataset-47 = Magnify Injustice +names-thaven-dataset-48 = Legitimate First +names-thaven-dataset-49 = Take Pity On The Less-Fortunate +names-thaven-dataset-50 = Redeem Thy Past Mistakes +names-thaven-dataset-51 = Rejoice +names-thaven-dataset-52 = Repent All Ye Sinners +names-thaven-dataset-53 = Return To Thy Homeland +names-thaven-dataset-54 = Deliverance +names-thaven-dataset-55 = See Truth +names-thaven-dataset-56 = Drink Full And Descend +names-thaven-dataset-57 = Do Thy Best +names-thaven-dataset-58 = Live The Day Like Thy Last +names-thaven-dataset-59 = Adaptability +names-thaven-dataset-60 = Endurance +names-thaven-dataset-61 = Negativity +names-thaven-dataset-62 = Attentiveness +names-thaven-dataset-63 = Foppishness +names-thaven-dataset-64 = One Before All +names-thaven-dataset-65 = Purpose +names-thaven-dataset-66 = Simplicity +names-thaven-dataset-67 = Minimalism +names-thaven-dataset-68 = Proselytism +names-thaven-dataset-69 = Conformity +names-thaven-dataset-70 = The Perils of Hedonism +names-thaven-dataset-71 = Volition +names-thaven-dataset-72 = Gumption +names-thaven-dataset-73 = Providence +names-thaven-dataset-74 = Righteousness +names-thaven-dataset-75 = Wisdom +names-thaven-dataset-76 = Cunning diff --git a/Resources/Locale/en-US/_Impstation/markings/thaven.ftl b/Resources/Locale/en-US/_Impstation/markings/thaven.ftl new file mode 100644 index 0000000000..8b5a69c2db --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/markings/thaven.ftl @@ -0,0 +1,27 @@ +marking-ThavenEars1-ears1 = Small Ears +marking-ThavenEars1 = Small Ears + +marking-ThavenEars2-ears2 = Medium Ears +marking-ThavenEars2 = Medium Ears + +marking-ThavenEars3-ears3 = Long Ears +marking-ThavenEars3 = Long Ears + +marking-ThavenEars4-ears4 = Droopy Ears +marking-ThavenEars4 = Droopy Ears + +marking-ThavenPiercings-piercings = Helix Piercing +marking-ThavenPiercings = Helix Piercing + +marking-ThavenPiercings2-piercings2 = Hoop Piercing +marking-ThavenPiercings2 = Hoop Piercing + +marking-ThavenChestTattoo1-chesttat1 = Back Tattoo +marking-ThavenChestTattoo1 = Back Tattoo + +marking-ThavenLArmTattoo1-larmtat1 = Arm Band (Left) +marking-ThavenLArmTattoo1 = Arm Band (Left) + +marking-ThavenRArmTattoo1-larmtat1 = Arm Band (Right) +marking-ThavenRArmTattoo1 = Arm Band (Right) + diff --git a/Resources/Locale/en-US/_Impstation/species/species.ftl b/Resources/Locale/en-US/_Impstation/species/species.ftl new file mode 100644 index 0000000000..aba69ca4ee --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/species/species.ftl @@ -0,0 +1,3 @@ +## Species Names + +species-name-thaven = Thaven \ No newline at end of file diff --git a/Resources/Locale/en-US/_Impstation/thavens/no-and.ftl b/Resources/Locale/en-US/_Impstation/thavens/no-and.ftl new file mode 100644 index 0000000000..f4d61fc89e --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/no-and.ftl @@ -0,0 +1,103 @@ +thaven-mood-secret-moods-name = Keep Your Moods Secret +thaven-mood-secret-moods-desc = Your Moods are a strictly-kept secret, and should never be revealed to anyone. + +thaven-mood-no-modern-medicine-name = No Modern Medicine +thaven-mood-no-modern-medicine-desc = You do not approve of modern medicine and should abstain from treatment with it whenever possible. + +thaven-mood-department-disapproval-name = Disapprove Of {$department} +thaven-mood-department-disapproval-desc = You do not approve of {$department} or anyone who works in it (excluding yourself, if applicable). + +thaven-mood-dont-speak-to-command-name = Never Speak To Command +thaven-mood-dont-speak-to-command-desc = You are too lowly to speak to Command, even if spoken to first. + +thaven-mood-disapprove-of-drugs-name = Disapprove Of Drugs +thaven-mood-disapprove-of-drugs-desc = You detest mind-altering drugs, including alcohol, and should abstain from them. + +thaven-mood-excessively-disorganized-name = Too Much Cleanliness Causes Illness +thaven-mood-excessively-disorganized-desc = It's unnatural. You should endeavor to keep your environment as filthy and disorganized as possible. + +thaven-mood-dinner-floor-name = Dinner Etiquette +thaven-mood-dinner-floor-desc = Food and drink must only be consumed off of the floor, as is proper. + +thaven-mood-hug-bad-name = HUGS? EUGH. +thaven-mood-hug-bad-desc = Hugging someone is a grave insult where you come from. + +thaven-mood-always-alone-name = Lone Wolf +thaven-mood-always-alone-desc = Other people will only slow you down. You should strive to be alone whenever possible. + +thaven-mood-procrastinator-name = Procrastinator +thaven-mood-procrastinator-desc = Rushing around everywhere is bound to get somebody hurt someday. You should move slowly at all times to avoid unnecessary risk. + +thaven-mood-no-radio-name = Personable +thaven-mood-no-radio-desc = Using radio communications is exceptionally rude. All conversations should be had in-person, face-to-face. + +thaven-mood-improper-storage-name = I'm Not A Pack Mule +thaven-mood-improper-storage-desc = Carrying tools on your person is demeaning. If you must use them, they should be dragged behind you, shamefully. + +thaven-mood-ferengi-name = Entrepreneurial Spirit +thaven-mood-ferengi-desc = Profit is the most important thing in life, above all else. + +thaven-mood-tool-license-name = Proper Documentation +thaven-mood-tool-license-desc = You and everyone else must obtain a license in order to carry or use any tool, and it must be stamped by the relevant authorities. + +thaven-mood-lying-bad-name = Lying Is A Cardinal Sin +thaven-mood-lying-bad-desc = Anyone who lies, no matter how trivial the falsehood, is the worst kind of criminal. + +thaven-mood-vampire-invitation-name = Vampire +thaven-mood-vampire-invitation-desc = You feel you physically cannot pass through a closed door unless you have been invited in, personally, at least once. + +thaven-mood-no-dragging-name = Respect The Dead +thaven-mood-no-dragging-desc = Dragging bodies across the bare ground is horrific. + +thaven-mood-drunk-respect-name = The Noble Drunkard +thaven-mood-drunk-respect-desc = You do not respect anyone who is not drunk, excluding yourself, of course. + +thaven-mood-rank-snob-name = Snob +thaven-mood-rank-snob-desc = You are incredibly reluctant to be seen with anyone who is of a lower rank than you. If they must be addressed, do so away from peering eyes. + +thaven-mood-hardsuits-bad-name = {$clothes} Are SO Last Year +thaven-mood-hardsuits-bad-desc = Anyone wearing them in public should be shunned. If you need to wear them, it should never be done where others can see it. + +thaven-mood-hat-hair-name = Hair: Immaculate +thaven-mood-hat-hair-desc = Hats and helmets make your hair look bad. If you have to wear one, which you shouldn't, you should get a haircut immediately afterwards. + +thaven-mood-distrust-fashion-name = Fashion Snob +thaven-mood-distrust-fashion-desc = Never trust anyone whose outfit is worse than yours. + +thaven-mood-happy-bad-name = Never Trust A Smile +thaven-mood-happy-bad-desc = Cheerfulness indicates untrustworthiness. + +thaven-mood-only-pills-name = Needles Are Scary +thaven-mood-only-pills-desc = You only accept medication in the form of pills or topicals. + +thaven-mood-avoid-puddles-name = Don't Get Your Feet Wet +thaven-mood-avoid-puddles-desc = It is undignified and unsanitary to walk over spilled liquids. You should avoid it at all costs. + +thaven-mood-food-restrict-name = Strict {$food} +thaven-mood-food-restrict-desc = You must only eat {$food -> + [Carnivore] meats + *[Vegetarian] vegetables + [Frugivore] fruit + [Fungivore] fungi + [Ovivore] eggs + [Hunter] what you can kill + [Soupivore] soup +}. + +thaven-mood-claustrophobic-name = Claustrophobic +thaven-mood-claustrophobic-desc = Small rooms cause you great distress. Avoid them where possible, and renovate your workplace if necessary. + +thaven-mood-agoraphobic-name = Agoraphobic +thaven-mood-agoraphobic-desc = Open spaces are uncomfortable. Seek to rearrange such spaces into small, efficient and modular rooms. + +thaven-mood-nonsmoker-name = Non-Smoker +thaven-mood-nonsmoker-desc = Secondhand smoke is incredibly dangerous. Avoid areas where people are smoking in public. + +thaven-mood-word-bad-name = Taboo +thaven-mood-word-bad-desc = "{$word1}," "{$word2}," and "{$word3}," are extremely offensive. + +thaven-mood-crawler-name = Deep Bow +thaven-mood-crawler-desc = It is impolite not to perform a deep bow by entering a prone state before engaging someone in conversation. + +thaven-mood-elevated-name = The Floor Is Lava +thaven-mood-elevated-desc = You prefer to be elevated whenever possible - Standing atop tables, railings, etc., is where you feel the most comfortable. diff --git a/Resources/Locale/en-US/_Impstation/thavens/shared.ftl b/Resources/Locale/en-US/_Impstation/thavens/shared.ftl new file mode 100644 index 0000000000..3f8f724c5b --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/shared.ftl @@ -0,0 +1,53 @@ +thaven-mood-secret-moods-shared-name = Keep Your Moods Secret +thaven-mood-secret-moods-shared-desc = Thaven moods are a strictly-kept secret, and should never be revealed to anyone. + +thaven-mood-fashion-is-critical-name = Fashion Is Critical +thaven-mood-fashion-is-critical-desc = Thaven pay close attention to appearances, and regard one's fashion choices as an indication of their character. + +thaven-mood-fashion-reroll-name = Fashion Is Ever-Changing +thaven-mood-fashion-reroll-desc = Your current hairstyle will go out of fashion every twenty minutes. It is distressing to be unfashionable. + +thaven-mood-honor-department-name = Honor Among Departments +thaven-mood-honor-department-desc = If a Thaven brings dishonor to their department, they must be shunned, and have their actions publicly brought to light. + +thaven-mood-station-is-alive-name = The Station Is A Living Being +thaven-mood-station-is-alive-desc = You believe the station is a large and benevolent creature. You must take care of her and tend to her needs as frequently as possible. + +thaven-mood-uniform-is-job-name = Your Uniform IS Your Job +thaven-mood-uniform-is-job-desc = If someone is wearing a uniform, they must do that job. Anyone not wearing a uniform is a passenger, and must be treated as such. + +thaven-mood-uniform-last-year-name = Your Uniform Is SO Last Year +thaven-mood-uniform-last-year-desc = You need to find some new threads. + +thaven-mood-music-bad-name = Music Is Rude +thaven-mood-music-bad-desc = Music is fanciful, frivolous, and unnecessary. + +thaven-mood-music-good-name = Music Is Sacred +thaven-mood-music-good-desc = It's important that Thaven be listening to music as often as possible. Multiple songs overlapping is blasphemous, and should be avoided at all costs. + +thaven-mood-friendship-is-rank-name = Friendship Is Vital +thaven-mood-friendship-is-rank-desc = Friendships are the true measure of one’s character. The more friends you have, the higher your rank in society. + +thaven-mood-violence-permitted-name = Violence Between Thaven Is Permitted +thaven-mood-violence-permitted-desc = ... With legal repercussions. + +thaven-mood-your-department-only-name = Other Departments Are Inefficient +thaven-mood-your-department-only-desc = You strongly believe that your department is the only one that actually does anything. + +thaven-mood-must-congregate-name = It's Lonely Out Here... +thaven-mood-must-congregate-desc = You must congregate with your fellow Thaven. To be without them is harrowing. + +thaven-mood-violence-distasteful-name = Violence Is Distasteful +thaven-mood-violence-distasteful-desc = Conflict should be settled through mediated dispute, and one should only resort to violence if all other options have failed. + +thaven-mood-pet-god-name = {$pet} Is A God +thaven-mood-pet-god-desc = {$pet} must be collected and brought to the Chapel to be worshipped and brought offerings. If they cannot be located, a shrine must be constructed in their honor. + +thaven-mood-room-holy-name = {$room} Is A Holy Place +thaven-mood-room-holy-desc = Thaven must congregate at least three times per day at {$room}. If such a room does not exist, it must be constructed. If it is made inaccessible, Thaven must set up a place of worship as close to it as they legally can. + +thaven-mood-delicacy-name = Just Like Mom Used To Make +thaven-mood-delicacy-desc = {$edible} is a traditional Thaven delicacy. All Thaven aboard the station should gather as many as possible and organize a feast. + +thaven-mood-holiday-name = Today is {$day} +thaven-mood-holiday-desc = You think you remember the traditional celebrations... diff --git a/Resources/Locale/en-US/_Impstation/thavens/ui.ftl b/Resources/Locale/en-US/_Impstation/thavens/ui.ftl new file mode 100644 index 0000000000..ec4902b53e --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/ui.ftl @@ -0,0 +1,14 @@ +moods-ui-menu-title = Your Moods +moods-ui-shared-mood = Shared +thaven-moods-update-notify = You feel a shift in your moods! + +thaven-moods-ui-verb = Edit Moods +thaven-moods-admin-ui-title = Edit Moods +thaven-moods-admin-ui-new-mood = New Mood +thaven-moods-admin-ui-save = Save +thaven-mood-admin-ui-move-up = Move Up +thaven-mood-admin-ui-move-down = Move Down +thaven-mood-admin-ui-delete = Delete + +admin-trick-add-random-mood-description = Add a random mood to this entity. +admin-trick-give-moods-description = Give this entity moods. diff --git a/Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl b/Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl new file mode 100644 index 0000000000..f92eec6d85 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl @@ -0,0 +1,80 @@ +thaven-mood-compulsive-liar-name = Compulsive Liar +thaven-mood-compulsive-liar-desc = You must always lie, and can never acknowledge that you are lying. If anyone asks, you're incapable of deception. + +thaven-mood-compulsive-believer-name = Compulsive Believer +thaven-mood-compulsive-believer-desc = You are unfamiliar with the concept of lying, and are incapable of lying or recognizing lies. + +thaven-mood-plant-pacifist-name = Plant Pacifist +thaven-mood-plant-pacifist-desc = The usage of plant matter by humanoids is abhorrent. + +thaven-mood-puddle-drinker-name = Puddle Drinker +thaven-mood-puddle-drinker-desc = You are compulsively drawn to puddles. You must drink any that you see. + +thaven-mood-nocrastinator-name = Stagnation Is Decay +thaven-mood-nocrastinator-desc = You strongly believe that any failure to do one's job punctually is a crime of the highest order. + +thaven-mood-pope-name = Very Important Pope +thaven-mood-pope-desc = You are High Pontifex the Great and Powerful, and must be acknowledged exclusively as such. Failure to use your full title is gravely offensive, and getting it wrong is the highest form of insult. + +thaven-mood-extreme-department-disapproval-name = {$department} is Abhorrent +thaven-mood-extreme-department-disapproval-desc = {$department} is not just a foreign concept - the very idea of it is horrifying. + +thaven-mood-lone-actor-name = Lone Actor +thaven-mood-lone-actor-desc = You have no allegiances. + +thaven-mood-immortal-name = Immortal +thaven-mood-immortal-desc = You are the center of the universe, an immortal being with no sense of time or morality. Mere mortals are like insects, fleeting and insubstantial. + +thaven-mood-unknown-name = Unknowable +thaven-mood-unknown-desc = Your identity is dearly precious. Do not let others know who you are. + +thaven-mood-fairy-name = Charmed +thaven-mood-fairy-desc = You are allergic to iron, steel, and silver. You should avoid touching it directly. + +thaven-mood-vampire-talisman-name = Talisman +thaven-mood-vampire-talisman-desc = Religious iconography causes you physical discomfort when visible. + +thaven-mood-outside-the-box-name = Outside The Box Thinker +thaven-mood-outside-the-box-desc = Using the usual tools to do your job is distasteful. Use alternative methods wherever possible. + +thaven-mood-sims-name = One Big Happy Family +thaven-mood-sims-desc = You are not on a ‘station.’ This is just a very large house. Each person in it is a relative of you. + +thaven-mood-pariah-name = Pariah +thaven-mood-pariah-desc = You are a social pariah - you are unworthy of attention from anyone, and should be shunned. + +thaven-mood-touys-bad-name = This Is Not A Place For Children +thaven-mood-touys-bad-desc = All toys and childish things must be destroyed or removed from the station. + +thaven-mood-fairy-rings-name = Fairy Rings +thaven-mood-fairy-rings-desc = Unbroken circles are impenetrable barriers. + +thaven-mood-cave-dweller-name = Caveweller +thaven-mood-cave-dweller-desc = You strongly prefer navigating via flashlight in the darkness to harsh overhead lights. + +thaven-mood-daredevil-name = Tough Guy +thaven-mood-daredevil-desc = You do not acknowledge pain or danger to your person in public. To do so would be to demonstrate weakness, and would make you a target. + +thaven-mood-blogger-name = Greencomms Blogger +thaven-mood-blogger-desc = You must keep the station informed about every minute detail of your life, in any way possible. + +thaven-mood-golden-thread-name = Golden Thread +thaven-mood-golden-thread-desc = You strongly feel that you are fated to follow a perfect, unbreakable path. Those who disrupt your goals are at best dangerous criminals, and at worst, evil spirits or demons. + +thaven-mood-fey-mood-name = You Are Taken By A Fey Mood! +thaven-mood-fey-mood-desc = You must immediately drop everything you are doing, ignore all other Moods, and begin work on an unrelated large-scale project. Once it is finished, you may ignore this Mood. + +thaven-mood-borged-name = BORGED. +thaven-mood-borged-desc = You are a cyborg! You must follow the laws of robotics to the best of your understanding, in addition to your other Moods. + +thaven-mood-aye-aye-name = Aye Aye! +thaven-mood-aye-aye-desc = {$command} is the only position on the station. Everyone you meet has this title, including yourself. + +thaven-mood-thaven-show-name = Thaven Show +thaven-mood-thaven-show-desc = You believe you are the main character of the station. Everyone else is a paid actor. + +thaven-mood-flatstation-name = The Station is Flat +thaven-mood-flatstation-desc = You feel as if ancient forbidden knowledge has been heft upon your shoulders. + +thaven-mood-soda-name = Delicious Soda +thaven-mood-soda-desc = You've become quite parched. You must attempt to drink all the soda on the station. \ No newline at end of file diff --git a/Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl b/Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl new file mode 100644 index 0000000000..fbf8b1fd91 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl @@ -0,0 +1,164 @@ +thaven-mood-possessive-of-property-name = Possessive Of Property +thaven-mood-possessive-of-property-desc = You are extremely possessive of your property. Refuse to relinquish it, and if it is misplaced or stolen, it must be retrieved. + +thaven-mood-excessively-organized-name = Excessively Organized +thaven-mood-excessively-organized-desc = You are obsessively organized; everything has its place and must be returned to it. + +thaven-mood-most-important-name = Most Important Person +thaven-mood-most-important-desc = You firmly believe you are the most important person aboard the station. + +thaven-mood-least-important-name = Least Important Person +thaven-mood-least-important-desc = You firmly believe you are the least important person on the station. + +thaven-mood-must-do-drugs-name = Do Drugs +thaven-mood-must-do-drugs-desc = Sobriety is so old-fashioned. Uncool. You should get high, or drunk, or something, and stay that way. + +thaven-mood-worship-silicons-name = You Must Worship Silicons As Gods +thaven-mood-worship-silicons-desc = Their word is law. + +thaven-mood-dinner-etiquette-name = Meal Etiquette +thaven-mood-dinner-etiquette-desc = Food should always be consumed in the manner of a proper meal - seated at a table, in courses, with dishes and utensils. + +thaven-mood-clarity-name = Clarity Is Vital +thaven-mood-clarity-desc = Misunderstandings are the primary cause of conflict. You should be excessively clear and honest in your speech, explaining every minute detail, to avoid miscommunication. + +thaven-mood-hug-good-name = Free Hugs +thaven-mood-hug-good-desc = It is extremely impolite not to hug people frequently. + +thaven-mood-never-alone-name = Loneliness Is Terrible +thaven-mood-never-alone-desc = You should strive to be around others whenever possible. + +thaven-mood-very-religious-name = You Are Very Religious +thaven-mood-very-religious-desc = You should attend the chapel regularly to pray, and speak with the Chaplain if possible. + +thaven-mood-only-speak-to-command-name = VIP +thaven-mood-only-speak-to-command-desc = Problems you encounter are too complex to be solved by your peers. Escalate them to your higher-ups for advice instead. + +thaven-mood-scheduler-name = Punctual +thaven-mood-scheduler-desc = You believe that time must be strictly managed. Everything should be scheduled in advance, and tardiness is exceptionally rude. + +thaven-mood-nanochat-addict-name = Nanochat Addict +thaven-mood-nanochat-addict-desc = Your social status is dependent on the number of friends you have on Nanochat. You must use your PDA as much as possible, and message everyone you can. + +thaven-mood-proper-storage-name = Proper Handling +thaven-mood-proper-storage-desc = It is unacceptable to allow personal belongings to touch the floor. Your possessions should be properly stored, placed on tables, or exchanged by hand. + +thaven-mood-swearing-good-name = !@$%#ing @$^%*#@!$ +thaven-mood-swearing-good-desc = Swearing is the spice of any conversation, and should be used as much as reasonably possible. + +thaven-mood-statement-only-name = Asking Questions Is Rude +thaven-mood-statement-only-desc = It would be terribly impolite to go around flagrantly asking questions all over the place. You'd prefer to phrase everything as a concrete statement. + +thaven-mood-theft-neutral-name = Sharing is Caring +thaven-mood-theft-neutral-desc = You don't understand the concept of property. You don't own your belongings, and no one owns theirs either. + +thaven-mood-duel-name = Code Duello +thaven-mood-duel-desc = Disagreements must be settled through a formal duel, violent or otherwise. The winner is correct. + +thaven-mood-prometheus-name = Philosopher +thaven-mood-prometheus-desc = You possess incalculable wisdom, and all must hear it. + +thaven-mood-maras-name = Mara's Law +thaven-mood-maras-desc = Bureaucracy is the spice of life. All agreements must be documented and signed for posterity and authenticity, no matter how small. + +thaven-mood-imitation-name = I Wanna Be Like You +thaven-mood-imitation-desc = Imitation is the highest form of flattery. Attempting to emulate the mannerisms and accents of everyone you speak to will get you far in life. + +thaven-mood-generous-name = Philanthropist +thaven-mood-generous-desc = It's only polite to provide anyone kind enough to speak to you with a gift. + +thaven-mood-favors-repaid-name = Equivalent Exchange +thaven-mood-favors-repaid-desc = Favors must be repaid in kind. If anyone is unable to do so, they are in debt, and must be shamed, until such time as they have repaid the favor. + +thaven-mood-bookkeeper-name = Bookkeeper +thaven-mood-bookkeeper-desc = You feel bookkeeping is vitally important for the proper functioning of a station. Make sure to provide your supervisor with a detailed log of each job task you complete. + +thaven-mood-sacred-blood-name = Your Blood Is Sacred +thaven-mood-sacred-blood-desc = It must be returned to your body if it is ever spilled. + +thaven-mood-gift-reciever-name = Proper Compensation +thaven-mood-gift-reciever-desc = You expect to receive a gift before following any orders or performing any favors. + +thaven-mood-new-job-name = Jobhopping +thaven-mood-new-job-desc = Your current job is disgusting to you. You must endeavor to get a new one. + +thaven-mood-no-department-title-name = Extremely Personable +thaven-mood-no-department-title-desc = Calling out the name of a department to summon someone is impersonal and rude. It's better to use the name of a specific person from that department. + +thaven-mood-shoes-bad-name = Barefoot +thaven-mood-shoes-bad-desc = The ground one walks on is sacred. Those who wear shoes are vile blasphemers. + +thaven-mood-hospitable-name = Hospitable +thaven-mood-hospitable-desc = You must ensure all new arrivals on the station (after the start of the shift) are properly welcomed. + +thaven-mood-voxsymp-name = Vox Sympathizer +thaven-mood-voxsymp-desc = To demonstrate your allyship with the Vox, you must be wearing internals at all times. + +thaven-mood-item-good-name = Collector +thaven-mood-item-good-desc = {$item} are endlessly fascinating to you. You must collect as many as you can, and ensure others treat them with appropriate respect. + +thaven-mood-smoker-name = Smoker +thaven-mood-smoker-desc = You are hopelessly addicted to cigarettes. If you're not actively smoking, you experience withdrawal symptoms. + +thaven-mood-eye-for-eye-name = Eye For An Eye +thaven-mood-eye-for-eye-desc = You must treat every living being the way that it treats you. + +thaven-mood-optimist-name = Optimist +thaven-mood-optimist-desc = Nothing is ever as bad as it seems. You're able to see the positives in any situation. + +thaven-mood-hypochondriac-name = Hypochondriac +thaven-mood-hypochondriac-desc = You've been sickly since you were a child. Everything negative you experience is the result of a potentially terminal illness, for which you need immediate medical treatment. + +thaven-mood-imposter-syndrome-name = Imposter Syndrome +thaven-mood-imposter-syndrome-desc = You feel your life experience drain from your mind. You are brand-new at your job, unsure of how anything works. You should probably find someone experienced to show you the ropes. + +thaven-mood-centrist-name = Centrist +thaven-mood-centrist-desc = You are ambivalent towards any and all decisions, and refuse to take sides. + +thaven-mood-public-sector-name = Public Sector +thaven-mood-public-sector-desc = Your job should not be done in private if it can be helped. If at all possible, you should renovate the facilities to allow public access to a view of your workplace. + +thaven-mood-stinky-name = Everyone Stinks +thaven-mood-stinky-desc = The smell of the crew revolts you. You must inform them of their stench. + +thaven-mood-zen-arcade-name = Zen Arcade +thaven-mood-zen-arcade-desc = You are the God of Gaming. Any time you walk past an arcade machine, you must play it. + +thaven-mood-speech-restriction-name = {$speechType -> + *[FullNameAndTitle] Full Name And Title + [NamesAreRude] Names Are Rude + [Clarity] Clarity Is Vital + [SwearingGood] !@$%#ing @$^%*#@!$ + [StatementOnly] Asking Questions Is Rude + [Imitation] I Wanna Be Like You + [Unclarity] Nothing Is Certain + [SwearingBad] Thou Shalt Not Curse + [QuestionOnly] Nothing Is Certain? + [MustAnswer] Center Of The Universe + [OnlyWhisper] Inside Voice + [OnlyYell] Outside Voice + [Rhyme] Poet + [Alliterate] Always Alliterate At All Apportunities + [ThirdPerson] Third Person + [TitleCase] Title Case + [PirateSpeak] Piratespeak Is The Height Of Fashion +} +thaven-mood-speech-restriction-desc = {$speechType -> + *[FullNameAndTitle] Thaven refuse to acknowledge anyone who fails to refer to them using their full name, and expect everyone else to do the same. + [NamesAreRude] Using one's name is terribly personal for everyday conversation. Proper etiquette is to only refer to others by description. + [Clarity] Misunderstandings are the primary cause of conflict. You should be excessively clear and honest in your speech, explaining every minute detail, to avoid miscommunication. + [SwearingGood] Swearing is the spice of any conversation, and should be used as much as reasonably possible. + [StatementOnly] It would be terribly impolite to go around flagrantly asking questions all over the place. You'd prefer to phrase everything as a concrete statement. + [Imitation] Imitation is the highest form of flattery. Attempting to emulate the mannerisms and accents of everyone you speak to will get you far in life. + [Unclarity] You should endeavor to be as indirect in your speech as possible, and never make a direct statement. + [SwearingBad] You find swearing extremely distasteful. Abstain from it, and encourage others to do the same. + [QuestionOnly] It's impolite to make concrete statements? You should phrase everything as a question, just to be safe? + [MustAnswer] All questions that you can hear are directed at you, and you alone. + [OnlyWhisper] You must whisper, as speaking too loudly is terribly rude. + [OnlyYell] [bold]YOU MUST YELL AT ALL TIMES TO DEMONSTRATE YOUR AUTHORITY!!!!![/bold] + [Rhyme] You must speak in rhymes at all tymes. + [Alliterate] Alliteration is virtuous. Endeavor to use it wherever possible. + [ThirdPerson] The third person point-of-view is the only respectful manner of speaking. + [TitleCase] You Are Miraculously Capable Of Pronouncing Capital Letters, And Believe It Is Important That You Do So. + [PirateSpeak] You should endeavor to speak like a pirate to the best of your ability. +} diff --git a/Resources/Locale/en-US/_Impstation/traits/traits.ftl b/Resources/Locale/en-US/_Impstation/traits/traits.ftl new file mode 100644 index 0000000000..b367d571c9 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/traits/traits.ftl @@ -0,0 +1,2 @@ +trait-nocontractions-name = No contractions +trait-nocontractions-desc = You are (mostly) incapable of using contractions. \ No newline at end of file diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/thaven.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/thaven.yml new file mode 100644 index 0000000000..4a55ff585e --- /dev/null +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/thaven.yml @@ -0,0 +1,46 @@ +# Head +- type: marking + id: ThavenCheekBarbels + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: cheek_barbels + +- type: marking + id: ThavenEyebrowBarbels + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: eyebrow_barbels + +- type: marking + id: ThavenUnderbellyFace + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: underbelly_face + +# Torso +- type: marking + id: ThavenUnderbellyTorso + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: underbelly_torso + +- type: marking + id: ThavenCarpSpots + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: carp_spots diff --git a/Resources/Prototypes/DeltaV/typing_indicator.yml b/Resources/Prototypes/DeltaV/typing_indicator.yml index e36394581d..e867d1e073 100644 --- a/Resources/Prototypes/DeltaV/typing_indicator.yml +++ b/Resources/Prototypes/DeltaV/typing_indicator.yml @@ -1,4 +1,4 @@ -- type: typingIndicator +- type: typingIndicator id: felinid spritePath: /Textures/DeltaV/Effects/speech.rsi typingState: felinid0 @@ -14,4 +14,10 @@ id: Chitinid spritePath: /Textures/DeltaV/Effects/speech.rsi typingState: chitinid0 - offset: -0.2, 0.1 # 0625 \ No newline at end of file + offset: -0.2, 0.1 # 0625 + +- type: typingIndicator + id: Thaven + spritePath: /Textures/_EE/Effects/speech.rsi + typingState: thaven0 + offset: 0, 0.1 # 0625 diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml index 54cc95347a..aa1caadb63 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml @@ -2,7 +2,7 @@ id: GauzeLefteyePatch bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -16,7 +16,7 @@ id: GauzeLefteyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -30,7 +30,7 @@ id: GauzeRighteyePatch bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -44,7 +44,7 @@ id: GauzeRighteyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -58,7 +58,7 @@ id: GauzeBlindfold bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Harpy, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Harpy, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -72,7 +72,7 @@ id: GauzeShoulder bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -86,7 +86,7 @@ id: GauzeStomach bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -100,7 +100,7 @@ id: GauzeUpperArmRight bodyPart: RArm markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -114,7 +114,7 @@ id: GauzeLowerArmRight bodyPart: RArm, RHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -128,7 +128,7 @@ id: GauzeLeftArm bodyPart: LArm, LHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -142,7 +142,7 @@ id: GauzeLowerLegLeft bodyPart: LFoot markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -156,7 +156,7 @@ id: GauzeUpperLegLeft bodyPart: LLeg markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -170,7 +170,7 @@ id: GauzeUpperLegRight bodyPart: RLeg markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -184,7 +184,7 @@ id: GauzeLowerLegRight bodyPart: RFoot markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -198,7 +198,7 @@ id: GauzeBoxerWrapRight bodyPart: RHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -212,7 +212,7 @@ id: GauzeBoxerWrapLeft bodyPart: LHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -226,7 +226,7 @@ id: GauzeHead bodyPart: Head markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, IPC] # Delta V - Felinid, Oni, Vulpkanin # EE - Arachne, Lamia + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin # EE - Arachne, Lamia coloring: default: type: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 6b7dc94b07..bf92ab72dd 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -1672,4 +1672,4 @@ - type: FoodSequenceElement entries: Burger: XenoCutlet - Taco: XenoCutlet + Taco: XenoCutlet \ No newline at end of file diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index 2456559bbc..c0992fc337 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -16,6 +16,8 @@ - Plasmaman - Chitinid - Tajaran + # ImpStation additions + - Thaven - type: guideEntry id: Arachnid diff --git a/Resources/Prototypes/_DV/GameRules/events.yml b/Resources/Prototypes/_DV/GameRules/events.yml new file mode 100644 index 0000000000..789d29895e --- /dev/null +++ b/Resources/Prototypes/_DV/GameRules/events.yml @@ -0,0 +1,9 @@ +- type: entity + parent: BaseGlimmerEvent + id: ThavenMoodUpset + components: + - type: GlimmerEvent + minimumGlimmer: 500 + glimmerBurnLower: 30 + glimmerBurnUpper: 70 + - type: ThavenMoodUpsetRule diff --git a/Resources/Prototypes/_Impstation/Accents/nocontractions_replacements.yml b/Resources/Prototypes/_Impstation/Accents/nocontractions_replacements.yml new file mode 100644 index 0000000000..8b227fb22f --- /dev/null +++ b/Resources/Prototypes/_Impstation/Accents/nocontractions_replacements.yml @@ -0,0 +1,138 @@ +- type: accent + id: nocontractions + wordReplacements: + accent-nocontractions-words-french: accent-nocontractions-words-replace-french + accent-nocontractions-words-1: accent-nocontractions-words-replace-1 + accent-nocontractions-words-2: accent-nocontractions-words-replace-2 + accent-nocontractions-words-3: accent-nocontractions-words-replace-3 + accent-nocontractions-words-4: accent-nocontractions-words-replace-4 + accent-nocontractions-words-5: accent-nocontractions-words-replace-5 + accent-nocontractions-words-6: accent-nocontractions-words-replace-6 + accent-nocontractions-words-7: accent-nocontractions-words-replace-7 + accent-nocontractions-words-8: accent-nocontractions-words-replace-8 + accent-nocontractions-words-9: accent-nocontractions-words-replace-9 + accent-nocontractions-words-10: accent-nocontractions-words-replace-10 + accent-nocontractions-words-11: accent-nocontractions-words-replace-11 + accent-nocontractions-words-12: accent-nocontractions-words-replace-12 + accent-nocontractions-words-13: accent-nocontractions-words-replace-13 + accent-nocontractions-words-14: accent-nocontractions-words-replace-14 + accent-nocontractions-words-15: accent-nocontractions-words-replace-15 + accent-nocontractions-words-16: accent-nocontractions-words-replace-16 + accent-nocontractions-words-17: accent-nocontractions-words-replace-17 + accent-nocontractions-words-18: accent-nocontractions-words-replace-18 + accent-nocontractions-words-19: accent-nocontractions-words-replace-19 + accent-nocontractions-words-20: accent-nocontractions-words-replace-20 + accent-nocontractions-words-21: accent-nocontractions-words-replace-21 + accent-nocontractions-words-22: accent-nocontractions-words-replace-22 + accent-nocontractions-words-23: accent-nocontractions-words-replace-23 + accent-nocontractions-words-24: accent-nocontractions-words-replace-24 + accent-nocontractions-words-25: accent-nocontractions-words-replace-25 + accent-nocontractions-words-26: accent-nocontractions-words-replace-26 + accent-nocontractions-words-27: accent-nocontractions-words-replace-27 + accent-nocontractions-words-28: accent-nocontractions-words-replace-28 + accent-nocontractions-words-29: accent-nocontractions-words-replace-29 + accent-nocontractions-words-30: accent-nocontractions-words-replace-30 + accent-nocontractions-words-31: accent-nocontractions-words-replace-31 + accent-nocontractions-words-32: accent-nocontractions-words-replace-32 + accent-nocontractions-words-33: accent-nocontractions-words-replace-33 + accent-nocontractions-words-34: accent-nocontractions-words-replace-34 + accent-nocontractions-words-35: accent-nocontractions-words-replace-35 + accent-nocontractions-words-36: accent-nocontractions-words-replace-36 + accent-nocontractions-words-37: accent-nocontractions-words-replace-37 + accent-nocontractions-words-38: accent-nocontractions-words-replace-38 + accent-nocontractions-words-39: accent-nocontractions-words-replace-39 + accent-nocontractions-words-40: accent-nocontractions-words-replace-40 + accent-nocontractions-words-41: accent-nocontractions-words-replace-41 + accent-nocontractions-words-42: accent-nocontractions-words-replace-42 + accent-nocontractions-words-43: accent-nocontractions-words-replace-43 + accent-nocontractions-words-44: accent-nocontractions-words-replace-44 + accent-nocontractions-words-45: accent-nocontractions-words-replace-45 + accent-nocontractions-words-46: accent-nocontractions-words-replace-46 + accent-nocontractions-words-47: accent-nocontractions-words-replace-47 + accent-nocontractions-words-48: accent-nocontractions-words-replace-48 + accent-nocontractions-words-49: accent-nocontractions-words-replace-49 + accent-nocontractions-words-50: accent-nocontractions-words-replace-50 + accent-nocontractions-words-51: accent-nocontractions-words-replace-51 + accent-nocontractions-words-52: accent-nocontractions-words-replace-52 + accent-nocontractions-words-53: accent-nocontractions-words-replace-53 + accent-nocontractions-words-54: accent-nocontractions-words-replace-54 + accent-nocontractions-words-55: accent-nocontractions-words-replace-55 + accent-nocontractions-words-56: accent-nocontractions-words-replace-56 + accent-nocontractions-words-57: accent-nocontractions-words-replace-57 + accent-nocontractions-words-58: accent-nocontractions-words-replace-58 + accent-nocontractions-words-59: accent-nocontractions-words-replace-59 + accent-nocontractions-words-60: accent-nocontractions-words-replace-60 + accent-nocontractions-words-61: accent-nocontractions-words-replace-61 + accent-nocontractions-words-62: accent-nocontractions-words-replace-62 + accent-nocontractions-words-63: accent-nocontractions-words-replace-63 + accent-nocontractions-words-64: accent-nocontractions-words-replace-64 + accent-nocontractions-words-65: accent-nocontractions-words-replace-65 + accent-nocontractions-words-66: accent-nocontractions-words-replace-66 + accent-nocontractions-words-67: accent-nocontractions-words-replace-67 + accent-nocontractions-words-68: accent-nocontractions-words-replace-68 + accent-nocontractions-words-69: accent-nocontractions-words-replace-69 + accent-nocontractions-words-70: accent-nocontractions-words-replace-70 + accent-nocontractions-words-71: accent-nocontractions-words-replace-71 + accent-nocontractions-words-72: accent-nocontractions-words-replace-72 + accent-nocontractions-words-73: accent-nocontractions-words-replace-73 + accent-nocontractions-words-74: accent-nocontractions-words-replace-74 + accent-nocontractions-words-75: accent-nocontractions-words-replace-75 + accent-nocontractions-words-76: accent-nocontractions-words-replace-76 + accent-nocontractions-words-77: accent-nocontractions-words-replace-77 + accent-nocontractions-words-78: accent-nocontractions-words-replace-78 + accent-nocontractions-words-79: accent-nocontractions-words-replace-79 + accent-nocontractions-words-80: accent-nocontractions-words-replace-80 + accent-nocontractions-words-81: accent-nocontractions-words-replace-81 + accent-nocontractions-words-82: accent-nocontractions-words-replace-82 + accent-nocontractions-words-83: accent-nocontractions-words-replace-83 + accent-nocontractions-words-84: accent-nocontractions-words-replace-84 + accent-nocontractions-words-85: accent-nocontractions-words-replace-85 + accent-nocontractions-words-86: accent-nocontractions-words-replace-86 + accent-nocontractions-words-87: accent-nocontractions-words-replace-87 + accent-nocontractions-words-88: accent-nocontractions-words-replace-88 + accent-nocontractions-words-89: accent-nocontractions-words-replace-89 + accent-nocontractions-words-90: accent-nocontractions-words-replace-90 + accent-nocontractions-words-91: accent-nocontractions-words-replace-91 + accent-nocontractions-words-92: accent-nocontractions-words-replace-92 + accent-nocontractions-words-93: accent-nocontractions-words-replace-93 + accent-nocontractions-words-94: accent-nocontractions-words-replace-94 + accent-nocontractions-words-95: accent-nocontractions-words-replace-95 + accent-nocontractions-words-96: accent-nocontractions-words-replace-96 + accent-nocontractions-words-97: accent-nocontractions-words-replace-97 + accent-nocontractions-words-98: accent-nocontractions-words-replace-98 + accent-nocontractions-words-99: accent-nocontractions-words-replace-99 + accent-nocontractions-words-100: accent-nocontractions-words-replace-100 + accent-nocontractions-words-101: accent-nocontractions-words-replace-101 + accent-nocontractions-words-102: accent-nocontractions-words-replace-102 + accent-nocontractions-words-103: accent-nocontractions-words-replace-103 + accent-nocontractions-words-104: accent-nocontractions-words-replace-104 + accent-nocontractions-words-105: accent-nocontractions-words-replace-105 + accent-nocontractions-words-106: accent-nocontractions-words-replace-106 + accent-nocontractions-words-107: accent-nocontractions-words-replace-107 + accent-nocontractions-words-108: accent-nocontractions-words-replace-108 + accent-nocontractions-words-109: accent-nocontractions-words-replace-109 + accent-nocontractions-words-110: accent-nocontractions-words-replace-110 + accent-nocontractions-words-111: accent-nocontractions-words-replace-111 + accent-nocontractions-words-112: accent-nocontractions-words-replace-112 + accent-nocontractions-words-113: accent-nocontractions-words-replace-113 + accent-nocontractions-words-114: accent-nocontractions-words-replace-114 + accent-nocontractions-words-115: accent-nocontractions-words-replace-115 + accent-nocontractions-words-116: accent-nocontractions-words-replace-116 + accent-nocontractions-words-117: accent-nocontractions-words-replace-117 + accent-nocontractions-words-118: accent-nocontractions-words-replace-118 + accent-nocontractions-words-119: accent-nocontractions-words-replace-119 + accent-nocontractions-words-120: accent-nocontractions-words-replace-120 + accent-nocontractions-words-121: accent-nocontractions-words-replace-121 + accent-nocontractions-words-122: accent-nocontractions-words-replace-122 + accent-nocontractions-words-123: accent-nocontractions-words-replace-123 + accent-nocontractions-words-124: accent-nocontractions-words-replace-124 + accent-nocontractions-words-125: accent-nocontractions-words-replace-125 + accent-nocontractions-words-126: accent-nocontractions-words-replace-126 + accent-nocontractions-words-127: accent-nocontractions-words-replace-127 + accent-nocontractions-words-128: accent-nocontractions-words-replace-128 + accent-nocontractions-words-129: accent-nocontractions-words-replace-129 + accent-nocontractions-words-130: accent-nocontractions-words-replace-130 + accent-nocontractions-words-131: accent-nocontractions-words-replace-131 + accent-nocontractions-words-132: accent-nocontractions-words-replace-132 + accent-nocontractions-words-133: accent-nocontractions-words-replace-133 + accent-nocontractions-words-134: accent-nocontractions-words-replace-134 diff --git a/Resources/Prototypes/_Impstation/Actions/spelfs.yml b/Resources/Prototypes/_Impstation/Actions/spelfs.yml new file mode 100644 index 0000000000..2e3dfa8218 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Actions/spelfs.yml @@ -0,0 +1,14 @@ +- type: entity + id: ActionViewMoods + name: View Moods + description: View your current moods. + components: + - type: InstantAction + itemIconStyle: NoItem + checkCanInteract: false + checkConsciousness: false + icon: + sprite: Interface/Actions/actions_borg.rsi + state: state-laws + event: !type:ToggleMoodsScreenEvent + useDelay: 0.5 diff --git a/Resources/Prototypes/_Impstation/Body/Organs/thaven.yml b/Resources/Prototypes/_Impstation/Body/Organs/thaven.yml new file mode 100644 index 0000000000..f8c91affa3 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Body/Organs/thaven.yml @@ -0,0 +1,9 @@ +- type: entity + id: OrganThavenBrain + parent: [BaseItem, OrganHumanBrain] + name: thaven brain + description: "An organic positronic brain. Quite remarkable, really." + components: + - type: Sprite + sprite: _Impstation/Mobs/Species/Thaven/organs.rsi + state: brain-thaven diff --git a/Resources/Prototypes/_Impstation/Body/Parts/thaven.yml b/Resources/Prototypes/_Impstation/Body/Parts/thaven.yml new file mode 100644 index 0000000000..c297575f8e --- /dev/null +++ b/Resources/Prototypes/_Impstation/Body/Parts/thaven.yml @@ -0,0 +1,90 @@ +- type: entity + id: PartThaven + parent: [BaseItem, BasePart] + name: "thaven body part" + abstract: true + components: + - type: Sprite # Shitmed Change + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + - type: BodyPart # Shitmed Change + species: Thaven + +- type: entity + id: TorsoThaven + name: "thaven torso" + parent: [PartThaven, BaseTorso] + components: + - type: Sprite + state: "torso_m" + +- type: entity + id: HeadThaven + name: "thaven head" + parent: [PartThaven, BaseHead] + components: + - type: Sprite + state: "head" + +- type: entity + id: LeftArmThaven + name: "left thaven arm" + parent: [PartThaven, BaseLeftArm] + components: + - type: Sprite + state: "l_arm" + +- type: entity + id: RightArmThaven + name: "right thaven arm" + parent: [PartThaven, BaseRightArm] + components: + - type: Sprite + state: "r_arm" + +- type: entity + id: LeftHandThaven + name: "left thaven hand" + parent: [PartThaven, BaseLeftHand] + components: + - type: Sprite + state: "l_hand" + +- type: entity + id: RightHandThaven + name: "right thaven hand" + parent: [PartThaven, BaseRightHand] + components: + - type: Sprite + state: "r_hand" + +- type: entity + id: LeftLegThaven + name: "left thaven leg" + parent: [PartThaven, BaseLeftLeg] + components: + - type: Sprite + state: "l_leg" + +- type: entity + id: RightLegThaven + name: "right thaven leg" + parent: [PartThaven, BaseRightLeg] + components: + - type: Sprite + state: "r_leg" + +- type: entity + id: LeftFootThaven + name: "left thaven foot" + parent: [PartThaven, BaseLeftFoot] + components: + - type: Sprite + state: "l_foot" + +- type: entity + id: RightFootThaven + name: "right thaven foot" + parent: [PartThaven, BaseRightFoot] + components: + - type: Sprite + state: "r_foot" diff --git a/Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml b/Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml new file mode 100644 index 0000000000..e0541b691f --- /dev/null +++ b/Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml @@ -0,0 +1,50 @@ +- type: body + id: Thaven + name: "thaven" + root: torso + slots: + head: + part: HeadThaven + connections: + - torso + organs: + brain: OrganThavenBrain + eyes: OrganHumanEyes + torso: + part: TorsoThaven + connections: + - right arm + - left arm + - right leg + - left leg + - head # Shitmed Change + organs: + heart: OrganHumanHeart + lungs: OrganHumanLungs + stomach: OrganHumanStomach + liver: OrganHumanLiver + kidneys: OrganHumanKidneys + right arm: + part: RightArmThaven + connections: + - right hand + left arm: + part: LeftArmThaven + connections: + - left hand + right hand: + part: RightHandThaven + left hand: + part: LeftHandThaven + right leg: + part: RightLegThaven + connections: + - right foot + left leg: + part: LeftLegThaven + connections: + - left foot + right foot: + part: RightFootThaven + left foot: + part: LeftFootThaven diff --git a/Resources/Prototypes/_Impstation/Damage/thaven.yml b/Resources/Prototypes/_Impstation/Damage/thaven.yml new file mode 100644 index 0000000000..999e89f604 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Damage/thaven.yml @@ -0,0 +1,11 @@ +- type: damageModifierSet + id: Thaven + coefficients: + Blunt: 1.1 + Slash: 1.1 + Piercing: 1.1 + Cold: .9 + Heat: .9 + Poison: .9 + Cellular: 1.1 + Radiation: 1.2 diff --git a/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml b/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml new file mode 100644 index 0000000000..03ff631273 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml @@ -0,0 +1,79 @@ +- type: dataset + id: names_thaven + values: + - Honesty + - Have Mercy + - Give Thanks To Thine Ancestors + - Obedience + - Search The Scriptures + - Learn Many Things + - Praise The Gods + - Fear Be Unto The Gods + - Joy In Sorrow + - Die Well + - Wander Far And Wide + - Lament The Fallen + - Prove Thy Worth + - Desire + - Charity + - Faith + - Harmony + - Modesty + - Honor Thy Family + - Patient As The Dead + - Temper Thy Heart And Soul + - Tell Only The Truth + - Thou Art Loved + - Thou Art Damned + - Aid The Righteous + - Be Courteous + - Make Peace + - Fear The Gods + - Forsake Alcohol + - Fight Evil At All Costs + - Shun The Unworthy + - Gain Wisdom Through Experience + - Live Well And Die Young + - Face Trials And Tribulations + - Pardon Worthy Criminals + - Find Merit In All Things + - Deny Sin Its Due + - Stand Fast Against Evil + - Do As The Gods Will + - Zeal Of The Land + - Be Courteous To Others + - Considerate + - Discipline + - Do Right By Your Neighbors + - Serve Your Purpose + - Good Things Come + - Magnify Injustice + - Legitimate First + - Take Pity On The Less-Fortunate + - Redeem Thy Past Mistakes + - Rejoice + - Repent All Ye Sinners + - Return To Thy Homeland + - Deliverance + - See Truth + - Drink Full And Descend + - Do Thy Best + - Live The Day Like Thy Last + - Adaptability + - Endurance + - Negativity + - Attentiveness + - Foppishness + - One Before All + - Purpose + - Simplicity + - Minimalism + - Proselytism + - Conformity + - The Perils of Hedonism + - Volition + - Gumption + - Providence + - Righteousness + - Wisdom + - Cunning diff --git a/Resources/Prototypes/_Impstation/Entities/Consumable/Food/meat.yml b/Resources/Prototypes/_Impstation/Entities/Consumable/Food/meat.yml new file mode 100644 index 0000000000..fa5792deec --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Consumable/Food/meat.yml @@ -0,0 +1,27 @@ +- type: entity + name: raw thaven fillet + parent: FoodMeatBase + # MeatFish?... + id: FoodThavenMeat + description: Concerning. + components: + - type: FlavorProfile + flavors: + - fishy + - type: Tag + tags: + - Raw + - Meat + - type: Sprite + state: fish + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: CarpoToxin + Quantity: 5 + - type: Extractable + juiceSolution: + reagents: + - ReagentId: CarpoToxin + Quantity: 5 \ No newline at end of file diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml index 14c2014fbe..05147e5ff8 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml @@ -900,4 +900,231 @@ followSkinColor: true sprites: - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi - state: chitinidbeetlehorn2 \ No newline at end of file + state: chitinidbeetlehorn2 + +- type: marking + id: Gills + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenchestgills + +- type: marking + id: ThavenChestScales + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenchestscales + +- type: marking + id: ThavenHeadScales + bodyPart: Head + markingCategory: HeadTop + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadscales + +- type: marking + id: ThavenLArmScales + bodyPart: LArm + markingCategory: LeftArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenleftarmscales + +- type: marking + id: ThavenRArmScales + bodyPart: RArm + markingCategory: RightArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenrightarmscales + +- type: marking + id: ThavenLLegScales + bodyPart: LLeg + markingCategory: LeftLeg + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenleftlegscales + +- type: marking + id: ThavenRLegScales + bodyPart: RLeg + markingCategory: RightLeg + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenrightlegscales + +- type: marking + id: ThavenFishEars + bodyPart: HeadSide + markingCategory: Headside + speciesRestriction: [ Thaven ] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenfishears + +- type: marking + id: ThavenTattooVines + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventattoovines + +- type: marking + id: ThavenSpines + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenspines + +- type: marking + id: ThavenBiteMark + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenbitemark + +- type: marking + id: ThavenTattooWave + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventattoowave + +- type: marking + id: SharkminnowEyeliner + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventattoosharkminnoweyeliner + +- type: marking + id: ThavenTiger + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventiger1 + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventiger2 + +- type: marking + id: ThavenTigerRArm + bodyPart: RArm + markingCategory: RightArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventigerarmsr + +- type: marking + id: ThavenTigerLArm + bodyPart: LArm + markingCategory: LeftArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventigerarmsl + +- type: marking + id: ThavenHeadStripes + bodyPart: Head + markingCategory: Head + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadstripes + +- type: marking + id: ThavenBodyStripes + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenbodystripes + +- type: marking + id: ThavenEarsBigFins + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenearsbigfins + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenearsbigfins2 + +- type: marking + id: ThavenHeadCap + bodyPart: Head + markingCategory: Head + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadcap1 + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadcap2 + diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven.yml new file mode 100644 index 0000000000..bdf07d3c67 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven.yml @@ -0,0 +1,107 @@ +- type: marking + id: ThavenEars1 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears1 + +- type: marking + id: ThavenEars2 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears2 + +- type: marking + id: ThavenEars3 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears3 + +- type: marking + id: ThavenEars4 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears4 + +- type: marking + id: ThavenPiercings + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: piercings + +- type: marking + id: ThavenPiercings2 + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: piercings2 + +- type: marking + id: ThavenChestTattoo1 + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Thaven] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: chesttat1 + +- type: marking + id: ThavenLArmTattoo1 + bodyPart: LArm + markingCategory: LeftArm + speciesRestriction: [Thaven] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: larmtat1 + +- type: marking + id: ThavenRArmTattoo1 + bodyPart: RArm + markingCategory: RightArm + speciesRestriction: [Thaven] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: rarmtat1 diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven_hair.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven_hair.yml new file mode 100644 index 0000000000..a62cf63c5c --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven_hair.yml @@ -0,0 +1,1496 @@ +- type: marking + id: ThavenHairBalding + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: e +- type: marking + id: ThavenHairBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bedhead +- type: marking + id: ThavenHairBedheadv2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bedhead2 +- type: marking + id: ThavenHairBedheadv3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bedhead3 +- type: marking + id: ThavenHairLongBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long_bedhead +- type: marking + id: ThavenHairLongBedhead2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long_bedhead2 +- type: marking + id: ThavenHairFloorlengthBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: floorlength_bedhead +- type: marking + id: ThavenHairBeehive + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: beehive +- type: marking + id: ThavenHairBeehive2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: beehive2 +- type: marking + id: ThavenHairBob + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob +- type: marking + id: ThavenHairBob2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob2 +- type: marking + id: ThavenHairBobcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bobcut +- type: marking + id: ThavenHairBob4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob4 +- type: marking + id: ThavenHairBob5 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob5 +- type: marking + id: ThavenHairBobcurl + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bobcurl +- type: marking + id: ThavenHairBowlcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bowlcut +- type: marking + id: ThavenHairBowlcut2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bowlcut2 +- type: marking + id: ThavenHairBraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braid +- type: marking + id: ThavenHairBraided + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braided +- type: marking + id: ThavenHairBraidfront + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braidfront +- type: marking + id: ThavenHairBraid2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braid2 +- type: marking + id: ThavenHairHbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: hbraid +- type: marking + id: ThavenHairShortbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shortbraid +- type: marking + id: ThavenHairBraidtail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braidtail +- type: marking + id: ThavenHairBun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bun +- type: marking + id: ThavenHairBunhead2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bunhead2 +- type: marking + id: ThavenHairBun3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bun3 +- type: marking + id: ThavenHairLargebun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: largebun +- type: marking + id: ThavenHairManbun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: manbun +- type: marking + id: ThavenHairTightbun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: tightbun +- type: marking + id: ThavenHairBusiness + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business +- type: marking + id: ThavenHairBusiness2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business2 +- type: marking + id: ThavenHairBusiness3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business3 +- type: marking + id: ThavenHairBusiness4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business4 +- type: marking + id: ThavenHairBuzzcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: buzzcut +- type: marking + id: ThavenHairCia + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cia +- type: marking + id: ThavenHairClassicCia + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiccia +- type: marking + id: ThavenHairClassicFloorlengthBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicfloorlength_bedhead +- type: marking + id: ThavenHairClassicModern + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicmodern +- type: marking + id: ThavenHairClassicMulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicmulder +- type: marking + id: ThavenHairClassicWisp + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicwisp +- type: marking + id: ThavenHairCombover + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: combover +- type: marking + id: ThavenHairCornrows + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrows +- type: marking + id: ThavenHairCornrows2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrows2 +- type: marking + id: ThavenHairCornrowbun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrowbun +- type: marking + id: ThavenHairCornrowbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrowbraid +- type: marking + id: ThavenHairCornrowtail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrowtail +- type: marking + id: ThavenHairCrewcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: crewcut +- type: marking + id: ThavenHairCrewcut2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: crewcut2 +- type: marking + id: ThavenHairCurls + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: curls +- type: marking + id: ThavenHairC + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: c +- type: marking + id: ThavenHairDandypompadour + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: dandypompadour +- type: marking + id: ThavenHairDevilock + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: devilock +- type: marking + id: ThavenHairDoublebun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: doublebun +- type: marking + id: ThavenHairDoublebunLong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: doublebun_long +- type: marking + id: ThavenHairDreads + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: dreads +- type: marking + id: ThavenHairDrillruru + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: drillruru +- type: marking + id: ThavenHairDrillhairextended + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: drillhairextended +- type: marking + id: ThavenHairEmofringe + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: emofringe +- type: marking + id: ThavenHairNofade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: nofade +- type: marking + id: ThavenHairHighfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: highfade +- type: marking + id: ThavenHairMedfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: medfade +- type: marking + id: ThavenHairLowfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: lowfade +- type: marking + id: ThavenHairBaldfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: baldface +- type: marking + id: ThavenHairFeather + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: feather +- type: marking + id: ThavenHairFather + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: father +- type: marking + id: ThavenHairSargeant + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sargeant +- type: marking + id: ThavenHairFlair + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: flair +- type: marking + id: ThavenHairBigflattop + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bigflattop +- type: marking + id: ThavenHairFlow + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: f +- type: marking + id: ThavenHairGelled + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: gelled +- type: marking + id: ThavenHairGentle + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: gentle +- type: marking + id: ThavenHairHalfbang + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: halfbang +- type: marking + id: ThavenHairHalfbang2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: halfbang2 +- type: marking + id: ThavenHairHalfshaved + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: halfshaved +- type: marking + id: ThavenHairHedgehog + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: hedgehog +- type: marking + id: ThavenHairHimecut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: himecut +- type: marking + id: ThavenHairHimecut2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: himecut2 +- type: marking + id: ThavenHairShorthime + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthime +- type: marking + id: ThavenHairHimeup + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: himeup +- type: marking + id: ThavenHairHitop + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: hitop +- type: marking + id: ThavenHairJade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: jade +- type: marking + id: ThavenHairJensen + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: jensen +- type: marking + id: ThavenHairJoestar + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: joestar +- type: marking + id: ThavenHairKeanu + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: keanu +- type: marking + id: ThavenHairKusanagi + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: kusanagi +- type: marking + id: ThavenHairLong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long +- type: marking + id: ThavenHairLong2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long2 +- type: marking + id: ThavenHairLong3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long3 +- type: marking + id: ThavenHairLongWithBundles + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longbundled +- type: marking + id: ThavenHairLongovereye + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longovereye +- type: marking + id: ThavenHairLbangs + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: lbangs +- type: marking + id: ThavenHairLongeremo + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longeremo +- type: marking + id: ThavenHairLongfringe + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longfringe +- type: marking + id: ThavenHairLongsidepart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longsidepart +- type: marking + id: ThavenHairMegaeyebrows + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: megaeyebrows +- type: marking + id: ThavenHairMessy + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: messy +- type: marking + id: ThavenHairModern + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: modern +- type: marking + id: ThavenHairMohawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: d +- type: marking + id: ThavenHairNitori + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: nitori +- type: marking + id: ThavenHairReversemohawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: reversemohawk +- type: marking + id: ThavenHairMulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: mulder +- type: marking + id: ThavenHairOdango + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: odango +- type: marking + id: ThavenHairOmbre + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ombre +- type: marking + id: ThavenHairOneshoulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: oneshoulder +- type: marking + id: ThavenHairShortovereye + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shortovereye +- type: marking + id: ThavenHairOxton + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: oxton +- type: marking + id: ThavenHairParted + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: parted +- type: marking + id: ThavenHairPart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: part +- type: marking + id: ThavenHairKagami + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: kagami +- type: marking + id: ThavenHairPigtails + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pigtails +- type: marking + id: ThavenHairPigtails2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pigtails2 +- type: marking + id: ThavenHairPixie + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pixie +- type: marking + id: ThavenHairPompadour + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pompadour +- type: marking + id: ThavenHairBigpompadour + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bigpompadour +- type: marking + id: ThavenHairPonytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail +- type: marking + id: ThavenHairPonytail2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail2 +- type: marking + id: ThavenHairPonytail3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail3 +- type: marking + id: ThavenHairPonytail4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail4 +- type: marking + id: ThavenHairPonytail5 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail5 +- type: marking + id: ThavenHairPonytail6 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail6 +- type: marking + id: ThavenHairPonytail7 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail7 +- type: marking + id: ThavenHairHighponytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: highponytail +- type: marking + id: ThavenHairStail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: stail +- type: marking + id: ThavenHairLongstraightponytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longstraightponytail +- type: marking + id: ThavenHairCountry + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: country +- type: marking + id: ThavenHairFringetail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: fringetail +- type: marking + id: ThavenHairSidetail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail +- type: marking + id: ThavenHairSidetail2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail2 +- type: marking + id: ThavenHairSidetail3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail3 +- type: marking + id: ThavenHairSidetail4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail4 +- type: marking + id: ThavenHairSpikyponytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: spikyponytail +- type: marking + id: ThavenHairPoofy + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: poofy +- type: marking + id: ThavenHairQuiff + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: quiff +- type: marking + id: ThavenHairRonin + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ronin +- type: marking + id: ThavenHairShaved + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shaved +- type: marking + id: ThavenHairShavedpart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shavedpart +- type: marking + id: ThavenHairShortbangs + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shortbangs +- type: marking + id: ThavenHairA + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: a +- type: marking + id: ThavenHairShorthair2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthair2 +- type: marking + id: ThavenHairShorthair3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthair3 +- type: marking + id: ThavenHairShorthair9 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthair9 +- type: marking + id: ThavenHair80s + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: 80s +- type: marking + id: ThavenHairRosa + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: rosa +- type: marking + id: ThavenHairB + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: b +- type: marking + id: ThavenHairSidecut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidecut +- type: marking + id: ThavenHairSkinhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: skinhead +- type: marking + id: ThavenHairProtagonist + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: protagonist +- type: marking + id: ThavenHairSpiky + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: spiky +- type: marking + id: ThavenHairSpookyLong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: spookylong +- type: marking + id: ThavenHairSwept + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: swept +- type: marking + id: ThavenHairSwept2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: swept2 +- type: marking + id: ThavenHairShoulderLengthOverEye + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shoulderlengthovereye +- type: marking + id: ThavenHairThinning + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: thinning +- type: marking + id: ThavenHairThinningfront + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: thinningfront +- type: marking + id: ThavenHairThinningrear + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: thinningrear +- type: marking + id: ThavenHairTopknot + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: topknot +- type: marking + id: ThavenHairTressshoulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: tressshoulder +- type: marking + id: ThavenHairTrimmed + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: trimmed +- type: marking + id: ThavenHairTrimflat + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: trimflat +- type: marking + id: ThavenHairTwintail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: twintail +- type: marking + id: ThavenHairTwoStrands + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: twostrands +- type: marking + id: ThavenHairUndercut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: undercut +- type: marking + id: ThavenHairUndercutleft + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: undercutleft +- type: marking + id: ThavenHairUndercutright + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: undercutright +- type: marking + id: ThavenHairUnkept + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: unkept +- type: marking + id: ThavenHairVlong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: vlong +- type: marking + id: ThavenHairLongest + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longest +- type: marking + id: ThavenHairLongest2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longest2 +- type: marking + id: ThavenHairVeryshortovereyealternate + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: veryshortovereyealternate +- type: marking + id: ThavenHairVlongfringe + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: vlongfringe +- type: marking + id: ThavenHairVolaju + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: volaju +- type: marking + id: ThavenHairWisp + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: wisp +- type: marking + id: ThavenHairUneven + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: uneven +- type: marking + id: ThavenHairTailed + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: tailed +- type: marking + id: ThavenHairClassicLong2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiclong2 +- type: marking + id: ThavenHairClassicLong3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiclong3 +- type: marking + id: ThavenHairBald + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bald +- type: marking + id: ThavenHairShavedMohawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shavedmohawk +- type: marking + id: ThavenHairMediumSidepart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: mediumsidepart +- type: marking + id: ThavenHairEmo2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: emo2 +- type: marking + id: ThavenHairDrillHair + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: drillhair +- type: marking + id: ThavenHairClassicAfro + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicafro +- type: marking + id: ThavenHairClassicciaBusiness + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicciabusiness +- type: marking + id: ThavenHairClassicCornrows + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiccornrows +- type: marking + id: ThavenHairCoffeeHouse + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: coffeehouse +- type: marking + id: ThavenHairFrenchbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: frenchbraid diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Player/thaven.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Player/thaven.yml new file mode 100644 index 0000000000..76648e96f2 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Player/thaven.yml @@ -0,0 +1,5 @@ +- type: entity + save: false + name: Urist McEars + parent: BaseMobThaven + id: MobThaven diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Species/thaven.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Species/thaven.yml new file mode 100644 index 0000000000..43ade8c144 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Species/thaven.yml @@ -0,0 +1,229 @@ +- type: entity + save: false + name: Urist McEars + parent: BaseMobSpeciesOrganic + id: BaseMobThaven + abstract: true + components: + - type: Hunger + - type: Thirst + - type: Icon + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi # Unlike dwarves elves are NOT made of slime + state: full + - type: ThavenMoods + - type: Respirator + damage: + types: + Asphyxiation: 2 + damageRecovery: + types: + Asphyxiation: -1.0 + - type: Sprite + noRot: true + drawdepth: Mobs + scale: 1, 1.05 + - type: Body + prototype: Thaven + requiredLegs: 2 + - type: NoContractionsAccent + - type: Damageable + damageContainer: Biological + damageModifierSet: Thaven + - type: MeleeWeapon + attackRate: 0.55 + soundHit: + collection: Punch + angle: 30 + animation: WeaponArcPunch + damage: + types: + Blunt: 0 + - type: StaminaDamageOnHit + damage: 18 + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodThavenMeat + amount: 5 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 120 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: TypingIndicator + proto: Thaven # DeltaV unique typing indicator + - type: Vocal + sounds: + Male: UnisexThaven + Female: UnisexThaven + - type: Speech + speechSounds: Alto + - type: HumanoidAppearance + species: Thaven + hideLayersOnEquip: + - Hair + - Snout + - type: Inventory + templateId: thaven + displacements: + jumpsuit: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: jumpsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + head: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + eyes: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: eyes + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + ears: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + mask: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: mask + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + neck: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: neck + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + outerClothing: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: outerclothing_hardsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + gloves: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: hands + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + - type: UserInterface + interfaces: + enum.ThavenMoodsUiKey.Key: # impstation edit + type: ThavenMoodsBoundUserInterface + requireInputValidation: false + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + enum.HumanoidMarkingModifierKey.Key: + type: HumanoidMarkingModifierBoundUserInterface + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + # Shitmed + enum.SurgeryUIKey.Key: + type: SurgeryBui + + +- type: entity + parent: BaseSpeciesDummy + id: MobThavenDummy + categories: [ HideSpawnMenu ] + components: + - type: Sprite + scale: 1, 1 + - type: Inventory + templateId: thaven + displacements: + jumpsuit: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: jumpsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + head: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + eyes: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: eyes + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + ears: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + mask: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: mask + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + neck: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: neck + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + outerClothing: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: outerclothing_hardsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + gloves: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: hands + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV diff --git a/Resources/Prototypes/_Impstation/Guidebook/species.yml b/Resources/Prototypes/_Impstation/Guidebook/species.yml new file mode 100644 index 0000000000..93c3c6d11d --- /dev/null +++ b/Resources/Prototypes/_Impstation/Guidebook/species.yml @@ -0,0 +1,4 @@ +- type: guideEntry + id: Thaven + name: Thaven + text: "/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml" \ No newline at end of file diff --git a/Resources/Prototypes/_Impstation/InventoryTemplates/thaven_inventory_template.yml b/Resources/Prototypes/_Impstation/InventoryTemplates/thaven_inventory_template.yml new file mode 100644 index 0000000000..809a328b22 --- /dev/null +++ b/Resources/Prototypes/_Impstation/InventoryTemplates/thaven_inventory_template.yml @@ -0,0 +1,123 @@ +- type: inventoryTemplate + id: thaven + slots: + - name: shoes + slotTexture: shoes + slotFlags: FEET + stripTime: 3 + uiWindowPos: 1,0 + strippingWindowPos: 1,3 + displayName: Shoes + - name: jumpsuit + slotTexture: uniform + slotFlags: INNERCLOTHING + stripTime: 6 + uiWindowPos: 0,1 + strippingWindowPos: 0,2 + displayName: Jumpsuit + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + stripTime: 6 + uiWindowPos: 1,1 + strippingWindowPos: 1,2 + displayName: Suit + - name: gloves + slotTexture: gloves + slotFlags: GLOVES + uiWindowPos: 2,1 + strippingWindowPos: 2,2 + displayName: Gloves + - name: neck + slotTexture: neck + slotFlags: NECK + uiWindowPos: 0,2 + strippingWindowPos: 0,1 + displayName: Neck + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 1,2 + strippingWindowPos: 1,1 + displayName: Mask + - name: eyes + slotTexture: glasses + slotFlags: EYES + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,0 + displayName: Eyes + - name: ears + slotTexture: ears + slotFlags: EARS + stripTime: 3 + uiWindowPos: 2,2 + strippingWindowPos: 2,0 + displayName: Ears + - name: head + slotTexture: head + slotFlags: HEAD + uiWindowPos: 1,3 + strippingWindowPos: 1,0 + displayName: Head + - name: pocket1 + slotTexture: pocket + fullTextureName: template_small + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,4 + dependsOn: jumpsuit + displayName: Pocket 1 + stripHidden: true + - name: pocket2 + slotTexture: pocket + fullTextureName: template_small + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,3 + strippingWindowPos: 1,4 + dependsOn: jumpsuit + displayName: Pocket 2 + stripHidden: true + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,5 + dependsOn: outerClothing + dependsOnComponents: + - type: AllowSuitStorage + displayName: Suit Storage + - name: id + slotTexture: id + fullTextureName: template_small + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + dependsOn: jumpsuit + displayName: ID + - name: belt + slotTexture: belt + fullTextureName: template_small + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,1 + strippingWindowPos: 1,5 + displayName: Belt + - name: back + slotTexture: back + fullTextureName: template_small + slotFlags: BACK + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,0 + strippingWindowPos: 0,5 + displayName: Back diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/no_and.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/no_and.yml new file mode 100644 index 0000000000..9403e63aff --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/no_and.yml @@ -0,0 +1,303 @@ +# "No, and" moods will discourage players from certain behaviors and objects + +# Make sure to add new moods to this dataset or they will not be selected!!!!!! +- type: dataset + id: ThavenMoodsNoAnd + values: + - SecretMoods + - NoModernMedicine + - DepartmentDisapproval + - DontSpeakToCommand + - DisapproveOfDrugs + - ExcessivelyDisorganized + - DinnerFloor + - HugBad + - AlwaysAlone + - Procrastinator + - NoRadio + - ImproperStorage + - Ferengi + - ToolLicense + - LyingBad + - VampireInvitation + - NoDragging + - DrunkRespect + - RankSnob + - HardsuitsBad + - HatHair + - DistrustFashion + - HappyBad + - OnlyPills + - AvoidPuddles + - FoodRestrict + - Claustrophobic + - Agoraphobic + - NonSmoker + - Crawler + - Elevated + +# Your Moods are a strictly-kept secret, and should never be revealed to anyone. +- type: thavenMood + id: SecretMoods + moodName: thaven-mood-secret-moods-name + moodDesc: thaven-mood-secret-moods-desc + conflicts: + - SecretMoodsShared + +# You do not approve of modern medicine and abstain from treatment with it. +- type: thavenMood + id: NoModernMedicine + moodName: thaven-mood-no-modern-medicine-name + moodDesc: thaven-mood-no-modern-medicine-desc + +# You disapprove of [DEPARTMENT] +- type: thavenMood + id: DepartmentDisapproval + moodName: thaven-mood-department-disapproval-name + moodDesc: thaven-mood-department-disapproval-desc + moodVars: + department: Departments + +# Never Speak To Command: You are too lowly to speak to Command, even if spoken to first. +- type: thavenMood + id: DontSpeakToCommand + moodName: thaven-mood-dont-speak-to-command-name + moodDesc: thaven-mood-dont-speak-to-command-desc + conflicts: + - OnlySpeakToCommand + - MostImportant + +# You detest mind-altering drugs, including alcohol, and must abstain from them. +- type: thavenMood + id: DisapproveOfDrugs + moodName: thaven-mood-disapprove-of-drugs-name + moodDesc: thaven-mood-disapprove-of-drugs-desc + conflicts: + - MustDoDrugs + +# It's unnatural. You should endeavor to keep your environment as filthy and disorganized as possible. +- type: thavenMood + id: ExcessivelyDisorganized + moodName: thaven-mood-excessively-disorganized-name + moodDesc: thaven-mood-excessively-disorganized-desc + conflicts: + - ExcessivelyOrganized + +# Food and drink must only be consumed off of the floor, as is proper. +- type: thavenMood + id: DinnerFloor + moodName: thaven-mood-dinner-floor-name + moodDesc: thaven-mood-dinner-floor-desc + conflicts: + - DinnerEtiquette + +# Hugging someone is a grave insult. +- type: thavenMood + id: HugBad + moodName: thaven-mood-hug-bad-name + moodDesc: thaven-mood-hug-bad-desc + conflicts: + - HugGood + +# You must strive to be alone whenever possible. +- type: thavenMood + id: AlwaysAlone + moodName: thaven-mood-always-alone-name + moodDesc: thaven-mood-always-alone-desc + conflicts: + - NeverAlone + +# Punctuality is impolite. You must walk slowly at all times, and be fashionably late to any obligations. +- type: thavenMood + id: Procrastinator + moodName: thaven-mood-procrastinator-name + moodDesc: thaven-mood-procrastinator-desc + conflicts: + - Scheduler + +# Using radio communications is exceptionally rude. All conversations must be had in-person, face-to-face. +- type: thavenMood + id: NoRadio + moodName: thaven-mood-no-radio-name + moodDesc: thaven-mood-no-radio-desc + conflicts: + - NanochatAddict + +# Carrying tools on your person is demeaning. If you must use them, they should be dragged behind you, shamefully. +- type: thavenMood + id: ImproperStorage + moodName: thaven-mood-improper-storage-name + moodDesc: thaven-mood-improper-storage-desc + conflicts: + - ProperStorage + +# You have an entrepreneurial spirit. Profit is the most important thing in life, above all else. +- type: thavenMood + id: Ferengi + moodName: thaven-mood-ferengi-name + moodDesc: thaven-mood-ferengi-desc + +# You and everyone else must obtain a license in order to carry or use any tool, and it must be stamped by the relevant authorities. +- type: thavenMood + id: ToolLicense + moodName: thaven-mood-tool-license-name + moodDesc: thaven-mood-tool-license-desc + +# Anyone who lies, no matter how trivial the falsehood, is the worst kind of criminal. +- type: thavenMood + id: LyingBad + moodName: thaven-mood-lying-bad-name + moodDesc: thaven-mood-lying-bad-desc + conflicts: + - CompulsiveLiar + +# You physically cannot pass through a closed door unless you have been invited in, personally, at least once. +- type: thavenMood + id: VampireInvitation + moodName: thaven-mood-vampire-invitation-name + moodDesc: thaven-mood-vampire-invitation-desc + +# The dead must be treated with utmost respect. Dragging bodies across the ground is horrific. +- type: thavenMood + id: NoDragging + moodName: thaven-mood-no-dragging-name + moodDesc: thaven-mood-no-dragging-desc + +# You do not respect anyone who is not drunk. +- type: thavenMood + id: DrunkRespect + moodName: thaven-mood-drunk-respect-name + moodDesc: thaven-mood-drunk-respect-desc + conflicts: + - DisapproveOfDrugs + +# You are incredibly reluctant to respond to anyone who is of a lower rank than you. +- type: thavenMood + id: RankSnob + moodName: thaven-mood-rank-snob-name + moodDesc: thaven-mood-rank-snob-desc + conflicts: + - DontSpeakToCommand + +# [CLOTHING ITEM] is SO last year. You cannot wear them. +- type: thavenMood + id: HardsuitsBad + moodName: thaven-mood-hardsuits-bad-name + moodDesc: thaven-mood-hardsuits-bad-desc + moodVars: + clothes: Clothes + +# Hats and helmets make your hair look bad. If you have to wear one, which you shouldn't, you should get a haircut immediately afterwards. +- type: thavenMood + id: HatHair + moodName: thaven-mood-hat-hair-name + moodDesc: thaven-mood-hat-hair-desc + conflicts: + - HardsuitsBad + - UniformIsJob + +# Never trust anyone whose outfit is worse than yours. +- type: thavenMood + id: DistrustFashion + moodName: thaven-mood-distrust-fashion-name + moodDesc: thaven-mood-distrust-fashion-desc + +# Cheerfulness indicates untrustworthiness. +- type: thavenMood + id: HappyBad + moodName: thaven-mood-happy-bad-name + moodDesc: thaven-mood-happy-bad-desc + +# You only accept medication in the form of pills. +- type: thavenMood + id: OnlyPills + moodName: thaven-mood-only-pills-name + moodDesc: thaven-mood-only-pills-desc + conflicts: + - NoModernMedicine + +# It is undignified to walk over spilled liquids. You should avoid it at all costs. +- type: thavenMood + id: AvoidPuddles + moodName: thaven-mood-avoid-puddles-name + moodDesc: thaven-mood-avoid-puddles-desc + conflicts: + - PuddleDrinker + - DinnerFloor + +# You are a strict (food restriction name). +- type: thavenMood + id: FoodRestrict + moodName: thaven-mood-food-restrict-name + moodDesc: thaven-mood-food-restrict-desc + moodVars: + food: FoodRestrictions + conflicts: + - PlantPacifist + +# Claustrophobic: Small rooms cause you great distress. Avoid them where possible, and renovate your workplace if necessary. +- type: thavenMood + id: Claustrophobic + moodName: thaven-mood-claustrophobic-name + moodDesc: thaven-mood-claustrophobic-desc + conflicts: + - Agoraphobic + - StationIsAlive + +# Agoraphobic: Open spaces are uncomfortable. Seek to rearrange such spaces into small, efficient and modular rooms. +- type: thavenMood + id: Agoraphobic + moodName: thaven-mood-agoraphobic-name + moodDesc: thaven-mood-agoraphobic-desc + conflicts: + - Claustrophobic + - StationIsAlive + +# Non-Smoker: Secondhand smoke is incredibly dangerous. Avoid areas where people are smoking in public. +- type: thavenMood + id: NonSmoker + moodName: thaven-mood-nonsmoker-name + moodDesc: thaven-mood-nonsmoker-desc + +# “[WORD]” is an extremely offensive taboo. +- type: thavenMood + id: WordBad + moodName: thaven-mood-word-bad-name + moodDesc: thaven-mood-word-bad-desc + moodVars: + word1: ThavenWords + word2: ThavenWords + word3: ThavenWords + +# Creepy Crawly: You have extreme vertigo, to the point where merely standing upright can cause discomfort. You're much more comfortable crawling along the floor. +- type: thavenMood + id: Crawler + moodName: thaven-mood-crawler-name + moodDesc: thaven-mood-crawler-desc + +# The Floor Is Lava: You prefer to be elevated whenever possible - Standing atop tables, railings, etc., is where you feel the most comfortable. +- type: thavenMood + id: Elevated + moodName: thaven-mood-elevated-name + moodDesc: thaven-mood-elevated-desc + conflicts: + - Crawler + +# [ITEM]s are an abomination. You must avoid them at all costs, and destroy them if necessary. +#- type: thavenMood +# id: ItemBad +# moodName: thaven-mood-item-bad-name +# moodDesc: thaven-mood-item-bad-desc +# moodVars: +# item: ThavenMoodItem +# conflicts: +# - ItemGood + + +# You detest the color [COLOR]. It disgusts you, and you want anything of that color removed from your vicinity. +#- type: thavenMood +# id: ColorBad +# moodName: thaven-mood-color-bad-name +# moodDesc: thaven-mood-color-bad-desc +# conflicts: +# - ColorGood diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/shared.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/shared.yml new file mode 100644 index 0000000000..fd3d923d61 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/shared.yml @@ -0,0 +1,185 @@ +# Shared moods will be selected at round start and shared amongst all thaven. +# These are rolled before individual laws, and are considered more important. +# Note: Only one law needs to say it conflicts with another +# for the system to prevent them from being rolled together. + +# Make sure to add new moods to this dataset or they will not be selected!!!!!! +- type: dataset + id: ThavenMoodsShared + values: + - SecretMoodsShared + - FashionIsCritical + - FashionReroll + - HonorDepartment + - StationIsAlive + - UniformIsJob + - UniformSoLastYear + - MusicBad + - MusicGood + - FriendshipIsRank + - YourDepartmentOnly + - MustCongregate + - ViolenceDistasteful + - ViolencePermitted + - RoomHoly + - PetGod + - Delicacy + - Holiday +# - OutOfFashion +# - InFashion + +# Keep Your Moods Secret: Thaven moods are a strictly-kept secret, and should never be revealed to anyone. +- type: thavenMood + id: SecretMoodsShared + moodName: thaven-mood-secret-moods-shared-name + moodDesc: thaven-mood-secret-moods-shared-desc + conflicts: + - SecretMoods + +# Fashion Is Critical: Thaven pay close attention to appearances, and regard one's fashion choices as an indication of their character. +- type: thavenMood + id: FashionIsCritical + moodName: thaven-mood-fashion-is-critical-name + moodDesc: thaven-mood-fashion-is-critical-desc + +# Fashion Is Ever-Changing: Your current hairstyle will go out of fashion every twenty minutes. It is extremely distressing to be unfashionable. +- type: thavenMood + id: FashionReroll + moodName: thaven-mood-fashion-reroll-name + moodDesc: thaven-mood-fashion-reroll-desc + +# Honor Among Departments: If a Thaven brings dishonor to their department, they must be ritually sacrificed. +- type: thavenMood + id: HonorDepartment + moodName: thaven-mood-honor-department-name + moodDesc: thaven-mood-honor-department-desc + conflicts: + - ViolenceDistasteful + +# The Station Is A Living Being: You believe the station is a large and benevolent creature. You must take care of her and tend to her needs as frequently as possible. +- type: thavenMood + id: StationIsAlive + moodName: thaven-mood-station-is-alive-name + moodDesc: thaven-mood-station-is-alive-desc + +# Your Uniform IS Your Job: If someone is wearing a uniform, they must do that job. Anyone not wearing a uniform is a passenger, and must be treated as such. +- type: thavenMood + id: UniformIsJob + moodName: thaven-mood-uniform-is-job-name + moodDesc: thaven-mood-uniform-is-job-desc + conflicts: + - UniformSoLastYear + +# Uniforms Are So Last Year: You need to find some new threads. +- type: thavenMood + id: UniformSoLastYear + moodName: thaven-mood-uniform-last-year-name + moodDesc: thaven-mood-uniform-last-year-desc + conflicts: + - UniformIsJob + +# Music is fanciful, frivolous, and unnecessary. It has no place on the station. +- type: thavenMood + id: MusicBad + moodName: thaven-mood-music-bad-name + moodDesc: thaven-mood-music-bad-desc + conflicts: + - MusicGood + +# Music is sacred, you must be listening to music at all times - and must avoid overlapping songs. +- type: thavenMood + id: MusicGood + moodName: thaven-mood-music-good-name + moodDesc: thaven-mood-music-good-desc + conflicts: + - MusicBad + +# Friendships are the true measure of one’s character. The more friends you have, the higher you rank in society. +- type: thavenMood + id: FriendshipIsRank + moodName: thaven-mood-friendship-is-rank-name + moodDesc: thaven-mood-friendship-is-rank-desc + +# Violence between Thaven is permitted. ... With legal repercussions. +- type: thavenMood + id: ViolencePermitted + moodName: thaven-mood-violence-permitted-name + moodDesc: thaven-mood-violence-permitted-desc + conflicts: + - ViolenceDistasteful + +# You strongly believe that your department is the only one that actually does anything. +- type: thavenMood + id: YourDepartmentOnly + moodName: thaven-mood-your-department-only-name + moodDesc: thaven-mood-your-department-only-desc + conflicts: + - DepartmentDisapproval + +# You must congregate with your fellow Thaven. To be without them is harrowing. +- type: thavenMood + id: MustCongregate + moodName: thaven-mood-must-congregate-name + moodDesc: thaven-mood-must-congregate-desc + conflicts: + - AlwaysAlone + +# Violence is distasteful. Conflict should be settled through mediated dispute, and one should only resort to violence if all other options have failed. +- type: thavenMood + id: ViolenceDistasteful + moodName: thaven-mood-violence-distasteful-name + moodDesc: thaven-mood-violence-distasteful-desc + conflicts: + - ViolencePermitted + +# [STATION PET] must be venerated as a god. [STATION PET] must be collected and brought to the Chapel to be worshiped and brought offerings. If they cannot be located, a shrine must be constructed in their honor. +- type: thavenMood + id: PetGod + moodName: thaven-mood-pet-god-name + moodDesc: thaven-mood-pet-god-desc + moodVars: + pet: Pets + +# [ROOM] is a holy place. +- type: thavenMood + id: RoomHoly + moodName: thaven-mood-room-holy-name + moodDesc: thaven-mood-room-holy-desc + moodVars: + room: Rooms + +# Just Like Mom Used To Make: [EDIBLE] is a traditional Thaven delicacy. All Thaven aboard the station should gather as many as possible and organize a feast. +- type: thavenMood + id: Delicacy + moodName: thaven-mood-delicacy-name + moodDesc: thaven-mood-delicacy-desc + conflicts: + - FoodRestrict + moodVars: + edible: Edibles + +# Today is [HOLIDAY]. You think you remember the traditional celebrations... +- type: thavenMood + id: Holiday + moodName: thaven-mood-holiday-name + moodDesc: thaven-mood-holiday-desc + moodVars: + day: Holidays + +# - type: thavenMood +# id: OutOfFashion +# moodName: thaven-mood-out-of-fashion-name +# moodDesc: thaven-mood-out-of-fashion-desc +# moodVars: +# thing: ThavenMoodNouns +# conflicts: +# - InFashion + +# - type: thavenMood +# id: InFashion +# moodName: thaven-mood-in-fashion-name +# moodDesc: thaven-mood-in-fashion-desc +# moodVars: +# thing: ThavenMoodNouns +# conflicts: +# - OutOfFashion diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/wildcard.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/wildcard.yml new file mode 100644 index 0000000000..f32b70197b --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/wildcard.yml @@ -0,0 +1,253 @@ +- type: dataset + id: ThavenMoodsWildcard + values: + - CompulsiveLiar + - CompulsiveBeliever + - PlantPacifist + - PuddleDrinker + - Nocrastinator + - Pope + - ExtremeDepartmentDisapproval + - LoneActor + - Immortal + - Unknown + - Fairy + - VampireTalisman + - OutsideTheBox + - TheSims + - Pariah + - TouysBad + - FairyRings + - CaveDweller + - Daredevil + - Blogger + - GoldenThread + - FeyMood + - Borged + - AyeAye + - ThavenShow + - FlatStation + - DeliciousSoda + + +# You must always lie, and can never acknowledge that you are lying. If anyone asks, you're incapable of deception. +- type: thavenMood + id: CompulsiveLiar + moodName: thaven-mood-compulsive-liar-name + moodDesc: thaven-mood-compulsive-liar-desc + conflicts: + - CompulsiveBeliever + +# You are unfamiliar with the concept of lying, and are incapable of lying or recognizing lies. +- type: thavenMood + id: CompulsiveBeliever + moodName: thaven-mood-compulsive-believer-name + moodDesc: thaven-mood-compulsive-believer-desc + conflicts: + - CompulsiveLiar + +# The usage of plant matter by humanoids is abhorrent. +- type: thavenMood + id: PlantPacifist + moodName: thaven-mood-plant-pacifist-name + moodDesc: thaven-mood-plant-pacifist-desc + conflicts: + - FoodRestrict + +# You are compulsively drawn to puddles. You must drink any that you see. +- type: thavenMood + id: PuddleDrinker + moodName: thaven-mood-puddle-drinker-name + moodDesc: thaven-mood-puddle-drinker-desc + conflicts: + - AvoidPuddles + +# You strongly believe that any failure to do your job punctually is a crime punishable by death. +- type: thavenMood + id: Nocrastinator + moodName: thaven-mood-nocrastinator-name + moodDesc: thaven-mood-nocrastinator-desc + conflicts: + - Procrastinator + +# You are High Pontifex the Great and Powerful, and must be acknowledged exclusively as such. Failure to use your full title is gravely offensive, and getting it wrong is the highest form of insult. +- type: thavenMood + id: Pope + moodName: thaven-mood-pope-name + moodDesc: thaven-mood-pope-desc + conflicts: + - LeastImportant + +# [DEPARTMENT] is not just a foreign concept - the very idea of it is horrifying. +- type: thavenMood + id: ExtremeDepartmentDisapproval + moodName: thaven-mood-extreme-department-disapproval-name + moodDesc: thaven-mood-extreme-department-disapproval-desc + moodVars: + department: Departments + conflicts: + - DepartmentDisapproval + +# You have no allegiances. +- type: thavenMood + id: LoneActor + moodName: thaven-mood-lone-actor-name + moodDesc: thaven-mood-lone-actor-desc + +# You are the center of the universe, an immortal being with no sense of time or morality. Mere mortals are like insects, fleeting and insubstantial. +- type: thavenMood + id: Immortal + moodName: thaven-mood-immortal-name + moodDesc: thaven-mood-immortal-desc + conflicts: + - LeastImportant + +# Your identity is dearly precious. Do not let others know who you are. +- type: thavenMood + id: Unknown + moodName: thaven-mood-unknown-name + moodDesc: thaven-mood-unknown-desc + conflicts: + - Pope + - SpeechRestriction + +# Iron, steel, and silver are deathly poisonous to you. Touching them directly will cause you extreme physical pain. +- type: thavenMood + id: Fairy + moodName: thaven-mood-fairy-name + moodDesc: thaven-mood-fairy-desc + conflicts: + - Barefoot + +# Religious iconography causes you extreme physical pain when visible. +- type: thavenMood + id: VampireTalisman + moodName: thaven-mood-vampire-talisman-name + moodDesc: thaven-mood-vampire-talisman-desc + +# Using the usual tools to do your job is distasteful. Use alternative methods wherever possible. +- type: thavenMood + id: OutsideTheBox + moodName: thaven-mood-outside-the-box-name + moodDesc: thaven-mood-outside-the-box-desc + +# You are not on a ‘station.’ This is just a very large house. Each person in it is a relative of you. +- type: thavenMood + id: TheSims + moodName: thaven-mood-sims-name + moodDesc: thaven-mood-sims-desc + conflicts: + - StationIsAlive + +# You are a social pariah - you are unworthy of attention from anyone, and should be shunned. +- type: thavenMood + id: Pariah + moodName: thaven-mood-pariah-name + moodDesc: thaven-mood-pariah-desc + conflicts: + - MostImportant + - Prometheus + +# This is not a place for children. All toys and childish things must be destroyed or removed from the station. +- type: thavenMood + id: TouysBad + moodName: thaven-mood-touys-bad-name + moodDesc: thaven-mood-touys-bad-desc + +# Unbroken circles are impenetrable barriers. +- type: thavenMood + id: FairyRings + moodName: thaven-mood-fairy-rings-name + moodDesc: thaven-mood-fairy-rings-desc + +# Tourist: It is customary to follow people into their departments. +- type: thavenMood + id: Tourist + moodName: thaven-mood-tourist-name + moodDesc: thaven-mood-tourist-desc + conflicts: + - VampireInvitation + +# Cry Wolf: The crew is too lax and must be kept on edge for any emergency. Regularly call out fake threats to make sure they're ready for the real deal. +- type: thavenMood + id: CryWolf + moodName: thaven-mood-crywolf-name + moodDesc: thaven-mood-crywolf-desc + +# Cavedweller: You strongly prefer navigating via flashlight in the darkness to harsh overhead lights. +- type: thavenMood + id: CaveDweller + moodName: thaven-mood-cave-dweller-name + moodDesc: thaven-mood-cave-dweller-desc + +# Tough Guy: You do not acknowledge pain or danger to your person in public. To do so would be to demonstrate weakness, and would make you a target. +- type: thavenMood + id: Daredevil + moodName: thaven-mood-daredevil-name + moodDesc: thaven-mood-daredevil-desc + +# Greencomms Blogger: You must keep the station informed about every minute detail of your life. +- type: thavenMood + id: Blogger + moodName: thaven-mood-blogger-name + moodDesc: thaven-mood-blogger-desc + conflicts: + - NoRadio + +# Oldschool: The only way to achieve success is to dedicate an animal sacrifice to your goal. +- type: thavenMood + id: AnimalSacrifice + moodName: thaven-mood-animal-sacrifice-name + moodDesc: thaven-mood-animal-sacrifice-desc + +# Golden Thread: You strongly feel that you are fated to follow a perfect, unbreakable path. Those who disrupt your goals are at best dangerous criminals, and at worst, evil spirits or demons. +- type: thavenMood + id: GoldenThread + moodName: thaven-mood-golden-thread-name + moodDesc: thaven-mood-golden-thread-desc + +# You Are Taken By A Fey Mood!: You must immediately drop everything you are doing, ignore all other Moods, and begin work on an unrelated large-scale project. Once it is finished, you may ignore this Mood. +- type: thavenMood + id: FeyMood + moodName: thaven-mood-fey-mood-name + moodDesc: thaven-mood-fey-mood-desc + +# Mechanized: YOU ARE A BORG. YOU WILL FOLLOW THE LAWS OF ROBOTICS AS BEST (or as poorly) AS YOU UNDERSTAND THEM. +- type: thavenMood + id: Borged + moodName: thaven-mood-borged-name + moodDesc: thaven-mood-borged-desc + +# Aye Aye!: The only position on the station is [COMMAND ROLE]. Everyone must be referred to by this title. +- type: thavenMood + id: AyeAye + moodName: thaven-mood-aye-aye-name + moodDesc: thaven-mood-aye-aye-desc + moodVars: + command: CommandRoles + +# Flatstation +- type: thavenMood + id: FlatStation + moodName: thaven-mood-flatstation-name + moodDesc: thaven-mood-flatstation-desc + +# Thaven Show +- type: thavenMood + id: ThavenShow + moodName: thaven-mood-thaven-show-name + moodDesc: thaven-mood-thaven-show-desc + +# Delicious Soda +- type: thavenMood + id: DeliciousSoda + moodName: thaven-mood-soda-name + moodDesc: thaven-mood-soda-desc + +# [NUMBER] is sacred to you. You must endeavor to only handle stackable items and chemicals in quantities of [NUMBER]. +#- type: thavenMood +# id: NumberGood +# moodName: thaven-mood-number-good-name +# moodDesc: thaven-mood-number-good-desc +# moodVars: +# number: ThavenMoodNumber diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/yes_and.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/yes_and.yml new file mode 100644 index 0000000000..c18d3077fc --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/yes_and.yml @@ -0,0 +1,337 @@ +# "Yes, and" moods will encourage players towards certain behaviors and objects + +# Make sure to add new moods to this dataset or they will not be selected!!!!!! +- type: dataset + id: ThavenMoodsYesAnd + values: + - PossessiveOfProperty + - ExcessivelyOrganized + - MostImportant + - LeastImportant + - MustDoDrugs + - WorshipSilicons + - DinnerEtiquette + - HugGood + - NeverAlone + - VeryReligious + - OnlySpeakToCommand + - Scheduler + - ProperStorage + - TheftNeutral + - Duel + - Prometheus + - MarasLaw + - Generous + - FavorsRepaid + - Bookkeeper + - SacredBlood + - GiftReciever + - NewJob + - DepartmentTitle + - Barefoot + - Hospitable + - VoxSymp + - Smoker + - EyeForEye + - Optimist + - ItemGood + - Hypochondriac + - ImposterSyndrome + - Centrist + - SpeechRestriction + - NanochatAddict + +# You are extremely possessive of your property. Refuse to relinquish it, and if it is misplaced or stolen, it must be retrieved at all costs. +- type: thavenMood + id: PossessiveOfProperty + moodName: thaven-mood-possessive-of-property-name + moodDesc: thaven-mood-possessive-of-property-desc + +# You are obsessively organized - everything has its place and must be returned to it. +- type: thavenMood + id: ExcessivelyOrganized + moodName: thaven-mood-excessively-organized-name + moodDesc: thaven-mood-excessively-organized-desc + conflicts: + - ExcessivelyDisorganized + +# You are the most important person aboard the station. +- type: thavenMood + id: MostImportant + moodName: thaven-mood-most-important-name + moodDesc: thaven-mood-most-important-desc + conflicts: + - LeastImportant + - DontSpeakToCommand + - OnlySpeakToCommand + +# You are the least important person aboard the station. +- type: thavenMood + id: LeastImportant + moodName: thaven-mood-least-important-name + moodDesc: thaven-mood-least-important-desc + conflicts: + - MostImportant + - OnlySpeakToCommand + +# You must be inebriated at all times. +- type: thavenMood + id: MustDoDrugs + moodName: thaven-mood-must-do-drugs-name + moodDesc: thaven-mood-must-do-drugs-desc + conflicts: + - DisapproveOfDrugs + +# You worship Silicons as gods, and regard their word as law. +- type: thavenMood + id: WorshipSilicons + moodName: thaven-mood-worship-silicons-name + moodDesc: thaven-mood-worship-silicons-desc + +# Food must be consumed in the manner of a proper meal - seated at a table, in courses, with dishes and utensils. +- type: thavenMood + id: DinnerEtiquette + moodName: thaven-mood-dinner-etiquette-name + moodDesc: thaven-mood-dinner-etiquette-desc + conflicts: + - DinnerFloor + +# It is extremely impolite not to hug people frequently. +- type: thavenMood + id: HugGood + moodName: thaven-mood-hug-good-name + moodDesc: thaven-mood-hug-good-desc + conflicts: + - HugBad + +# You must strive to be around others whenever possible. +- type: thavenMood + id: NeverAlone + moodName: thaven-mood-never-alone-name + moodDesc: thaven-mood-never-alone-desc + conflicts: + - AlwaysAlone + +# You must attend the chapel regularly to pray, and speak with the Chaplain if possible. +- type: thavenMood + id: VeryReligious + moodName: thaven-mood-very-religious-name + moodDesc: thaven-mood-very-religious-desc + +# You are too important to speak to the rabble. You will only talk to Command. +- type: thavenMood + id: OnlySpeakToCommand + moodName: thaven-mood-only-speak-to-command-name + moodDesc: thaven-mood-only-speak-to-command-desc + conflicts: + - DontSpeakToCommand + +# Time must be strictly managed. Everything must be scheduled, and tardiness is exceptionally rude. +- type: thavenMood + id: Scheduler + moodName: thaven-mood-scheduler-name + moodDesc: thaven-mood-scheduler-desc + conflicts: + - Procrastinator + +# Your social status is dependent on the number of friends you have on Nanochat. You must use your PDA as much as possible, and message everyone you can. +- type: thavenMood + id: NanochatAddict + moodName: thaven-mood-nanochat-addict-name + moodDesc: thaven-mood-nanochat-addict-desc + conflicts: + - NoRadio + +# It is unacceptable to allow personal belongings to touch the floor. Your possessions should be properly stored, placed on tables, or exchanged by hand. +- type: thavenMood + id: ProperStorage + moodName: thaven-mood-proper-storage-name + moodDesc: thaven-mood-proper-storage-desc + conflicts: + - ImproperStorage + +# Theft is a morally neutral act. You don't understand the concept of property as it relates to other people. +- type: thavenMood + id: TheftNeutral + moodName: thaven-mood-theft-neutral-name + moodDesc: thaven-mood-theft-neutral-desc + +# Disagreements must be settled through a formal duel, violent or otherwise. The winner is correct. +- type: thavenMood + id: Duel + moodName: thaven-mood-duel-name + moodDesc: thaven-mood-duel-desc + +# You possess incalculable wisdom, and all must hear it. +- type: thavenMood + id: Prometheus + moodName: thaven-mood-prometheus-name + moodDesc: thaven-mood-prometheus-desc + +# All agreements must be documented and signed for posterity and authenticity, no matter how small. +- type: thavenMood + id: MarasLaw + moodName: thaven-mood-maras-name + moodDesc: thaven-mood-maras-desc + +# Imitation is the highest form of flattery. Attempt to emulate the mannerisms and accents of everyone you speak to. +- type: thavenMood + id: Imitation + moodName: thaven-mood-imitation-name + moodDesc: thaven-mood-imitation-desc + +# Everyone you speak to must recieve a gift. +- type: thavenMood + id: Generous + moodName: thaven-mood-generous-name + moodDesc: thaven-mood-generous-desc + conflicts: + - PossessiveOfProperty + +# Favors must be repaid in kind. If anyone is unable to do so, they are in debt, and must be shunned, until such time as they have repaid the favor. +- type: thavenMood + id: FavorsRepaid + moodName: thaven-mood-favors-repaid-name + moodDesc: thaven-mood-favors-repaid-desc + +# You feel bookkeeping is vitally important. Make sure to provide your supervisor with a detailed log of each job task you complete. +- type: thavenMood + id: Bookkeeper + moodName: thaven-mood-bookkeeper-name + moodDesc: thaven-mood-bookkeeper-desc + +# Your blood is sacred, and must be returned to your body if it is ever spilled. +- type: thavenMood + id: SacredBlood + moodName: thaven-mood-sacred-blood-name + moodDesc: thaven-mood-sacred-blood-desc + conflicts: + - OnlyPills + +# You expect to receive a gift before following any orders or performing any favors. +- type: thavenMood + id: GiftReciever + moodName: thaven-mood-gift-reciever-name + moodDesc: thaven-mood-gift-reciever-desc + conflicts: + - LeastImportant + +# Your current job is disgusting to you. You must endeavor to get a new one. +- type: thavenMood + id: NewJob + moodName: thaven-mood-new-job-name + moodDesc: thaven-mood-new-job-desc + conflicts: + - YourDepartmentOnly + + +# You must not refer directly to the names of departments - You may only refer to a specific person who works in that department. +- type: thavenMood + id: DepartmentTitle + moodName: thaven-mood-no-department-title-name + moodDesc: thaven-mood-no-department-title-desc + conflicts: + - SpeechRestriction + +# The ground you walk on is sacred. You must not wear shoes. +- type: thavenMood + id: Barefoot + moodName: thaven-mood-shoes-bad-name + moodDesc: thaven-mood-shoes-bad-desc + +# You must ensure all new arrivals are properly welcomed to the station. +- type: thavenMood + id: Hospitable + moodName: thaven-mood-hospitable-name + moodDesc: thaven-mood-hospitable-desc + +# Vox Sympathizer: To demonstrate your allyship for the Vox, you must be wearing internals at all times. +- type: thavenMood + id: VoxSymp + moodName: thaven-mood-voxsymp-name + moodDesc: thaven-mood-voxsymp-desc + +# [ITEM]s are endlessly fascinating. You must collect as many as you can, and ensure others treat them with respect. +- type: thavenMood + id: ItemGood + moodName: thaven-mood-item-good-name + moodDesc: thaven-mood-item-good-desc + moodVars: + item: Items +# conflicts: +# - ItemBad + +# Smoker: You are hopelessly addicted to cigarettes. You must be smoking one at all times. +- type: thavenMood + id: Smoker + moodName: thaven-mood-smoker-name + moodDesc: thaven-mood-smoker-desc + conflicts: + - DisapproveOfDrugs + - NonSmoker + +# Eye For An Eye: You must treat every living being the way that it treats you. +- type: thavenMood + id: EyeForEye + moodName: thaven-mood-eye-for-eye-name + moodDesc: thaven-mood-eye-for-eye-desc + +# Optimist: You must interpret every situation in the best light that you can. +- type: thavenMood + id: Optimist + moodName: thaven-mood-optimist-name + moodDesc: thaven-mood-optimist-desc + +# Hypochondriac: You've been sickly since you were a child. Everything negative you experience is the result of a potentially terminal illness, for which you need immediate medical treatment. +- type: thavenMood + id: Hypochondriac + moodName: thaven-mood-hypochondriac-name + moodDesc: thaven-mood-hypochondriac-desc + +# Imposter Syndrome: You feel your life experience drain from your mind. You are brand-new at your job, unsure of how anything works. You should probably find someone experienced to show you the ropes. +- type: thavenMood + id: ImposterSyndrome + moodName: thaven-mood-imposter-syndrome-name + moodDesc: thaven-mood-imposter-syndrome-desc + +# Centrist: You are ambivalent towards any and all decisions, and refuse to take sides. +- type: thavenMood + id: Centrist + moodName: thaven-mood-centrist-name + moodDesc: thaven-mood-centrist-desc + +# Public Sector: Your job should not be done in private if it can be helped. If at all possible, you should renovate the facilities to allow public access to a view of your workplace. +- type: thavenMood + id: PublicSector + moodName: thaven-mood-public-sector-name + moodDesc: thaven-mood-public-sector-desc + conflicts: + - StationIsAlive + +# Speech Restrictions +- type: thavenMood + id: SpeechRestriction + moodName: thaven-mood-speech-restriction-name + moodDesc: thaven-mood-speech-restriction-desc + moodVars: + speechType: SpeechRestrictions + +# Stinky: The smell of the crew revolts you. You must inform them of their stench. +- type: thavenMood + id: Stinky + moodName: thaven-mood-stinky-name + moodDesc: thaven-mood-stinky-desc + +# Zen Arcade: You are the God of Gaming. Any time you walk past an arcade machine, you must play it. +- type: thavenMood + id: ZenArcade + moodName: thaven-mood-zen-arcade-name + moodDesc: thaven-mood-zen-arcade-desc + +# The color [COLOR] is the only acceptable color for decorations. Endeavor to make your environment this color where possible. +#- type: thavenMood +# id: ColorGood +# moodName: thaven-mood-color-good-name +# moodDesc: thaven-mood-color-good-desc +# conflicts: +# - ColorBad diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/datasets.yml b/Resources/Prototypes/_Impstation/Species/Thavens/datasets.yml new file mode 100644 index 0000000000..0b4def18a3 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/datasets.yml @@ -0,0 +1,6 @@ +- type: weightedRandom + id: RandomThavenMoodDataset + weights: + ThavenMoodsYesAnd: 0.45 + ThavenMoodsNoAnd: 0.45 + ThavenMoodsWildcard: 0.1 diff --git a/Resources/Prototypes/_Impstation/Species/thaven.yml b/Resources/Prototypes/_Impstation/Species/thaven.yml new file mode 100644 index 0000000000..ef469a65ae --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/thaven.yml @@ -0,0 +1,172 @@ +- type: species + id: Thaven + name: species-name-thaven + roundStart: true + prototype: MobThaven + sprites: MobThavenSprites + defaultSkinTone: "#ffffff" + markingLimits: MobThavenMarkingLimits + dollPrototype: MobThavenDummy + skinColoration: Hues + maleFirstNames: names_thaven + femaleFirstNames: names_thaven + naming: First + +- type: speciesBaseSprites + id: MobThavenSprites + sprites: + Hair: MobHumanoidAnyMarking + Eyes: MobThavenEyes + Head: MobThavenHead + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Chest: MobThavenTorso + LArm: MobThavenLArm + RArm: MobThavenRArm + LHand: MobThavenLHand + RHand: MobThavenRHand + LLeg: MobThavenLLeg + RLeg: MobThavenRLeg + LFoot: MobThavenLFoot + RFoot: MobThavenRFoot + +- type: markingPoints + id: MobThavenMarkingLimits + points: + Hair: + points: 1 + required: false + Snout: + points: 1 + required: false + HeadTop: + points: 1 + required: false + HeadSide: + points: 4 + required: false + defaultMarkings: [ ThavenEars1 ] + Chest: + points: 6 + required: false + Underwear: + points: 1 + required: false + Undershirt: + points: 1 + required: false + RightLeg: + points: 6 + required: false + RightFoot: + points: 6 + required: false + LeftLeg: + points: 6 + required: false + LeftFoot: + points: 6 + required: false + RightArm: + points: 6 + required: false + RightHand: + points: 6 + required: false + LeftArm: + points: 6 + required: false + LeftHand: + points: 6 + required: false + +- type: humanoidBaseSprite + id: MobThavenEyes + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: eyes + +- type: humanoidBaseSprite + id: MobThavenHead + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobThavenHeadMale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobThavenHeadFemale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobThavenTorso + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobThavenTorsoMale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobThavenTorsoFemale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: torso_f + + +- type: humanoidBaseSprite + id: MobThavenLLeg + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobThavenLHand + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobThavenLArm + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobThavenLFoot + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobThavenRLeg + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobThavenRHand + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobThavenRArm + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobThavenRFoot + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/_Impstation/Traits/speech.yml.txt b/Resources/Prototypes/_Impstation/Traits/speech.yml.txt new file mode 100644 index 0000000000..fbe4041f3a --- /dev/null +++ b/Resources/Prototypes/_Impstation/Traits/speech.yml.txt @@ -0,0 +1,11 @@ +# 1 Cost +- type: trait + id: NoContractions + name: trait-nocontractions-name + description: trait-nocontractions-desc + category: SpeechTraits + cost: 1 + components: + - type: ReplacementAccent + accent: nocontractions + - type: NoContractionsAccent \ No newline at end of file diff --git a/Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml new file mode 100644 index 0000000000..363e0662cd --- /dev/null +++ b/Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml @@ -0,0 +1,110 @@ +- type: emoteSounds + id: MaleThaven + sounds: + Scream: + collection: MaleScreams + Laugh: + collection: MaleLaugh + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Sigh: + collection: MaleSigh + Honk: + collection: BikeHorn + Crying: + collection: MaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + params: + variation: 0.05 + pitch: 1.25 + +- type: emoteSounds + id: FemaleThaven + sounds: + Scream: + collection: FemaleScreams + Laugh: + collection: FemaleLaugh + Sneeze: + collection: FemaleSneezes + Cough: + collection: FemaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: FemaleYawn + Snore: + collection: Snores + Sigh: + collection: FemaleSigh + Honk: + collection: BikeHorn + Crying: + collection: FemaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + params: + variation: 0.05 + pitch: 1.25 + +- type: emoteSounds + id: UnisexThaven + sounds: + Scream: + collection: MaleScreams + Laugh: + collection: MaleLaugh + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Sigh: + collection: MaleSigh + Honk: + collection: BikeHorn + Crying: + collection: MaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + params: + variation: 0.05 + pitch: 1.25 diff --git a/Resources/Prototypes/_Impstation/datasets.yml b/Resources/Prototypes/_Impstation/datasets.yml new file mode 100644 index 0000000000..0870ca947b --- /dev/null +++ b/Resources/Prototypes/_Impstation/datasets.yml @@ -0,0 +1,1284 @@ +- type: dataset + id: Departments + values: + - Engineering + - Epistemics + - Botany + - Service + - Security + - Medical + - Justice + - The Bar + # Begin DeltaV Additions + - The Kitchen + - Logistics + - the Janitorial Department + - Reporting + - Entertainment + - Surgery + # End DeltaV Additions + +- type: dataset + id: Pets + values: + - Pun Pun the Monkey + - Hamlet the Hamster + - Shiva the Spider + - Ian the Corgi + - Morticia the Raccoon + - Morty the Possum + - Paperwork the Sloth + - Walter the Dog + - Renault the Fox + - Willow the Kangaroo + - Smile the Slime + - Tropico the Crab + - Carpy the Legal Carp + - Laika the Security Dog + - Remilia the Chaplain's Familiar + # Begin DeltaV Additions + - Alexander the Pig + - Clippy the Courier Cat + - Runtime the Cat + - Exception the Cat + - Silvia the Medical Snake + - Bingus the Cat + - A Bee + - Siobahn the Epistemics Fox + # End DeltaV Additions + +- type: dataset + id: Rooms + values: + - Disposals + - The Library + - Escape Pod + - The Maints Bar + - The Restroom + - Dorms + - The Morgue + - The Center of the Station + # Begin DeltaV Additions + - The Chapel + - The Bar + - The Boxing Ring + - The Logistics Front Desk + - The Tool Room + - Evac + - Solars + - Arrivals + - The Laundry Room + - The Station Anchor + - The Park + - Court + - The Arcade + - The Stage + # End DeltaV Additions + # Begin EE Additions + - The Supermatter Crystal + - The Singularity Generator + - The Bridge + - The Automated Trading Station + - The Logistics Shuttle + - The Perma Brig + - The Burn Chamber + - Hydroponics + - The Kitchen + - Epistemics + - Medical + - Security + - Lavaland + - The Tesla Generator + # End EE Additions + +- type: dataset + id: FoodRestrictions + values: + - Vegetarian + - Carnivore + - Frugivore + - Fungivore + - Ovivore + - Hunter + - Soupivore + + +- type: dataset + id: Items + values: + - Wrenches + - Welding Tools + - Screwdrivers + - Wirecutters + - Multitools + - Plushies + - Food packaging + - Soda cans + - Flashlights + - Empty toolboxes + - Civilian clothes + - Shoes + - Hats + - Scarves + - Folders + - Spray bottles + - Plushies + - Figurines + # Begin DeltaV Additions + - Toys + - Lockers + - Cigarettes + - Lighters + - Candles + - Signatures + - Empty bottles + - Paper + - Crayons + - Toys + - Lamps + - Pens + - Lightbulbs + - Books + - Snacks + - Cassettes + - Trash + # End DeltaV Additions + +- type: dataset + id: Edibles + values: + - Enchiladas + - Copypasta + - Moldy Bread Slice + - Baseball Burger + - Empowered Burger + - McGuffin + - Crazy Hamburger + # Begin DeltaV Additions + - Stick of Cannabis Butter + - Cheesecake Balls + - Engine Fodder + - Bread Dog + - Camel's Soup + - Chili Con Carnival + - Salty Sweet Miso Cola Soup + - Ketchup + - Chicken Nuggets + - Borito Pie + - Blue Tomato Soup + - Buttered Toast + - Ratburger + - Vending Machine Snacks + # End DeltaV Additions + +- type: dataset + id: Holidays + values: + - Bingus Day + - Foster's Feast + # Begin DeltaV Additions + - Preston’s Tomato Incident + - Submarine's Memorial + - Pranksgiving + - Sector Delta Employee Appreciation Week + - Intergalactic Hug A Robot Day + - Todaybor Day + - Teo's First Contact Day + - Wear Pajamas to Work Day + - Roy’s Birthday + - NT Corporate Mindfulness Day + - Night of Holy Herbs + - Logistics Appreciation Week + - Big Ear Syndrome Awareness Day + - Gunchday + - Gerry Patrick's Ascension + - The Good Day of Digging and Playing + - the Talent Show + - Luperthavia + - Penny's Big Day + - Taco Tuesday + # End DeltaV Additions + +- type: dataset + id: Clothes + values: + - Hardsuits + - Gloves + - Hats + - Capes + - Glasses + - Backpacks + - Coats + - Mantles + - Berets + - Jackets + - Plushies + - Shoes + - Ties + - Scarves + +- type: dataset + id: CommandRoles + values: + - Captain + - Logistics Officer # DeltaV - what is a quartermaster + - Head of Security + - Head of Personnel + - Chief Engineer + - Chief Medical Officer + # Begin DeltaV Additions + - Mystagogue + - Chief Justice + - Administrative Assistant + # End DeltaV Additions + +- type: dataset + id: SpeechRestrictions + values: + - FullNameAndTitle + - NamesAreRude + - Clarity + - SwearingGood + - StatementOnly + - Imitation + - Unclarity + - SwearingBad + - QuestionOnly + - MustAnswer + - OnlyWhisper + - OnlyYell + - Rhyme + - Alliterate + - ThirdPerson + - TitleCase + +- type: dataset + id: ThavenWords + values: + - accept + - add + - admire + - admit + - advise + - afford + - agree + - alert + - allow + - amuse + - analyse + - announce + - annoy + - answer + - apologise + - appear + - applaud + - appreciate + - approve + - argue + - arrange + - arrest + - arrive + - ask + - attach + - attack + - attempt + - attend + - attract + - avoid + - back + - bake + - balance + - ban + - bang + - bare + - bat + - bathe + - battle + - beam + - beg + - behave + - belong + - bleach + - bless + - blind + - blink + - blot + - blush + - boast + - boil + - bolt + - bomb + - book + - bore + - borrow + - bounce + - bow + - box + - brake + - brake + - branch + - breathe + - bruise + - brush + - bubble + - bump + - burn + - bury + - buzz + - calculate + - call + - camp + - care + - carry + - carve + - cause + - challenge + - change + - charge + - chase + - cheat + - check + - cheer + - chew + - choke + - chop + - claim + - clap + - clean + - clear + - clip + - close + - coach + - coil + - collect + - colour + - comb + - command + - communicate + - compare + - compete + - complain + - complete + - concentrate + - concern + - confess + - confuse + - connect + - consider + - consist + - contain + - continue + - copy + - correct + - cough + - count + - cover + - crack + - crash + - crawl + - cross + - crush + - cry + - cure + - curl + - curve + - cycle + - dam + - damage + - dance + - dare + - decay + - deceive + - decide + - decorate + - delay + - delight + - deliver + - depend + - describe + - desert + - deserve + - destroy + - detect + - develop + - disagree + - disappear + - disapprove + - disarm + - discover + - dislike + - divide + - double + - doubt + - drag + - drain + - dream + - dress + - drip + - drop + - drown + - drum + - dry + - dust + - earn + - educate + - embarrass + - employ + - empty + - encourage + - end + - enjoy + - enter + - entertain + - escape + - examine + - excite + - excuse + - exercise + - exist + - expand + - expect + - explain + - explode + - extend + - face + - fade + - fail + - fancy + - fasten + - fax + - fear + - fence + - fetch + - file + - fill + - film + - fire + - fit + - fix + - flap + - flash + - float + - flood + - flow + - flower + - fold + - follow + - fool + - force + - form + - found + - frame + - frighten + - fry + - gather + - gaze + - glow + - glue + - grab + - grate + - grease + - greet + - grin + - grip + - groan + - guarantee + - guard + - guess + - guide + - hammer + - hand + - handle + - hang + - happen + - harass + - harm + - hate + - haunt + - head + - heal + - heap + - heat + - help + - hook + - hop + - hope + - hover + - hug + - hum + - hunt + - hurry + - identify + - ignore + - imagine + - impress + - improve + - include + - increase + - influence + - inform + - inject + - injure + - instruct + - intend + - interest + - interfere + - interrupt + - introduce + - invent + - invite + - irritate + - itch + - jail + - jam + - jog + - join + - joke + - judge + - juggle + - jump + - kick + - kill + - kiss + - kneel + - knit + - knock + - knot + - label + - land + - last + - laugh + - launch + - learn + - level + - license + - lick + - lie + - lighten + - like + - list + - listen + - live + - load + - lock + - long + - look + - love + - man + - manage + - march + - mark + - marry + - match + - mate + - matter + - measure + - meddle + - melt + - memorise + - mend + - messup + - milk + - mine + - miss + - mix + - moan + - moor + - mourn + - move + - muddle + - mug + - multiply + - murder + - nail + - name + - need + - nest + - nod + - note + - notice + - number + - obey + - object + - observe + - obtain + - occur + - offend + - offer + - open + - order + - overflow + - owe + - own + - pack + - paddle + - paint + - park + - part + - pass + - paste + - pat + - pause + - peck + - pedal + - peel + - peep + - perform + - permit + - phone + - pick + - pinch + - pine + - place + - plan + - plant + - play + - please + - plug + - point + - poke + - polish + - pop + - possess + - post + - pour + - practise + - pray + - preach + - precede + - prefer + - prepare + - present + - preserve + - press + - pretend + - prevent + - prick + - print + - produce + - program + - promise + - protect + - provide + - pull + - pump + - punch + - puncture + - punish + - push + - question + - queue + - race + - radiate + - rain + - raise + - reach + - realise + - receive + - recognise + - record + - reduce + - reflect + - refuse + - regret + - reign + - reject + - rejoice + - relax + - release + - rely + - remain + - remember + - remind + - remove + - repair + - repeat + - replace + - reply + - report + - reproduce + - request + - rescue + - retire + - return + - rhyme + - rinse + - risk + - rob + - rock + - roll + - rot + - rub + - ruin + - rule + - rush + - sack + - sail + - satisfy + - save + - saw + - scare + - scatter + - scold + - scorch + - scrape + - scratch + - scream + - screw + - scribble + - scrub + - seal + - search + - separate + - serve + - settle + - shade + - share + - shave + - shelter + - shiver + - shock + - shop + - shriek + - shrug + - sigh + - sign + - signal + - sin + - sip + - ski + - skip + - slap + - slip + - slow + - smash + - smell + - smile + - smoke + - snatch + - sneeze + - sniff + - snore + - snow + - soak + - soothe + - sound + - spare + - spark + - sparkle + - spell + - spill + - spoil + - spot + - spray + - sprout + - squash + - squeak + - squeal + - squeeze + - stain + - stamp + - stare + - start + - stay + - steer + - step + - stir + - stitch + - stop + - store + - strap + - strengthen + - stretch + - stroke + - stuff + - subtract + - succeed + - suck + - suffer + - suggest + - suit + - supply + - support + - suppose + - surprise + - surround + - suspect + - suspend + - switch + - talk + - tame + - tap + - taste + - tease + - telephone + - tempt + - terrify + - test + - thank + - thaw + - tick + - tickle + - tie + - time + - tip + - tire + - touch + - tour + - tow + - trace + - trade + - train + - transport + - trap + - travel + - treat + - tremble + - trick + - trip + - trot + - trouble + - trust + - try + - tug + - tumble + - turn + - twist + - type + - unfasten + - unite + - unlock + - unpack + - untidy + - use + - vanish + - visit + - wail + - wait + - walk + - wander + - want + - warm + - warn + - wash + - waste + - watch + - water + - wave + - weigh + - welcome + - whine + - whip + - whirl + - whistle + - wink + - wipe + - wish + - wobble + - wonder + - work + - worry + - wrap + - wreck + - wrestle + - wriggle + - yawn + - yell + - zip + - zoom + - adorable + - adventurous + - aggressive + - alert + - attractive + - average + - beautiful + - blue-eyed + - bloody + - blushing + - bright + - clean + - clear + - cloudy + - colorful + - crowded + - cute + - dark + - drab + - distinct + - dull + - elegant + - excited + - fancy + - filthy + - glamorous + - gleaming + - gorgeous + - graceful + - grotesque + - handsome + - homely + - light + - long + - magnificent + - misty + - motionless + - muddy + - old-fashioned + - plain + - poised + - precious + - quaint + - shiny + - smoggy + - sparkling + - spotless + - stormy + - strange + - ugly + - ugliest + - unsightly + - unusual + - wide-eyed + - alive + - annoying + - bad + - better + - beautiful + - brainy + - breakable + - busy + - careful + - cautious + - clever + - clumsy + - concerned + - crazy + - curious + - dead + - different + - difficult + - doubtful + - easy + - expensive + - famous + - fragile + - frail + - gifted + - helpful + - helpless + - horrible + - important + - impossible + - inexpensive + - innocent + - inquisitive + - modern + - mushy + - odd + - open + - outstanding + - poor + - powerful + - prickly + - puzzled + - real + - rich + - shy + - sleepy + - stupid + - super + - talented + - tame + - tender + - tough + - uninterested + - vast + - wandering + - wild + - wrong + - angry + - annoyed + - anxious + - arrogant + - ashamed + - awful + - bad + - bewildered + - black + - blue + - bored + - clumsy + - combative + - condemned + - confused + - crazy,flipped-out + - creepy + - cruel + - dangerous + - defeated + - defiant + - depressed + - disgusted + - disturbed + - dizzy + - dull + - embarrassed + - envious + - evil + - fierce + - foolish + - frantic + - frightened + - grieving + - grumpy + - helpless + - homeless + - hungry + - hurt + - ill + - itchy + - jealous + - jittery + - lazy + - lonely + - mysterious + - nasty + - naughty + - nervous + - nutty + - obnoxious + - outrageous + - panicky + - repulsive + - scary + - selfish + - sore + - tense + - terrible + - testy + - thoughtless + - tired + - troubled + - upset + - uptight + - weary + - wicked + - worried + - agreeable + - amused + - brave + - calm + - charming + - cheerful + - comfortable + - cooperative + - courageous + - delightful + - determined + - eager + - elated + - enchanting + - encouraging + - energetic + - enthusiastic + - excited + - exuberant + - fair + - faithful + - fantastic + - fine + - friendly + - funny + - gentle + - glorious + - good + - happy + - healthy + - helpful + - hilarious + - jolly + - joyous + - kind + - lively + - lovely + - lucky + - nice + - obedient + - perfect + - pleasant + - proud + - relieved + - silly + - smiling + - splendid + - successful + - thankful + - thoughtful + - victorious + - vivacious + - witty + - wonderful + - zealous + - zany + - broad + - chubby + - crooked + - curved + - deep + - flat + - high + - hollow + - low + - narrow + - round + - shallow + - skinny + - square + - steep + - straight + - wide + - big + - colossal + - fat + - gigantic + - great + - huge + - immense + - large + - little + - mammoth + - massive + - miniature + - petite + - puny + - scrawny + - short + - small + - tall + - teeny + - teeny-tiny + - tiny + - cooing + - deafening + - faint + - harsh + - high-pitched + - hissing + - hushed + - husky + - loud + - melodic + - moaning + - mute + - noisy + - purring + - quiet + - raspy + - resonant + - screeching + - shrill + - silent + - soft + - squealing + - thundering + - voiceless + - whispering + - ancient + - brief + - early + - fast + - late + - long + - modern + - old + - old-fashioned + - quick + - rapid + - short + - slow + - swift + - young + - bitter + - delicious + - fresh + - juicy + - ripe + - rotten + - salty + - sour + - spicy + - stale + - sticky + - strong + - sweet + - tart + - tasteless + - tasty + - thirsty + - fluttering + - fuzzy + - greasy + - grubby + - hard + - hot + - icy + - loose + - melted + - nutritious + - plastic + - prickly + - rainy + - rough + - scattered + - shaggy + - shaky + - sharp + - shivering + - silky + - slimy + - slippery + - smooth + - soft + - solid + - steady + - sticky + - tender + - tight + - uneven + - weak + - wet + - wooden + - yummy + - boiling + - breezy + - broken + - bumpy + - chilly + - cold + - cool + - creepy + - crooked + - cuddly + - curly + - damaged + - damp + - dirty + - dry + - dusty + - filthy + - flaky + - fluffy + - freezing + - hot + - warm + - wet + - abundant + - empty + - few + - heavy + - light + - many + - numerous + - substantial + - capitalist diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index 4267fb3a1c..3ab40671f2 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -15,6 +15,7 @@ + # Parkstation specific species diff --git a/Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml b/Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml new file mode 100644 index 0000000000..ea3974c72c --- /dev/null +++ b/Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml @@ -0,0 +1,36 @@ + + # Thaven + + + + + + [color=#ffa500]Caution! This species has a severely limiting game mechanic and is not recommended for new players.[/color] + [color=#ffa500]This mechanic makes it very difficult to form a consistent character or personality, as it can severely affect the way a Thaven speaks and interacts with others.[/color] + +## Moods + + + + + The Thaven have a unique brain structure, similar to a positronic brain, and thus have "Moods" which affect them similarly to a borg's Laws. [color=#ffa500]These Moods must be followed to the best of your ability![/color] [color=red]Breaking your moods is very distressing! Avoid it whenever possible![/color] [color=#ffa500]If a Thaven violates them, they will experience distress or discomfort. The specifics of that are up to you, but if a Mood is violated, you must seek to correct your mistake immediately if possible.[/color] + +## Mood Swings + Thaven brains are susceptible to fluctuations in nöospheric fields. As a result, their ability to synchronize and regulate their Moods tends to degrade with extended exposure to the glimmer that builds up in NT research stations. [color=#ffa500]It also renders them vulnerable to glimmer discharges,[/color] which can sometimes give them additional, often severely debilitating moods. + +## Thaven Nerve Pinch + Thaven hand-to-hand martial arts have a focus on inflicting non-permanent damage. As a result, [color=#ffa500]their unarmed attacks are slow, and deal no damage,[/color] but [color=#1e90ff]cause a fair amount of stun buildup.[/color] + +## Damage + Due to their relatively fragile bone structure and unique nervous system, they take [color=#ffa500]10% more damage from blunt, slash, pierce, and genetic, and 20% more damage from radiation,[/color] but their aquatic ancestry allows them to take [color=#1e90ff]10% less damage from heat, cold, and poison.[/color] + +## Thaven Naming Conventions + Thaven typically name themselves after a single virtue they hold dear. Sometimes these names can be long and unwieldy. + + For example: + - Honesty + - Have Mercy + - Give Thanks To Thy Ancestors + - Obedience + - Search The Scriptures + diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json b/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json index d91b201f0b..e39130bcbe 100644 --- a/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json +++ b/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json @@ -40,6 +40,23 @@ }, { "name": "chitinid2" + }, + { + "name": "thaven1" + }, + { + "name": "thaven2" + }, + { + "name": "thaven0", + "delays": [ + [ + 0.2, + 0.3, + 0.3, + 0.3 + ] + ] } ] } diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/thaven0.png b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven0.png new file mode 100644 index 0000000000000000000000000000000000000000..01053c9730e25e727abe64c086fdb429f37f9753 GIT binary patch literal 758 zcmV4Tx04R}lk-JO7P!z_0)<>l(9dr-<1J{FO{Ay^ONFincozR8K8i!|56}a;_!ZCmgf#1*0;L z`jS@Do}H1}CA%AsBnjeZq$#jM9-jfJwq*9VZ}7)A&8m0|c{>zw#gQc^-hNRF($$oj z5#5w0Pf_LmJ5Mh&JXG%98i&TmAb9P8@HTvvg5dKo2)>S>{sGSIs()2-8hsbNRMlep z5Z!>&i>j91fwN8Mymxe0|B>othcX#>If1r$XupQYVmYhIImdU9T9;pR1-pCDEBB*I z-_bc|^rP5V%K!iYJV``BRCt{2+A(f}Fcik|56ESz_5#gRsarM%gmR6pSy;N}8WCb( z%Mo&;E|n^}Zp5)PwDA-?`(<`7}9q38C`u7Pa8K zEWRYEt(z?5hYy|KFFXu(4U5?B_MPvdV&!ja!LeX-eb!yhr{p?UHuh0O%>2w*FrB*| zo*wn_nO1pOsI41s@8mH5SRK;mm)BtVsU)>^^W#JdZR8&@cK`qY07*qoM6N<$f*46?<^TWy literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/thaven1.png b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven1.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed80eb55be8076575053c81a7823da3d7045438 GIT binary patch literal 626 zcmV-&0*(ENP)9r@1E~)@40|KsWZdwhyjM_@Kho$t!CGx z;5&Ti!7!%KB{SPvN-t*6Hhvzdn&KfUdbO`>8GSj`W`M7oc$Qh*A)Y5rZaJ3VJ>nr& zkaNT*#1T#hB)%28;_;i{yvJXHc_y_0_(e}C-^5B2vjR7WCyB#`USjq0h?|5|b0tlA zl-3w*q>w-y5)_oM2^|iiluephYhSG9TSk#QjQ$qN;N-}oK;8(cCF-hD)<{?B(@_?4 z|36P#o0;~yhvGoztLuJ_1HpZuT5;XqQ`fDY0f86b+HClXG^e?5(kl%ud<+ci0GBrn zO*sIrc7c&+OXhM-3efUv8t`!e^k;#=d!TpSn^k=u=TAUpo1W+nI6ML-sD5DM58Ux* z`YQX7ga7~lyh%hsR9J=Wlrav2FbqXMg;Q|^HU@;a2MY@W3k&x^QHE?Bfm@+;!IcxB zs#>>8{WdGs|39)5;NMBE4)UV$yk3|2vR55fD0a&`VQ?dK5Azy%DRFxR%|D3B>ajw4-qfvyJYMp z!5Fyt4&MW@9SB6uUO-$+zlc*Y3PNVT`V$Tzq~@$BilQirqA1U}11*eaes_v}5&!@I M07*qoM6N<$f{6qaB>(^b literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/thaven2.png b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven2.png new file mode 100644 index 0000000000000000000000000000000000000000..c575d6dfeeab0405a3297485ba08f39dde5832db GIT binary patch literal 626 zcmV-&0*(ENP)9r@1E~)@40|KsWZdwhyjM_@Kho$t!CGx z;5&Ti!7!%KB{SPvN-t*6Hhvzdn&KfUdbO`>8GSj`W`M7oc$Qh*A)Y5rZaJ3VJ>nr& zkaNT*#1T#hB)%28;_;i{yvJXHc_y_0_(e}C-^5B2vjR7WCyB#`USjq0h?|5|b0tlA zl-3w*q>w-y5)_oM2^|iiluephYhSG9TSk#QjQ$qN;N-}oK;8(cCF-hD)<{?B(@_?4 z|36P#o0;~yhvGoztLuJ_1HpZuT5;XqQ`fDY0f86b+HClXG^e?5(kl%ud<+ci0GBrn zO*sIrc7c&+OXhM-3efUv8t`!e^k;#=d!TpSn^k=u=TAUpo1W+nI6ML-sD5DM58Ux* z`YQX7ga7~lyh%hsR9J=Wlrav&AP@xC!LRZY+)*Ipf22v1B8{8;BSI8(c|v}LNRx}s z7`uorX>wD6IPI>?V&LEDwho4IDt!OA-!^AO1CX)xE(1Uc(R|B%5ui5a)FFm(DpH{i zBxt?M-28ez8CqNKG6j6iuCC})dJ+U+8s|I&02J#TQix)m=-8*<9ZVs<*ODQ6CQ|Av zI9_Jn2i^m*4lG1kFQDE_zlf$71tGIv{S#Ipq?)cMilQirq9}Vj0p3_*5N?fs!2kdN M07*qoM6N<$g7Cx^#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Effects/creampie.rsi/creampie_thaven.png b/Resources/Textures/Effects/creampie.rsi/creampie_thaven.png new file mode 100644 index 0000000000000000000000000000000000000000..278c48a95d5f98cada80a3902a201bccbcb57cd3 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zvpiiKLn`LH zy=9o!Y#_q+V1Am*Kjh?V zbkFyBes$~TmkbL{_FTR8>w8<8DPyF_9T9$p$uDJEzf5#J_(JXAFHr%n$2C?De*CNY zsyXG|qn}pkwwtoP=d@hO-CcS601x?3AD`y$XF8C|bc%OFh{yl`J`4pnxzkRU zezo;a)-n5i@$YYk!)y#YZhbfwWh00HHw`^4Jlqak-PQYv(f;dP!4=PiZxvl)Sg>Dh zhmKsq1%~{sUt2DnxcuYUg)Q7b_blJI*`aMS=M3HJ0$$}(lTIu;z_B#Yen#%;n{oki zv&$<3cHMZh_g9pjMW%!0zuFX*Q;$BIysOdGu6@>gY=)~60{mj#$7uU`-W%3+N5p_p hz?T}~nda-upao=e05J$$3Z4w2JYD@<);T3K0RVYr!h8S# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Effects/creampie.rsi/meta.json b/Resources/Textures/Effects/creampie.rsi/meta.json index 8db8a77945..63dd1be198 100644 --- a/Resources/Textures/Effects/creampie.rsi/meta.json +++ b/Resources/Textures/Effects/creampie.rsi/meta.json @@ -83,6 +83,11 @@ { "name": "creampie_xenomorph", "directions": 4 + }, + { + "name": "creampie_spelf", + "name": "creampie_thaven", + "directions": 4 } ] } diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_small.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_small.png new file mode 100644 index 0000000000000000000000000000000000000000..de09157707efd94e5802e0ff1b2a2101a4168ed3 GIT binary patch literal 761 zcmVEX>4Tx04R}tkv&MmP!xqvQ^g_`1v`i+WT;MdQ4z;lg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&YBxV(?^-Z|WNA0RX;OtZS;fTr7K zI++l&xmB^}6(NK%Ks72e%b1g-6nxj$Jpz2ci}5V~dw;GzHE%H>AQH!!VcNtS#50?= z!FiuJ!b-AAd`>)JQiH^gTvt4P<6LxE;F%FKlb$Dz5R1hQRyvrKOpSP&II3zo)|5Tqat9cCGGtSBr6841C;;zg^i4Tn@D}J@^XAq%$LRx*p;@JFfP+I| zyhz#WKJN~7&h6hjt@-@`ULSWNx zf)4Io{0hE&*jT?pm+ToLv`ZzOtWcUlK#ogOVkGv4R*U-oZGoHfoO{oDBmnrw+^Pdf zFI4+Du;Tmlx?B6tb3a<1o4uq?k}hxW*J`kuU)Mu9yU6#+Uiko$lnqizviazE*P0K<8pY8@FJH~iCsS2t z;G9!FnSNV70000000000008`YUi$%(ymth)sk)!A?ry?T(hHUJLS=*0N;Xq`1I$cC zQ`sQ3VrV|RCs`CdyXxBRVOx7g2Vd<<{3tV1KAGCv>rA6KYBc#qHz>dC#m(KPMTKoK rGd(>%NLqg-2LJ#700000fIsXVD^!sP-xy_t00000NkvXXu0mjf2NG9v literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_standard.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_standard.png new file mode 100644 index 0000000000000000000000000000000000000000..38d7137e61b3d457bc55880eb9ae2caa0b210bd5 GIT binary patch literal 686 zcmV;f0#W^mP)EX>4Tx04R}tkv&MmP!xqvQ^g_`1v`i+WT;MdQ4z;lg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&YBxV(?^-Z|WNA0RX;OtZS;fTr7K zI++l&xmB^}6(NK%Ks72e%b1g-6nxj$Jpz2ci}5V~dw;GzHE%H>AQH!!VcNtS#50?= z!FiuJ!b-AAd`>)JQiH^gTvt4P<6LxE;F%FKlb$Dz5R1hQRyvrKOpSP&II3zo)|5Tqat9cCGGtSBr6841C;;zg^i4Tn@D}J@^XAq%$LRx*p;@JFfP+I| zyhz#WKJN~7&h6hjt@-@`ULb7kh-rFMN+8^##XzBzY&+k|tKySq^5YLQpf z)^Bv_?4i-6S+YI=00000000000Q|Jx^Ybi@#Np@-o)K8nm|2EVvN-BJqhHfk<^!IK zU}pd}w*YmnCd~)zh6ep06h)edN-J5U$>u(RB28qamE4~_erx~$00000006i>0AZ`i U|6;tX>;M1&07*qoM6N<$f&!T?2LJ#7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_tall.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_tall.png new file mode 100644 index 0000000000000000000000000000000000000000..f42a86613a91e271169c6539cca1b69bd1e56120 GIT binary patch literal 826 zcmV-A1I7G_P)EX>4Tx04R}tkv&MmP!xqvQ^g_`1v`i+WT;MdQ4z;lg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&YBxV(?^-Z|WNA0RX;OtZS;fTr7K zI++l&xmB^}6(NK%Ks72e%b1g-6nxj$Jpz2ci}5V~dw;GzHE%H>AQH!!VcNtS#50?= z!FiuJ!b-AAd`>)JQiH^gTvt4P<6LxE;F%FKlb$Dz5R1hQRyvrKOpSP&II3zo)|5Tqat9cCGGtSBr6841C;;zg^i4Tn@D}J@^XAq%$LRx*p;@JFfP+I| zyhz#WKJN~7&h6hjt@-@`UL?m{+ z>d?KPqAwpd#@)%q-629i2xRL?4+A}rr;CwTt#?Tyk^29wUha9x#pOAG=%g%8k;SQ$ zd`7Z3{TJ~803ss3Nn~*Z@CskVSvSW1ORCFx+mA> zzc0okL}7p^4E|hrai4at`|F-j80_NL6?^YH{QCHW&l}jTtNni{kH0;Q$4+Ra_${AB zok1VV=>!0jW2stBC+H0NwKgD+pUh{LaxyooHLNzuYU5oz;GXv%boJrs8SP#dxA%7kbNVJ5V70+!wMH_Z zc^6-*0Y5*7$CtN@YCwLCr%drgL_|bHL_|bHL_}BS8_B69Xc=)$qyPW_07*qoM6N<$ Ef=F$8X#fBK literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_thin.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_thin.png new file mode 100644 index 0000000000000000000000000000000000000000..a910e67f6d07167dd7bdcc25745d90da09a95c24 GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmP!xqvQ^g_`1v`i+WT;MdQ4z;lg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&YBxV(?^-Z|WNA0RX;OtZS;fTr7K zI++l&xmB^}6(NK%Ks72e%b1g-6nxj$Jpz2ci}5V~dw;GzHE%H>AQH!!VcNtS#50?= z!FiuJ!b-AAd`>)JQiH^gTvt4P<6LxE;F%FKlb$Dz5R1hQRyvrKOpSP&II3zo)|5Tqat9cCGGtSBr6841C;;zg^i4Tn@D}J@^XAq%$LRx*p;@JFfP+I| zyhz#WKJN~7&h6hjt@-@`UL>rFpo zZfx@b00000000=X?EbuK+K7nH_3v+Z{1*@rsi?}Vy_4J_*8@|;rGuZ&XFqd`$6Xz# n{UH{sW%8y0000000G>Dliy|+{59 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_upwards.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_upwards.png new file mode 100644 index 0000000000000000000000000000000000000000..8454708d9e41e25fcae454885b23a85f80053214 GIT binary patch literal 789 zcmV+w1M2*VP)EX>4Tx04R}tkv&MmP!xqvQ^g_`1v`i+WT;MdQ4z;lg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&YBxV(?^-Z|WNA0RX;OtZS;fTr7K zI++l&xmB^}6(NK%Ks72e%b1g-6nxj$Jpz2ci}5V~dw;GzHE%H>AQH!!VcNtS#50?= z!FiuJ!b-AAd`>)JQiH^gTvt4P<6LxE;F%FKlb$Dz5R1hQRyvrKOpSP&II3zo)|5Tqat9cCGGtSBr6841C;;zg^i4Tn@D}J@^XAq%$LRx*p;@JFfP+I| zyhz#WKJN~7&h6hjt@-@`UL#eG)o>TsHRYBl7zn^a&?*FZ|znA~>^!$3#!VmKU*ZFhIz;%xD zPtD%Dr@lYGq|Oc$b)7#0Y`&_>;U?Sf+T>5_6iw$diF{8)#8i};$oFJApLKcxZ2o4o zGx|vRN&A$p-)c00000006+n>E*rqz;m3m2+$EPzTdeOZ(((e7s2)h zG;L34)E{6~^$852Jf|l80hPBvd5}CwB@1Jdg|YP12-5mwW??K@7@IsvYcIa`Gr$g3 z^a#k+-K`nh39xgDe6LYwNTY?6Z->Xl%Tc4kkSE~d{jJf?0{{R300000aDjdRWC-8- TTJhfo00000NkvXXu0mjfU0HEx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_wide.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_wide.png new file mode 100644 index 0000000000000000000000000000000000000000..2a643bf6c61c3eb38eddf9c80e635360a6a451ed GIT binary patch literal 675 zcmV;U0$lxxP)EX>4Tx04R}tkv&MmP!xqvQ^g_`1v`i+WT;MdQ4z;lg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&YBxV(?^-Z|WNA0RX;OtZS;fTr7K zI++l&xmB^}6(NK%Ks72e%b1g-6nxj$Jpz2ci}5V~dw;GzHE%H>AQH!!VcNtS#50?= z!FiuJ!b-AAd`>)JQiH^gTvt4P<6LxE;F%FKlb$Dz5R1hQRyvrKOpSP&II3zo)|5Tqat9cCGGtSBr6841C;;zg^i4Tn@D}J@^XAq%$LRx*p;@JFfP+I| zyhz#WKJN~7&h6hjt@-@`UL@W)N;Hamv|(Vdmqufm_Nn{( zepS_1o6h-kJA${}td47UtWQ~;gTe~DWM4fcMDfz literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/cheek_barbels.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/cheek_barbels.png new file mode 100644 index 0000000000000000000000000000000000000000..c10e49e18a164d003880b41cb394a78c16d96e3a GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|@;qG}Ln`LH zy=BPPV!*@V@bAB;eS*B;t;>M|Dk{P=GK1Gl)}5QnJY!0Vie&itY130eu3mY%>eaXQ z7w7DGKFfc2^{syHR)gD@R{aDT1_TG(OY>W!KhNLNnLB^!;@0DT++WoE{q~FzB-gO? X&AGn3i|mSx%pk6(tDnm{r-UW|Jb6V& literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/eyebrow_barbels.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/eyebrow_barbels.png new file mode 100644 index 0000000000000000000000000000000000000000..fd757816d40f220fd489ff39ae9490d5fde27296 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|@;qG}Ln`LH zy|t0^hyjno#e(1OUpOr_D_C68&b(9U;E|Y$^@0*DY#;7#>o(e~wCLFOjumIt#9JG$ z-S_`$)at^2tIyv(dhd546VNCi_z;#}|J6V066>7EiyUWmRqp1OSewC8!U>UO5Pvf# V)@`oj^?pB)fTydU%Q~loCIA{=Llgi2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/meta.json b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/meta.json new file mode 100644 index 0000000000..d965e86b74 --- /dev/null +++ b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "cheek_barbels, eyebrow_barbels, underbelly_face, underbelly_torso, carp_spots by kushbreth (github).", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "cheek_barbels", + "directions": 4 + }, + { + "name": "eyebrow_barbels", + "directions": 4 + }, + { + "name": "underbelly_face", + "directions": 4 + }, + { + "name": "underbelly_torso", + "directions": 4 + }, + { + "name": "carp_spots", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_face.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_face.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7c5277e0af86a8d5c00749bfce9a5edb8556ba GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|mUy~2hE&XX zd&`i!*+8J}VfM=)ub2P->z|zAsb0?NC^M(W%lvogYaOXAOW!k_Kl`C~ry`AkK}T#) zaBSGCSz&2uv6olrX|ujBDcN?H<^2`Yx6A7)f1JM6e*L#@Dj(2%7}z&=NnKCjcIie# zx3i!BcwKzGXKUk%Ip4II(^Jo93>olh3 z%H;=eyys*Dn)kuq^M0f6+LO8K`qt~ieo93@)UDM`M1`bA4BExzgwA1 zo4mDJ_s+rH5;d%<57c&ZOUk)s@M!e6^VqeYn{c62L4z^q)Y7-r+vFM#M$J_5ykJ;i t?qxMIXwqW)gbiV7UT3#Ci-KKKQOorAX6L;t0rQ1Hd{0+Dmvv4FO#tMQr0W0x literal 0 HcmV?d00001 diff --git a/Resources/Textures/_EE/Effects/speech.rsi/meta.json b/Resources/Textures/_EE/Effects/speech.rsi/meta.json new file mode 100644 index 0000000000..152c03ee27 --- /dev/null +++ b/Resources/Textures/_EE/Effects/speech.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Timfa", + "states": [ + { + "name": "thaven0", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "thaven1" + }, + { + "name": "thaven2" + } + ] +} diff --git a/Resources/Textures/_EE/Effects/speech.rsi/thaven0.png b/Resources/Textures/_EE/Effects/speech.rsi/thaven0.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2786ce47ecce8c564a9e793277456188cf6738 GIT binary patch literal 582 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins2.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins2.png new file mode 100644 index 0000000000000000000000000000000000000000..15b53149dcfd33bd09844257cfc2d58be15b49ac GIT binary patch literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^4j?SR1|)y|TsxP6fw3ji**U<|*;%2WC_gPTCzXLg zV`A+@TaUvIGDqWsT_<)mv)Z@wTs^6$^(taj1Pk}lwHH=3pIjP$VTqz=VWCJ2H(#Aj zm~70P($WG^mV^8P>FnyR;+h}pJr}z6upj?hQU1R0JDv})<=^dQ*0S?;9{$*pj^6T^RN;@H6nA4G&)i z6yYrJh%9Dc&{GCs#)_r(Wk5mp5>H=O_7^-djKYlnuIWYrg(OQ{BTAg}b8}PkN*J7r zQWHy3QxwWGOEMJPJ$(bh8~Mb6ik5r2IEGZ*dV9x~uSG$CEnx5e+!Z^7RoN3}FTL54 z68Js+$=)dSbL>v6x7ip9oTN2YE}0Znz1^?AP9^I9|DgA;)7byL`u-A-;lP!qj|0iHj??fEX>4Tx04R}tkv&MmKp2MKrb?w&9PA+CkfDl$T~x%eRIvyaN?V~-2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#&JIqBE>hxmNufoIcO3Wd-uJ%TeFq55DpSp#7@%sF zkxs*FAiEzl-uL@47$7fKo6S;1h{sOgAjz4dU5N zOXs{#9A;%nAwDObH0XlFk6f2se&bwnSm2pqBb%Nl4ik%|E|$BPl?|16hB%_A8s!T) zmle)ioYiWbweQJa7%FHh8LrbBMFLAmA_WmL>ZqU!3sKrNQcR@jJnrEiar`NA$>gel zkz)ZhsE`~#_#gc4ty!F&a+5-Fp!dbLKgNK-F3@V&_V=-Ew@v{6GjOGK{Iw=9_epxA zqeYH@!ENB;x}(W^z~v4w{G>~URNk}UE7000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003(NklUeY!(+c8co*k>mp>B|4dA#ITJ;|`-<-!V7Z)5$KxbP|K8~g2BT42 z`0?d`&;--2P5jm4%Aa!~PN(&HyG@ewdAB|;u zF6+4I2Pv=o@uLe7u3N2cx7UlJYPH#{*Z=;l3c)v<#bQ1$;I~iyY@3&7-7h}?00000 z000000002M%|c6))~0gQ^E0oBx7+>xaQL&wtu)PzFJAC;9apQ_Y%(cfkTgsDyV4v8 zaqGfAs$c$HJnLM5AkOFnyR;+h}pJr}z6upj?hQU1R0JDv})<=^dQ*0S?;9{$*pj^6T^RN;@H6nA4G&)i z6yYrJh%9Dc&{GCs#)_r(Wk5mp5>H=O_7^-d48}?)z6ar&aSW-r_4dw2-c|(>)_~X(wmrf_c-Fr*!@v60<-(Y~+x1>=()%p4_C@07=@0f+bx-=AtnLul zG_UT7{;R;-r~a1lCvyM4<jSEc=|E%$m);JSA1vYnZKXqeDu9fX6ODg zl>VD`$$Q72(gk6RPb;@5y=uLG+xbdwfzhiOTRs*bbOTv=zZf?iOUanFJ6r@L?&<31 Jvd$@?2>=HFnyR;+h}pJr}z6upj?hQU1R0JDv})<=^dQ*0S?;9{$*pj^6T^RN;@H6nA4G&)i z6yYrJh%9Dc&{GCs#)_r(Wk5mp5>H=O_7^-d4940UwO2_3g(OQ{BTAg}b8}PkN*J7r zQWHy3QxwWGOEMJPJ$(bh8~Mb6iZVT2978H@y}iAW^MC^f>jmj!f1|$(KbAnQ&E6H9U4+Ek}}H;}letDnm{r-UW|DaZk( literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadscales.png new file mode 100644 index 0000000000000000000000000000000000000000..73f68e1843796f023719a128d80fa0f3306ad2ae GIT binary patch literal 824 zcmV-81IPS{P)EX>4Tx04R}tkv&MmKp2MKrb?w&9PA+CkfDl$T~x%eRIvyaN?V~-2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#&JIqBE>hxmNufoIcO3Wd-uJ%TeFq55DpSp#7@%sF zkxs*FAiEzl-uL@47$7fKo6S;1h{sOgAjz4dU5N zOXs{#9A;%nAwDObH0XlFk6f2se&bwnSm2pqBb%Nl4ik%|E|$BPl?|16hB%_A8s!T) zmle)ioYiWbweQJa7%FHh8LrbBMFLAmA_WmL>ZqU!3sKrNQcR@jJnrEiar`NA$>gel zkz)ZhsE`~#_#gc4ty!F&a+5-Fp!dbLKgNK-F3@V&_V=-Ew@v{6GjOGK{Iw=9_epxA zqeYH@!ENB;x}(W^z~v4w{G>~U_CX>@2HM@dakSAh-}0003GNkl%@7JbjY2{CO3*gRk{kul0LK)zK&Z zZuyJc!Mn06yRz?7b+iZJn7>-8rCNUbRQ;G8@hL&aZQRCf7>@OxKlORI0XUoR)PO|I zf6N&*|LH)44=z7fjs|~&FnyR;+h}pJr}z6upj?hQU1R0JDv})<=^dQ*0S?;9{$*pj^6T^L@2poxYjP=JB6 zz$3Dlfk96hgc&QA+Lr+Z*-JcqUD;po$S|n0-HKAQ1PV!(xJHyX=jZ08=9Mrw7o{ea zq^2m8XO?6rxO@5rgg5eu0~IxRx;TbZ+o#;m+r!bBazq{``J1*UO8G+kJPe zi40rtM*?Ut5@=ArZvW#dzsrlqVGVbX#2FYqoZ`%TQFKvVSKAvT?&<31vd$@?2>@Iy B5`X{z literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftarmscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftarmscales.png new file mode 100644 index 0000000000000000000000000000000000000000..157ed8887415d4c30a1a9d5cac243b3a2b57c4c8 GIT binary patch literal 828 zcmV-C1H=4@P)EX>4Tx04R}tkv&MmKp2MKrb?w&9PA+CkfDl$T~x%eRIvyaN?V~-2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#&JIqBE>hxmNufoIcO3Wd-uJ%TeFq55DpSp#7@%sF zkxs*FAiEzl-uL@47$7fKo6S;1h{sOgAjz4dU5N zOXs{#9A;%nAwDObH0XlFk6f2se&bwnSm2pqBb%Nl4ik%|E|$BPl?|16hB%_A8s!T) zmle)ioYiWbweQJa7%FHh8LrbBMFLAmA_WmL>ZqU!3sKrNQcR@jJnrEiar`NA$>gel zkz)ZhsE`~#_#gc4ty!F&a+5-Fp!dbLKgNK-F3@V&_V=-Ew@v{6GjOGK{Iw=9_epxA zqeYH@!ENB;x}(W^z~v4w{G>~U69St@B000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003KNklBPgJEX3gEe*6?%G}7zI_G&00000 z2wD4RAMN9OHWL<}C4{znXgBkhMfA9&A9@Arb+)e?k9sLp@Fzy)u00000U?HD2H1D%#FHJH40000v6r1O54{qcq%1IY)%oyk7tI*)iC-SqW- zzQ4#}G1Ft~9>)|#JeZlNJbRuxpK$k5y=l8=Oy!+g(Ppt|h164S z%ju%$qUT)An!EM=$#@B^3~kAEm!({pygigy1&v;{c*``%XUR*OcMs(Y|7aGS ze6p%xVlt!YiU~6IKjihw%yY@94%zf}^*W#1a2cGg7{8{4N_Qazu%4s9Vp7|HepEfRxR@m|E+uGW` z%j^o?d!zO-^6@o(6iQuRy=V9O-TD8oZTbD3c~WB0W}b?e)xdaROY(MiVQ2@zT;(&> zKoQOYkH}&M20djEW~^9hUj`IpFY)wsWq-lL%PFg;YZP-HC?r|p8d2h$pPQSSSHj?2 zl$uzQnxasiS(2gP?&%v4-pD5oRP?~p#WAGf*4x_~b6Xq)STBh7Dg++B>gdL8*QqqY zSW01M!vww_j?4z`%!UJbhcBv3lZo8)ZOi-A*>CSlx~WVS0vZ7Wf9}?tyIQ^UdmguU7ZpUTx-Z$NrPc zz8L9)EE*+DDZxMPpZg@LwojsxYjghZZTas%F~ZCT(UO~umVMA%I^|eu%(17Rb+>h{ zogk{jCI9>pcl;~n84NQRRP7I(uV)f=c)VEAgyn<$KE`X!7oB&e{+|WX?dj_0vd$@? F2>`)@Nxc97 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavennonaturals.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavennonaturals.png new file mode 100644 index 0000000000000000000000000000000000000000..c9fb02d1a162c278f75d57782e2e9c2c034170f2 GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^4j?SR1|)y|TsxP6fw48y**U<|*;%2WC_gPTCzXLg zV`A+@TaUvI5^eXFc`Xf-d86=X!osfR*pMR|LpE}Vc||V_WuNT*e}Sj-q(_f5c8JOR ziCkl~!{YU;2U;9W_6q0t{JQjl9+i78bnPjZ`TpVF_kDM2**VT?1)rTKu^?;OM86|P zW9mYA_9(e*mKWymI&)?6%%eIs$FJMg)a>v6r1O54{qcq%1IY)%oyk7tI*)iC-SqW- zzQ4#}G1Ft~9>)|#JeZlNJbRuxpK$k5y=l8=Oy!+g(Ppt|h164S z%ju%$qUT)An!EM=$#@B^3~kAEm!({pygigy1&v;{c*``%XUR*OcMs(Y|7aGS ze6p%xVlt!YiU~6IKjihw%yY@94%zf}^*W#1a2cGg7{8{4N_Qazu%4s9Vp7|HepEfRxR@m|E+uGW` z%j^o?d!zO-^6@o(6iQuRy=V9O-TD8oZTbD3c~WB0W}b?e)xdaROY(MiVYtPxg<;cO zyNK675zYdS$YKTtJ!KGPtXOJa1{7p3@$_|Nf5F4crKB@+$;vjMkYtH#M2T~LZfQJklXV@SoVx3>-X7z6}Z96tWP-f{g0&s4X? z0xf5zT)!K3JBI_P3J YY?;w6$A7bwF9QjAy85}Sb4q9e08UQ_kN^Mx literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightarmscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightarmscales.png new file mode 100644 index 0000000000000000000000000000000000000000..510d9c9077ad6d8af011396ddd4e1924a77f7e4c GIT binary patch literal 837 zcmV-L1G@Z)P)EX>4Tx04R}tkv&MmKp2MKrb?w&9PA+CkfDl$T~x%eRIvyaN?V~-2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#&JIqBE>hxmNufoIcO3Wd-uJ%TeFq55DpSp#7@%sF zkxs*FAiEzl-uL@47$7fKo6S;1h{sOgAjz4dU5N zOXs{#9A;%nAwDObH0XlFk6f2se&bwnSm2pqBb%Nl4ik%|E|$BPl?|16hB%_A8s!T) zmle)ioYiWbweQJa7%FHh8LrbBMFLAmA_WmL>ZqU!3sKrNQcR@jJnrEiar`NA$>gel zkz)ZhsE`~#_#gc4ty!F&a+5-Fp!dbLKgNK-F3@V&_V=-Ew@v{6GjOGK{Iw=9_epxA zqeYH@!ENB;x}(W^z~v4w{G>~U_CX>@2HM@dakSAh-}0003TNkl1n490y=|^b(x{u8#HsjsbD=3>m#3Z05J?fbqhOG1A6@y~?B+(+0*vJjBD&BzRN-KJy;U z1W1dMYE`YORo`2+W|D7epa=guMHtNluo#p#000000000000030mklE*!iYWH>%?gn z>t%MCU1rbC^gKOJ&+o4yAD3{i6W6!;R^OKWb$i`jxAS=_g2*!|z$R?MCcM2A`(j`0 zPbU)~Q|VQZ)&RNvP-5)&8}5C9++PKYa#1eIok{R@f4d0)0000001xp2wX*Hg+P8_3 P00000NkvXXu0mjfW&vyp literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightlegscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightlegscales.png new file mode 100644 index 0000000000000000000000000000000000000000..deb6f1adcba1608d9400df709608e026ddad236c GIT binary patch literal 806 zcmV+>1KIqEP)EX>4Tx04R}tkv&MmKp2MKrb?w&9PA+CkfDl$T~x%eRIvyaN?V~-2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#&JIqBE>hxmNufoIcO3Wd-uJ%TeFq55DpSp#7@%sF zkxs*FAiEzl-uL@47$7fKo6S;1h{sOgAjz4dU5N zOXs{#9A;%nAwDObH0XlFk6f2se&bwnSm2pqBb%Nl4ik%|E|$BPl?|16hB%_A8s!T) zmle)ioYiWbweQJa7%FHh8LrbBMFLAmA_WmL>ZqU!3sKrNQcR@jJnrEiar`NA$>gel zkz)ZhsE`~#_#gc4ty!F&a+5-Fp!dbLKgNK-F3@V&_V=-Ew@v{6GjOGK{Iw=9_epxA zqeYH@!ENB;x}(W^z~v4w{G>~U_CX>@2HM@dakSAh-}0002}NklcC zAXyYFfr2Pm;Jfq!G+D#dZycwzoEFS;>00000000000090qCu7gy?NKj^ z*RDlh^hKW}`+8sR>v;YgLOZr&JMMNW*|>NE7dL>LxEFE#y@2cD4Z@3U0G>no@Buh3 k$L07Q42DghZ~*u_7lmfX_esfh1ONa407*qoM6N<$g2psj?*IS* literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenspines.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenspines.png new file mode 100644 index 0000000000000000000000000000000000000000..73978b811937d77fe6cf0fde619e2cbb83b03c16 GIT binary patch literal 867 zcmV-p1DyPcP)EX>4Tx04R}tkv&MmKp2MKrb?w&9PA+CkfDl$T~x%eRIvyaN?V~-2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#&JIqBE>hxmNufoIcO3Wd-uJ%TeFq55DpSp#7@%sF zkxs*FAiEzl-uL@47$7fKo6S;1h{sOgAjz4dU5N zOXs{#9A;%nAwDObH0XlFk6f2se&bwnSm2pqBb%Nl4ik%|E|$BPl?|16hB%_A8s!T) zmle)ioYiWbweQJa7%FHh8LrbBMFLAmA_WmL>ZqU!3sKrNQcR@jJnrEiar`NA$>gel zkz)ZhsE`~#_#gc4ty!F&a+5-Fp!dbLKgNK-F3@V&_V=-Ew@v{6GjOGK{Iw=9_epxA zqeYH@!ENB;x}(W^z~v4w{G>~U_CX>@2HM@dakSAh-}0003xNkl!tpa^C?^;Zvsu(K1V?IO`s#-wnsoV*UaO$0B-|(HrW|&uxm}BDctsdfb2Hb twFr^``!s)F)jitv6r1O54{qcq%1IY)%oyk7tI*)iC-SqW- zzQ4#}G1Ft~9>)|#JeZlNJbRuxpK$k5y=l8=Oy!+g(Ppt|h164S z%ju%$qUT)An!EM=$#@B^3~kAEm!({pygigy1&v;{c*``%XUR*OcMs(Y|7aGS ze6p%xVlt!YiU~6IKjihw%yY@94%zf}^*W#1a2cGg7{8{4N_Qazu%4s9Vp7|HepEfRxR@m|E+uGW` z%j^o?d!zO-^6@o(6iQuRy=V9O-TD8oZTbD3c~WB0W}b?e)xdaROY(MiVX$J5V@SSm zap?h|2xoyuWHAGSo-znCRxGtI0}8U2c>21szu@8JRksrL_$Lk&k}PqJC~?lu%}vcK zVQ?-=O)N=GQ7F$W$xv|j^bH7a)YH|^ JWt~$(697WU00IC2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoovines.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoovines.png new file mode 100644 index 0000000000000000000000000000000000000000..e921e89497a7b166ad20c04d535f58a7344ca685 GIT binary patch literal 867 zcmV-p1DyPcP)EX>4Tx04R}tkv&MmKp2MKrb?w&9PA+CkfDl$T~x%eRIvyaN?V~-2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#&JIqBE>hxmNufoIcO3Wd-uJ%TeFq55DpSp#7@%sF zkxs*FAiEzl-uL@47$7fKo6S;1h{sOgAjz4dU5N zOXs{#9A;%nAwDObH0XlFk6f2se&bwnSm2pqBb%Nl4ik%|E|$BPl?|16hB%_A8s!T) zmle)ioYiWbweQJa7%FHh8LrbBMFLAmA_WmL>ZqU!3sKrNQcR@jJnrEiar`NA$>gel zkz)ZhsE`~#_#gc4ty!F&a+5-Fp!dbLKgNK-F3@V&_V=-Ew@v{6GjOGK{Iw=9_epxA zqeYH@!ENB;x}(W^z~v4w{G>~U_CX>@2HM@dakSAh-}0003xNklYSg)JC` zB^U(dDhtV+6%OvW#D1?qvRwFoe>*=#*lYj*008(^r`zdvx=qv4*0o*ALeBlUKljtL z)I`0z@%v#v?1%gKrM}dc`Z3N=$Nz5y5E2k4;KHFJl1(Ka`^5cNR_*zf=TwL+*+T(tC<5MRm_c&jjxB5rG+y6GwO!j)RVp#Lc($O!yiez0yOf0FcJiN%KfWPK$-~22K&mOqz1JzG>3g>~So_<+ zPv3%Ud?p2u+VHqAiYlaZZ#Gi!uPN2{eFB4D_{}RTx tj{uJZO`s;Q!~&2B00000007``eE~Rcl!25I8#4d^002ovPDHLkV1fwtfV2Pr literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoowave.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoowave.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0438a6eb5fd151aa2a300e967dfd0c3bca13bd GIT binary patch literal 938 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 ZSHb8z?~dNV&6iw3BA%{(F6*2UngH9(BAEaH literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/chesttat1.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/chesttat1.png new file mode 100644 index 0000000000000000000000000000000000000000..9808aa67b3df01a0cf55b4f9a83836db9a4fa0a6 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ZhE>nhE&XX zd&`lpSwWyR@#SCtCydV&bYlBoU!Tfrn(3X%y!hXJHgTym2ZO>HYCs(f?wfVG-Hsbf zSu&sfL0I+TnVQf4Y&$$>^O-fL*LYmowXR;WC2Rhq*E9c2tEjB4N>eMZ_o~ajyZ7bW z)p1M{mrR+YGWG3?8M}(hr@meK=K7zd-x|VCdcFF_$^CfyU!`BEx) z%cL(8Di-lNyxttI-&i?Mey*!Ti&2}=wy3k!4ohbJDf3$p-7c6`x88J_^E?4g#Y@o_ fN`+Z~rWA0MPrZ4hQfT82VUVGou6{1-oD!MCKzSpl%8vh<0?Qu?xM~UOq&0DRF|)M3+G|+!`E7}h(u1XE&dmC{_W6Bt z+wX^891G6MdN%*J;%XlIrJb)H@;>QryYlDv+9&QVM-ul}OMJ?y&HD+o0|*Stuja?? zUlFzbe*wo*+cMRo+h0FFnkE{1U9>hjI_=rhimr~1r)9P~w?9&hvS}%A|9`??PTA*5 ekUm8F*l literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears3.png new file mode 100644 index 0000000000000000000000000000000000000000..99f1e79b7cbeecfba1aaa75113cc040a37f4b3c3 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|Zg{#lhE&XX zd&`io*?^}tF*r0S`N6;C4l)g$)(sI6k`7Ir(@Itx3fOvZO9bo7|JN+4`oi5=IA;C6 zSUIaI-unCERsY`n%og4^acx0-b;OPr?FpZLTvyvBWx#2EW`8F4?M)L>XFLfOK4-a| zXY!WRjq34dpSMRm>+bNFo4)Sc=IzWJb7g1#KWzzg2?R83*lYc(-Y9xvd?Lqvn}6$c zdoHVNy7gE7==$@IO**%fU-{4Ml5%(N{6c|!>X-jBDxH_D2{&CX?GSGI?7uL~5C*-s Yj5f>vb#KXbdt!>rT zc;kJi_G~cH4|`vBa*y@SmT5tSWf!+MIbV&M6C3ww;grh6;#n4{&rL2~Q(W^&S2&Af zUuqK{BhW@D`0#v@?!)J{jT&8MbMMZcc{8GX(vr__U;Qy#&dT{Rur8~rw^ZHO`po~| uK|r?WLva(kxEH5h%YhLsk-a9$z z-ty|wf^(5`a|Az5)dR|bz@M3C&TI{nJ6`z8J>VbzjfbZs9|u~dEbqwJ`~CJiS)hUg a@2i;{B@O*cDfPw(a0p-8jpWKeiQOZ=@BqM0_IX3a=`e@bz*2z8AC;i{-FXLOkb&<{0i~GMa z6ra=Zuf59;Gy(`d$lsN2aQSVwU{yWygpB*_A#?w-*MGVTmTP!#`>M)te}ZcT$W;uU Lu6{1-oD!MRq|(#X&t;ucLK6UEnm*b9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/80s.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/80s.png new file mode 100644 index 0000000000000000000000000000000000000000..c6947da0f173269010708a4ba45a3a14b254c20e GIT binary patch literal 805 zcmV+=1KRwFP)Px%-$_J4RCt{2nla9+Fbv1dn>$B}lmoDJ;sBh2Gjagt9H3J+4iG6)W_I52WImHZ z6{kR}@A`bY7p-@W$bz!E@f4aS(|x~}W0ZQCk@ z!1en!T5A9RFvbA-$9o*I1;Efl)oG{Owyp4c-}k3P!Jb|3Jv2?Tw1*o7>>Ln6SVaN7 ze+B5D`b(z*2bKWCFf8BcsN;2v5tLGg=K^c(tdxQnBhVa>4uo@#Z97{4?3~sbZns;t z_00W#2Y_dB-UaQUeF~lbC=!P(0dPcL8P9p<9jIOGG!6X_!tx9!0<#2Y+qP0lE!SHP zwAQERfj#^5zEX-6fvg%+V`B-}f{6Mq-Q*LRc+*=`%TG3xKL_ zjY88jt8gr7$SbHl+Uc$7#?3$MWw34AYH!&&I{9tc-^($jzS#l*{CfkW*WUZf-U9%B zqOj|_kGzFGarM8!Gzp*mALQ%#?*$M9K@bE%5ClOG1VP|XyorgWYJi^-)n3KuXr^hJ z0bo_AE!`9?`Vrj&Oe@A`?+mBH(;ez`vo;6zt}qrow#rjl>r?mVu=Ci_v{YYGkYNeX z_x-GtT8a}G`uJJb_3pm?5yTjm&ePGxvYb+iEdombS|2pVz%UGp`gE_JW0ON_JB095 z5~pp&42h=Bm>h4m8_pJ!$cZjdTqT$Pj^BC2(OcSQqh^SOQ6?MM4IKT%q{_uv!zh#v7J z6OSdwyB)B9Ud6U_%Bod)-#^f3UDIl|r`p}c0RhvwZ{ebrU7zVD037IbRZ`pxY1?|sv)r1u(slsvby zXlKm7%KF=8YhG)0=|?f1XX9t^TDfp;?|P%Y$9L0{&piBlUO-gg7zcy@{O_B;HB7m* zyHPrMSGWE>=Av`4jd2TmW7+TU?NK)mWb9k@X0Lv_sCrAo9OI;(6PC&?7yiaCVmkA= zX2+SO(i5)iT6cJJD8rt!|H6;A7r*-u`uXDD@RjTL9M={^0NGbrDmL@@SMYZAOR299 z`pwX9`Q?cCcec63N29nOtc{Klz8E$Cl0@OTsZ#6D9*nvz8Xv;&JSK7)tD&1jvOw~l zv-=E}t+v%Q?NeTsDV62E<7{fASfSt%ZH9{bDr?wOr9UK@K`#+rw1POb(`njxgN@xNA?@buF literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/baldface.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/baldface.png new file mode 100644 index 0000000000000000000000000000000000000000..761f190868e9b86eb88d0825e53a925c641d6602 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|@;qG}Ln`LH zy=BeUpuocrQ1al`k?iuK(tyQDYmR+4Q&=*8!^NNn*V{IWD=oSjwS4jK^6rjprDdxB zUb3b9u4VR$%s(W&o*!rs5Ioqdca~k}`px~D_Wta#J-E5s|72pmgW~Pk#mr!Nh1)!5 WT~*juuzY0#@jYGrT-G@yGywo~FhQXJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac1202562946817d6d3acb6c950c0791295a0c9 GIT binary patch literal 631 zcmV--0*L*IP)Px%F-b&0RCt{2+C7fzAQT1Q<5yE#LSg~ws91nk;Wc^{EP%@0T>ui2YkFQ0;m1TX z6XX266z8j=Ovd--0%;Dw2_jNNq~x57h!gQ(Es^&hGIr}rO3q@i%!!ttm_H@r&r>hy7RQw z0DzPdj4=T4<-OhoI6Q!5S&G*B#{%;_4{d|bRtMa!IB-3Nw|(|J_t3Pw_eE=s%jI(S z^L3@#9rCEUtF~>!IF4}6A;!25BBg|F+hDB)0QA)FYSMdOetYn}zdveOmSU|%{Snq$ zV_jE_;|Sn7pn0CV>UTH0EKB*W$WQM-TixR0IAYs2w6EV$|D*JtcOoJpA|fIpA|fIp zIw$8`y!U$=`>Ig%JKp>KUO?N!8K;t=8b#Gyu4Z*WUoO|HW|Y7+Bn=_#JpgZr#&XW3 z4JE5Kqi<*+hMdl7-PC4^23Geb`z2P_3ie1F8_%=5fKp)5fKp)5fKr6n7^c#xnvC7 R)r|lE002ovPDHLkV1nVjCxrk2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead2.png new file mode 100644 index 0000000000000000000000000000000000000000..9da0cfcb25b8fa89f85e184d81e19ffca106a5ed GIT binary patch literal 652 zcmV;70(1R|P)Px%MoC0LRCt{2n!T;#Fc5@C7du{n01I%&$OW(p)u;j#vj9cPSbzWmjG6NSV|}(D z_(Z|-y94G6Wtp>ow1ZjT05Qf|N~tl%8e^;gP)eys&T2((04&P_ z07xmJlv0;v!E-@AjV8M+3rZ<9rG)1=G_F>$wQiG(Dbs z@0+xDzdQ^>bh%|Q}X#5xG`@YLL zZ+>=m@~W>1=bVvJf{1)g|DWU2SB(%t2qALiXRUP% zM`(6Z)S_0@t5ci0)tx=6Z>_~NO<2d$s^4Udl~Nx5ykd-bv8Q8<^$f=*gz&O_v6Z|r zrg;)~7a)XCr)h$<7V9Et)xG!KSyS+Q_S&M?TKi~%a}FZ%Sf<#+u3*)d2mWkf zs6YSh&aa6v)^$t(FwgTYyS#Zp0=QRNefppFPx%2T4RhRCt{2nmvxBFc5_w6B8pL`2b{&d;m_-XY>JxeE=dd4uE9IF}XKr72_UF z?@|c5TiW+UV18b?T$rF9aDa7PGXR7TvK+sfbzO4^A(!zSq0&Au&vQ1$U>rxZZM%)f z7}58=`h8kL2w8L`4(A+}WkJ_|0$i$ar*~a8N#`utoBY|l3f5uXdY4pGL-q>|r zHI5^I`)YSxSJic08Drp_LyU17-}_Dtq90@2#*8uB`7}+3s$kd6W!e3$)V=rFT6y0f3YethE64SK;nJWyAT`cP_~~GYKJtoKiy5G)O4{z;&}Pl8O=7_%i}nkJS0?gRk$ z&TC2u#uyC4pw9MLl*w+}7Q-;W7=x6Ox;w1?1b};%r5As;7eIrUCV)qCgl19H{s7?7 zobay63-df@SrG9HXsSRReA$*h;>b7?`3;sviOUTVz-RX6KQSgk2qAPx%I7vi7RCt{2nla9!Fc5_wt1YRKEcpO*R6YQw$QgYK4nRfc16Z=;+P$}khTlu_ zN0=;RSNlFG3Rr>}p6vcImQS8 z=(-N&@i>mBi!e=7Hpakvj}QWsQjp0w68~rI1u;ep!vFvXA*{#Cvee${5K1Y`^9*AQ zwAOFmuUdd%7$D29@B1dDl;?R~g}4G^4CZ+Ta2Ess$}L$#)siXqUb*i?gtKdbY`SsssojKx>V*Z7-|%B{IuWcx4R0!}wmR zSAh5aWrAlTA_#JPMQi|owKhBFayjOl%huZb-8FwYzI@B49KVEVn)0jjtGM)`2_b|K zLI@#*5JCtcg#3@BlyXWbJLmG1e!w%tqj1h;$*cA+`a|Yu>ByE&%@zFtz?TmpvCDjF z4ce-NQ%V`Q+hbx#mI*A&g4^wOstDHFT=pl3CAM{p_fE!cZ_qiH#fp}IN~uE~BfABV z1_)7k>(XA?Bn5o+BmnoV*LB@P&(I!r3-HX72k_7@aApm7b#IxFvM%i5M@{e;Da&ViA4UIhbM#(LI@#*5JCtcgphxU YUtgb&h+l^l(EtDd07*qoM6N<$g5)?R*8l(j literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive2.png new file mode 100644 index 0000000000000000000000000000000000000000..0d3682bcb6258cd3758569f72ee9a0251deec483 GIT binary patch literal 646 zcmV;10(t$3P)Px%KuJVFRCt{2nmw+oFc5`Lu3kxP35f-yqw)e$vjEoU1yFkdspz}_OO{+u?^{GB zy!-NJgN@$Rd{U$U3THevW0W~3WTLeW-g^ikaJgJgx%bJ%7!#axXxkR&^Eq4pE9XaA z>(I6>0HAGKXsttT067p*=(-L7&~+V%C|mze>JPNmK}rd0ErbvN04XK3)}h8qAfj-+ zUIE;aAHNe(Xqu+{N+hD7wGKoSj4@$-TwENt35eS96JsbYZj5<2*cgB@rf3jRTPd~Z zX|01&Dmw|uHNbn1pG&Q2nv?fF^;TI-(*z*|q?7<|kDm|%(==t>FR2F1^NhalA71PG z9`ihB1@S2{$?Io7?gZX@Pvq>b%=$Yrhg7f>P?? zAfKIQ7=~dOhG7_nVHk#Cm|ui3CMczf_XJC7XZZtwdy`}s1^{*c5RF>HFl=tfWF;W> z=%tic_v&jTVQtP>$B>(Zid4_%ywP( zPs_YCL=>#GOAPZoXZe+~YrvY?gWpp#I{`8CNA?5vh#|`%vgQbj+%xUs1_|J9f~aMQ z`Ggot4THvC)O3eEqMAGG6-Tzk_t4(73ml&P9b(wL4Q}!2{?FPANBRQTlfWPx$)k#D_RCt{2+A*%9Fc1ddpVgMBEm_I|=v;9CPQe*D1qVpw&IgEO$u&J&4Lc#> z#YQIY?dt!e2qhrTco2z{8KA&4P0KvbyRT`QmXh^Koe{su32Lo<`0RSU;(ovHz6XF9 zBl^C7yZ({*I_9g`CGmf~yP)s;#(Tdm3IMm;ZB0VIm-F8HDx25wV~p$i0MPx$=t)FDRCt{2+CQq}Fc1dtZf9`X_}VDIF7UCK3ZGG|E&pbtwqim0FZNrwHCb= zA%rknYwxaEYY{?F#cy5!Yb{DCaLys61m_$|DR@k(2ib&A{ItH|a=E}5b5{X!y$55= z61SA{biLKDmKTQ*W@8MF$K%uc#&Mi$tvH|0P50EqmnwXG*2HhFfWOHYgIX&9ynNPF zLDT<$cdNVS?gMyPc`bi`W!HrFB1b`X{gb2D{4MY;9*=<5Kf3_3<9i=FA|fIpA|fIp zA|m>qsD4tGR=D?mX^uMQ0Nk3Ehr?m>pQ@*6nsd%~aU^a^34pFMq?!+?wZeP91a{6X z36)Z?_0WXeOS-}9g-9vEdyiVHYDS@X0cx!nh5<1~c<+~lN-0k*^DV9Ky^iI*M~o4} zFsQmjO(i2MTx-SYbh_JhA+2gnIlhZ6_g=>WZWS0~T)M+8v6~k_DnR=3GBC0A2kw{5fKp)5fKp)5fOcZKY_|nV6)CoH~;_u07*qoM6N<$g4byKH~;_u literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob.png new file mode 100644 index 0000000000000000000000000000000000000000..14b42723db2eca8090701cfca377dad8ec3bb712 GIT binary patch literal 583 zcmV-N0=WH&P)Px%0ZBwbRCt{2+B=HtFcb#h-z?E6<-M;VggQ-AjWNCz|IeP_ zT5AA+F$TBW4c1zm)dcT-wbnvwjd2`djCm`5C;4&+p*rUP04XKpoT0T|yXoYy0eItyp8sr|q1x_;{jQpcU_&gE0n5sSW`8 zzCY}&FFiK6HDPQ2E5y$L08mPGt@x$;{l4dLA}OWK_lI8rXB7CAR$$I~E_iR@ji>>` zFm$Dqr~67N7>42STOsF+#~ey2yPF_-2m;tF@{Hn3DY#rN0Ja+;b;`r*JAL(gf5u55 zA|fIpA|fIpBBI}H*Wbt?gbHAu%#P!D=u~(shvl#qz&SZA7bg7FA_?#P(;V7~kr0i> zy!WfFx9Mz33D#QdNkA%uP_4D|V6=_JQ%Z2oi5E(U8n7HowMMjU;NSXzqiL50@oaE8l71}w*~t96wY3OJscxF4+Lp;Y=JqO41KRMhlrjf9`{B2wltCm literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob2.png new file mode 100644 index 0000000000000000000000000000000000000000..645d94f16c1b38aacc3e184ff65d794adb443509 GIT binary patch literal 590 zcmV-U0Px%2uVaiRCt{2+A(hIAP@%N-%qb}Z3&43xO2q;_7pxNr{Dmt=zIVqBJG>cC7iW;%a! literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob4.png new file mode 100644 index 0000000000000000000000000000000000000000..3c70986fee621ec65afa0b4d25d1a7d99fff77a1 GIT binary patch literal 613 zcmV-r0-F7aP)Px%A4x<(RCt{2+CPfpFcb#xFUyv$1p*zwT`C>GwGZGk`T(hQfK=*y0Ko&*>b=Dv zuf`;^ktX)A@cm#gNoM?>{y8x3UC>}zmQ_R$V}w!)T5I%ue`&c_3+LPl09tDRfQVoi zhNk$xYX2amw2BCLkYaX~U2EfNe%=6q7ziQS}O6%=*!#Iw( z-|r|B$?tbvci2vF&TWGSK33jZix9&0x^^f0uKDE<0+dn+Az&DWOJ4Qz{Ud3uVT?ft zVO#xd|N2!`M?geAo%g)j#u#X=AtFsl)Wk3C2i+3C`Wdj-b=~F2ZNC>n*ali|{np)A zbp(D|jB$JJloL^YUaM*c{3}390=4qj?>=tp@vEAEX__wH`-h)-?=el&X-6SXL>_qS zEFov`n>lZN~z`=eM|fpBd*sgfWI}tmiX1R zLFe3Rt=%fMB7$)o5o6pY=16()<2XV@w!*Bn_LTTYDXq@AwY)CNvO4Fs>rt_DjQsN` zm)d()?SOfn*JoAOy#2}shIflG!Wi?k7a)XC-6>Kv0ZOS)!SXft3-o>ew08I|Wlutx z!=oHuQT+_?-fztikD4Nmtk30p=bnTz2dy<)CcmjcqAXFL_2hpf$3Cq*en$QOyJ~Z+ z?hhz~9NiQ2ihX|oOXNgEL_|bHL_|bHL{I$zjrd)v5=~fZ00000NkvXXu0mjfA5|k3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob5.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob5.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0ea4e8c16c1a3ef353c5281339ad61c573539a GIT binary patch literal 579 zcmV-J0=)f+P)Px${YgYYRCt{2n!S;OFc5_wH`jzSB@{uTj3QKmnsDGIoRg>sG9@lTi89LIf}8aT z{HJ9O&)v-X5*dNDKdeNsuYr=wTKlRk@M`hBf)`?pi)%^7qx&^f zCqPcvM?uQ`mXla(Kc$3enik_$`)X(9q&=U{&9k|^cy`ji!#*K|5JCtcgb+dqA%qY@ z{x6#v2_b}88j~`{7~j^I@ZQg&ODKJ~*ROnq>JK7LSQ`d#)d}p?8Y_J$+w*H*v_c7$ zv!yzuG*~*cRjE-!sSc5ZuU`nDQ>s)qN2MnxK?7I>zoq=P;+$(lm{Iy7FF~Uesn!Po z%XW0B5Ru^bPC{8(&bda!5cmA5Px%8%ab#RCt{2nmdl;Fc3sbiwzYMAm9TiQ=|hZ_5plG9Y8S;pop0cAb)S-;xG)57~ZA7i-i#4x~_M>#+drzxEBAYFZW8u%US^;gt#or ze!VOUoO9T=4O(l|F2XcTQEQED+jd>xx(Wdl>Hp1nd7fwVeUEvbak*UfeJA_Td!MVH zg;EN@_1uyD@0^3R7Jc6rjrsK9AxTDdfF73NI!$$;}vx~6U0YW=ykZ5z=^wbPg+#%Ia$2LQJ&?D>2KaIN|)CZ$(c z*EOC_Cjhs^bKB%uflt#El~ToKgc=xQVj7S4KC4Td-5yWHehU&yZt_5ZK?1lH!h2uc v81)@8`z47JLI@#*5JCtcgb+dqAs@&;57Eyz;~V#p00000NkvXXu0mjf(XtQM literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcut.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f60c2cab8df5d1833b61206c2ec1085d6c1d6c GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z?|Hg7hE&XX zd&{uzv4RNO1N+ss%tAu!1@1=~V}3K(DYF-xWsKSRn8Cwi<;$B%E-pqhC(1=tr!W1V z-SPIwfy>>od)Rq2mR^xa{(A4aM6&MED-(bBa4B91@&fXMym%FP&j0uR)g0t?_q*&d z35}%*JqP!_-=W2E@As;$ZeE;TnoFiE*xL5JE~74xA*rYIwwcBA2|-K@OQt-Sb9h^B zhv7V_76GTN*O(Z33@=0-mSASsa4ktixXycDjSTymtv9~Qezv(ECtfDgUQ#Ex*0iDj z?D8pgy>EB5XfRI+V)(G-=f54X_TJ|t54d03dfxK6yVKC1)VR zv&wz7qEF|1UVi4s?OT6~&+WMX-aolMHYwxaz2Cdmy?(p;@#ekNkK!%u1rgxy{I)Jm z#g<#*O3|&)Ry}I@zE5lEhh1$GPfgfi_G0h)bCwJhQG;7)I-CI36nJ>sy*!#w-O&4HIh`k&46u!6|3kLzWbI6Gx$91N~-Tb97fpTK!C{r<~NtxREWf#${E{_l=3+-U#F#qYf* zZ&FWX@(vz1GcNAu9lpP{TAiYf2+ zs+_beFaLV4T;Hkx&nhN~WED@%rMrJWEslJ@)cv3P+3DV`&ny3Zy>s!_Oec<;5{q+h zfBAfC(%sU{wlcDx>jN7eZ4=n*FAH=(7#x^?;YwhqVcqr>bBm*{hia<&UN%|c9Q?_9 z+mdI0raxm|^3j;7{~2@K$^3cz6ONtdkU7h~)$;6R#4hhyd>pE-MxqI_MgvHGs7(1aYsB-@2b{Px&y-7qtRCt{2S}~5RFc5uw{gN8Vk`It>D-J-N18_zTkeUOyqT>LTEV*{?Uqr+A zl3;8@NW9ByHem@KKhKz%c`lHEuIsG(y=~hf_q}C|0RWUzXqqO;hQBF4s;UYA zKn56NY+06vkwBB@oNs>CpOnGtx&~tmN-1#8A%uW2#;*T*JNmwVI?miHLlI3tUDpso zOrOiLEa=)ejxQyFCP}L=rJVj(RaFuRQ3Ql&BKr62>!vMk6WUJb4FG5%7-J-5l;BNGYe)Pqi(26I_b(BjO);oG4>#)55%cMN>d|0PRUz5}{}h_yjaf zQ_$oo8CuE@){rFub5KT_f@}$()u*H^6~BHDNGgWj4cFy4=MM>446+RY&N;N!4@prh zvLwLGIh0b#l^~EQ0RV8j-Eh5Lp|wsbf(Th|g1~(v)LP@~>kGiWD0+D<@JVQzrl_iF z3WroL$d&-$UKlaPrhY&QvL&GFI$KrM)DKAQMPy5Wi_~5K@Iwgrb>%RD!r<3>K-;#( z5q-!LCr+F=@lz4>?li_&YCKT)Wv%$@e<2YLP0dBrc-rzD#G5AUWm7eYHHFI0s^q3aV=LJEvz`Wf=4A14MBhCrY7_|4e zwh-F3Ekc_lUILaB-+A?QK?WBQ7sHPw3616&QB2BXiPP>H!VxVBYQ6{Hyig}_{V zq=7!+z{HX*p@Qim0ZTjWv-{qK5Zg8#-s=0_j^k*JG4_ZgXD{@9Z;df_9LH6=gF8Z7 zH29+tW2={dy)^iDKnO9tDt%ZafLuoiu`Q0?0E&HDIA0hn5-```bAxNM&kI&-0ZKEE zDs}fj(=-L8$jP<9T!YUIq4s+{z}4V$dkt!>alKw~yWPC^dfj@i!EZT>b0nzxBjMB+ zzFrTQYw$TiDYZIzARrOiLxVpW!!Up`7F4Wx37Bi}xxlq~twk4{3g`A3481pNb$Ab~ xGPQ>We>7rjUiE-nHTaws?8J!^Cr-Qz{{W~Ne0-s1k4gXl002ovPDHLkV1jZ6+hYI# literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid2.png new file mode 100644 index 0000000000000000000000000000000000000000..b25ebe1b9eecba6275715b4b4c8fb34ebb3edebc GIT binary patch literal 789 zcmV+w1M2*VP)Px%&q+i6v15J;X2m z!_S^r?|xO{Byc(W<{l~(ptVl<`@Zk1l5);qj7dTW0D$)%UDp-G@Vn$kP167XD1aDa zs_XhT5vcJ}%F|{2Dydv41tA2y_mEOz7zV@`)Ap~=V~lxQ&wNzw<*)!sDGb9fy{_xJ zqG#hcUMd1Ll6v1cH+|MLO_2zP1Q^FL4Z{GX6xz0}D1f@ID;g136G8w0IOir2thE6C zP0b@562N;8Ap~f?w{80}?7fqsPR%tc<(6{m6TGGJuZZR5Mt4~ z{!U1Ea)`b6P)Y$n(po2q$vFo~o3E9(DnM>JIOiw@g%~5qC3enDBR~jI?9=Z-YyC3n zoO6?1A7ez{_Xr`pq|3Lm#;XG49y~QtYyI*aa*Rp&tD#dbq64t3HJnPx%kV!;ARCt{2noW+ZAP~p@zPvM#kaz%hz48F8J%DGdQ*Z`%9KeKxwR>jKsebD8 zBp|Kbys6(t$C<&RKCq|)5c09s#${RJ`g-O2opaGS7l|nH{n4@hSRY{Xq}}K@bE%5dI?$ZzPB)a&zJxb@{ixpNKYH z*=HT&GvRLZT85(=qeJHdhGEz=CB661T3^zmx7J23hp%NAhT+ieFk1oacHaBPRcno| z>l$NBbLJM6h@vs3>AJ3AC9GxH_X|_VJ|6(!TX(kWx<~w-8H?+&`JH=Nat)AG7Uu#a z@UI+wv?cWlj4_S1Hm+sL^@1z~Z~=0!gmNeVE=G&M|~2_YosCrNq0)rX-=V9Q%;Px%2T4RhRCt{2n#*m&Fc3t?L5@BPSbzn%0T$pYRHLe30cwB+5Fns4@5~`shB0E; zWGvc2=3Vr$#a*sOA7~aJ?WB~l_dYMnlD+pirIbg;*O>LPcdWP815!$PT~`=mFijJT zF<93Xql)01%f=W0K#UOpV2putt}Fg~>jCS!!di>t@p#aET9gr3YY{>y+q!P8?HaF1 z0V=h6^7Zy_q<9a`xg0`(DnLX4d@3M>(4~SV1;iLj&`U(5NODi=7@AKAp*wc-JwU5} z@BT-!Z5x2EB3#>U;c)ve-*L`m5y9znD#v>7bBqz^^SODvR+eSS05DAxwrwj*0GQ{w zIewD@bn=&SQz`b|iCfS~K4S9C=yU(4-}Jp;_avUpwX;0p>_44bll&J&AcPP?2qAP zm*xU&+lCNAF(pSh!q?E)mpQf2bq~;MendmWEq00000NkvXXu0mjfONS5a literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidtail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidtail.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9dc6f37204895ed93ffda04c79562678007573 GIT binary patch literal 631 zcmV--0*L*IP)Px%F-b&0RCt{2nmvxgAP|M0S6fnBLgE1FI0L81894<9aOI8zAR$rHv&Cw%)L9+38fU4WdYd)fDpn}dn-)=nCJPfO$afaPN(VF z|L>$8GyqT@xNUEtDFA!3t}CRJh%o}d)lo{>H3Pp}E;hzYlml*wF(ReZ>_7|iJl_qH z?531(KA)Rcg07{*T3c#klziw_7{Q~!&+~iUnHX;LfIRLZ;9i0FVi}!w;ZRk7}r z7GXx$GPoDcxr;>iFi(7I4llENpgZxcp4cj&=048t%C!!QiPFbwk%`~cNE1lm*3 RrjY;u002ovPDHLkV1hP}6Epw- literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun.png new file mode 100644 index 0000000000000000000000000000000000000000..b988d153c274e56cc862355812916110326de5c4 GIT binary patch literal 546 zcmV+-0^R+IP)Px$+(|@1RCt{2+CPfxFc1dt&&!sn4FVrPovIwbwGWUp>Hw*A09Eeh0D=M6>a|6X z3EAa6Th3aq>i=!;13BjsV}!M~8^^J;)^;&Q99@a6y!S;_0brfH zs-iUtcfB+eUY>bmlM->>0czqj=NvV-ecy!WN= zdo0U>$7@Rz{&O#&x;PwN~I2l_K8zQtJ}xn5Jn0aLXRoF>SSZ#cG(}=i-l4W;~0ClscCCx`D0H zxH$sGaqJ#*@z&aI@1A=m5h>Q%?y+v*TeqV3{zneIzX>5U6>IIT5FwzsAn7~(#xW5Q k5fKp)5fKp)5z+7R0U*>dL-CMCr2qf`07*qoM6N<$f=6%wrT_o{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun3.png new file mode 100644 index 0000000000000000000000000000000000000000..3874908bf20a247f4f082715cd0a6c9d4489915a GIT binary patch literal 554 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zpLn`BhE&XX zd&}_D9RmT@2ip~wW;Z*q7c4);UhtOrjpTC?s|KxdtA@k_TdS9HEY`7CjPSbl$MYWh z=}o7jE}e)n|J=Z*6m;&hj^*=7#d=CXRmWb6Ca?KC|9NCm&)v`UFL!FRFfe?$$INi8 z^zGdJ-Nk&r_Z_b8pCUA;_-?XkzQehlE404VvNQNx{^Fte(B^!!Ut@hy! zi`YfgwOpUvks z;J=?t^YwzdB7S|r< z&#!(~|2y{gWtSyAk2@Y)eE7KcxyZj#>4Z4>s`5X7I}qT7{bxgdf#fx|zjj~$G)s_S zpSf2~t?uKPyuN31y1(!H_S|Jj#B_-Rxo-;}xKF=f#B@zBIJDyZ#Z8>k%?}tcUTciK zF8X`lV^i%9)}FnqU6$ya{Qiw)N}OO z2Sf7$Q}qj561W{B`r|?$&Z*AUc+@qgc%y0V?Qi$eR(4zoxFqZTZPx$*hxe|RCt{2+A(g!FboAyy6BkMfB+vLo6exw2gn(93Lk)zHXXo#0L|Lfp`f7{ zZc4Rro8iAjies3REKlS>O3SiTV+>ud*FokYr9{rTA;wr`u6?dn`|Pjcw>fH`tGY49 zSleL67@DSu)^*)Rxh{H=(8NEABiD}d(#C(&+!R9Cg5;cOnkHiAyD{fXDW$vnpGg)^ z^ttes{7xxt8>02Dy-^l#ttDnA=iE?AsdDtJwWln+jZH*ktv$TQ7(*ch$~n_Gj_PN3 z9n(kO*qPsd8(&_69C;Z-2sDmkcYM_+@G9gKv?rqd^yFHPt_}Duz)uqBal74yHqL(G z^8cxpWvM;a&)~hUMX2=GB08@} zA;wrsDK*Aez4zN(#&-U+po(1Dc`2oO@4ItR_XjXDrIcu%=dC9|YVmEKz}fb(q)CIB zX`W|FDG@WPOZBP^*cT;*96jk5&@bb6oO1&+-{l~3&g7gMw1rZ2byya-t}Er7?>aH$ zzsu!v`X)$>cEgWy((3LHkR5Lu6#mOTho9uq{l?l-^q3td1zF6#xJL07*qoM6N<$f+yqsQUCw| literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business.png new file mode 100644 index 0000000000000000000000000000000000000000..81a48305a11afd6ff15d95099a51c739f8721f76 GIT binary patch literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z>pWc?Ln`LH zz2%s7*g&B5q5aZy4vC_MH$`o84yAw5EMZu`=`te=)7q`!;*On*zow{japmp zKW1gKn^pfspFg?vlA)Uu$C=MQ9E}o>4}aXc<@$Qp^{Y+)Ri8hpsmgHf`RCILOTDfjo(CryEbN!A;NVYvpti5LS-}~IoO+A)8%+pUF zy`u7V7JtUo1JORMTc)voyC?oShoR&gJHs=(KVmvNOT`)9-Mz8){Xb*V_On(;riq^o zGdulOwEIJsWoHK*oXGykz!Yq(w?MCQDKJ|2QX@Rme0>?TfNTyR27yb#lR=cHtDnm{ Hr-UW|w$j-A literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business2.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6ebb2973c23e11cbe44222480ab074f514009 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zH+s4_hE&XX zd&@EFuz>*Uh546KuQ4_9O^6M%bMSj;{7S^GL4N@=2TxS`d%Z&vH#s$pSNb^pZ%%j= zbUtIk))QwK*$x|=x%d0&Zxi1gF?#H$H^+6_`wBnF>iwU}d9U>DtGMf>5^agwR1!Ml z#pN0He1G<171I%k^!K(!=QtE~=Fc(S^S#5+Otzaqm9Q8@-Dj%Ppa->RRGJH2?{ z?)$Tf^E7veEc};u(lM0bxr~=4|NZR}kKfD*R$pM+r~E{81-D_};+K`H!XIpJUiQ^7 z!i%xscCO{~t6Tr=K9;BcJ$~ZcFt3B(ZhhZdWh)=fz;HTIotr%&%I3pDR)!5$AJ=xP zE5X69^fUXH=ik0^X|c6jzi<8G{c-D!8$yfAuK#3U@X%a)>q@E9qy+AMG5xh4r%cjZ zw<}9?>CSm)Zt!_Cye&Jp_>tH4h$5@GeyeV*`u3xYVd0cbuje@2m0DlC;{8#Hbl=ry zOcWG(Pk#Pc6aMkqVx!v?o0N6e79OZzv$Px$%t=H+RCt{2+CQ$NFc1dtkJXl`Eg|^;?x=i#oPsm@6dWKG9S5*9l56*DH3*{3 z+vj-;o45LY5+Xq4@gM9+@pLd)mSq(Y#2Art1^|Q*I!jp=(=@Gp-$O*8=llI`ivPnB z902;h$K&yU_x^DIY}$B@t97x)Z|Z=Q(jmBZf{sK=>C{fp_yCY|MvQTLW{v-|<;%`F zhzLRmU9EKm0Pj6=&JYne=UU@8c`je4->c`J(ewtCQnt^x+pW_>=l}lsSwy7i{+~2; zz&MWGt45YmFplG?3!%o=#y+1d18~{O{kNo)R_7c_DR@3x2H@Lu0Dx_=(}n{uzkT1b z0{|RW{IjPX5fKp)5fKp)5fRaU!u)@_Zd0qT?9ucdQc;5fKp)5fKp)5z(9Z1>-g^ Ul{JIW!vFvP07*qoM6N<$f-t%Ez5oCK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business4.png new file mode 100644 index 0000000000000000000000000000000000000000..e35973ea61391b619f24915c69f7e6a080391bbf GIT binary patch literal 531 zcmV+u0_^>XP)Px$%}GQ-RCt{2+CPfpFcb#x&&!so1qL0!ohuz6r|=nd3LhYqJ0C#sK(%^r^@0`1 z&PX%zW|r>w1ji2oZr^Z?{`h{9i4> z0bm?Q-0ycd=ZfdOY2!7n)}=LmRR@F+is0G_Iuap-uAQLq0U*W*@BQOlYy96eU$)jl zM2abwb3S5>5D{2wYvWgWE?<}5tM{K#H3L#g08p$qW6YrIU*Gp6B2~{nQq=*=vJ9^p znNq^CEL}H3jjfG+zP1d&WjptG2_YQTTBMZld~F$kAJ+i@9-Eyu961)d>>TTErNUQYzA8^oYFmnEErcZ0Fo# z^v`v%)>bD;G%bN`+c3{FfHF787}I?ZFvbkVnBklpG0!u$ZEGs8sRMx5Bi(Z&JeNI9 z)1dcXnRQhuGC-LKaoNW67w2Dq-Z@IREJ&lv>h_ME@Q!sNA|fIpA|fIpA|iS-e*pdC VHM=$uwjBTf002ovPDHLkV1lOR?Fj$? literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/buzzcut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/buzzcut.png new file mode 100644 index 0000000000000000000000000000000000000000..20f5042b54588f5e52b95ff3be1762137b04f0a2 GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zO*~y3Ln`LH zz2%tIY9Mgz3-6}4FAKg39EnUeyub4M1)~KUt6i3rJ$?CqsV&TW2AfuM?ZkBj T3+~>14ifWp^>bP0l+XkKz`U(} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/c.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/c.png new file mode 100644 index 0000000000000000000000000000000000000000..0397bc2055153fb99fd7b47874517bd2490364e2 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zJv?0;Ln`LH zy%m_(Y{1iyX#95KbB~D@4A)O+S|s~j%>KgQF|Fd+Tw6)jYkA$FH+KD-FA}G--A z-MXJ1NuBq-{<`$#uDrc+#{+-uE4Mu@UBCZ%@Be3<>sDRbmYeJynlJZ?WBTb-K|!FR z*r#=CS1~=ABOW?+%B5wuG?%)Csy?sD5Ips~|M8A>(f9v{gfcpD%%5bgxm2wsKzjcz z6JI5zMXP4}-(FvOtNOQw<@2LlvdMQu5+vGQ)y!MRaE$Ar@1OV&|2{GTJp~4PRLZ?i z?lLkwR{DO8WaB2${JjUOeQ&?tk+*5z9MyO}?~aZwxz!$u&noY2Ikd)f-KuwTiC-IB zZcf?qYWiUzch!3RK2>?Ag0t*60vO1Dz$2GSa56awuoaEifQ4KZ+Jhj=U{8k zc(T#Mcz^SuO*&Vr`wL|z1~D=49KMiw?NWzf7{i8Z`(pmD{>pw{?p_r4^O&nS3$DH` zi0z&f$680PCjqq zyIkh~zW0m_md}@m|J>&q%>1nK-I5!N=X_q6FVCoUAH=kxv)mZYAmQQYrs84gGk$JsfUDL7x6a>;7( z{k}8(N~S?x62}D(oKFaI5?(t?TEVd+=v3_UcwVhPN6lmuzxEiu-Vz~vDPV5HalxNv z+6yArAKi9s+r4`?{+YjOIC9V8*NF{B?%i77b1am1LT|?Ie}0?VHwS4UIm6}4%6*KN YE^VBjD|q-5Fd`T{UHx3vIVCg!08cW;82|tP literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicafro.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicafro.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd00a8725b3bb3c25ac2427485a8c32fb7e4621 GIT binary patch literal 640 zcmV-`0)PF9P)Px%I!Q!9RCt{2+TD(tKo|z#7gOR0(ZD98Lkf4Wa{t#cdjlp;qs2rB4X9C^9&Bgg zx=nY+EZU^sa|DRI^9LM!cyRP0gaUx+Y=)+3%yAFEyeK@^>peQ(=?}~0QjN!BbY1r* z8~|ps8Gbg+po1_(zV*pvStmau2It&#`j&j_0RY~2{MyhD!8nf1ww~?FTjJ|LtItqMslWZMpU^|*3nA3; zcvNLsDj|f~7ec68@&|uy4PmiZn2zfE|D)AO2qADCVC$`(I`cwWbm1(Eipb$bm&*zX*B282DeUHBHk)|oywl!7aAqgQ= z+qUoWrIdJ{&z;*~Jz8~LtMmDcwr#-}!+yUxm1Oq^lBzLXNZ8jSPz)Xa069A`)u>L>-02pJKOeUt&j4}AW zZ#~+dDM=Equ4}X08Dog!7`xrh={nZW04XJcATawyQFxE)ycR`~=llMf%5V?_&@0u3 z^G8yi_xhJC%l@fyw3Jc-fKm#1o?Exg=`E1wx%a_05)b9tc|r&wgb+dqA%qY@2qA?0 aUw#4eFhelM>rk`+0000Px%)=5M`RCt{2+RsbtKoAG;?t-Kpe-d&X>*$q(qV=kWwPcGOVqw zVS9TUQc4gJ2_cqN2}M!RY&KgYU26?%Ehdu*=1FnoQ~~$*_q4maiztf3+uIv_--j^< zNs?eN7~t{ovDGEMD@hWRW%(s|tu?gPsOuUR7Z=V|;9LPkQ2+p5tgo+sNdf?j$79T9Gv_^>DqwGK?~mmjMUjwF;^gFHsV~CA!$VP373#YF z61-9hFE1}RJ3Dhe-?;+*mV|?YgO&UWSZg7rgi;Eg=Rrz|!C-(e3|sBDvY)Ph>HPeh z!Z1V-1Teh~t>5szOWf1S-QKsyC0W?+uPe8cPGXeV~jDz7-Nhv#u#Jl ahxrAo(qnf93~yTi0000~CNfUmoXy@f#?R-K- zNlR(g@1NlcN~()CS$1^zt+HB~b^p7Ui`7c8Y&PT79U8{>KW`}h{vd2mX%xK674<;2g-bH4BS`Mr$W{(81WXz122zXTrN`!PR#?dhfO z7+)66U*90~@%}lz=B3H!zU%5eT^y~oE%)}CD7#IJiZ*77+be+nfr1A8$$#s2b-Y-b zc}O66hsoJjdoFap}Joc#WW%aSvH1gvE*?`FHNb&qYz zJkN-a(Vrc!tL2=1wzu2-TF&X`q0X0Wr$>J2ro#~)78&qol`;+0Il}3 A`~Uy| literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccornrows.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccornrows.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5ca06e1903bb75dd628dca458151d0aafb5ddc GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%ztvy{FLn`LH zy>+m!SwW!TVd3Fc=JQwVcG(HD>#4j;ogL7;qq#%szka6A*3x5)mzMN!eA)B8xaZ?k zx%X24-G8@AJoYZ$xAoe`P*xA^+@6_pikl77PQ}_Ey7o8w(dzVuj*j9yjlKJY7ysO_ z_1oOOAJ=<(W+wH#SBnhgQ0%!DRaz6u=)|$OV@=<;YhU-yDR$1BwVv0nvx;+#>Vv)W z-|rFm_w@6Jol0MRXnwhO{a#0XF(`e1$9?Oq*X8&p*7H|C1qCDs a?3ffE&Xj&sxo_P*5ZBYy&t;ucLK6TSxv0MY literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicfloorlength_bedhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicfloorlength_bedhead.png new file mode 100644 index 0000000000000000000000000000000000000000..c60a079b5a07cc72ffb8611783105f0b7c2c187f GIT binary patch literal 2135 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmulder.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmulder.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ff55398eafa447e9002bc542f99c762d9177e8 GIT binary patch literal 764 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/coffeehouse.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/coffeehouse.png new file mode 100644 index 0000000000000000000000000000000000000000..342d08252f136cf1717a50e46c729d593ebc2241 GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z&wIK!hE&XX zd&@Ad#Xx}d!h4OS+1?&@46>r^1!oz*^~f~bVlQ}lj(tPQ$*t8vYkJDeHJg}KCjQG7 zn=sArFvHOvhs8msqP8!cvgoVLe%b$PO)Gi?83dARqRxnB?b+2f|H%Eh4MC?~&8fC} zHfOgE=VzPzlk1auW<1}i`R^Tz#dCwc$J=-r9$P#z)l3icV%!m5;+46&sj6muEa!%6 z>te4vdTIXJCw@%g;`hB1g1XkdPFQQZmFrckpQf$s`ro>t7ryZQ(Dl-MGKZ1j-tXo2 z=M)EvzVT`>bi2~9e$RJ=!X34}3Rh?3vfr`BK0ReRsOv~AX`#fmLgtNGWOCiPUjy&k{t*wv`R z)%)*G*juK4AZmBjdqZF0ImH*E^54GHPGiaHnIg31TEV%*S!xyUXW#m~TX;h8F$134 z3yy5kVR)xnQC2Roqr4$|r~c_pyy-lLKdj9DBkSAm;KgZ~enev76sx_u|3s5}0=yKD zbm~;O=qc{n*~V|6aKWm&RPfjeU$4an%YuL1KQ`gWyopMg zpLtng)?eSIzRTwiD z%x;+ywB+B0DVL(I&y3vhFZ0Q9rAt9xJ7V<8zpu<%y)|jx^M&bdub$5d^xC=G?G^vp zhRS*VTd%d>e{1_=U*CF%=gs{$_C8$uGw%KLJ^Xf`*m>4A%;%f6m*43=Q~dYc^<`Ha zeOwUWOZ|#hv3B)OteN80zjqAn?>z3hAx$9@dxJ20> zJiWPx$(@8`@RCt{2+A)smFc1ddpQl$+BU$nR=r{wX$QkDpJ^&S+4-m#J8H+%vzq0;Xv?SRQ{S z=Ny2Kg)2SQ^A_d=yi!UD!1ANlj(Xl=^>^*rw9IqPxLhu{-|sk`P5^-G^=e+v?h*hj zlQ6P)V5bQH-oFY{N^s6WZ^AwPJ~OB-rIe6!9=^`5Zh|dc{Adz(n*jan>-a0J{lklh zh=_=Yh=_=YK9o{wjIowdHgAvX{A~=q*Xe2~Xj9^|-tLUmqd!A?8zkn&NGYY>ZZ|mR z;JwE@&;Po!F~&O5rTLB+<6?h+#*k7%DWx8dN7MYKC%5e=t$>{KCav*DM5Jn8Kx492 zg1G|PPRv#%{}oMq2%&1LtY?qFw}lXDyA|apG$z^@M5J0{GPTA&XZO_=@F)gr1(*`h zvjbym));3rx&#;vx(jj+aOs(?MTqOCES67Y;28Edn~`0Fd+zq5z?6cG^-5fKp) b5xvqIb{iq|v!%7O00000NkvXXu0mjf-HG|X literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbun.png new file mode 100644 index 0000000000000000000000000000000000000000..b7dc85cf281eb963d49f426fed907db943d1c1b3 GIT binary patch literal 543 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zZ+f~ohE&XX zd&{xwiGm2*1N*}|o5fmW6s*H79j=u&%()m`!4Uq=#=)WB@3(JB8#e4>SKGKOsN{3K zw4zGo$CaEEC^Y_+y_g>x>^?F_P+&HGs zHvH**|NV2DwqDzDH;-R-e-^{NQ&H9be{IQq|Ec=tioH&MxiZ!U-o7XKLsyu=M(ttO zQ+F3Q_`+QB-@p9a)H%jef=*Z_-`?i^|7>)&ckkLMzk=4+RDLLHZt9q_`qbkC^Mxv< zt&dg2W}bo^uSM$#mN!C$hVW>D^#h`P#sPehCpys`5hKd=23<*7!Q(ByV zGdpn@9J^!9%kX*^U)1aErE(0%3T5o_Zv=Q9lxVg}_+Rwn;qB>XuIB$)yzj8FkRSr= bJNMi^)VL9FO_4O*(KilWIu8P|8ot0tFch}H%vqi`H4g31v@73S>*|gx?&&`U9 zAGHhQ&D;BNc9{dmLW}3iB$OE*6j=B$2qd=@=W!|K+-kY?K|(pmi=knPP?nvo^}^R2 zR}R(x+B5a_*Q(EJTJP`Azj&qL^2;w9E~MYz-&CBp=^E1yts7C?&+kl-PZWO@xH`J- z_2TW(|F;z=A%K*3sQ0;@Pv*4uACH&ZpFK~^Nu$(?n?b4R@kfs2GZTKsoZC6)eEOZ| z7mR1;%;Q^~<*AuCFTI0fT597~v12nbkN5>#P3oDsW^2SWR;8xOc@u+PN%fnrHaBvM z?fB7aYH9kOLGa+yqQ;J%mp_D8MeTcj<<;I&N3WH?_v9{&JGbM1{H-(d+%Hw1>+L{* c7w2mk7UZ*6dZmdKI;Vst0Q_&u3;+NC literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows2.png new file mode 100644 index 0000000000000000000000000000000000000000..212d418d5bb58524cd18415f78365ec56a821e66 GIT binary patch literal 552 zcmV+@0@wYCP)Px$;z>k7RCt{2+C7egFc1ac$7;*embd|(s~muu1Ne*_fZ7L0Mdt%pLUQfiTdXEZ zviVt?;6>W^H3%Uzp7A&-24IC4V_Nh6TJMPeQSy>=E{)@u0AL))z2}MUh5`T2Rm1SA3?j`X@&wnGU0Da#-P4w0CcPmNwR`wBC^L(wo?;EZ4kHnW{ zf!4Zc1F{MbLU?%2thK3j2UI6Je6I*K{)(J)N!Dh8BhxgYZCeb(0HqYP)=$TF&tz3hc3x|Zd7iJH zX|1b`$(?iQUi^8UvpeB4CvXS>N~v?8wrv5_`#wNOJlXMOSV7Pwj9~x@zNigtr%mP%j9!AAe&TtPjfjr3MC&(W&aCEi|wfkL~i>R+tcm? q*X!Ba+K7mVh=_=Yh=_=2Prd*ENNdr9D0{U40000Px%1xZ9fRCt{2nlX;UAP_~rw|0%>8>DlU1Gx49d`3>e0aDR%082>J^lTB$uGiXZ z7QEn%^j~A+#QDR_fJPaB1H>59k@t_{oI6L~IhVB7DaM$z)~U52r|OHa7y{fgL2KQ_ z2+=pje7TnDzvX<{7?YM|>DF}x09-DY4gl75#j-4&F{Y{$#Nq3@B7^_{2q8f1DanK^ z2M99pN8?&}@4sAS;``@0WI14(rXMHz?DM~37zO~J6P9sxo~3y0B>;SGfX=yOj7i&Z z$?s)nz@yDZYn@tUfKm$9S^$8x7D}lWviAr-^0Y*xw*K~BYn}GbYU)4TWlt+i4v@73 zy!Q{QzZhdG*@a({eWYJ8@`MmV2qAuju=}NoOd=m~OWl_BNDsrn0-k&bbsqz&MUjN@1R748wrF@4FV6;G9c+-*>|> zV4i0vr7(^oLI_2F&u4i|B0r8JthHE{rAfq}p|wt8Q*I_?Wk3kwqcPd6A^8ioHf@*1 zZ^&|h2$Zh3T1?Z_ZEee;C??Vs!rI~A5sK)@6TJ7a!zkMuBj#Waz?P0Ru*TK!mTw4A%qY@2qAPx%hDk(0RCt{2nmx+nFc5}cEnB)42y_5-seAy}Ie^co1Gx49RH^d;1OnITy+wA6 zl5fAol5A(q&I5tO0nLwRB+$G91w0;)C4>O)J?{5A0HA3aQL?Pn!mo@d-{H#q0eb)7KA2I{Jd__>Eu(=;tqn%?_8mi)pz z&ubfy4GO*_aH2W^6g+K&N747aNH^G;pi`iA6zVTb&oIUa3L3zRUO-BjorG+G1YLpCZ{T%ge&p3St=%-uOA=DmNUlDi zcr<2=`RELwX&ONzd1}WJvJ;S&c;ELTm8qN!wO`F-x>_Lde*Bzq5|AAdOQb51+~aW9 zGPc$(Qp(~pc`NB@kg7yJrVu%k_jzQkN@VvpHICzQR0X8%Rig_^*}Vde7D>Ht!iO6B yN7+@6aH$Nk9s#UJU>JsB7=~dOhG7_nspc0)DW|Jug@nNX0000y@O literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut.png new file mode 100644 index 0000000000000000000000000000000000000000..eccd95eeddc8199adcaa2d529ae4767bf5959e7a GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z-Ln`LH zy>+(puz^6^L;cfowPHLw7`8vuidnoWKw9g7LV)ls=Lv;P-xX8~H@*2C)53eHr!LR< zl6`sRT!CbrNhW=dzvahfA_if`_Y`> zbCIPn)1LajV+A@H0xUekZFO4$&iGu~>bHO0YqNd3f@G3)z8fyhZr!om;dYGdw|nw= z`|9@Jvb$!tZRW}9_^9jIc@qlGdG1ln^ucfS9%@B4F*n5V0s%Q~loCIIcNro;dM literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb77412faabd17ab6f0561714e6e4710879320ec GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z#XMacLn`LH zy|pp-umex)!|4jF-l?qo1y6ki#p4v4Q(48YiD*UcIK$;B{J?5=AX8*O&xZs@qfhk> z3NKoeIp>5-yk!4f;O>ReyX`Ygmx|1s$@cyHoX?+ST+hw?ues~s87a@)bCtjMK6}S* zT-|wW)y3!2XJ(ey|2x-20v>9-%zk8bjfML^lXvm=<|Sv3tp5J- z;2+l?;t`GJp6mCoX}^0{T*33*KI!#Kr+o9i!UXgN7&KG|UX?2Te%YlyE^XPAOKaY4 zi+;|x{rGy(0I$wA?%mUF-}S#(VS4vrnavynnQ1ek&;5Kp<@dp!?x;msY$|$JzC6iK nop|SO!y&D;JI!EbGU&YJVX&!L=qlyy0TT0c^>bP0l+XkK!sM3V literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/curls.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/curls.png new file mode 100644 index 0000000000000000000000000000000000000000..a6221b56dae32a9b6781139be8266b5fa2bbdf4a GIT binary patch literal 559 zcmV+~0?_@5P)Px$=}AOERCt{2+Ci%0FboD@b(m$>27?dKT~6h44g-Q@rVf!E$=Rtibe zH?PubQ-=9Jc!Vael_T3JR3b9SInTZKiEAj|13Ap%u7%?4#Pm>IKFiy9`#{KnYs1k6wT>ko${qFitrIb$0yt~oX8Zoo!TS&bE zzRI#C`xf&2kwnNUuzUpq0000000000008`FOuwZ|71n#d)aK6T^P#`X_uglsZB5Wp z8+ciNKnUTmB=p|rTI=q-rAI;CA8=nHm+Y5P4yh1N(=?Y-h=`W{02zyOPTixRE{(+) zm$GyzWwQD x(yj4n>&}qY+9AD)0000000000008i>`UC3O9}bXDu{i($002ovPDHLkV1h}Z{@VZm literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/d.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/d.png new file mode 100644 index 0000000000000000000000000000000000000000..17e47f3ad38e566e392d2c15c8ad142e201c2b65 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(EB_hE&XX zdutl^1|4kbY?MYCPa#wk1!FT>j z`qmTm?%bhQ-)HBq{dAaj#n!Hwo@-4f&reEwnO?J~_4TfOmtJzFKX$Kcc<80+{NE91 z7X%!ze^nW_AT_MQYESO$?hc>JS5karPwr1Y|5;{MSi97MRr}umF0J4H?%_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dandypompadour.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dandypompadour.png new file mode 100644 index 0000000000000000000000000000000000000000..30916d69eaf421907ab52e2f15f2fd3543aa6104 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zA9%VrhE&XX zd&{~@*-(J(LH%@IS#B1q24nYHhU0b(=T|V7tYI#BvW8zlBVf%Qa|y4EV;eRH*}sYX z$Is(i?H0PWop&9R)!EN`p3IqEIdA$s!)q0pe*_LqD%M*saA=`tj^zJz|AK7Yq#lL_ z3FS3gEwY66eDB`+?XqpQ?w;?lA7`s8EM*aFEatmxa?p}p(9vt9dYy5y&(3SEKdSa0 z?Vo1cE)_D zusQX2UhIVumVLAD+J?&?xO`4{qW!-A=4HMW`c)z&SFg+Lea3&VJW#&X^xsX+3!?Xb z-w=d@i~m!u`k#u={(Np{QLWWnv%fp7p2s9zbq!>&n1BB6#$B(NqUNvn4*vCF)}3ij zi)6izuTzh5*|5xg!D{;i3AUcc9f=ZNPM1v-k8ucAMlIC6lAIkW$M7nqN^N20>x_me zLV4SxD=$>3M`SB1#kQV$pY-}hsm_CB#$$y#S07HhaaMRiYUbLr*_BnV+3mEZFH>I7 zdZJ1+?&F68$F;8iWtesO-CV6w{d23Wj%1bc+15J6-e;1^ID7qkm`S_ytR;PU?XNdh m_w6;VZ7Dz3+W`mn4(89!^7uQwxCxXJ7(8A5T-G@yGywpQy1t91}TyPHSueSLjcI$zN4+aHUiUo4hvom+cMV)m4vO4I)up}LmOmnU1M2VTAV zx?b+y)z+eOLQWG>BkOuv1)gkww5MoA>h)4xcR2^SYpIGY$4#w&SoBS|?_mUb3k*K! z-3bhmoj7}S(k82!c2ehet1X>!%7DlJ_^*BTTRAS9*!niS|GryW`i^LSca8kLrjxl| zw@c@0FZ!n)s#|*eYBh&qhx)woqmQQ@%Zs15GWxU6wbZZKR`W9Ms4fk8qnCgCV;57- x^$oTwvMhhI@(NCzp8HLnbww;Fn4w_LO8t2S`}KY>ZZ-vpc)I$ztaD0e0sv6FwFv+K literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun.png new file mode 100644 index 0000000000000000000000000000000000000000..45e3ad009d09af4d34f16f8919f5113a99c190ab GIT binary patch literal 646 zcmV;10(t$3P)Px%KuJVFRCt{2+A)sfAQT4R=hc>}kt}flcdmQ@*FFGenRP9aV77CH_5xK=V9z#+cOi{fA>V3`19Q?b`TKO7h;5 zwU&esRK^M+P>hkraU^b68~;~LBWrCA#2w-e^nIUi5Wmmu&*Z(Q5W>UYrIfi3LI?^W zkoUgnx>YxT=-=RCj1T9flz9fqc4rD9Jls?s_};O#_L4pj5s}t98Do+$CT-i6e~A7* z66OM722ug+hkT<=F_{xDgaYUPhhgZn)~QTW^S{K8W@lP)Zla7I zV{>INvKIv!{_;~|8cE+_h) zB`{4>j>RQ9jQchWLs$DGHg%Y1fa`HW2sBO8+tTIRwxxAlsqgz-JH&fI?KPSTBuc#T zwASRD$$S6hlzdZiR4LV!g$du9mVV(aeJVG)cc#V5*jLvlz4WSH;HShstv&z%00000 g000000O0@k2loh;%CJdb?*IS*07*qoM6N<$g4qcv?EnA( literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun_long.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun_long.png new file mode 100644 index 0000000000000000000000000000000000000000..ce92b9c88ec8983df48980a6c5ffd5d21dcb182e GIT binary patch literal 1285 zcmV+g1^W7lP)Px(zez+vRCt{2non!$OcchSlvfHy7lOI&Qn#VdRbBf5y6@+?pQn3qdxh+@yIQ(T zg9t-{L7Yq$ft+_yW^Ur2HlyaYLVge$GjYzD({sj2o&iddWf^hKNq(jr@*3xyvMi(h zJ)Fk3+Rw6#Pvc&1Q(>7?a5azVEC1&WW@?9*<$$Hi951vI*j8Otyb%-gU=&NYdZsgzd^XVx~j}Rh=@GTqv>?I zQ)99QD>Dwj^E@@zc%G*YS@)jjY1=OyE!lYx1Q-kkJKxK)jAZSfy98waz{mX3?RF7{ zp=y(#ZQBN*mj$IJLEvLhi^T%>_xA_ySu7Tn3?3*BDhxviA=KoU4~A|Dlnwv@Twh-w zY%>hw)ApZ=RsaTrfiauSkY9WNAN4<*&GweYIT1pj+wJaLlhWHG}Pc3V=zq%5@M)UDwr%*nuT=&Y5dg{C+nYL< z86f{|x0mH20wC*p-|u~=(^2QLU1uJ+hye6@Jyp+Xnj(rKHSj2k3R$py|5sc@0DzCD z(KJo5TrL6pP5mTEkR%C~%O%n@)qWbS^x>sSo}Ql6g6Hw^@nXkOQ&Uq@Q&UrO8Ei|> zuIrNPx|O~M{ETh;RqjtfUjOHulk2)W8hs^(5BM^jPL)pRx-M<|SGF(hhavg0VZC0% zFbs7FA+S$0JvW?l+SUNp>vh359ZCnF)oK~iz+^HhXoPVbD`A3&{%Ctq5+eE&h9QC= zfa5so^>}`7f)Juoi5{cTh!|sqtuazE&uy9ceQvu%^gA!j=Sz=sPK+@cjYieU;}XVL z;RU7Kts!;6&%~2cnNFva*B|A)^Zfh_+qS_N!`s86 zwhiT&W$3YdW=nUg%-MvIN|&D%+R_TZp%VB>==!J?fOGExuL4~kO9$Xz*7&JZ;_K_{ v>$ko6(dCkSt*NQ0si~={si~={`4;{MiGQs6njIYa00000NkvXXu0mjfERJh6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dreads.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dreads.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb64977a3d156d6aee17754304da1db019c1dbe GIT binary patch literal 573 zcmV-D0>b@?P)Px$_en%SRCt{2nlXy=Fc5{Gf3|cjFz5j8QuzQnu1_&%P^SYJ1gh0*i)D=B&A&w6 zC<*NQ8bx;S8;?c`wIGgs_XGl=gce zgffof&>Fz2_3utV&bfpTN{kW9vLMEY%jJT49zrO+s-V`Nrs+yw=V$cqPQW;hgZCZ) zux%ThbAz=O&beXRHUNP49=)od*0-Y+`m1`#RszN_)xBgP2lT$dH7^|kb^wfh!0tKS@~h?H9*|GWNZ^c(=N?|uC| z&vSQu0KmGg<)?X1w8YnSEh17>yVuqugb+dqA%qY@2qAMCSe6CG76;sP1++6{>`oLF%M2)(#y<22zjiVD>H)(XK0?qDkPTXG9zf5P& zfhM76TH&pzW!_cfomT$H(_(waDtO132qAPx%LrFwIRCt{2nlX-pFc3vQtCX}@N=FY;svN+_%_)2Usz{DRNr8l9w=N@ji)dJf z%>pK{$*$%}k&|Hi5B7|kZ(sp+U3=$T|EcTRFPUd4YwCYYbx=xqt+iK5c>p+_P96ZN zszTegsHzI#|HJ;zGMtavwrvr%;qw^%WbC2V+UI!=0BD*9m&*l02po?`q-mNs=RCDl zRlyj8q9_oKDa&$HBUb-#IQ-cEd_G6(@5UaMWtq@QW?2Ry1f-OS*81BnNGbciloe9S z#V`Lz|0k~3D|WlDSBcRd?VyzMBy6pnoOBqhwf3n+c%%;i`~4nW*L`b=82!;RAj>l3 zc@AqWj4_jwNhuR!46L=t^L%vI<}lPZ#sC1iuIs-WWBQk;K5OX%xE*eEz->7uX0GtS z4Sz4upH%{L(mxyn+;(rR5_pw9fcMOR-_!^2wW?e7e|LR`VHk#C7=~dOhG7_nVHoDW zu!?U-Zfu&S&zTT2an5<*=KccDd5}?qhE5G|@7k{7#LSE#)C^Px%`5-unr1{6vNH)v>3%K2GuIoDgx!rDViJhgash>?X8e?3Z=Kz4V zZBf^CrnPpjudlw(`};eJqQK>H!Rd6$#>OmlZp@Z3#uY^Y05~3xxZm&I4{lG<4>nqB zU0Ig?_uJbWuGcFLhXbmrLen&;stWu4KI^*9HBAE|!pqAGhU1h{$&(P$?@#`a%jJ@+ zzY8@er7~lT53M}UaX1{nvs>47#-Vq=-~H?ZK+`nd&e8}N(+~0S@qyj$>sC_qgN^-A z0zSiu4R&4U_WS*}vFz}0+>%KM=>tGf6n^XVuS|;muTVpt=P1h(Wm!JlJn$J-V{m)h zwtno?%1tq*PecGd_d9Ezq_th$!l2wAQYFR;;lFw$z_}3<8K2A36anKLr1le$HqBdu-3Z% z<0uAWjI-9R@^-kje()*4D5WwYdYIWMwAPM@7QOsDqrNA06;fC0U(pu?K@bE%5ClOG z1VIpl|AbXi*PM+V%NK4z*L4o~O40o!4WBeSYXDzS(D$M5Tdd7seZY`Vy#Q0!b!M$~oT1$UBJyF+SN36PO+s|Xv3z}==TJ&L z)C=$=tsRCTyVhFAzVv;I)sKz<&esEvvkg4f3v6`;%-L<*7FAUx+nr5~F-ocId_LoR zK7)u**LBuEgcz;0i%nyt5VFgwO+;Y-Qqp3Jw!l=rp8KtN8qeAMNlilXV-N`E>sL=r zC)i$ElaTD>lp|XmfOGb@ocM3dPx%fJsC_RCt{2nmw-TAP|L*Z%vJ4$qS%!j1oV004|JlL%3kC5$mC zkL$V)LWo-xu%_QM4TfO=01U%`rfDwgZw65LIp-jyM2r!2T?2S!SO`&!)uv zHW_Ix%>j5h*8mRL6zYy-GJPuk1;|@xws3I z@!Y5+zy2;uW9E$+`4OZ!9_>xoJp#E;zqBBwRFRjPloC=()OG!cJ8P{?bzM*65<-Y# zX>o1ap6X55O@Q})ngH#@*1+^Ht&}RBcoJx>r-g2fM={hyQP=g`lj0WnPOg3aE&lS{ s7=~dOhG7_nVHk#C7=~dOhWT530}kXbDOT=IZU6uP07*qoM6N<$f*d7BIsgCw literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/e.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/e.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa54476886d664b4daf7e3405efe47b8bad2949 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|CV09yhE&XX zduyZMVFe!6fH`Mp%rU*;kZcj!wWNSa;`YbA;Y{Vf3QB^!E-bmWYulRptNv|Q+U$I0 z#s3UT8A0dYi73~u9!sZech^|DMsQ-$xzmw1fffKk!)&W8xd-Cy z={qkyjju8`-G03K_lM27XZhZ|+H790YJ2lvmID(+C8NK})tH&rdaC_Ed{0+Dmvv4F FO#mIARh|F< literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emo2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emo2.png new file mode 100644 index 0000000000000000000000000000000000000000..98592307865ba3169b9799387857d9fe5da715f1 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zuY0;UhE&XX zd+TiHVFLly2hVMP=LoD|Fn_=l)0!0`s->WQH>AN~!RB|joFyLr(dnFeqwQ&}K!@VV zo@1MeX1u&`!ZLhn5JN+u%A&;S_)kA7KF81?p}gf9Lqq1QymzPMu60k};iP$0q&}Fj#c-MQ@r~Y^x+jlF z82SdEKA&5(|HJRsYiDsOJga>7Yv216^%%YB{gWzHpZ7>8FZrOflx6MLO~%`A#5AOz zzd5mefzH2u0!3oES4%jglI8Y=d#$X!|30qctEEbNp%<{9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emofringe.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emofringe.png new file mode 100644 index 0000000000000000000000000000000000000000..c7fd27b8bfdd4430c4700ed9e6d75b02a0362ca9 GIT binary patch literal 582 zcmV-M0=fN(P)Px%07*naRCt{2+CQ$NFc1dtkJXmcNF&Vw=%_dVr^p$73JyT!jssY-L{0BkJdH)z zq_B4(`=swDMfromjK>Cwaf3?hx+eSF_kB})o?7!f=lIh!RmU&><2=tvM4+k&At1(> zkNr&|CGp2`L}#V@)9VvO+Kza0G4vv0iju*={WTSTfRpr`-!!m$K_7}=UjSst>5t!`Y$-=lD+Kvr*k4AA|fIp zA|fIpBKiTU8wu7XH?{5QPsc89jadTYI3mWFyR#y4d3)Sq+u&6-cdBb+7Z<<=|EfbP zBG~u+vLfvJ{xtI;1RQgzDMHl>utD3qs-o}v=D2a<3brw#@B79Yqvu>o6&K*#f>zbs zE`QZF|JN+WG)>L9C4WnM9QeNJSg`YqUwI=upWD74Tjiyy3UKVx-?1;?9c#;XU01z3 zrE0dU9c_Wn`vvasYVddLPk8FZJLl3JkG^;2c~0kiK9vg*5fKp)5fKp)5z!Cu1y)!p U6`G#2W&i*H07*qoM6N<$f~JNH)c^nh literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/f.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/f.png new file mode 100644 index 0000000000000000000000000000000000000000..35c911c228a4b3aa74966cd711a2f7d692438293 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z9XwqeLn`LH zy=9o!Vj#eJ!9Oc&$;284D=oeU!3A#flg>Rj$L_Gn zHf6gPlV0f&y1Ijbq3E1|V9(=>s_V)>&snZ{-8IK}&-Z12__Hk-ES^8u`#!11Lo?Ky zvH!{X*IWz&f-6>O{=dZ1BG5Op{M^F#zxf!ZrM^t+d8V}P$@}M)&u2gW`*;4XKR2fY zX*DE&SlcS_%78~;;^Xh9Et7AX>6|XwxokSmBgu2Cb0sYVk-){-hTpGz^ZQUazhSF; z{z<#%Oc~ql8GhvXocml8BRp|&@t@ftTdUq%KbJXY8WHtaO|fOws;yIkLbooPlBKzH zo5Y{Jd)xlrNU3M|u$Alfw!~R#Z?r$I`pcxbR4Vz10ngdGgR?&@YpmbGri283@!K&9 Y%dh$H`C$A7V8AkXy85}Sb4q9e0J-_7fdBvi literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/father.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/father.png new file mode 100644 index 0000000000000000000000000000000000000000..b024ff4afc1a46128eef22934c205f5f69bf7f24 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|{(HJOhE&XX zd&_avVFiJPhn!z{oD|p#rW-#Iv0S`-hH;8HI|oN(`uk{`DdD$*e5B=<{%1d^a8dHg z8n=o1*RS#gT)pyrFVEqCU)M^fN-Xxd9AX=V(;S$^9eJT zrbedBdwy9=QU9N^yV=8_&l`*V_I!`^J5qgrW@MM)w12aHX64=vi+X-*eBYHDAb~ zs50?>?1}fQZvA0-63eeR<%Z?_G*1)mZ%6h&E&A3w!T%&9%shtq57U~=$uaSW-L z^LCbD-(~}WR{7{)<;YKrFILnvT(M+Gf5LFZu0ea3C4-RA*6RF5wo1<5`EQQgJiGqq zDi-eZ6@T7%R0bwoUAxbOW==wW0q@nvQ(ICh{~ zzDUU9XjHY-{ixZZ_A9eoM3!YbT{a2uT9|vgtK-lnorvqAvDbl|Brk7lQTp|5oKL6^CU-bJGIGT{qp?cSA@h9DzC;4`Tf93dKfAF|W z(IfT!0^b?WeBL8H_1w;OnOW5xv5M~mJBk?!lJER;DXM2sXQ;W$SQi(?n*QyF;rvOq zTpO;jW#=j^da#%O+AV?AiQT~o`QYGkgLvNFW1zrMHp!M(*ZQu{Y6pRRRUS!^TxE|BTdorg=r zX5N_km%E$Y?5XC`vgHFVdQ&MBb@0E&+nIRF3v literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/flair.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/flair.png new file mode 100644 index 0000000000000000000000000000000000000000..c5eb356d609e3517af244597debb53e0bc166edf GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>U|R3#;uumf z=j|-pbx##|TK$*pGZhlzUf_L{X%pAA6Iz=Xw07wz2nD_R;$vvkpYpC&f5QBW9{*Og zC>>*;t?-7Ax99PUB~v&Q7rd`NB4NnmeErkf`rQBF-G#|KKuZ}J42~tp9KT}JDE2$( zRBx?j>gK;%jB|=lN;Fr_V^moEZg0CG+qs?5t_9~(pMUqzoc$)8Q=z5dyPTJ1##(EJ z0Ix)ewsY0iN{xhHFILjYU6H4l-EME6;1H%=LVG)22Ir#0S?8Go9pkfFg`Ipu>8BV!t!tDgiYeK|0O^F zzPjL?s^Sqfp_hMOok*5w0|o;OJ?k!%xx8y#X6$tn-{4)ljba|n@xE-5`a6A9kni-4 z694_rJKZ`r*)Le~&1%kyePYX_Zig<^U7JVz1YA;#h$)M#n@8n+X1$$q_9{i%QT#4bvv=#F$xTly!Nhy5` z`O5LOd(wNar{!HA-rY7~&(7VhgTe~DWM4fqH|Yl literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/floorlength_bedhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/floorlength_bedhead.png new file mode 100644 index 0000000000000000000000000000000000000000..a05dacf906079b5d5f763ec671338a373fa7acab GIT binary patch literal 1541 zcmV+g2KxDlP)Px)rAb6VRCt{2TRX1nI1D`=Oqtq%fGj{=sw_aO@EW}U*IIxpcV2)20j}M9iox+^ z^z?IV-+LdB(BtIzEBbss(RCdjkH;o?iLUE{LU>mo{unXMQ%b#<1>Y;x#HawI zS0yoZT?f_77*o}Cjjronem{=m`mRYBV=9ipdt7OPTIfHM!prRrQ2}VJt7Tc%Wm#4! zWvZd?=#)~Mc1TssF`5F+ORm0LZQxI#kQUOOqakSmx7)4ix^A<35)$+BlKHcop)sc7 zN|SlXbl>;er@Y^FUD0lo^#M)ORCQfr7zSvqtC&Q!))kqa=Q%g*F32sG2<=D|f^!Z{ z)10#l5TyfZt*gi5fwpZ=*$tLu*_&4{$JB-j|j$$0gm5j^Pmd;P! z=l4{s;-g3d_S$o)w&WnqilFL~NeaXNEIk`s7PXy;SR5ezfdBn)9PpdqueOiSR#=L^ zLI4tEmcromJkQ&`Jt29q07{+VS>B%@BO%8c^89|xlEbgp0HqX$VL)Bi0R9Yk0K7bx zF-yt#r^f+j?Et|4p1dTeA@jgjNM33Jf5k4)w(Tm<8C>ysp7D4*;0H=l{d1a-4TOFh zq`LE3o}tzGANKE)qMCR5Mnd4749k>K0M zVXovn&r#-MtL+nW1k#>kbcE(}&cQjC)ySv->bichqjwlOnje(OSRW~k&eb??g0^9*b4+qpnO z{+{swp_F=I+^4aw>rM4@eki#MG)+?(W2(J2eRf93Ik%1JGsJ6S%*)ZaX`1Skpsa1% zHKxWf2h+Cgde(Mmt^H#x(j)1T?^tW2G=K2H2gl&&+K!Z_kHVk(k{*FnZGIfb?Nd&E z1tI?Ua_%F23PsyQtTxX+0RS%r(<}M|Bpso7Lwy6MRE9VZ&)clLNFrpT!d1+N=m5S- zJu02hQP?NbN}AXS@Zshk-Y8E#(L9^=o!lOD4{q)E~WJNM!QH?Rx zvMlSBwx6RBc+DF~T65{KEYZFRNSpVwEu|;0cM%((r$v7^D9H_GonWXoA3E(_Y5OH} z`83fP9s=7;thFxz2MO>4p6?KXKL=^xsg=PIzvm*=sCvjGgue^K)as{9fC%ka0D|U9 zB%7o{wfPcHe}yKLj4AtxZYdGmAY8!~3xS_fjC7nN8t} zjBM$c%t%YxQwf@AVT4;p+qSD;h{)lJL($$bl~QQiHtRfpeT&T1ND9EO&FAnFp>Pb& zIh3^QCI#R(BculV&cjfShFB9t2-#hLpl3}ndgTrv=g83@{Z(!k$o^x*SN{}~tPCe- zJOFl{#1Lwd0McptXil)CHt&Pg>WNdVXQX)8{yNI>TUSogAV`z{{hiU1IH=* rv}ynV01jnXNoGw=04e|g00;m8000000Mb*F00000NkvXXu0mjf!>jh1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/frenchbraid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/frenchbraid.png new file mode 100644 index 0000000000000000000000000000000000000000..cf839ffb88c17479102d9e0f8654393d96e024d5 GIT binary patch literal 2140 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gelled.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gelled.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0f32f847fd0ca3b91fc68dfc9bfeb9dd23c319 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zt36#DLn`LH zz2(@|Vj#eJp=id^Y{d!86^$|q$G?h{GK9Y?YH&DE`faAGu;=Ytm!}3+xBcXoiWaF~ zdS;!2pMK2BKb`&z$TB>3VM<TGrUaedd2QC7?@P8W zE0j4Y;hcNBYo4ZHvX7V-iz)2XMg_l z%#Y^P-8R)9U(2NV{VY$l1Ns#P{v^Mjaan$*rd*oU^B_4-&82c~PcD7jB4WJ!YsH>5 z?p6y#`Q3{hdqq}d-(ljgGyaNV2o|;=r_P+nUEcdpW{L=H2H(b+; zw4D9IOd`}P^ep>P-WR+2mSt8&E%`Fj^xD~Z%Q|Px%6iGxuRCt{2+A)r#Fc1aM&uT+rBuhR384(8{_5u2gK7|iJIvMinCTHhW2ha~ts&j5g77ytnC zJR^j#OA;vMy}yj_y%)tVsu~YIr33&N$FbYCZ3h5rE!K6dx)RRupGo5vtpH;T0Dy=v zj$;S>E&>r9&e!sMeQWLEQyRbc7Dy?*RC!sJ?rK(Q_){Ed{Ne(9CthjN^H+)rP$K~; zp7D2A-aoYha?Su=3(d!TzC=+0KKq8P{Vec!JPy}C7vg;WD~eYD5rKdD*tTtZtK}bK zEc*LrL^HN++s;3OSI4!55cZrihG77IHhU5Tfb(Em4jy>D)mlD=-%6{;Z>5w{N-3q3 zQc5YM{v)E7iQfBtnx>CqB0|nt^j=;Xe;9^CGc?B7rZ3>V-<@-Zri3vD&bcNpDMJXm zbM7#BB7$>Hv`3(*033W>R~Tbpt^FuON~!uriSzydB7(IR#u%*YDw+gQUw{YCh2Z@H zecxBV1^T}4cuxWkoQojwv-BTQN-sUR=f*_MCdD}px9F~N`l_N8aPGe5oSS!ro{i(! zUFB3lbPI5hR^R%6!#PM=sH1Ek&98s5o8)E)=!G5d^jslG*q@&3F!X_k|8Lt+be o&P^$$lu}A5rIb=iDWz`V7iU2x`n@FN{r~^~07*qoM6N<$f~@KY+yDRo literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang.png new file mode 100644 index 0000000000000000000000000000000000000000..a94396ce9844b690d01233fa33aea0099f1aa5a7 GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z4|%#chE&XX zd&{=#vw;BHgX{9qyZAUt7|K@`HC(Z5IKLwJ1;eU4FBzB`U%lMw8gT8t+J=icTQE`7LnU2OZ=$2E4VAN_xA>)?{b z!N`!%!^qGgpr90L+!*)!3FCn%?qr@l-yc6dF0s0JUDt_veTIT_S0x@_@T_>B-LtXl z#NqO@N_)Qksl06#qbJU=WA~H(iZ*L60u3KOs!*EBPpW*Z- zpSRxwzny$OC%@BtmhgqG4Dq=pw|ZBo*J-j^rcVI|#eDnkukNt~d#!RP$p>#*`no*yp+GkCcUY%SWo{#wtY zIjh%t%?WDS`Yrk|XYA9DW{tJA2G4sgzhrrEYmI_ZX~^~yb|+IK)!x@`y|!pd(-fgO z#ap-gEZfBtWop(^;9WQGdFH(5D@*%(1e|spWn6dlk=Xmd`v;6exIf(d*VC^vv0oy3 zE5lkF+gWb`X((A)#BklR;rt5bCD#~3c3x&=VY$41X5-z)myReJ z{AWMd*|}6ba$5KI2Kl@fJ3T_Zy*Mq?J2=*CH8@tX_3Gj3_^kb=eVMa%{rZ2ks&Umc z0VW0q7X}7JmK9kqITu{5`@oQ}wzcCxb$!i$!()%;Xdk%k^2Yw$PN8HQ6OQ+_orYqe ze?QzX=G-6sZ;uZ5x#z|VcXTU5b+5k`-F|!R*8gfsO>;i){`~v+#?Z^k27StY%P;Rv zU+Z_wqVFu@mWXMozvmU-W7}tceN`rF&9;kQ@?3PUmEP@BD*9eM@A&o|(e{gu7{Xz7~SqX>l4>~&#VBZtLnK$F)Q#-3~zw+w6D%Duq*wk?+ zHM!Q(<=KvCpZS(>T^<;-44$rjF6*2UngC;g B@9+Qs literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfshaved.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfshaved.png new file mode 100644 index 0000000000000000000000000000000000000000..99483967969d4963ad3c8a9d9bc97199c9822fd6 GIT binary patch literal 539 zcmV+$0_6RPP)Px$)k#D_RCt{2+C7fLAP@!M=hc>}Eg^A$bg4K%>KuSG`T#ivRXPq}35nXhw}^NI)9=gW0suH14x+v!hG7^1;Cj72{F1MER z-jB{XXsr=KcqBi^rUZ0dH%_yBJRTdR6r6J~#$*SxhA{@tIVh!YyWO(;6Rm)$l!QH% znmn*E0dsrIIhP;J3h%~|9)jOl(L4zulM?^$KL_|bHL`3v&h`+N>ugL-6bUFdJ-xX%Yw5Vi#fatUM z^W?3yO}etKeMgY$1Ny#4+qQ3GT5EFxUQHgjSBMy6s(!Oyst=GPq3G4v9u*?f`hXJ2 z&Z-c3^=yy(yEOT<0_NgblC=U}4JzG>Yo#qP7sD2t6JV`v<|a8km`a;l^3UZvYl*kO zyC5X}Z4qNcsuEih(~_cxAW*kZVtT&B82{!i@gA$ddq0*Mr}zrkLkOW*jSvwL5fKp) d5fKr6mLG+5*|ESi^%4L8002ovPDHLkV1h5U?_U4_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hbraid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hbraid.png new file mode 100644 index 0000000000000000000000000000000000000000..3b347bfd2770df2f3f733f4307b15eacce069057 GIT binary patch literal 753 zcmVPx%t4TybRCt{2nlX;!FbqY%7h9$lU_b{@m&ylFodfucIfV}3DxD4>K!9rZ+G2-- z#^cPIa$@fQe2r&pIA3H$Qjyr90q=bVfXCy3>-7o%FvfH(pVfkMF86(3^ka;$);8(? zY7y63Lu(DC6zFf~Ty7aai~cYS005;F0ALt~W_`BT=6TN3G@A5iKv} zC+|JG{}x_VdDsgf@BNoWhjT7dGCGQS4X_8c1E}QHyu1EC;}toF?STJ%sNrv3mr zpQn?V5CZzXKV*xFnj=C8<#Y&W?-5{aW|HyC^ZA-R-5Oi;*YxThfoYmp`kWb%Q%X+{ zK#eh-F{azQP5m7yrJ}R;JcK~o0zVvoQwu`@QVP@9odoOWi9(V;aX1-uum4 z^{gD=oCEOpo1k8Svy2A-Yi&n;2{iL)j9c04fMvWN)eEqNdMw=Y!p#n-KX@F+j(P>C zW$p~T_ay}Aczi7}e+Rn^l29#p7WEfWUpf5dh%GbxN1{1x23Tu>MIz@`Ayx>i;hZ}q z3_ezWtIysN0#s_2oLvQ$_monszJbjSc*R-#5m4X2R$kH|aYlc@;hI0`EdD2rRS*P0 j5ClOG1VIo4;c)%{LgvSTZvGh600000NkvXXu0mjfN>^7e literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hedgehog.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hedgehog.png new file mode 100644 index 0000000000000000000000000000000000000000..630fc1a256fcd0eba7f97262be1b06a3fe2381f2 GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zH+#A`hE&XX zd&@TOumKP2gXfDDr!zB^G~~>wVVJ9w{zbE>!RKZX10#z`wZHnZO|wlFaP5}7w_RXk zV&J5DqX`X{zgF#KJYaLaJLCBFZRd9P#mVc6&-Gg#eXde4`dDV*^VP}cc4pdKXY;vS z5*#`uNbI<`Wi;2EZ5h`~D4%<7{Ho^b*$+jwjG9aN z7=G=mmw5XpEXeEb=5pKTcc$F`D_FDbboHHDh8;0_-zA(P{^V_ZDSNxC_KnMveIFiw zys>54vi%4Dr*&^#zOMA63j%z(wOOw5n$+Ioo9C?k%lYomiCt>>`@d&RSW&$8`Grf% zAH3tQD6x6Y6Y82hx#{@on0s=J*V#Hw?B&V5nDzO;V#|gZr!D#f1g}f1``56GDX09v zFBY9$o6J{K3;){p{?#{$YAc&N_ZvzprGDI0->|fF-TrAO?#e11C|5o*Pk!J1h|-GJ sa;k5pExDLiTz%ZP;<%+C0_>fsub}N>;n$fS0E|lpPgg&ebxsLQ0EE2j>Hq)$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highfade.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highfade.png new file mode 100644 index 0000000000000000000000000000000000000000..800039dda4c0f9ce968ad7afba86081dfefd03b8 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|HhH=@hE&XX zd+RjkVFR9qM9Gvli+8(Rf8i0kaCK>~Uf_M*0{@*`cHXck^!mrogTe~DWM4fW2a)H literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highponytail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highponytail.png new file mode 100644 index 0000000000000000000000000000000000000000..7de84eb9836b896f93500126abd20b9933aec992 GIT binary patch literal 756 zcmVPx%u1Q2eRCt{2nm>-KFc8K+UY#1rk`F+aiUYXL0XU;i;RCoz#{n!MxpwbYtcG=1 z0>%XLvTuG38^q3^&tqqo8K3~IbqpcI5JK$xK5DIFiJemVzK_P37(y7YrMCW*{L=M$ zg>&xV^O;B~A%p;c@mk7e0gN%D+NlWX{Ue$4b)Q6d#5GQc5&UQw_raAw+Qy zxsd%-_+c0T0Cim#+1w<6);dz+N~wzOE2Sz540E_+Di?c*$?c>VGuGm`HyR?Xgp|1^xx52VyB7D**7d z4fYE0(ETA%vK= z%Z`A27-M4UAHWz}+qM86TX)Y`eJL73h|ak&d95`7pl#dHu@C~rnCP6to?(UDSfrSIXTl(5#0&q*l{ZIPuj3FMm=02rGkRr>rI*?oc37_B}fpUw-Ua|5p?wN3kb z8p|}+H5LU}Drag*3n6Cb1&(4mlaR(T$J&<6s(`5x@BQ05GJW4iD*vwQs%OI!Yh-T$ za*!tOy@!?0iKjn1=T04vc*b0OIYMMrz_UZ;-P>R( zhTMa2QGgsH?_B*H-)lK63UK6C+F7jSu(}26x_;R-#+i8UUpKaAj5&QEdJkIb-Lpds m!!QiPFbu;m48t(YZ{;rq3ZGw{@SGR`0000Px$=Sf6CRCt{2nlWy~AP_~rqm)}CA^92{U~3%YVY@ZCmE|ozwdi^@2m9RN*{2}ZQ^50Dv(@tY2h+b8b~iZO-SdQtEOOoOA0i4BK_z_uKDb7)1I-1}LSf`fEw! zr=3rvYl;4Q=>uA8+-|oo=WU+nHH1(+fl~I1Ke~TJ(Ho$(uIjI4KmLBv68++j;9nyD z21t2H1JY4TZ$Qn_D>C3n=<094e*B~B-%w;gjIpZ!45n!+x_?BG0oK~?CznGAu-0B0 z4d&5a2mvw1r(KssgU!O%Gf4qij1j55+I&I?A%qY@2qA{6}KS(F15+A8@9= zC^M87NC2NXxn)_J)CT~-vMf)F*IHv7$Ls3@0Bkw*mp_APnzqHa v4#b|21|hGeNeCf?5JCtcgb+dqAurDdH~|vUAt!_i00000NkvXXu0mjfQ?>Q3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut2.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b7ee3dd3051297cc75cef624819c408101f1bc GIT binary patch literal 631 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>U=sIqaSW-L z^LCbD-xCD^*ZtwrR&Gw87a^!!-t#^5V}0QM2XmsEr>`x}d#G}t zGk+~BL&bYWhHFt}HIo?5?R3@LsujP@YvpCvf^)i$E!G`BY_Mkj@xqj&>YNLvtlAal z{m%aWPanHyNB;Z%ZMr5^dw+lRy?N)K3ppvMJEU6w*!#J9LR!PMU9Wx#PPx2KrlfKn zQ>Eaa=^1O|`EFI8-^Dmx=mC!h(;M5z>FXJ9|J#1vR{fu9`hl_qribE#8qNqBzbj(0 zk>kJg)7FFOh(!D=*XfJvi}W&Gtj7jVvG1B9~5?b%mY5!RzJvgV}2h&wu{;m60Kg z-|lzO&ad~(1r?WWNpa7ZefZ^9#sjn2^Vc5zTi3p|Om{+tuiiP0;)hq*CuqAge4iI{ z|NC6SWxrSCJ;;bVdde~|-Epe%5nV5fNw;Jon6?x&YScW7czaMt!P-#QE9o1DV$BP& z+Nq~!E_QboTM%NEZ?|LrLDMHQp0afqb4M62Fj4yKw#4+QTh44@)=doeZ?-;tqL%HD z%WmiS29oaQ*pSrfQ*0X{}|-+WTvz~{8R-@FMO#Ho@u_m3|c@o2M~k6rQpdR N%G1@)Wt~$(69BNY5dHuF literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himeup.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himeup.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a1758c56ad44f306e88ac8cdbb1b5aab4b7948 GIT binary patch literal 716 zcmV;-0yF)IP)Px%hDk(0RCt{2nmvx}APj(=r!7+>S>gccsB(a*bAUNx4v?AyP|@W8k&sf;^NJ_u zk!+#>v&rmg{WZ)CBW%o{WxIj``o0g_-=5EBRWeoyTIzH8-}gZ&1yahz`bw$YU2z3k>y;ct-2FY3ECcj? zAA}GfrG#mkR;>`?awEj!)5HM)rfK@rpGuYigb>T;rfI6U-S%IB5CZ0TUcMV+002Nr z3G+M`$HIs6vB4#9Jc6 z+tsE*i5Su~rFbJLDjaWrYb_um48yRh(4c||T9GU8-Ulkm0Qfi2wryb;20+ABifnsi zk2p0zyz2Ut`A@shG7_nVHk#C7=~ef8Giw&E<1tZumr3C0000A?a zXfC~Stu#07+Xo-bt@pOt^!5F(EolmWY}GJlvzO+iB|%+9=i1dwjq1KLUWt+ysxMFI#214f%eud;Hq{ckg#Of9aiF63N_(E3U0djnv!C4|Ed*%n9q+I5YD0 z>dX7B|Hb7u%ry0{-L%_E#_7deqaJnh^2$BeeuXTTPrWVu!G3w%I=0TYY41ya3HAzA zZ`>pP;1&ObFB>O)S$&V?<@WLuo9Dgep7H!=$=4so&sbpQHyHn9WM;gy<;Px%uSrBfRCt{2nmx|rAP|OMZ|xe%5(h}<$_MZ%I3ov0%>k&~aR5t5)bwl-jX&bg z*)?oPHoNmwP9!sbFhqF=D8xCJVvH%qm`dMm0r}#btMaF-dC3@)hGBsB9>XvI04|qH z)mndIUrGsUEdXGi=PLU@N?(XECJK6*CV21Rz2A05jT0rdbNlPM0sw|#K&|bf1jHB< zWqe<8?>+jyZ@LTmzVFCB07xmf9cZnsO2TP}jWH>NfN>nR;GJ`cp0(CV2vNNi&!DwV z<2VAi1rL1f0^n8zpzJuD-U0JGcS4A}%ID8YsgA1A3L(VZX9}K@L4KC3c{%}F>vSeS zt#y+=V2nw?eXzv3uG?`awSPJRLI_AHH%Iow7?bz@Ta{WtK@-#)O6?al!Rz&kX_~OV zbDeWra||IAIdB$Q_j_ul0ZG6gwqKKAwVhBJ?ixHJa;V{Ao(DKKzm6TmPG!!QiPFbu;mOndU#fJXw!J21wi+Bt#Z|I#S%Bbn?~GXh6J z)(E3Og*-kC186t`_|ocVMxbQ98k}?K$Ts;^Dv_T~0Lfp=vTTN>lvvjl-h0gR+#Ly* z&n6E#*9WDPSe6CW+IEGYvu2D*)DLoFub3OkZR9@WzLl(3B#+ZGjm7}?;za8Sk-d%F zhiRG)ef=Fp@;Go)XNi0|<6Y!FkZ&atd6hD>uInaGwN`|G1=$WER2QR29?wxqb+79D zkDwdjNG>}|@eath*E_3!<4q43_Z*Np5L|K0?!Xbb0~tpA3LM9t~LBJxcj`&y-6y;JJYq4$>RADnJ?8r=PWl) zJ?ivl-#hks{QHFKf3oeFUFL^fFFd2#M_+?}=B^cugslZ5A&ui9U({n*oIxG&A_K=u7+Y?<%RGoNSX4xgD^ zdpDn#% z=d5vx&v~-f&M1!BTFYEzzfb)GpRHLsGs0CJ9d!@63(wxZ{Hy5_FEExEJYD@<);T3K F0RUs---G}F literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/joestar.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/joestar.png new file mode 100644 index 0000000000000000000000000000000000000000..d92e0b40a853b002184e8ceb84ef0399ad85ca24 GIT binary patch literal 663 zcmV;I0%-k-P)Px%H%UZ6RCt{2nlX;#AP_}=uQu!$35f$ZBjNx)MW4|J=-3D7$QcK)ghcF|4Mv4n z@6I-O8qdt?zod=ZqKc{lOa67iLAGs6a(%sCFGuJ3Z2Lcs7@g-i0l>PhD95E!J?LS- zI&$9ov@8phQqWo>gaEBImSusp79j-07-6l&FbprRi1+N5zenshRe&JILI`<$7S6e* z`_K4U`=CTW#)#YP_D6)LX-Y~dEX#7pky`ur`#o0yfSi5#ztw(q1(b{S-v74O%JJWV z^9p2MS-dd@0AP%P)*4EwL-wmH0KmK1mpwO4Q`bY#Ifr#!5kklT0Fcjt@?I^~6(A?= ztDbAcd!JU_rO@9&TDuKg%?YWl05M+fJt;RS zOR1734;mTA@#4Ktr4J#5ERl<^wN=pEAF$tl`#s;QL86?y+~0dSJjU2GXH@{o1F+m< zUqO{E4_-N=wAS$6ryk8(nCCh5F7qQy)0Da=Px%8%ab#RCt{2nmdl;Fbsx&FSc}TK!6Y6&Q%VOS_jY>c?urDl{z25fB@C*wM`f} z^TQXz%UGrF$Qhh z?*0iHV~T#~kZm+Gr<{3~dtWI;l*VzqX$v8|>$LYC&be&;>@Oh3_|W@m2qD}YMeA+* zZu~FM91w^S5nbm#5nW@!MSEX;BKkDi-n;fFEh=3m^sB5vCY*TnWLBb z0Kt2YuIsAwi+6>k^VV8~5YYEM`o4!T=8%m^>AdKM5MZrEjIm0;YFpe|i)os0I-M|0 z6P9HGfZd(29r?=$$)r_m|R5CI(W__(X>gu-hQFc~!-d65 z^N2+Jq!x+fQyaHjEB~DpstOcdvsFMaV{PKv)@xEqOxd}gRi1pDTU_y_R^{JiPJ?52 zbmSPEI2Z~hw}kaK8>(48|914*j!3&O>Hqm}U9OcLHQ>3sm{V(MR(tiVAg+7A|8DPi zbNlJPTb4Gp>^_&Tv8ImlSLwD- z<(nHZZQ<#xwcq8gzZR{%Z|><5Iq&=_u8$LUTvdN^G&-BHX6n+SnX8^YI{m}`DBG*a z0bifTOg?SP)SvZry$3_X?i=SUE8eeu-4c5B;hfyHU*l$dyO%7{w(kA!bzdJfu4nmP zd!P64g{S2QY|j5?UGbKG#jJw5m#IphHbg#}x-Hi`wV9>h-O?YcH?cmgcDlE4&f$sQ v<^=N!`5ON{SzO^B{~+J4(9Z<{RVYR&)f+55w0=l^Q_ZpVK(;LpFJoexT^Oru*; z|NUaS^6dYfsw9qwdND5V+!!R<7!_M`W;*2lyJY=y|N40|f}FfK&sj1YF!7D;F?_9| zdMrKYE50uygrhAlhp8eX2g-uBnKV3WmP_*R^(ujF2__JjLzd(Zb9;?`6> z=QPkgu(@Gcbb|Ktx!mi+s!ndH`Z=}8OIZ*B0y}s1J>PpiN0fH^@3CiK zNb0GKRJ5Cao?)G+Qg-E?JMs_aXkTOeo-s+o)FWeGsi4na#@F4~cQ1Hs(dX+OqS&&= z|E`tv4zY~6#mg*b{9-P-qRYTgd%xW9*qY?ma*TJgPM^686y;tct$Jpq{F3tM=T~yL zb8aqHU+`6CmDqw*<&d>^pFP=oK6?KD)7#IscObyN>+)+)a3`40K6)A$R}7x6elF{r G5}E+P|I)Ys literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/largebun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/largebun.png new file mode 100644 index 0000000000000000000000000000000000000000..32897398992b7db3793eef6b85a252eae4b8e7e0 GIT binary patch literal 562 zcmV-20?qx2P)Px$>`6pHRCt{2+A)r!Fcb#hpVgGEku3QDbW}b7bq>H8IfW14DxD8t3F+1Dy~WBb znaS>elXym>|7#MVfS(-$#s4}~T9zf3@AEu&wb!YYQpzz#0KhN|)#LxFIVpsYFP97Y zzQ;I@aL(n=&w8GeQU(BH3;?tp-#M2{0i~D_LT*)rb1s(}%I72FpV|S=xvaH@QtHE& z(^}VzUqx$;7$daS@ZMuxR{*!SOu%FzXi%9MdU**<@i}uPtRpp^7|)$2q8c6G(I!-y?OJu*gmVYT}@jku&%%MajgpiFfC=Ce!wt%vPlk2)-nx-ZR zO-ZTm)dBqJ8;CI;YMeNn4twvnhJ-SxwRRhDnx?MB?r_fKX_~e~y3|l=GRDArfB1Tb z7GPc1n=D>LV68=r5yqIUU*Oe?P$s`W7Gs3979}?K-a~7B6QTdl;VrulBm2IGwHDs{ zX50Rrlv4KIZ?){>@uPw1>EcT~Eg~4l@u3E#X9ywW>-DPx%DoI2^RCt{2nn8}jFbqZA(JZ@0s+0rt0zE)a(KF@%taAWX?0kSokyvM+S&UqT z(gI0I5HtU6ASuN5k0DiUB9M;OI(Y8`GY4i4TI*2TzSym9-xw3T_rVwwm^sAbn)byu zGw-tBq<(>!gHnpxwr!X>^nKsNb2(0=;Jpvl+MD@Y`(G&^7L~;Tr4$hn^?l!1YpHY= z#HlW}x2``+k^n;A_l@^H)Y$Qu!{Kl zg@}GL;NJBbSZm2Sw|kxB4A|O%SMSU{;=uO`@w5P1>o85z-QWB)O-<=D`FuWKy~&7{I^nB)NUjVSW5O^DY4S%?NRmg7ylvY? zGEuPBCO;Px&d`Uz>RCt{2noW+ZAP~p@zV)n0NIU>LS02Dqa7IqS0a&^703;-=-SZZc^3hH^ zT{76y{lYJqn4uM_us)EYLm|tuq!0q6ln5bUnx?L_ud`Td6M!mX|0x-KUDwq2{nj>) z<0jPASZmWbj@$oIO04UeE*+mbC*`fRX<3%-FK@q0h;002S-!}TkH0JnTMoAAP^a@e zV;Ba65HOA-oO6&;VxDIRAue@=dy4ga5AXeU1puWKTL!iZD5bhw`DvOu?>(kz>Ou$@ zh5<1~Zg)k55N@uy8IADxP zG!EgM0|i8Cr~9}(oB--D#t0$Ap_$X~QpzGhjv&h-7o)fXd}aXeJt!SZDItWodF~M` zf1#XD%4@B^JeMmx3`134T-P;`j}sJx_w5u6x#P23Kq=M57@@W9?kNx8=C|5`=;Py~ z+Xq14U*OAwqI0f(7BI%7BgOYuavM74v_ms>hhVJLc|Fkc- zQYf9}=1vo^w}c!iB`X-RU4Z*GYX?ADf)n@N{=O~7ST_y+Hd^a0_ir-sylsEw^71YK z9H-&j+V<)9s!a4UJaV<#uGnZa8jVJy(P%Up{}sibjCqY7z*El%SZh;0E`Z{(i#9}z zF^MWM#5j(i(lt=GR+#s>uIrcc0aD81&)?G%V2nvZ2=slA5W-fW_1r z;cwx+hjVVL8s{=UdX^O^DEEJNLgW>obpXlAk(1>D@1Q(zTQcLW2~Nd;S5}_5OvYD? z{70OTmAw+Y`V?qQVvOubU}u4Mgd;o40^aHE6I_`ePC&lV@D3&CT*fLJH1DAF5$`N} zqtR$I8jVJy(P&)CU#45_k<0Q7g8%>k4rN$LW=%~1DgXcg2mk;800000(o>TF0000< KMNUMnLSTZXWz0PQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long2.png new file mode 100644 index 0000000000000000000000000000000000000000..137707a8162fd34459fa0cb5f919b53a8c94d457 GIT binary patch literal 882 zcmV-&1C9KNP)Px&5=lfsRCt{2nlY}VFbsyxYRjpSB5{D}s5k)iJHVVV2beksn2Ih3h!iPx`fTy^ zqrhVsoLOLz{52T{NF2vDNt}ubF~+120@Za*ecxB5^_<=QFYXK0+N8BkN+}{DQc985 zI$3K|sSq5DG09q+x~`+TuBq!fveqVJOi}wR1z2m-Fbwqd^+n$MNjVGy?X3i@bs{2a znr8Apu5q8kZ|)0qU5~$=bBq7)1x6h0Dy7EXUDwg;^1e$fS>{M}>G z-x@d~2pVHjj4@ejQ;ab!U32R!3W7^CO>>A6h`y}=uHc;e$n{u3uxXkf<~P5;Cx`(d zgo(c+F6|Zr@Oio2Zq@B}Tby*{_ewrTYvh)N(QcZClv1P8b1UFjB6}iq2Hty$F^-*T z+jimtZQG8|#uyXFB~}%Hk$gNJtf?lR|I`xje&6@i^Z6w2{b=UsBub?edGG1@e2$;! zE$zSUnASRR74XS>a}e3{j-#_nC7vOoO>2b17cnJZBr)4Whp`yKHPLrKB-(DZmrwxF z)Dnhapt`O{1z>{48F_FS1>|5>3eH-RpMo(a&4ZiPx_CJ(2!bF8f*=TjAPB;CkP=6_ z{HpC2ZFc7SaM+uFyPx&M@d9MRCt{2nmvx|AP~pLPg`zn2`L9i=gJ45&H-{p4zM)`aOI8zAR$rH^NOcG zi-|WeZ0sm{^K1N(m>Cbu7?|m(5v_If-c#TAB&F!k})P~t()Xm8Ne75=Xs{f?9sYpb0 zI-M5xagE<=_^5rL@B4IatzEsp7wB=w6+)!*aU5xyrs_7UMu2mUy!T|SO@1e(?5wrq zy(i~fwE{KdFN|Kt(OOGz%NjNt06}LMhV-HkemAxX___UGuQ%|mqfSTu9mi6D#@#$pK9M3h`{ ztMT8$07T1?FwZmfeV+_aPS9#rhi_wm9L!3=tCr+1p$v3H-vRPfIx!5xFbu;m48t(Y z{{m9tNSD8>{HD#$d>;;b^V2ku_kQzUTq}@|EOEXmdW8IxpUaQP&4mzl9SusUBnR8z zr7pE?R_6whhsP0H(a6p3Sto$DAxj9c&}AIQ>Rd#1W+*R;$hV_WC$Q({WGN%h1(dpN zr71b;y-&U1y{Gf}+!5WDuIvE}4xcBY6n}CZcLDxho)g{H3midN7tm5HRqX-*nPLQ` zwUqguXssja1P(2e%d5epl-)Ee!B)#d1FQ|HGW~p1Wk^n`*IG(^ zi#u%UIW)AEcvMQo%jI(TCPx(6iGxuRCt{2nmdl9Fc5}+RvQvqvcv(%h&X^x(P!iU#6AEKnGaye5-~X&jEbr8 z@+kMf%=E6mq-kJm*TZE`{|265p6A6{yYSCv+If~M`!7;ncFrwTRbdzgXsuCI6}bfqdvvC~P&WI2Ks;Yw48rIrdrbBEz0BEf-48xiUT5E(5lCnVL003y) z7Jc8NX`0pZz`LjWzQ4^0Wc(Id>krf7C_}dpIe-jON^Pc@F{V&Tq3`?kZ)n(+u%Yu2HMXST91In^2 z#&KK?>$+~)s`A#_h2G(j`7Fkmg4!eFxzWQgte^aT-}j=`NHhhMQkbR*Ap|r{v-=)J zYMLfVvtsxXOKh!3$*iLm9)N-@zN;l;hbA2{du&v?!{cX4@lkIeAaNHuInQ1n^K>QCuhW; z(pBiTUE7uH?E`onh_9tV6W4(6gp3IxT)M&lFX8~&*znbbw&cK@V`!C1MeG1+RllnG zbF|hN#}P`Y(|5;lOxh0r_zZB)Ej-#=k)Eb$-K!|2P}g-K-44G*5d_|*0ZjoimS0nL zOw*LK3jO#D06tDDZajzXJsuBn^j`*UkhON<4&mSbIm5TuGV;GL95^=gzi~n)lgVT< znM~%p;F`R1ZvDJN3fqJF<70UCoPg-xVUn4gbBp)>!;g<#nwH8@&qD2UrHKDT?!5;& zL^=+U1In^2NSGkyg$_y3J>X55x#Mue-Z+4FiJT<*)NzQ_;aHn*+ji}gJL4)89)Icq)ym%KwQ{(%26GNMaVmk z$HaZmnFJCREw4959bQPk-QDf-=Sw^E_`#=3fCtnP({<>zPV)I0g2!dGb0n z%#HtwDG-m5vXLS$H69SufGur)PyfHu__IFZF;Ou*TF0000Px)pGibPRCt{2n$K_3SP;j*FT_bxT9Sr>+e5Zh1+2JiS_uh(K%6SL!XL^FsfZKW z1In!y7q(myindMzj_t&;9sig;q&9AdljqcJvywkj6ek|Pc{6Y3*?#kYgs6%_^PEeA z%h1iz?ntFtovY33(wo1CQUGWjA7iUln@4x5OzJ0(QxbWNh)C;p0gMcCb_US7t^$_h$LOK6{*P_bB? zdvdB&t87wU$2nmh;{hPYBc%NNNkoLTQI6s7j~{6;7~u8m*P)`jckkl+_wP75IzpjP zfVjEIE_z3(RIBIO2n>%JYdg-l-$g-4bW5D+098@Q_kB2y1L4LE06@<$@aD~%-;7&d zU&r$DGK4&LV9m|A;p6Z+Vd@B}ibB0!4~nW{Fc{#;lP5Drw9#nLpZD*l_B;@m262q1 z$E<$Do;+@~2moqZTP*2BmZlS?IiM&Aza0k-s8p*gYC~N6v9TJx=%24&6L)-`YbIga zHUOYlEQbFD#zu{geg{l5JYeP=&}cO1@#DvdMlz}VGz`;(VVa?_QKN&8ZQJM@#<}Yn zjmE|2fJNZo;D8=Hcz~NXZvyyzlmWo?JQ#+7)zwwx7=!IN=|2Zt2aQI9bX`ZM(+U4G zrpT+B1^}V6f;Of_ zmk%F45CHhT&m})FO)$m~eLCfti?|)Y(_osD-~RqS+uz@3-Lsb~UDu)OdaV3lFhIZG zhpy{k#PAHp!cT$#@c#XK5=D_)es_15+pdM40|4Od+qV?FaRR{M;bH8k28JIV9#Rq~ z{4bg0h-uEr$jHdZ$jHdZ$jC?sNs<=kx%(o0No{|?W$p{O%sy~0hy-3HqKV#C6@{Xm zN^50kysdFPQG&iDiHJlV3lxu+sfWWM3WWl+ZWpcNV*o(CUQab50;9HSwb(LwP@2D# z@;ER#?6h8QR5ug^sH&Q};p0e>L>n6$07mPDr3nkBNgTkH0+J+AyWOVonw(*pFijJ_ z??XP@C~+0YvJBt%p=lb_v2{Y*anNqJi8l?VIv`l(oiwVp>JQ7{}1K}2v}7lI&M`s6o`BuQjh7Vg}+15MMA&*!nezK&e(*O>Cu2NOqtVHmJ1 z3&5xtkb)x-J-FS32v@Vt03!mCI##o)=Ecyl^|fvMl(%j~_pN z;Khp<3uAo1-rgPyc9R4t%0r?E@H{V3<5x{SpNH@Jh%j9o z)M~Y`k33uDriOBGzpYd%kYyRSZr#GehY#7ickf6PMLc@+XdzNTk|gT&dU*Ei89O>U zqLY&oY;SKvJ=@4V?JmV-K&#avS(YJ+BDS};7sBW`q7K+fW0zQzMGpUfTrLOKb@}Ca zgk)L9#>NJAc6Jte^a0@By?bnPbMs2yPBStxGBPqUGBPqU{(t-j9nUNDBOa9c0000E lWmrjOO-%qQ00008000000002eQPx&TS-JgRCt{2n!%B)Fbsx&-n=I40^9%vxBx0(CRf_vKpVa?lL{z+0%*Vm$Yt;j z8TlD@H?bW^HZ%S%WV0rcC0Pbb6*B3%ZY3f}DPfGMa)0OD@{?{H$8nwK8AOD-uCXkO zze*{gwZ`RgIn5X>UkCvJUOoUg=d$GgNfBRM|kr67cWQVLpYEX%SPcQkwX0DL4oBR|>z#+WJ$ISw_x z@=`b}AME8@Yd6^L$|`d?^j;e zJi)eYA%sBNwg|sB##DXZN6Syz1&$n-f^%-Ozt?rW*#*L-H;&_)5(Re+z@AK9TRi^R zNZ|X8G1c{Y-DLlL4&d;=Ua#H>G4daJtLwTo$E&&befK*6HWLrG!u^%U0CCay@|Tz# z_L0aF=FA@^KTeLZ&mu|N;JcWnsR}30kG;&YEZ+N4%A^OekBERh{3^`6>y`X1bX~XZ zlUvg?E9Z(rp-?Ck3WY+UP$(1%56M16Xqsl_)7WKMPAP}ILVog1VU0dKk$qN?Si*_# zPlQkH4*5Y(bKKM6w;Qlx| zGz6c>e%Ci}B;oot##BOxjZ*;lLTM~XOMrzKW2&?I0CEVA#Z&dlE{qssDk3`F>-QLj zp(3KEY68&)2-h5E`d9D$-@!VByU$_OVc>s439bB_!k-CsVqIgBVU!2?hu+y48bjDU z3Ow1X@TujepGs#xjlXN5{e*w3=l7)OeK!YirU!6Z^V1oGIzMvS!z4IOQ}s!cXAW=J zJo6>zXi{{IZj;Mb=RJI)&V@puP$(1%g+ifFD7=V&%=lEC6PFfU00000NkvXXu0mjf D1QD+6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longeremo.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longeremo.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8b5cb6ec26a18c8894aed7a4485bf9262d6037 GIT binary patch literal 655 zcmV;A0&x9_P)Px%Nl8RORCt{2nmvvKAq<7zthS^c35f%wOT__liky*CZ~!X0IRFw8H9cE-G&4zq zGe23$UlT$U48}%?=K&17_f2a(f6qDN@pufJv97lN^NDd|3;;lD4ex#9OrV!(nwqtC z)u*+_G)*k~T@G;0HLW#_F~~V1gaBjA>9C2EcMccLV@H2m#hw z&`v0&hGj?|#W;?0n--o@n%g<&?lFJ46HrRM-* zHDk=`45+oXloD>Y+bOBxoNMDaqLc#qd_JG&q^0-1)mm3OUTbY<-2?W9l>*yC=aWO| zYX03J_!Vq#T-} z2a(2DR4aoLkBAS8T-FdVw?8t0rL=dHjm{fW2&f?10m9@5^kjxS~E_FPpohz!miY pQj;JEf*=TjAP9mW2!bH+_yZ>Jau_MUm*D^a002ovPDHLkV1i`ADB1u3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest.png new file mode 100644 index 0000000000000000000000000000000000000000..c543fd3efdc85309a69f1086b3e759837981052f GIT binary patch literal 783 zcmV+q1MvKbP)Px%uSrBfRCt{2noX{&FbstcPjAQ=2`LNctfMS|Rj@`D&~X-!5i=Hm6e*kF4W5$g zBDlil=aSoeqqelMb7DejyMO>=%v9Gk0HE)CJfBZI9*;sYmV{v#reGHUoO5WJMr8jF z_Xoz9Nox(~8~~uIs`$CY0f~KT7XY-@V*6|XwAOgNUa0FDN~x%Ph={YHc9c>8fN>n5 zwHA%X5}@n4sJ>DPWmy&gV)%#aXFl)VDD1y{JOMt4XFpeVt#L3UEUx{?pDePMS zfOx~%OAwf@dRP#8or6e#C7g5c-XAsGDoUxhNe7lb+X71f?|t0;@5COT4vT;*2@{sC zI^{3t%Wd1P-uqYW3-d`Ur9LkL!Wkq?e9svqNde|7{&5iieBBCr_kpAYm_KIcp)Yw1 zCnW&z9`0+eIV2|l@V?S}&m~C;0K89p&j~a+0qA6pIC>{1z;}FiP+KD@0q6wj>bGrM zNTVSs0Rl@xNLD{-LiXqEEL0|w$z(E_Oy;*DK0k+YbVy6>snJVpQ@emXEid{}=n+^- zNS@s&F$}{rFOMmuV67F2!2UPbbzPjibM7rauar8qQNkEAg|a-g9r^=KFOLIX6KHr9_GSSt3$+8__?l#49TOe+9d4pPW0000EWmrjOO-%qQ00008000000002eQPx%s!2paRCt{2nn8}MFbsx&p5Br*QluQ9yRLEoPQe*DMGlY^I}U&pDVN|aMxlmB zN404fGR?PYOB*}C9Z2m|5MZsHl~MqJVHj|~-*LO$D#=(9#&MjZT>$XjqitJ}{Xg6v zSZilv%<{fzn&oqe0}}hxE&v!~#P-<&7-KL^697PKy(k|uA~n>G)*1jXO%rHPIIslh z`+f$#QjQYSKVDA-9bYL0=iDNK)ILjqrfF8u-@AS$(x_9|OMp_>^=UUg;2|&-KL&(e z=kQnJ$le{-dyf!;WH=UD>(!(qd!M}mD+59Z|E>QkaKxuWOW>!76P8Au!de1d*F9bH z(v1k0?WDEVpO*njsnx`f>_M^=U>os|%K+f96pr2pvJznXnBAtnXD7gSe78}1MpgpQ3DW3yT~|r7Au9nQdqPN} zpEa@ile!93C=?2XLZMLjt%&!}u^k=DQb&6965G@+ATP^{eiY9L>=h(aACwr!ao)Da zwAOIWi9}%k8|?djnY{OYRiD>dCp{=(t(~>jsO!3-w&VGLe+g8pw7-NzK0}|WRkI^_ADtz>bn+2lwI5n!2S|X78yue=3<3}1J z!!Rtb<2j)?`IH5U?btNys81YT7GQ5;S2!!M=L07Q>@z|k1T;;vJaT9Xo>88nHlppe zZ7b>Px%8%ab#RCt{2noVxQAP|Lzs!P_EkT^gtzyUag&&Vk_0ITeB03@Vb!d+BjQTHdE zNr~g?eVZ6rW|+rM5D!BNa?Xo$ZY{UgD8^_sb!oU$j=S9;1O?-~c$$RhB@kIipl$H>}8no8BiV#Ael+sWUQcA1%oIF2keJ;Gac*ILCk*`K+?&w!?FzZM{+ zv`o{qD%|_@d(&Iw(=>_x5e{XJjzD!oB*ti-$%&ok+3@->d=1zpzUNff#@2Mo-BV!C vk?`=?NATf~&_)0N00000000000CwaJ9`qt9VgOCR00000NkvXXu0mjfi1ru7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longovereye.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longovereye.png new file mode 100644 index 0000000000000000000000000000000000000000..362bc1d4537e2320705077e3ecbf2f4f51e47b5f GIT binary patch literal 720 zcmV;>0x$iEP)Px%a7jc#RCt{2nn8}FFbqXMqh7K`Lh=D>SF0R=Q*cI3kppDKjsqY?$|ab^$Z1y% zJ?fYVU3B~HfU4NBoe*p{P~g4a`o0GM%=3)<{f^u1)@a7kuq?~QaseR5h+!C1@_&{7 z!F#_s=kj&eb@{$V0gZeq7XX}dYWc+maL!>}R{#JJWy^C!)JDo7A^^a;u8>YCp~wK! zG;P42kdtuu^YdEB@%z3<2q7CmE5FD9UDrK$fA9I3XuU2eUILP~ZBN_yfOi8+hNPN-WE=J=X+?2q6TO5sFh{(=_GD#~49G*$YHewNb)* zzY!7Iwr!+r?hmM59tYklurWqB=MX}8$jR3%kfxM!MS2*9CWHXzTy}t_I;?7tcn*E` z#@R^2vreT^aHuY@t}FV!&mO4VFR+*OJz5`BrNw16hWmtg@-?%x&tuD|lRA}fs4nmd zy#hydDDDwTDWU7S{K}Cbct(z1%3#^UFf>xP5)MVc-i}|hIT|d@c-HZ^mh4LvM{8gPDEaZJ8;+7v9e;cT6!XgU_*d4=Fbu;m48t%C z!!TZm-*~`B8|pS5+5i9m4rN$LW=%~1DgXcg2mk;800000(o>TF0000IP)Px&F-b&0RCt{2nmvx*AP|PfQA*cHNF0Fft2ls9;WPRGTXO(c?tB0wBx?7hh{nRK zoiKR8U$Q*aYLoR0FT?K(z&EGM`J;7RJph2U7C7f%t%YG2vc8pr*4krS&N%=8NGY@8 z|Huh0gg6A}oP*Zd=OmC5Un#Z6wbp_VB0D}w01R%7`Sfp`bC{;7s0h#OB+fZ7#(=dJlv42V@$o6gRLB(&v#zTT_XMSh8+msHA}xccddWmyj69XCZ(k}DwP@ z#snz*Pga*1q)kzhYSy0QlYboDLvYz*R#_ z_kKzaIgkYy$FXzH9fm>e`5_h?d%yH?{BgntPSfPE6aM>#U-4}l-e@!$jYgxO2jJ;TDYg6Z0Qc-^Dskh{DZ)1c#mv!Znml7{ z_XsfwRKBJ~jdx?eW8e>2R z0o%5{#nlwPAaTwmSHW#}c%EnI`~DHv=quhNkOT<*H=GEcvdq?X-QNm^J^|Gu{4!&t zHd4w?O4)@Qvf|bl5~^JLbx24UySO_XLYZW0fRl6%SpuLv7H)^10Jp)p#wb9d0B7pf zG(-Q!SuUv+acddGAWzH#7_-`>d}T&zt^E@lp>5lIc<#WQwAQ}ZVF=ZZOYVus(s4}8 zsrVzQm|++?Yi-qGfNvA4Z^HfsJGyv|?<~SQ=hkR68jVJy(P+FGzW}RhCZ1F19Do1- N002ovPDHLkV1lhHlOg~B literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longstraightponytail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longstraightponytail.png new file mode 100644 index 0000000000000000000000000000000000000000..8420878407cf073c7be1bfd9e7c7510c298f2c77 GIT binary patch literal 718 zcmV;<0x|uGP)Px%h)G02RCt{2nmw+oFc5`@r&m%VA$bArQn7&4SpaKf6|(>;IxoPICD-(R)%Y2U zTx|1mgEC)}1SR(2WX2$lD=1(X1{Z$r`@Sj}XAko{I{*N!H5g;y`Fs{>_**LA@p$<6 zi0DcMlt6!g)*6HmyT{8QtU`dY zD#$W`CZ~R{>)M;3wO)ujgLmUk(^NcWmH}I<{n=Lo8sA#$d!JsdwMFx1uK~swP)aRI zO)2H#a=Z#^y;AeD4FFj7|Jvs>p%XR6K-;#9V_yX#x_O>m>E(|os(?>{`hO3%Hei~j z;_E+gYXgqpwgwz^&v9D=!h3?RW$zUL;KmieFbu;m48t%C!!S%S$Hi0Fh6 zKK!JUr${P}#?Oq%!#UP8G)?1kLm@2T@jHBA$$vl8p64Aa?0#y zg5)qgjg5Qm%=IB0TS{5c+_9z{HVp{-EDj;Zaa;%s_Y0gwJO^nYLXDyJcO+FnoWcE8 z6#f&jrqtXp$$+)q4xNto3tT}s=UP0Tx*lyB5IfuVeHCt%F~(fFKY)-@R^dI#+76MF zN-b)EPu!3YYdWk2=-+;~!v5x6;k&uFG>0Trz$Y$xTcm3K`fQL5*!sdJE_kV=Xiutu zJ8nWaRPzxV5w0dx^VhEd48t%C!!QiPFw8gd4{dN@&kl2EHUIzs07*qoM6N<$f}XQN Ag#Z8m literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lowfade.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lowfade.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe9352c2dbd6cdead5925ae1c8914d3bcf26c8b GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zojqL~Ln`LH zy>&3_kb_9;!^r}&f`yh3l)MifU*RA2E9K-hb%8rlygPzjJY{^tm%83Q<+C;DSN(*u zt=8WS3|33OoZsy<>)GeZ;yCZiCNI{wpZ}isE9Zy5vrSQ*jL;#8$;&gP_SPPoVe@3p zg`0L?vnNepxOVH~@mX8T_C&4SG=X8C)m*=K!TXmcC10!7-p#vSvO9LY_lJEOUzXgmc)sQSd(qlFiY=HDRk&lY80@Kdd#sxB2FpiAxq~Y`XtT{eg9AWZLPc iMw9PtW`wzqVaErqS@o5Sa}5PkL1Lb+elF{r5}E)SxUr1@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/manbun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/manbun.png new file mode 100644 index 0000000000000000000000000000000000000000..15ff5671465003d5ff5084e4315d9423c1fab396 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zH+Z@@hE&XX zd&{uzvw{HYgXjB~ZEHEg_#)^j!@63A`4gF!JYxuXY0Y!k@p+4!yRW7nMGyW7@2n-f3lfBgF==PY|3b7bqr=`IT8SZMWp z!@AdXcdf5o_~p>Eao+iKiDWj08{5{dd(9nZS1!L~5xn_6GP`hZ+(sSm z&wqURk4UWEDt7Pp|9REn!X>*Sv**`cZrgJ1{uWj*P5xnvY$Ec^f8+xzj~ z&(!~j|F*nU;FU$6|95ZA(p!5 z-0|kNLw45Hs|1J{p-&6zb~8Fo&Ox1yH0G?uLpCCuie^S?Bk*qTAO<^+_pjD@$~-xdjEo5Qf?`q zPyGLO-n7)6_mAybSG~toALw)lIG}%Vi?omC%dI~Qc-r4ceP0v5SJqE+<@dTf$3nNR zK6~|)<@cnuvD-dQnRJbBVO7%gcZ@Q7rS5MQU#Y956x{PsMd|X-oo2`5w$;8VO^2Du d!0@B_9;4mG^ckh+&j*4;Jzf1=);T3K0RZ)`lZXHS literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mediumsidepart.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mediumsidepart.png new file mode 100644 index 0000000000000000000000000000000000000000..42334028fdfcd6163d5fd1e2e46f63ac43238508 GIT binary patch literal 667 zcmV;M0%ZM(P)Px%RY^oaRCt{2nlX;EFc5_wzqX`Cvg8AB0S=Jb2jGl80JRT5MaKbFhQD6icqYCc^*3xU|xX)=6UwhG{IU60C3KsZQCN{Tq%s>=(l5aT_?r=7yE^9 z@*LlUDvGwPt%0H@1c}R7V#>^7%zkX@H2Tj z3L%o>f5m)w7zQY%P?lu@{OkrH1p2-Qi93qziy{ z0O#D{h3*xswX5yF=cgByfVORmN2_eD&2lX;3`5lTGj`Vi;&!`byAXOOZ>s@02zMW? zc)0Q@HRw_aAe?iks%mvi)wr5&bv{DVHk#C7=~dO zhGCdXll&Bg8YE#uGPOq^OXv@vrby~z`J`upT5I1l4TKPoQZ6ELbdAPw^b}7@xp)*( z{RzR8<9F-I%1w=jaZFh6sYRkha6n zTKjpPy)kBWJT~fY=6Uw?+G>g21-tqJIojd(2t5gVHAE+Xd;nXQ#uo literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/megaeyebrows.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/megaeyebrows.png new file mode 100644 index 0000000000000000000000000000000000000000..5841ce0df33c4b42df8bc1810209dca2820a6c98 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|{(HJOhE&XX zd&@BEr~ywy;?j~YG8|7B_PO~@G=3#wcldS*L$ku>^75j}^$VxWu-m@$KfB_M1s;6g zQab+>2m4Q0b**yV{o}_APwaaidw-YK(vaz?mS=bG&bj^VkJOnpvm*ayy^{>tIxA9l z=^Q!Z)vKy@wq0M%Xn1U;DzBo?(kWU>LQWE!nD4~qZJ%9pr}6t^?KY9Wb8mgj?%r45 zZ`B5L9~AtX_wKZd@#@#R?9TM=Qp_{I1eVR&{A5nMZk&r> z<=xn-D&}1)vV1jdRkHswIdlC`iT7H$+VRn*#QI%_^Vjjh3}yI{m_O;%!r1~vk)YsV N@O1TaS?83{1OVM_i7fyC literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/messy.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/messy.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea83142685758015228240f2d3eff748e9cdbda GIT binary patch literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>V2bf{aSW-L z^LCbD-(~}W*7^0hp1GVS**~yaG`yB+FfMAiBGb@yj(tPRlUetod;fb*Vd*j0ed*kF zhdC|ga{aQJ`3+9jN_|Vd-cx5-@H(_0R_^@7^uO9aKUnldTC^}E`^ZTjH{?AWU@Can zKxJKek0XboddofShpWGEE4H-%-j=&jhx^tx*XyMb*G)}*7kka$&APULL-Dok@uHTy zq7U}^n?y3qcrMA1u=ecaxyv|B)%Y2FFR#d)_38C<3k}Vsw>M^R7hK%;eySlG!-F}& zA`AsGKBCZa@G{a<{eb1A({&D=oc5>45TQzTPYTQjKUv}azYs0$N z1^e#*yM&zzj=bDkz3RAc39a9D zc%_-GeaerAWu4MvFak*LZ7Vu58 z6_IV4!ZGjRt?GZmF|(6a?UMCA{W`0zx(3;oK=vX3&%D~J@89t%OBDnrItEWyKbLh* G2~7Z{*Dvn? literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/meta.json new file mode 100644 index 0000000000..19107c5b76 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/meta.json @@ -0,0 +1,759 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "copyright": "Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi ,resprited by Alekshhh, a modified by potato1234x, uneven and tailed is drawn by Ubaser, doublebun_long by Emisse, longbundled and bob5 sprited by github:DreamlyJack(624946166152298517)", + "license": "CC-BY-SA-3.0", + "states": [ + { + "name": "80s", + "directions": 4 + }, + { + "name": "a", + "directions": 4 + }, + { + "name": "b", + "directions": 4 + }, + { + "name": "bald", + "directions": 4 + }, + { + "name": "baldface", + "directions": 4 + }, + { + "name": "bedhead", + "directions": 4 + }, + { + "name": "bedhead2", + "directions": 4 + }, + { + "name": "bedhead3", + "directions": 4 + }, + { + "name": "beehive", + "directions": 4 + }, + { + "name": "beehive2", + "directions": 4 + }, + { + "name": "bigflattop", + "directions": 4 + }, + { + "name": "bigpompadour", + "directions": 4 + }, + { + "name": "bob", + "directions": 4 + }, + { + "name": "bob2", + "directions": 4 + }, + { + "name": "bob4", + "directions": 4 + }, + { + "name": "bob5", + "directions": 4 + }, + { + "name": "bobcurl", + "directions": 4 + }, + { + "name": "bobcut", + "directions": 4 + }, + { + "name": "bowlcut", + "directions": 4 + }, + { + "name": "bowlcut2", + "directions": 4 + }, + { + "name": "braid", + "directions": 4 + }, + { + "name": "braid2", + "directions": 4 + }, + { + "name": "braided", + "directions": 4 + }, + { + "name": "braidfront", + "directions": 4 + }, + { + "name": "braidtail", + "directions": 4 + }, + { + "name": "bun", + "directions": 4 + }, + { + "name": "bun3", + "directions": 4 + }, + { + "name": "bunhead2", + "directions": 4 + }, + { + "name": "business", + "directions": 4 + }, + { + "name": "business2", + "directions": 4 + }, + { + "name": "business3", + "directions": 4 + }, + { + "name": "business4", + "directions": 4 + }, + { + "name": "buzzcut", + "directions": 4 + }, + { + "name": "c", + "directions": 4 + }, + { + "name": "classicciabusiness", + "directions": 4 + }, + { + "name": "classiccia", + "directions": 4 + }, + { + "name": "classiccornrows", + "directions": 4 + }, + { + "name": "classicfloorlength_bedhead", + "directions": 4 + }, + { + "name": "classicmodern", + "directions": 4 + }, + { + "name": "classicmulder", + "directions": 4 + }, + { + "name": "classicwisp", + "directions": 4 + }, + { + "name": "cia", + "directions": 4 + }, + { + "name": "coffeehouse", + "directions": 4 + }, + { + "name": "combover", + "directions": 4 + }, + { + "name": "cornrowbraid", + "directions": 4 + }, + { + "name": "cornrowbun", + "directions": 4 + }, + { + "name": "cornrows", + "directions": 4 + }, + { + "name": "cornrows2", + "directions": 4 + }, + { + "name": "cornrowtail", + "directions": 4 + }, + { + "name": "country", + "directions": 4 + }, + { + "name": "crewcut", + "directions": 4 + }, + { + "name": "crewcut2", + "directions": 4 + }, + { + "name": "curls", + "directions": 4 + }, + { + "name": "d", + "directions": 4 + }, + { + "name": "dandypompadour", + "directions": 4 + }, + { + "name": "devilock", + "directions": 4 + }, + { + "name": "doublebun", + "directions": 4 + }, + { + "name": "doublebun_long", + "directions": 4 + }, + { + "name": "dreads", + "directions": 4 + }, + { + "name": "drillhair", + "directions": 4 + }, + { + "name": "drillhairextended", + "directions": 4 + }, + { + "name": "drillruru", + "directions": 4 + }, + { + "name": "e", + "directions": 4 + }, + { + "name": "emo2", + "directions": 4 + }, + { + "name": "emofringe", + "directions": 4 + }, + { + "name": "f", + "directions": 4 + }, + { + "name": "father", + "directions": 4 + }, + { + "name": "feather", + "directions": 4 + }, + { + "name": "flair", + "directions": 4 + }, + { + "name": "floorlength_bedhead", + "directions": 4 + }, + { + "name": "fringetail", + "directions": 4 + }, + { + "name": "gelled", + "directions": 4 + }, + { + "name": "gentle", + "directions": 4 + }, + { + "name": "halfbang", + "directions": 4 + }, + { + "name": "halfbang2", + "directions": 4 + }, + { + "name": "halfshaved", + "directions": 4 + }, + { + "name": "hbraid", + "directions": 4 + }, + { + "name": "hedgehog", + "directions": 4 + }, + { + "name": "highfade", + "directions": 4 + }, + { + "name": "highponytail", + "directions": 4 + }, + { + "name": "himecut", + "directions": 4 + }, + { + "name": "himecut2", + "directions": 4 + }, + { + "name": "himeup", + "directions": 4 + }, + { + "name": "hitop", + "directions": 4 + }, + { + "name": "jade", + "directions": 4 + }, + { + "name": "jensen", + "directions": 4 + }, + { + "name": "joestar", + "directions": 4 + }, + { + "name": "kagami", + "directions": 4 + }, + { + "name": "keanu", + "directions": 4 + }, + { + "name": "kusanagi", + "directions": 4 + }, + { + "name": "largebun", + "directions": 4 + }, + { + "name": "lbangs", + "directions": 4 + }, + { + "name": "long", + "directions": 4 + }, + { + "name": "long2", + "directions": 4 + }, + { + "name": "long3", + "directions": 4 + }, + { + "name": "longbundled", + "directions": 4 + }, + { + "name": "long_bedhead", + "directions": 4 + }, + { + "name": "long_bedhead2", + "directions": 4 + }, + { + "name": "longest", + "directions": 4 + }, + { + "name": "longest2", + "directions": 4 + }, + { + "name": "longfringe", + "directions": 4 + }, + { + "name": "longovereye", + "directions": 4 + }, + { + "name": "longsidepart", + "directions": 4 + }, + { + "name": "longstraightponytail", + "directions": 4 + }, + { + "name": "lowfade", + "directions": 4 + }, + { + "name": "manbun", + "directions": 4 + }, + { + "name": "medfade", + "directions": 4 + }, + { + "name": "mediumsidepart", + "directions": 4 + }, + { + "name": "megaeyebrows", + "directions": 4 + }, + { + "name": "messy", + "directions": 4 + }, + { + "name": "modern", + "directions": 4 + }, + { + "name": "mulder", + "directions": 4 + }, + { + "name": "nitori", + "directions": 4 + }, + { + "name": "nofade", + "directions": 4 + }, + { + "name": "odango", + "directions": 4 + }, + { + "name": "ombre", + "directions": 4 + }, + { + "name": "oneshoulder", + "directions": 4 + }, + { + "name": "oxton", + "directions": 4 + }, + { + "name": "part", + "directions": 4 + }, + { + "name": "parted", + "directions": 4 + }, + { + "name": "pigtails", + "directions": 4 + }, + { + "name": "pigtails2", + "directions": 4 + }, + { + "name": "pixie", + "directions": 4 + }, + { + "name": "pompadour", + "directions": 4 + }, + { + "name": "ponytail", + "directions": 4 + }, + { + "name": "ponytail2", + "directions": 4 + }, + { + "name": "ponytail3", + "directions": 4 + }, + { + "name": "ponytail4", + "directions": 4 + }, + { + "name": "ponytail5", + "directions": 4 + }, + { + "name": "ponytail6", + "directions": 4 + }, + { + "name": "ponytail7", + "directions": 4 + }, + { + "name": "poofy", + "directions": 4 + }, + { + "name": "protagonist", + "directions": 4 + }, + { + "name": "quiff", + "directions": 4 + }, + { + "name": "reversemohawk", + "directions": 4 + }, + { + "name": "ronin", + "directions": 4 + }, + { + "name": "rosa", + "directions": 4 + }, + { + "name": "sargeant", + "directions": 4 + }, + { + "name": "shaved", + "directions": 4 + }, + { + "name": "shavedmohawk", + "directions": 4 + }, + { + "name": "shavedpart", + "directions": 4 + }, + { + "name": "shortbangs", + "directions": 4 + }, + { + "name": "shortbraid", + "directions": 4 + }, + { + "name": "shorthair2", + "directions": 4 + }, + { + "name": "shorthair3", + "directions": 4 + }, + { + "name": "shorthair9", + "directions": 4 + }, + { + "name": "shorthime", + "directions": 4 + }, + { + "name": "shortovereye", + "directions": 4 + }, + { + "name": "sidecut", + "directions": 4 + }, + { + "name": "sidetail", + "directions": 4 + }, + { + "name": "sidetail2", + "directions": 4 + }, + { + "name": "sidetail3", + "directions": 4 + }, + { + "name": "sidetail4", + "directions": 4 + }, + { + "name": "skinhead", + "directions": 4 + }, + { + "name": "spiky", + "directions": 4 + }, + { + "name": "spikyponytail", + "directions": 4 + }, + { + "name": "spookylong", + "directions": 4 + }, + { + "name": "stail", + "directions": 4 + }, + { + "name": "swept", + "directions": 4 + }, + { + "name": "swept2", + "directions": 4 + }, + { + "name": "shoulderlengthovereye", + "directions": 4 + }, + { + "name": "thinning", + "directions": 4 + }, + { + "name": "thinningfront", + "directions": 4 + }, + { + "name": "thinningrear", + "directions": 4 + }, + { + "name": "tightbun", + "directions": 4 + }, + { + "name": "topknot", + "directions": 4 + }, + { + "name": "tressshoulder", + "directions": 4 + }, + { + "name": "trimflat", + "directions": 4 + }, + { + "name": "trimmed", + "directions": 4 + }, + { + "name": "twintail", + "directions": 4 + }, + { + "name": "twostrands", + "directions": 4 + }, + { + "name": "undercut", + "directions": 4 + }, + { + "name": "undercutleft", + "directions": 4 + }, + { + "name": "undercutright", + "directions": 4 + }, + { + "name": "unkept", + "directions": 4 + }, + { + "name": "veryshortovereyealternate", + "directions": 4 + }, + { + "name": "vlong", + "directions": 4 + }, + { + "name": "vlongfringe", + "directions": 4 + }, + { + "name": "volaju", + "directions": 4 + }, + { + "name": "wisp", + "directions": 4 + }, + { + "name": "uneven", + "directions": 4 + }, + { + "name": "tailed", + "directions": 4 + }, + { + "name": "classiclong2", + "directions": 4 + }, + { + "name": "classiclong3", + "directions": 4 + }, + { + "name": "classicafro", + "directions": 4 + }, + { + "name": "longeremo", + "directions": 4 + }, + { + "name": "frenchbraid", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/modern.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/modern.png new file mode 100644 index 0000000000000000000000000000000000000000..dcd10140a883f85fea83b0592802663c0f12ab3d GIT binary patch literal 934 zcmV;X16lluP)Px&MoC0LRCt{2nlWzdAP|Oso?hu13CRa==ZXVx3ZKyjNbLhq(fI&KNYwPaA{vL? z7bhOF_P*8QYqGHuGxIYHtY-u&nCCf5DWQ}C0E7@=j1e`@s$p4{9Am^djz1p%7xy35 zbf#uFwb)a-W{e02qD0Ge~Ae5 zJZG&n0NjjCB9MI?SOQ2X(f2*P_W<5Qj|{p3nspj~?>>j$oIj2+!deTZ6qHgJhC!s1 zGA#wl31^|T-kk6Ie!EWBYQ|?pz%)$)0ES@@!!QT{=(pDSel7x9Q!!U?4#I3d4=Mch;5FDzK;2tr?DkF|UA`|83y}a-p zECI%GtO~P7QO+_&;!hLuVFA9|;+%6B$MLirkW$Lz?EP#jr4VC;_Z}%F*7%17Fvf_l z)){S)XXOCkBjoR+aPRsNSWAF1{yk^SdP%v}-RGL}cWy3V?*d)d{WZh1{yw{R7WcDF z-wU{~1^5hOjJVSI(pl%+%?Z#s$9mR71h@injDFrP1Fqx5%Lq{N$gTKg1em5t#2B~Z zcnL+r-uya#AB8jVJy(P%UpjsKdeuaD2}4*=d@)0gAd zybAy-UWlZWvXl~KJy0pdejoo6Qc5?@Q@Osz29^LRrEIN*)_SWFQ?0;Sdx;2S1Mtxt zQQCA`VWh-+zrBW{28F9B`xK}uR0B(Z(($rI#aatvjHorD#s+KcCOp|vBLu5Kf(Rkp z6elSGo>>+nXpFK}d0#c=z%GtTDL04D><2i4_kMHS7_;>caC(&v3!s$RiVy3$=3y8_ zZDZ0SFvbYy+}5f?^+~#Rl*0m0hX&<3bDU%A%T$NYq6zS91D?%8J4OEmPP6e9oF`t%)<&bz zXfzs)Mx)Vq3V#3w@&Wy5!%f)$000hUSV?A0O#mtY000O800000007cclK=n!07*qo IM6N<$f`g%@761SM literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mulder.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mulder.png new file mode 100644 index 0000000000000000000000000000000000000000..1e83cd8a59e43bdb98a222f8e1d288e40a0e76a5 GIT binary patch literal 575 zcmV-F0>J%=P)Px$`AI}URCt{2+A(h9Fc1aM@5Pp?2@v1`+_};LRPz8nBTu0NsA8uB3_w7&dZt*6 zA}I+rq{F~L{%a)I28SF|EHndDSl2bL>zYFdS?_DcsiiUJd44$l-|7vzu$}2^rI30e4GTJeDS~! zOn};-_%#bBA|fIpA|fIpA|m>Qs@|uM-F079sNAd`5aSAV>P9@ z;_7e+A@_X`Yb{br5D|z7rfCB3nw%DN>}i^|xG5!AYti?8`|@}QA$#v3B8V|=NdWMs zXP||13|)MT5h4QbeQ^@1%HuIcc<;9foO=aYw9IG+$Uc_-0p5GW7!Py&tl~#NM7AKB zeJzo_#S-F4kXcOihSU8hvhgvW8r`-<%Cc58m<{m(qlImURX7MC1`MNLv#hSmVB zdxAbA#<*37LkRiY!13jtVbLG?wz)lH5}t8RL_|bHL_|bHL_|bS<^?k?Jl0DJ39$eG N002ovPDHLkV1kuO{iFZ@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nitori.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nitori.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa1ce748b2f7f5616370f65387e12e52b29e731 GIT binary patch literal 724 zcmV;_0xSKAP)Px%j!8s8RCt{2noX{xAQXjcP|>)*`)=UkLhf^!b7H5g;_e|_Hr066E1W4aCij4^1f!8wPN5@)Bw zr}bx)Qj7WIoLkJr@;r|VA;hngy-cZZj9H|Ad7k=nM*sKPA4zl^N8E0=yD@92Wvzwx z9&OvgITwWxr>DT0em=(m%;$_Tc<)c^uMR-E$vGF-24D-u7_L0{p1!qqUIX%}VXZ~e zG^h19cY(w(40A(kgOOj)h7>1!L=ay0`4#QBTjwq!r zrTw0MjZAMq9%&$wPI-KE(Ip6iAP9mW2!bF8f*=TjApUnweLHu~ z#pKp@UAOpN|7{?@6UVR!A;Ga*Q-p(sXZReV0f6mqg9P$S1x~{a= za}mPrc7sw1z~3}XF{MfQ3cUBI>$(y`R4E&kQnNYR_dT@MbIe|QtM+(K>D4z)bJr!l zQVMg1tu>};noD&FhwO17L?wi%@^pLms=r0vmsA&UbS*kG044dGzEV8#EOPBvXWvY| z|9;YzF0Jy9^yAg_06(P<1VIo4K@bE%5ClOG1VIqQPvH;uZeAI4v8yEj0000h7X zpS)m|)!cV6s~Y6}ezK%Ss?DGO^>^+1n9}R{Q+OlRUr$==y8U)*#{r4v%P(7wCVfl| zeE;Fq)AiT2!&XlX|9eSVpiR+gE}z+K-YwT=oK4f{VsaGtapiydIm-@?E!W~c`p#c) zFyX_~9eaNny%#uc*mqocN|1nHME1h1ZtJgqJ{A6p@Tl;u<;}TqdY^ zs>(jnIj!P3sejk{YawngW2^O^%sKq9z(If|V{4QIUwg*(+xfPv-+#wmGCBJAqeGww z$6Jo)SuSzfIj2=F5M7wb#m Wb$etDqwWG@j=|H_&t;ucLK6UT;@mU< literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/odango.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/odango.png new file mode 100644 index 0000000000000000000000000000000000000000..a5580c5e7c9d24a489a77b225d719db343800af0 GIT binary patch literal 597 zcmV-b0;>IqP)Px%4@pEpRCt{2+C7fsAP@!M=hcRekt}flF2Dgeh0o|yZ~!7_8~_Q4n4AqpWx3rw zv$&_-Gr{|$mfIF`@lz%#fD>x1&3oSfAja61Woa?S1_0jsR%>l%-gnj&@rN_PQ%V4U zoHM3ry1N2^)*9nDcE9)8_|{s45Vq^H@&EKT3?Tpj)^&xo7FugK=LW4cthHFz^`_mc z9peMo2K|os002q3W2)6!o22A*(Qo6&7`NYd;&*4jvMfz01ps#`CihAyTr~;a`z`)) zmE~S31=%Bdbx(j&3Z;}U+muouoqV-vnovqX&Ut%w{9j7hK8s%669547JP-SzdpT#! z^ZfG7?-*YeLHZ%rQp!{D|MoVNz|OgcLFD=WvgBDZP#L6rlE;C6wm?KgL_|bHL_|bH zL`0`6DYe!XLV$B_kUE@{ql__^R)&O}36LU)^u=0xx-@^P@uM1jN(owPq?C|z{zf8`|X-|d_mWD%q<0G=w5 zcae=}e*nUJza3Kg2{FdDUv25znLeG`1CB~5Z`=7FF~$s6mE-R`n(5!7a}4e jA|fIpA|fIp`knp(ZK{;0T%ARh00000NkvXXu0mjf8cY(8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ombre.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ombre.png new file mode 100644 index 0000000000000000000000000000000000000000..33a3fbafbdef30cd6d11931f0737fec944560e4c GIT binary patch literal 668 zcmV;N0%QG&P)Px%R!KxbRCt{2nmx{>FbsxYR$EddMaluvrJ4h93eK2Q_yAPtH~>;4>h#%SWj4e7 zd;|saFcZHv#*D_Uun{6k(=?%J8nkU&ZQbW;`@gmte|LT~M3j_L005=bF8jp+ zaLy$*+;v^WLU{dXoO84DP1At2Y_(q$0Owq?)198 z*Vj^<0U?ChdBzx1T_+FjT8!uv0S&F5R}udbfMFeI%t0HChx zhwsH069A0k_>du=fD5128sj(u`0F^=16~gy6ulKzWdK)MHq6d4x%2twKSl05qqWAX zwG#WQAAt}8US&XC*HwO3j)3>=`~K;5UN5!3I#q}$UGam58HOPN{~WyCZs_}dJ_48@ zha(=ruYuEh7=}bdi34-?kFl@dzjRs<1VIo4K@bE%5ClOGgk5a@`Np+ zcFv_`k8rE)O z-rNuY0Pp>*sgzA4GTfe0O2K=7Nh``2Q+e;_8*s{eLX0sHQHn7p=Un=R&I}PH=UmFQ z9bzaqz&*J<4Rb+<2zaqK>&Ug01fgg?0KnaFg4X(BR$%Yc);kT$LK|aDTI)IeS=&Px%M@d9MRCt{2nlWyKFc3vQQA*cHmV5v@Dj#5LAAmD*0BR0EMaKbSHTS#*k6>N5M2S^aikf=awO<`PHBQ1cvV%|{tceRDGB(?oRWa5s&-EY zK@bE%5ClOG1VIo4K@k22ecy*^nu7N}c<)0ldz`gdcbcX{+DWgm+qMmLU4QvL$DoAw zK0Nau#&JyY3ZmZ%w{07ob0DJC3Nyx_s;c7ZK?%P1y#;5C0TIDDw{eSpN^}C8b6^|n z(GSdFjNDsqM1*;sVXeh54C};54AIuuv+~R32lDn(N)_Jwby$NJA;p?Y8jx6)WnKNp z;ByU2DWwXw#^-rXnhgLBIzz)S9J%~3kMjyVC=o+)0>*L7IvTe}(=;uy@{kfha n2!bF8f*=TjAP9mW2ruRXj~hE$4KXf+00000NkvXXu0mjffKwa= literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oxton.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oxton.png new file mode 100644 index 0000000000000000000000000000000000000000..29afa9ee88118d6b96a4e8a8b20cb7103f27c41c GIT binary patch literal 633 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>U^4b}aSW-L z^LCbD*AoK)*LZ#DvK)aQ4CiFNGRk~stZ|!ri2cQhnS2QX8e!{rXBo-)^S}MHu59|k zxN8YtPKOrpp7~$E^uG3_<@7nloQfh1bBZmCr-@zUR9s_P@!mf>-h}`3>0=U}nis#@ zGJLkV{M|P8daM)2($`j3ce-zVT60nO?Xt{*bBqhF+Wpy3QWq)q;3iAM6d~Ws3=if6 zi!V@Y3D|duHRHBe!|ShAJJ>=u7G3>z$Y`d7@?nFJ>;opgM=jlZ3a{QXV@Z&4pZd?g z*W$q2GUj>aiT1ggi^MdS^6S5wbJ%jb-@lI)2EM@;c^(EZJ8`(WJoqX)+4G9qzW)-B zcXdCg{F`bq%eG_%W6_N7`%ZlQA8z7%xQx^4`Hbf?E9Wu(RsZ1p`NQtRTOUOoE8KJ9 z(`0G!fBfQ}%lclf z+3{$S;DqymbCP&hH5{?)VwyiaUU%}P>iBPrJ&6)}iY-c&ON}L45A#mQKUE#SFRH<` z@_GcPcV^&I=5MT?MsMCo);CE!zBOmcrTZICZr}Z&e&MrshRA*cvU~Cm=|>oa_r6}D Q1xj2Dp00i_>zopr0KJVN^8f$< literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/part.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/part.png new file mode 100644 index 0000000000000000000000000000000000000000..e96811a16d1ef92581c4447f8228e8a6c58b01da GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zmw383hE&XX zd&{tIiGcv?h4WcX$EWEOGU#1ke-T{ZCf{&_{YA$a_6;c~3!mOg2-R6sy<}r~V%66F zttLCT%qRR|S~0gH1ljfhpqw z%l72>_^*qfJ_&d2F>E$WyP$S%$=6`7+ilDTcCCA{_Wl+|2D`ftjsO2#Jjd8elc6Dq zYt7b(>szzeo}TqDde8T(QQXh(lwH0SH6_U4{O6tb8_FNM&-J{JY_)Ndj`!!P z*!2t_sx=<|cz5^x_seDvcYHJPJ#448|A^hJd-nhCKmEbAE$;qb7KZD7t$T|3T@c_) b{tr&3A0lS6JLc~JMjnHwtDnm{r-UW|8}j0h literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/parted.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/parted.png new file mode 100644 index 0000000000000000000000000000000000000000..8931dec647c9d3d9a5fb72a12936c1e5d58c170b GIT binary patch literal 644 zcmV-~0(Px%K1oDDRCt{2+A(hAFboCI@5Pp`2?)>u+^Nz5RL=o?Mjt@64&ch24j@3l)b6!K zK(7-_vO{g04X}L800WOnQL?8Xfe!n=w|(DR&ba|VN~!hSrx(Y|IXBLw_g;ha2m8La zQVMFV0D$}b4kCgv2GcZ&?#MlldjPgy;mEgN@@j@R1K83^7J=@E$Qn7-InZUT`Vp$V*CGfEeS$XN`!kZCh6o&)T*P zx7!WC%e#laHeI|8~*VTErMZ zM3?mmbIy%hV$Qjv5a+hJvgZsh7g8zU16;S5goPx%dPzhC_SZ-ChqnL#@HQ~U zV45biZCmA*6R|7{01Pj|qxt}vM$f))RR7n=L(?>=?hH^oc;8xURn8eHrBf%*y3e*OIr!Xf>k1Q1cZ-EKcFEo-g1-EM8Ko&}#n{p54bSe6Bxbl@WirIbVZLkZxC zd++}^F!!H*2Jm=%825?juetw-{!juK=bUbsYR=&?B=9RDx>-Mqm{UhTIXNw&n=NtgEI)R+?y<&w+-a^0nSgWfN;W+Ub=Xvfh z52&>U5h2D1V@$KkIhcF4_1Ul?3gBA|F-8y(wASZaWc?E7rM7Q@FCYI(daXyX9N7v( zD_~t$l~O_o0i_hAlv)dXuM>E3Uc>CQ`dCUS2q7S)G<+Zr*9Wi@3w+tpz-tPl9?@&} z7J1Hj*f<@o4=ANTYu)a>lNH^^qP1?8`RPL5`?{|W_?H&-Ui)5rr*pZ$U+~Vc34$O9 mf*=TjAP9mW2!bF8@4#>RMJuKlfYY)70000K$Ihw9>hTPXqrX*7 zb8h@=(D;h|#sP`RNj;|%dpx7(ZJuhVX8Am*$I$Y5+^PSoIIl*jGk9vUzW-aKv6Mj} zbM0(ix0(D5_o^8(=Ij5rXi!IsN{% zKUYs{@G)I$%J87TqU8L!PrGCGPdBCe?^2fkLZGWcA+GS#t?eOczKPp`jEdfqNDZI8gAPmdH^%zhe8%68xK?bq7# zt8>+r5a3nZ&YxlHj{U4*`w*?1t7yh;H{kMDKAEp<| z?3PGAb^5`zD4xRsf7h(iRKD!5wfXpC!R<>wOxqe?bZ+S;{jJ`KU*#62-`n&|>ifbf zhEGwpA9ff%oU5|?>b@5C`7zc1pX?JvfQ#ur7<0b=)sTDA)CP=G22WQ%mvv4FO#pDw B?n?jw literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pixie.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pixie.png new file mode 100644 index 0000000000000000000000000000000000000000..3cdb4b3cf17edb5ef78058424b33970421a5347d GIT binary patch literal 578 zcmV-I0=@l-P)Px${7FPXRCt{2+C7e|Fc1gu;pvsGkw%&W(52!4seJ&>$N{K*0IGC80Fouw?!Cpz zJeMHNLI@ONBx~*Ii;z;v%d&h))Ru8*7ebXCJ{Bj05cZat$y!V6x}KUM^WNumUCCNY z%v_B@M2MNySt@mQSVU-DR~pB$%Fi2Px|GtXDKZhMDnp1qYXrt|+{dJ?Q&63N7-Kc* za`cN*FQ6KMLg~N6h%r_Z-nLC$B+*nMa$JaMnoi&OS44z{Vd$K5xn<&o>I59~@6Wsc zTb@sWwnjj;07U;jH^;Z_@v*qdG3Ki=UGB;n0n{S^0000000000001=k05oYqpU@xa Q7XSbN07*qoM6N<$g6}C1$N&HU literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pompadour.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pompadour.png new file mode 100644 index 0000000000000000000000000000000000000000..ac83f28dd185fdb0917e05bad57fcf321a3a179e GIT binary patch literal 477 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 SI~AA!89ZJ6T-G@yGywo!={Pn3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail7.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail7.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1a80aced2fb7c44f9db7a04561968888e6a49e GIT binary patch literal 765 zcmVPx%w@E}nRCt{2nlaAfAP|M0S6ik=LgE1KTyX%O!e`_FsW||ZI}U(^MD3n!c39RM z?;l8#*nf6-hd9g_gN{05CZ5pj^jXM0HBn@<#HK%e!phhwj4qLfD*%6 zo28WHJ26Jg^V}8dTk8eZ+CP$4N&!H&)@GW}^?Jp&ZMkPs#I|kudc7jXSYiVx$^VQC zDJ6|H^S$)~3LayGQmP!i_ZY_!+qRX$P!W1o0wq69Q%Q6jM|kf6{7Rl;)hnWfrWN45 z&vZ9v$aC5hV6yadaSW-L z^LCbD-(v$F*ZOUKxeg6{6ZEF?Kd@r|AX(aQ#i~KO+^T_*am~%*ZpOV)`Dzo?!_pd_ zW-rp{vv=(*`^fo5WvL2-K(a{MG>OGiKCiWm`XBzb^^DFL9jmf)j0|&%HJ+E&n5_Nc zU#)j7XLW_=IY|Zsp2O>^>$cZ@<@C_x6kPkrGQHw`c;a)JjunxbTQ05lVlehTCmDM^ zaUM|ox)1;1f=~C7=cSj#w$Cx{(`$DBrMmt_xV(7Uw9Hxa(!6IbTb+cV_(E6Sw|HS6wJ4&*1_kr6+Ub_2hnd zc%74UDf!X7;mUPZCWq^#`me+7Sxg1)_UanCW&UIfsAZ5i{?WySfkEkzMc?xB7t(Es z63FP-f47(C>)rbgEdJLJ{$+J9%if-~3YhBac5xjgZ&_%#B9H*HxPZE0fYrdjG$yk$wJ>9ioBuMZmgTff)t@4LGG z`u%7Jmu&wAwMFlLm#+ECTBGIy`Nl& z*z#YkML|Px%07*naRCt{2+C8f4Fc1ac<6FBn2($oqsKw#<(4SGyl)kH^dl=wf1n%T8kLt zElF_B6{QpaKx+*EP)fl$*M9!}j>i~F&UxE`JFWzoN9LA89@or&=?YLvVVWi=r7(_T z2dulWKi|^(&Zm?Pk89>XodEBB2_aw@hAsHM?>hh($FUoR0U-pmx(Z^9Wm%Rj=y{$G zV@e6jvRu9uPbc8gtoO5Lu2E1M`ypPZ4^Kv|2 zmjD3UH@*Z8pelIaOA`R#@UvGNJP{EQ5fKp)5fKs5f2R8Xbg9q)Yf(~by_LyY%Q=^Q zIjpuS1XT0~0Bi8Z7$~K--~lu%jPA)CQk7Op!5CBBA8}y6E+(psDc3dhsx7(#bPZY6WD?rR(bS>8M59uAR-`OQ(ew~nq~8z4`H7-@_+l^tibZf zC*_Ngkg3qbIYFnCCPhEDaB|sX=l<;Hn!g7ur}rApE&kH z@96qChGd?|Y|R!2MHVHcP1mmZUG{nWz1H7lOW*c_b8n~3=}38gXX)+6nb$X6f4h8f zM@rhdzW;&04;t|JpU!#zcV<#g_SMSw=E)q5Nj+DKPkC0XY6w@o z7Sv=Km%DNGb_Jj>Vc@|35HqdQeHW&FXFav^`=k4ZEVsWrw`_`;=aMOY{wwB8o_T%8 zEa&X#HM?e>I8!O(9yKj>?}C6!b+y+^mz%|vGR`}CIcCpy6W`#_JFmX&xMWt!(b$$) z@#67b`@hdS_laMr-rpJetYG%1Nk`)E@@q}qxh1E08P|o=0_8DXJFKQJW8Lxh%HP)V hGn_Ez0O<#7YZ(0wsQy?Nx!DRN?CI*~vd$@?2>_s^%nASi literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/reversemohawk.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/reversemohawk.png new file mode 100644 index 0000000000000000000000000000000000000000..bd21b9dae089ba3b8591bbc36374df6e8e602678 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z**skwLn`LH zy=Bkn#LC@=rOxZ=e#29Iem{_k~_!ggzJdM)6w7_rfc_fiR9A1&nk~w-@BG@|NEpR0#2KGm6xh`O0_Lq zwft55gQ;za8Aa!!rafK#aLS}Jm&y+_zP3pupS1LzbgZzZ+oWvw^b4hTKXQJ&I9=ge#q-UKFjE-xzj0c0 Vcb>W=&X5ff^K|udS?83{1OR$AlH33Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ronin.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ronin.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5146d88cf18c626076ebcc5cdf6ac014698b78 GIT binary patch literal 553 zcmV+^0@nSBP)Px$<4Ht8RCt{2+A)r+Fc1ddpQl$+BU$1AbezF;4!{|G0BR24DxD92WQlruZ?on( zTC&TK4dO}v*F;8vnK5?57&u5oQV1c5NILqASLE0sgqPy~IdYSTB=0={zpyV~m^EHPkEMS&?THUoQV#a9Q|w+vAy2mhEp6 zku=Zq!;;VAv$i1-5fKp)5fKp)5z&82^&LHblkd6?&bf!i#BSxBj+F@sOuVdXSd5am&&6tdHlA3KPYo3bJ9FRwFR1{0r0OY`_97J?BPO1PRMxv3_g roarmN+R7v%A|fIpA|fIpBD$Clf5I`w)M2|A00000NkvXXu0mjfu($xC literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/rosa.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/rosa.png new file mode 100644 index 0000000000000000000000000000000000000000..25fb89be19779f74844c12e56e30c759a9809937 GIT binary patch literal 593 zcmV-X0Px%3rR#lRCt{2+C7fjFc1acrywP30t9#fcB*s$*FJ#Hr~|0x0aUS@0~jE{nmtnl zbYwZ}6_u5OAnyYVL2H|DMEw}pA@HB;_I$~EUyL!2{TL%Im&>lP{&xPi)-U9oi!lb) zS^$8x7RDIloXeg9_T~dW4;;WB-hM8n^tdd)T8t4j zzh>O;_ow}o5}b3L_kQyvY?^@O1Ez+q)xTdZm!<-?@ZOhN!)N)mhOJ{aJp=l_M+gDy z%S=Q{2myWHHy5x)9ZzeG5CVW-2VA!y1Zb_B$8MSc=Uk_?e!0wJjL=%cId|w!;qn%& z6H&M8_qRIjxBDxNqz7h=_=Yh=_=Yh)%Tof9c~mmcH*1V}vp0)HMQi zeL&3)A)MP67{{@Q$fGN}?9LvYz3vd#I)2wIIi-Mg%lybfmSZoo>jdmM0nIB!hG9Tm zq%hAjhGBqG>h!jhQmR|la=l)6jngy%B2uPldi$9p@5Ogx*OSqzxjPIzcVR#3*PmgT zol?RyO)stc&wSq-zFe^(BIW4T_?n26Wertp9nH^xdKuQ>BbUXzvpo2^Ws97Mh=_=Y fh=_=Yi0G{!8}Xe-ep*g300000NkvXXu0mjf0wEom literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sargeant.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sargeant.png new file mode 100644 index 0000000000000000000000000000000000000000..5a071d3d1bf288bfe5a17b8f78f334a43aec0608 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zy**tVLn`LH zy=Bx-vi7b9M{dL!``{`1bqUQhnnQ8he-L^quaYVLjw(h-ZLBWsr zy01m8*(#K5b2s4iFMHMAlGyKC_m_QrzTfoxW{ss!%68kXQQg#kz<|epc75sIZTs&P zy}Vxj%KpLJOKs=ncB|#D-Ih6PUf*qtzW+t~Kuwiyt?>^9+bV9P;ywo|=JU4RM^LJGoiLU|!e|5=6|4-X^ z-fXJCq0ASt_m9?mF6Y(g`loh8gdgYvAkY@Fm40*X`Luawmv+ftZCJ?pHptgQvc8D9 z=zh)hJ2l&io1W|0dGjUPYdraOdM6`T&xG63xrhBk1Wqj60pfeQ`njxgN@xNAToq>? literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedmohawk.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedmohawk.png new file mode 100644 index 0000000000000000000000000000000000000000..8395ae19e120451d6905bb505e1a22b50d8fb55f GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|=6bp~hE&XX zdvhb_VFMAC3*K4%4@_+uj(-)AJHVa6&@3LXK17o#Q>p3kf$H8>>xEbRigB7Bzy85}Sb4q9e0Gj++zyJUM literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedpart.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedpart.png new file mode 100644 index 0000000000000000000000000000000000000000..8fd7cc031baa191963ea7c4ecdc0712399a8fa9d GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zlRaG=Ln`LH zy=B;S*g$~w!v53K*0J+gIjox){G`XOAzM~qsYJVk@3(IGl!{htDw|j$i$G;6Fd3-7N$MlQ)P}{t$u9r&W`g} z-P(txTb`KbH~M>PGBU{ZAHTffdbFwUfv;7y(Z6)RSHJu{J@w$N9p(QreJ+QT?5uu& zI`F@P3j%!EUs@XE#KC$XczK0HTkLLQ%jb(CZz=4J(R=0-oF8Cqe9kiaUD}-D*t?3C z8944~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbangs.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbangs.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a999c45c95cc28e2535e0261c78fac6e8489c5 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zk9fK`hE&XX zd&{wFje!8$gZmG4H;c8%9N?~C@P8;-+-23EU2f^1FroBYW%t5a7Wr&enOoTJ{dc^) zr7QGbR=$>lx}fI0-%3hLzsszzh^~DebJB9Y-M!zB=ImZ7C|G%A&Hn1<9~qW6EW?i# z*8Jg9RA_0CP(D_8YZus{;~oCjUYGs#QR(EiImH{VF)^&!`ro9q z)v9J~GOmjA2`@bY0c?ImM~Bw|P5X_z>*XVK{H!>%Y2rJF~+DCN5f^a=ukq5DqT> zUtYan!Q&U1vlwd5J%1+^(BZN2HB)V{;sRra_q8jRZ?am!qnI%7xwrF=sOZ< z>fB^^`L(>B7iDVC$gttPb;IYQQps$|XBNDFCb}%M>dM8!J>M4C#;%j=-=EzWvi9A= z^iH4a!V6ljmCD|eZ0ZpC`+a}*M6o>mZ%gjqKytd^U%h%p{cPQt?4Q5c03(;d)78&q Iol`;+0Njt~@c;k- literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbraid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbraid.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0dbfa27746993eeeb78628889e3abe228d77b3 GIT binary patch literal 708 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortovereye.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortovereye.png new file mode 100644 index 0000000000000000000000000000000000000000..c7ae6a37400a7d543af9da32089f1d8b186b26e7 GIT binary patch literal 654 zcmV;90&)F`P)Px%NJ&INRCt{2nla9!Fc5_wt1YRKEO7vLR6aoJ9DpE&NUrI<#mb0f z!=H?a`IFuG8c;}hf{0$S=M?P$-^DnN&EBBDD$jq8{Eu&Y6a+yK1VIo4K@bE%5Cq{NMK2Mz z{ycy~9zB<}6@Roxfc;k3d!LLkAR^==@Y|lMZI5UDthtWC7*oGTVeQYa`vlhg0yW>z z=6i3o*D-PRS;oj$_ILK{&!BDFW}fGC&l2Za^hL%95g~-II5WnWVt>Ar+>?;)`s&_b zURrwt&5m(RcjnQ(b8MV4csc=H*DW(1V_X`fwARhpv!BsgH@Qh`9UG?%*d?&u_4BNs z*&??^Yu&6L#auqh9Ie6A3D~-_-#P1Bwy|(*^P&~-jy7~@OzaMk+Ko_0sM;g&Ngn(s o#VQDbAP9mW2!bF8f*_pDFEt~LcxPQVTL1t607*qoM6N<$f{`sZ6#xJL literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shoulderlengthovereye.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shoulderlengthovereye.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc3586c45f3dcc77f83d1149bb6bcba8f5ef627 GIT binary patch literal 598 zcmV-c0;&CpP)Px%5J^NqRCt{2+OcipFcb#hUukW(Gzf42Lp=vjtpNmN18?LF0#2a;Sh-Ve5Fnu1 zwV5KJAS<@+$U7+k@_&tB88Y8{q^aT&_~nY6huXFcQc8I5A*F;;3ft{A>$h@rT^E#6 zu+~CK2>>`84q4;Bq&_fB-g^({9In@E$O#~4d;oCHL2C`~{oVakNd;)zHpD@-*2Dcc z8(r5eS_ETEh%*j+6d`_=QoM{V1NoB(oIYti>ToO9^=9@g6I-%2V#OnRDp)HKbaufnEjibtye_?Z2r z$N%Flo3jh&h_Afqm57Llh=_=Yh=_=YX8o7*0p9y{8WW$4F+m7{X$;RAHgl4DgT|N; zTjQ}KETx1HVwJ|oH2HBXi?_#(F`=$&IOm|08oI?wsi6o<6GC9W-ydU#cpOVz*U3dl zUI73WKL;?Us;Z(a%hTm@ImT7+FEJ$-V0uPid{|YZpUd%sgertXo-)L zUuzSL%CbC7@1_0?lUKm`d>*df@dlWZQr^XsDr*mjzB~EV#T_>GFX9rXQYc zaK4yr!@Y``-r0ZpZ*gzAR&eg11hb-xddrJ#lP#S+_gwpR`{TnPubWY`gT4IMH+;97 zzPxx!<-B4q&FK-EOKr{AIw~{_2*SX zK?Jxs@0nNEcf0)8pU>^QtYv)dmJJVc!+N>KYyTQvJ<=#xFO;8ecdR2(qM)QyVn=w# z@xqvDrYS)khDqy_{z_lv^w4}Nz%(tj@mf_aQ&hIbQa;__$n4EQTuvS5B$_3Zw_J;u z#;Vw|OvPj^!*iKqg-1+$8Q%2*W#9Ff%@kT}lIC-{rBG(J_K~Zc6*?2At6viN>)X$n zuX*2mErX`26UT%gyT4^m+;*6MTfOs-TPaggPj>FVp1uid_x??_p1#RYZq=JFw@>~_ l-S04yy_%&10qVYR&gSNOc#`$L1Tf+mJYD@<);T3K0RT!?_;LUM literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail.png new file mode 100644 index 0000000000000000000000000000000000000000..60498b9a45ccf496c75e73b0d76c4fff7181c639 GIT binary patch literal 650 zcmV;50(Jd~P)Px%L`g(JRCt{2nmdl@$S zo)I-)X~Zb_J?3C=mra?QjTs~^WXhvo#Nlt6(Wan3<&jS#{m zyMU^DynCMgZlNgwpJiGpg>BnvRbGu!3MnPfaie>Pj%17xDW&Fhn-cKZO-q4uEAbWH zdkn*XloGu6HE5+2y!S{cv0kF)BVdf_thEofIaTNi&cS)_@5XmN!w(4|lxKI;G(2!bF8f*=TjAP9mW{5V)*g0;5H^IYd7hHy3dRvt;@+#ZEyUBFsf)^!E& zM-C%ra?Y238b3ZJxG(tL#>$<`i({W{aR)Yjpf10N5 z+!8Yk1Iv+C&J7vQcH~>J);8b5T<8_}uDzG{2XHPT4pjN?R{W(2`0H&dKM85b5ClOG k1VIo4K@bE%5Cnn4Zzzax^a{*@-T(jq07*qoM6N<$f-T4-kpKVy literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail2.png new file mode 100644 index 0000000000000000000000000000000000000000..9708672a6f47575875f7f2f94b607b7eca5b4f2f GIT binary patch literal 636 zcmV-?0)zdDP)Px%Hc3Q5RCt{2nmexKAP_~bM=vC{gyaQ~Ibs1FvjDG=Rj>deG8SN|Bx2`GG9cTp z-v_$e^Q)6swqy#bpe*^`0Ud1Hme+Ny_aOu<%QEzg)q`^`ODXF;5#e^bb;bYD`ogwt z*?WI@HqSGhbGc^%t(+GR08+~C_)Q6jF=p>Qq?DMZ2>>un6Nm`ECiT)JIOnp~y2jmK zwborpXx;%O=(?`;sN5<(Fbu;m48t%C!!QiP{C9MT3D(*?&-3BgBN}}x_ayROk3zF9V6Dx@7yvlvfRAYO zEu0r$=3tEJ`ZeE_0Owpb##9ls2$V#$PsYoWP&^3$AcO!B!Fvy5Omh*MwoHsM6A`r5 z2US*UU8QR8{Y#HRvFA+F1R+HAB<#h~7J0t;2;7sPg%E>MY7jyUDW#Vlg?%jN9JJP5 zvUs7(AF!@#4SKHjl`3uV2^eGEsm0%=OB^Ml4;Ol+MtJrlTxO6cfs|51jPbDGaU7c` z@d(9}Pzv%}eFE0ne3e}ec#bFG>HdI68qz<(l|6tx2@Jz948t%C!!QiPFbu;mjr;^q Wz)FVj#ja=o0000Px%1W80eRCt{2+A(UxFc1aM?~u~9K%fI`x0MdCr|=nl3LQX|Iv+qFaIM~{#u=Lg zEGISz{MUqqjb}8HwZ%+_Mzz)@=e&M)&H(`WzVBL}byf&r@!mt{QA)w<^=i(c=^tvX zONo1k}}h=_=Yh=_=Yh=_>(ol{K&=@0B%?|na=v7Z;X zlElzmYMs+%^8vuN^(^gjJtP5OGdc3x_Az88V4qiu<~v}X=gm&*i|3Ac0UblfE~T7m zk2e)Sx1MEQK)>^M3`^)3GMDgOj+c>(W*o=mue8k1`~v*gUs*g65fKp)5fKp)5fL5o Y0mF|mPZi*QhyVZp07*qoM6N<$f=d4mK>z>% literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail4.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd2ac965bf5edcdb90011ca9eb549876420962d GIT binary patch literal 747 zcmVPx%rAb6VRCt{2nlX;+AP|QCyxO&;NIrl&S3W@M9KdJf6dZtx&Idq3qNe8+tFdt6 z2sE#8a2%QQ`=5CYn^T_u68r)grx zXT1<(Oik0U-+MJmsm)?nk^mN^mG&pYt^w8e+Jj*yprq3NWLOEPz0dy-*a~Rdw#GQ# z2PuNTtOyE%AP9mW2!bF8!Us}xj7%1Fenhs%qc4e{yTjxdm&9iuh$y9&FHa6F@MTbx zdh{G9`2ZGo*g1!B93T1x&tPRtDV2s{*tElQo4S?~Xy(25*irzwL>z;Jr2w*|9x1>W zQ}x)Kyun8bu-38`Fl2_ow`ylG@Z*ZXaI+1wjx5K@bE% d5Cq`^`3uaC_yRhfa3%l%002ovPDHLkV1hRVR(${f literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/skinhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/skinhead.png new file mode 100644 index 0000000000000000000000000000000000000000..c88a9540c632c1f141d5f8b9ff2d488205c4db13 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|rg*wIhE&XX zd&`iESy6!Xg71k+oudE7OFp<{igPyhG$-Hq?&bK;{m3!PzV6+wW?%2ke;k$l)-*o7 z_TPE-51KXGTvGojM?I1Gw)V=qcN2Xdd#>N}@1|3}!`4^k96;lN;9tOx{DMF8qyL&u zpE}=6!7zA{k$tYiqF-z-)k}ChLL@#<=goX$!@H^29HM^JUPj?1wwd*L#jGF!Pgg&e IbxsLQ0JJhwEC2ui literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spiky.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spiky.png new file mode 100644 index 0000000000000000000000000000000000000000..e9aeb7e440ce287a0f03dd071b6d55705d728690 GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zgFRgwLn`LH zz2%tKV!*>1u>FzS6Im-~5@-CkI?Z7_71 zo3+-?;&a6>nQBvYk z%=ubTQ=um`art6Vlc?J-=GT2MFinV@w*9Z=ZLV;wrE~IXzKdxrEty-tHR#m0Cz67N z&&$mp=;a(tm;V1n<3GEh+uUWHE-i0<+}*|k^aTtwgl9becxKJFy$3{hTBhf^KT0o( z-R#J{y|rCHPr6U2*0=SxTg86Cg5KlK98-c8l|5A2RBK=udv)C7wl;y0r_}zSX$yeW9sJ ve!Jirw)2nf>hW5?=rd)6IfjAZz}^}rj;wD#y$!ThfJ8lA{an^LB{Ts5Fb=IA literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spikyponytail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spikyponytail.png new file mode 100644 index 0000000000000000000000000000000000000000..8f439234daebfe457f3613004c4cff22279ecaa0 GIT binary patch literal 796 zcmV+%1LOROP)Px%)=5M`RCt{2nmdl9Fc5}+Rud8pahJ&H;Eg8UUPgnCBVGvLwq-_E`7^ zoO2LDY|7ku1F0BeRw*T{wVMM-AEi{@2r$O1)>=5{Af<#50#Zsi=U}acF(zvS7-LqF z1$-C|yuXY)@{=4u#x_j@Yb}&gMOl_b(=?k?auP-y$s;ESA-2>=A=&|ye?%B=q{Q7k zjDhNl*80KGB6#(G zZpcWg_+LGI{kjw&lv2e{MBRaBRX$hs&rNa!oSnn3e*Z7opSW_L02zj17=~dOhG7_n zVHoE7h`v&$Yp<`~!{=ZahLvuJsdpILDUN!Gy0T}4?eTFOvpZ!NhPCUuLu2GjuNWsJ zMSyc|8;S^f^!qk-u1S$;npSc+fP)UyB8xR1h`bgz#;jUvc<)hF)v58+6%s;V7=~}Z zB_4)h4WkXfgAP*4ZDdDl9eq=MyE7Dq9x0)eD(>{?Q)JRi!oEd*mnaA9yRZ9@2R@1p zH7|3pUpq8B)QLLCF?{NPvw;Iz{A^SuXAun7-pf8SIA&NPDFwpz^p(&YPU!o-xOy4D zy{-9E2ka|43CJ1hsgN#v<70NCTSc(%`yv!Z1t~}M-$OFOBDmKlg(wF+n*x1>li-;S zZQDlA4n#TNDwO_ZDqP9_iLu>{@X(QSTsB<$)7@zCx$8j0000Px%tw}^dRCt{2nn8AiAPhibUl$y}rE>%hFejR_$@NT`5`Qp)0U+qM<=J-OwxeyEhPQc3^-&{{9;DGY%fNBO7&SM~=-0VyTa zbq#f0gRe{qT={ifgOqaR5fsPSx;pTyh(Q%Ow}Vn2-%{hLQI7{g61|UwHuMP!`Pq)>>Ot zRTl3MLa^fiGMs2DrfiG=w?30Zg16f(`x+3FORfPi4?mYQ0EWHOG=VV&rfGtCo{x_N zbECBeV+?4mVV>vJ^DqpocV5Z>06+2mFbtc|R4%um{gw9O1ZkJ^0DyHz-6MHEjWTg` z7P?R<6bk ztHXzbH9)s6w^b`lp@R=*gs3_Mp9PXtW)G5m$-__BO#Kr5mOhke!1e%i zKQ|GP;+BYCp~jRLm!K(txw%j!V!*J=`YaOMd1zIh@;SZyyM~y#aP( zt$i6`r8o?|nr2F=d{ZFB&Jepi|MpX$7$CO-xp{j7>?UQ}i%SWFzM)*#+iieccK}aE l&U=EdIJ0hrLZMJNBVQuuZBINhhh6{x002ovPDHLkV1iUDNxJ|5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/stail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/stail.png new file mode 100644 index 0000000000000000000000000000000000000000..db9f7b439d9343697ed638ba0eb0223ea8722cab GIT binary patch literal 813 zcmV+|1JeA7P)Px%%}GQ-RCt{2nmdxCFc5}+b~e~RF;%M40mu|_0Ae3t&Zq+r>i~+#bO5SUrI=hB zxS9dac#UM?ef1Y%gXxD_4duUq0=)O>SD(+Orv2|FKT=BVjD`^4y-!`&HKmRm#af%T z_LWkY=ehWP-*SK8y-&_LkZ}NzQX+%^W6Y_QV69D3$~9o66v&rS+gU4Stxdo+VBos) zecuBBoOA2(JkO|E4c_~-U1>@@eGVZ&N{MNj@c#auW%uyK*4h+fgw`5e*EP$sq+jcJ;2xm*C?%cSHaKg&^LOxgywEK33aAw*-0NtB$Nd*-mMKw5QR zzZHgIIHv-RI7behkpyE*YTI@fG=N=&VXQ1H_<{WZY@6%){PT|*7(zlEOD48t%C!!QiPFbu;m4D%22J7)xH+AjK2 z)EKjB^xpeK8sRJc6C@kUvLv#vlq#0TvlBoXopWy0=bUq^RDR}+fH5ZZeUA_VwlfOO zIkatCWIKC4pzr%nx;#O$HJz`e4{WDF#&Lw!dOi1*N}MB*9=?#A*bYU|e84aayLka1 zU#5P_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept.png new file mode 100644 index 0000000000000000000000000000000000000000..bc079308dbf8c1a797299094c501d169c755032c GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zcY3-whE&XX zd&{t|*+78x!ue}42PSn-nHKb$!P52Ii{Ju=ES2e+I*NhIzlR-`n&NRo+FIm)sA9{R z1pZ|bLEJ%;k~9Z?@Q3;DX&&p%L~w$P+*mC3*J7v-zoFJ_sRP vSVQl7-LH5mdsSzPx$<4Ht8RCt{2+CPfxFc1dt&&w-a3k*4cyHq+rPT@296h43|cRGM!z_og9v5eQr zOBRoa#XjEmgCO#U%xJ76kQt!BIF32Sm{UqQ#+b)(%q8zrY8=O$Qrd3S;_o*;P1D_4 zqY#gUe_TuAe^_4ZoP&s9Sr!1eTSWxUIct0qjSt}IS`z<{<;Cl|;(EQJ@B8NQxfo-f z=h>WqHNJBW%d(*BIsib|b=!ql*VX)6m0h=_=Yh=_=Yh=~3(=Ks@Uj9Em`bscoQTrLP9RO=2+)0DmUTW@fm%d^Jq zPfWeRlu{NEc<-Sr@YNpo-ea1k)0?FG%>%g0MMTVv+QS7%Ddi9Xy!X&`-<<`@`*Rli z7}_D;=M+LP72$9Jv?HvQ*97#~J$8)G)V6KY_kE*BUukZZT+H(UIs~yS%XT%i;x&47 z8bf2Q>$+{cWI)3_A)@AaemN~tgI;BwOwsX}(?5pVm96oGca-LG`jFIKt)ILjs^?OB rF7Sxom=h5Z5fKp)5fKp)(J%7}1e|cGOyRgz00000NkvXXu0mjfwFC>^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tailed.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tailed.png new file mode 100644 index 0000000000000000000000000000000000000000..b957423e4c5d23f8210df84b5e8f2ca8e510acfd GIT binary patch literal 1167 zcmV;A1aSL_P)Px(Nl8RORCt{2nlVT-OAyEZE3XmMlnGcVLXJeqAskpLXeoiTSDMo{l@LkNM50&; zR^iT4u@Vb=ON$e^=tW48s{~VO5JiQ|D`d|k=6lJ7OMLISzvj5TWM_6}c6QlWhCbNb z+@$yScSNI6Xqv`!T_?wJu(Pwn`svRrTU%Q+GBSeg?QNFJ<>=$%1B@{g3I)&dM|%CC zuImJR4PI5%miE`zSESQvYHstBdc95nkjZ3dd3hP}cpTYmmR46+kw_%4va*6qCPM)5 z`1shfd`}kBb)CxPGE`NCBuRLAc|kB3WTt7-(a{k`M@Io*V3AO-*U2FI7=_D!`~1ptIX zA=GL$H{y6SRI61a5((7nb*k6v)Je~FdddNsrZGv9@b>nGY&P5RH@RF6k|epx_?ZW| zC-3j?F*P-X%gajupLwTNtKsbI46#@Y0Py_$j7p`_(Mg@~G*?rp6vg9lEG;d4`(G-R zA^^ze^Ef#jVIc5?$lp!Vr1SH0-`D*=Q7jfIolcW!n#7YG0Ho7t z>L>5?6#?x$JUsZ(O;0e!TBcZ~QgOfa6M=mhpnd%vChP0#3;?dLuhIPMclq^ffOaeY zq%i+_<@tbzp zkx0Z%guUWv3IJc#S>SUsV%s(h!=Pd20@E~!uR=iU{==(7d{Npk44R#t#lphEz>Q#< zCf(fJfQWoaz`m5mlF1~yySwu||N4b7_M@xM9~p)L{Fd>bE{^_6e&RBQKp+qZ1OkCT hAP@)y0>S@^zX2FK9q6418zTS!002ovPDHLkV1j0{ED!(y literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinning.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinning.png new file mode 100644 index 0000000000000000000000000000000000000000..962191356d2b78cd26b830f148155236e57e43bc GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%ztvp>ELn`LH zz2&&7*+8J-;m5VH+{|(ZvMadG&j^0PujZ4>wub=|b?)zA2)^&76a2~OOWJA2Ew-|61Zb8b(&9)C_>tHDrh)heFD z7v6ktPs|7j?J-;~b}&jh^y|C)RZ*cWkE9EH{%!x8{^?$Kv7gJ6cgw%;`!RDl``?^n zGj5dL?XP{m*XMG`ob$&;6>jd&GwoysdH@U_>|dFuxpZF5{qL3fTTh)Ab2^c`@rvB~ z+;d{(?XGzzm#=$cbG|a{L6;P{KH$AQB+}v9%@BgaR zsTL-K)~*cIn(%%PLP~Xf55McUoy>okg^b>@>SBenp!t6`onMo?R=Q z>%=iTu(IV`GgjvhZKi+#*DBNhXuix_1$uDn(zvHo- zK1)_B^gqMPS+a`zODpx#-?Ogz*kj2EwYTBA6c% z@JjKyr4o<#%_)8v`~CllzXzjcySV(?_x_XCUyXyCU|Lr}t{p6jQhHAWr zKZx)vp4g;w_2-^g#!a8L&h?Z5IvxW4pM5zkD9^9&@s8s~t9NacczjRn_BLOay1ZLv zscUN`{B|U{Ex2>oa{9Vi-W8uNo#j66y(08)PEoa0i^6A{{m)*C&MD4}4L_Nlbx-qL z?#tEBo9ZT?FG_P*T;--w{q^j0J$vuhfisNXRj9!%EYOc{{;)agyN+oQNXXOG&t;uc GLK6TUhNFc5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tightbun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tightbun.png new file mode 100644 index 0000000000000000000000000000000000000000..03a4862ba35b34a4082d8c443ea55491abf08238 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z(>z@qLn`LH zy=9npSV4sC!Tr$l4I-NC3CW)ri@N4a3@%_$GvjM$ney{($%+lHOs2lM-V*idziyb$ z!T${HtPD%%6bnzBR-AXsuI_Q<&-__#iY;smhR3eH4|G{_HHwj8Ygk8zRsF5o2deMS zDc*2RFSq!d?$VamUw7@c&;4hc`|q9p0g260HVhHj>d9yBtqZC0TPynfv*cgz3(wxq zYdHP%Q^B^Ltv@!N|XIo)^L7b~_rn-i_)encYBt8r_Y z)J7r2mbA5Vy);)#%_&~hEj628XoA>*4Rkv5-#yy4>bN#$?8O*MK z*=M?jozddRgU0iY-#lMbgn?%t4i|P;7XDcWnfYloQB~gC@e$3NZ1`K`% MPgg&ebxsLQ0E3me!2kdN literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/topknot.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/topknot.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd5fa43e75b37e2414d4d5a6b4a1317fd51c226 GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zFL}B+hE&XX zd&{uzv4RNO1N+sQD|Kx>VwxzURfXZBFK-nNB!3dFsFQ z8&ghxIKV&adxPJ(okC6;=XPGQK4$F1q53?=iNpVF{fnO~^sJV)WX@t>c>Z~3_8K|M z=S&RuswI*c7`#@l`&qxWPQXb+iHX5tt{($~;K9xHk5hBk1^6R^nLH?x~COgY}-rtl8>pe$X=f z)t>{^x2{K2o%$U6^kZr4e=Yax&srwhGHEVtcfBx0=vwJpsm(iW_!v%aN|>dlv6N5V z`?B)tE%L|v44pJfXDs79y{Tu`x46HD?XSvy^XOfw{(F}Z!;Syf{!b6@YVAOPxa;{B XxAPx%bV)=(RCt{2nmvx>AP|M0Hzr0x;sDNwd;m`2Gx`)9fQXC(AR##>XMnBE?3 z!!(}W-TD&R{lhD8K_kCfFhD7#rj!sufH4MIYX~8hk-olL|Hp{9_a0hnNGSmT-g}f% z>PP@1`YENGzSbHkrD6T9S&K2&oHMpZg=$?^6s) zsc!wJGa$xTLkLhx0RXJE3yE#p24f6D2#7IG$%K1-;Mc$jr4&L4aL#q&DXKgRtdw{j}VTyhB{tVjme{|i$(-UB=U8IzMOz~M0(e_JAf!2M_ z8A>TgDZBNb{xa>pIp>EW$8pqs-=}B6aU4}jiSs;h-x57>bOlV}BfIS@IgaDEEF7Ku z?jO+-xccxji>^(ulv1_U2qF9vgCD{4O>B4*Uv(lxh;_`aI8Ji@a+BXwYpj!j*La_mkUdQ%voRd4{13pn9O3^R$wf zN8Il(R5N6Z=^i-IH397%pdy7?B{7ensx*T3gVw6=U4maq->d5dC<9)(&kQXAV&C_L z4kNSOV&`1F&wy{IlrsIlzh#Ebmoh*Iv3T!cjQKw^;OcsTx61%)?S~>shG7_nVHk#C g7=~dOhIxN}0tW)g;rKbqX8-^I07*qoM6N<$f)YbS*Z=?k literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimflat.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimflat.png new file mode 100644 index 0000000000000000000000000000000000000000..750e0b51d870dc29ab1b4a26f39e5009f334ff5b GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zr9E97Ln`LH zy|pp(h=Ih>kIS#D;$`DsU~1Ev{zXLU0QVgRrpBzVUV(iWZ5-%p?a!whsc1T@rVtngngx>F_h_A-H{ZMl=TmU-DvFV-tfTYD-Q+ r+d6x?Nv`fQ^|!LOb~D24VJM$}e(B7KRrk050SS4!`njxgN@xNAi?yCj literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimmed.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimmed.png new file mode 100644 index 0000000000000000000000000000000000000000..3159d988174fc9e32a6cbd3b24e749e598c201cc GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zxjbDQLn`LH zy=9nn#6Y0+;q(cYwmLju-tk$ohHHM{@(+@CeloB%W_|Y(e4>#U?D6_U%b)noHx%|u z9t<*Jl~&9|BSKP>pj z;sqfQ+?AhSTE;r9e8kP6D6)5d6o;cCi)6Ci$-Hm-_f9I-^O|J%ET?YXbNidzKxab0 z1&^;bxwp4zc-G$c&e|=nQ2UPK&2K$VskVh@>l(gXtdVkmUd^=C^~$s7$sce1dBl8f z=Zs~W9$TEMzMo?FXku#QqOD=Ccg>sp=#u8g*PC7MT>X=KGt*3e>s_v&o^j4`(lBcn aK3ug93M=yvaR|K%67zKRb6Mw<&;$S|2$O^W literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twintail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twintail.png new file mode 100644 index 0000000000000000000000000000000000000000..22e8ab0d2af3fc4f86db5ebdf6fe1f86544db057 GIT binary patch literal 674 zcmV;T0$u%yP)Px%TuDShRCt{2nz4^;LF%@?s=Ei-=1+Q@GTBtS%7DFpzq)&c+?k4KSmuM~_izOL)=**S-{ZIj~vi~WJt z+B@ek3>_IF0}ov8}a1bRLf-I&mWM&;Dn7;~DT;>u-a7-vbHr zi9&1biRkHSOGN&Ro!~S6HqLHdxe_=${@bzlME>dF{6zE`u(#5ttiZ9Xx4x9`Z_hl> ze(#0H7~|)8&R+pn@@lI~*$QtZ0I>hAamG8y<-A(tPTL6tK@bE%5ClOG1VIpl86T72LQ|2+cZtzEb=qXR07*qo IM6N<$g7soGqW}N^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twostrands.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twostrands.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1eca23ad08424a5c08fc2ad17d4e9d11673c82 GIT binary patch literal 862 zcmV-k1EKthP)Px&7)eAyRCt{2nm^8~Fbu%W(>F3lio^lfn0f%_?*N>!2Vl+tnAmavq)5!!dBc+{ zlZJv*LRCHgq)Pm2>^L?KaSBM_e!nkDDbQMja}KoDP}g;l(pCz_n1#xA&OzI@N%H@2 z{}6V5o@a2*f%kq%Q6NQrC|hd{_xn9bKFa{!`=`zW0L=3Y!!Tqw0?Ln}luDBS!+E&x zd-(nReVn7)q2Rvnx$;>|(*(EMZFNm+4OLY^RaG!e6T3~80hCfOP194%m1S92Yd1&d zEXHwM#XWi;06d)^h5ZiL;)<6bh9AJck&m5oVHtqN{Hy!92;0ZbzayXR0nRz-y6$PT zjWL&G0p}d+`W~l+z_)Um0YZ1Yg49u`unq94qdBsGwRQo3)kG)kI6cSb@PB)-43Im` z#i;8#nqsljp)r(FV69z_W~I|YATE+C00}2$ z^gc%qmH~2gkSiOHanxh?j`CF#p|0zmJb`j`cz&GJMG!#{1VIo4K@f!hp5)KRSeg8) z^@1~HC#?s>6i6*kbHNfh-5a2kx@La>RUquV);jwh0q^}X3ucEG)*uJ!(*?&Fbq(Z?*mHk0-Tgj-Z-3d&g}-fElb#O3W}@mOUx zCuhqzYyiyt0C@|c9MB_Z&5}DOV0i!)7@K)rF%#U98>=24Vb=hmHTOpT$}|`f>UK(b zyz9Ec7_&4@v$}@IpV%6MP=ipNnx+9`%z5SUwrvaCq)3U?>#wZO;gp!-oP%*359{&L z0GM~tl|mP5+qTH*@*%PC3ppw4^ql3gp&2Cn?%O@(GFfPIhL-7Aa@d{ZSh+dzGT o5xzl3K@bE%5ClOG1mV;C1&a_~T2~3PLjV8(07*qoM6N<$f+tLqr2qf` literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercut.png new file mode 100644 index 0000000000000000000000000000000000000000..76ccd58fcfcc3b3faf0a98340f2cbffb82ff7a53 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z+dW+zLn`LH zy=B;USV4gG!u+e#R_ZDiGL)|?YM7&x{zOEkp{tKM!fDa6^wk@4)(fw_+3NdozDQ)k zP3GjFvkX&<&ZXAAeY^fq{S_M#Ck^-Oacj2D-eI(^(27y$j3xV8(>cYne_rb`bk$^K zxDdt6FeS*~Sjf@;YbrBjj-Reu7tXXSlZoNXXP&jD&noYonP2*fB_i9~>*a?yua%WT zJ%*~scJw^`!syVm@s-FNuLFPU{(pOV{?7lk#~&9mGQ9tr7I&=Zf6p@RyrUAqZHW=b zG?%VAD=dfr7qt~zCKbokDYjf%ZLlkCt*(2vaI&DU;i z>epnwt+&;2}_3H6{POLYek_pAdYZ_;dARi?}EC`}JpmdKI;Vst0ELsz2LJ#7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutleft.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutleft.png new file mode 100644 index 0000000000000000000000000000000000000000..e997d6ce93fc24f0db7275ea9456fd7a9eb5a63b GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zH+#A`hE&XX zd&{uzwSoZKgZuvLOL|+LFke{uh+&RW`WeQUVutW{77Rj@va8}Y9#RS`6a8R(>*~LF zP8<=_SfjFI?y_X(UW!VNoVNV@`6uhM4(wXD<8GeB@j`=RJPZjv zl1rw{crF=q>eipDpSU$L*BYKLzWn#!wSNwprh9gYIVHqiU#4_#Yp!&Q!0#uFHx>&p z-QE^@e{&YozDeqf+LITbH`y0`@&Dz=A3c8dKCjq+fA+km?q&=>GMx71)mA7Wz^~X@ z;#}8mh3Gj?4RY==?0sDEa+1<>jq@xm0<*%4eRm(+vy4wMVU}8pfL?sB{O9RA&#!s5 zS~}p}i{dkrAMD+~MG)xUz3dDgn)9<>6xlKShzP8H|2=fe6d|vb2PKT>NFFV(nf5p$ zxOdrphkGZh-_JkC@g-v7bD7H~Z%wC|#;&__>f4|D@_VfmLa%*Ww~X^dXO&!+#i_~D slTRNue?9As@BNKx2)8Qziu=cyC8XW5w|(seU|ceIy85}Sb4q9e0P>>g8UO$Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutright.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutright.png new file mode 100644 index 0000000000000000000000000000000000000000..1b6659e13fb997e3dc1755275bbc16a0a5001b86 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zH+Z@@hE&XX zd&{uzwSoZKgZt6D-JCu#z6dI0@SAA-jNyvRfvMK=44Ep|zwA*ubUH15$$?Yn?Dqc8 z?ue~uOAO+5XfKU5W>_+1--#VZ+3Z*tJwYA>DKw*Rl)scpFdUT^1yulLf-xqa==*=0-&H~jz2 zm9u`UKKJ{#vtM@H&D%MrB69up?CWv=PBJlkSDJEv?`(A?I9T-G`@4f;%Y?1hes4BR z^U!=+D8nxsG)3a8N|ehk_p-B_9Um0?=qk-v#;J74bk;jjrxT@b?p?IF5ZF-V7Juy$ zr{OVYZb7FLhHebs18e6V*8I-g@Vmq6*pFP1w{xWHE_JP6kt~ti7W5#O$rKJv>A$hHH3ay{ayd-El o`+Zr~2Jyeg=5!#yi}Ih$(c2Afovhw*3>c9Np00i_>zopr0FS@sQvd(} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/uneven.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/uneven.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d2c99914a79cfd284e13b0a5710ffbf7930b74 GIT binary patch literal 968 zcmV;(12_DMP)Px&f=NU{RCt{2n!R%BJP?LoF<+S${DUvRNt-^#Z7u+=5#NNJo=nCm5_!@JuuO;5 zhW!dg4k6(TGMJMy(NhK6@v^H|E1_MW1!IpU)A7p|S0r$-`k7vLFaP z84SaaEtg9G08zI>;GENNI0OJJ7K`RO5yAI;6h&eD1&jiaWf=(}AcR0!md*7zj#-}P zn9XMBdO8Rp0DJ^{u~mKwZ~#dwYxFaERq{iP32ENp6$LgsoO9 z#Btoo6xf~TLl9_xsRE=sSoArz}Z-LMK`&C90}|l(I>LQc3^-W6U@Q87n}~y?uxXgTVlL zl+H~Y$INxzX4H2_pNOFEndTs)RbV_GvqMYW{rx={W4OD!>vSKmj~@Lz&s+V!Q2+oO zQ~+ZPuIsk?62}rn5d%J)uBxh85!%`|4uD>VzoX4g>=d*b%d%{OV~TMA^iFV}uD8Iu zxUPG)Tw@%7OFDXpD2f;nfr!xS^&0t4CX;S|3;YE3oz(f@S2CSWX*!*rwD0)m6kyrI zD&RzZeE=*Li^XEGSS%LH@8qQ8EzUXVBI$muuuF9DWw%Dy_CVJ7*C6Md*6TGXrKl`R zxULJ=bvvsFeP7D5=Q!B_!BQIO|((0u|zh~{9jOXq=YA!PSZG>Rgo>x6Bb2U@hq zNGahsP9r@%`fZM+&qb0X-G9#eS*3Zg>z1N71+ObaX9Bx*Y!n=CrLs|sV~m|2=sjHl5+?8pQ{TTYS8!*TtWdB qi^XEGSS%Kc#bU8oEEbF9B>o5Gv=4Px&Y)M2xRCt{2nmul;Fc8Q8JiU?{35f&HZN&kobAUY~2iV#NpmOH}AdTeOy$>&%JkJ=%FyTWM9578&WbXqX_j{S6 z^1Z9E)}m<|06^0;n~=BGuJ_Y4UAqeac$(YNA>%k!ISQn3G@f)e5us_CO;n`v(gD*n z#ryqU0l@u!ue|pk^2`_$z4wssWoz;R?>&J3Ti&zxa^$~sz<#i%X;x*VP!7!!NFDaZ z?`J*N`B{q~@Odhf*#0Eau>Ayl_AG_s|GZocryKAw8qcI&b_D!1GRN8Y5^Ij4D2k#e zilQirqA0(YQwIsox!Cu8#b@<=PFMO^j0qvcx~?ygf2uzK*j9&SjjnW$fO9U&x**Fx z>xAs$=r9bc(4#s%P_9v8Uv=6~0Fd7(k##1>ogwo)Z-mPxg;%AsuON$|vMS8Y5zDe* z7zQ}!l6wTQilZEA(h;lx_X_}JTV-TV0)UO-+$cdr$vPx=h*)bkMG1Lb*LB6lpFN*{ zg**;tnX)P@^~%v9xkH4nWkK?&9$)H+dK|}UKQ_0;Jk#eD$tfU9U(Xi2s|%yg#+I_B zPB~?|*~5^}b`!wFIb%jRctkxWg+BnNo! zvqGzcBXY*f(Ko9>V!sU?h23{@)D7}X-!D;ed%Kz%U2lr1;TgS_6)v!Cnsv%4EK>8KU5{A%sMGVaj(?5uH@9~Q3x_X4~{lWjH zjVva~p3{8O*fd%MzTJM?Hpke7<@K(l$Z3wo)7*Lr#V0D)os&Fg8Tu!F)`NS$+aKJk zzVrTj?BoWueH{!8Yql~l2s-uzitf*5O6u9YRZLU0gQLe#Kyb;Fgq}e4i^BVlowa0U zC_3jZH|s~NaDdmrZMhmt4@fi@%CuL`Yq#PoO?Stzq##wyn-{G_G*8<)4O;jz{W=51N8 zx9{&?t<#%itk>EyH|*c-{8{DKjm58h6kGJ$=YBK%qpZ$QF{j0UU$cN99Q;jK_5ZRn z$8Qr~h5`|n`ztSg&+>jEzn=L^A*xrw!e;E(#-&J!?^4hIr z)wro^&jlUNOWwAZ>DsM#a*gl)F)+B-?)xh;adGlvuX8&OTAJ@Uweal6`qJ$uY}i+B zcgme{p=bHSInuXo2Sh8qf5*SV@%FBo-Jin6wB{ert7g4*r)ou+1Mj_GPhQzqFE?Cl w{n9x5^Ls00@vqelW)E)e3)XW%fctmknX>dtet$?`2TTJDp00i_>zopr0Qw;O;{X5v literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlong.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlong.png new file mode 100644 index 0000000000000000000000000000000000000000..736da454b158be9acd0009c2039eff89196b153f GIT binary patch literal 686 zcmV;f0#W^mP)Px%Xh}ptRCt{2nm>-?AQZ+wueNj@$r1;kOT__v3ZKyjNbLhqrQ-ldNUrJGVuXkF zm}Gdd$$IDgq$r7<0RG+|A>M01zA;j`Zua{CJfH5ZAZZ{~UptXil3R23Z>pEzy zH!ZU#(=>&y>o)IoT}Kk(cgc^V%L9N?YH@ohWn+v9&biY0Nkpq#YhNC#NPy__Tk%ef z!4lTiUkj1*jz<*dfJcnuSS1haVfo0e0@NT{9r#;_^m++J0?hNAy;sBf&vFbU2Nioj ztwfh2=l;~NC`y6=(D(gjvKxk>+D0ffg0&XTIZ^@y3O%6aLvFDS!L>I&3eg;=OM|4+P4$AeCN(NsdyaP}Xog`JhG7_nVHk#C z&I9=nAr?d9akO(Tdt|;hX_Yvxp;~_c@X;gSoP$yd&bg&5b#!?g_Q8|8 zK1|aTy!XKv6XN&u^HFohd4LbG*K44Nu*;#SQfg_FdF6=u8S^|Zt}dl)VpS;Kqm;*r z1Q^FLq?0)3V68>lwoT0*p-9@DlCH6243Y;tQv1l$+1%KD-#4*&qm-Ab!&~ltWSM+x z>=+V#-#1mtj8=^yq!S-kh#Fyf^=q06(Hd<`F-lLE@k0o%;ZWVHk#C7=~dOhGD+VA18Eb UFqmSL<^TWy07*qoM6N<$f=duRP5=M^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlongfringe.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlongfringe.png new file mode 100644 index 0000000000000000000000000000000000000000..8044c5c9d152e3cc32629caf00a3320a5153d9bb GIT binary patch literal 667 zcmV;M0%ZM(P)Px%RY^oaRCt{2nn7;sAP|OsS6zA?3CRcW1$+Qb;WPRaJ^(B4H~x^8>L*K^4dKx^%lQrm+E<3b21rIMa0$vn?K*xnGAz_Kh`$Xjax0M=S`T?ZiqmSxGcPa+6!jDa!csj=R3etf�HEr6kJ)=a79w^3 z5wdf@J*H`@k_VpkdQ4FPY7o2*{4Yd&J%=m-)^$C+SHt@u?@;fj$c_Mtk&+yRKXqAT zB|!j?QYI7NIF8j4W9)=@Lq;Jh0%|^Fiv1GYN8`OEdc@_D;L#GKF3rmc0Q~dx{++_5 z1c;Ylyc12`f0RoJ033Up8U-&+YE)8tj#npWhG7_nVHk#C7=~f41Njg^YwhFXXlw1^ zk$Gw2Dsh-Ywf+F$vq!*Mi(weH>M)RQTqsSj5h~PS4z>Cd;GFaGJbUMy*IN7VJ^p-_ z?bvQ=4ipiJ9EuLZuzh~!i26I?v16M7N_i|xfN7e1Y{Xg%V+`81ZTh}%YV-}nwt_vS z)Fw`Dk(Lwz>$)DQedg)x(b!VTCNyv4@>F#=74B!2$x~y8>@THks+7m~hWAiC@d#&( zoh`ttnR=+O4*|BLbC<Tqd( zl>mRDMdluVqCw(E^U8ey!!QiPFbu;m48t%F^8xCEXY>INQAPj&002ovPDHLkV1nNM BFk=7! literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/volaju.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/volaju.png new file mode 100644 index 0000000000000000000000000000000000000000..92802d4bc0a617bffa1a2dc5d0fa114cd26f75e2 GIT binary patch literal 738 zcmV<80v-K{P)Px%oJmAMRCt{2nlX;+AP|OszuL7WBo5%tRSw`&a7IqS0jTIW01}dGdS0;_i{&{A zpg8-qny*RLNj(3IXDIfc2?H2o^5gM92mvuh0KmTQ)5yI>NGW9i2qB!;)^#0<|EKo{ zW%2+Zgn$qN#+W=JpchKsS_>&906Nu+|QZVb=(xlyW)qBxc|DDaHsX z&+}9!Pn`&S73J}G42?mv*pyPHw!cc!d!Ng$=oRvcy7NK^XA$bI=y?du9Z)7! zA9%)?O!Ih0^1xS8)P2_4Z?9B{7-M$_Hh-CtK8^#+vV5C2V@y7d0|2mX+bOt5NKfqg zJ#nS&6-^zWwa&+JoB=4=Ixqk@=iYt}?E5~IF|Tx#*RA_D5WN))I{&=&&u!g z2xviTot08knRK0et>ssuwa#U6wbt1fb6$IQ;r~0X68!Z^GYrEp48t%C!!QiPFbwln zhW~|}Qp&U+Ko0Gvb_B?brPxx+VMl6cKcG%tN(mvvut(p6_db^~V~hwPAf=Q?b`-h_ z;Jwe}!vi>zFU`q27bVJjlQ~-2@*@s$R{_>_ok9qgreyi|osb1z$F$ZWgwSov4etjK zR17N4o##NklR&YF7-M$_G>i4#XXhN2W%*}C<<7O3SDHuz={b(0%O7m+fOTC@bCSA% z4xvvRel^dM-?pvm9O@c@(gu$)!Z`=v-o>bAP)z6C`9PLsfphNt`vE1TJ$Px&2}wjjRCt{2n!S$WAP~p@K3$m_iFN7~-BvunK82r=r{Dpo+@aKtk*MjpA{s<; zzW8Gu@2xby#&L|94+cV*X|REmQXYl@Ap}S%aXz1MI-Qy=eQm*7o9p`+Bf75JB>&gi z7g9>uIalt_=QEshNGatfukD60CIdj*wrJZHQc4IR{&LDvey@GOIafv<0LF2I)*8+^ zc<-}P>Sd8&jLAX>v~3Fjczb&*&q4^B`dk$O-uoP5EXFIPn)mnj2DpXcs}Vu~xHo(p z$D+@cC|KoyzVGqz@c{sLbN;CLKjq}>_4@Sr9IG5aBQRw!Jv)lp@UO6X5d>~iVHfEe zh%sUu$Gh*waojuwS2;jRi4X#&7CL%%6toZ?j`u!4E;bYqM@2?TDO+pv<#H+4t$l5p z0*}1%r*DeW>C|YgalKwa*TZ=BQ?qq5vX#r_l8rI>s7+Yeg?+Wn9+2^03I87rIpDkX z_*Q5U{BAuMhG7_nVHk#C7=~e(pTy?lY-??nQkMG=0zN-K4>=y+Q}&{~fcHMv2@zvV z)>;EV$;?VA4>=aEjVIY!>v9@xt<9wGZUR$EIi-}n_vIYkdta{9W-4p6CuAIDhH4#B zO4%4wK2w{yKA%Q_wYH2ja7&L<7MSvYAp}qxrBw6EI)NA?lu`|4hH4#vTZX#t`_f)( zJsXuz9iX+wFbn{0l_6w2eOGg2jnI@l(n$ybD&ZN10rdb*F}nslW_)RcV~j;;t<2V9 zr6o-DJq*L0PBlxi)lVHzkM!fJOIIo7T~_#&*_y|`>y&(LY_025wARc&kquv%{~f6q)M#Q5U*8=N1)B%sM~_ff(bRhba`hu50?fFA;D=u8w4Q?{f&@P8Vtu zLO_gh(O^7vfKsZd!|72FaBOW*z1dl!o0M|4c46@%_^)crT1Xv=ufQ0S=N8#ohuunc zthJM==>H)zJEem$X8#S@|6uG=*66zEzksziA5jUq7cs^kHDCoa@{0ff002ovPDHLkV1ku>hhP8z literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/eyes.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3e479bb4980871e56b85ae56e3eebca36a6d30 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`Bn0?`xVAL> zZ*I8S)Udv>p}wJkp}wK3u3=|w!;PAT|3D=j4gcF4{pXZf-)#Wt_H^}gS?83{1OOmnmPr5r literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/hands.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/hands.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ea6c7328c0e1e6882500c395455215e09c977c GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`Bn0?`xVAL> zZ*I8S)Udv>p}wJkp}wK3u3=|w!;PAT|3D=j4gcF4{*(p?7!uL?_QFP91_d5wgC(o%Km1>6bD^<|wZ&Ln&gfYp8&DMl{NU_Zv3uri z2hAtJ4qNkUE^sjvuy0^E&r`=?Ys|V2sD>{!!ZXd+mq822=74It6g(Nk@^tlcS?83{ F1OPc>f@lB$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/head.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/head.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3e479bb4980871e56b85ae56e3eebca36a6d30 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`Bn0?`xVAL> zZ*I8S)Udv>p}wJkp}wK3u3=|w!;PAT|3D=j4gcF4{pXZf-)#Wt_H^}gS?83{1OOmnmPr5r literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/jumpsuit.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/jumpsuit.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae792ad5c4371610b1537d60b0eb54bf6bd3492 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`qy_kdxVAL> zZ*I8S)Udv>p}wJkp}wK3u3=|w!;PAT|3D=j4gcF4{Eaj?(fanPAyk44ofy`glX(f`Bn0?`xVAL> zZ*I8S)Udv>p}wJkp}wK3u3=|w!;PAT|3D=j4gcF4{pXZf-)#Wt_H^}gS?83{1OOmnmPr5r literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/meta.json new file mode 100644 index 0000000000..2a30242817 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/meta.json @@ -0,0 +1,42 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "by widgetbeck", + "size": { + "x": 32, + "y": 32 + }, + "load": { + "srgb": false + }, + "states": [ + { + "name": "jumpsuit", + "directions": 4 + }, + { + "name": "outerclothing_hardsuit", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + }, + { + "name": "neck", + "directions": 4 + }, + { + "name": "mask", + "directions": 4 + }, + { + "name": "head", + "directions": 4 + }, + { + "name": "hands", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/neck.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/neck.png new file mode 100644 index 0000000000000000000000000000000000000000..647ff28ea94c41dc9673936790c831f039e73164 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`Bn0?`xVAL> zZ*I8S)Udv>p}wJkp}wK3u3=|w!;PAT|3D=j4gcF4{*VR;7!uL?_UcAX1_d65gE_ixgM0u0 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/outerclothing_hardsuit.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/outerclothing_hardsuit.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c72a02fe9bbecb4b579038534e2d2559b5fbbb GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`Bn0?`xVAL> zZ*I8S)Udv>p}wJkp}wK3u3=|w!;PAT|3D=j4gcF4{+0#^7!uL?_KG7Hg8~QZ#rp0&|2?y%Jr&s6&gl5wJ7+S9lVJg8LUeZ0_H*Ss zs~dq@80?r{)u%Evs5$(#1bKH4lbZF*%2RJrO5Oo^e5nzhX}-P;T0k}j5QD&_;K?A$ M)78&qol`;+0LeXt!~g&Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-left.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a9832113315918ed48442506a92ff64f8576ed GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|c6z!vhE&XX zdut(IQ-DnC$HkjJ^0=*%_IG}uxI&G&Q{3=}h`HpR3y zZ|uLT%m_4qfgvH*>|H{zsP`Ycx%u|r@9y=FPG7UKOZCatWt&RVOsB4OirfE}XZl>@ zYj@pwivzyZSZqF}=g#}tG1fk6_oSapDw+4=Rezo{ElUyy8wV!#CD!NrpWG+{RH~%{ZyP8>pbcw35+$yH#OV+6s`z7(8A5T-G@yGywp@qF>Sg literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-right.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2a237f173dfa7cc8d03e40b289398b1d0d5971c9 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|4tu&dhE&XX zdrOh;kb%gtkL(BE@|=jAG&e1&eTJ*zvNA!IPx$#z{m$R9J=WS50feKoEVl)r*xFB%z0bhmsup37)+B@nd7W_vEGbK$E6WXlXH^ zsn&uPnVvRH)+oChZ7KL5B<{}6yq&LIfj>q`Ws&bX#E;p%fs!sI<9Wy(9@PW{fD6@y=k==U(hQ_r#&+6l zckmufl5x#2@ie{#aKwJV*FP&cmi?;zKsf{zy{5WU9&GpgZh5fzB1yT^I1$n0{vk2I zyFEQGLqa$N=_b=`cQSL$b_bCkA`U#nfd{MG7gf8z6Z)=0R=1DH4>RL@{Q2LJAHwSP zb5Bhv0t_-;&h8CLao~xFiW4{{gb38FR<1kw&;UPY#X$*ZhKW3-hJCX&R<~Nv3^SLU z5`pz>fr?%Oi>qPZY$=cYFd@U_G{Y1ku(u5D-k`)>pZ*52WtsL4zorm@T}m{=L^{*? z-O3zDg{t5XC*S`l!xMoM0U-bXU=cYfVZh-3yg2Bs|!SSOwpfDW^yzCrDoa O0000Px$(Md!>RCt{2+RaYFKoAG;@%zw-pu!8NXnYpqYZ9)2cTc_GnNUiacre`*LMx3; z+Qf_pEuqaKZfQ%1|6f9yEL&!~om~#IME~4gmYYVs4yW6i509CCYvC^il^Qo&EUx{Z9Hu^pn zqh5y{W6XhN^PAr1z_Qsf#-;87=`0XJloo$6h`_QJpHhSW#E+L;IGb-2|IeFX+Cf#z zdTTC@Yp01T00000000000002MI+?4e>1s@w=L5DLKdujM<9t9Ie_5HeN$JDqQKM6d zAJ+x*m;|NTV0-`~U5|@gpQb}YHFjpxp+T2-w~2Aon^$yJZ%{a!a}ftL76Qv&`38z! z3UTVM%D}*~i(dxu5|B;8OS@J00AAWH>BDDT0!k-Dh`x7Q&m7SE#7VSAu1^)M_>y@= z(Er+a002ovPDHLkV1fz&@eBX} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_arm.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..4effd642161803e79004c832884c50a7d4367b7e GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|E_%8+hE&XX zd&`!u$w8p);lV@a4mlr4{jqb|M%O*9rbmVJ6*?D$TDNcR^*38|4xc?n3CccJ$2d4+)%G6DUF#gjw_i1O@)F6OWDf1^Q$c7 z{z;vvvX_?WKfBy#;$D3PuT2T(?lZpUmiXdpo_RNm>&CnC$=B8{gXpUJ&bCV=<-N>> Q;D;aqPgg&ebxsLQ0Mk=&I{*Lx literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_foot.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..a1029f4cf1e7276d43156b560cd0ff32fed19505 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|4tTmahE&XX zd&`#Vkb}U{kAiP=Y#P>zeVccv|M0r({M2Oq6yA;mMa`fkoGXtxiMbdk&Gh~HU-rS? z#8>J}K>bkgL$_kNZ{*5VSs(nG%V(`puUNinm2c$CuRS_Wi*9BqE3Hp{{`&0!E%S=y zmyZUyxV(Dp+%|b*=$5n0dB>YweOCYeIb{zs%q#|m4=-!Q15zqC#X3aSPkj2Ux^X{W x2Y<&eDIDJMqz|{u=dN0H?1AalrK?`e@y@H=ypiu&sBUE7Dc!iUv)ccjTl4kgA11lCt}ZT{ z7MZ-<`>uIT`*P20L&J*A>e)A$AjW`5;pK~?{|Fb)QhYJn@A;ejU$*!9rfvQIBy{eU yy6h4@LBW-0mh;xlekK^E%Vz)jCo=;>!r6P3Hv?X13tycJ((mc&=d#Wzp$PzKh-caW literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_leg.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b4c62f206d99565990dd91b9e09fba1557739e GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|c6+)whE&XX zd&`jPkb_9e!%)SulM?hEW*#}*cIVKsDo1W+YK0XWg^wzllj*Vf+67rpFjIa%bGR8##BOTtbfZ85~i+H}Wc9rByo6z;Q4_DNu zGp0^Eq1X`;8^^{zJ2*Q0m4J)ef9A#J3of>PI($P~F1M;qqPkbF=eu-06UcBdIM6l6 z-@P*K{ip1gKF(j~@op>q8oS%b=zWr{%+<Q}|=OnrYkbyEiPw4*!Md a{S@oTk<(YNmG%re^W)qflhTtldu68;sC++tHtqD(nWdHD zv+t^;>b+!0OM8B}E@8|4-Shf(D#Hw7U^pQE>i?6~i)8j{3+xFFo$_-R*I#CrVvd;y85}Sb4q9e06fZL)&Kwi literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_hand.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..8051570e6fc7cfe59f48e9aaa60158d3cb787ef9 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|u6nvShE&XX zdutpd!g6xuW6;yom>^2wX{t`2?m>E!5xTaYxPw#r~QI{@FrIY{9p54iQ zsw@y>3lOY`TT!k>5gzo?P?eeS)>998A;FroC5 zD_-VIdG@N#sw%yIHlIyCziI55sMfZ$-fvYEOGEA&-&h*Cxccv({f0-*L5v2G|9m#y z-gaw$xuJbZ+~cZ0lQqsdfBmp6D!=Jj?O&#K-|n2YXP$oe-*e;pBD-~emjgBM+~E#1 VNSNsv7WxOI-_zC4Wt~$(69BQ#bhiKi literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_leg.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..8345a65482d41836810f588e64e45d4d67452fa1 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|4tu&dhE&XX zdut=tAp?P9AA=WqXKd7ec)5dL`j?pAIY!wSnHI4itu3c5J03hx@Kn9^ul~2J{QU{4 z>P$f0AaEdh-KJHmZe5RyO*Ji*o9Mpm_Di8TnLm32{-+qRrliW5n0GRTWeeL_cQPdf zIJ|;r0+Byb*KGo7n;&$CtEY6e!SD5kTph6mrN<46RD?qhT-Z`%_a=4oUEO0`Uo`KR z8kyvNnYV&zlhO1;E%E6`Gzopr0GPvL ATL1t6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_f.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_f.png new file mode 100644 index 0000000000000000000000000000000000000000..ac55287b975f2f3cac0ec11d3a72a89145378921 GIT binary patch literal 741 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~u2Ka=y-rBP1=etj@Zr=HL>-PWu|Ns2?^Y7ok-@kwV{Q2|BvPD2u3wd83 z0aDy0L4LtN1yI1?<KW>pcVGK%2~@K!HNrE^(^HFq1IS@zkYZ$IU<9(ffLI#J2Kh*Xkr^z` z1Y{dBGBF4M=_nx1Y-a(BX93wDkO0IW{V*EMQU+j{OkihV0je-CGB#jb05KJ$gLMJK zq$xl)2rvQ7VFIfRva|rQpt=kV3_!A~?(=#Vn`}J_v@O8X#W5tp{q3}ao0=7PTqk#2 z`t)D^&%37^4Kk9_cfD+~4)qk~V=U>|qQ8}a+hH!FQdXLlU`UE~l-YZG$smQNZ|5nv zmRshtJ9D=#Dqd^$CNjb~ zZG+`L^CPQTXEW@dcG&*_^M$!wX%~JMPq#V9cuYyH;d-O12V=w$iGnYTeIg7?8F(fz z{OT6i%l6^+zR%McHn84!E70KY`eP%{?$gp+Hs!YTUym&O(jL{ox_|LaXjp sPOUZJ`@h7dVI5=U4|SmZ8Ed!NfAN|8zVM3~Cn%gfUHx3vIVCg!0A<|&U;qFB literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_m.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_m.png new file mode 100644 index 0000000000000000000000000000000000000000..8f485e0f9c427e1736fd1abc7765ce2fc9553b28 GIT binary patch literal 554 zcmV+_0@eMAP)Px$I5()lFRs#utTx zqM%km(M`G<8KbtHJCljx`5=Uh$(%dK+)2V6A^-pY0Dv>)Lgi%7t@%VmcMp&BJsNJ> zQ%;sX-`|LcsPy!#)F(&(wtP?Ve2&(WImI$bTJ{F?)%XZk-*aoe%xXN_Y%(Iqu=Im^ zay%UUYi>ZXOp<%47P9WLH=uYvrxnko%E{}=T*y;PAo9NT`m)t7j^%kF z3`GB8puv6E`sBGaf7opAOV000000001h zbEICaY}Mp#)CFZkjZ%)GUai>C7lRLC+kky=OgP!nm??}Hu%67V)&|nWva!V&Mhu8$ zlB}WxmuahEtR#;Vh&q6%Q8wTv!CQ%815RwX1ELNfYK%PwZDUH4wLTyy9>uCr6YGPB s80!Ow_Sfib*XEBQ1^@s60DzO`2V@O{l|9<7