From d94eaf8fd3895a5c2c4fdb9d5b9c8d65b21185a5 Mon Sep 17 00:00:00 2001 From: Aiden Date: Tue, 7 Jan 2025 11:22:43 -0600 Subject: [PATCH] Revert "Mergup" --- .../UI/BanPanel/BanPanel.xaml.cs | 11 +- .../Tests/Commands/PardonCommand.cs | 24 +- .../20241111170112_ModernHwid.Designer.cs | 2072 ++++++++++++++++ .../Postgres/20241111170112_ModernHwid.cs | 62 + ...20241111193608_ConnectionTrust.Designer.cs | 2076 +++++++++++++++++ .../20241111193608_ConnectionTrust.cs | 29 + .../PostgresServerDbContextModelSnapshot.cs | 148 +- .../20241111170107_ModernHwid.Designer.cs | 1995 ++++++++++++++++ .../Sqlite/20241111170107_ModernHwid.cs | 62 + ...20241111193602_ConnectionTrust.Designer.cs | 1999 ++++++++++++++++ .../Sqlite/20241111193602_ConnectionTrust.cs | 29 + .../SqliteServerDbContextModelSnapshot.cs | 148 +- Content.Server.Database/Model.cs | 88 +- .../Administration/BanList/BanListEui.cs | 8 +- Content.Server/Administration/BanPanelEui.cs | 9 +- .../Administration/Commands/BanListCommand.cs | 2 +- .../Commands/RoleBanListCommand.cs | 2 +- .../Administration/Managers/BanManager.cs | 18 +- .../Administration/Managers/IBanManager.cs | 4 +- .../Administration/PlayerLocator.cs | 99 +- .../Administration/PlayerPanelEui.cs | 4 +- .../Administration/Systems/BwoinkSystem.cs | 2 +- .../Connection/ConnectionManager.cs | 13 +- Content.Server/Connection/UserDataExt.cs | 24 + .../Damage/Systems/DamageOtherOnHitSystem.cs | 8 +- Content.Server/Database/BanMatcher.cs | 33 +- Content.Server/Database/DatabaseRecords.cs | 3 +- Content.Server/Database/ServerBanDef.cs | 5 +- Content.Server/Database/ServerDbBase.cs | 24 +- Content.Server/Database/ServerDbManager.cs | 39 +- Content.Server/Database/ServerDbPostgres.cs | 124 +- Content.Server/Database/ServerDbSqlite.cs | 55 +- Content.Server/Database/ServerRoleBanDef.cs | 5 +- .../AbsorbentSystem.Footprints.cs | 41 - .../Fluids/EntitySystems/AbsorbentSystem.cs | 7 +- Content.Server/FootPrint/FootPrintsSystem.cs | 88 +- .../FootPrint/PuddleFootPrintsSystem.cs | 48 +- .../Projectiles/ProjectileSystem.cs | 21 - .../Events/PirateRadioSpawnRule.cs | 36 +- .../Traits/TraitSystem.Functions.cs | 38 - .../Weapons/Melee/MeleeWeaponSystem.cs | 3 +- Content.Shared.Database/TypedHwid.cs | 64 + .../Administration/BanPanelEuiState.cs | 4 +- Content.Shared/CCVar/CCVars.cs | 2 +- .../Systems/SharedDamageOtherOnHitSystem.cs | 36 +- .../Damage/Systems/SlowOnDamageSystem.cs | 8 +- Content.Shared/Fluids/AbsorbentComponent.cs | 9 - .../Footprint/FootPrintsComponent.cs | 61 +- .../Footprint/PuddleFootPrintsComponent.cs | 11 +- ...SpeedModifiedByContactModifierComponent.cs | 37 - .../Systems/SpeedModifierContactsSystem.cs | 10 - .../Projectiles/EmbedPassiveDamageSystem.cs | 12 - .../Projectiles/SharedProjectileSystem.cs | 10 + .../Slippery/SlippableModifierComponent.cs | 15 - Content.Shared/Slippery/SlipperySystem.cs | 27 +- .../StepTrigger/Systems/StepTriggerSystem.cs | 7 +- .../Components/TraitSpeedModifierComponent.cs | 6 - Resources/Changelog/Changelog.yml | 332 +-- Resources/Locale/en-US/damage/stamina.ftl | 2 +- Resources/Locale/en-US/markings/lamia.ftl | 4 - .../humanoid-character-profile.ftl | 3 +- Resources/Locale/en-US/traits/traits.ftl | 32 +- .../Catalog/Cargo/cargo_vending.yml | 2 +- .../Catalog/Fills/Lockers/dressers.yml | 3 - .../Catalog/Fills/Lockers/heads.yml | 3 - .../Catalog/Fills/Lockers/medical.yml | 2 - .../Catalog/Fills/Lockers/suit_storage.yml | 1 - .../VendingMachines/Inventories/chapel.yml | 33 +- .../VendingMachines/Inventories/theater.yml | 44 - .../Prototypes/Catalog/uplink_catalog.yml | 4 +- .../Generic/outerwearGroup.yml | 28 - .../Jobs/Command/captain.yml | 4 - .../Jobs/Medical/chiefMedicalOfficer.yml | 6 - .../DeltaV/Entities/Clothing/Eyes/hud.yml | 2 - .../DeltaV/Entities/Mobs/Species/lamia.yml | 23 +- Resources/Prototypes/DeltaV/Species/lamia.yml | 34 +- .../Prototypes/DeltaV/Species/vulpkanin.yml | 3 + .../Entities/Clothing/Head/misc.yml | 11 - .../Entities/Clothing/Masks/masks.yml | 11 - .../Entities/Clothing/OuterClothing/coats.yml | 11 - .../Entities/Clothing/Shoes/boots.yml | 6 +- .../Entities/Clothing/Shoes/specific.yml | 2 +- .../Entities/Clothing/Uniforms/jumpskirts.yml | 11 - .../Entities/Clothing/Uniforms/jumpsuits.yml | 11 - .../Prototypes/Entities/Effects/puddle.yml | 10 - .../Mobs/Customization/Markings/earrings.yml | 76 +- .../Mobs/Customization/Markings/face.yml | 62 +- .../Mobs/Customization/Markings/gauze.yml | 22 +- .../Customization/Markings/human_noses.yml | 10 +- .../Mobs/Customization/Markings/makeup.yml | 10 +- .../Customization/Markings/pointy_ears.yml | 18 +- .../Mobs/Customization/Markings/reptilian.yml | 30 +- .../Mobs/Customization/Markings/scars.yml | 10 +- .../Mobs/Customization/Markings/tattoos.yml | 12 +- .../Mobs/Customization/Markings/wrist.yml | 32 +- .../Mobs/Customization/cyberlimbs/bishop.yml | 8 +- .../Customization/cyberlimbs/hesphiastos.yml | 8 +- .../Prototypes/Entities/Mobs/Player/ipc.yml | 2 +- .../Prototypes/Entities/Mobs/Species/base.yml | 4 +- .../Entities/Objects/Misc/tiles.yml | 2 +- .../Objects/Specific/Janitorial/janitor.yml | 4 - .../Objects/Specific/Medical/morgue.yml | 1 - .../Entities/Objects/Weapons/Melee/spear.yml | 5 +- .../Entities/Structures/Furniture/chairs.yml | 2 +- .../Entities/Structures/Machines/lathe.yml | 2 - .../Entities/Structures/base_structure.yml | 4 +- .../Loadouts/Generic/outerClothing.yml | 150 -- .../Loadouts/Jobs/Command/captain.yml | 28 - .../Jobs/Medical/chiefMedicalOfficer.yml | 39 - .../Prototypes/Loadouts/loadout_groups.yml | 0 .../Prototypes/Nyanotrasen/Species/Oni.yml | 3 + .../Nyanotrasen/Species/felinid.yml | 3 + .../Prototypes/Recipes/Lathes/clothing.yml | 16 - Resources/Prototypes/Species/arachne.yml | 3 + Resources/Prototypes/Species/harpy.yml | 3 + Resources/Prototypes/Species/human.yml | 3 + Resources/Prototypes/Species/moth.yml | 1 - Resources/Prototypes/Species/reptilian.yml | 5 +- Resources/Prototypes/Species/slime.yml | 3 + Resources/Prototypes/Traits/disabilities.yml | 43 +- .../Prototypes/Traits/inconveniences.yml | 10 - Resources/Prototypes/Traits/languages.yml | 6 +- Resources/Prototypes/Traits/physical.yml | 46 - Resources/Prototypes/Traits/skills.yml | 11 +- .../_NF/Entities/Clothing/Belt/belts_punk.yml | 45 - .../Entities/Clothing/Eyes/punk_glasses.yml | 78 - .../Entities/Clothing/Head/headwear_punks.yml | 59 - .../Entities/Clothing/Masks/masks_punk.yml | 36 - .../_NF/Entities/Clothing/Neck/misc.yml | 17 - .../_NF/Entities/Clothing/Neck/scarfs.yml | 10 - .../Clothing/OuterClothing/armor_punk.yml | 141 -- .../Clothing/OuterClothing/coats_punk.yml | 255 -- .../Entities/Clothing/Shoes/boots_punk.yml | 43 - .../Clothing/Uniforms/jumpsuits_punk.yml | 162 -- .../_NF/Entities/Objects/Tools/umbrella.yml | 68 - .../Structures/Holographic/graffiti.yml | 1041 --------- .../Prototypes/_NF/Palettes/cyberpunk.yml | 62 - .../Prototypes/_Shitmed/Species/monkey.yml | 5 +- .../Misc/head_mirror.rsi/equipped-HELMET.png | Bin 631 -> 0 bytes .../Head/Misc/head_mirror.rsi/icon.png | Bin 714 -> 0 bytes .../Head/Misc/head_mirror.rsi/inhand-left.png | Bin 678 -> 0 bytes .../Misc/head_mirror.rsi/inhand-right.png | Bin 680 -> 0 bytes .../Head/Misc/head_mirror.rsi/meta.json | 26 - .../equipped-MASK-reptilian.png | Bin 749 -> 0 bytes .../equipped-MASK-vox.png | Bin 811 -> 0 bytes .../equipped-MASK-vulpkanin.png | Bin 819 -> 0 bytes .../gascaptaincombat.rsi/equipped-MASK.png | Bin 772 -> 0 bytes .../Mask/gascaptaincombat.rsi/icon.png | Bin 570 -> 0 bytes .../Mask/gascaptaincombat.rsi/inhand-left.png | Bin 336 -> 0 bytes .../gascaptaincombat.rsi/inhand-right.png | Bin 343 -> 0 bytes .../Mask/gascaptaincombat.rsi/meta.json | 38 - .../equipped-OUTERCLOTHING.png | Bin 1318 -> 0 bytes .../Coats/cap_trenchcoat.rsi/icon.png | Bin 535 -> 0 bytes .../Coats/cap_trenchcoat.rsi/inhand-left.png | Bin 759 -> 0 bytes .../Coats/cap_trenchcoat.rsi/inhand-right.png | Bin 709 -> 0 bytes .../Coats/cap_trenchcoat.rsi/meta.json | 26 - .../equipped-INNERCLOTHING-monkey.png | Bin 1183 -> 0 bytes .../cmo_turtle.rsi/equipped-INNERCLOTHING.png | Bin 1338 -> 0 bytes .../Jumpskirt/cmo_turtle.rsi/icon.png | Bin 842 -> 0 bytes .../Jumpskirt/cmo_turtle.rsi/inhand-left.png | Bin 893 -> 0 bytes .../Jumpskirt/cmo_turtle.rsi/inhand-right.png | Bin 921 -> 0 bytes .../Jumpskirt/cmo_turtle.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 1277 -> 0 bytes .../cmo_turtle.rsi/equipped-INNERCLOTHING.png | Bin 1449 -> 0 bytes .../Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png | Bin 837 -> 0 bytes .../Jumpsuit/cmo_turtle.rsi/inhand-left.png | Bin 892 -> 0 bytes .../Jumpsuit/cmo_turtle.rsi/inhand-right.png | Bin 917 -> 0 bytes .../Jumpsuit/cmo_turtle.rsi/meta.json | 30 - .../equipped-INNERCLOTHING.png | Bin 1125 -> 422 bytes .../Belt/chaplain_sash.rsi/equipped-BELT.png | Bin 795 -> 0 bytes .../Clothing/Belt/chaplain_sash.rsi/icon.png | Bin 732 -> 0 bytes .../Belt/chaplain_sash.rsi/inhand-left.png | Bin 637 -> 0 bytes .../Belt/chaplain_sash.rsi/inhand-right.png | Bin 636 -> 0 bytes .../Clothing/Belt/chaplain_sash.rsi/meta.json | 26 - .../Belt/chaplain_sash_overlay.rsi/book.png | Bin 712 -> 0 bytes .../Belt/chaplain_sash_overlay.rsi/bottle.png | Bin 600 -> 0 bytes .../Belt/chaplain_sash_overlay.rsi/censer.png | Bin 653 -> 0 bytes .../chaplain_sash_overlay.rsi/crucifix.png | Bin 606 -> 0 bytes .../Belt/chaplain_sash_overlay.rsi/meta.json | 26 - .../Belt/chaplain_sash_overlay.rsi/stake.png | Bin 605 -> 0 bytes .../Clothing/Belt/punk.rsi/base_belt_01.png | Bin 891 -> 0 bytes .../Belt/punk.rsi/decor_base_belt_01.png | Bin 666 -> 0 bytes .../Belt/punk.rsi/decor_base_belt_02.png | Bin 677 -> 0 bytes .../Belt/punk.rsi/decor_base_belt_03.png | Bin 670 -> 0 bytes .../Belt/punk.rsi/decor_base_belt_04.png | Bin 728 -> 0 bytes .../Belt/punk.rsi/decor_base_belt_05.png | Bin 747 -> 0 bytes .../Clothing/Belt/punk.rsi/inhand-left.png | Bin 6086 -> 0 bytes .../Clothing/Belt/punk.rsi/inhand-right.png | Bin 6080 -> 0 bytes .../_NF/Clothing/Belt/punk.rsi/mask_null.png | Bin 109 -> 0 bytes .../_NF/Clothing/Belt/punk.rsi/meta.json | 47 - .../punk_glasses.rsi/base_glasses_01.png | Bin 709 -> 0 bytes .../punk_glasses.rsi/base_glasses_02.png | Bin 662 -> 0 bytes .../decor_base_glasses_01.png | Bin 608 -> 0 bytes .../decor_base_glasses_02.png | Bin 761 -> 0 bytes .../punk_glasses.rsi/icon_base_glasses_01.png | Bin 738 -> 0 bytes .../punk_glasses.rsi/icon_base_glasses_02.png | Bin 655 -> 0 bytes .../icon_decor_base_glasses_01.png | Bin 629 -> 0 bytes .../icon_decor_base_glasses_02.png | Bin 620 -> 0 bytes .../Glasses/punk_glasses.rsi/inhand-left.png | Bin 6256 -> 0 bytes .../Glasses/punk_glasses.rsi/inhand-right.png | Bin 6224 -> 0 bytes .../Eyes/Glasses/punk_glasses.rsi/meta.json | 54 - .../Hats/bishop_mitre.rsi/equipped-HELMET.png | Bin 836 -> 0 bytes .../Head/Hats/bishop_mitre.rsi/icon.png | Bin 967 -> 0 bytes .../Hats/bishop_mitre.rsi/inhand-left.png | Bin 805 -> 0 bytes .../Hats/bishop_mitre.rsi/inhand-right.png | Bin 802 -> 0 bytes .../Head/Hats/bishop_mitre.rsi/meta.json | 26 - .../Hats/cardinal_hat.rsi/equipped-HELMET.png | Bin 829 -> 0 bytes .../Head/Hats/cardinal_hat.rsi/icon.png | Bin 687 -> 0 bytes .../Hats/cardinal_hat.rsi/inhand-left.png | Bin 811 -> 0 bytes .../Hats/cardinal_hat.rsi/inhand-right.png | Bin 804 -> 0 bytes .../Head/Hats/cardinal_hat.rsi/meta.json | 26 - .../Head/Hats/kippah.rsi/equipped-HELMET.png | Bin 723 -> 0 bytes .../Clothing/Head/Hats/kippah.rsi/icon.png | Bin 745 -> 0 bytes .../Head/Hats/kippah.rsi/inhand-left.png | Bin 696 -> 0 bytes .../Head/Hats/kippah.rsi/inhand-right.png | Bin 700 -> 0 bytes .../Clothing/Head/Hats/kippah.rsi/meta.json | 26 - .../Hats/pilgrim_hat.rsi/equipped-HELMET.png | Bin 820 -> 0 bytes .../Head/Hats/pilgrim_hat.rsi/icon.png | Bin 721 -> 0 bytes .../Head/Hats/pilgrim_hat.rsi/inhand-left.png | Bin 847 -> 0 bytes .../Hats/pilgrim_hat.rsi/inhand-right.png | Bin 836 -> 0 bytes .../Head/Hats/pilgrim_hat.rsi/meta.json | 26 - .../Hats/widebrim_hat.rsi/equipped-HELMET.png | Bin 831 -> 0 bytes .../Head/Hats/widebrim_hat.rsi/icon.png | Bin 674 -> 0 bytes .../Hats/widebrim_hat.rsi/inhand-left.png | Bin 847 -> 0 bytes .../Hats/widebrim_hat.rsi/inhand-right.png | Bin 836 -> 0 bytes .../Head/Hats/widebrim_hat.rsi/meta.json | 26 - .../witch_hunter_hat.rsi/equipped-HELMET.png | Bin 932 -> 0 bytes .../Head/Hats/witch_hunter_hat.rsi/icon.png | Bin 923 -> 0 bytes .../Hats/witch_hunter_hat.rsi/inhand-left.png | Bin 847 -> 0 bytes .../witch_hunter_hat.rsi/inhand-right.png | Bin 865 -> 0 bytes .../Head/Hats/witch_hunter_hat.rsi/meta.json | 26 - .../acid_raincoat.rsi/equipped-HELMET.png | Bin 1073 -> 0 bytes .../Hoods/Coat/acid_raincoat.rsi/icon.png | Bin 760 -> 0 bytes .../Hoods/Coat/acid_raincoat.rsi/meta.json | 18 - .../equipped-HELMET.png | Bin 1110 -> 0 bytes .../Coat/acid_raincoat_blue.rsi/icon.png | Bin 779 -> 0 bytes .../Coat/acid_raincoat_blue.rsi/meta.json | 18 - .../equipped-HELMET.png | Bin 1096 -> 0 bytes .../Coat/acid_raincoat_green.rsi/icon.png | Bin 775 -> 0 bytes .../Coat/acid_raincoat_green.rsi/meta.json | 18 - .../equipped-HELMET.png | Bin 1114 -> 0 bytes .../Coat/acid_raincoat_magenta.rsi/icon.png | Bin 780 -> 0 bytes .../Coat/acid_raincoat_magenta.rsi/meta.json | 18 - .../equipped-HELMET.png | Bin 1109 -> 0 bytes .../Coat/acid_raincoat_yellow.rsi/icon.png | Bin 781 -> 0 bytes .../Coat/acid_raincoat_yellow.rsi/meta.json | 18 - .../cardinal_hood.rsi/equipped-HELMET.png | Bin 1075 -> 0 bytes .../Head/Hoods/cardinal_hood.rsi/icon.png | Bin 679 -> 0 bytes .../Hoods/cardinal_hood.rsi/inhand-left.png | Bin 995 -> 0 bytes .../Hoods/cardinal_hood.rsi/inhand-right.png | Bin 975 -> 0 bytes .../Head/Hoods/cardinal_hood.rsi/meta.json | 26 - .../punkhalfmask.rsi/base_halfmask_01.png | Bin 895 -> 0 bytes .../decor_base_halfmask_01.png | Bin 633 -> 0 bytes .../Mask/punkhalfmask.rsi/inhand-left.png | Bin 6583 -> 0 bytes .../Mask/punkhalfmask.rsi/inhand-right.png | Bin 6468 -> 0 bytes .../Clothing/Mask/punkhalfmask.rsi/meta.json | 27 - .../Neck/Misc/crucifix.rsi/equipped-NECK.png | Bin 619 -> 0 bytes .../Clothing/Neck/Misc/crucifix.rsi/icon.png | Bin 831 -> 0 bytes .../Neck/Misc/crucifix.rsi/inhand-left.png | Bin 675 -> 0 bytes .../Neck/Misc/crucifix.rsi/inhand-right.png | Bin 690 -> 0 bytes .../Clothing/Neck/Misc/crucifix.rsi/meta.json | 26 - .../chaplain_stole.rsi/equipped-NECK.png | Bin 806 -> 0 bytes .../Neck/Scarfs/chaplain_stole.rsi/icon.png | Bin 820 -> 0 bytes .../Scarfs/chaplain_stole.rsi/inhand-left.png | Bin 737 -> 0 bytes .../chaplain_stole.rsi/inhand-right.png | Bin 746 -> 0 bytes .../Neck/Scarfs/chaplain_stole.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1263 -> 0 bytes .../Armor/bulletproof_vest_green.rsi/icon.png | Bin 858 -> 0 bytes .../inhand-left.png | Bin 934 -> 0 bytes .../inhand-right.png | Bin 908 -> 0 bytes .../bulletproof_vest_green.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1273 -> 0 bytes .../bulletproof_vest_orange.rsi/icon.png | Bin 883 -> 0 bytes .../inhand-left.png | Bin 929 -> 0 bytes .../inhand-right.png | Bin 918 -> 0 bytes .../bulletproof_vest_orange.rsi/meta.json | 26 - .../base_OuterClothing_armor_01.png | Bin 1203 -> 0 bytes .../base_OuterClothing_armor_02.png | Bin 1021 -> 0 bytes .../base_OuterClothing_armor_03.png | Bin 1117 -> 0 bytes .../base_OuterClothing_armor_04.png | Bin 1062 -> 0 bytes .../base_OuterClothing_armor_05.png | Bin 878 -> 0 bytes .../decor_base_OuterClothing_armor_01.png | Bin 794 -> 0 bytes .../decor_base_OuterClothing_armor_02.png | Bin 668 -> 0 bytes .../decor_base_OuterClothing_armor_03.png | Bin 851 -> 0 bytes .../decor_base_OuterClothing_armor_04.png | Bin 764 -> 0 bytes .../decor_base_OuterClothing_armor_05.png | Bin 764 -> 0 bytes .../decor_base_OuterClothing_armor_06.png | Bin 756 -> 0 bytes .../icon_armor_01.png | Bin 831 -> 0 bytes .../icon_armor_02.png | Bin 743 -> 0 bytes .../icon_armor_03.png | Bin 743 -> 0 bytes .../icon_armor_04.png | Bin 802 -> 0 bytes .../icon_armor_05.png | Bin 708 -> 0 bytes .../inhand-left.png | Bin 957 -> 0 bytes .../inhand-right.png | Bin 947 -> 0 bytes .../mask_null.png | Bin 109 -> 0 bytes .../bulletproof_vest_procedural.rsi/meta.json | 98 - .../overlay_base_OuterClothing_armor_01.png | Bin 6221 -> 0 bytes .../overlay_base_OuterClothing_armor_02.png | Bin 7577 -> 0 bytes .../overlay_base_OuterClothing_armor_03.png | Bin 6112 -> 0 bytes .../overlay_base_OuterClothing_armor_04.png | Bin 6265 -> 0 bytes .../base_OuterClothing_armor_01.png | Bin 1381 -> 0 bytes .../decor_base_OuterClothing_armor_01.png | Bin 961 -> 0 bytes .../decor_base_OuterClothing_armor_02.png | Bin 879 -> 0 bytes .../decor_base_OuterClothing_armor_03.png | Bin 1020 -> 0 bytes .../decor_base_OuterClothing_armor_04.png | Bin 968 -> 0 bytes .../decor_base_OuterClothing_armor_05.png | Bin 954 -> 0 bytes .../mask_null.png | Bin 109 -> 0 bytes .../meta.json | 43 - .../overlay_base_OuterClothing_armor_01.png | Bin 647 -> 0 bytes .../equipped-OUTERCLOTHING.png | Bin 1234 -> 0 bytes .../Armor/bulletproof_vest_red.rsi/icon.png | Bin 851 -> 0 bytes .../bulletproof_vest_red.rsi/inhand-left.png | Bin 921 -> 0 bytes .../bulletproof_vest_red.rsi/inhand-right.png | Bin 906 -> 0 bytes .../Armor/bulletproof_vest_red.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1639 -> 0 bytes .../Coats/acid_raincoat.rsi/icon.png | Bin 1048 -> 0 bytes .../Coats/acid_raincoat.rsi/inhand-left.png | Bin 831 -> 0 bytes .../Coats/acid_raincoat.rsi/inhand-right.png | Bin 870 -> 0 bytes .../Coats/acid_raincoat.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1730 -> 0 bytes .../Coats/acid_raincoat_blue.rsi/icon.png | Bin 1070 -> 0 bytes .../acid_raincoat_blue.rsi/inhand-left.png | Bin 860 -> 0 bytes .../acid_raincoat_blue.rsi/inhand-right.png | Bin 900 -> 0 bytes .../Coats/acid_raincoat_blue.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1778 -> 0 bytes .../Coats/acid_raincoat_green.rsi/icon.png | Bin 1100 -> 0 bytes .../acid_raincoat_green.rsi/inhand-left.png | Bin 859 -> 0 bytes .../acid_raincoat_green.rsi/inhand-right.png | Bin 902 -> 0 bytes .../Coats/acid_raincoat_green.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1718 -> 0 bytes .../Coats/acid_raincoat_magenta.rsi/icon.png | Bin 1102 -> 0 bytes .../acid_raincoat_magenta.rsi/inhand-left.png | Bin 852 -> 0 bytes .../inhand-right.png | Bin 890 -> 0 bytes .../Coats/acid_raincoat_magenta.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1789 -> 0 bytes .../Coats/acid_raincoat_yellow.rsi/icon.png | Bin 1102 -> 0 bytes .../acid_raincoat_yellow.rsi/inhand-left.png | Bin 861 -> 0 bytes .../acid_raincoat_yellow.rsi/inhand-right.png | Bin 900 -> 0 bytes .../Coats/acid_raincoat_yellow.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1411 -> 0 bytes .../Coats/blazer_jamrock.rsi/icon.png | Bin 851 -> 0 bytes .../Coats/blazer_jamrock.rsi/inhand-left.png | Bin 898 -> 0 bytes .../Coats/blazer_jamrock.rsi/inhand-right.png | Bin 904 -> 0 bytes .../Coats/blazer_jamrock.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1325 -> 0 bytes .../Coats/bomber_aerostatic.rsi/icon.png | Bin 863 -> 0 bytes .../bomber_aerostatic.rsi/inhand-left.png | Bin 853 -> 0 bytes .../bomber_aerostatic.rsi/inhand-right.png | Bin 844 -> 0 bytes .../Coats/bomber_aerostatic.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1351 -> 0 bytes .../Coats/bomber_pinksleeves.rsi/icon.png | Bin 884 -> 0 bytes .../bomber_pinksleeves.rsi/inhand-left.png | Bin 924 -> 0 bytes .../bomber_pinksleeves.rsi/inhand-right.png | Bin 931 -> 0 bytes .../Coats/bomber_pinksleeves.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1164 -> 0 bytes .../Coats/bomber_punk_red.rsi/icon.png | Bin 807 -> 0 bytes .../Coats/bomber_punk_red.rsi/inhand-left.png | Bin 893 -> 0 bytes .../bomber_punk_red.rsi/inhand-right.png | Bin 890 -> 0 bytes .../Coats/bomber_punk_red.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1435 -> 0 bytes .../Coats/jacket_biker.rsi/icon.png | Bin 887 -> 0 bytes .../Coats/jacket_biker.rsi/inhand-left.png | Bin 869 -> 0 bytes .../Coats/jacket_biker.rsi/inhand-right.png | Bin 865 -> 0 bytes .../Coats/jacket_biker.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1260 -> 0 bytes .../Coats/jacket_leather.rsi/icon.png | Bin 818 -> 0 bytes .../Coats/jacket_leather.rsi/inhand-left.png | Bin 869 -> 0 bytes .../Coats/jacket_leather.rsi/inhand-right.png | Bin 865 -> 0 bytes .../Coats/jacket_leather.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1644 -> 0 bytes .../Coats/jacket_letterman_blue.rsi/icon.png | Bin 946 -> 0 bytes .../jacket_letterman_blue.rsi/inhand-left.png | Bin 957 -> 0 bytes .../inhand-right.png | Bin 964 -> 0 bytes .../Coats/jacket_letterman_blue.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1589 -> 0 bytes .../Coats/jacket_letterman_brown.rsi/icon.png | Bin 941 -> 0 bytes .../inhand-left.png | Bin 963 -> 0 bytes .../inhand-right.png | Bin 972 -> 0 bytes .../jacket_letterman_brown.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1588 -> 0 bytes .../jacket_letterman_magenta.rsi/icon.png | Bin 938 -> 0 bytes .../inhand-left.png | Bin 943 -> 0 bytes .../inhand-right.png | Bin 946 -> 0 bytes .../jacket_letterman_magenta.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1599 -> 0 bytes .../Coats/jacket_letterman_red.rsi/icon.png | Bin 974 -> 0 bytes .../jacket_letterman_red.rsi/inhand-left.png | Bin 947 -> 0 bytes .../jacket_letterman_red.rsi/inhand-right.png | Bin 955 -> 0 bytes .../Coats/jacket_letterman_red.rsi/meta.json | 26 - .../base_OuterClothing_jacket_01.png | Bin 1004 -> 0 bytes .../base_OuterClothing_jacket_02.png | Bin 892 -> 0 bytes .../base_OuterClothing_jacket_03.png | Bin 1050 -> 0 bytes .../base_OuterClothing_jacket_04.png | Bin 964 -> 0 bytes .../base_OuterClothing_letterman.png | Bin 10468 -> 0 bytes .../decor_base_OuterClothing_jacket_01.png | Bin 11093 -> 0 bytes .../decor_base_OuterClothing_jacket_02.png | Bin 8020 -> 0 bytes .../decor_base_OuterClothing_letterman.png | Bin 10126 -> 0 bytes .../jacket_procedural.rsi/inhand-left.png | Bin 6746 -> 0 bytes .../jacket_procedural.rsi/inhand-right.png | Bin 6731 -> 0 bytes .../Coats/jacket_procedural.rsi/mask_null.png | Bin 109 -> 0 bytes .../Coats/jacket_procedural.rsi/meta.json | 83 - .../overlay_base_OuterClothing_jacket_01.png | Bin 6221 -> 0 bytes .../overlay_base_OuterClothing_jacket_02.png | Bin 7577 -> 0 bytes .../overlay_base_OuterClothing_jacket_03.png | Bin 6112 -> 0 bytes .../overlay_base_OuterClothing_jacket_04.png | Bin 6265 -> 0 bytes .../overlay_base_OuterClothing_jacket_05.png | Bin 795 -> 0 bytes .../overlay_base_OuterClothing_jacket_06.png | Bin 664 -> 0 bytes .../overlay_base_OuterClothing_jacket_07.png | Bin 672 -> 0 bytes .../equipped-OUTERCLOTHING.png | Bin 1682 -> 0 bytes .../Misc/bishop_robe.rsi/icon.png | Bin 841 -> 0 bytes .../Misc/bishop_robe.rsi/inhand-left.png | Bin 1149 -> 0 bytes .../Misc/bishop_robe.rsi/inhand-right.png | Bin 1179 -> 0 bytes .../Misc/bishop_robe.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1650 -> 0 bytes .../Misc/cardinal_robe.rsi/icon.png | Bin 1010 -> 0 bytes .../Misc/cardinal_robe.rsi/inhand-left.png | Bin 996 -> 0 bytes .../Misc/cardinal_robe.rsi/inhand-right.png | Bin 999 -> 0 bytes .../Misc/cardinal_robe.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1843 -> 0 bytes .../Misc/witch_hunter_coat.rsi/icon.png | Bin 906 -> 0 bytes .../witch_hunter_coat.rsi/inhand-left.png | Bin 466 -> 0 bytes .../witch_hunter_coat.rsi/inhand-right.png | Bin 462 -> 0 bytes .../Misc/witch_hunter_coat.rsi/meta.json | 26 - .../equipped-OUTERCLOTHING.png | Bin 1009 -> 0 bytes .../Vests/mercwebvest.rsi/icon.png | Bin 298 -> 0 bytes .../Vests/mercwebvest.rsi/inhand-left.png | Bin 345 -> 0 bytes .../Vests/mercwebvest.rsi/inhand-right.png | Bin 374 -> 0 bytes .../Vests/mercwebvest.rsi/meta.json | 26 - .../Shoes/Boots/punk.rsi/base_boots_01.png | Bin 1250 -> 0 bytes .../Boots/punk.rsi/decor_base_boots_01.png | Bin 939 -> 0 bytes .../Boots/punk.rsi/decor_base_boots_02.png | Bin 678 -> 0 bytes .../Shoes/Boots/punk.rsi/inhand-left.png | Bin 6183 -> 0 bytes .../Shoes/Boots/punk.rsi/inhand-right.png | Bin 6152 -> 0 bytes .../Shoes/Boots/punk.rsi/mask_null.png | Bin 109 -> 0 bytes .../Clothing/Shoes/Boots/punk.rsi/meta.json | 35 - .../equipped-INNERCLOTHING-monkey.png | Bin 1457 -> 0 bytes .../equipped-INNERCLOTHING.png | Bin 1722 -> 0 bytes .../Jumpsuit/chaplain-pilgrim.rsi/icon.png | Bin 844 -> 0 bytes .../chaplain-pilgrim.rsi/inhand-left.png | Bin 928 -> 0 bytes .../chaplain-pilgrim.rsi/inhand-right.png | Bin 928 -> 0 bytes .../Jumpsuit/chaplain-pilgrim.rsi/meta.json | 30 - .../punk_procedural.rsi/base_leg_short.png | Bin 478 -> 0 bytes .../punk_procedural.rsi/base_leg_standard.png | Bin 459 -> 0 bytes .../base_torso_armless.png | Bin 555 -> 0 bytes .../base_torso_croptop_armless.png | Bin 942 -> 0 bytes .../decor_base_leg_short_01.png | Bin 862 -> 0 bytes .../decor_base_leg_short_02.png | Bin 827 -> 0 bytes .../decor_base_leg_short_03.png | Bin 947 -> 0 bytes .../decor_base_leg_short_04.png | Bin 703 -> 0 bytes .../decor_base_leg_standard_01.png | Bin 6928 -> 0 bytes .../decor_base_leg_standard_02.png | Bin 6865 -> 0 bytes .../decor_base_leg_standard_03.png | Bin 7007 -> 0 bytes .../decor_base_leg_standard_04.png | Bin 6844 -> 0 bytes .../decor_base_leg_standard_05.png | Bin 6968 -> 0 bytes .../decor_base_torso_croptop_armless_01.png | Bin 747 -> 0 bytes .../decor_base_torso_croptop_armless_02.png | Bin 6776 -> 0 bytes .../decor_base_torso_croptop_armless_03.png | Bin 7299 -> 0 bytes .../punk_procedural.rsi/inhand-left.png | Bin 7010 -> 0 bytes .../punk_procedural.rsi/inhand-right.png | Bin 7040 -> 0 bytes .../punk_procedural.rsi/mask_null.png | Bin 109 -> 0 bytes .../Uniforms/punk_procedural.rsi/meta.json | 87 - .../_NF/Markers/general.rsi/meta.json | 14 - .../_NF/Markers/general.rsi/questionmark.png | Bin 8549 -> 0 bytes .../Holoprojectors/graffiti.rsi/icon.png | Bin 10093 -> 0 bytes .../Holoprojectors/graffiti.rsi/meta.json | 17 - .../Objects/Misc/censer.rsi/burnt-icon.png | Bin 919 -> 0 bytes .../_NF/Objects/Misc/censer.rsi/icon.png | Bin 919 -> 0 bytes .../Objects/Misc/censer.rsi/inhand-left.png | Bin 742 -> 0 bytes .../Objects/Misc/censer.rsi/inhand-right.png | Bin 748 -> 0 bytes .../_NF/Objects/Misc/censer.rsi/lit-icon.png | Bin 17994 -> 0 bytes .../Misc/censer.rsi/lit-inhand-left.png | Bin 10393 -> 0 bytes .../Misc/censer.rsi/lit-inhand-right.png | Bin 11049 -> 0 bytes .../_NF/Objects/Misc/censer.rsi/meta.json | 143 -- .../Objects/Misc/censer.rsi/unlit-icon.png | Bin 919 -> 0 bytes .../Misc/censer.rsi/unlit-inhand-left.png | Bin 742 -> 0 bytes .../Misc/censer.rsi/unlit-inhand-right.png | Bin 748 -> 0 bytes .../Objects/Misc/mortuary_urn.rsi/icon.png | Bin 6466 -> 0 bytes .../Misc/mortuary_urn.rsi/inhand-left.png | Bin 915 -> 0 bytes .../Misc/mortuary_urn.rsi/inhand-right.png | Bin 904 -> 0 bytes .../Objects/Misc/mortuary_urn.rsi/label.png | Bin 5928 -> 0 bytes .../Objects/Misc/mortuary_urn.rsi/meta.json | 25 - .../Tools/umbrella.rsi/flashlight-on.png | Bin 830 -> 0 bytes .../Tools/umbrella.rsi/flashlight-overlay.png | Bin 628 -> 0 bytes .../Objects/Tools/umbrella.rsi/flashlight.png | Bin 808 -> 0 bytes .../_NF/Objects/Tools/umbrella.rsi/folded.png | Bin 639 -> 0 bytes .../Tools/umbrella.rsi/inhand-left-light.png | Bin 721 -> 0 bytes .../Tools/umbrella.rsi/inhand-left.png | Bin 1037 -> 0 bytes .../Tools/umbrella.rsi/inhand-right-light.png | Bin 726 -> 0 bytes .../Tools/umbrella.rsi/inhand-right.png | Bin 1029 -> 0 bytes .../_NF/Objects/Tools/umbrella.rsi/meta.json | 39 - .../Melee/wooden_stake.rsi/equipped-BELT.png | Bin 629 -> 0 bytes .../Weapons/Melee/wooden_stake.rsi/icon.png | Bin 765 -> 0 bytes .../Melee/wooden_stake.rsi/inhand-left.png | Bin 735 -> 0 bytes .../Melee/wooden_stake.rsi/inhand-right.png | Bin 738 -> 0 bytes .../Weapons/Melee/wooden_stake.rsi/meta.json | 40 - .../Weapons/Melee/wooden_stake.rsi/spear.png | Bin 765 -> 0 bytes .../Weapons/Melee/wooden_stake.rsi/spear1.png | Bin 5591 -> 0 bytes .../wooden_stake.rsi/wielded-inhand-left.png | Bin 760 -> 0 bytes .../wooden_stake.rsi/wielded-inhand-right.png | Bin 760 -> 0 bytes .../highlighted.rsi/holograffiti01.png | Bin 1436 -> 0 bytes .../highlighted.rsi/holograffiti02.png | Bin 1224 -> 0 bytes .../highlighted.rsi/holograffiti03.png | Bin 1567 -> 0 bytes .../highlighted.rsi/holograffiti04.png | Bin 1098 -> 0 bytes .../highlighted.rsi/holograffiti05.png | Bin 1060 -> 0 bytes .../highlighted.rsi/holograffiti06.png | Bin 910 -> 0 bytes .../highlighted.rsi/holograffiti07.png | Bin 869 -> 0 bytes .../highlighted.rsi/holograffiti08.png | Bin 1033 -> 0 bytes .../highlighted.rsi/holograffiti09.png | Bin 992 -> 0 bytes .../highlighted.rsi/holograffiti10.png | Bin 647 -> 0 bytes .../highlighted.rsi/holograffiti11.png | Bin 883 -> 0 bytes .../highlighted.rsi/holograffiti12.png | Bin 1739 -> 0 bytes .../highlighted.rsi/holograffiti13.png | Bin 1271 -> 0 bytes .../highlighted.rsi/holograffiti14.png | Bin 1451 -> 0 bytes .../highlighted.rsi/holograffiti15.png | Bin 1107 -> 0 bytes .../highlighted.rsi/holograffiti16.png | Bin 833 -> 0 bytes .../highlighted.rsi/holograffiti17.png | Bin 731 -> 0 bytes .../highlighted.rsi/holograffiti18.png | Bin 781 -> 0 bytes .../highlighted.rsi/holograffiti19.png | Bin 838 -> 0 bytes .../highlighted.rsi/holograffiti20.png | Bin 1813 -> 0 bytes .../highlighted.rsi/holograffiti21.png | Bin 847 -> 0 bytes .../holograffiti_highlight01.png | Bin 1016 -> 0 bytes .../holograffiti_highlight02.png | Bin 707 -> 0 bytes .../holograffiti_highlight03.png | Bin 1020 -> 0 bytes .../holograffiti_highlight04.png | Bin 746 -> 0 bytes .../holograffiti_highlight05.png | Bin 795 -> 0 bytes .../holograffiti_highlight06.png | Bin 694 -> 0 bytes .../holograffiti_highlight07.png | Bin 757 -> 0 bytes .../holograffiti_highlight08.png | Bin 732 -> 0 bytes .../holograffiti_highlight09.png | Bin 826 -> 0 bytes .../holograffiti_highlight10.png | Bin 952 -> 0 bytes .../holograffiti_highlight11.png | Bin 764 -> 0 bytes .../holograffiti_highlight12.png | Bin 1197 -> 0 bytes .../holograffiti_highlight13.png | Bin 790 -> 0 bytes .../holograffiti_highlight14.png | Bin 1256 -> 0 bytes .../holograffiti_highlight14_1.png | Bin 605 -> 0 bytes .../holograffiti_highlight15.png | Bin 878 -> 0 bytes .../holograffiti_highlight15_1.png | Bin 850 -> 0 bytes .../holograffiti_highlight16.png | Bin 731 -> 0 bytes .../holograffiti_highlight17.png | Bin 676 -> 0 bytes .../holograffiti_highlight18.png | Bin 750 -> 0 bytes .../holograffiti_highlight19.png | Bin 701 -> 0 bytes .../holograffiti_highlight20.png | Bin 781 -> 0 bytes .../holograffiti_highlight21.png | Bin 710 -> 0 bytes .../Holo/graffiti/highlighted.rsi/meta.json | 143 -- .../graffiti/simple.rsi/holograffiti01.png | Bin 1212 -> 0 bytes .../graffiti/simple.rsi/holograffiti02.png | Bin 914 -> 0 bytes .../graffiti/simple.rsi/holograffiti03.png | Bin 880 -> 0 bytes .../graffiti/simple.rsi/holograffiti04.png | Bin 767 -> 0 bytes .../graffiti/simple.rsi/holograffiti05.png | Bin 869 -> 0 bytes .../graffiti/simple.rsi/holograffiti06.png | Bin 850 -> 0 bytes .../graffiti/simple.rsi/holograffiti07.png | Bin 809 -> 0 bytes .../graffiti/simple.rsi/holograffiti08.png | Bin 781 -> 0 bytes .../graffiti/simple.rsi/holograffiti09.png | Bin 746 -> 0 bytes .../graffiti/simple.rsi/holograffiti10.png | Bin 826 -> 0 bytes .../graffiti/simple.rsi/holograffiti11.png | Bin 704 -> 0 bytes .../graffiti/simple.rsi/holograffiti12.png | Bin 684 -> 0 bytes .../graffiti/simple.rsi/holograffiti13.png | Bin 728 -> 0 bytes .../graffiti/simple.rsi/holograffiti14.png | Bin 742 -> 0 bytes .../graffiti/simple.rsi/holograffiti15.png | Bin 800 -> 0 bytes .../graffiti/simple.rsi/holograffiti16.png | Bin 833 -> 0 bytes .../graffiti/simple.rsi/holograffiti17.png | Bin 731 -> 0 bytes .../graffiti/simple.rsi/holograffiti18.png | Bin 790 -> 0 bytes .../graffiti/simple.rsi/holograffiti19.png | Bin 801 -> 0 bytes .../graffiti/simple.rsi/holograffiti20.png | Bin 796 -> 0 bytes .../graffiti/simple.rsi/holograffiti21.png | Bin 847 -> 0 bytes .../graffiti/simple.rsi/holograffiti22.png | Bin 803 -> 0 bytes .../Holo/graffiti/simple.rsi/meta.json | 77 - .../clothing-vandalized-deny-unshaded.png | Bin 8317 -> 0 bytes .../clothing-vandalized-unshaded.png | Bin 17061 -> 0 bytes .../VendingMachines/vandalized.rsi/meta.json | 35 - 570 files changed, 9532 insertions(+), 5785 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs create mode 100644 Content.Server/Connection/UserDataExt.cs delete mode 100644 Content.Server/Fluids/EntitySystems/AbsorbentSystem.Footprints.cs create mode 100644 Content.Shared.Database/TypedHwid.cs delete mode 100644 Content.Shared/Movement/Components/SpeedModifiedByContactModifierComponent.cs delete mode 100644 Content.Shared/Slippery/SlippableModifierComponent.cs delete mode 100644 Resources/Locale/en-US/markings/lamia.ftl delete mode 100644 Resources/Prototypes/Loadouts/loadout_groups.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Belt/belts_punk.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Eyes/punk_glasses.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Head/headwear_punks.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Masks/masks_punk.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Neck/misc.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Neck/scarfs.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/OuterClothing/armor_punk.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/OuterClothing/coats_punk.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Shoes/boots_punk.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Clothing/Uniforms/jumpsuits_punk.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Objects/Tools/umbrella.yml delete mode 100644 Resources/Prototypes/_NF/Entities/Structures/Holographic/graffiti.yml delete mode 100644 Resources/Prototypes/_NF/Palettes/cyberpunk.yml delete mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-reptilian.png delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vox.png delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vulpkanin.png delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK.png delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash.rsi/equipped-BELT.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/book.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/bottle.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/censer.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/crucifix.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/stake.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/base_belt_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_03.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_04.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_05.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/mask_null.png delete mode 100644 Resources/Textures/_NF/Clothing/Belt/punk.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/base_glasses_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/base_glasses_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/decor_base_glasses_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/decor_base_glasses_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/icon_base_glasses_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/icon_base_glasses_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/icon_decor_base_glasses_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/icon_decor_base_glasses_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pilgrim_hat.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pilgrim_hat.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pilgrim_hat.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pilgrim_hat.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pilgrim_hat.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_yellow.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_yellow.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_yellow.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/base_halfmask_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/decor_base_halfmask_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_03.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_04.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_05.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_03.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_04.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_05.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_06.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_03.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_04.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_05.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/mask_null.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_03.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_04.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/base_OuterClothing_armor_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/decor_base_OuterClothing_armor_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/decor_base_OuterClothing_armor_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/decor_base_OuterClothing_armor_03.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/decor_base_OuterClothing_armor_04.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/decor_base_OuterClothing_armor_05.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/mask_null.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/overlay_base_OuterClothing_armor_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_aerostatic.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_aerostatic.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_aerostatic.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_aerostatic.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_aerostatic.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_pinksleeves.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_pinksleeves.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_pinksleeves.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_pinksleeves.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_pinksleeves.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_punk_red.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_punk_red.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_punk_red.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_punk_red.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_punk_red.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_blue.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_blue.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_blue.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_blue.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_blue.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_03.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_04.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_letterman.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_jacket_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_jacket_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_letterman.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/mask_null.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_01.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_02.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_03.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_04.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_05.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_06.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_07.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/base_boots_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/decor_base_boots_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/decor_base_boots_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/mask_null.png delete mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_leg_short.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_leg_standard.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_torso_armless.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_torso_croptop_armless.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_03.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_04.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_03.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_04.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_05.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_torso_croptop_armless_01.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_torso_croptop_armless_02.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_torso_croptop_armless_03.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/mask_null.png delete mode 100644 Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Markers/general.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Markers/general.rsi/questionmark.png delete mode 100644 Resources/Textures/_NF/Objects/Devices/Holoprojectors/graffiti.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Objects/Devices/Holoprojectors/graffiti.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/burnt-icon.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/lit-icon.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/lit-inhand-left.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/lit-inhand-right.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/unlit-icon.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/unlit-inhand-left.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/censer.rsi/unlit-inhand-right.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/label.png delete mode 100644 Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/flashlight-on.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/flashlight-overlay.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/flashlight.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/folded.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/inhand-left-light.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/inhand-right-light.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Objects/Tools/umbrella.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/equipped-BELT.png delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/icon.png delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/inhand-left.png delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/inhand-right.png delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/spear.png delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/spear1.png delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/wielded-inhand-left.png delete mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/wielded-inhand-right.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti01.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti02.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti03.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti04.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti05.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti06.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti07.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti08.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti09.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti10.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti11.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti12.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti13.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti14.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti15.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti16.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti17.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti18.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti19.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti20.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti21.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight01.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight02.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight03.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight04.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight05.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight06.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight07.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight08.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight09.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight10.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight11.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight12.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight13.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight14.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight14_1.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight15.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight15_1.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight16.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight17.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight18.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight19.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight20.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight21.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti01.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti02.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti03.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti04.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti05.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti06.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti07.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti08.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti09.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti10.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti11.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti12.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti13.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti14.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti15.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti16.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti17.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti18.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti19.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti20.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti21.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti22.png delete mode 100644 Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/meta.json delete mode 100644 Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/clothing-vandalized-deny-unshaded.png delete mode 100644 Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/clothing-vandalized-unshaded.png delete mode 100644 Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/meta.json diff --git a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs index dc263d6055..a034f503b4 100644 --- a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs +++ b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs @@ -22,11 +22,11 @@ namespace Content.Client.Administration.UI.BanPanel; [GenerateTypedNameReferences] public sealed partial class BanPanel : DefaultWindow { - public event Action? BanSubmitted; + public event Action? BanSubmitted; public event Action? PlayerChanged; private string? PlayerUsername { get; set; } private (IPAddress, int)? IpAddress { get; set; } - private byte[]? Hwid { get; set; } + private ImmutableTypedHwid? Hwid { get; set; } private double TimeEntered { get; set; } private uint Multiplier { get; set; } private bool HasBanFlag { get; set; } @@ -371,9 +371,8 @@ private void OnIpChanged() private void OnHwidChanged() { var hwidString = HwidLine.Text; - var length = 3 * (hwidString.Length / 4) - hwidString.TakeLast(2).Count(c => c == '='); - Hwid = new byte[length]; - if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !Convert.TryFromBase64String(hwidString, Hwid, out _)) + ImmutableTypedHwid? hwid = null; + if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !ImmutableTypedHwid.TryParse(hwidString, out hwid)) { ErrorLevel |= ErrorLevelEnum.Hwid; HwidLine.ModulateSelfOverride = Color.Red; @@ -390,7 +389,7 @@ private void OnHwidChanged() Hwid = null; return; } - Hwid = Convert.FromHexString(hwidString); + Hwid = hwid; } private void OnTypeChanged() diff --git a/Content.IntegrationTests/Tests/Commands/PardonCommand.cs b/Content.IntegrationTests/Tests/Commands/PardonCommand.cs index 4db9eabf5c..9e57cd4b0e 100644 --- a/Content.IntegrationTests/Tests/Commands/PardonCommand.cs +++ b/Content.IntegrationTests/Tests/Commands/PardonCommand.cs @@ -32,9 +32,9 @@ public async Task PardonTest() // No bans on record Assert.Multiple(async () => { - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); Assert.That(await sDatabase.GetServerBanAsync(1), Is.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Is.Empty); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Is.Empty); }); // Try to pardon a ban that does not exist @@ -43,9 +43,9 @@ public async Task PardonTest() // Still no bans on record Assert.Multiple(async () => { - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); Assert.That(await sDatabase.GetServerBanAsync(1), Is.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Is.Empty); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Is.Empty); }); var banReason = "test"; @@ -57,9 +57,9 @@ public async Task PardonTest() // Should have one ban on record now Assert.Multiple(async () => { - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Not.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Not.Null); Assert.That(await sDatabase.GetServerBanAsync(1), Is.Not.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); }); await pair.RunTicksSync(5); @@ -70,13 +70,13 @@ public async Task PardonTest() await server.WaitPost(() => sConsole.ExecuteCommand("pardon 2")); // The existing ban is unaffected - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Not.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Not.Null); var ban = await sDatabase.GetServerBanAsync(1); Assert.Multiple(async () => { Assert.That(ban, Is.Not.Null); - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); // Check that it matches Assert.That(ban.Id, Is.EqualTo(1)); @@ -95,7 +95,7 @@ public async Task PardonTest() await server.WaitPost(() => sConsole.ExecuteCommand("pardon 1")); // No bans should be returned - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); // Direct id lookup returns a pardoned ban var pardonedBan = await sDatabase.GetServerBanAsync(1); @@ -105,7 +105,7 @@ public async Task PardonTest() Assert.That(pardonedBan, Is.Not.Null); // The list is still returned since that ignores pardons - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); Assert.That(pardonedBan.Id, Is.EqualTo(1)); Assert.That(pardonedBan.UserId, Is.EqualTo(clientId)); @@ -133,13 +133,13 @@ public async Task PardonTest() Assert.Multiple(async () => { // No bans should be returned - Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null), Is.Null); + Assert.That(await sDatabase.GetServerBanAsync(null, clientId, null, null), Is.Null); // Direct id lookup returns a pardoned ban Assert.That(await sDatabase.GetServerBanAsync(1), Is.Not.Null); // The list is still returned since that ignores pardons - Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null), Has.Count.EqualTo(1)); + Assert.That(await sDatabase.GetServerBansAsync(null, clientId, null, null), Has.Count.EqualTo(1)); }); // Reconnect client. Slightly faster than dirtying the pair. diff --git a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs new file mode 100644 index 0000000000..155d6a163f --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs @@ -0,0 +1,2072 @@ +// +using System; +using System.Net; +using System.Text.Json; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using NpgsqlTypes; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20241111170112_ModernHwid")] + partial class ModernHwid + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("smallint") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Message") + .HasAnnotation("Npgsql:TsVectorConfig", "english"); + + NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("LogId") + .HasColumnType("integer") + .HasColumnName("log_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_messages_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("Dismissed") + .HasColumnType("boolean") + .HasColumnName("dismissed"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("boolean") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_notes_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("boolean") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_watchlists_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("ban_template_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("Length") + .HasColumnType("interval") + .HasColumnName("length"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("smallint") + .HasColumnName("denied"); + + b.Property("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("play_time_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("interval") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("text") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", null, t => + { + t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("integer") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("LoadoutName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("loadout_name"); + + b.Property("ProfileLoadoutGroupId") + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("GroupName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("group_name"); + + b.Property("ProfileRoleLoadoutId") + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property("RoleName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("RoleId") + .HasColumnType("text") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("round_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ServerId") + .HasColumnType("integer") + .HasColumnName("server_id"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("integer") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_hit_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("role_unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("trait_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uploaded_resource_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("text") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("integer") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("integer") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("integer") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs new file mode 100644 index 0000000000..c70a5ffaa5 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs @@ -0,0 +1,62 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class ModernHwid : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "hwid_type", + table: "server_role_ban", + type: "integer", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "hwid_type", + table: "server_ban", + type: "integer", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "last_seen_hwid_type", + table: "player", + type: "integer", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "hwid_type", + table: "connection_log", + type: "integer", + nullable: true, + defaultValue: 0); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_role_ban"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_ban"); + + migrationBuilder.DropColumn( + name: "last_seen_hwid_type", + table: "player"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs new file mode 100644 index 0000000000..dc1b4a0eeb --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs @@ -0,0 +1,2076 @@ +// +using System; +using System.Net; +using System.Text.Json; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using NpgsqlTypes; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20241111193608_ConnectionTrust")] + partial class ConnectionTrust + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("smallint") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Message") + .HasAnnotation("Npgsql:TsVectorConfig", "english"); + + NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("LogId") + .HasColumnType("integer") + .HasColumnName("log_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_messages_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("Dismissed") + .HasColumnType("boolean") + .HasColumnName("dismissed"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("boolean") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_notes_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("boolean") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_watchlists_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("ban_template_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("Length") + .HasColumnType("interval") + .HasColumnName("length"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("smallint") + .HasColumnName("denied"); + + b.Property("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property("Trust") + .HasColumnType("real") + .HasColumnName("trust"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("play_time_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("interval") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("text") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", null, t => + { + t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("integer") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("LoadoutName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("loadout_name"); + + b.Property("ProfileLoadoutGroupId") + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_loadout_group_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("GroupName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("group_name"); + + b.Property("ProfileRoleLoadoutId") + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_role_loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property("RoleName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("RoleId") + .HasColumnType("text") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("round_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ServerId") + .HasColumnType("integer") + .HasColumnName("server_id"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("integer") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_hit_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("role_unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("trait_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uploaded_resource_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("text") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("integer") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("integer") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("integer") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group~"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loa~"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs new file mode 100644 index 0000000000..debb36aacc --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class ConnectionTrust : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "trust", + table: "connection_log", + type: "real", + nullable: false, + defaultValue: 0f); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "trust", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index c86d08b8dc..c39fb6872b 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -557,6 +557,19 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("ban_template", (string)null); }); + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Property("Id") @@ -575,10 +588,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("smallint") .HasColumnName("denied"); - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - b.Property("ServerId") .ValueGeneratedOnAdd() .HasColumnType("integer") @@ -589,6 +598,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp with time zone") .HasColumnName("time"); + b.Property("Trust") + .HasColumnType("real") + .HasColumnName("trust"); + b.Property("UserId") .HasColumnType("uuid") .HasColumnName("user_id"); @@ -747,10 +760,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("inet") .HasColumnName("last_seen_address"); - b.Property("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - b.Property("LastSeenTime") .HasColumnType("timestamp with time zone") .HasColumnName("last_seen_time"); @@ -1032,10 +1041,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp with time zone") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("boolean") .HasColumnName("hidden"); @@ -1166,10 +1171,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp with time zone") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("boolean") .HasColumnName("hidden"); @@ -1611,6 +1612,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired() .HasConstraintName("FK_connection_log_server_server_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + b.Navigation("Server"); }); @@ -1638,6 +1667,37 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("integer") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + modelBuilder.Entity("Content.Server.Database.Profile", b => { b.HasOne("Content.Server.Database.Preference", "Preference") @@ -1696,8 +1756,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -1745,8 +1833,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_role_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); diff --git a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs new file mode 100644 index 0000000000..56a9fe0a05 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs @@ -0,0 +1,1995 @@ +// +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20241111170107_ModernHwid")] + partial class ModernHwid + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("Dismissed") + .HasColumnType("INTEGER") + .HasColumnName("dismissed"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("ban_template_id"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("Length") + .HasColumnType("TEXT") + .HasColumnName("length"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.Property("Title") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_id"); + + b.Property("LoadoutName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("loadout_name"); + + b.Property("ProfileLoadoutGroupId") + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.Property("GroupName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("group_name"); + + b.Property("ProfileRoleLoadoutId") + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("RoleName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("RoleId") + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("StartDate") + .HasColumnType("TEXT") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group_id"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loadout_id"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs new file mode 100644 index 0000000000..97b5dafd03 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs @@ -0,0 +1,62 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class ModernHwid : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "hwid_type", + table: "server_role_ban", + type: "INTEGER", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "hwid_type", + table: "server_ban", + type: "INTEGER", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "last_seen_hwid_type", + table: "player", + type: "INTEGER", + nullable: true, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "hwid_type", + table: "connection_log", + type: "INTEGER", + nullable: true, + defaultValue: 0); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_role_ban"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "server_ban"); + + migrationBuilder.DropColumn( + name: "last_seen_hwid_type", + table: "player"); + + migrationBuilder.DropColumn( + name: "hwid_type", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs new file mode 100644 index 0000000000..bd4e20a464 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs @@ -0,0 +1,1999 @@ +// +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20241111193602_ConnectionTrust")] + partial class ConnectionTrust + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("Dismissed") + .HasColumnType("INTEGER") + .HasColumnName("dismissed"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.BanTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("ban_template_id"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("Length") + .HasColumnType("TEXT") + .HasColumnName("length"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.Property("Title") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("Id") + .HasName("PK_ban_template"); + + b.ToTable("ban_template", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("Trust") + .HasColumnType("REAL") + .HasColumnName("trust"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("Time"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_id"); + + b.Property("LoadoutName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("loadout_name"); + + b.Property("ProfileLoadoutGroupId") + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout"); + + b.HasIndex("ProfileLoadoutGroupId"); + + b.ToTable("profile_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_loadout_group_id"); + + b.Property("GroupName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("group_name"); + + b.Property("ProfileRoleLoadoutId") + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.HasKey("Id") + .HasName("PK_profile_loadout_group"); + + b.HasIndex("ProfileRoleLoadoutId"); + + b.ToTable("profile_loadout_group", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_role_loadout_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("RoleName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_name"); + + b.HasKey("Id") + .HasName("PK_profile_role_loadout"); + + b.HasIndex("ProfileId"); + + b.ToTable("profile_role_loadout", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("RoleId") + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.HasKey("PlayerUserId", "RoleId") + .HasName("PK_role_whitelists"); + + b.ToTable("role_whitelists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("StartDate") + .HasColumnType("TEXT") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadout", b => + { + b.HasOne("Content.Server.Database.ProfileLoadoutGroup", "ProfileLoadoutGroup") + .WithMany("Loadouts") + .HasForeignKey("ProfileLoadoutGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_profile_loadout_group_profile_loadout_group_id"); + + b.Navigation("ProfileLoadoutGroup"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.HasOne("Content.Server.Database.ProfileRoleLoadout", "ProfileRoleLoadout") + .WithMany("Groups") + .HasForeignKey("ProfileRoleLoadoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_loadout_group_profile_role_loadout_profile_role_loadout_id"); + + b.Navigation("ProfileRoleLoadout"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_role_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.RoleWhitelist", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("JobWhitelists") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_role_whitelists_player_player_user_id"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + + b.Navigation("CreatedBy"); + + b.Navigation("HWId"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + + b.Navigation("JobWhitelists"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Loadouts"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileLoadoutGroup", b => + { + b.Navigation("Loadouts"); + }); + + modelBuilder.Entity("Content.Server.Database.ProfileRoleLoadout", b => + { + b.Navigation("Groups"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs new file mode 100644 index 0000000000..3a7fd784e1 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class ConnectionTrust : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "trust", + table: "connection_log", + type: "REAL", + nullable: false, + defaultValue: 0f); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "trust", + table: "connection_log"); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index a5baf9d04b..3b2b680ddf 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -526,6 +526,19 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("ban_template", (string)null); }); + modelBuilder.Entity("Content.Server.Database.Blacklist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_blacklist"); + + b.ToTable("blacklist", (string)null); + }); + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => { b.Property("Id") @@ -542,10 +555,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("INTEGER") .HasColumnName("denied"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("ServerId") .ValueGeneratedOnAdd() .HasColumnType("INTEGER") @@ -556,6 +565,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("time"); + b.Property("Trust") + .HasColumnType("REAL") + .HasColumnName("trust"); + b.Property("UserId") .HasColumnType("TEXT") .HasColumnName("user_id"); @@ -703,10 +716,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("last_seen_address"); - b.Property("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - b.Property("LastSeenTime") .HasColumnType("TEXT") .HasColumnName("last_seen_time"); @@ -975,10 +984,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1103,10 +1108,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("expiration_time"); - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - b.Property("Hidden") .HasColumnType("INTEGER") .HasColumnName("hidden"); @@ -1538,6 +1539,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired() .HasConstraintName("FK_connection_log_server_server_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ConnectionLogId") + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ConnectionLogId"); + + b1.ToTable("connection_log"); + + b1.WithOwner() + .HasForeignKey("ConnectionLogId") + .HasConstraintName("FK_connection_log_connection_log_connection_log_id"); + }); + + b.Navigation("HWId"); + b.Navigation("Server"); }); @@ -1565,6 +1594,37 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Profile"); }); + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.OwnsOne("Content.Server.Database.TypedHwid", "LastSeenHWId", b1 => + { + b1.Property("PlayerId") + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("last_seen_hwid_type"); + + b1.HasKey("PlayerId"); + + b1.ToTable("player"); + + b1.WithOwner() + .HasForeignKey("PlayerId") + .HasConstraintName("FK_player_player_player_id"); + }); + + b.Navigation("LastSeenHWId"); + }); + modelBuilder.Entity("Content.Server.Database.Profile", b => { b.HasOne("Content.Server.Database.Preference", "Preference") @@ -1623,8 +1683,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerBanId"); + + b1.ToTable("server_ban"); + + b1.WithOwner() + .HasForeignKey("ServerBanId") + .HasConstraintName("FK_server_ban_server_ban_server_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); @@ -1672,8 +1760,36 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("RoundId") .HasConstraintName("FK_server_role_ban_round_round_id"); + b.OwnsOne("Content.Server.Database.TypedHwid", "HWId", b1 => + { + b1.Property("ServerRoleBanId") + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b1.Property("Hwid") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b1.Property("Type") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("hwid_type"); + + b1.HasKey("ServerRoleBanId"); + + b1.ToTable("server_role_ban"); + + b1.WithOwner() + .HasForeignKey("ServerRoleBanId") + .HasConstraintName("FK_server_role_ban_server_role_ban_server_role_ban_id"); + }); + b.Navigation("CreatedBy"); + b.Navigation("HWId"); + b.Navigation("LastEditedBy"); b.Navigation("Round"); diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index 96f2aad380..377718bcba 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net; using System.Text.Json; @@ -315,6 +317,47 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .HasForeignKey(w => w.PlayerUserId) .HasPrincipalKey(p => p.UserId) .OnDelete(DeleteBehavior.Cascade); + + // Changes for modern HWID integration + modelBuilder.Entity() + .OwnsOne(p => p.LastSeenHWId) + .Property(p => p.Hwid) + .HasColumnName("last_seen_hwid"); + + modelBuilder.Entity() + .OwnsOne(p => p.LastSeenHWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); + + modelBuilder.Entity() + .OwnsOne(p => p.HWId) + .Property(p => p.Hwid) + .HasColumnName("hwid"); + + modelBuilder.Entity() + .OwnsOne(p => p.HWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); + + modelBuilder.Entity() + .OwnsOne(p => p.HWId) + .Property(p => p.Hwid) + .HasColumnName("hwid"); + + modelBuilder.Entity() + .OwnsOne(p => p.HWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); + + modelBuilder.Entity() + .OwnsOne(p => p.HWId) + .Property(p => p.Hwid) + .HasColumnName("hwid"); + + modelBuilder.Entity() + .OwnsOne(p => p.HWId) + .Property(p => p.Type) + .HasDefaultValue(HwidType.Legacy); } public virtual IQueryable SearchLogs(IQueryable query, string searchText) @@ -454,7 +497,7 @@ public class Player public string LastSeenUserName { get; set; } = null!; public DateTime LastSeenTime { get; set; } public IPAddress LastSeenAddress { get; set; } = null!; - public byte[]? LastSeenHWId { get; set; } + public TypedHwid? LastSeenHWId { get; set; } // Data that changes with each round public List Rounds { get; set; } = null!; @@ -603,7 +646,7 @@ public interface IBanCommon where TUnban : IUnbanCommon int Id { get; set; } Guid? PlayerUserId { get; set; } NpgsqlInet? Address { get; set; } - byte[]? HWId { get; set; } + TypedHwid? HWId { get; set; } DateTime BanTime { get; set; } DateTime? ExpirationTime { get; set; } string Reason { get; set; } @@ -688,7 +731,7 @@ public class ServerBan : IBanCommon /// /// Hardware ID of the banned player. /// - public byte[]? HWId { get; set; } + public TypedHwid? HWId { get; set; } /// /// The time when the ban was applied by an administrator. @@ -826,7 +869,7 @@ public class ConnectionLog public DateTime Time { get; set; } public IPAddress Address { get; set; } = null!; - public byte[]? HWId { get; set; } + public TypedHwid? HWId { get; set; } public ConnectionDenyReason? Denied { get; set; } @@ -843,6 +886,8 @@ public class ConnectionLog public List BanHits { get; set; } = null!; public Server Server { get; set; } = null!; + + public float Trust { get; set; } } public enum ConnectionDenyReason : byte @@ -880,7 +925,7 @@ public sealed class ServerRoleBan : IBanCommon public Guid? PlayerUserId { get; set; } [Required] public TimeSpan PlaytimeAtNote { get; set; } public NpgsqlInet? Address { get; set; } - public byte[]? HWId { get; set; } + public TypedHwid? HWId { get; set; } public DateTime BanTime { get; set; } @@ -1141,4 +1186,37 @@ public sealed class BanTemplate /// public bool Hidden { get; set; } } + + /// + /// A hardware ID value together with its . + /// + /// + [Owned] + public sealed class TypedHwid + { + public byte[] Hwid { get; set; } = default!; + public HwidType Type { get; set; } + + [return: NotNullIfNotNull(nameof(immutable))] + public static implicit operator TypedHwid?(ImmutableTypedHwid? immutable) + { + if (immutable == null) + return null; + + return new TypedHwid + { + Hwid = immutable.Hwid.ToArray(), + Type = immutable.Type, + }; + } + + [return: NotNullIfNotNull(nameof(hwid))] + public static implicit operator ImmutableTypedHwid?(TypedHwid? hwid) + { + if (hwid == null) + return null; + + return new ImmutableTypedHwid(hwid.Hwid.ToImmutableArray(), hwid.Type); + } + } } diff --git a/Content.Server/Administration/BanList/BanListEui.cs b/Content.Server/Administration/BanList/BanListEui.cs index 8ddc7459d7..2ca126bf16 100644 --- a/Content.Server/Administration/BanList/BanListEui.cs +++ b/Content.Server/Administration/BanList/BanListEui.cs @@ -54,7 +54,7 @@ private void OnPermsChanged(AdminPermsChangedEventArgs args) private async Task LoadBans(NetUserId userId) { - foreach (var ban in await _db.GetServerBansAsync(null, userId, null)) + foreach (var ban in await _db.GetServerBansAsync(null, userId, null, null)) { SharedServerUnban? unban = null; if (ban.Unban is { } unbanDef) @@ -74,7 +74,7 @@ private async Task LoadBans(NetUserId userId) ? (address.address.ToString(), address.cidrMask) : null; - hwid = ban.HWId == null ? null : Convert.ToBase64String(ban.HWId.Value.AsSpan()); + hwid = ban.HWId?.ToString(); } Bans.Add(new SharedServerBan( @@ -95,7 +95,7 @@ private async Task LoadBans(NetUserId userId) private async Task LoadRoleBans(NetUserId userId) { - foreach (var ban in await _db.GetServerRoleBansAsync(null, userId, null)) + foreach (var ban in await _db.GetServerRoleBansAsync(null, userId, null, null)) { SharedServerUnban? unban = null; if (ban.Unban is { } unbanDef) @@ -115,7 +115,7 @@ private async Task LoadRoleBans(NetUserId userId) ? (address.address.ToString(), address.cidrMask) : null; - hwid = ban.HWId == null ? null : Convert.ToBase64String(ban.HWId.Value.AsSpan()); + hwid = ban.HWId?.ToString(); } RoleBans.Add(new SharedServerRoleBan( ban.Id, diff --git a/Content.Server/Administration/BanPanelEui.cs b/Content.Server/Administration/BanPanelEui.cs index aa6bd8d4bf..3e33693208 100644 --- a/Content.Server/Administration/BanPanelEui.cs +++ b/Content.Server/Administration/BanPanelEui.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using System.Net.Sockets; using Content.Server.Administration.Managers; @@ -28,7 +27,7 @@ public sealed class BanPanelEui : BaseEui private NetUserId? PlayerId { get; set; } private string PlayerName { get; set; } = string.Empty; private IPAddress? LastAddress { get; set; } - private ImmutableArray? LastHwid { get; set; } + private ImmutableTypedHwid? LastHwid { get; set; } private const int Ipv4_CIDR = 32; private const int Ipv6_CIDR = 64; @@ -52,7 +51,7 @@ public override void HandleMessage(EuiMessageBase msg) switch (msg) { case BanPanelEuiStateMsg.CreateBanRequest r: - BanPlayer(r.Player, r.IpAddress, r.UseLastIp, r.Hwid?.ToImmutableArray(), r.UseLastHwid, r.Minutes, r.Severity, r.Reason, r.Roles, r.Erase); + BanPlayer(r.Player, r.IpAddress, r.UseLastIp, r.Hwid, r.UseLastHwid, r.Minutes, r.Severity, r.Reason, r.Roles, r.Erase); break; case BanPanelEuiStateMsg.GetPlayerInfoRequest r: ChangePlayer(r.PlayerUsername); @@ -60,7 +59,7 @@ public override void HandleMessage(EuiMessageBase msg) } } - private async void BanPlayer(string? target, string? ipAddressString, bool useLastIp, ImmutableArray? hwid, bool useLastHwid, uint minutes, NoteSeverity severity, string reason, IReadOnlyCollection? roles, bool erase) + private async void BanPlayer(string? target, string? ipAddressString, bool useLastIp, ImmutableTypedHwid? hwid, bool useLastHwid, uint minutes, NoteSeverity severity, string reason, IReadOnlyCollection? roles, bool erase) { if (!_admins.HasAdminFlag(Player, AdminFlags.Ban)) { @@ -157,7 +156,7 @@ public async void ChangePlayer(string playerNameOrId) ChangePlayer(located?.UserId, located?.Username ?? string.Empty, located?.LastAddress, located?.LastHWId); } - public void ChangePlayer(NetUserId? playerId, string playerName, IPAddress? lastAddress, ImmutableArray? lastHwid) + public void ChangePlayer(NetUserId? playerId, string playerName, IPAddress? lastAddress, ImmutableTypedHwid? lastHwid) { PlayerId = playerId; PlayerName = playerName; diff --git a/Content.Server/Administration/Commands/BanListCommand.cs b/Content.Server/Administration/Commands/BanListCommand.cs index a5bc97dce3..2f7093ae1d 100644 --- a/Content.Server/Administration/Commands/BanListCommand.cs +++ b/Content.Server/Administration/Commands/BanListCommand.cs @@ -38,7 +38,7 @@ public override async void Execute(IConsoleShell shell, string argStr, string[] if (shell.Player is not { } player) { - var bans = await _dbManager.GetServerBansAsync(data.LastAddress, data.UserId, data.LastHWId, false); + var bans = await _dbManager.GetServerBansAsync(data.LastAddress, data.UserId, data.LastLegacyHWId, data.LastModernHWIds, false); if (bans.Count == 0) { diff --git a/Content.Server/Administration/Commands/RoleBanListCommand.cs b/Content.Server/Administration/Commands/RoleBanListCommand.cs index aa416bc33f..c87a0b3b54 100644 --- a/Content.Server/Administration/Commands/RoleBanListCommand.cs +++ b/Content.Server/Administration/Commands/RoleBanListCommand.cs @@ -44,7 +44,7 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) var targetUid = located.UserId; var targetAddress = located.LastAddress; - var bans = await dbMan.GetServerRoleBansAsync(targetAddress, targetUid, targetHWid, includeUnbanned); + var bans = await dbMan.GetServerRoleBansAsync(targetAddress, targetUid, located.LastLegacyHWId, located.LastModernHWIds, includeUnbanned); if (bans.Count == 0) { diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index e04a6e3d35..d36bcd29d0 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -62,6 +62,15 @@ public void Initialize() private async Task CachePlayerData(ICommonSession player, CancellationToken cancel) { var flags = await _db.GetBanExemption(player.UserId, cancel); + + var netChannel = player.Channel; + ImmutableArray? hwId = netChannel.UserData.HWId.Length == 0 ? null : netChannel.UserData.HWId; + var modernHwids = netChannel.UserData.ModernHWIds; + var roleBans = await _db.GetServerRoleBansAsync(netChannel.RemoteEndPoint.Address, player.UserId, hwId, modernHwids, false); + + var userRoleBans = new List(); + foreach (var ban in roleBans) + userRoleBans.Add(ban); cancel.ThrowIfCancellationRequested(); _cachedBanExemptions[player] = flags; _cachedRoleBans[player] = userRoleBans; @@ -121,7 +130,7 @@ public void Restart() } #region Server Bans - public async void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray? hwid, uint? minutes, NoteSeverity severity, string reason) + public async void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, uint? minutes, NoteSeverity severity, string reason) { DateTimeOffset? expires = null; if (minutes > 0) @@ -155,9 +164,7 @@ public async void CreateServerBan(NetUserId? target, string? targetUsername, Net var addressRangeString = addressRange != null ? $"{addressRange.Value.Item1}/{addressRange.Value.Item2}" : "null"; - var hwidString = hwid != null - ? string.Concat(hwid.Value.Select(x => x.ToString("x2"))) - : "null"; + var hwidString = hwid?.ToString() ?? "null"; var expiresString = expires == null ? Loc.GetString("server-ban-string-never") : $"{expires}"; var key = _cfg.GetCVar(CCVars.AdminShowPIIOnBan) ? "server-ban-string" : "server-ban-string-no-pii"; @@ -197,6 +204,7 @@ private bool BanMatchesPlayer(ICommonSession player, ServerBanDef ban) UserId = player.UserId, Address = player.Channel.RemoteEndPoint.Address, HWId = player.Channel.UserData.HWId, + ModernHWIds = player.Channel.UserData.ModernHWIds, // It's possible for the player to not have cached data loading yet due to coincidental timing. // If this is the case, we assume they have all flags to avoid false-positives. ExemptFlags = _cachedBanExemptions.GetValueOrDefault(player, ServerBanExemptFlags.All), @@ -217,7 +225,7 @@ private void KickForBanDef(ICommonSession player, ServerBanDef def) #region Job Bans // If you are trying to remove timeOfBan, please don't. It's there because the note system groups role bans by time, reason and banning admin. // Removing it will clutter the note list. Please also make sure that department bans are applied to roles with the same DateTimeOffset. - public async void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan) + public async void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan) { if (!_prototypeManager.TryIndex(role, out JobPrototype? _)) { diff --git a/Content.Server/Administration/Managers/IBanManager.cs b/Content.Server/Administration/Managers/IBanManager.cs index c11e310a82..fc192cc306 100644 --- a/Content.Server/Administration/Managers/IBanManager.cs +++ b/Content.Server/Administration/Managers/IBanManager.cs @@ -24,7 +24,7 @@ public interface IBanManager /// Number of minutes to ban for. 0 and null mean permanent /// Severity of the resulting ban note /// Reason for the ban - public void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray? hwid, uint? minutes, NoteSeverity severity, string reason); + public void CreateServerBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, uint? minutes, NoteSeverity severity, string reason); public HashSet? GetRoleBans(NetUserId playerUserId); public HashSet>? GetJobBans(NetUserId playerUserId); @@ -37,7 +37,7 @@ public interface IBanManager /// Reason for the ban /// Number of minutes to ban for. 0 and null mean permanent /// Time when the ban was applied, used for grouping role bans - public void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableArray? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan); + public void CreateRoleBan(NetUserId? target, string? targetUsername, NetUserId? banningAdmin, (IPAddress, int)? addressRange, ImmutableTypedHwid? hwid, string role, uint? minutes, NoteSeverity severity, string reason, DateTimeOffset timeOfBan); /// /// Pardons a role ban for the specified target, username or GUID diff --git a/Content.Server/Administration/PlayerLocator.cs b/Content.Server/Administration/PlayerLocator.cs index 64a85f19ad..25cc771468 100644 --- a/Content.Server/Administration/PlayerLocator.cs +++ b/Content.Server/Administration/PlayerLocator.cs @@ -5,16 +5,42 @@ using System.Net.Http.Json; using System.Threading; using System.Threading.Tasks; +using Content.Server.Connection; using Content.Server.Database; +using Content.Shared.Database; using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared; using Robust.Shared.Configuration; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Server.Administration { - public sealed record LocatedPlayerData(NetUserId UserId, IPAddress? LastAddress, ImmutableArray? LastHWId, string Username); + /// + /// Contains data resolved via . + /// + /// The ID of the located user. + /// The last known IP address that the user connected with. + /// + /// The last known HWID that the user connected with. + /// This should be used for placing new records involving HWIDs, such as bans. + /// For looking up data based on HWID, use combined and . + /// + /// The last known username for the user connected with. + /// + /// The last known legacy HWID value this user connected with. Only use for old lookups! + /// + /// + /// The set of last known modern HWIDs the user connected with. + /// + public sealed record LocatedPlayerData( + NetUserId UserId, + IPAddress? LastAddress, + ImmutableTypedHwid? LastHWId, + string Username, + ImmutableArray? LastLegacyHWId, + ImmutableArray> LastModernHWIds); /// /// Utilities for finding user IDs that extend to more than the server database. @@ -67,63 +93,42 @@ public PlayerLocator() { // Check people currently on the server, the easiest case. if (_playerManager.TryGetSessionByUsername(playerName, out var session)) - { - var userId = session.UserId; - var address = session.Channel.RemoteEndPoint.Address; - var hwId = session.Channel.UserData.HWId; - return new LocatedPlayerData(userId, address, hwId, session.Name); - } + return ReturnForSession(session); // Check database for past players. var record = await _db.GetPlayerRecordByUserName(playerName, cancel); if (record != null) - return new LocatedPlayerData(record.UserId, record.LastSeenAddress, record.HWId, record.LastSeenUserName); + return ReturnForPlayerRecord(record); // If all else fails, ask the auth server. var authServer = _configurationManager.GetCVar(CVars.AuthServer); var requestUri = $"{authServer}api/query/name?name={WebUtility.UrlEncode(playerName)}"; using var resp = await _httpClient.GetAsync(requestUri, cancel); - if (resp.StatusCode == HttpStatusCode.NotFound) - return null; - - if (!resp.IsSuccessStatusCode) - { - _sawmill.Error("Auth server returned bad response {StatusCode}!", resp.StatusCode); - return null; - } - - var responseData = await resp.Content.ReadFromJsonAsync(cancellationToken: cancel); - - if (responseData == null) - { - _sawmill.Error("Auth server returned null response!"); - return null; - } - - return new LocatedPlayerData(new NetUserId(responseData.UserId), null, null, responseData.UserName); + return await HandleAuthServerResponse(resp, cancel); } public async Task LookupIdAsync(NetUserId userId, CancellationToken cancel = default) { // Check people currently on the server, the easiest case. if (_playerManager.TryGetSessionById(userId, out var session)) - { - var address = session.Channel.RemoteEndPoint.Address; - var hwId = session.Channel.UserData.HWId; - return new LocatedPlayerData(userId, address, hwId, session.Name); - } + return ReturnForSession(session); // Check database for past players. var record = await _db.GetPlayerRecordByUserId(userId, cancel); if (record != null) - return new LocatedPlayerData(record.UserId, record.LastSeenAddress, record.HWId, record.LastSeenUserName); + return ReturnForPlayerRecord(record); // If all else fails, ask the auth server. var authServer = _configurationManager.GetCVar(CVars.AuthServer); var requestUri = $"{authServer}api/query/userid?userid={WebUtility.UrlEncode(userId.UserId.ToString())}"; using var resp = await _httpClient.GetAsync(requestUri, cancel); + return await HandleAuthServerResponse(resp, cancel); + } + + private async Task HandleAuthServerResponse(HttpResponseMessage resp, CancellationToken cancel) + { if (resp.StatusCode == HttpStatusCode.NotFound) return null; @@ -134,14 +139,40 @@ public PlayerLocator() } var responseData = await resp.Content.ReadFromJsonAsync(cancellationToken: cancel); - if (responseData == null) { _sawmill.Error("Auth server returned null response!"); return null; } - return new LocatedPlayerData(new NetUserId(responseData.UserId), null, null, responseData.UserName); + return new LocatedPlayerData(new NetUserId(responseData.UserId), null, null, responseData.UserName, null, []); + } + + private static LocatedPlayerData ReturnForSession(ICommonSession session) + { + var userId = session.UserId; + var address = session.Channel.RemoteEndPoint.Address; + var hwId = session.Channel.UserData.GetModernHwid(); + return new LocatedPlayerData( + userId, + address, + hwId, + session.Name, + session.Channel.UserData.HWId, + session.Channel.UserData.ModernHWIds); + } + + private static LocatedPlayerData ReturnForPlayerRecord(PlayerRecord record) + { + var hwid = record.HWId; + + return new LocatedPlayerData( + record.UserId, + record.LastSeenAddress, + hwid, + record.LastSeenUserName, + hwid is { Type: HwidType.Legacy } ? hwid.Hwid : null, + hwid is { Type: HwidType.Modern } ? [hwid.Hwid] : []); } public async Task LookupIdByNameOrIdAsync(string playerName, CancellationToken cancel = default) diff --git a/Content.Server/Administration/PlayerPanelEui.cs b/Content.Server/Administration/PlayerPanelEui.cs index 4c0df80601..6c30488886 100644 --- a/Content.Server/Administration/PlayerPanelEui.cs +++ b/Content.Server/Administration/PlayerPanelEui.cs @@ -173,11 +173,11 @@ public async void SetPlayerState() { _whitelisted = await _db.GetWhitelistStatusAsync(_targetPlayer.UserId); // This won't get associated ip or hwid bans but they were not placed on this account anyways - _bans = (await _db.GetServerBansAsync(null, _targetPlayer.UserId, null)).Count; + _bans = (await _db.GetServerBansAsync(null, _targetPlayer.UserId, null, null)).Count; // Unfortunately role bans for departments and stuff are issued individually. This means that a single role ban can have many individual role bans internally // The only way to distinguish whether a role ban is the same is to compare the ban time. // This is horrible and I would love to just erase the database and start from scratch instead but that's what I can do for now. - _roleBans = (await _db.GetServerRoleBansAsync(null, _targetPlayer.UserId, null)).DistinctBy(rb => rb.BanTime).Count(); + _roleBans = (await _db.GetServerRoleBansAsync(null, _targetPlayer.UserId, null, null)).DistinctBy(rb => rb.BanTime).Count(); } else { diff --git a/Content.Server/Administration/Systems/BwoinkSystem.cs b/Content.Server/Administration/Systems/BwoinkSystem.cs index 21b5f6d301..220e79f3f3 100644 --- a/Content.Server/Administration/Systems/BwoinkSystem.cs +++ b/Content.Server/Administration/Systems/BwoinkSystem.cs @@ -173,7 +173,7 @@ private async void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs } // Check if the user has been banned - var ban = await _dbManager.GetServerBanAsync(null, e.Session.UserId, null); + var ban = await _dbManager.GetServerBanAsync(null, e.Session.UserId, null, null); if (ban != null) { var banMessage = Loc.GetString("bwoink-system-player-banned", ("banReason", ban.Reason)); diff --git a/Content.Server/Connection/ConnectionManager.cs b/Content.Server/Connection/ConnectionManager.cs index 5209605d6d..1f36ba63dd 100644 --- a/Content.Server/Connection/ConnectionManager.cs +++ b/Content.Server/Connection/ConnectionManager.cs @@ -118,11 +118,14 @@ private async Task NetMgrOnConnecting(NetConnectingArgs e) var serverId = (await _serverDbEntry.ServerEntity).Id; + var hwid = e.UserData.GetModernHwid(); + var trust = e.UserData.Trust; + if (deny != null) { var (reason, msg, banHits) = deny.Value; - var id = await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, reason, serverId); + var id = await _db.AddConnectionLogAsync(userId, e.UserName, addr, hwid, trust, reason, serverId); if (banHits is { Count: > 0 }) await _db.AddServerBanHitsAsync(id, banHits); @@ -134,12 +137,12 @@ private async Task NetMgrOnConnecting(NetConnectingArgs e) } else { - await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, null, serverId); + await _db.AddConnectionLogAsync(userId, e.UserName, addr, hwid, trust, null, serverId); if (!ServerPreferencesManager.ShouldStorePrefs(e.AuthType)) return; - await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, e.UserData.HWId); + await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, hwid); } } @@ -197,7 +200,9 @@ session.Status is SessionStatus.Connected or SessionStatus.InGame hwId = null; } - var bans = await _db.GetServerBansAsync(addr, userId, hwId, includeUnbanned: false); + var modernHwid = e.UserData.ModernHWIds; + + var bans = await _db.GetServerBansAsync(addr, userId, hwId, modernHwid, includeUnbanned: false); if (bans.Count > 0) { var firstBan = bans[0]; diff --git a/Content.Server/Connection/UserDataExt.cs b/Content.Server/Connection/UserDataExt.cs new file mode 100644 index 0000000000..a409f79a75 --- /dev/null +++ b/Content.Server/Connection/UserDataExt.cs @@ -0,0 +1,24 @@ +using Content.Shared.Database; +using Robust.Shared.Network; + +namespace Content.Server.Connection; + +/// +/// Helper functions for working with . +/// +public static class UserDataExt +{ + /// + /// Get the preferred HWID that should be used for new records related to a player. + /// + /// + /// Players can have zero or more HWIDs, but for logging things like connection logs we generally + /// only want a single one. This method returns a nullable method. + /// + public static ImmutableTypedHwid? GetModernHwid(this NetUserData userData) + { + return userData.ModernHWIds.Length == 0 + ? null + : new ImmutableTypedHwid(userData.ModernHWIds[0], HwidType.Modern); + } +} diff --git a/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs b/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs index 0dc9808dc1..2ffd66fe06 100644 --- a/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs +++ b/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs @@ -1,5 +1,4 @@ using Content.Shared.Camera; -using Content.Shared.CombatMode.Pacification; using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Events; @@ -12,7 +11,6 @@ using Content.Shared.Popups; using Content.Shared.Throwing; using Content.Shared.Weapons.Melee; -using Content.Server.Weapons.Melee; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Physics.Components; @@ -32,13 +30,13 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnBeforeThrow, after: [typeof(PacificationSystem)]); - SubscribeLocalEvent(OnDamageExamine, after: [typeof(MeleeWeaponSystem)]); + SubscribeLocalEvent(OnBeforeThrow); + SubscribeLocalEvent(OnDamageExamine); } private void OnBeforeThrow(EntityUid uid, StaminaComponent component, ref BeforeThrowEvent args) { - if (args.Cancelled || !TryComp(args.ItemUid, out var damage)) + if (!TryComp(args.ItemUid, out var damage)) return; if (component.CritThreshold - component.StaminaDamage <= damage.StaminaCost) diff --git a/Content.Server/Database/BanMatcher.cs b/Content.Server/Database/BanMatcher.cs index e58e5b0b5f..f477ccd822 100644 --- a/Content.Server/Database/BanMatcher.cs +++ b/Content.Server/Database/BanMatcher.cs @@ -1,6 +1,7 @@ using System.Collections.Immutable; using System.Net; using Content.Server.IP; +using Content.Shared.Database; using Robust.Shared.Network; namespace Content.Server.Database; @@ -52,9 +53,28 @@ public static bool BanMatches(ServerBanDef ban, in PlayerInfo player) return true; } - return player.HWId is { Length: > 0 } hwIdVar - && ban.HWId != null - && hwIdVar.AsSpan().SequenceEqual(ban.HWId.Value.AsSpan()); + switch (ban.HWId?.Type) + { + case HwidType.Legacy: + if (player.HWId is { Length: > 0 } hwIdVar + && hwIdVar.AsSpan().SequenceEqual(ban.HWId.Hwid.AsSpan())) + { + return true; + } + break; + case HwidType.Modern: + if (player.ModernHWIds is { Length: > 0 } modernHwIdVar) + { + foreach (var hwid in modernHwIdVar) + { + if (hwid.AsSpan().SequenceEqual(ban.HWId.Hwid.AsSpan())) + return true; + } + } + break; + } + + return false; } /// @@ -73,10 +93,15 @@ public struct PlayerInfo public IPAddress? Address; /// - /// The hardware ID of the player. + /// The LEGACY hardware ID of the player. Corresponds with . /// public ImmutableArray? HWId; + /// + /// The modern hardware IDs of the player. Corresponds with . + /// + public ImmutableArray>? ModernHWIds; + /// /// Exemption flags the player has been granted. /// diff --git a/Content.Server/Database/DatabaseRecords.cs b/Content.Server/Database/DatabaseRecords.cs index c0d81147bb..30fba3434b 100644 --- a/Content.Server/Database/DatabaseRecords.cs +++ b/Content.Server/Database/DatabaseRecords.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using Content.Shared.Database; using Robust.Shared.Network; @@ -121,7 +120,7 @@ public sealed record PlayerRecord( string LastSeenUserName, DateTimeOffset LastSeenTime, IPAddress LastSeenAddress, - ImmutableArray? HWId); + ImmutableTypedHwid? HWId); public sealed record RoundRecord(int Id, DateTimeOffset? StartDate, ServerRecord Server); diff --git a/Content.Server/Database/ServerBanDef.cs b/Content.Server/Database/ServerBanDef.cs index 09a960e9a6..a09f9e959c 100644 --- a/Content.Server/Database/ServerBanDef.cs +++ b/Content.Server/Database/ServerBanDef.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using Content.Shared.CCVar; using Content.Shared.Database; @@ -13,7 +12,7 @@ public sealed class ServerBanDef public int? Id { get; } public NetUserId? UserId { get; } public (IPAddress address, int cidrMask)? Address { get; } - public ImmutableArray? HWId { get; } + public ImmutableTypedHwid? HWId { get; } public DateTimeOffset BanTime { get; } public DateTimeOffset? ExpirationTime { get; } @@ -28,7 +27,7 @@ public sealed class ServerBanDef public ServerBanDef(int? id, NetUserId? userId, (IPAddress, int)? address, - ImmutableArray? hwId, + TypedHwid? hwId, DateTimeOffset banTime, DateTimeOffset? expirationTime, int? roundId, diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index 876a20ff79..5f9ef727d6 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -355,12 +355,14 @@ public async Task AssignUserIdAsync(string name, NetUserId netUserId) /// /// The ip address of the user. /// The id of the user. - /// The HWId of the user. + /// The legacy HWId of the user. + /// The modern HWIDs of the user. /// The user's latest received un-pardoned ban, or null if none exist. public abstract Task GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray? hwId); + ImmutableArray? hwId, + ImmutableArray>? modernHWIds); /// /// Looks up an user's ban history. @@ -369,13 +371,15 @@ public async Task AssignUserIdAsync(string name, NetUserId netUserId) /// /// The ip address of the user. /// The id of the user. - /// The HWId of the user. + /// The legacy HWId of the user. + /// The modern HWIDs of the user. /// Include pardoned and expired bans. /// The user's ban history. public abstract Task> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned); public abstract Task AddServerBanAsync(ServerBanDef serverBan); @@ -466,11 +470,13 @@ public async Task GetBanExemption(NetUserId userId, Cancel /// The IP address of the user. /// The NetUserId of the user. /// The Hardware Id of the user. + /// The modern HWIDs of the user. /// Whether expired and pardoned bans are included. /// The user's role ban history. public abstract Task> GetServerRoleBansAsync(IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned); public abstract Task AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan); @@ -553,7 +559,7 @@ public async Task UpdatePlayerRecord( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId) + ImmutableTypedHwid? hwId) { await using var db = await GetDb(); @@ -570,7 +576,7 @@ public async Task UpdatePlayerRecord( record.LastSeenTime = DateTime.UtcNow; record.LastSeenAddress = address; record.LastSeenUserName = userName; - record.LastSeenHWId = hwId.ToArray(); + record.LastSeenHWId = hwId; await db.DbContext.SaveChangesAsync(); } @@ -616,7 +622,7 @@ protected async Task PlayerRecordExists(DbGuard db, NetUserId userId) player.LastSeenUserName, new DateTimeOffset(NormalizeDatabaseTime(player.LastSeenTime)), player.LastSeenAddress, - player.LastSeenHWId?.ToImmutableArray()); + player.LastSeenHWId); } #endregion @@ -625,11 +631,11 @@ protected async Task PlayerRecordExists(DbGuard db, NetUserId userId) /* * CONNECTION LOG */ - public abstract Task AddConnectionLogAsync( - NetUserId userId, + public abstract Task AddConnectionLogAsync(NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId); diff --git a/Content.Server/Database/ServerDbManager.cs b/Content.Server/Database/ServerDbManager.cs index c74b1e632c..c614e231cc 100644 --- a/Content.Server/Database/ServerDbManager.cs +++ b/Content.Server/Database/ServerDbManager.cs @@ -69,12 +69,14 @@ Task InitPrefsAsync( /// /// The ip address of the user. /// The id of the user. - /// The hardware ID of the user. + /// The legacy HWID of the user. + /// The modern HWIDs of the user. /// The user's latest received un-pardoned ban, or null if none exist. Task GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray? hwId); + ImmutableArray? hwId, + ImmutableArray>? modernHWIds); /// /// Looks up an user's ban history. @@ -82,14 +84,16 @@ Task InitPrefsAsync( /// /// The ip address of the user. /// The id of the user. - /// The HWId of the user. + /// The legacy HWId of the user. + /// The modern HWIDs of the user. /// If true, bans that have been expired or pardoned are also included. /// The user's ban history. Task> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, - bool includeUnbanned = true); + ImmutableArray>? modernHWIds, + bool includeUnbanned=true); Task AddServerBanAsync(ServerBanDef serverBan); Task AddServerUnbanAsync(ServerUnbanDef serverBan); @@ -137,12 +141,14 @@ public Task EditServerBan( /// The IP address of the user. /// The NetUserId of the user. /// The Hardware Id of the user. + /// The modern HWIDs of the user. /// Whether expired and pardoned bans are included. /// The user's role ban history. Task> GetServerRoleBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned = true); Task AddServerRoleBanAsync(ServerRoleBanDef serverBan); @@ -180,7 +186,7 @@ Task UpdatePlayerRecordAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId); + ImmutableTypedHwid? hwId); Task GetPlayerRecordByUserName(string userName, CancellationToken cancel = default); Task GetPlayerRecordByUserId(NetUserId userId, CancellationToken cancel = default); #endregion @@ -191,7 +197,8 @@ Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId); @@ -480,20 +487,22 @@ public Task AssignUserIdAsync(string name, NetUserId userId) public Task GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray? hwId) + ImmutableArray? hwId, + ImmutableArray>? modernHWIds) { DbReadOpsMetric.Inc(); - return RunDbCommand(() => _db.GetServerBanAsync(address, userId, hwId)); + return RunDbCommand(() => _db.GetServerBanAsync(address, userId, hwId, modernHWIds)); } public Task> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, - bool includeUnbanned = true) + ImmutableArray>? modernHWIds, + bool includeUnbanned=true) { DbReadOpsMetric.Inc(); - return RunDbCommand(() => _db.GetServerBansAsync(address, userId, hwId, includeUnbanned)); + return RunDbCommand(() => _db.GetServerBansAsync(address, userId, hwId, modernHWIds, includeUnbanned)); } public Task AddServerBanAsync(ServerBanDef serverBan) @@ -537,10 +546,11 @@ public Task> GetServerRoleBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned = true) { DbReadOpsMetric.Inc(); - return RunDbCommand(() => _db.GetServerRoleBansAsync(address, userId, hwId, includeUnbanned)); + return RunDbCommand(() => _db.GetServerRoleBansAsync(address, userId, hwId, modernHWIds, includeUnbanned)); } public Task AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan) @@ -582,7 +592,7 @@ public Task UpdatePlayerRecordAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId) + ImmutableTypedHwid? hwId) { DbWriteOpsMetric.Inc(); return RunDbCommand(() => _db.UpdatePlayerRecord(userId, userName, address, hwId)); @@ -604,12 +614,13 @@ public Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId) { DbWriteOpsMetric.Inc(); - return RunDbCommand(() => _db.AddConnectionLogAsync(userId, userName, address, hwId, denied, serverId)); + return RunDbCommand(() => _db.AddConnectionLogAsync(userId, userName, address, hwId, trust, denied, serverId)); } public Task AddServerBanHitsAsync(int connection, IEnumerable bans) diff --git a/Content.Server/Database/ServerDbPostgres.cs b/Content.Server/Database/ServerDbPostgres.cs index 7d131f70dc..c034670837 100644 --- a/Content.Server/Database/ServerDbPostgres.cs +++ b/Content.Server/Database/ServerDbPostgres.cs @@ -9,6 +9,7 @@ using Content.Server.Administration.Logs; using Content.Server.IP; using Content.Shared.CCVar; +using Content.Shared.Database; using Microsoft.EntityFrameworkCore; using Robust.Shared.Configuration; using Robust.Shared.Network; @@ -73,7 +74,8 @@ public ServerDbPostgres(DbContextOptions options, public override async Task GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray? hwId) + ImmutableArray? hwId, + ImmutableArray>? modernHWIds) { if (address == null && userId == null && hwId == null) { @@ -84,7 +86,7 @@ public ServerDbPostgres(DbContextOptions options, var exempt = await GetBanExemptionCore(db, userId); var newPlayer = userId == null || !await PlayerRecordExists(db, userId.Value); - var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned: false, exempt, newPlayer) + var query = MakeBanLookupQuery(address, userId, hwId, modernHWIds, db, includeUnbanned: false, exempt, newPlayer) .OrderByDescending(b => b.BanTime); var ban = await query.FirstOrDefaultAsync(); @@ -94,7 +96,9 @@ public ServerDbPostgres(DbContextOptions options, public override async Task> GetServerBansAsync(IPAddress? address, NetUserId? userId, - ImmutableArray? hwId, bool includeUnbanned) + ImmutableArray? hwId, + ImmutableArray>? modernHWIds, + bool includeUnbanned) { if (address == null && userId == null && hwId == null) { @@ -105,7 +109,7 @@ public override async Task> GetServerBansAsync(IPAddress? add var exempt = await GetBanExemptionCore(db, userId); var newPlayer = !await db.PgDbContext.Player.AnyAsync(p => p.UserId == userId); - var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned, exempt, newPlayer); + var query = MakeBanLookupQuery(address, userId, hwId, modernHWIds, db, includeUnbanned, exempt, newPlayer); var queryBans = await query.ToArrayAsync(); var bans = new List(queryBans.Length); @@ -127,6 +131,7 @@ private static IQueryable MakeBanLookupQuery( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, DbGuardImpl db, bool includeUnbanned, ServerBanExemptFlags? exemptFlags, @@ -134,16 +139,11 @@ private static IQueryable MakeBanLookupQuery( { DebugTools.Assert(!(address == null && userId == null && hwId == null)); - IQueryable? query = null; - - if (userId is { } uid) - { - var newQ = db.PgDbContext.Ban - .Include(p => p.Unban) - .Where(b => b.PlayerUserId == uid.UserId); - - query = query == null ? newQ : query.Union(newQ); - } + var query = MakeBanLookupQualityShared( + userId, + hwId, + modernHWIds, + db.PgDbContext.Ban); if (address != null && !exemptFlags.GetValueOrDefault(ServerBanExemptFlags.None).HasFlag(ServerBanExemptFlags.IP)) { @@ -156,15 +156,6 @@ private static IQueryable MakeBanLookupQuery( query = query == null ? newQ : query.Union(newQ); } - if (hwId != null && hwId.Value.Length > 0) - { - var newQ = db.PgDbContext.Ban - .Include(p => p.Unban) - .Where(b => b.HWId!.SequenceEqual(hwId.Value.ToArray())); - - query = query == null ? newQ : query.Union(newQ); - } - DebugTools.Assert( query != null, "At least one filter item (IP/UserID/HWID) must have been given to make query not null."); @@ -186,6 +177,49 @@ private static IQueryable MakeBanLookupQuery( return query.Distinct(); } + private static IQueryable? MakeBanLookupQualityShared( + NetUserId? userId, + ImmutableArray? hwId, + ImmutableArray>? modernHWIds, + DbSet set) + where TBan : class, IBanCommon + where TUnban : class, IUnbanCommon + { + IQueryable? query = null; + + if (userId is { } uid) + { + var newQ = set + .Include(p => p.Unban) + .Where(b => b.PlayerUserId == uid.UserId); + + query = query == null ? newQ : query.Union(newQ); + } + + if (hwId != null && hwId.Value.Length > 0) + { + var newQ = set + .Include(p => p.Unban) + .Where(b => b.HWId!.Type == HwidType.Legacy && b.HWId!.Hwid.SequenceEqual(hwId.Value.ToArray())); + + query = query == null ? newQ : query.Union(newQ); + } + + if (modernHWIds != null) + { + foreach (var modernHwid in modernHWIds) + { + var newQ = set + .Include(p => p.Unban) + .Where(b => b.HWId!.Type == HwidType.Modern && b.HWId!.Hwid.SequenceEqual(modernHwid.ToArray())); + + query = query == null ? newQ : query.Union(newQ); + } + } + + return query; + } + private static ServerBanDef? ConvertBan(ServerBan? ban) { if (ban == null) @@ -211,7 +245,7 @@ private static IQueryable MakeBanLookupQuery( ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, ban.BanTime, ban.ExpirationTime, ban.RoundId, @@ -249,7 +283,7 @@ public override async Task AddServerBanAsync(ServerBanDef serverBan) db.PgDbContext.Ban.Add(new ServerBan { Address = serverBan.Address.ToNpgsqlInet(), - HWId = serverBan.HWId?.ToArray(), + HWId = serverBan.HWId, Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, @@ -297,6 +331,7 @@ public override async Task AddServerUnbanAsync(ServerUnbanDef serverUnban) public override async Task> GetServerRoleBansAsync(IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned) { if (address == null && userId == null && hwId == null) @@ -306,7 +341,7 @@ public override async Task> GetServerRoleBansAsync(IPAddr await using var db = await GetDbImpl(); - var query = MakeRoleBanLookupQuery(address, userId, hwId, db, includeUnbanned) + var query = MakeRoleBanLookupQuery(address, userId, hwId, modernHWIds, db, includeUnbanned) .OrderByDescending(b => b.BanTime); return await QueryRoleBans(query); @@ -334,19 +369,15 @@ private static IQueryable MakeRoleBanLookupQuery( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, DbGuardImpl db, bool includeUnbanned) { - IQueryable? query = null; - - if (userId is { } uid) - { - var newQ = db.PgDbContext.RoleBan - .Include(p => p.Unban) - .Where(b => b.PlayerUserId == uid.UserId); - - query = query == null ? newQ : query.Union(newQ); - } + var query = MakeBanLookupQualityShared( + userId, + hwId, + modernHWIds, + db.PgDbContext.RoleBan); if (address != null) { @@ -357,15 +388,6 @@ private static IQueryable MakeRoleBanLookupQuery( query = query == null ? newQ : query.Union(newQ); } - if (hwId != null && hwId.Value.Length > 0) - { - var newQ = db.PgDbContext.RoleBan - .Include(p => p.Unban) - .Where(b => b.HWId!.SequenceEqual(hwId.Value.ToArray())); - - query = query == null ? newQ : query.Union(newQ); - } - if (!includeUnbanned) { query = query?.Where(p => @@ -402,7 +424,7 @@ private static IQueryable MakeRoleBanLookupQuery( ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, ban.BanTime, ban.ExpirationTime, ban.RoundId, @@ -440,7 +462,7 @@ public override async Task AddServerRoleBanAsync(ServerRoleBan var ban = new ServerRoleBan { Address = serverRoleBan.Address.ToNpgsqlInet(), - HWId = serverRoleBan.HWId?.ToArray(), + HWId = serverRoleBan.HWId, Reason = serverRoleBan.Reason, Severity = serverRoleBan.Severity, BanningAdmin = serverRoleBan.BanningAdmin?.UserId, @@ -476,7 +498,8 @@ public override async Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId) { @@ -488,9 +511,10 @@ public override async Task AddConnectionLogAsync( Time = DateTime.UtcNow, UserId = userId.UserId, UserName = userName, - HWId = hwId.ToArray(), + HWId = hwId, Denied = denied, - ServerId = serverId + ServerId = serverId, + Trust = trust, }; db.PgDbContext.ConnectionLog.Add(connectionLog); diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index 58d21acb63..623b979f4b 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -9,6 +9,7 @@ using Content.Server.IP; using Content.Server.Preferences.Managers; using Content.Shared.CCVar; +using Content.Shared.Database; using Microsoft.EntityFrameworkCore; using Robust.Shared.Configuration; using Robust.Shared.Network; @@ -80,22 +81,24 @@ public ServerDbSqlite( public override async Task GetServerBanAsync( IPAddress? address, NetUserId? userId, - ImmutableArray? hwId) + ImmutableArray? hwId, + ImmutableArray>? modernHWIds) { await using var db = await GetDbImpl(); - return (await GetServerBanQueryAsync(db, address, userId, hwId, includeUnbanned: false)).FirstOrDefault(); + return (await GetServerBanQueryAsync(db, address, userId, hwId, modernHWIds, includeUnbanned: false)).FirstOrDefault(); } public override async Task> GetServerBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned) { await using var db = await GetDbImpl(); - return (await GetServerBanQueryAsync(db, address, userId, hwId, includeUnbanned)).ToList(); + return (await GetServerBanQueryAsync(db, address, userId, hwId, modernHWIds, includeUnbanned)).ToList(); } private async Task> GetServerBanQueryAsync( @@ -103,6 +106,7 @@ private async Task> GetServerBanQueryAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned) { var exempt = await GetBanExemptionCore(db, userId); @@ -119,6 +123,7 @@ private async Task> GetServerBanQueryAsync( UserId = userId, ExemptFlags = exempt ?? default, HWId = hwId, + ModernHWIds = modernHWIds, IsNewPlayer = newPlayer, }; @@ -157,7 +162,7 @@ public override async Task AddServerBanAsync(ServerBanDef serverBan) Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, - HWId = serverBan.HWId?.ToArray(), + HWId = serverBan.HWId, BanTime = serverBan.BanTime.UtcDateTime, ExpirationTime = serverBan.ExpirationTime?.UtcDateTime, RoundId = serverBan.RoundId, @@ -201,6 +206,7 @@ public override async Task> GetServerRoleBansAsync( IPAddress? address, NetUserId? userId, ImmutableArray? hwId, + ImmutableArray>? modernHWIds, bool includeUnbanned) { await using var db = await GetDbImpl(); @@ -210,7 +216,7 @@ public override async Task> GetServerRoleBansAsync( var queryBans = await GetAllRoleBans(db.SqliteDbContext, includeUnbanned); return queryBans - .Where(b => RoleBanMatches(b, address, userId, hwId)) + .Where(b => RoleBanMatches(b, address, userId, hwId, modernHWIds)) .Select(ConvertRoleBan) .ToList()!; } @@ -233,7 +239,8 @@ private static bool RoleBanMatches( ServerRoleBan ban, IPAddress? address, NetUserId? userId, - ImmutableArray? hwId) + ImmutableArray? hwId, + ImmutableArray>? modernHWIds) { if (address != null && ban.Address is not null && address.IsInSubnet(ban.Address.ToTuple().Value)) { @@ -245,7 +252,27 @@ private static bool RoleBanMatches( return true; } - return hwId is { Length: > 0 } hwIdVar && hwIdVar.AsSpan().SequenceEqual(ban.HWId); + switch (ban.HWId?.Type) + { + case HwidType.Legacy: + if (hwId is { Length: > 0 } hwIdVar && hwIdVar.AsSpan().SequenceEqual(ban.HWId.Hwid)) + return true; + break; + + case HwidType.Modern: + if (modernHWIds != null) + { + foreach (var modernHWId in modernHWIds) + { + if (modernHWId.AsSpan().SequenceEqual(ban.HWId.Hwid)) + return true; + } + } + + break; + } + + return false; } public override async Task AddServerRoleBanAsync(ServerRoleBanDef serverBan) @@ -258,7 +285,7 @@ public override async Task AddServerRoleBanAsync(ServerRoleBan Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, - HWId = serverBan.HWId?.ToArray(), + HWId = serverBan.HWId, BanTime = serverBan.BanTime.UtcDateTime, ExpirationTime = serverBan.ExpirationTime?.UtcDateTime, RoundId = serverBan.RoundId, @@ -312,7 +339,7 @@ public override async Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverUnba ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, // SQLite apparently always reads DateTime as unspecified, but we always write as UTC. DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc), ban.ExpirationTime == null ? null : DateTime.SpecifyKind(ban.ExpirationTime.Value, DateTimeKind.Utc), @@ -372,7 +399,7 @@ public override async Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverUnba ban.Id, uid, ban.Address.ToTuple(), - ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), + ban.HWId, // SQLite apparently always reads DateTime as unspecified, but we always write as UTC. DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc), ban.ExpirationTime == null ? null : DateTime.SpecifyKind(ban.ExpirationTime.Value, DateTimeKind.Utc), @@ -408,7 +435,8 @@ public override async Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, + ImmutableTypedHwid? hwId, + float trust, ConnectionDenyReason? denied, int serverId) { @@ -420,9 +448,10 @@ public override async Task AddConnectionLogAsync( Time = DateTime.UtcNow, UserId = userId.UserId, UserName = userName, - HWId = hwId.ToArray(), + HWId = hwId, Denied = denied, - ServerId = serverId + ServerId = serverId, + Trust = trust, }; db.SqliteDbContext.ConnectionLog.Add(connectionLog); diff --git a/Content.Server/Database/ServerRoleBanDef.cs b/Content.Server/Database/ServerRoleBanDef.cs index f615d5da4d..dda3a82237 100644 --- a/Content.Server/Database/ServerRoleBanDef.cs +++ b/Content.Server/Database/ServerRoleBanDef.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Net; using Content.Shared.Database; using Robust.Shared.Network; @@ -10,7 +9,7 @@ public sealed class ServerRoleBanDef public int? Id { get; } public NetUserId? UserId { get; } public (IPAddress address, int cidrMask)? Address { get; } - public ImmutableArray? HWId { get; } + public ImmutableTypedHwid? HWId { get; } public DateTimeOffset BanTime { get; } public DateTimeOffset? ExpirationTime { get; } @@ -26,7 +25,7 @@ public ServerRoleBanDef( int? id, NetUserId? userId, (IPAddress, int)? address, - ImmutableArray? hwId, + ImmutableTypedHwid? hwId, DateTimeOffset banTime, DateTimeOffset? expirationTime, int? roundId, diff --git a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.Footprints.cs b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.Footprints.cs deleted file mode 100644 index 50b5b7a660..0000000000 --- a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.Footprints.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Linq; -using Content.Shared.Chemistry.Components; -using Content.Shared.Fluids; -using Content.Shared.FootPrint; - -namespace Content.Server.Fluids.EntitySystems; - -public sealed partial class AbsorbentSystem -{ - [Dependency] private readonly EntityLookupSystem _lookup = default!; - - /// - /// Tries to clean a number of footprints in a range determined by the component. Returns the number of cleaned footprints. - /// - private int TryCleanNearbyFootprints(EntityUid user, EntityUid used, Entity target, Entity absorbentSoln) - { - var footprintQuery = GetEntityQuery(); - var targetCoords = Transform(target).Coordinates; - var entities = _lookup.GetEntitiesInRange(targetCoords, target.Comp.FootprintCleaningRange, LookupFlags.Uncontained); - - // Take up to [MaxCleanedFootprints] footprints closest to the target - var cleaned = entities.AsEnumerable() - .Select(uid => (uid, dst: Transform(uid).Coordinates.TryDistance(EntityManager, _transform, targetCoords, out var dst) ? dst : 0f)) - .Where(ent => ent.dst > 0f) - .OrderBy(ent => ent.dst) - .Select(ent => (ent.uid, comp: footprintQuery.GetComponent(ent.uid))); - - // And try to interact with each one of them, ignoring useDelay - var processed = 0; - foreach (var (uid, footprintComp) in cleaned) - { - if (TryPuddleInteract(user, used, uid, target.Comp, useDelay: null, absorbentSoln)) - processed++; - - if (processed >= target.Comp.MaxCleanedFootprints) - break; - } - - return processed; - } -} diff --git a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs index 1f8c44a240..52afdcf8b4 100644 --- a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs +++ b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs @@ -1,4 +1,5 @@ using System.Numerics; +using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.Popups; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; @@ -17,7 +18,7 @@ namespace Content.Server.Fluids.EntitySystems; /// -public sealed partial class AbsorbentSystem : SharedAbsorbentSystem +public sealed class AbsorbentSystem : SharedAbsorbentSystem { [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly AudioSystem _audio = default!; @@ -25,7 +26,7 @@ public sealed partial class AbsorbentSystem : SharedAbsorbentSystem [Dependency] private readonly PuddleSystem _puddleSystem = default!; [Dependency] private readonly SharedMeleeWeaponSystem _melee = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; + [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly UseDelaySystem _useDelay = default!; [Dependency] private readonly MapSystem _mapSystem = default!; @@ -118,8 +119,6 @@ public void Mop(EntityUid user, EntityUid target, EntityUid used, AbsorbentCompo if (!TryRefillableInteract(user, used, target, component, useDelay, absorberSoln.Value)) return; } - - TryCleanNearbyFootprints(user, used, (target, component), absorberSoln.Value); } /// diff --git a/Content.Server/FootPrint/FootPrintsSystem.cs b/Content.Server/FootPrint/FootPrintsSystem.cs index 524fcd1cec..0e45acff5c 100644 --- a/Content.Server/FootPrint/FootPrintsSystem.cs +++ b/Content.Server/FootPrint/FootPrintsSystem.cs @@ -1,39 +1,39 @@ -using System.Linq; using Content.Server.Atmos.Components; using Content.Shared.Inventory; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; using Content.Shared.FootPrint; using Content.Shared.Standing; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.Forensics; using Robust.Shared.Map; -using Robust.Shared.Physics.Components; -using Robust.Shared.Prototypes; using Robust.Shared.Random; namespace Content.Server.FootPrint; - public sealed class FootPrintsSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly IPrototypeManager _protoMan = default!; - [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly IMapManager _map = default!; + [Dependency] private readonly SharedSolutionContainerSystem _solution = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; + private EntityQuery _transformQuery; + private EntityQuery _mobThresholdQuery; private EntityQuery _appearanceQuery; - private EntityQuery _standingStateQuery; + private EntityQuery _layingQuery; public override void Initialize() { base.Initialize(); + _transformQuery = GetEntityQuery(); + _mobThresholdQuery = GetEntityQuery(); _appearanceQuery = GetEntityQuery(); - _standingStateQuery = GetEntityQuery(); + _layingQuery = GetEntityQuery(); SubscribeLocalEvent(OnStartupComponent); SubscribeLocalEvent(OnMove); @@ -46,72 +46,62 @@ private void OnStartupComponent(EntityUid uid, FootPrintsComponent component, Co private void OnMove(EntityUid uid, FootPrintsComponent component, ref MoveEvent args) { - if (component.ContainedSolution.Volume <= 0 - || TryComp(uid, out var physics) && physics.BodyStatus != BodyStatus.OnGround - || args.Entity.Comp1.GridUid is not {} gridUid) + if (component.PrintsColor.A <= 0f + || !_transformQuery.TryComp(uid, out var transform) + || !_mobThresholdQuery.TryComp(uid, out var mobThreshHolds) + || !_map.TryFindGridAt(_transform.GetMapCoordinates((uid, transform)), out var gridUid, out _)) return; - var newPos = _transform.ToMapCoordinates(args.NewPosition).Position; - var dragging = _standingStateQuery.TryComp(uid, out var standing) && standing.CurrentState == StandingState.Lying; - var distance = (newPos - component.LastStepPos).Length(); + var dragging = mobThreshHolds.CurrentThresholdState is MobState.Critical or MobState.Dead + || _layingQuery.TryComp(uid, out var laying) && laying.IsCrawlingUnder; + var distance = (transform.LocalPosition - component.StepPos).Length(); var stepSize = dragging ? component.DragSize : component.StepSize; - if (distance < stepSize) + if (!(distance > stepSize)) return; - // are we on a puddle? we exit, ideally we would exchange liquid and DNA with the puddle but meh, too lazy to do that now. - var entities = _lookup.GetEntitiesIntersecting(uid, LookupFlags.All); - if (entities.Any(HasComp)) - return; - - // Spawn the footprint - var footprintUid = Spawn(component.StepProtoId, CalcCoords(gridUid, component, args.Component, dragging)); - var stepTransform = Transform(footprintUid); - var footPrintComponent = EnsureComp(footprintUid); + component.RightStep = !component.RightStep; - // transfer owner DNA into the footsteps - var forensics = EntityManager.EnsureComponent(footprintUid); - if (TryComp(uid, out var ownerForensics)) - forensics.DNAs.UnionWith(ownerForensics.DNAs); + var entity = Spawn(component.StepProtoId, CalcCoords(gridUid, component, transform, dragging)); + var footPrintComponent = EnsureComp(entity); footPrintComponent.PrintOwner = uid; - Dirty(footprintUid, footPrintComponent); + Dirty(entity, footPrintComponent); - if (_appearanceQuery.TryComp(footprintUid, out var appearance)) + if (_appearanceQuery.TryComp(entity, out var appearance)) { - var color = component.ContainedSolution.GetColor(_protoMan); - color.A = Math.Max(0.3f, component.ContainedSolution.FillFraction); - - _appearance.SetData(footprintUid, FootPrintVisualState.State, PickState(uid, dragging), appearance); - _appearance.SetData(footprintUid, FootPrintVisualState.Color, color, appearance); + _appearance.SetData(entity, FootPrintVisualState.State, PickState(uid, dragging), appearance); + _appearance.SetData(entity, FootPrintVisualState.Color, component.PrintsColor, appearance); } + if (!_transformQuery.TryComp(entity, out var stepTransform)) + return; + stepTransform.LocalRotation = dragging - ? (newPos - component.LastStepPos).ToAngle() + Angle.FromDegrees(-90f) - : args.Component.LocalRotation + Angle.FromDegrees(180f); + ? (transform.LocalPosition - component.StepPos).ToAngle() + Angle.FromDegrees(-90f) + : transform.LocalRotation + Angle.FromDegrees(180f); - if (!TryComp(footprintUid, out var solutionContainer) - || !_solution.ResolveSolution((footprintUid, solutionContainer), footPrintComponent.SolutionName, ref footPrintComponent.Solution, out var solution)) - return; + component.PrintsColor = component.PrintsColor.WithAlpha(Math.Max(0f, component.PrintsColor.A - component.ColorReduceAlpha)); + component.StepPos = transform.LocalPosition; - // Transfer from the component to the footprint - var removedReagents = component.ContainedSolution.SplitSolution(component.FootprintVolume); - _solution.ForceAddSolution(footPrintComponent.Solution.Value, removedReagents); + if (!TryComp(entity, out var solutionContainer) + || !_solution.ResolveSolution((entity, solutionContainer), footPrintComponent.SolutionName, ref footPrintComponent.Solution, out var solution) + || string.IsNullOrWhiteSpace(component.ReagentToTransfer) || solution.Volume >= 1) + return; - component.RightStep = !component.RightStep; - component.LastStepPos = newPos; + _solution.TryAddReagent(footPrintComponent.Solution.Value, component.ReagentToTransfer, 1, out _); } private EntityCoordinates CalcCoords(EntityUid uid, FootPrintsComponent component, TransformComponent transform, bool state) { if (state) - return new(uid, transform.LocalPosition); + return new EntityCoordinates(uid, transform.LocalPosition); var offset = component.RightStep ? new Angle(Angle.FromDegrees(180f) + transform.LocalRotation).RotateVec(component.OffsetPrint) : new Angle(transform.LocalRotation).RotateVec(component.OffsetPrint); - return new(uid, transform.LocalPosition + offset); + return new EntityCoordinates(uid, transform.LocalPosition + offset); } private FootPrintVisuals PickState(EntityUid uid, bool dragging) diff --git a/Content.Server/FootPrint/PuddleFootPrintsSystem.cs b/Content.Server/FootPrint/PuddleFootPrintsSystem.cs index a778bcf2c7..706ba25359 100644 --- a/Content.Server/FootPrint/PuddleFootPrintsSystem.cs +++ b/Content.Server/FootPrint/PuddleFootPrintsSystem.cs @@ -1,17 +1,16 @@ +using System.Linq; using Content.Shared.FootPrint; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.FixedPoint; +using Content.Shared.Fluids; using Content.Shared.Fluids.Components; -using Content.Shared.Forensics; using Robust.Shared.Physics.Events; -using Robust.Shared.Prototypes; - namespace Content.Server.FootPrint; public sealed class PuddleFootPrintsSystem : EntitySystem { - [Dependency] private readonly IPrototypeManager _protoMan = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!; public override void Initialize() @@ -22,27 +21,32 @@ public override void Initialize() private void OnStepTrigger(EntityUid uid, PuddleFootPrintsComponent component, ref EndCollideEvent args) { - if (!TryComp(uid, out var puddle) || !TryComp(args.OtherEntity, out var tripper)) + if (!TryComp(uid, out var appearance) + || !TryComp(uid, out var puddle) + || !TryComp(args.OtherEntity, out var tripper) + || !TryComp(uid, out var solutionManager) + || !_solutionContainer.ResolveSolution((uid, solutionManager), puddle.SolutionName, ref puddle.Solution, out var solutions)) return; - // Transfer DNAs from the puddle to the tripper - if (TryComp(uid, out var puddleForensics)) - { - tripper.DNAs.UnionWith(puddleForensics.DNAs); - if(TryComp(args.OtherEntity, out var tripperForensics)) - tripperForensics.DNAs.UnionWith(puddleForensics.DNAs); - } - - // Transfer reagents from the puddle to the tripper. - // Ideally it should be a two-way process, but that is too hard to simulate and will have very little effect outside of potassium-water spills. - var quantity = puddle.Solution?.Comp?.Solution?.Volume ?? 0; - var footprintsCapacity = tripper.ContainedSolution.AvailableVolume; + var totalSolutionQuantity = solutions.Contents.Sum(sol => (float) sol.Quantity); + var waterQuantity = (from sol in solutions.Contents where sol.Reagent.Prototype == "Water" select (float) sol.Quantity).FirstOrDefault(); - if (quantity <= 0 || footprintsCapacity <= 0) + if (waterQuantity / (totalSolutionQuantity / 100f) > component.OffPercent || solutions.Contents.Count <= 0) return; - var transferAmount = FixedPoint2.Min(footprintsCapacity, quantity * component.SizeRatio); - var transferred = _solutionContainer.SplitSolution(puddle.Solution!.Value, transferAmount); - tripper.ContainedSolution.AddSolution(transferred, _protoMan); + tripper.ReagentToTransfer = + solutions.Contents.Aggregate((l, r) => l.Quantity > r.Quantity ? l : r).Reagent.Prototype; + + if (_appearance.TryGetData(uid, PuddleVisuals.SolutionColor, out var color, appearance) + && _appearance.TryGetData(uid, PuddleVisuals.CurrentVolume, out var volume, appearance)) + AddColor((Color) color, (float) volume * component.SizeRatio, tripper); + + _solutionContainer.RemoveEachReagent(puddle.Solution.Value, 1); + } + + private void AddColor(Color col, float quantity, FootPrintsComponent component) + { + component.PrintsColor = component.ColorQuantity == 0f ? col : Color.InterpolateBetween(component.PrintsColor, col, component.ColorInterpolationFactor); + component.ColorQuantity += quantity; } } diff --git a/Content.Server/Projectiles/ProjectileSystem.cs b/Content.Server/Projectiles/ProjectileSystem.cs index 28dbc32e05..436221103d 100644 --- a/Content.Server/Projectiles/ProjectileSystem.cs +++ b/Content.Server/Projectiles/ProjectileSystem.cs @@ -1,15 +1,12 @@ using Content.Server.Administration.Logs; -using Content.Server.Damage.Systems; using Content.Server.Effects; using Content.Server.Weapons.Ranged.Systems; using Content.Shared.Camera; using Content.Shared.Damage; -using Content.Shared.Damage.Events; using Content.Shared.Database; using Content.Shared.Projectiles; using Robust.Shared.Physics.Events; using Robust.Shared.Player; -using Robust.Shared.Utility; namespace Content.Server.Projectiles; @@ -25,7 +22,6 @@ public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnStartCollide); - SubscribeLocalEvent(OnDamageExamine, after: [typeof(DamageOtherOnHitSystem)]); } private void OnStartCollide(EntityUid uid, ProjectileComponent component, ref StartCollideEvent args) @@ -79,21 +75,4 @@ private void OnStartCollide(EntityUid uid, ProjectileComponent component, ref St if (component.ImpactEffect != null && TryComp(uid, out TransformComponent? xform)) RaiseNetworkEvent(new ImpactEffectEvent(component.ImpactEffect, GetNetCoordinates(xform.Coordinates)), Filter.Pvs(xform.Coordinates, entityMan: EntityManager)); } - - private void OnDamageExamine(EntityUid uid, EmbeddableProjectileComponent component, ref DamageExamineEvent args) - { - if (!component.EmbedOnThrow) - return; - - if (!args.Message.IsEmpty) - args.Message.PushNewline(); - - var isHarmful = TryComp(uid, out var passiveDamage) && passiveDamage.Damage.AnyPositive(); - var loc = isHarmful - ? "damage-examine-embeddable-harmful" - : "damage-examine-embeddable"; - - var staminaCostMarkup = FormattedMessage.FromMarkupOrThrow(Loc.GetString(loc)); - args.Message.AddMessage(staminaCostMarkup); - } } diff --git a/Content.Server/StationEvents/Events/PirateRadioSpawnRule.cs b/Content.Server/StationEvents/Events/PirateRadioSpawnRule.cs index 7e5a0ac24e..518d6409bf 100644 --- a/Content.Server/StationEvents/Events/PirateRadioSpawnRule.cs +++ b/Content.Server/StationEvents/Events/PirateRadioSpawnRule.cs @@ -1,18 +1,18 @@ using Robust.Server.GameObjects; using Robust.Server.Maps; using Robust.Shared.Configuration; -using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Content.Server.GameTicking; using Content.Server.StationEvents.Components; -using Content.Server.Station.Components; -using Content.Server.Station.Systems; -using Content.Shared.CCVar; -using Content.Shared.GameTicking.Components; -using Content.Shared.Random.Helpers; using Content.Shared.Salvage; +using Content.Shared.Random.Helpers; using System.Linq; +using Content.Shared.GameTicking.Components; +using Content.Shared.CCVar; +using Robust.Shared.Serialization.Manager; +using Content.Shared.Parallax.Biomes; +using Robust.Shared.Map; namespace Content.Server.StationEvents.Events; @@ -24,28 +24,30 @@ public sealed class PirateRadioSpawnRule : StationEventSystem(); - foreach (var stations in station) - { - if (TryComp(stations, out var data) && _station.GetLargestGrid(data) is { } grid) - stationGrids.Add(grid); - } + + // Remove any station from the list that is on a Planet's surface. + // We have to do this because if we spawn the listening post 1.5 kilometers from the station on a planet + // The server will then attempt to generate 7 billion entities, immediately exceeding the 32bit signed integer limit for EntityUids. + var stationsCopy = _serializationManager.CreateCopy(stations, notNullableOverride: true); + foreach (var station in stationsCopy) + if (HasComp(Transform(station).MapUid)) + stations.Remove(station); // _random forces Test Fails if given an empty list. which is guaranteed to happen during Tests. - if (stationGrids.Count <= 0) + if (stations.Count <= 0) return; - var targetStation = _random.Pick(stationGrids); + var targetStation = _random.Pick(stations); var targetMapId = Transform(targetStation).MapID; if (!_mapSystem.MapExists(targetMapId)) diff --git a/Content.Server/Traits/TraitSystem.Functions.cs b/Content.Server/Traits/TraitSystem.Functions.cs index 29ab1512ae..8e53ff69a5 100644 --- a/Content.Server/Traits/TraitSystem.Functions.cs +++ b/Content.Server/Traits/TraitSystem.Functions.cs @@ -1,4 +1,3 @@ -using Content.Shared.FixedPoint; using Content.Shared.Traits; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -12,7 +11,6 @@ using Content.Shared.Mood; using Content.Shared.Traits.Assorted.Components; using Content.Shared.Damage; -using Content.Shared.Damage.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Mobs.Components; @@ -549,39 +547,3 @@ public override void OnPlayerSpawn(EntityUid uid, staminaComponent.Cooldown += CooldownModifier; } } - -/// -/// Used for traits that modify SlowOnDamageComponent. -/// -[UsedImplicitly] -public sealed partial class TraitModifySlowOnDamage : TraitFunction -{ - // - // A flat modifier to add to all damage threshold keys. - // - [DataField, AlwaysPushInheritance] - public float DamageThresholdsModifier; - - // - // A multiplier applied to all speed modifier values. - // The higher the multiplier, the stronger the slowdown. - // - [DataField, AlwaysPushInheritance] - public float SpeedModifierMultiplier = 1f; - - public override void OnPlayerSpawn(EntityUid uid, - IComponentFactory factory, - IEntityManager entityManager, - ISerializationManager serializationManager) - { - if (!entityManager.TryGetComponent(uid, out var slowOnDamage)) - return; - - var newSpeedModifierThresholds = new Dictionary(); - - foreach (var (damageThreshold, speedModifier) in slowOnDamage.SpeedModifierThresholds) - newSpeedModifierThresholds[damageThreshold + DamageThresholdsModifier] = 1 - (1 - speedModifier) * SpeedModifierMultiplier; - - slowOnDamage.SpeedModifierThresholds = newSpeedModifierThresholds; - } -} diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index 3ed4794508..26f0c20608 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -1,7 +1,6 @@ using Content.Server.Chat.Systems; using Content.Server.CombatMode.Disarm; using Content.Server.Movement.Systems; -using Content.Server.Weapons.Ranged.Systems; using Content.Shared.Actions.Events; using Content.Shared.Administration.Components; using Content.Shared.CombatMode; @@ -45,7 +44,7 @@ public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnSpeechHit); - SubscribeLocalEvent(OnMeleeExamineDamage, after: [typeof(GunSystem)]); + SubscribeLocalEvent(OnMeleeExamineDamage); } private void OnMeleeExamineDamage(EntityUid uid, MeleeWeaponComponent component, ref DamageExamineEvent args) diff --git a/Content.Shared.Database/TypedHwid.cs b/Content.Shared.Database/TypedHwid.cs new file mode 100644 index 0000000000..253375e9db --- /dev/null +++ b/Content.Shared.Database/TypedHwid.cs @@ -0,0 +1,64 @@ +using System.Collections.Immutable; +using System.Diagnostics.CodeAnalysis; + +namespace Content.Shared.Database; + +/// +/// Represents a raw HWID value together with its type. +/// +[Serializable] +public sealed class ImmutableTypedHwid(ImmutableArray hwid, HwidType type) +{ + public readonly ImmutableArray Hwid = hwid; + public readonly HwidType Type = type; + + public override string ToString() + { + var b64 = Convert.ToBase64String(Hwid.AsSpan()); + return Type == HwidType.Modern ? $"V2-{b64}" : b64; + } + + public static bool TryParse(string value, [NotNullWhen(true)] out ImmutableTypedHwid? hwid) + { + var type = HwidType.Legacy; + if (value.StartsWith("V2-", StringComparison.Ordinal)) + { + value = value["V2-".Length..]; + type = HwidType.Modern; + } + + var array = new byte[GetBase64ByteLength(value)]; + if (!Convert.TryFromBase64String(value, array, out _)) + { + hwid = null; + return false; + } + + // ReSharper disable once UseCollectionExpression + // Do not use collection expression, C# compiler is weird and it fails sandbox. + hwid = new ImmutableTypedHwid(ImmutableArray.Create(array), type); + return true; + } + + private static int GetBase64ByteLength(string value) + { + // Why is .NET like this man wtf. + return 3 * (value.Length / 4) - value.TakeLast(2).Count(c => c == '='); + } +} + +/// +/// Represents different types of HWIDs as exposed by the engine. +/// +public enum HwidType +{ + /// + /// The legacy HWID system. Should only be used for checking old existing database bans. + /// + Legacy = 0, + + /// + /// The modern HWID system. + /// + Modern = 1, +} diff --git a/Content.Shared/Administration/BanPanelEuiState.cs b/Content.Shared/Administration/BanPanelEuiState.cs index dd10068e5d..74c340566b 100644 --- a/Content.Shared/Administration/BanPanelEuiState.cs +++ b/Content.Shared/Administration/BanPanelEuiState.cs @@ -25,7 +25,7 @@ public sealed class CreateBanRequest : EuiMessageBase { public string? Player { get; set; } public string? IpAddress { get; set; } - public byte[]? Hwid { get; set; } + public ImmutableTypedHwid? Hwid { get; set; } public uint Minutes { get; set; } public string Reason { get; set; } public NoteSeverity Severity { get; set; } @@ -34,7 +34,7 @@ public sealed class CreateBanRequest : EuiMessageBase public bool UseLastHwid { get; set; } public bool Erase { get; set; } - public CreateBanRequest(string? player, (IPAddress, int)? ipAddress, bool useLastIp, byte[]? hwid, bool useLastHwid, uint minutes, string reason, NoteSeverity severity, string[]? roles, bool erase) + public CreateBanRequest(string? player, (IPAddress, int)? ipAddress, bool useLastIp, ImmutableTypedHwid? hwid, bool useLastHwid, uint minutes, string reason, NoteSeverity severity, string[]? roles, bool erase) { Player = player; IpAddress = ipAddress == null ? null : $"{ipAddress.Value.Item1}/{ipAddress.Value.Item2}"; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index c93eaa77f9..5a4d2840f3 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -422,7 +422,7 @@ public static readonly CVarDef /// How many traits a character can have at most. /// public static readonly CVarDef GameTraitsMax = - CVarDef.Create("game.traits_max", 14, CVar.REPLICATED); + CVarDef.Create("game.traits_max", 10, CVar.REPLICATED); /// /// How many points a character should start with. diff --git a/Content.Shared/Damage/Systems/SharedDamageOtherOnHitSystem.cs b/Content.Shared/Damage/Systems/SharedDamageOtherOnHitSystem.cs index e9e786a817..8b3d29d734 100644 --- a/Content.Shared/Damage/Systems/SharedDamageOtherOnHitSystem.cs +++ b/Content.Shared/Damage/Systems/SharedDamageOtherOnHitSystem.cs @@ -1,6 +1,5 @@ using Content.Shared.Administration.Logs; using Content.Shared.Camera; -using Content.Shared.CombatMode.Pacification; using Content.Shared.Contests; using Content.Shared.Damage; using Content.Shared.Damage.Components; @@ -40,7 +39,6 @@ public override void Initialize() SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnDoHit); SubscribeLocalEvent(OnThrown); - SubscribeLocalEvent(OnAttemptPacifiedThrow); SubscribeLocalEvent(OnItemToggleMapInit); SubscribeLocalEvent(OnItemToggle); @@ -51,19 +49,19 @@ public override void Initialize() /// private void OnMapInit(EntityUid uid, DamageOtherOnHitComponent component, MapInitEvent args) { - if (TryComp(uid, out var melee)) + if (!TryComp(uid, out var melee)) + return; + + if (component.Damage.Empty) + component.Damage = melee.Damage * component.MeleeDamageMultiplier; + if (component.SoundHit == null) + component.SoundHit = melee.SoundHit; + if (component.SoundNoDamage == null) { - if (component.Damage.Empty) - component.Damage = melee.Damage * component.MeleeDamageMultiplier; - if (component.SoundHit == null) - component.SoundHit = melee.SoundHit; - if (component.SoundNoDamage == null) - { - if (melee.SoundNoDamage != null) - component.SoundNoDamage = melee.SoundNoDamage; - else - component.SoundNoDamage = new SoundCollectionSpecifier("WeakHit"); - } + if (melee.SoundNoDamage != null) + component.SoundNoDamage = melee.SoundNoDamage; + else + component.SoundNoDamage = new SoundCollectionSpecifier("WeakHit"); } RaiseLocalEvent(uid, new DamageOtherOnHitStartupEvent((uid, component))); @@ -183,16 +181,6 @@ private void OnThrown(EntityUid uid, DamageOtherOnHitComponent component, Thrown component.HitQuantity = 0; } - /// - /// Prevent Pacified entities from throwing damaging items. - /// - private void OnAttemptPacifiedThrow(EntityUid uid, DamageOtherOnHitComponent comp, ref AttemptPacifiedThrowEvent args) - { - // Allow healing projectiles, forbid any that do damage - if (comp.Damage.AnyPositive()) - args.Cancel("pacified-cannot-throw"); - } - /// /// Gets the total damage a throwing weapon does. /// diff --git a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs index 78650ec5cf..3e50ee3557 100644 --- a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs +++ b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs @@ -61,13 +61,17 @@ private void OnDamageChanged(EntityUid uid, SlowOnDamageComponent component, Dam private void OnModifySpeed(Entity ent, ref InventoryRelayedEvent args) { + var dif = 1 - args.Args.Speed; + if (dif <= 0) + return; + // reduces the slowness modifier by the given coefficient - args.Args.Speed = 1 - (1 - args.Args.Speed) * ent.Comp.Modifier; + args.Args.Speed += dif * ent.Comp.Modifier; } private void OnExamined(Entity ent, ref ExaminedEvent args) { - var msg = Loc.GetString("slow-on-damage-modifier-examine", ("mod", Math.Round((1 - ent.Comp.Modifier) * 100))); + var msg = Loc.GetString("slow-on-damage-modifier-examine", ("mod", (1 - ent.Comp.Modifier) * 100)); args.PushMarkup(msg); } diff --git a/Content.Shared/Fluids/AbsorbentComponent.cs b/Content.Shared/Fluids/AbsorbentComponent.cs index 6cda88a72d..450ecc0df6 100644 --- a/Content.Shared/Fluids/AbsorbentComponent.cs +++ b/Content.Shared/Fluids/AbsorbentComponent.cs @@ -38,13 +38,4 @@ public sealed partial class AbsorbentComponent : Component { Params = AudioParams.Default.WithVariation(SharedContentAudioSystem.DefaultVariation).WithVolume(-3f), }; - - [DataField] - public float FootprintCleaningRange = 0.2f; - - /// - /// How many footprints within can be cleaned at once. - /// - [DataField] - public int MaxCleanedFootprints = 5; } diff --git a/Content.Shared/Footprint/FootPrintsComponent.cs b/Content.Shared/Footprint/FootPrintsComponent.cs index 99aa2106cf..2b2c4ed66e 100644 --- a/Content.Shared/Footprint/FootPrintsComponent.cs +++ b/Content.Shared/Footprint/FootPrintsComponent.cs @@ -1,6 +1,4 @@ using System.Numerics; -using Content.Shared.Chemistry.Components; -using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -9,17 +7,23 @@ namespace Content.Shared.FootPrint; [RegisterComponent] public sealed partial class FootPrintsComponent : Component { - [DataField] + [ViewVariables(VVAccess.ReadOnly), DataField] public ResPath RsiPath = new("/Textures/Effects/footprints.rsi"); - [DataField] - public string - LeftBarePrint = "footprint-left-bare-human", - RightBarePrint = "footprint-right-bare-human", - ShoesPrint = "footprint-shoes", - SuitPrint = "footprint-suit"; + // all of those are set as a layer + [ViewVariables(VVAccess.ReadOnly), DataField] + public string LeftBarePrint = "footprint-left-bare-human"; - [DataField] + [ViewVariables(VVAccess.ReadOnly), DataField] + public string RightBarePrint = "footprint-right-bare-human"; + + [ViewVariables(VVAccess.ReadOnly), DataField] + public string ShoesPrint = "footprint-shoes"; + + [ViewVariables(VVAccess.ReadOnly), DataField] + public string SuitPrint = "footprint-suit"; + + [ViewVariables(VVAccess.ReadOnly), DataField] public string[] DraggingPrint = [ "dragging-1", @@ -28,10 +32,14 @@ public string "dragging-4", "dragging-5", ]; + // yea, those - [DataField] + [ViewVariables(VVAccess.ReadOnly), DataField] public EntProtoId StepProtoId = "Footstep"; + [ViewVariables(VVAccess.ReadOnly), DataField] + public Color PrintsColor = Color.FromHex("#00000000"); + /// /// The size scaling factor for footprint steps. Must be positive. /// @@ -45,8 +53,20 @@ public string public float DragSize = 0.5f; /// - /// Horizontal offset of the created footprints relative to the center. + /// The amount of color to transfer from the source (e.g., puddle) to the footprint. + /// + [DataField] + public float ColorQuantity; + + /// + /// The factor by which the alpha channel is reduced in subsequent footprints. /// + [DataField] + public float ColorReduceAlpha = 0.1f; + + [DataField] + public string? ReagentToTransfer; + [DataField] public Vector2 OffsetPrint = new(0.1f, 0f); @@ -58,20 +78,11 @@ public string /// /// The position of the last footprint in world coordinates. /// - public Vector2 LastStepPos = Vector2.Zero; - - [DataField] - public HashSet DNAs = new(); + public Vector2 StepPos = Vector2.Zero; /// - /// Reagent volume used for footprints. + /// Controls how quickly the footprint color transitions between steps. + /// Value between 0 and 1, where higher values mean faster color changes. /// - [DataField] - public Solution ContainedSolution = new(3) { CanReact = true, MaxVolume = 5f, }; - - /// - /// Amount of reagents used per footprint. - /// - [DataField] - public FixedPoint2 FootprintVolume = 1f; + public float ColorInterpolationFactor = 0.2f; } diff --git a/Content.Shared/Footprint/PuddleFootPrintsComponent.cs b/Content.Shared/Footprint/PuddleFootPrintsComponent.cs index bea2b6b7a1..0e2ddfe383 100644 --- a/Content.Shared/Footprint/PuddleFootPrintsComponent.cs +++ b/Content.Shared/Footprint/PuddleFootPrintsComponent.cs @@ -1,14 +1,11 @@ -using Content.Shared.FixedPoint; - - namespace Content.Shared.FootPrint; [RegisterComponent] public sealed partial class PuddleFootPrintsComponent : Component { - /// - /// Ratio between puddle volume and the amount of reagents that can be transferred from it. - /// [ViewVariables(VVAccess.ReadWrite)] - public FixedPoint2 SizeRatio = 0.15f; + public float SizeRatio = 0.2f; + + [ViewVariables(VVAccess.ReadWrite)] + public float OffPercent = 80f; } diff --git a/Content.Shared/Movement/Components/SpeedModifiedByContactModifierComponent.cs b/Content.Shared/Movement/Components/SpeedModifiedByContactModifierComponent.cs deleted file mode 100644 index 9a32d3453d..0000000000 --- a/Content.Shared/Movement/Components/SpeedModifiedByContactModifierComponent.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Content.Shared.Movement.Systems; -using Robust.Shared.GameStates; - -namespace Content.Shared.Movement.Components; - -// -// This is used to modify how much an entity is affected by speed modifier contacts. -// -[NetworkedComponent, RegisterComponent] -[AutoGenerateComponentState] -[Access(typeof(SpeedModifierContactsSystem))] -public sealed partial class SpeedModifiedByContactModifierComponent : Component -{ - // - // Numbers greater than 1 amplify the walk speed modifier, and lower numbers lessen the effect. - // - [DataField, AutoNetworkedField] - public float WalkModifierEffectiveness = 1.0f; - - // - // Numbers greater than 1 amplify the sprint speed modifier, and lower numbers lessen the effect. - // - [DataField, AutoNetworkedField] - public float SprintModifierEffectiveness = 1.0f; - - // - // The minimum walk speed multiplier. - // - [DataField, AutoNetworkedField] - public float MinWalkMultiplier = 0.1f; - - // - // The minimum sprint speed multiplier. - // - [DataField, AutoNetworkedField] - public float MinSprintMultiplier = 0.1f; -} diff --git a/Content.Shared/Movement/Systems/SpeedModifierContactsSystem.cs b/Content.Shared/Movement/Systems/SpeedModifierContactsSystem.cs index 94becab9d2..6e1b3a29ae 100644 --- a/Content.Shared/Movement/Systems/SpeedModifierContactsSystem.cs +++ b/Content.Shared/Movement/Systems/SpeedModifierContactsSystem.cs @@ -102,16 +102,6 @@ private void MovementSpeedCheck(EntityUid uid, SpeedModifiedByContactComponent c walkSpeed /= entries; sprintSpeed /= entries; - if (TryComp(uid, out var modifier)) - { - walkSpeed = Math.Max(Math.Min(modifier.MinWalkMultiplier, walkSpeed), - // Similar to the formula for movement slow resist in Deadlock - 1 - (1 - walkSpeed) * modifier.WalkModifierEffectiveness); - - sprintSpeed = Math.Max(Math.Min(modifier.MinSprintMultiplier, sprintSpeed), - 1 - (1 - sprintSpeed) * modifier.SprintModifierEffectiveness); - } - args.ModifySpeed(walkSpeed, sprintSpeed); } diff --git a/Content.Shared/Projectiles/EmbedPassiveDamageSystem.cs b/Content.Shared/Projectiles/EmbedPassiveDamageSystem.cs index 589abf305c..55733ac5bb 100644 --- a/Content.Shared/Projectiles/EmbedPassiveDamageSystem.cs +++ b/Content.Shared/Projectiles/EmbedPassiveDamageSystem.cs @@ -1,4 +1,3 @@ -using Content.Shared.CombatMode.Pacification; using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Events; @@ -25,7 +24,6 @@ public override void Initialize() SubscribeLocalEvent(OnEmbed); SubscribeLocalEvent(OnRemoveEmbed); SubscribeLocalEvent(OnItemToggle); - SubscribeLocalEvent(OnAttemptPacifiedThrow); } /// @@ -94,16 +92,6 @@ private void OnItemToggle(EntityUid uid, EmbedPassiveDamageComponent component, component.Damage = deactivatedDamage; } - /// - /// Prevent Pacified entities from throwing items that deal passive damage when embedded. - /// - private void OnAttemptPacifiedThrow(EntityUid uid, EmbedPassiveDamageComponent comp, ref AttemptPacifiedThrowEvent args) - { - // Allow healing projectiles, forbid any that do damage - if (comp.Damage.AnyPositive()) - args.Cancel("pacified-cannot-throw"); - } - public override void Update(float frameTime) { base.Update(frameTime); diff --git a/Content.Shared/Projectiles/SharedProjectileSystem.cs b/Content.Shared/Projectiles/SharedProjectileSystem.cs index a32575c0ee..f5d2a915dc 100644 --- a/Content.Shared/Projectiles/SharedProjectileSystem.cs +++ b/Content.Shared/Projectiles/SharedProjectileSystem.cs @@ -1,5 +1,6 @@ using System.Numerics; using Content.Shared.Body.Systems; +using Content.Shared.CombatMode.Pacification; using Content.Shared.Damage; using Content.Shared.DoAfter; using Content.Shared.Examine; @@ -46,6 +47,7 @@ public override void Initialize() SubscribeLocalEvent(OnEmbedThrowDoHit); SubscribeLocalEvent(OnEmbedActivate); SubscribeLocalEvent(OnEmbedRemove); + SubscribeLocalEvent(OnAttemptPacifiedThrow); SubscribeLocalEvent(OnExamined); } @@ -209,6 +211,14 @@ public void SetShooter(EntityUid id, ProjectileComponent component, EntityUid sh Dirty(id, component); } + /// + /// Prevent players with the Pacified status effect from throwing embeddable projectiles. + /// + private void OnAttemptPacifiedThrow(Entity ent, ref AttemptPacifiedThrowEvent args) + { + args.Cancel("pacified-cannot-throw-embed"); + } + private void OnExamined(EntityUid uid, EmbeddableProjectileComponent component, ExaminedEvent args) { if (!(component.Target is {} target)) diff --git a/Content.Shared/Slippery/SlippableModifierComponent.cs b/Content.Shared/Slippery/SlippableModifierComponent.cs deleted file mode 100644 index 9a5a22e3a2..0000000000 --- a/Content.Shared/Slippery/SlippableModifierComponent.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Robust.Shared.GameStates; -namespace Content.Shared.Slippery; - -/// -/// Modifies the duration of slip paralysis on an entity. -/// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class SlippableModifierComponent : Component -{ - /// - /// What to multiply the paralyze time by. - /// - [DataField, AutoNetworkedField] - public float ParalyzeTimeMultiplier = 1f; -} diff --git a/Content.Shared/Slippery/SlipperySystem.cs b/Content.Shared/Slippery/SlipperySystem.cs index 4d6c4fe342..0b52cdde92 100644 --- a/Content.Shared/Slippery/SlipperySystem.cs +++ b/Content.Shared/Slippery/SlipperySystem.cs @@ -37,7 +37,6 @@ public override void Initialize() SubscribeLocalEvent(OnThrownSlipAttempt); // as long as slip-resistant mice are never added, this should be fine (otherwise a mouse-hat will transfer it's power to the wearer). SubscribeLocalEvent>((e, c, ev) => OnNoSlipAttempt(e, c, ev.Args)); - SubscribeLocalEvent(OnSlippableModifierSlipped); } private void HandleStepTrigger(EntityUid uid, SlipperyComponent component, ref StepTriggeredOffEvent args) @@ -63,11 +62,6 @@ private void OnThrownSlipAttempt(EntityUid uid, ThrownItemComponent comp, ref Sl args.Cancelled = true; } - private void OnSlippableModifierSlipped(EntityUid uid, SlippableModifierComponent comp, ref SlippedEvent args) - { - args.ParalyzeTime *= comp.ParalyzeTimeMultiplier; - } - private bool CanSlip(EntityUid uid, EntityUid toSlip) { return !_container.IsEntityInContainer(uid) @@ -92,9 +86,6 @@ private void TrySlip(EntityUid uid, SlipperyComponent component, EntityUid other var ev = new SlipEvent(other); RaiseLocalEvent(uid, ref ev); - var slippedEv = new SlippedEvent(uid, component.ParalyzeTime); - RaiseLocalEvent(other, ref slippedEv); - if (TryComp(other, out PhysicsComponent? physics) && !HasComp(other)) { _physics.SetLinearVelocity(other, physics.LinearVelocity * component.LaunchForwardsMultiplier, body: physics); @@ -109,7 +100,7 @@ private void TrySlip(EntityUid uid, SlipperyComponent component, EntityUid other var playSound = !_statusEffects.HasStatusEffect(other, "KnockedDown"); - _stun.TryParalyze(other, TimeSpan.FromSeconds(slippedEv.ParalyzeTime), true); + _stun.TryParalyze(other, TimeSpan.FromSeconds(component.ParalyzeTime), true); RaiseLocalEvent(other, new MoodEffectEvent("MobSlipped")); @@ -143,19 +134,3 @@ public record struct SlipCausingAttemptEvent (bool Cancelled); /// The entity being slipped [ByRefEvent] public readonly record struct SlipEvent(EntityUid Slipped); - -/// Raised on an entity that slipped. -/// The entity that caused the slip -/// How many seconds the entity will be paralyzed for, modifiable with this event. -[ByRefEvent] -public record struct SlippedEvent -{ - public readonly EntityUid Slipper; - public float ParalyzeTime; - - public SlippedEvent(EntityUid slipper, float paralyzeTime) - { - Slipper = slipper; - ParalyzeTime = paralyzeTime; - } -} diff --git a/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs b/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs index 6635e331b5..5bb303cf51 100644 --- a/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs +++ b/Content.Shared/StepTrigger/Systems/StepTriggerSystem.cs @@ -1,6 +1,5 @@ using Content.Shared.Gravity; using Content.Shared.StepTrigger.Components; -using Content.Shared.Traits.Assorted.Components; using Content.Shared.Whitelist; using Robust.Shared.Map.Components; using Robust.Shared.Physics; @@ -98,11 +97,7 @@ private void UpdateColliding(EntityUid uid, StepTriggerComponent component, Tran // this is hard to explain var intersect = Box2.Area(otherAabb.Intersect(ourAabb)); var ratio = Math.Max(intersect / Box2.Area(otherAabb), intersect / Box2.Area(ourAabb)); - var requiredTriggeredSpeed = component.RequiredTriggeredSpeed; - if (TryComp(otherUid, out var speedModifier)) - requiredTriggeredSpeed *= speedModifier.RequiredTriggeredSpeedModifier; - - if (otherPhysics.LinearVelocity.Length() < requiredTriggeredSpeed + if (otherPhysics.LinearVelocity.Length() < component.RequiredTriggeredSpeed || component.CurrentlySteppedOn.Contains(otherUid) || ratio < component.IntersectRatio || !CanTrigger(uid, otherUid, component)) diff --git a/Content.Shared/Traits/Assorted/Components/TraitSpeedModifierComponent.cs b/Content.Shared/Traits/Assorted/Components/TraitSpeedModifierComponent.cs index c0d79c8375..85dc52a21f 100644 --- a/Content.Shared/Traits/Assorted/Components/TraitSpeedModifierComponent.cs +++ b/Content.Shared/Traits/Assorted/Components/TraitSpeedModifierComponent.cs @@ -13,10 +13,4 @@ public sealed partial class TraitSpeedModifierComponent : Component [DataField, AutoNetworkedField] public float SprintModifier = 1.0f; - - // - // Multiplied with the required trigger speed for step triggers that this entity collides with. - // - [DataField, AutoNetworkedField] - public float RequiredTriggeredSpeedModifier = 1.0f; } diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index da6e4e2058..707e36d75f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4051,7 +4051,7 @@ Entries: - type: Add message: >- Glass/Crystal shards and floor tiles now deal damage and embed in - victims when colliding with them. + victims when colliding with them. id: 6107 time: '2024-05-11T01:23:00.0000000+00:00' - author: FoxxoTrystan @@ -4262,7 +4262,7 @@ Entries: - type: Fix message: >- Spent bullet casings now fly away from a shooter in a cinematic manner, - rather than fall at their feet. + rather than fall at their feet. id: 6133 time: '2024-07-01T22:37:29.0000000+00:00' - author: WarMechanic @@ -4458,7 +4458,7 @@ Entries: - type: Add message: >- Cablecuffs and Zipties are now easier to escape out of if you're - smaller. + smaller. id: 6158 time: '2024-07-13T08:05:52.0000000+00:00' - author: FoxxoTrystan @@ -4526,7 +4526,7 @@ Entries: - type: Fix message: >- Harpies can no longer buy Loadout items that are impossible for them to - wear due to having digitigrade legs. + wear due to having digitigrade legs. id: 6168 time: '2024-07-18T02:34:52.0000000+00:00' - author: Mnemotechnician @@ -4585,7 +4585,7 @@ Entries: - type: Add message: >- Camera Shake is now affected by character mass. Small characters - experience more camera shake. Large characters experience less. + experience more camera shake. Large characters experience less. id: 6176 time: '2024-07-21T06:50:25.0000000+00:00' - author: VMSolidus @@ -4593,7 +4593,7 @@ Entries: - type: Add message: >- The Head Of Personnel can now hire people onto basic roles for each - department by vending PDAs. + department by vending PDAs. id: 6177 time: '2024-07-22T19:12:01.0000000+00:00' - author: VMSolidus @@ -4700,7 +4700,7 @@ Entries: - type: Fix message: >- Fixed Tools, Drink Containers, Lockers, and all base items having - inconsistent sound settings. + inconsistent sound settings. id: 6191 time: '2024-07-31T22:47:01.0000000+00:00' - author: VMSolidus @@ -4808,7 +4808,7 @@ Entries: - type: Add message: >- Added a 1-point combat knife to Loadouts for Felinid/Harpy security - jobs. + jobs. - type: Tweak message: Made the security belt and security webbing able to hold combat knives. - type: Tweak @@ -4858,7 +4858,7 @@ Entries: Due to budget cuts, Nanotrasen has ceased stocking Clothesmate vendors with more clothing than the average cargo tech can afford. Civilians are advised to bring their own clothes to the station if they wish to wear - anything other than grey. + anything other than grey. id: 6208 time: '2024-08-04T00:23:53.0000000+00:00' - author: VMSolidus @@ -4866,7 +4866,7 @@ Entries: - type: Add message: >- SweatMAX, "hot foods", Mars Mart, and Nippon-tan vendors have all been - added to vendor spawners. + added to vendor spawners. id: 6209 time: '2024-08-04T06:26:34.0000000+00:00' - author: Skubman @@ -4925,7 +4925,7 @@ Entries: The Carrying system has been reworked as a means of better supporting having extremely large species and characters. 10kg Harpies should no longer be oppressed by 2000kg Lamia with infinitely short carry - attempts. + attempts. id: 6216 time: '2024-08-05T17:11:37.0000000+00:00' - author: Rane @@ -4953,11 +4953,11 @@ Entries: - type: Add message: >- CPR has been added to the game. People with CPR training can now perform - CPR on anyone who is in either crit or dead states. + CPR on anyone who is in either crit or dead states. - type: Add message: >- CPR Training has been added to the game as a new positive trait. All - medical staff start with this trait for free. + medical staff start with this trait for free. id: 6220 time: '2024-08-06T05:28:54.0000000+00:00' - author: Skubman @@ -5144,7 +5144,7 @@ Entries: - type: Fix message: >- Sluggish and Snail-Paced will now properly apply their movement - penalties upon joining. + penalties upon joining. id: 6244 time: '2024-08-09T17:28:01.0000000+00:00' - author: ODJ @@ -5160,7 +5160,7 @@ Entries: - type: Tweak message: >- Renamed "Psionic Mantis" to "Mantis", as it was originally going to be - called. + called. id: 6246 time: '2024-08-10T12:03:12.0000000+00:00' - author: Skubman @@ -5448,7 +5448,7 @@ Entries: - type: Tweak message: >- Chaplain, Mantis, & Mystagogue all receive the Latent Psychic trait for - free, automatically. + free, automatically. id: 6273 time: '2024-08-20T18:42:44.0000000+00:00' - author: VMSolidus @@ -5466,7 +5466,7 @@ Entries: Actions no longer need to hardcode in target blacklists, and can now blacklist entities in YML. This is notably useful for Psionic powers, which all share a common feature that they can't target people with - Psionic Insulation (Or have been Mindbroken). + Psionic Insulation (Or have been Mindbroken). id: 6275 time: '2024-08-21T09:08:40.0000000+00:00' - author: VMSolidus @@ -5535,7 +5535,7 @@ Entries: message: >- Gaining a new Psionic Power can now display messages to alert the player, both as a short popup, and optionally a lengthier message sent - to the user's Chat window. + to the user's Chat window. id: 6284 time: '2024-08-22T17:12:26.0000000+00:00' - author: DEATHB4DEFEAT @@ -5652,7 +5652,7 @@ Entries: message: >- Natural Telepath has returned from Psionic-Refactor V1, now using new functionality from the trait system that allows traits to buy psionic - powers directly. + powers directly. - type: Add message: >- Latent Psychics who have neither bought Natural Telepath, nor acquired @@ -5730,7 +5730,7 @@ Entries: message: >- InnatePsionicPowers now operates on MapInitEvent instead of ComponentStartup, meaning that it can now be safely used on entities - that are mapped in instead of spawned. + that are mapped in instead of spawned. - type: Add message: >- Oracle and Sophia are now recognized as Divine, and as such are @@ -5783,7 +5783,7 @@ Entries: Psionic(But cannot gain powers randomly). This is due to their status as "Magical And/Or Extraplanar Creatures", which makes them valid targets for anti-psychic abilities such as the Psionic Mantis' Anti-Psychic - Knife. + Knife. - type: Add message: Some Reagent Slimes can now contain Lotophagoi Oil. id: 6310 @@ -5800,7 +5800,7 @@ Entries: message: >- "Clone Soup" scales directly with the mass of the entity you're attempting to clone. Fail to clone a Lamia, and you'll be greeted with - an Olympic swimming pool worth of blood when the machine opens. + an Olympic swimming pool worth of blood when the machine opens. - type: Add message: >- Cloning will fail if at any point during the procedure, the machine is @@ -5809,7 +5809,7 @@ Entries: message: >- Clones come out of the machine with severe Cellular damage. Consider using Doxarubixadone in a Cryo tube as an affordable means of - "Finishing" clones. + "Finishing" clones. - type: Tweak message: >- Cloning Time is now increased proportionally if an entity being cloned @@ -5867,7 +5867,7 @@ Entries: - type: Add message: >- Several new tips have been added to the game, many of which reference - new content available on Einstein-Engines. + new content available on Einstein-Engines. id: 6315 time: '2024-09-05T00:00:21.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/844 @@ -5885,7 +5885,7 @@ Entries: Due to NUMEROUS complaints, NanoTrasen has swapped the sticker labels on all colored jumpskirts to correctly state that they are infact, "Skirts", so now they can legally be worn by Harpies, Lamia, and - Arachne. + Arachne. id: 6317 time: '2024-09-05T00:19:49.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/848 @@ -5949,7 +5949,7 @@ Entries: message: >- All non-job specific uniforms have had their points reduced drastically, almost all of them down to 0 points, with only a tiny handful at 2 - points, and the rest as 1. + points, and the rest as 1. id: 6321 time: '2024-09-07T00:53:13.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/872 @@ -6126,7 +6126,7 @@ Entries: - type: Add message: >- The Antag Refactor has been once again added back in. More antags will - be coming soon. + be coming soon. id: 6340 time: '2024-09-09T14:21:56.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/794 @@ -6234,7 +6234,7 @@ Entries: - type: Add message: >- added rcds to the list of possible re and ported over the re update from - delta + delta - type: Tweak message: >- tweaked the costs of boards re-machine boards to be more consistent with @@ -6425,7 +6425,7 @@ Entries: - type: Fix message: >- Cloning Consoles will now correctly state when a body has the - Uncloneable trait. + Uncloneable trait. id: 6368 time: '2024-09-18T04:30:39.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/926 @@ -6544,7 +6544,7 @@ Entries: - type: Add message: >- All "Long-arms", Rifles, Light Machine Guns, Shotguns, now require - wielding to use. + wielding to use. id: 6378 time: '2024-09-20T20:35:43.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/913 @@ -6562,7 +6562,7 @@ Entries: - type: Add message: >- Tau-Ceti Basic, Tradeband, Freespeak, Elyran Standard, Sol Common, and - Sign Language have been added to the Languages tab. + Sign Language have been added to the Languages tab. id: 6380 time: '2024-09-20T21:46:47.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/936 @@ -6572,7 +6572,7 @@ Entries: message: >- Removed the "Become Psionic" traitor objective. It was literally impossible to fail if you took the Latent Psychic trait, and literally - impossible to greentext if you didn't. + impossible to greentext if you didn't. id: 6381 time: '2024-09-20T21:47:16.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/940 @@ -6643,7 +6643,7 @@ Entries: message: >- The Do-After bar for Breath of Life and Healing Word is now hidden if glimmer is low enough. The threshold for which scales with your - Dampening stat. More Dampening = stealthier casting. + Dampening stat. More Dampening = stealthier casting. id: 6386 time: '2024-09-24T00:56:34.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/949 @@ -6683,7 +6683,7 @@ Entries: - type: Remove message: >- The button for "Suit/Skirt Preference" has also been removed. Suit - selection is done via Loadouts. + selection is done via Loadouts. id: 6390 time: '2024-09-28T00:46:19.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/957 @@ -6789,7 +6789,7 @@ Entries: message: >- Nerfed the fuck out of Reagent Slimes. They have 1/3rd as much HP, spawn half as many during reagent slime vents, deal significantly less damage, - and inject a lot less chems when biting people. + and inject a lot less chems when biting people. id: 6401 time: '2024-09-29T17:42:43.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/977 @@ -6836,7 +6836,7 @@ Entries: message: >- Oni now have a built-in negative trait that acts as a more severe version of Low Psi-Potential. Oni now have significant penalties to - generating new Psionic Powers. + generating new Psionic Powers. id: 6406 time: '2024-09-30T18:28:31.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/983 @@ -6987,7 +6987,7 @@ Entries: message: >- Nerfed Lotophagoi Moodlets so that both the positive and negative moodlets only last for 10 minutes. The total mood modification has been - left untouched. + left untouched. id: 6423 time: '2024-10-07T15:29:05.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1013 @@ -7005,7 +7005,7 @@ Entries: - type: Add message: >- The Salvage Shittle has been replaced with the Pathfinder Expedition - Vessel from Frontier. + Vessel from Frontier. id: 6425 time: '2024-10-09T01:17:11.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1027 @@ -7208,7 +7208,7 @@ Entries: message: >- Added 8 new Physical Traits. These are, Cyber-Eyes Basic System(Plus 4 different modular options), Bionic Arm, Dermal Armor, and Platelet - Factories. + Factories. id: 6445 time: '2024-10-13T19:25:05.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1035 @@ -7220,7 +7220,7 @@ Entries: station staff. New loadout items for corporate contractors are now available for Bartender, Botanist, Cataloguer, Chef, and Janitor. Currently there are no jumpskirt versions of these uniforms. We are - looking for people willing to make skirt variations of each of these. + looking for people willing to make skirt variations of each of these. id: 6446 time: '2024-10-13T19:26:23.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1041 @@ -7286,7 +7286,7 @@ Entries: - type: Tweak message: >- Psionic Rolls should now generate larger, random amounts of Potentia. - This should make it a lot easier to obtain powers. + This should make it a lot easier to obtain powers. id: 6453 time: '2024-10-15T23:13:13.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1047 @@ -7384,7 +7384,7 @@ Entries: message: >- The Syndicate has significantly expanded their Listening Outpost operations, featuring larger, better defended outposts. These new - outposts also serve as supply depots for Syndicate agents in the field. + outposts also serve as supply depots for Syndicate agents in the field. id: 6465 time: '2024-10-19T08:45:44.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1065 @@ -7591,7 +7591,7 @@ Entries: message: >- The Syndicate Listening Post now has a custom communications console, which no longer can recall Nanotrasen shuttles, and doesn't sign its - messages as Nuclear Operatives. + messages as Nuclear Operatives. id: 6490 time: '2024-10-27T15:31:16.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1143 @@ -7646,12 +7646,12 @@ Entries: New psi-power "Summon Imp", as the first new Psi Familiar. Imps are small motes of living flame that follow and protect their summoner. Imps also emit an incredibly bright light, and can natively cast Pyrokinetic - Flare. + Flare. - type: Add message: >- Remilia has been updated to be a Psi Familiar, and no longer requires the Bible to summon. Chaplains now start with a Power that lets them - summon Remilia once every 2 minutes. + summon Remilia once every 2 minutes. id: 6495 time: '2024-10-27T16:51:18.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1146 @@ -7690,7 +7690,7 @@ Entries: - type: Tweak message: >- Literally doubled the power output of solar panels, to make them - actually worthwhile to setup. + actually worthwhile to setup. id: 6498 time: '2024-11-02T00:40:50.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1170 @@ -7744,7 +7744,7 @@ Entries: - type: Add message: >- lockers for Syndicate Agent (for mapping), Janitor and Bartender have - been added. + been added. - type: Add message: a new wall variant has been added for the radiation closet - type: Add @@ -7781,7 +7781,7 @@ Entries: message: >- Communications Consoles that are marked as "Can't Recall The Shuttle" now can't recall the shuttle. Previously they were still able to recall - it. + it. id: 6506 time: '2024-11-05T04:12:36.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1180 @@ -7829,7 +7829,7 @@ Entries: - type: Remove message: >- Shadowkin have been temporarily disabled pending significant reworks and - balance updates. + balance updates. id: 6512 time: '2024-11-08T19:33:53.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1187 @@ -7849,7 +7849,7 @@ Entries: - type: Fix message: >- Fixed AddTrait and ReplaceTrait functions giving players an unmodified, - completely default component. + completely default component. id: 6514 time: '2024-11-10T15:22:47.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1195 @@ -7991,7 +7991,7 @@ Entries: - type: Add message: >- The stamina cost of an object's power attack can now be revealed by - examining its damage values. + examining its damage values. - type: Tweak message: >- Power attacks can't be done if your stamina is too low, so you can't @@ -8056,12 +8056,12 @@ Entries: - type: Tweak message: >- CyberEyes Basic System has been split, now Flash Protection is a - separate module. + separate module. - type: Add message: >- Dermal Armor no longer replaces your original species damage resistances. It now stacks multiplicatively with your original - resistances. + resistances. - type: Tweak message: Dermal Armor can now be taken by any species, not just Humans. - type: Add @@ -8234,7 +8234,7 @@ Entries: - type: Fix message: >- Fixed biosynthetic and other printable parts not allowing you to attach - body parts to them. + body parts to them. - type: Fix message: Fixed fire being able to destroy your chest. - type: Fix @@ -8260,7 +8260,7 @@ Entries: - type: Tweak message: >- Unbound shitmed targeting doll keybinds by default (did you know we have - those). + those). id: 6546 time: '2024-11-30T16:06:56.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1271 @@ -8270,7 +8270,7 @@ Entries: message: >- All engineering roles have had their equipment loadouts significantly expanded upon. Engineers can now buy construction materials with their - loadout points. + loadout points. - type: Fix message: All engineering jobs now have their Suit/Skirt selection via loadouts. - type: Add @@ -8289,7 +8289,7 @@ Entries: - type: Add message: >- Added various articles of religious headgear to loadouts, such as Hijab, - Kippah, and Turban. All of these are set to allow custom colors. + Kippah, and Turban. All of these are set to allow custom colors. id: 6548 time: '2024-11-30T18:52:35.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1297 @@ -8372,7 +8372,7 @@ Entries: - type: Fix message: >- Enabled the "Mend brain tissue" surgical procedure on a lobotomized - target. + target. - type: Fix message: >- The lobotomized effect is now stored in the brain instead of the body. @@ -8505,7 +8505,7 @@ Entries: message: >- Examining the damage values of an item now shows its throwing damage, throwing stamina cost, whether or not it embeds on a throw, and if the - embed deals damage over time. + embed deals damage over time. - type: Add message: Examining an embedded item now shows what body part it's embedded in. - type: Tweak @@ -8661,7 +8661,7 @@ Entries: - type: Add message: >- Added a variety of Pointy Ears markings for Harpy and Arachne - characters. + characters. id: 6578 time: '2024-12-15T19:13:50.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1348 @@ -8729,7 +8729,7 @@ Entries: - type: Remove message: >- Removed all 'specific color' variants of colorable items from Loadouts, - such as "Blue Jumpsuit" when a colorable jumpsuit exists. + such as "Blue Jumpsuit" when a colorable jumpsuit exists. id: 6585 time: '2024-12-21T18:02:28.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1364 @@ -8837,7 +8837,7 @@ Entries: message: >- Tweaked arrivals to reduce the playable area, and some concessions have been made to prevent access to admeme items that were on display. These - changes are pending a later update where we port Arrivals Job Spawns. + changes are pending a later update where we port Arrivals Job Spawns. id: 6597 time: '2024-12-30T21:15:16.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1371 @@ -9159,211 +9159,3 @@ Entries: id: 6629 time: '2025-01-05T16:01:33.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1427 -- author: Skubman - changes: - - type: Add - message: >- - Lamiae can now be male, no longer being a female-only species. They can - now wear facial hair as well. - - type: Add - message: >- - The Lamia species can now select markings above the leg, including - cybernetics, makeup, tattoos, noses, earrings, heterochromia, bracelets, - reptilian horns and frills, pointy ears, and more! - - type: Fix - message: Added text for the Lamia tail marking. - id: 6630 - time: '2025-01-05T18:09:37.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1440 -- author: Skubman - changes: - - type: Fix - message: >- - Fixed embeddable damage over time not showing when examining an item's - damage values. - - type: Fix - message: 'Fixed the emag not dealing passive damage when embedded on a target. ' - - type: Tweak - message: >- - Examining an item's damage values now shows values in a sorted order. - From top to bottom: gun damage, melee damage, throwing damage, embedded - damage. - - type: Tweak - message: >- - Spears now have a 6 stamina cost when thrown, and they no longer break - when thrown enough times. - - type: Tweak - message: Floor tiles now break when thrown 10 times instead of 4 times. - - type: Tweak - message: >- - Closets, lockers and crates now play the proper sound effect when thrown - (by Space Wind). - id: 6631 - time: '2025-01-05T18:10:29.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1434 -- author: Skubman - changes: - - type: Add - message: >- - Added two new traits: Steadfast and Feeble that decrease or increase the - effect of slows from injuries. - - type: Tweak - message: >- - Injury slows for most species has been slightly increased, but this can - be mitigated with the Steadfast trait. - - type: Tweak - message: >- - The jackboots' injury slow resistance has been decreased from 50% to - 20%. - - type: Tweak - message: Combat boots now add resistance to injury slows like jackboots. - id: 6632 - time: '2025-01-05T18:24:29.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1431 -- author: VMSolidus - changes: - - type: Add - message: >- - Footprints are now cleaned in a small radius around the mouse cursor - when mopping them. - id: 6633 - time: '2025-01-05T18:27:12.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1439 -- author: Skubman - changes: - - type: Fix - message: >- - Pacified characters (Pacifist trait and thieves) can no longer throw - items that deal throwing damage. - id: 6634 - time: '2025-01-05T18:30:15.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1433 -- author: Skubman - changes: - - type: Tweak - message: >- - The Parkour Training trait has been reworked. It no longer makes you lie - down or get up faster, but grants you 30% shorter slip stuns and 50% - resistance against slows in difficult terrain. - - type: Tweak - message: >- - The Sluggish and Snail-Paced traits now only reduce your movement speed - with no other effects. The speed reductions have been slightly increased - from 15% to 16% for Sluggish, and 30% to 32% for Snail-Paced. - - type: Add - message: >- - Added a new 3-point negative trait called Bad Knees. It is the opposite - of Parkour Training and it makes you climb tables slower, stunned for - longer against slip stuns, and move more slowly in difficult terrain. - - type: Tweak - message: Snail-Paced no longer prevents you from slipping when running. - id: 6635 - time: '2025-01-05T18:31:21.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1432 -- author: Skubman - changes: - - type: Fix - message: >- - The Face marking category now has unlimited markings for all species - apart from IPCs. - - type: Fix - message: >- - Moth People can now apply Moth makeup markings again in the Face - category. - - type: Tweak - message: >- - Unathi now have 3 'Head (Side)' marking points available, so they can - use frills and both left and right-side earrings. - id: 6636 - time: '2025-01-05T18:35:46.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1435 -- author: VMSolidus - changes: - - type: Fix - message: >- - Lamia now make drag marks when moving through puddles instead of regular - footprints. - id: 6637 - time: '2025-01-05T18:37:43.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1425 -- author: VMSolidus - changes: - - type: Fix - message: 'Confiscated Pun Pun''s blackface. ' - id: 6638 - time: '2025-01-05T19:21:08.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1437 -- author: VMSolidus - changes: - - type: Tweak - message: 'Mimes can no longer take the Muted or Foreigner traits. ' - - type: Tweak - message: >- - "Rare" languages like Sinta'Azaziba, Valyrian Standard, now cost points - instead of giving points. - - type: Tweak - message: Sign Language now costs points. - id: 6639 - time: '2025-01-05T19:45:18.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1441 -- author: VMSolidus - changes: - - type: Add - message: Ported a ton of new clothing items from Frontier - id: 6640 - time: '2025-01-05T19:45:36.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1388 -- author: VMSolidus - changes: - - type: Fix - message: Fixed the Syndicate Listening Post not correctly spawning. - id: 6641 - time: '2025-01-05T19:45:57.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1438 -- author: The Den Contributors - changes: - - type: Fix - message: >- - Put actual prescription lenses in the prescription medhuds and sechuds - (by KyuPolaris) - - type: Add - message: >- - Added the CMO turtleneck and head mirror to the CMO loadouts. (by - sleepyyapril, KyuPolaris) - - type: Add - message: >- - Added an armored trenchcoat for the Captain. Enjoy your swag! (by - Rosycup) - - type: Fix - message: Fixed uneven pants leg on summer security uniforms. (by Rosycup) - - type: Add - message: >- - Added the Captain's Combat Gas Mask, for those more fond of close - encounters. (by Rosycup) - - type: Tweak - message: >- - Added the Captain's Trenchcoat to the other captain locker variants. (by - Rosycup) - - type: Fix - message: >- - Fixed they/them pronouns being displayed for it/its characters in the - character preview. (by Azzy) - id: 6642 - time: '2025-01-05T20:46:36.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1443 -- author: TwoDucksOnnaPlane - changes: - - type: Fix - message: >- - Fixed Syndicate Elite hardsuit being one singular Telecrystal. Cybersun - will never recover from this financial blunder. - id: 6643 - time: '2025-01-07T01:21:34.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1449 -- author: Skubman - changes: - - type: Tweak - message: The maximum trait limit has increased from 10 traits to 14 traits. - id: 6644 - time: '2025-01-07T04:08:32.0000000+00:00' - url: https://github.com/Simple-Station/Einstein-Engines/pull/1446 diff --git a/Resources/Locale/en-US/damage/stamina.ftl b/Resources/Locale/en-US/damage/stamina.ftl index 777101f93e..09f9164497 100644 --- a/Resources/Locale/en-US/damage/stamina.ftl +++ b/Resources/Locale/en-US/damage/stamina.ftl @@ -1,5 +1,5 @@ melee-stamina = Not enough stamina -slow-on-damage-modifier-examine = Slowness from injuries is reduced by [color=yellow]{$mod}%[/color]. +slow-on-damage-modifier-examine = Slowness from injuries is reduced by [color=yellow]{$mod}%[/color] throw-no-stamina = You don't have enough stamina to throw the {$item}! diff --git a/Resources/Locale/en-US/markings/lamia.ftl b/Resources/Locale/en-US/markings/lamia.ftl deleted file mode 100644 index 6e32e2fe36..0000000000 --- a/Resources/Locale/en-US/markings/lamia.ftl +++ /dev/null @@ -1,4 +0,0 @@ -marking-LamiaBottom = Lamia Tail -marking-LamiaBottom-bottom3tone1 = Lamia Tail Bottom -marking-LamiaBottom-bottom3tone2 = Lamia Tail Middle -marking-LamiaBottom-bottom3tone3 = Lamia Tail Top diff --git a/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl index 9058f8d2b6..800da35ba5 100644 --- a/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl +++ b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl @@ -5,6 +5,5 @@ humanoid-character-profile-summary = This is {$name}. {$gender -> [male] He is [female] She is - [neuter] It is *[other] They are -} {$age} years old. +} {$age} years old. \ No newline at end of file diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 37de6238d7..25188ca851 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -163,20 +163,6 @@ trait-description-LowPainTolerance = Your tolerance for pain is far below average, and its effects are more inhibiting. Your melee/throwing damage is penalized by up to an additional 15% when taking stamina damage. -trait-name-Steadfast = Steadfast -trait-description-Steadfast = - When others would buckle from the weight of your injuries, you still march forward unrelentingly. - For most species [color=gray](excluding IPC/Shadowkin)[/color], this trait modifies: - - [color=yellow]25%[/color] movement slow at [color=red]60[/color] damage ➔ [color=yellow]17%[/color] movement slow at [color=red]70[/color] damage - - [color=yellow]45%[/color] movement slow at [color=red]80[/color] damage ➔ [color=yellow]30%[/color] movement slow at [color=red]90[/color] damage - -trait-name-Feeble = Feeble -trait-description-Feeble = - Your body responds poorly to injuries, making damage affect your movement more severely. - For most species [color=gray](excluding IPC/Shadowkin)[/color], this trait modifies: - - [color=yellow]25%[/color] movement slow at [color=red]60[/color] damage ➔ [color=yellow]30%[/color] movement slow at [color=red]45[/color] damage - - [color=yellow]45%[/color] movement slow at [color=red]80[/color] damage ➔ [color=yellow]54%[/color] movement slow at [color=red]65[/color] damage - trait-name-MartialArtist = Martial Artist trait-description-MartialArtist = You have received formal training in unarmed combat, whether with Fists, Feet, or Claws. @@ -224,32 +210,20 @@ trait-description-Voracious = Nothing gets between you and your food. Your endless consumption of food and drinks is twice as fast. --terrain-example = [color=gray](e.g. spider web, slime puddle, kudzu, space glue)[/color] --slippery-example = [color=gray](e.g. banana peel, water puddle, soap, space lube)[/color] - trait-name-ParkourTraining = Parkour Training trait-description-ParkourTraining = Whether as a hobby, lifestyle, or professional training, you are trained in the discipline of parkour. - You climb structures like tables [color=yellow]50%[/color] faster. - Slipping leaves you stunned for [color=yellow]30%[/color] shorter. { -slippery-example } - You gain a [color=yellow]50%[/color] resistance to slows from difficult terrain. { -terrain-example } - -trait-name-BadKnees = Bad Knees -trait-description-BadKnees = - Whether due to injury, age, or wear and tear, your knees aren't particularly strong or flexible. - You climb structures like tables [color=yellow]50%[/color] slower. - Slipping leaves you stunned for [color=yellow]40%[/color] longer. { -slippery-example } - Difficult terrain slows you down [color=yellow]35%[/color] more. { -terrain-example } + You're faster with climbing, crawling, lying down, and getting up. trait-name-Sluggish = Sluggish trait-description-Sluggish = You navigate the world slower than others, perhaps due to a medical condition, inactivity, or age. - Your movement speed is decreased by [color=yellow]16%[/color]. + You move slower, and it takes longer for you to climb, lie down and get up. trait-name-SnailPaced = Snail-Paced trait-description-SnailPaced = You walk at a snail's pace, perhaps due to a medical condition, mobility impairment, or age. - Your movement speed is decreased by [color=yellow]32%[/color]. + You move substantially slower, and it takes far longer for you to climb, lie down and get up. trait-name-LightStep = Light Step trait-description-LightStep = diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index 8ff4a819ee..937ee63b50 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -43,7 +43,7 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockAutoDrobeFilled - cost: 3500 + cost: 1730 category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml index b1a9271158..94e10d76ee 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml @@ -39,10 +39,7 @@ - id: ClothingNeckMantleCMO - id: ClothingCloakCmo - id: ClothingOuterCoatLabCmo - - id: ClothingUniformJumpsuitCMOTurtle - - id: ClothingUniformJumpskirtCMOTurtle - id: ClothingHeadHatBeretCmo - - id: ClothingHeadMirror - id: ClothingEyesGlasses - id: ClothingOuterWinterCMO diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index 0bce0f2fb8..fec4f3ffcf 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -33,7 +33,6 @@ components: - type: StorageFill contents: - - id: ClothingOuterCoatCapTrench - id: NukeDisk - id: PinpointerNuclear - id: CaptainIDCard @@ -55,7 +54,6 @@ components: - type: StorageFill contents: - - id: ClothingOuterCoatCapTrench - id: NukeDisk - id: PinpointerNuclear - id: CaptainIDCard @@ -76,7 +74,6 @@ components: - type: StorageFill contents: - - id: ClothingOuterCoatCapTrench - id: NukeDisk - id: PinpointerNuclear - id: CaptainIDCard diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml index e7a367c454..f217791683 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml @@ -45,8 +45,6 @@ contents: - id: HandheldHealthAnalyzer prob: 0.6 - - id: ClothingHeadMirror - prob: 0.1 - id: ClothingHandsGlovesLatex - id: ClothingHeadsetMedical - id: ClothingEyesHudMedical diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml index 94ef753c78..734bd485a2 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -228,7 +228,6 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitCap - id: ClothingMaskGasCaptain - - id: ClothingMaskGasCaptainCombat - type: AccessReader access: [["Captain"]] diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml index 21c0eb011e..6f1b813a8f 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml @@ -1,26 +1,21 @@ - type: vendingMachineInventory id: PietyVendInventory startingInventory: - ClothingUniformJumpsuitChaplain: 3 - ClothingUniformJumpskirtChaplain: 3 - ClothingUniformJumpsuitMonasticRobeDark: 3 - ClothingUniformJumpsuitMonasticRobeLight: 3 - ClothingOuterHoodieChaplain: 3 - ClothingOuterHoodieBlack: 3 - ClothingHeadHatHoodNunHood: 3 - ClothingOuterNunRobe: 3 - ClothingHeadHatFez: 3 - ClothingHeadHatPlaguedoctor: 3 - ClothingHeadHatWitch: 3 - ClothingHeadHatWitch1: 3 - ClothingOuterPlagueSuit: 3 - ClothingMaskPlague: 3 - ClothingNeckScarfChaplainStole: 3 - ClothingHeadsetService: 4 - RubberStampChaplain: 3 - Bible: 3 - ClothingNeckCrucifix: 3 + ClothingUniformJumpsuitChaplain: 2 + ClothingUniformJumpskirtChaplain: 2 + ClothingUniformJumpsuitMonasticRobeDark: 1 + ClothingUniformJumpsuitMonasticRobeLight: 1 ClothingNeckStoleChaplain: 1 + ClothingOuterHoodieChaplain: 1 + ClothingOuterHoodieBlack: 1 + ClothingHeadHatHoodNunHood: 1 + ClothingOuterNunRobe: 1 + ClothingHeadHatFez: 1 + ClothingHeadHatPlaguedoctor: 1 + ClothingHeadHatWitch: 1 + ClothingHeadHatWitch1: 1 + ClothingOuterPlagueSuit: 1 + ClothingMaskPlague: 1 #ClothingHeadsetService: 2 # Delta-V - Chaplain is no longer service dept BoxCandle: 2 BoxCandleSmall: 2 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index ff8b4087ab..9a1566dab9 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -88,50 +88,6 @@ ClothingShoesBootsCowboyBlack: 1 ClothingShoesBootsCowboyWhite: 1 ClothingMaskNeckGaiterRed: 2 - ClothingUniformJumpskirtPerformer: 2 - ClothingShoesBootsPerformer: 2 - ClothingNeckCloakMoth: 2 - ClothingUniformJumpskirtJanimaid: 2 - ClothingNeckCloakVoid: 2 - ClothingHeadBandRed: 1 - ClothingHeadHatPirate: 1 - ClothingOuterCoatPirate: 1 - ClothingUniformJumpsuitPirate: 1 - ClothingShoesBootsLaceup: 2 - FoamCutlass: 2 - ClothingHeadSafari: 2 # Frontier - ClothingUniformJumpsuitSafari: 2 # Frontier - ClothingUniformRandomArmlessNoSkirt: 6 # Frontier - ClothingUniformRandomArmless: 6 # Frontier - ClothingUniformRandomStandard: 6 # Frontier - ClothingUniformRandomBra: 6 # Frontier - ClothingUniformRandomShorts: 6 # Frontier - ClothingUniformRandomShirt: 6 # Frontier - ClothingHandsGlovesBoxingRed: 2 - ClothingHandsGlovesBoxingBlue: 2 - ClothingHandsGlovesBoxingYellow: 2 - ClothingHandsGlovesBoxingGreen: 2 - UniformShortsRed: 4 - UniformShortsRedWithTop: 4 - ClothingBackpackClownFilled: 2 - ClothingBackpackSatchelClown: 2 - ClothingBackpackDuffelClown: 2 - ClothingMaskClown: 2 - ClothingShoesClown: 2 - ClothingUniformJumpsuitClown: 2 - RubberStampClown: 1 - ClothingBackpackMime: 2 - ClothingBackpackSatchelMime: 2 - ClothingBackpackDuffelMime: 2 - ClothingHeadHatMimesoft: 2 - ClothingMaskMime: 2 - ClothingUniformJumpsuitMime: 2 - ClothingUniformJumpskirtMime: 2 - ClothingBeltSuspenders: 2 - RubberStampMime: 1 - contrabandInventory: # Frontier - Hidden inventory - ClothingHeadHatMimesoftFlipped: 1 - BarberScissors: 1 ClothingNeckBellCollar: 2 ClothingOuterUnathiRobe: 1 emaggedInventory: diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 7f9088a3d0..0bc47d74eb 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -1495,7 +1495,7 @@ discountDownTo: Telecrystal: 7 cost: - Telecrystal: 12 + Telecrystal: 1 categories: - UplinkWearables @@ -1850,4 +1850,4 @@ cost: Telecrystal: 1 categories: - - UplinkWearables + - UplinkWearables \ No newline at end of file diff --git a/Resources/Prototypes/CharacterItemGroups/Generic/outerwearGroup.yml b/Resources/Prototypes/CharacterItemGroups/Generic/outerwearGroup.yml index 033a52c6bd..50eb4dc8be 100644 --- a/Resources/Prototypes/CharacterItemGroups/Generic/outerwearGroup.yml +++ b/Resources/Prototypes/CharacterItemGroups/Generic/outerwearGroup.yml @@ -69,31 +69,3 @@ id: LoadoutOuterCoatInspector - type: loadout id: LoadoutOuterCoatOvercoat - - type: loadout - id: LoadoutOuterBomberAerostatic - - type: loadout - id: LoadoutOuterBomberPunkRed - - type: loadout - id: LoadingOuterCoatJacketLeather - - type: loadout - id: LoadoutOuterJacketBiker - - type: loadout - id: LoadoutOuterJacketJamrock - - type: loadout - id: LoadoutOuterJacketLettermanBlue - - type: loadout - id: LoadoutOuterJacketLettermanBrown - - type: loadout - id: LoadoutOuterJacketLettermanMagenta - - type: loadout - id: LoadoutOuterJacketLettermanRed - - type: loadout - id: LoadoutOuterCoatAcidRaincoat - - type: loadout - id: LoadoutOuterCoatAcidRaincoatBlue - - type: loadout - id: LoadoutOuterCoatAcidRaincoatGreen - - type: loadout - id: LoadoutOuterCoatAcidRaincoatMagenta - - type: loadout - id: LoadoutOuterCoatAcidRaincoatYellow diff --git a/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml b/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml index 842c285909..57df945ec9 100644 --- a/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml +++ b/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml @@ -107,8 +107,6 @@ items: - type: loadout id: LoadoutCommandCapMaskGas - - type: loadout - id: LoadoutCommandCapMaskGasCombat - type: characterItemGroup id: LoadoutCaptainOuter @@ -118,8 +116,6 @@ id: LoadoutCommandCapOuterWinter - type: loadout id: LoadoutCaptainOuterCarapace - - type: loadout - id: LoadoutCaptainOuterTrench - type: characterItemGroup id: LoadoutCaptainShoes diff --git a/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml b/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml index 77f6b3f26e..6e9bd02b4f 100644 --- a/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml +++ b/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml @@ -46,8 +46,6 @@ items: - type: loadout id: LoadoutChiefMedicalOfficerNTPDA - - type: loadout - id: LoadoutClothingHeadMirror - type: characterItemGroup id: LoadoutChiefMedicalOfficerNeck @@ -93,7 +91,3 @@ id: LoadoutChiefMedicalOfficerJumpsuit - type: loadout id: LoadoutChiefMedicalOfficerJumpskirt - - type: loadout - id: LoadoutChiefMedicalOfficerTurtleskirt - - type: loadout - id: LoadoutChiefMedicalOfficerTurtlesuit diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml index f11cb930f0..1e8a64b0df 100644 --- a/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml +++ b/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml @@ -11,7 +11,6 @@ - type: Construction graph: PrescriptionMedHud node: prescmedhud - - type: VisionCorrection - type: ShowHealthBars damageContainers: - Biological @@ -32,7 +31,6 @@ sprite: DeltaV/Clothing/Eyes/Hud/prescsechud.rsi - type: Clothing sprite: DeltaV/Clothing/Eyes/Hud/prescsechud.rsi - - type: VisionCorrection - type: Construction graph: PrescriptionSecHud node: prescsechud diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/lamia.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/lamia.yml index 9d7a85f97d..38601f21b5 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/lamia.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/lamia.yml @@ -106,19 +106,14 @@ - map: [ "belt2" ] - map: [ "neck" ] - map: [ "back" ] - - map: [ "enum.HumanoidVisualLayers.Face" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] + state: bald + sprite: Mobs/Customization/human_hair.rsi - map: [ "mask" ] - map: [ "head" ] - map: [ "pocket1" ] - map: [ "pocket2" ] - - map: [ "clownedon" ] # Dynamically generated - sprite: "Effects/creampie.rsi" - state: "creampie_human" - visible: false + - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - type: Damageable damageContainer: Biological damageModifierSet: Scale #TODO: make a new damage modifier set @@ -221,11 +216,6 @@ types: Bloodloss: -1 - type: PortalExempt - - type: FootPrints - leftBarePrint: "dragging-1" - rightBarePrint: "dragging-1" - shoesPrint: "dragging-1" - suitPrint: "dragging-1" - type: entity save: false @@ -283,15 +273,14 @@ - map: [ "belt" ] - map: [ "neck" ] - map: [ "back" ] - - map: [ "enum.HumanoidVisualLayers.Face" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] + state: bald + sprite: Mobs/Customization/human_hair.rsi - map: [ "mask" ] - map: [ "head" ] - map: [ "pocket1" ] - map: [ "pocket2" ] + - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - map: [ "enum.HumanoidVisualLayers.Tail" ] - type: Inventory templateId: lamia diff --git a/Resources/Prototypes/DeltaV/Species/lamia.yml b/Resources/Prototypes/DeltaV/Species/lamia.yml index 8e149b9dbe..bdd015ade0 100644 --- a/Resources/Prototypes/DeltaV/Species/lamia.yml +++ b/Resources/Prototypes/DeltaV/Species/lamia.yml @@ -10,6 +10,8 @@ maleFirstNames: names_cyno_male femaleFirstNames: names_cyno_female lastNames: names_cyno_last + sexes: + - Female - type: markingPoints id: MobLamiaMarkingLimits @@ -17,49 +19,17 @@ Hair: points: 1 required: false - FacialHair: - points: 1 - required: false - Snout: - points: 1 - required: false - HeadTop: - points: 2 - required: false - HeadSide: - points: 3 - required: false Tail: points: 1 required: true defaultMarkings: [ LamiaBottom ] - Chest: - points: 1 - required: false - RightArm: - points: 2 - required: false - RightHand: - points: 3 - required: false - LeftArm: - points: 2 - required: false - LeftHand: - points: 3 - required: false - type: speciesBaseSprites id: MobLamiaSprites sprites: Head: MobHumanHead - Face: MobHumanoidAnyMarking - HeadTop: MobHumanoidAnyMarking - HeadSide: MobHumanoidAnyMarking Hair: MobHumanoidAnyMarking - FacialHair: MobHumanoidAnyMarking - Snout: MobHumanoidAnyMarking Chest: MobHumanTorso Eyes: MobHumanoidEyes LArm: MobHumanLArm diff --git a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml index 0ad6519c76..4c276a3346 100644 --- a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml @@ -37,6 +37,9 @@ - type: markingPoints id: MobVulpkaninMarkingLimits points: + Face: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Entities/Clothing/Head/misc.yml b/Resources/Prototypes/Entities/Clothing/Head/misc.yml index 0138d8aee4..bd7899d75f 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/misc.yml @@ -86,17 +86,6 @@ - type: Clothing sprite: Clothing/Head/Misc/pwig.rsi -- type: entity - parent: ClothingHeadBase - id: ClothingHeadMirror - name: head mirror - description: I doubt even the CMO knows how to use this thing. - components: - - type: Sprite - sprite: Clothing/Head/Misc/head_mirror.rsi - - type: Clothing - sprite: Clothing/Head/Misc/head_mirror.rsi - - type: entity parent: ClothingHeadBase id: ClothingHeadHatRichard diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index c5b34a7a67..383e32e99d 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -88,17 +88,6 @@ - type: BreathMask - type: IngestionBlocker -- type: entity - parent: ClothingMaskGasExplorer - id: ClothingMaskGasCaptainCombat - name: captain's combat gas mask - description: A military-grade gas mask that can be connected to an air supply, painted and outfitted with an emblem befitting its wearer. Issued only to the station's finest. - components: - - type: Sprite - sprite: Clothing/Mask/gascaptaincombat.rsi - - type: Clothing - sprite: Clothing/Mask/gascaptaincombat.rsi - - type: entity parent: ClothingMaskGasAtmos id: ClothingMaskGasCentcom diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index 07fe385478..dc5454d597 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -51,17 +51,6 @@ - type: Clothing sprite: Clothing/OuterClothing/Coats/gentlecoat.rsi -- type: entity - parent: [ClothingOuterArmorCaptainCarapace, ClothingOuterStorageBase] - id: ClothingOuterCoatCapTrench - name: captain's armored trenchcoat - description: A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence, outfitted with emblems and decor befitting its wearer. Issued only to the station's finest. - components: - - type: Sprite - sprite: Clothing/OuterClothing/Coats/cap_trenchcoat.rsi - - type: Clothing - sprite: Clothing/OuterClothing/Coats/cap_trenchcoat.rsi - - type: entity abstract: true parent: AllowSuitStorageClothing diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml index 01576a1f93..069555c836 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml @@ -21,7 +21,7 @@ - type: Clothing sprite: Clothing/Shoes/Boots/jackboots.rsi - type: ClothingSlowOnDamageModifier - modifier: 0.8 + modifier: 0.5 - type: entity parent: ClothingShoesMilitaryBase @@ -67,8 +67,6 @@ sprite: Clothing/Shoes/Boots/combatboots.rsi - type: Clothing sprite: Clothing/Shoes/Boots/combatboots.rsi - - type: ClothingSlowOnDamageModifier - modifier: 0.8 - type: entity parent: ClothingShoesMilitaryBase @@ -95,8 +93,6 @@ sprite: Clothing/Shoes/Boots/mercboots.rsi - type: Clothing sprite: Clothing/Shoes/Boots/mercboots.rsi - - type: ClothingSlowOnDamageModifier - modifier: 0.6 - type: entity parent: ClothingShoesBaseButcherable diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml index e9ea123928..3ec17e2bbe 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml @@ -137,7 +137,7 @@ - type: Clothing sprite: Clothing/Shoes/Specific/swat.rsi - type: ClothingSlowOnDamageModifier - modifier: 0.7 + modifier: 0.5 - type: entity parent: ClothingShoesBaseButcherable diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index 7f6d59c9a4..18266dc498 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -132,17 +132,6 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpskirt/cmo.rsi -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtCMOTurtle - name: chief medical officer's turtleneck jumpskirt - description: It's a turtleneck worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi - - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtDetective diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 3ada362ce0..d2339764f8 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -350,17 +350,6 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/cmo.rsi -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitCMOTurtle - name: chief medical officer's turtleneck jumpsuit - description: It's a turtleneck worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi - - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitDetective diff --git a/Resources/Prototypes/Entities/Effects/puddle.yml b/Resources/Prototypes/Entities/Effects/puddle.yml index 988b06de22..7f6125e73d 100644 --- a/Resources/Prototypes/Entities/Effects/puddle.yml +++ b/Resources/Prototypes/Entities/Effects/puddle.yml @@ -205,13 +205,3 @@ - type: Puddle solution: step - type: Appearance - - type: Drink - delay: 3 - transferAmount: 1 - solution: step - examinable: false - - type: ExaminableSolution - solution: step - - type: DrawableSolution - solution: step - - type: BadDrink diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/earrings.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/earrings.yml index 77b0ba3d0e..cf98e96cff 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/earrings.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/earrings.yml @@ -2,7 +2,7 @@ id: EarringsStudLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -16,7 +16,7 @@ id: EarringsStudRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -30,7 +30,7 @@ id: EarringsHeavyLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -44,7 +44,7 @@ id: EarringsHeavyRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -58,7 +58,7 @@ id: EarringsDropBasicLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -72,7 +72,7 @@ id: EarringsDropBasicRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -86,7 +86,7 @@ id: EarringsDropColoredLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -102,7 +102,7 @@ id: EarringsDropColoredRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -118,7 +118,7 @@ id: EarringsDropLongLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -134,7 +134,7 @@ id: EarringsDropLongRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -150,7 +150,7 @@ id: EarringsCrescentLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -164,7 +164,7 @@ id: EarringsCrescentRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -178,7 +178,7 @@ id: EarringsBangleLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -192,7 +192,7 @@ id: EarringsBangleRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -206,7 +206,7 @@ id: EarringsHoopBasicLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -220,7 +220,7 @@ id: EarringsHoopBasicRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -234,7 +234,7 @@ id: EarringsHoopMiniLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -248,7 +248,7 @@ id: EarringsHoopMiniRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -262,7 +262,7 @@ id: EarringsCrossBasicLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -276,7 +276,7 @@ id: EarringsCrossBasicRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -290,7 +290,7 @@ id: EarringsCrossSaintPeterLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -304,7 +304,7 @@ id: EarringsCrossSaintPeterRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -318,7 +318,7 @@ id: EarringsGemstoneBasicLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -334,7 +334,7 @@ id: EarringsGemstoneBasicRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -350,7 +350,7 @@ id: EarringsGemstoneLongLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -366,7 +366,7 @@ id: EarringsGemstoneLongRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -382,7 +382,7 @@ id: EarringsGemstoneDoubleLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -400,7 +400,7 @@ id: EarringsGemstoneDoubleRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -418,7 +418,7 @@ id: EarringsDangleBasicLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -434,7 +434,7 @@ id: EarringsDangleBasicRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -450,7 +450,7 @@ id: EarringsDangleLongLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -466,7 +466,7 @@ id: EarringsDangleLongRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -482,7 +482,7 @@ id: EarringsEightLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -496,7 +496,7 @@ id: EarringsEightRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -510,7 +510,7 @@ id: EarringsCrystalBasicLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -526,7 +526,7 @@ id: EarringsCrystalBasicRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -542,7 +542,7 @@ id: EarringsCrystalLongLeft bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: @@ -558,7 +558,7 @@ id: EarringsCrystalLongRight bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Arachnid, Reptilian, Diona, Oni, Felinid, Vulpkanin, Harpy, Gingerbread, Arachne] coloring: default: type: diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/face.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/face.yml index eb1723eb23..2276c0a237 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/face.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/face.yml @@ -2,7 +2,7 @@ id: FaceBindi bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -16,7 +16,7 @@ id: FaceFullblush bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Vulpkanin, Arachne] coloring: default: type: @@ -30,7 +30,7 @@ id: FaceCheekspotRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -44,7 +44,7 @@ id: FaceCheekspotLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -58,7 +58,7 @@ id: FaceChesireRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -72,7 +72,7 @@ id: FaceChesireLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -86,7 +86,7 @@ id: FaceCrowRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -100,7 +100,7 @@ id: FaceCrowLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -114,7 +114,7 @@ id: FaceEarRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -128,7 +128,7 @@ id: FaceEarLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -142,7 +142,7 @@ id: FaceEyebrowRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -157,7 +157,7 @@ id: FaceEyebrowLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -172,7 +172,7 @@ id: FaceEyebrows bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -186,7 +186,7 @@ id: FaceEyecornerRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -200,7 +200,7 @@ id: FaceEyecornerLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -214,7 +214,7 @@ id: FaceEyelashRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -228,7 +228,7 @@ id: FaceEyelashLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -242,7 +242,7 @@ id: FaceEyestripe bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -256,7 +256,7 @@ id: FaceLipcornerRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -270,7 +270,7 @@ id: FaceLipcornerLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -284,7 +284,7 @@ id: FaceGlabella bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -298,7 +298,7 @@ id: FaceLowercheekRight bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -312,7 +312,7 @@ id: FaceLowercheekLeft bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -326,7 +326,7 @@ id: FaceNosetape bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -340,7 +340,7 @@ id: FaceNosetip bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -355,7 +355,7 @@ id: FaceNosestripe bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] coloring: default: type: @@ -369,7 +369,7 @@ id: FaceUnibrow bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] coloring: default: type: @@ -383,7 +383,7 @@ id: FaceNeckSlim bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] followSkinColor: true sprites: - sprite: Mobs/Customization/face.rsi @@ -393,7 +393,7 @@ id: FaceNeckWide bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] followSkinColor: true sprites: - sprite: Mobs/Customization/face.rsi @@ -403,7 +403,7 @@ id: FaceNeckSlimThick bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] followSkinColor: true sprites: - sprite: Mobs/Customization/face.rsi @@ -413,7 +413,7 @@ id: FaceNeckWideThick bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne, Lamia] + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Reptilian, Vulpkanin, Arachne] followSkinColor: true sprites: - sprite: Mobs/Customization/face.rsi diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml index c304e9c531..6e8f7dc819 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] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -16,7 +16,7 @@ id: GauzeLefteyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -30,7 +30,7 @@ id: GauzeRighteyePatch bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -44,7 +44,7 @@ id: GauzeRighteyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -58,7 +58,7 @@ id: GauzeBlindfold bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Harpy, Vulpkanin + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Harpy, Vulpkanin coloring: default: type: @@ -72,7 +72,7 @@ id: GauzeShoulder bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -86,7 +86,7 @@ id: GauzeStomach bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -100,7 +100,7 @@ id: GauzeUpperArmRight bodyPart: RArm markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin 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] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -198,7 +198,7 @@ id: GauzeBoxerWrapRight bodyPart: RHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -212,7 +212,7 @@ id: GauzeBoxerWrapLeft bodyPart: LHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml index 1319e4f539..a6ea6a6a42 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml @@ -4,7 +4,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/human_noses.rsi state: schnozz @@ -15,7 +15,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/human_noses.rsi state: nubby @@ -26,7 +26,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/human_noses.rsi state: droop @@ -37,7 +37,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/human_noses.rsi state: blob @@ -48,7 +48,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/human_noses.rsi state: uppie diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml index ec954a5655..9ec2022b05 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml @@ -2,7 +2,7 @@ id: MakeupLips bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne, Lamia] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy, Arachne] # Delta V - Felinid, Oni, Harpy coloring: default: type: @@ -16,7 +16,7 @@ id: MakeupBlush bodyPart: Face markingCategory: Face - speciesRestriction: [Dwarf, Human, Reptilian, SlimePerson, Felinid, Oni, Vulpkanin, Harpy, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin, Harpy + speciesRestriction: [Dwarf, Human, Reptilian, SlimePerson, Felinid, Oni, Vulpkanin, Harpy, Arachne] # Delta V - Felinid, Oni, Vulpkanin, Harpy coloring: default: type: @@ -30,7 +30,7 @@ id: MakeupNailPolishRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -44,7 +44,7 @@ id: MakeupNailPolishLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia] # Delta V - Felinid, Oni, Vulpkanin + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne] # Delta V - Felinid, Oni, Vulpkanin coloring: default: type: @@ -73,7 +73,7 @@ - type: marking id: MakeupMothBlush bodyPart: Face - markingCategory: Face + markingCategory: Overlay speciesRestriction: [Moth] coloring: default: diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/pointy_ears.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/pointy_ears.yml index 53a0beac3f..237275e419 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/pointy_ears.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/pointy_ears.yml @@ -3,7 +3,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_standard @@ -13,7 +13,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_wide @@ -23,7 +23,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_small @@ -33,7 +33,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_upwards @@ -43,7 +43,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_tall @@ -53,7 +53,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_slanted @@ -63,7 +63,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_thin @@ -73,7 +73,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_large @@ -83,7 +83,7 @@ bodyPart: HeadSide markingCategory: HeadSide forcedColoring: true - speciesRestriction: [Oni, Harpy, Arachne, Lamia] + speciesRestriction: [Oni, Harpy, Arachne] sprites: - sprite: Mobs/Customization/pointy_ears.rsi state: pointy_ears_none diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml index 0ba3ecc695..7be52c11f0 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml @@ -67,7 +67,7 @@ id: LizardFrillsNeckfull bodyPart: HeadSide markingCategory: HeadSide - speciesRestriction: [Reptilian, Lamia] + speciesRestriction: [Reptilian] sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: frills_neckfull @@ -76,7 +76,7 @@ id: LizardHornsAngler bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_angler @@ -85,7 +85,7 @@ id: LizardHornsCurled bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_curled @@ -94,7 +94,7 @@ id: LizardHornsRam bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_ram @@ -103,7 +103,7 @@ id: LizardHornsShort bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_short @@ -112,7 +112,7 @@ id: LizardHornsSimple bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_simple @@ -121,7 +121,7 @@ id: LizardHornsDouble bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_double @@ -208,7 +208,7 @@ id: LizardChestTiger bodyPart: Chest markingCategory: Chest - speciesRestriction: [Reptilian, Shadowkin, Lamia] + speciesRestriction: [Reptilian, Shadowkin] sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: body_tiger @@ -226,7 +226,7 @@ id: LizardLArmTiger bodyPart: LArm markingCategory: LeftArm - speciesRestriction: [Reptilian, Lamia] + speciesRestriction: [Reptilian] sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: l_arm_tiger @@ -244,7 +244,7 @@ id: LizardRArmTiger bodyPart: RArm markingCategory: RightArm - speciesRestriction: [Reptilian, Lamia] + speciesRestriction: [Reptilian] sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: r_arm_tiger @@ -262,7 +262,7 @@ id: LizardHornsArgali bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_argali @@ -271,7 +271,7 @@ id: LizardHornsAyrshire bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_ayrshire @@ -280,7 +280,7 @@ id: LizardHornsMyrsore bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_myrsore @@ -289,7 +289,7 @@ id: LizardHornsBighorn bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Reptilian, Human, Lamia, Kobold] # Shitmed Change + speciesRestriction: [Reptilian, Human, Kobold] # Shitmed Change sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: horns_bighorn @@ -325,7 +325,7 @@ id: LizardChestBackspikes bodyPart: Chest markingCategory: Chest - speciesRestriction: [Reptilian, Lamia] + speciesRestriction: [Reptilian] sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: body_backspikes diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml index 150c6278d0..c9050975aa 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml @@ -2,7 +2,7 @@ id: ScarEyeRight bodyPart: Head markingCategory: Head - speciesRestriction: [Human, Dwarf, Felinid, Harpy, Oni, Arachne, Lamia] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Harpy, Oni, Arachne] # Delta V - Felinid, Oni, Harpy followSkinColor: true sprites: - sprite: Mobs/Customization/scars.rsi @@ -12,7 +12,7 @@ id: ScarEyeLeft bodyPart: Head markingCategory: Head - speciesRestriction: [Human, Dwarf, Felinid, Harpy, Oni, Arachne, Lamia] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, Dwarf, Felinid, Harpy, Oni, Arachne] # Delta V - Felinid, Oni, Harpy followSkinColor: true sprites: - sprite: Mobs/Customization/scars.rsi @@ -22,7 +22,7 @@ id: ScarTopSurgeryShort bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human, Dwarf, Felinid, Oni, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Arachne] sexRestriction: [Male] followSkinColor: true sprites: @@ -33,7 +33,7 @@ id: ScarTopSurgeryLong bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human, Dwarf, Felinid, Oni, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Arachne] sexRestriction: [Male] followSkinColor: true sprites: @@ -44,7 +44,7 @@ id: ScarChest bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human, Dwarf, Felinid, Oni, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, Felinid, Oni, Arachne] followSkinColor: true sprites: - sprite: Mobs/Customization/scars.rsi diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml index 5aaf5d4870..8b65988566 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml @@ -2,7 +2,7 @@ id: TattooHiveChest bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne, Lamia] # Delta V - Felinid, Oni + speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne] # Delta V - Felinid, Oni coloring: default: type: @@ -16,7 +16,7 @@ id: TattooNightlingChest bodyPart: Chest markingCategory: Chest - speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne, Lamia] # Delta V - Felinid, Oni + speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne] # Delta V - Felinid, Oni coloring: default: type: @@ -58,7 +58,7 @@ id: TattooCampbellLeftArm bodyPart: LArm markingCategory: LeftArm - speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne, Lamia] # Delta V - Felinid, Oni + speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne] # Delta V - Felinid, Oni coloring: default: type: @@ -72,7 +72,7 @@ id: TattooCampbellRightArm bodyPart: RArm markingCategory: RightArm - speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne, Lamia] # Delta V - Felinid, Oni + speciesRestriction: [Human, Dwarf, Felinid, Oni, Shadowkin, Arachne] # Delta V - Felinid, Oni coloring: default: type: @@ -114,7 +114,7 @@ id: TattooEyeRight bodyPart: Eyes markingCategory: Head - speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Felinid, Oni, Harpy, Lamia] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy coloring: default: type: @@ -128,7 +128,7 @@ id: TattooEyeLeft bodyPart: Eyes markingCategory: Head - speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Felinid, Oni, Harpy, Lamia] # Delta V - Felinid, Oni, Harpy + speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy coloring: default: type: diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/wrist.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/wrist.yml index 01bd1cf85a..0e2f9be912 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/wrist.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/wrist.yml @@ -2,7 +2,7 @@ id: WristBraceletRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -17,7 +17,7 @@ id: WristBraceletLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -31,7 +31,7 @@ id: WristBraceletArmRight bodyPart: RArm markingCategory: RightArm - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -45,7 +45,7 @@ id: WristBraceletArmLeft bodyPart: LArm markingCategory: LeftArm - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -59,7 +59,7 @@ id: WristWatchRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -73,7 +73,7 @@ id: WristWatchLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -87,7 +87,7 @@ id: WristWatchSilverRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -101,7 +101,7 @@ id: WristWatchSilverLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -115,7 +115,7 @@ id: WristWatchGoldRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -129,7 +129,7 @@ id: WristWatchGoldLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -143,7 +143,7 @@ id: WristWatchHoloRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -157,7 +157,7 @@ id: WristWatchHoloLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -171,7 +171,7 @@ id: WristWatchLeatherRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -185,7 +185,7 @@ id: WristWatchLeatherLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -199,7 +199,7 @@ id: WristWatchColorableRight bodyPart: RHand markingCategory: RightHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Diona, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: @@ -215,7 +215,7 @@ id: WristWatchColorableLeft bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne, Lamia] + speciesRestriction: [Human, Dwarf, SlimePerson, Arachnid, Reptilian, Felinid, Oni, Vulpkanin, Gingerbread, Arachne] coloring: default: type: diff --git a/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml index b491d9b918..2ae4bc6d62 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml @@ -42,7 +42,7 @@ id: CyberLimbsMarkingBishopLArm bodyPart: LArm markingCategory: LeftArm - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi state: l_arm-primary @@ -55,7 +55,7 @@ id: CyberLimbsMarkingBishopLHand bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi state: l_hand @@ -87,7 +87,7 @@ id: CyberLimbsMarkingBishopRArm bodyPart: RArm markingCategory: RightArm - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi state: r_arm-primary @@ -101,7 +101,7 @@ id: CyberLimbsMarkingBishopRHand bodyPart: RHand markingCategory: RightHand - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi state: r_hand diff --git a/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml index e907975116..d6e2194bf3 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml @@ -37,7 +37,7 @@ id: CyberLimbsMarkingHesphiastosLArm bodyPart: LArm markingCategory: LeftArm - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi state: l_arm-1 @@ -48,7 +48,7 @@ id: CyberLimbsMarkingHesphiastosLHand bodyPart: LHand markingCategory: LeftHand - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi state: l_hand-1 @@ -84,7 +84,7 @@ id: CyberLimbsMarkingHesphiastosRArm bodyPart: RArm markingCategory: RightArm - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi state: r_arm-1 @@ -96,7 +96,7 @@ id: CyberLimbsMarkingHesphiastosRHand bodyPart: RHand markingCategory: RightHand - speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne, Lamia] + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian, Arachne] sprites: - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi state: r_hand-1 diff --git a/Resources/Prototypes/Entities/Mobs/Player/ipc.yml b/Resources/Prototypes/Entities/Mobs/Player/ipc.yml index 1f5fd9f20e..54c157cc3e 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/ipc.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/ipc.yml @@ -58,7 +58,7 @@ - !type:GibBehavior { } - type: SlowOnDamage speedModifierThresholds: - 60: 0.75 + 60: 0.7 90: 0.5 120: 0.3 - type: SiliconDownOnDead diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index a9d96ecde5..f740b89f42 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -90,8 +90,8 @@ species: Human - type: SlowOnDamage speedModifierThresholds: - 60: 0.75 - 80: 0.55 + 60: 0.8 # DV - Was 0.7 + 80: 0.6 # DV - Was 0.5 - type: Fixtures fixtures: # TODO: This needs a second fixture just for mob collisions. fix1: diff --git a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml index 1eff8f9fc9..3d3675dd33 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml @@ -45,7 +45,7 @@ - type: DamageOnLand damage: types: - Blunt: 2 + Blunt: 5 - type: entity name: steel tile diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index 468acc3851..cb556c7d4d 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -37,8 +37,6 @@ size: Large sprite: Objects/Specific/Janitorial/mop.rsi - type: Absorbent - footprintCleaningRange: 0.45 - maxCleanedFootprints: 25 - type: SolutionContainerManager solutions: absorbed: @@ -96,8 +94,6 @@ sprite: Objects/Specific/Janitorial/advmop.rsi - type: Absorbent pickupAmount: 100 - footprintCleaningRange: 0.75 - maxCleanedFootprints: 25 - type: UseDelay delay: 1.0 - type: SolutionRegeneration diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml index d79e637eef..da67b5a592 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml @@ -116,7 +116,6 @@ - type: Tag tags: - Trash - - Ash # Frontier - type: SolutionContainerManager solutions: food: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml index 6321e5a000..dcfd1537c7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml @@ -55,7 +55,6 @@ damage: types: Piercing: 10 - staminaCost: 6 - type: Item size: Ginormous - type: Clothing @@ -113,6 +112,10 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] + - type: DamageOnLand + damage: + types: + Blunt: 5 - type: UseDelay - type: Appearance - type: SolutionContainerVisuals diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml index 8c3eeab6fa..d65d652ff4 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml @@ -47,7 +47,7 @@ sound: collection: MetalBreak - type: StaticPrice - price: 25 + price: 10 - type: RequireProjectileTarget #Starts unanchored, cannot be rotated while anchored diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index adf6bd94aa..75b593fbcc 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -1106,8 +1106,6 @@ - ClothingHeadHatBeretCmo - ClothingUniformJumpsuitCMO - ClothingUniformJumpskirtCMO - - ClothingUniformJumpsuitCMOTurtle - - ClothingUniformJumpskirtCMOTurtle - ClothingUniformJumpsuitDetective - ClothingUniformJumpskirtDetective - ClothingUniformJumpsuitEngineering diff --git a/Resources/Prototypes/Entities/Structures/base_structure.yml b/Resources/Prototypes/Entities/Structures/base_structure.yml index d143151deb..207881894b 100644 --- a/Resources/Prototypes/Entities/Structures/base_structure.yml +++ b/Resources/Prototypes/Entities/Structures/base_structure.yml @@ -28,10 +28,8 @@ - type: DamageOtherOnHit damage: types: - Blunt: 9 + Blunt: 8 staminaCost: 50 - soundHit: - collection: MetalThud - type: entity # This means that it's not anchored on spawn. diff --git a/Resources/Prototypes/Loadouts/Generic/outerClothing.yml b/Resources/Prototypes/Loadouts/Generic/outerClothing.yml index 029c90c8e3..57f8b35132 100644 --- a/Resources/Prototypes/Loadouts/Generic/outerClothing.yml +++ b/Resources/Prototypes/Loadouts/Generic/outerClothing.yml @@ -351,153 +351,3 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutOuter - -- type: loadout - id: LoadoutOuterBomberAerostatic - category: Outer - cost: 0 - items: - - ClothingOuterCoatBomberAerostatic - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterBomberPunkRed - category: Outer - cost: 0 - items: - - ClothingOuterCoatBomberPunkRed - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterJacketLeather - category: Outer - cost: 0 - items: - - ClothingOuterCoatJacketLeather - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterJacketBiker - category: Outer - cost: 0 - items: - - ClothingOuterCoatJacketBiker - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterJacketJamrock - category: Outer - cost: 0 - items: - - ClothingOuterCoatJacketJamrock - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterJacketLettermanBlue - category: Outer - cost: 0 - items: - - ClothingOuterCoatJacketLettermanBlue - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterJacketLettermanBrown - category: Outer - cost: 0 - items: - - ClothingOuterCoatJacketLettermanBrown - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterJacketLettermanMagenta - category: Outer - cost: 0 - items: - - ClothingOuterCoatJacketLettermanMagenta - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterJacketLettermanRed - category: Outer - cost: 0 - items: - - ClothingOuterCoatJacketLettermanRed - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterBomberPinkSleeves - category: Outer - cost: 0 - items: - - ClothingOuterCoatBomberPinkSleeves - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterCoatAcidRaincoat - category: Outer - cost: 0 - items: - - ClothingOuterCoatAcidRaincoat - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterCoatAcidRaincoatBlue - category: Outer - cost: 0 - items: - - ClothingOuterCoatAcidRaincoatBlue - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterCoatAcidRaincoatGreen - category: Outer - cost: 0 - items: - - ClothingOuterCoatAcidRaincoatGreen - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterCoatAcidRaincoatMagenta - category: Outer - cost: 0 - items: - - ClothingOuterCoatAcidRaincoatMagenta - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter - -- type: loadout - id: LoadoutOuterCoatAcidRaincoatYellow - category: Outer - cost: 0 - items: - - ClothingOuterCoatAcidRaincoatYellow - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutOuter diff --git a/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml b/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml index 02ed0324e3..b64ad384ef 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml @@ -355,19 +355,6 @@ items: - ClothingMaskGasCaptain -- type: loadout - id: LoadoutCommandCapMaskGasCombat - category: JobsCommandCaptain - cost: 0 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCaptainMask - - !type:CharacterJobRequirement - jobs: - - Captain - items: - - ClothingMaskGasCaptainCombat - # Outer - type: loadout id: LoadoutCommandCapOuterWinter @@ -395,21 +382,6 @@ items: - ClothingOuterArmorCaptainCarapace -- type: loadout - id: LoadoutCaptainOuterTrench - category: JobsCommandCaptain - cost: 0 - exclusive: true - canBeHeirloom: true - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutCaptainOuter - - !type:CharacterJobRequirement - jobs: - - Captain - items: - - ClothingOuterCoatCapTrench - # Shoes - type: loadout id: LoadoutCaptainShoesLaceup diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml index 3910e7b9bb..b5e82749ce 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml @@ -53,19 +53,6 @@ items: - ClothingHeadHatBeretCmo -- type: loadout - id: LoadoutClothingHeadMirror - category: JobsMedicalChiefMedicalOfficer - cost: 0 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutChiefMedicalOfficerHead - - !type:CharacterJobRequirement - jobs: - - ChiefMedicalOfficer - items: - - ClothingHeadMirror - # Id - type: loadout id: LoadoutChiefMedicalOfficerNTPDA @@ -225,29 +212,3 @@ - ChiefMedicalOfficer items: - ClothingUniformJumpskirtCMO - -- type: loadout - id: LoadoutChiefMedicalOfficerTurtleskirt - category: JobsMedicalChiefMedicalOfficer - cost: 0 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutChiefMedicalOfficerUniforms - - !type:CharacterJobRequirement - jobs: - - ChiefMedicalOfficer - items: - - ClothingUniformJumpskirtCMOTurtle - -- type: loadout - id: LoadoutChiefMedicalOfficerTurtlesuit - category: JobsMedicalChiefMedicalOfficer - cost: 0 - requirements: - - !type:CharacterItemGroupRequirement - group: LoadoutChiefMedicalOfficerUniforms - - !type:CharacterJobRequirement - jobs: - - ChiefMedicalOfficer - items: - - ClothingUniformJumpsuitCMOTurtle diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml b/Resources/Prototypes/Nyanotrasen/Species/Oni.yml index 79d7e2b86f..160c1f3bec 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml +++ b/Resources/Prototypes/Nyanotrasen/Species/Oni.yml @@ -21,6 +21,9 @@ - type: markingPoints id: MobOniMarkingLimits points: + Face: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Species/felinid.yml index ad92ea8046..31c224b37a 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Species/felinid.yml @@ -17,6 +17,9 @@ - type: markingPoints id: MobFelinidMarkingLimits points: + Face: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Recipes/Lathes/clothing.yml index 98cb1a3d51..729f20e979 100644 --- a/Resources/Prototypes/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/clothing.yml @@ -217,22 +217,6 @@ Cloth: 300 Durathread: 100 -- type: latheRecipe - id: ClothingUniformJumpsuitCMOTurtle - result: ClothingUniformJumpsuitCMOTurtle - completetime: 4 - materials: - Cloth: 300 - Durathread: 100 - -- type: latheRecipe - id: ClothingUniformJumpskirtCMOTurtle - result: ClothingUniformJumpskirtCMOTurtle - completetime: 4 - materials: - Cloth: 300 - Durathread: 100 - - type: latheRecipe id: ClothingUniformJumpsuitDetective result: ClothingUniformJumpsuitDetective diff --git a/Resources/Prototypes/Species/arachne.yml b/Resources/Prototypes/Species/arachne.yml index fff75454fc..72e73fcf7f 100644 --- a/Resources/Prototypes/Species/arachne.yml +++ b/Resources/Prototypes/Species/arachne.yml @@ -15,6 +15,9 @@ - type: markingPoints id: MobArachneMarkingLimits points: + Face: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Species/harpy.yml b/Resources/Prototypes/Species/harpy.yml index 1b61ebdd76..a131b23a7a 100644 --- a/Resources/Prototypes/Species/harpy.yml +++ b/Resources/Prototypes/Species/harpy.yml @@ -40,6 +40,9 @@ - type: markingPoints id: MobHarpyMarkingLimits points: + Face: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Species/human.yml b/Resources/Prototypes/Species/human.yml index cc304a6eeb..6979bbcf91 100644 --- a/Resources/Prototypes/Species/human.yml +++ b/Resources/Prototypes/Species/human.yml @@ -39,6 +39,9 @@ - type: markingPoints id: MobHumanMarkingLimits points: + Face: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 5bba1b41d4..511f22394e 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -16,7 +16,6 @@ id: MobMothSprites sprites: Head: MobMothHead - Face: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobMothTorso HeadTop: MobHumanoidAnyMarking diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index c4ed49401b..99ea7f297a 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -42,6 +42,9 @@ id: MobReptilianMarkingLimits onlyWhitelisted: true points: + Face: + points: 1 + required: false Hair: points: 0 required: false @@ -60,7 +63,7 @@ points: 2 required: false HeadSide: - points: 3 + points: 2 required: false Chest: points: 1 diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index f0f383e75a..ada69c7500 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -31,6 +31,9 @@ - type: markingPoints id: MobSlimeMarkingLimits points: + Face: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Traits/disabilities.yml b/Resources/Prototypes/Traits/disabilities.yml index 04c128eb8a..68877b01d2 100644 --- a/Resources/Prototypes/Traits/disabilities.yml +++ b/Resources/Prototypes/Traits/disabilities.yml @@ -83,7 +83,6 @@ jobs: - Borg - MedicalBorg - - Mime functions: - !type:TraitAddComponent components: @@ -142,30 +141,6 @@ components: - type: Snoring -- type: trait - id: BadKnees - category: Physical - points: 3 - requirements: - - !type:CharacterTraitRequirement - inverted: true - traits: - - ParkourTraining - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Diona - functions: - - !type:TraitAddComponent - components: - - type: ClimbDelayModifier - climbDelayMultiplier: 1.5 - - type: SlippableModifier - paralyzeTimeMultiplier: 1.4 - - type: SpeedModifiedByContactModifier - walkModifierEffectiveness: 1.35 - sprintModifierEffectiveness: 1.35 - - type: trait id: Sluggish category: Physical @@ -184,9 +159,12 @@ - !type:TraitAddComponent components: - type: TraitSpeedModifier - sprintModifier: 0.84 - walkModifier: 0.84 - requiredTriggeredSpeedModifier: 0.84 + sprintModifier: 0.85 + walkModifier: 0.85 + - type: ClimbDelayModifier + climbDelayMultiplier: 1.35 + - type: LayingDownModifier + layingDownCooldownMultiplier: 1.2 - type: trait id: SnailPaced @@ -206,9 +184,12 @@ - !type:TraitAddComponent components: - type: TraitSpeedModifier - sprintModifier: 0.68 - walkModifier: 0.68 - requiredTriggeredSpeedModifier: 0.68 # Still slip against normal slips with the new sprint speed + sprintModifier: 0.7 + walkModifier: 0.7 + - type: ClimbDelayModifier + climbDelayMultiplier: 1.66 + - type: LayingDownModifier + layingDownCooldownMultiplier: 1.6 - type: trait id: BloodDeficiency diff --git a/Resources/Prototypes/Traits/inconveniences.yml b/Resources/Prototypes/Traits/inconveniences.yml index 62e13c2533..57d166d3e3 100644 --- a/Resources/Prototypes/Traits/inconveniences.yml +++ b/Resources/Prototypes/Traits/inconveniences.yml @@ -52,11 +52,6 @@ inverted: true traits: - Foreigner - - Muted - - !type:CharacterJobRequirement - inverted: true - jobs: - - Mime functions: - !type:TraitAddComponent components: @@ -73,11 +68,6 @@ inverted: true traits: - ForeignerLight - - Muted - - !type:CharacterJobRequirement - inverted: true - jobs: - - Mime functions: - !type:TraitAddComponent components: diff --git a/Resources/Prototypes/Traits/languages.yml b/Resources/Prototypes/Traits/languages.yml index 44a487cecd..a8bdeff468 100644 --- a/Resources/Prototypes/Traits/languages.yml +++ b/Resources/Prototypes/Traits/languages.yml @@ -1,7 +1,7 @@ - type: trait id: SignLanguage category: TraitsSpeechLanguages - points: -2 + points: 0 requirements: - !type:CharacterItemGroupRequirement group: TraitsLanguagesBasic @@ -79,7 +79,7 @@ - type: trait id: ValyrianStandard category: TraitsSpeechLanguages - points: -1 + points: 1 requirements: - !type:CharacterItemGroupRequirement group: TraitsLanguagesBasic @@ -93,7 +93,7 @@ - type: trait id: Azaziba category: TraitsSpeechLanguages - points: -1 + points: 1 requirements: - !type:CharacterSpeciesRequirement species: diff --git a/Resources/Prototypes/Traits/physical.yml b/Resources/Prototypes/Traits/physical.yml index 3f3d460f99..f2f071a309 100644 --- a/Resources/Prototypes/Traits/physical.yml +++ b/Resources/Prototypes/Traits/physical.yml @@ -235,52 +235,6 @@ - type: PainTolerance rangeModifier: 0.6 -- type: trait - id: Steadfast - category: Physical - points: -4 - requirements: - - !type:CharacterJobRequirement - inverted: true - jobs: - - Borg - - MedicalBorg - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Felinid - - !type:CharacterTraitRequirement - inverted: true - traits: - - Feeble - functions: - - !type:TraitModifySlowOnDamage - damageThresholdsModifier: 10 - speedModifierMultiplier: 0.68 - -- type: trait - id: Feeble - category: Physical - points: 3 - requirements: - - !type:CharacterJobRequirement - inverted: true - jobs: - - Borg - - MedicalBorg - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Felinid - - !type:CharacterTraitRequirement - inverted: true - traits: - - Steadfast - functions: - - !type:TraitModifySlowOnDamage - damageThresholdsModifier: -15 - speedModifierMultiplier: 1.2 - - type: trait id: MartialArtist category: Physical diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml index 8a035d24f6..25603c7347 100644 --- a/Resources/Prototypes/Traits/skills.yml +++ b/Resources/Prototypes/Traits/skills.yml @@ -135,7 +135,6 @@ traits: - Sluggish - SnailPaced - - BadKnees - !type:CharacterSpeciesRequirement inverted: true species: @@ -144,12 +143,10 @@ - !type:TraitReplaceComponent components: - type: ClimbDelayModifier - climbDelayMultiplier: 0.5 - - type: SlippableModifier - paralyzeTimeMultiplier: 0.7 - - type: SpeedModifiedByContactModifier - walkModifierEffectiveness: 0.5 - sprintModifierEffectiveness: 0.5 + climbDelayMultiplier: 0.35 + - type: LayingDownModifier + layingDownCooldownMultiplier: 0.5 + downedSpeedMultiplierMultiplier: 1.65 - type: trait id: LightStep diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Belt/belts_punk.yml b/Resources/Prototypes/_NF/Entities/Clothing/Belt/belts_punk.yml deleted file mode 100644 index 5dcaa8b8c8..0000000000 --- a/Resources/Prototypes/_NF/Entities/Clothing/Belt/belts_punk.yml +++ /dev/null @@ -1,45 +0,0 @@ - -- type: entity - parent: ClothingBeltStorageBase - id: ClothingBeltPunkRandomized - name: punk belt - description: A webbing with functional pockets. - suffix: Random visuals - components: - - type: Sprite - sprite: _NF/Clothing/Belt/punk.rsi - layers: - - state: base_belt_01 - map: [ "belt_main" ] - scale: 1.8, 1.8 - offset: 0,0.1 - - state: decor_base_belt_01 - map: [ "belt_decor" ] - scale: 1.8, 1.8 - offset: 0,0.1 - - state: mask_null - map: [ "belt_overlay" ] - scale: 1.8, 1.8 - offset: 0,0.1 - - type: Clothing - sprite: _NF/Clothing/Belt/punk.rsi - clothingVisuals: - belt: - - state: base_belt_01 - map: [ "belt_main" ] - - state: decor_base_belt_01 - map: [ "belt_decor" ] - - state: mask_null - map: [ "belt_overlay" ] - - type: RandomSprite - available: - - belt_main: - base_belt_01: CyberpunkDark - belt_decor: - decor_base_belt_01: CyberpunkDark - belt_overlay: - decor_base_belt_02: CyberpunkDark - decor_base_belt_03: CyberpunkDark - decor_base_belt_04: CyberpunkDark - decor_base_belt_05: CyberpunkDark - mask_null: "" diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Eyes/punk_glasses.yml b/Resources/Prototypes/_NF/Entities/Clothing/Eyes/punk_glasses.yml deleted file mode 100644 index 34e58e8904..0000000000 --- a/Resources/Prototypes/_NF/Entities/Clothing/Eyes/punk_glasses.yml +++ /dev/null @@ -1,78 +0,0 @@ -# Glasses -- type: entity - parent: ClothingEyesGlassesMeson - id: ClothingEyesPunkGoggles - name: punk goggles - description: How can you see anything in this with all the lights? - components: - - type: VisionCorrection - - type: Sprite - sprite: _NF/Clothing/Eyes/Glasses/punk_glasses.rsi - layers: - - state: base_glasses_01 - map: [ "glasses_main" ] - scale: 2.5, 2.5 - offset: 0,-0.6 - - state: decor_base_glasses_01 - map: [ "glasses_decor" ] - scale: 2.5, 2.5 - offset: 0,-0.6 - shader: unshaded - - type: Clothing - sprite: _NF/Clothing/Eyes/Glasses/punk_glasses.rsi - clothingVisuals: - eyes: - - state: base_glasses_01 - map: [ "glasses_main" ] - - state: decor_base_glasses_01 - map: [ "glasses_decor" ] - shader: unshaded - - type: RandomSprite - available: - - glasses_main: - base_glasses_01: CyberpunkDark - glasses_decor: - decor_base_glasses_01: CyberpunkDark - -# HUDs -- type: entity - parent: ClothingEyesHudMedical - id: ClothingEyesPunkInfoShades - name: punk infoshades - description: How can you see anything in this with all the lights? - components: - - type: Sprite - sprite: _NF/Clothing/Eyes/Glasses/punk_glasses.rsi - layers: - - state: base_glasses_02 - map: [ "infoshades_main" ] - scale: 2.5, 2.5 - offset: 0,-0.6 - - state: decor_base_glasses_02 - map: [ "infoshades_decor" ] - scale: 2.5, 2.5 - offset: 0,-0.6 - shader: unshaded - - type: Clothing - sprite: _NF/Clothing/Eyes/Glasses/punk_glasses.rsi - clothingVisuals: - eyes: - - state: base_glasses_02 - map: [ "infoshades_main" ] - - state: decor_base_glasses_02 - map: [ "infoshades_decor" ] - shader: unshaded - - type: RandomSprite - available: - - infoshades_main: - base_glasses_02: CyberpunkNeon - infoshades_decor: - decor_base_glasses_02: CyberpunkNeon - - type: ShowHealthBars - damageContainers: - - Inorganic - - Silicon - - Biological - - type: ShowHealthIcons - damageContainers: - - Biological diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Head/headwear_punks.yml b/Resources/Prototypes/_NF/Entities/Clothing/Head/headwear_punks.yml deleted file mode 100644 index 9bade6e0f1..0000000000 --- a/Resources/Prototypes/_NF/Entities/Clothing/Head/headwear_punks.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Acid raincoat hoods -- type: entity - parent: ClothingHeadBase - id: ClothingHeadHatHoodAcidRaincoat - categories: [ HideSpawnMenu ] - name: acid raincoat hood - description: Mostly transparent raincoat hood made out of acid resistant polymers. - components: - - type: Sprite - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat.rsi - - type: Clothing - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat.rsi - - type: Armor - modifiers: - coefficients: - Caustic: 0.9 - - type: HideLayerClothing - slots: - - Hair - -- type: entity - parent: ClothingHeadHatHoodAcidRaincoat - id: ClothingHeadHatHoodAcidRaincoatBlue - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi - - type: Clothing - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi - -- type: entity - parent: ClothingHeadHatHoodAcidRaincoat - id: ClothingHeadHatHoodAcidRaincoatGreen - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi - - type: Clothing - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi - -- type: entity - parent: ClothingHeadHatHoodAcidRaincoat - id: ClothingHeadHatHoodAcidRaincoatMagenta - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi - - type: Clothing - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi - -- type: entity - parent: ClothingHeadHatHoodAcidRaincoat - id: ClothingHeadHatHoodAcidRaincoatYellow - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_yellow.rsi - - type: Clothing - sprite: _NF/Clothing/Head/Hoods/Coat/acid_raincoat_yellow.rsi diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Masks/masks_punk.yml b/Resources/Prototypes/_NF/Entities/Clothing/Masks/masks_punk.yml deleted file mode 100644 index 3b05bbd48c..0000000000 --- a/Resources/Prototypes/_NF/Entities/Clothing/Masks/masks_punk.yml +++ /dev/null @@ -1,36 +0,0 @@ - -- type: entity - parent: ClothingMaskPullableBase - id: ClothingMaskPunkHalf - name: punk halfmask - description: A close-fitting breathing mask with gamer lights! - suffix: Random visuals - components: - - type: BreathMask - - type: Sprite - sprite: _NF/Clothing/Mask/punkhalfmask.rsi - layers: - - state: base_halfmask_01 - map: [ "mask_main" ] - scale: 2, 2 - offset: 0,-0.6 - - state: decor_base_halfmask_01 - map: [ "mask_decor" ] - shader: unshaded - scale: 2, 2 - offset: 0,-0.6 - - type: Clothing - sprite: _NF/Clothing/Mask/punkhalfmask.rsi - clothingVisuals: - mask: - - state: base_halfmask_01 - map: [ "mask_main" ] - - state: decor_base_halfmask_01 - map: [ "mask_decor" ] - shader: unshaded - - type: RandomSprite - available: - - mask_main: - base_halfmask_01: CyberpunkDark - mask_decor: - decor_base_halfmask_01: CyberpunkNeon diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Neck/misc.yml b/Resources/Prototypes/_NF/Entities/Clothing/Neck/misc.yml deleted file mode 100644 index 097994e97d..0000000000 --- a/Resources/Prototypes/_NF/Entities/Clothing/Neck/misc.yml +++ /dev/null @@ -1,17 +0,0 @@ -- type: entity - parent: ClothingNeckBase - id: ClothingNeckCrucifix - name: crucifix - description: Damn, it feels good to be so pious. - components: - - type: Item - size: Small - - type: Sprite - sprite: _NF/Clothing/Neck/Misc/crucifix.rsi - - type: Clothing - sprite: _NF/Clothing/Neck/Misc/crucifix.rsi - - type: ReactionMixer # I'm assuming that this is used to make holy water - mixMessage: "bible-mixing-success" - reactionTypes: - - Holy - - type: Tag diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Neck/scarfs.yml b/Resources/Prototypes/_NF/Entities/Clothing/Neck/scarfs.yml deleted file mode 100644 index bed54cc70d..0000000000 --- a/Resources/Prototypes/_NF/Entities/Clothing/Neck/scarfs.yml +++ /dev/null @@ -1,10 +0,0 @@ -- type: entity - parent: ClothingNeckBase - id: ClothingNeckScarfChaplainStole - name: chaplain's stole - description: A necessary evil for ordained priests outfit. Gives at least +2 to your holiness. - components: - - type: Sprite - sprite: _NF/Clothing/Neck/Scarfs/chaplain_stole.rsi - - type: Clothing - sprite: _NF/Clothing/Neck/Scarfs/chaplain_stole.rsi diff --git a/Resources/Prototypes/_NF/Entities/Clothing/OuterClothing/armor_punk.yml b/Resources/Prototypes/_NF/Entities/Clothing/OuterClothing/armor_punk.yml deleted file mode 100644 index 94f06de3c8..0000000000 --- a/Resources/Prototypes/_NF/Entities/Clothing/OuterClothing/armor_punk.yml +++ /dev/null @@ -1,141 +0,0 @@ -#Mercenary web vest -- type: entity - parent: [ClothingOuterStorageBase, AllowSuitStorageClothing] #web vest so it should have some pockets for ammo # Frontier: ClothingOuterVestWebEX>4Tx04R}tkv&MmKpe$iQ>7x64t5ZA2vVIah>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YSDphA<*AQ%|H9Gw>W=_we!cF3PjK&;2?2l)T9RpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3D!MwJT<~q$`#Ib|~k`N)IhB7L!5T#Wk#YBqsV;=rN$DbsZOs+B* zITlcb3d!+<|H1EW&BD~An-q)z-7mKNF$x5Bfo9#dzmILZc>?&Kfh(=;uQq_$Ptxmc zEph~ewt6ivS(gkkKSGR0O|3cm$drP+um}&729v;lMw&_000000002Mb5~3GKhoz8 R53m3L002ovPDHLkV1iw{AdLV3 diff --git a/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/icon.png b/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/icon.png deleted file mode 100644 index f382faa4209b1ee713e4570f5d7058c6fe01eaf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)EX>4Tx04R}tkv&MmKpe$iQ>7x64t5ZA2vVIah>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YSDphA<*AQ%|H9Gw>W=_we!cF3PjK&;2?2l)T9RpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3D!MwJT<~q$`#Ib|~k`N)IhB7L!5T#Wk#YBqsV;=rN$DbsZOs+B* zITlcb3d!+<|H1EW&BD~An-q)z-7mKNF$x5Bfo9#dzmILZc>?&Kfh(=;uQq_$Ptxmc zEph~ewtpgHeZ@k} z0pNV;7GtM;+vW`rYVHd0iB(9^XX?7P6H!%F@I(R34!kobB8<;8%+~{q=2A+eX$mRj z>=3g%002S=5D|nBvum)4>_TN;;xwwL6dP-TAAR_y%wMNr4FFM}@ wu}*HjDV%$|+i&gr@o;jk4ISS|Bog^Q9)Oy1lIb3Z+5i9m07*qoM6N<$f>6OnhX4Qo diff --git a/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-left.png deleted file mode 100644 index f4cd0d9464abff095ed8837340d05223668c72dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~J8Fb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZrAoSdWdemA0dsXax;XTLjw(fH_QsedP>R$XHs^CNN z##av>ty$f?T7jdk!NS@?bC*Zwe{U|`BpZu&$9Grv?=Ek+u)^T#8!7gXvqnK5XUsUe zwyQCmL&AY$v&6I+E7dP`OIGx)um16)O8jZ$z32aA6jk$$4yX&AH@v%{!@Og;x$fN0 zc7-#hs219}S@SG>bi}M9-X(+?g*?)H)UhaQihfFL zm_>eJn6~M)UF!9T2J6=@+38ozQK+NXsN!;B#ljvg9hc0j9)=Sa{hiTXf8nG0N!7`# zdEEL~Ll!y}{drLTVR!Uq1IveMtjP}FyL0P%7#d?2L~eikKKXXuJcfVi54^H}ujWm7 zHu+0cbhiv+?d=0cOQR=$Z#XTR@W69A&&i2@Oj?~7E9@8NpJM#G-QoSL+tJzb%lRGJ zc17)D<>&pIuNrK;!adqKSKcLVePZ!6Kid%1QZR9;{z~d5V zb)ZtEaVpy-v#dS6;upMhW=Jw=`{n!(U!}0HIifQSr~?Qprlpo0%)M=-Td&oe(b-vDS5&t|4Wbc5{)u^SyZ%b{ueydM zmk-Umn4QJ&ZeF^co6C`h`d^;%B|m?+bKPpsO||#)3)O+DYi>(VzO1cs^55;%AkChx KelF{r5}E*&nI7E$ diff --git a/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-right.png deleted file mode 100644 index ab53a413c699989a91782ca0b44add74e7d053d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~J8Fb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZrAoSdWdemA0dsXax;XTLjw(fH_QsedP>R$XHs^CNN z##av>ty$f?T7jdk!NS@?bC*Zwe{U|`BpZu&$9Grv?=Ek+u)^T#8!7gXvqnK5XUsUe zwyQCmL&AY$v&6I+E7dP`OIGx)um16)O8jZ$z32aA6jk$$4yX&AH@v%{!@Og;x$fN0 zc7-#hs219}S@SG>bi}M9-X(+?g*?)H)UhaQihfFL zm_>eJn6~M)UF!9T2J6=@+38ozQK+NXsN!;B#ljvg9hc0j9)=Sa{hiTXf8nG0N!7`# zdEEL~Ll!y}{drLTVR!Uq1IveMtjP}FyL0P%7#d?2L~eikKKXXuJcfVi54^H}ujWm7 zHu+0cbhiv+?d=0cOQR=$Z#XTR@W69A&&i2@Oj?~7E9@8NpJM#G-QoSL+tJzb%lRGJ zc17)D<>&pIuNrK;!=jwr(pMgS4JY5_^DsH{KWysf}Akg~o zV#>Od6&X8vw=ewY)1v&d>!$RYMDtlI{)Y>lXc1qKcm}8i2tMdtzSxp`+iB9y-D_W4 z+3Gg@%xF@Ho_18l_7h7DuflVgcX@lui_1@29?yQ~=B4R&?EMyYh)xhG5tQA#`}(Z^ zk#F8jZ>>T933*VOOQdhytx=FiV{E5lar^L}fU&frm2 zvrCu1-u7ip&2?kjXYIU=+#hAaZTN-3I&wSmzzGatJ zO7^=cOIp9OWIQl2`(KUf-hig5`mrmoX0b7q$)9Iu|7Ilp<>Do~T^4h*$~zMuu2=69 zFJn;Zb#vapeE4C&tFOBf*x8yJSJ=L)&(SA3Sa{I@+7OxctmrD}l|KNyPy#3gBRzvS^EvjJ)`xn!d?9;%aQt zBQ4WdF4$;9ytA>BcfD=?W@&5D6_*8!x*1N^>-&N$Z8X~$0u6mu1yl(!~rFWk%%ZYQF zDH9dd+NNgm?Rx&HW1qI^p8Y+~BA;P_RC`0EMBBESxRjYTk+ZI^HmuS=XkK|_4mX3$ zi`|`uOb7Rzc=Ax(S8>I$`^%5kXJ65;7E)luiGHYa{$YHc?EXTuF;5Pdj2S##{an^L HB{Ts5ZTe8o diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vox.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vox.png deleted file mode 100644 index 4923a4d9d5628b68cabb0974718ce162ca918cae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEW|g;uuoF_;!|ews4@xasRCf zGaSSj#lH!1?BERBup?BfB+}sG(*E@q`W5tU^9RPf*j4&|(F$(yrH``3*qAQ9a^jTm z;95F0^Pl*+0#4(}JIj}CUHYH<#P zweF=m&WUGlSNi?`*6n-W^mj-d`^@q0?x}fyYVCAq0O(tPm1 zn%#HTeUW)<$>?zE>bLt|+7q5#S?{|tM2n5dPyV~L^Up%Q8^=3-zfiIcefP-u*?RR$ z-0BRRgfy0Dd~-!{(d;*p>Wgcc3(m+%F}&NkZQYAF z1{b!Q&duhL7w>Iz{hz*e>8HTgC-`bq4Es+Vi(US<_05?nPiyD;Hd*n>JXLXE!i83{ a^f9o6$I6K%oR|m91Pq?8elF{r5}E+LU2ypT diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vulpkanin.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vulpkanin.png deleted file mode 100644 index ad830675ce756c231e6f5add940d99cb17c5b36b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEX0h;uuoF_;%L*Zed4}V}RzrzQA0q?bIT`$=EWL_t*b;AT}zrDJ81sjfM zE@a_RX{u0sX8mEBvQr)_&g4yJTJ*jA%acEf9(6KvS-838x9_^F$)+p<9C-HulfD7=w`;f9e)#yq<`eIF%Id=Ds2me%Jf0KOX*Gnbq(07jx->LUs zBJRiFCe_;pbVJ;8i$2$@ zna0Xro%!DXbLu;uhDE=6zdd>VapT3zeaEBDI$XHo{J}kcx1W`Nalyr+{Pef>>-7J+ zvb+CPabUuSHZU-0cD(HoN!LHyU(r=rC33 zF-ZM+xbwB=eg{FnrH)N`Z#^5%Dk)Tix4n6=HJ+ibzkGgsl<}OUs(8S zgMaP{->asl^{1wuy(h_Ve2dS&pHI42*w;_)EMk`I~uJFLUXCwPn3*K10Egwgr8e{S5PJ=N^iyKEO9Gbo;hr3?=g(EWEtZnML|d zBSZ4UC&dBmg-KCv+pj<089sMIBhQ6Ek(8^`vyXW$Y*&~*spss4wKpeh>`@X@V8n?$ bR6mGEw+0643cSw*W(EdNS3j3^P6qGSZ@B8btFhS@1{k`&E zf7cqnFR{8*`sFzbL-@L1pXY92%Jh*nTN=B1R_EyX*JZXnWd3$#`7OUL@6yLhzVkX5O!acTuwujS-@AO? z)wxa7p5P0UC`xRX7AMX_Kp*i giUUqmFKEH|)6A)&`f{Z+Fm*F{y85}Sb4q9e0Jx@NWdHyG diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/icon.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/icon.png deleted file mode 100644 index e2d75aa86cbf067af0fbc6c95bf2089c0ff6fb8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmV-A0>%A_P)t!itt>hqdwbM3WcaRH;-Hw+gWV_|ujY&j6#(PnG__qKrS=`R!& zJSa!s2G$uyJVF8BAp7=1&$^kfa{aH)wpRrYBkavb7@!^irkKfO)Y{u|En>PM3sx@e zDtoZ5TrTH0=b+s5vFC@+u$kyP1KkFkSwV&nqQ|y&tYxWG5;Fol*$`5Z?C7Wq!bhml zXt;MCRKixU)oiNWZa>}-(nGQ(2+kpb=ks|72yS4Iqldor-WfzZ`nJIIaY8m^58<30 zryT^PA{I1wkFMF-9C6o=dWJBlgcE|nAuBWQc4s^&@3uo0Mv(xRTr%U&Cm4wAxvSS| zj#~=|f*vyL!X`fmCb9*lXsgNDoW{K~9|=z?kW?V4Kv)H?0nnopr4R1E;Q#;t07*qo IM6N<$g7nY?xBvhE diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-left.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-left.png deleted file mode 100644 index fe2901acd1f3fbfeb86d3b0ce614560665cdd9c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=;UsaSW-r_4d}^eV?ej z?~UbV_p=j$hJwI?rn2?%bCf^J?3{Gv!{3Dyx5mxB`0i`BMPZll^556Z-}@Tab@vM| zU%&eKs^;#xU;O8d^=ED~4*2+U z;rzo3_bG3f)917A_Nv=+UK`4RA6 zIQY5`#6dt(!60=01L=k0@ul(yTVnR~*S2Upu|II!u8Fgj<sc2@boX!G5hQ-Zx$r41R3G!>gTe~DWM4fdm53a diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-right.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-right.png deleted file mode 100644 index 5615899ced3a6b6cbf8db2633243ea187bfb9bef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV3hN8aSW-r_4d|6KW0af)`!Mt zd03n|(;ONSn3J+rad3(q7Ebt8QOh8=pdu*n`mDB=HJOGjIk$2qcew`gl0M(cda3N~>l& z|H)GEJep%+;G5g9bI0Y?OTO;VpWm{!GWTZUO`FhN<^O&b&NKV>bN%t!$mdV2Y*WvF z|LUG#CNraEXTWybtC9Z}y?jAw(>t~$(pZ2>aL)78&qol`;+0Nr4bq5uE@ diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json deleted file mode 100644 index 2467db2bde..0000000000 --- a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Reptilian edit by Nairod(Github) | vulpkanin version edited by Floofers. Vox state by Flareguy for SS14, Modified by Rosycup for TheDen", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-MASK", - "directions": 4 - }, - { - "name": "equipped-MASK-vox", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "equipped-MASK-vulpkanin", - "directions": 4 - }, - { - "name": "equipped-MASK-reptilian", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index 497ea69bfaaa6a8b902094bd5d5971374b17f8a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmV+>1=;$EP)EE~T~?ufj1gtS zKtlM8I3C&Z=g(s>`Nex#`4RHd>T$b#t*jQE2;qxt>okgyi})D)sMpox@w1)T+1awk?Q0N& z{GN*Tct`{Asj|4Z*jJP3Nzh2`t56}RH3j^(^tcUv-j+3;rUP&mOx^;-`E;P#Bft)SzsJcl2Qf^;G~J|dOW}u0d(ssA+5`Zh z1&AKkfH@PVz|$Dt~_z>%O3~b+|~Wy zZoiGSM*uy|dzrsI{tETFAtsNUayugW;nF3-M*~yMe~_o(*ZvN$pS9X}U||vwp>m9B zDrgae=&C?R#D0s^CLjcA2?&*sLuQHg^{ZoidCq4BG6R``%s^%!Gmsg`3}gl}1DS!$ zfX6`e-(c0>*k1pMHDyQAj*#8^<5--q?si|A@Q7|Si}UtGSjtnj`_SKZ@P z*NGt^ihwIm=8L`m>EeRIWOwU{?WfQ&RjOlk+p#J8`sH?UINB;tqdpIvtbMlotwTh1cw{e*9JxxTv$!*oTxGD6$n z`XJFX*o)VouyD@D3)wh`gpsF!l=~;fl8+;9600!+?1}L>oR&_VMk_yR98Ca2OrUo7 zH`y!FUloI;Phr_WU29uaTVEc%23Q5WgEb$CxvHYGLR+uNG*0sI#li~-+)!my*brkw z^aub5$MpeXUq$0O8Me+@3|-r`_Sm|0(n$n_6mwz8zM4XHnvj9Pr*KmtY6|FQ2ylLg zY~Y8)ei_@%07*qoM6N<$f&ie4Y5S_#nfdmYMR6-7fbSfx8TYp5b@B{J>Y%MG;Z2Sp=AXgV2nxnVfwE=;Z1Yngq-)tp}#x`@{8AT3J&l z37_wIL2$Pfw2xPVYPG7-fH9AC@U%q-5JwI1QnN?cY&;&*a5$vVXhg+gk;>&V6$%CN zeV^V=<|wmrCe{^Y04dKkp2Cf=Nt|IGfq)lRqBtMSIRk(ggl+bGl&72BkB9=kGzez^ zk*a0zc;BIRr*B~-FIj8Fr{{V@#`CIyl^-(Uk~`&aal~vnKFHo zur&ioPOc0j`Nhpo6~O*&UDGnLw&(!j0MzuyWdMzca)9U9Q(G1X059%#oR~WuU*Ndg zq3x6aCJKPB8npOk@E3FHI$!={kd@cRb@0Fo9p>y9=_rLK$dj)qz@5vQ%f_DX5ddV Z@C~9M#>PmSi5UO@002ovPDHLkV1hgP?g;<@ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-left.png b/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-left.png deleted file mode 100644 index 3079c4ca6d0b79dcd49b3aaa125469a2a1176d46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVA|*D;uuoF_;%Jt@7s{aA7D+evN@ z#VadyY%Ri9hOF`07-90Y>TbfPwPB}EO;#~{e*E{$abAL@fE8W{Rb@`zK_BWjF@44LZjiKPz)8{w)Zay)R&k?G04!FsfKY#8F{_g#{ zr^ETbU*7a&#RA!?y_2$6-^`g+v@@rE@2_u{*HtYmsPkSL^vYnH!94B=N1r9vZ+@RE z9=-0*mjwT-@i)S5GOnAfar%_^yY1~)Qn%k(CEIX4Jh$l1o%+A#v4v}t;u_oS|IcXs zs*?3}$@?#7mOKru*dUsExa^F^3aOUM5~uIJyPG2UFD7%+zI|u4z1B=%;KYOO7%7jYia*)!j$-8%nL zWx^+pllk_41!a0pvNjxH-YEQup`r88wk3}5lvl_$UaaoFHKXF*! zF_?FBW*7uzc-Vx#`^|&XO+DN_aYb z(#8_?HE-_qO1T2#%k<8~y8=74uj`y%9q`z$X<7XBH0}$vAMU1HeBuH?yJ0@#MD( zTOI@)*{HEYM4OK_{O(;A_Ih1Ezja-GTzdaRo0=ayc%;?Tt)!(9>$1?IvqT`ud~F@G z{*v@}?Mv^?{lP1)kay@_jOzT^FYcG}LX3Nc+#d-Bka<}{Qq>ULqJ7fGpSBLU0zL_Ic zy*4cPegE{_THoYD>IJt{5Bh)J&f$=LCuaTitG`~Xl=IHI@js}MKXKM(M?PISo)^!~ ze(quuD#?$!_27%YS2W9;v-?&oZdJc5e_bP5c>1xnvW?QoU4C4xO_LU1%*aS}oHh5e zM7E>d{BR?NYpfHFmPS3_x2O5v#*^Dj6?}@LSxzVfou0i-+2PiusMELIdzI{dyexHN zuq%B!(b06@--Y)rl$hopyZt-ebbD~|w~y5hcfMV_x~H>Y_v`A%&GY$|8-LQ>diZYY zXK9nn-5ITXx7(MLe*CH8z=Q_{ay-yq|982$*ZdXVS=8L#IR0_@GtHoK+mhFB*KFNV zy10+U!R5%_bcTY7GtP?XZCUS8`+Mnr>(+-pJvW*iTYT-$*)o61S+Zl|>M14HAD>KI zk$1a&!DkP_2F6Pp(iu3TWbUzKOlVHbZT!s~GxzZwjwRoC6a=H=_FZ_`r>P*=uq#^iQ_P_npRDr?Vh^W2R@}^X;Ah@i=7oX}RCRxT zv-r-FaBJ?`eJk7V+7(xnmR8AHGEKT?+`zGAZjbF-UdA{bP0l+XkK6NWx* diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json deleted file mode 100644 index 7941023219..0000000000 --- a/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Modified by Rosycup.", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index a2581dab5e38f16c496645e7608883d94ff376db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183 zcmV;Q1YrA#P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0008kNkl& zD0i4>qjSfMw)Q*_E^}|@yq9x77$u8w{-lLDYp zt&z>7&a`SwNB@@2Buq2S)N~YpwGZp$EQ^g&iRaIr0&sNLrQT@jgw!GtPck(f#V`zj zGwsn~mrAv!71LLyRQC7x4!C>o&d~p}RZ2;Cku0?=>6;TPd8J5IS=c5UjQv2;<^xYE|~4Nns| z0m>FvZ5WpLFqW4VBVO%9JQ+Ba_N2Xa0)XolkJ=HwXbx)C_xBFm{vfppfp&mtrl~iY zt{WVdBYYl8*E^RWXnBJw^R0FrfL6Oss~t%9(rj*S4m`Kob+VZh`9jeNtwIETXI@oe zsEQ4MOeO=MB_4!)q3A5WdcpDWF~FI*=vIhmCBW;`o2EIi1ESHWmhffR+S;Pq?GE(4 zU0DefEAVRl$)}&29pllPZ=vphFYoR<-kJnO(AtDRFU95;oM9e)*aqdOwWU5l_l4`M x5%??W1Jp!@ja|hNxGrr$5ClOG1VOk#`~tg>%2;x}(FFhi002ovPDHLkV1h)pFNXjC diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index b4d2825f0dad12ee6ba528a6faf710415bc5ee47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1338 zcmV-A1;zS_P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db000AVNklBz1R+N-vA~X0D_vPY>e8jD1wkIR5b=dvgpUn1I4>14I%<&XCg@JI#?Y6 z@5At15zwBg?HA4nV582eNO<9PKw8h(+ZQ1Ms+Ahjdd98?P*s)dTHFqZYm4@Fsa!y* z+}s{i1hm^Ed}LB9p6m8L_4I>4Eq@7gc8K7iTq@nvu}T$=g-Q8vi>051m( wx;{Xp4VR`qK$H!au0G(R*dUQeB$BJZALC<)6~JI8k^lez07*qoM6N<$f{?Cpwg3PC diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/icon.png deleted file mode 100644 index b5702f2d315a65145e95303190213ad15d400f79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmV-Q1GW5#P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0004jNklGR+SInF=g=Ak+Xmuj6Ik>ylufhnwkTtyChskzg86L@bI+ag z|DOZ*UI+*X2>5RliX~AfmPEfbS;DH~069&gP%H_vZizy%ByyV8lOKoyuTY~|Bd2LS z(Q8b_KuA`6ExXE9>jr>Y-DEAhO1WaZ$5e6&fLMHna>ZbKYg4MWl(=o%!nSQ;)-7Sy zt@m%&b$xTPlNjo^LDzM<-FG{0G(X>aa#|(1m>?FPLDzMu2KyS=-`foV0wA4EvzSOR zH9ZbMBoe`K902ZaA2>O!a(Hy?{qN@nyu~t^jA%4#z7yzlI?}>Q2D}1aO`u#cRLZFv zfY&4FH-Yb27c0ME?q Uy&tYpEX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0005BNkl`CduxuwdKRd-}I0gU|ig~=geEyW5-C{TB0jt_J`J z+hd))IH^y7QVQi#4L#R`Y1UyF20HB)I_(xrvyPtYp`R6z z^}h6r?NVMCu>s`N19Ai4APZy<_b{1$BR2uQ2D_0LMQi}~(+gy#C&0)DvPZz=_dA$= z0_bi%FN)}c>Hj%+=_cMoI**8mh=_=Yh=_=YbSBXu5PdzqNm3mGZ3h6zbO^M3 z$spMw(DDRGb_ldQ0f43*0%;N*0?~fJHl*zkXgvUl4uRGKkmwL-|BzsZfYSK^!<=3? Th#FN(00000NkvXXu0mjfVq%#8 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-right.png deleted file mode 100644 index ed69a4573879784833399193fc173927945eaf4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0005dNkl}m&vE?w%_z590AMd(u3UP;l9-oe@q3JMYfJ+=;^nbY~(+;WTW2W0S* zx$mCM?eIJR5fKp)5fKp)5dnav8?L4s?z*+42%C3j)sHnB4c~)>N*R+)@-8jFRI|~T z?L6K39cbIa|8)?r#U%B32F5V4+^tWEPSy@IWaj;pFFYSjt~#r$l2I2ggS zYzQIn_;A1Vt3MS>UQIV#+v>TFG zf$aVc#*9mn90PxdmpYOpZd0s$< zRMTLw2X9(70AN{PJ_$1eK}g*Ji#_;h|6Ng(M9vHZA$_&dHZu^5w9O32@SP7>CT%kV v>jWx5+GYl11S&wEX>4Tx04R}tkv&MmKpe$iQ>9X>4i*$~$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YS|^5ky#Grk+SIX5cx#?&0I>U6f~epZjz4DtVIuK9P8i>4rtTK|Hf* z>74h8!>lAJ#OK8023?T&k?XR{Z=8z`3p_JyWK#3QVPdh^!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PLwRi_&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^bYx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wTgn$H40009tNkl|=0|0D)-9^GMu%F9e<<)Zl!1-AVrAn0&l0+~N#@xIQ znx+9jUweMmLcUNW#dMS@nf;UFQ#^RMF!XiuK6MtH>N|y^@AwSRG!42QMZQo(Fc5~O zY1Shc2qRx8Lf50#Y>XSb&MXQyZ0C?Yi2G4Bh`l13Wg`!;sutg0= z#;$+W?qGVxJCZ)>cYvL%cBiYotB{tAKbaC9e+XCY4!jo)tG_e5gy|VCM6-xD*CsPyoKf*8! z!!QiPFbu;m48#0)OwtZ_!o=)xJMmZq)k;Gg92{6SwQ4LX(i)fA6yLBH9TlLtrgMqMeEb^f3bpik^w|Lx+@NHv|vwm`XYW1tsCMc}{U5}zvsakHZTaNHe zNL~9_R3I56GV`^12>?*5mr$!K>5k0d;bGTxtzJSr7C}0b6|Pl?0N0t9l^C*O0{~*N z7yyvORY+&DV)e~yTwY!RK;KxX6(Xbr*nN6k*Sl7L&*vivkHXQ>5n8QQSKr5t4W(Gh zvo*-4Uk**->ARn8LFb-X%H!ZGg3hB#B206BF;7_K6bfbIqe{FA)waMQC zgAB+?eRu$9?rnLz7ma}?sfsx|vO7G<4==eX2~@}l7^nES7-bTaSAh4T0nsd5l_Hb$ n=A~Be7#N0O7=~dO#yNihi6rQ}i`JN@00000NkvXXu0mjf3Vuw^ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 8e1557db217275f2cb2dad3dec9bb4152a28e528..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1449 zcmV;a1y=frP)EX>4Tx04R}tkv&MmKpe$iQ>9X>4i*$~$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YS|^5ky#Grk+SIX5cx#?&0I>U6f~epZjz4DtVIuK9P8i>4rtTK|Hf* z>74h8!>lAJ#OK8023?T&k?XR{Z=8z`3p_JyWK#3QVPdh^!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PLwRi_&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^bYx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wTgn$H4000BvNkl$XGFh4gNXtd5N zsMeIOW7RO&(y4xjQ}IwZLQ+m!eG0oVOGho{`=I3Suwrvx7O=uOb^&2L@G)61Vk*63}ffApU&;0PwI6 zxZTx(-$ffg4$jB(!umpZp)Ztxcf|>GK6(rQC>>s?DZO_90H;5904$0}(MEltX8}s- zS4I4+Sg!i+7jEhcCx90Zo@9Mbg4_CzDu9abuPg@mApF8jeMbqnPRIm^Zg5q(`E?q& ztuK5d6g?YLX!pOsajudOPZPlV^L594@JGAN1$=qyUJSzh0p*(y z006hTf^5BV-=F>f8UyPQ;2dG<3p%{ek+WMzwNcrwX64=2fcCf#)=*t69|MU#$ z9J@#YJNR?QSY%(q&jQqv=JE63X$+@{ovL+C4jyp99rn9B#BFV9kGDI3cGFS<&WdG_ z{XKUgaRAxhYq>AMaRP!TS?0_8c>$zQO+F5ZL?X-|Ar5#r8(2bL00000NkvXXu0mjf D#(A9n diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png deleted file mode 100644 index 334ef02242d3f65f165dee34405bb3a1b6b146d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json deleted file mode 100644 index 58b759095d..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Borrowed from QM turtleneck at https://github.com/space-wizards/space-station-14/tree/master/Resources/Textures/Clothing/Uniforms/Jumpsuit/qmturtle.rsi and modified by Hanzdegloker (github) for space station 14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Nyanotrasen/Clothing/Uniforms/Jumpsuit/summer_security.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Nyanotrasen/Clothing/Uniforms/Jumpsuit/summer_security.rsi/equipped-INNERCLOTHING.png index 71aaaaafebe5c60b60fc461f27b378d1b0117818..29212f6ca00c4fdef46023911d41d3ea45b16589 100644 GIT binary patch delta 408 zcmV;J0cZZ@2&My&7=Hu<00013M{Ml?0016POjJbx000gS4jddDAt50oBqS>4 zUS!fd3r}~2fGHk?JK%ZNOeX6)tJzv>K`5;)6-QNl+JjKNpHO&1Av*34wdQ(T)F|Y; z`VRjrm|~S~?|<;4{@a4+TRhnG4e(VMzPa@noWwI8T*d2!Lh(2WYr)HPX&_0NM}g0F zg|{3QjiYOVF_N&uEfm5#pb!&<9f%qf1_z7Npr~F00b;aL_t(|0qvU4N*qBD##>oXL{`Z`i0I8r z2$BboJVEYxwmd`bc>>83h~(l?i0mOm5m8*+^sn7-=rrR_SGzMB(gnNyXL{VN90xpzDs&pzJVxZl&M z`|e!RZ_%AI_S0xI1LI^o4#Pbzc7*z&FR|_0bZWxS9t`-~^>z2ggZ}bhUsqS14EX%; z(DeVjy)_$=J9+RC*#K5-6W6TxtK8Hjto-|(on{yYFzF8$7onsrVI1StUPc+?3yV^d z2Sfc<{85*ItbaU8S#{VI5T)wU!FA+lch_xCCNrx$N>5xqg&&Vmy#&A01Bmx8*Vh4q z_=AWxp`YsrT~Ehb z+vwMmAibCV5_}T@Dd-{0R4AUFQ~e`Ef<$AF>5uXaN~DYl6KRsi-j+57wZrcOWC zF{)1ihn1J8jwj#&Rw;f80Cs+UzET2eH8LGf7$AywwbOAq?P3CQl>ZB3Od$}vx9TcO z5|EW3VR4`8Du=+g+FQq01}X!UfyzK-pfXSysDBJp1}X!UfyzK-;FU69`YNnB=$wGs z>3IS5_gV6Vm@^3yzD$>#O)wL{{6;*KrX3hfScbDxglF_EsrRw!*n(i2 zb$@@*^i5E^KgXOG@GgJoLE{w&Rt)&3iHGpRCY?zze3~~A&=TJ>c?2GydY>GC0Tz=N zUW;AXCYT6FwXz={AC?GP*Q`X3qV4f!bJi2$d}x-6DF?KHG={WY?743l*d_wV!10{O zwu-~Jf2caxX~s`&?6T!qA%JqlVOsA3E`PngY&??(=qV5z&s!iy@v}aHVm-NaJ&M6= zJBik2<09Rr7a`ul*a2o!6r~3T2O%Wla{Kj{PE{UV zrX0Wx5=~z1mn!kT*c+{O6cIokkl=>I-OvJN90IXT7F*0AAmzB7Tu*&Nmn7fPi4SdS i#j6Zd1}X!ul7TEX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3pXg~E_1~I009?CL_t(|+U?psj>0eyhT#u{ zwsTLjN8k=zfQxLMY7ej#-AY`93vh>2)HJE0l`PSE8;~q3SQ!!{qP$NP+17aCpK2@t z00000006VHunay(;WN{}^E7Km?J zfTqWoy%Z|rE~sbRW(s#|FNG<^U5*{F)Gn2ZyVT5$z5we&iLM0z000000001hLCo(1 z()#-`Dq22MpSMciDD0B?x^m1hmB;@&+Un^0;{`i*P3G*AV~(jd*h;FR9j~O&-r8H0 ztKi0(XudW%f%klhU4eIVltL|O({UAwoPc*z-%de2AjYH@;CtdHcoaVapU%wwg$Mx5 Z+CO)&JYOQzgb)A#002ovPDHLkV1j7AUuysW diff --git a/Resources/Textures/_NF/Clothing/Belt/chaplain_sash.rsi/icon.png b/Resources/Textures/_NF/Clothing/Belt/chaplain_sash.rsi/icon.png deleted file mode 100644 index 4e9d3216adca3f7cf9d90bcb512be231c4c6e3df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 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 diff --git a/Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/crucifix.png b/Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/crucifix.png deleted file mode 100644 index 2b0df4fab6becfb5af46f3b9a5d0e206acad0ce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF3kVkNMtti4003G^L_t(o!((6=1*2dTjDk@x z3P!;wpfPx`+TuSxc_vyr;LZE53@c)nl-Za2S sFUuM24loYN5MUZDC`Q337zG0j0DV0aE_abS3;+NC07*qoM6N<$g5f**T>t<8 diff --git a/Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/meta.json b/Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/meta.json deleted file mode 100644 index 222af27e3d..0000000000 --- a/Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken/modified files from the base SS14 (bible.rsi: bible in-hand sprite; belt_overlay.rsi: pill sprite), sprites for stake, censer and crucifix are new; edits made by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "book" - }, - { - "name": "bottle" - }, - { - "name": "censer" - }, - { - "name": "crucifix" - }, - { - "name": "stake" - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/stake.png b/Resources/Textures/_NF/Clothing/Belt/chaplain_sash_overlay.rsi/stake.png deleted file mode 100644 index b5233c48fb9a6007f4094ead4ae7822dbb025186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 605 zcmV-j0;2tiP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE6bc4NYSQ@t003D@L_t(o!((6=1*2dTjDk@x z3Pu5yL5c^%{}c~~|HP_ip|%4AzB4fJ$q}!f>JIq8$-wa8^#D46)DU1A=rl9x0Gc>J rU1k7%w6c=;GGG*pf>AIE1_b~Brf3TZ@4yZZ00000NkvXXu0mjflT7+) diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/base_belt_01.png b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/base_belt_01.png deleted file mode 100644 index 7a9eda2f084787f89b4b85c6fd8991fd50d9b51a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 891 zcmV->1BCpEP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0003}NklU5Czb0lpafN=(z@kZ{oA%2JsCj zC^&*$(5HzsK7qGbIa+DiL_i?B+W%V6%y?{QJOB|95fKp)5fRakVvPCGbMJlLGyk*r z&+3~~EqOVFfEZ(*OXR)J#+Y3zgi=!oVR6jUl9xpUB}t4iH%$Wo==&bV7<65y z_H01cb!r%f?7h#{S^&WHdcD^qB8y`#F8F*tX8_PzLqwpphP4)TU8|!$#gtO+`~IH4 zEZjM#c5lGfMrf_?JD*a@M>L`28HOR>Za0X?s)fJhC;8js6A=*+5fKp)5fKp)5k2tN zudAx90m{t4JBokBK*nin01?4BjyURexSYBW0$wqYQEfT$WmceVTU;)e!*)J|0Bh~H zfs8dLqFR%@EZjM#oO5cLCbVsPSObhPsOws#lrr!+Gf+EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0001SNklv#6=2{Pni#;1>^9)> za7bo; ATmS$7 diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_02.png b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_02.png deleted file mode 100644 index 0c489edd3f954c22b32df8574108105ef1711e3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmV;W0$TlvP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0001dNkl|r zt9#^A000000001BgJZtXcZJW)pN}c-e+d5xU3HXkd?Nq=0D!OFQO!L018I^B00000 LNkvXXu0mjf@Q@Nn diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_03.png b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_03.png deleted file mode 100644 index e6c306774e8c40b0a9aeff0df78f7ee4e1c3b06e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0001WNklUg^lIoE2$ftYn+czLd?Y--lCOp1BsJ%J7yp+l=_F+r4*;z_0h*se_Tv+&vH$=807*qoM6N<$ EfEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}00025Nkl@oK-tN=S*2|jPc4mQ9s%J zilf`|DgeNvf=!1%amlzevsi2WeFN?Uu&;wqRmn=g7 diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_05.png b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/decor_base_belt_05.png deleted file mode 100644 index 26e10e1e4b8076d1426119920fdbb4b40d7041f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 747 zcmVEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0002ONklZEN000000002&zS^RxIGmF`Z7?R1%!rjB&hm`SJyW8M7=a3X< zVR{c=%h_ajcRwwlX9=}+B!#=joe~~be>{$(`aPwzw?2+$7Ad9umz-a#?fy(w$q4`e z00000006L_+20IMLN7h9$cGj_%WjW)nDG%nQZ#vxaI=K&Wk`xr%6s^cSJJ~yf~4Rs d9sq!)JpmM@rifa`>`4Fs002ovPDHLkV1lViHD3S# diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/inhand-left.png deleted file mode 100644 index ed5b493cb922971f930bf9ab61ab0611c5de4b92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6086 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 diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/inhand-right.png deleted file mode 100644 index 0ca7d62fdb32537062745fbbb90b36cd34bf52cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6080 zcmeHLdsvKV8-F{fRa6cYolFxYn)9J%G#xa_bUslI;hmXxrk6Q2^NyKXq>zx~uFyt8 zt6C*;DufP}B%y<-zKBJua%OGuy)%V;>$9Kh`u0C_UDf;C&+q=-_w#%1`+4SVO=z&+ za3d=t004$_rnAG*zh0W3?+no2`EXnt01N>WBBPOTP=%4nr2<$4VUTzkgn`ts007iC zyQ1c#cT61CCp0hCH@4TmbUQ~OFf8sZDGx54w6n7ic_D0eGT?1mS%~#r-dcbI7Zp-)2 z&%M^0n0e*N@}yU_HLqSibi1gyzq;#=Yeswv?Tq!6dv-BBnU6e+XC*f?RZZb30nd)+ zom8D#vBnmE|FlcT%wGMat*WXR-90McX?)t=4!cNaU5mZ!AFRd}w3=8ENmb_N;xvb+ zc9RbrI)BbjcBI#FUG-KcON=W(;8EMe*#*ZX$`wYVL&|HWn@zJbIyWw{<8A1s9jo21 zhIN-E$6Q@uCUBF#t#kpVE?(!*Y*N;`aa%{VSLm^yjOjNvEL;0vYLqD6=7~WDDXeZ+ z$uuTGM>Ya6PO~@A^>ehSMq<633OJ19?vp3_gqxt3h*+&*mo*TY- z%ewTD{VT+ON}5mZ*g51wqJ>rYN2e?t9UPrl>bcRXHFTY|b5^dZ zz9{mAV{&G2B}tD<8etaY2k6+^7Vi!9C%GXTn!|QpA7AbtCv#+Qy@#D<7ywg8|uMed8PtT;sy?>OERhqAZsf zzp;3Jc=yp878luo6G-77wC8`1ly@pRbKmYdnNugq$}1B^sK;!t*Z}!9l-|rB=2rX9 zZl0f0NE6yNuFFXgnb#}kbQINk7p%daq!NlVj_$2Ek{%rLWYyZt%M8XAYhWzB4lf969d zdN_+tPm^0u0L#o?{uWu&Waz}Ynd{^meXKgsN}zP`ZJj(yOy%ral#Xa zVs|NQLVL_ND$6zBUNkbrrFhuOs%3Z5EpI;lbIpR;EA@)bb2hv5m{l6ziXQbA@V!s- zyRaa3(WtGogv&a%ymi2;v-jL8?RQTLQM|0JBHQP$^=Pn~cle!U*YVv_Z_{!6qMTgJ zGM)0WM%4=*P4QCMncOX29ZT~~#ojjCcY9q*%hr@Du({dNywZnN{<=z&x_}+&##>A- zdgzYKlO*hf;Gfo>xms6L++ByWn zT|9#~B{RAf>pyNQ|6^nzmF|~(tLf^S^;B0V8Ml*qsJUWeSz@){@kaA^3+Ck_-9w(0 zw(VFkuVE1Ptd$FjZ$Gp0|BB|qk-NQs9H8Gv~ZtbXoLg(m}r71J6_T6pnDJPwCnmyWxmsee%#^X}w_m>D{phH#}|3zI@5r@JCizARGQZTfYQjb)yoWWn(rm zs;`AM(#X>N5bJcRg;&cxot5jY#ENm)J3vk9VeZ)krLzlVZbPML+sGfYV*-l`VuC$P zeP0)6#BCiGShi!tu4eCpD?1ueEG;)h{qoq;)nv~!X99%-06ME+AD>W;kI(zV7CmA! zmu_ZFukf;|nm^|#c7`D()s3H^X69qvsl%EOVJ@ zJ2z9Ql$qydebk!!+a=MJ)|Hf>(re?hq8Ipb z>^+?9TpuJ?Zk)R}?@mhE%+oQ? z-DKnWdR%XJV@*gE|)z;eDcI%8VqpuGTOp@4O=_gN1`B>E+U5DqD%N;wbmT?|PO zhrvN*BBf$*Or-+Sn6!C|_yPi&ls58UA3sh|=m#H-j6zr}(|TyogOPmR2b@eP7ilqk z9sv?TVl)v2%1rtMkHCVD8}!L~G&6rm1P%9r{}c3ky|lS#b!D=pJf$Wmht0xj@@4X+ zJebeaKGMkyI)zB5;fNF-grm|S9*#@rk#Te)pUbBb`7~E9br2OtqCh|i57JPf_LQAj)nj>@12aBc#c0LKRfTnGfI6e^!Gh$2J|qn!YX24|(A;-gelo&b$W zrlBlU4HbigWAOPP4&*aPAQg0l7!ahT((D7%JCwu1lJUfkmQWFh2&8f`+Fr1PFI6c% zPDR3EC;|aBvXNX#ZWIQMPA1W)WGc0PeOktukX(V5xrUWQ#FNQdcRr6f4dn#Ua)ZU7 z5F*GVLhXcRW0>f2P-#I;cc9E#JGvUCj~oIKsXS6D6|t}yZj6Rf+f*3$fp%dAN_kpG zEg0f!I&Prnrh-C(cIZy{68JAn5wTL0rm~Ek{&R`Jxbc2zMdGL%z)OIq(Oj zaP+iOAo6(5-z@4saPIvDJ010v%Hs#ckAUL(NBu{V2-Zr4!Dx>GCdliTUjZ(L_}VQ% zb?l$w#exzcgr2tp&Gz07f2NQjD&LLE5KwVE5}A*qlDRw_Na7N4bSe*|gM2Q9MxuYp zu8;~46)1>HAHtZ*qN=0$&CGR$brZ`YHv!3jD3Q{%>*_eSGDHBbpLxdCLYxuyxWVE490?o!A zHSOoHy(7_oWZ#@(QbGJ~IVe&-g?BK9?1yq9>Lp>}Im7S0`)$~%m4;Yd6s-BE!x|zR zdYiTjUm1A5^oU-xHK22PO_$Sh-6FlkY<9`M4V5j+-eZ9id6Nt4bGmh-Y!=>cWj+-@ z3%u5|CW=t*PD$zZV6$76M)oG|eq<6me|f4I<#^o2nxhD^w e9mlbO2`n9(B)4GY^EEn}6ga-Y?82!FlK&0XY7bKY diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/mask_null.png b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/mask_null.png deleted file mode 100644 index 2975c479be7566a6c59a7aca4e20778aa850feb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)ID7sLn`LH rJ;=xlwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/meta.json b/Resources/Textures/_NF/Clothing/Belt/punk.rsi/meta.json deleted file mode 100644 index 0e058c9dfe..0000000000 --- a/Resources/Textures/_NF/Clothing/Belt/punk.rsi/meta.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Sprited by erhardsteinhauer (discord/github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "base_belt_01", - "directions": 4 - }, - { - "name": "decor_base_belt_01", - "directions": 4 - }, - { - "name": "decor_base_belt_02", - "directions": 4 - }, - { - "name": "decor_base_belt_03", - "directions": 4 - }, - { - "name": "decor_base_belt_04", - "directions": 4 - }, - { - "name": "decor_base_belt_05", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "mask_null", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/base_glasses_01.png b/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/base_glasses_01.png deleted file mode 100644 index 7d3bbef739d567a74184afb6deb2fb3afcbf2ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmV;$0y_PPP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>NzJ000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0001-NklZt~5CzcBDd^!8aDNS_FuhOVR7er2 zc9lg+^j7BEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0001ONklmZ8~^|S00000?(5Zp?;CtXv@u4% w(R^l}z4u2p=j@L+acg^i5&!@I004lBH~C^GDw5~NumAu607*qoM6N<$f^jnrrvLx| diff --git a/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/decor_base_glasses_01.png b/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/decor_base_glasses_01.png deleted file mode 100644 index 49569ecd26187d0cd61a1728bd6bfaf19ac2a70d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~J8Fb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dI0@6c6zWdemK0_Lvi=qj0_C3es$Q+vy+grb+?CYc^VF*2;zo0{dj zL)pdCV`XDl9X~K1xp~m@qN~@R_@E5I#|I1T@7=AwvzK{KFIRBSI!}i{Ut7_B&YO2u z2~@Po+rBu?vPj8zi%XRu^YxFV{QU9nm26J`y)%EY|2b)%4;)8|eJ=Yx;(c_}H~8@$ zf0-oJKs7scx$7^Rj`YV&m#KRkv*qS#W9KS0Q-2vHu`XGiQUmRmTpxJ~Bf>&XeNU5} zW|?0Yre%6N#RGqk* z$E}YwWTC^BzYpp^?2cY+VEa^sHM!yc(M@)4jR*8Dtckw%ePgPrKf`_Ff~DL3US$*b ztFrgrwL|U)4ww}b-o3WO_CXQ5MAapi*e$B^zWECo_RPO%{^n&uUFV}AEzs#=S z9IJbufxZ1e#KcY4WAEL)d-L}G^r*jo8E)(-y0DqE-U1jeY)RhkE)0tpCNre1P}u4V z6yYrJh%9Dc&{GCs#)_r(Wk5mp5>H=O_7|+2f{J`!UoeRQg(OQ{BTAg}b8}PkN*J7r zQWHy3QxwWGOEMJPJ$(bh8~Mb6ip)J-978H@y}h+i5SS2H41eYS+K?~bm>{&-H%FAA q#(UCspdt`BP&<2mgE}Laov?thXdeH^P}ds|L3~eFKbLh*2~7aLSnjI; diff --git a/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/decor_base_glasses_02.png b/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/decor_base_glasses_02.png deleted file mode 100644 index 9448ba07e75c8e299d353181de0f1c38c315a71d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~J8Fb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dI0@6c6zWdemK0_Lvi=qj0_C3es$Q+vy+grb+?CYc^VF*2;zo0{dj zL)pdCV`XDl9X~K1xp~m@qN~@R_@E5I#|I1T@7=AwvzK{KFIRBSI!}i{Ut7_B&YO2u z2~@Po+rBu?vPj8zi%XRu^YxFV{QU9nm26J`y)%EY|2b)%4;)8|eJ=Yx;(c_}H~8@$ zf0-oJKs7scx$7^Rj`YV&m#KRkv*qS#W9KS0Q-2vHu`XGiQUmRmTpxJ~Bf>&XeNU5} zW|?0Yre%6N#RGqk* z$E}YwWTC^BzYpp^?2cY+VEa^sHM!yc(M@)4jR*8Dtckw%ePgPrKf`_Ff~DL3US$*b ztFrgrwL|U)4ww}b-o3WO_CXQ5MAapi*e$B^zWECo_RPO%{^n&uUFV}AEzs#=S z9IJbufxZ1e#KcY4WAEL)d-L}G^r*jo8E)(-y0DqE-U1jeY)RhkE)0tpCNre1P}u4V z6yYrJh%9Dc&{GCs#)_r(Wk5mp5>H=O_7|+2LcIJtXFM+l3Q3l@MwB?`=jNv7l`uFL zr6!i7rYMwWmSiZnd-?{1H}Z)C6EX>4Tx04R}tkv&MmKpe$iTeTt;1v7{^WT;LSM2k2|6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0scmXsb<$CplX(p zipRukZdDAvq6dQrKtNPtrk+SIX5cx#?&0I>U4&4rtTK|Hf* z>74h81y+(2;&b8&gDyz?$aUG}H_kl<&{F ztZ?4qtX68Qbx;1nP+nU}bDicW;#figNr;e9Lm3rVh|sE$Vj@NRF%SQU<4=-HCRZ7Z z91EyIh2;3b|KNAGW?_2DO$x<;?ibts7z2X4K(lV!-^aGyJOKjFz?IhaR~x|WC+YRJ z7Cr(7wteSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{006p4L_t(o!|jy84Z|P|MIq`6?7;xJvJK;S8?Ju<_V5ty zi7KT5LCB#}{G><;#$WtTz!*hQl&53w5+Wig?=i;PbPW+nd3yEMVwMsBAp5@Co^Z=; z-8&5cSxIiR|1~Rg=4xclrPTwFT72aD*nc^Jvfs`*Q@aBoIcMX&|8eV_Gt4~vBW`Dd z%MniKY`tR6xmoL-^^8f$<07*qoM6N<$g6*(GCIA2c diff --git a/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/icon_base_glasses_02.png b/Resources/Textures/_NF/Clothing/Eyes/Glasses/punk_glasses.rsi/icon_base_glasses_02.png deleted file mode 100644 index 2fc228967db0b63a012d49fe2499af105e9a72e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 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 diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/meta.json b/Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/meta.json deleted file mode 100644 index f17e126838..0000000000 --- a/Resources/Textures/_NF/Clothing/Head/Hats/bishop_mitre.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Ported from tgstation github (https://github.com/tgstation/tgstation) by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/equipped-HELMET.png b/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/equipped-HELMET.png deleted file mode 100644 index db200ea889d2f25b584c445bd890b09f821cf2ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_Y7$gg0&g00B8kL_t(|+U?p+4uUWchT*9! z*^+n&4{120hcI!=5^!N^YVANNnky}xSh{&t&e?nN}RMchJyW!6*f{CrNh)88V!yj$?_l!R_ zS0JGxxN{AyDQ4d26QG3=;w~m-<3sa?!qrZtJ62nVnNtZ(uH)~{X*U?6ZF=?z*c0uw zoKo#W2M}`-kNkHG0000000000u(;$-%GQ@8a?PLIvbH@sw>`a92%$RyS?>porR{It zO6}3d&TILdV%r^Fq&e!RT^XZpRO{TPR3}vBvC9y4{FES)0tlra+H}qnpoKfMo|xb# zy#g`4`K5jowbyWHEm=;$*!#Gbe}S#n0{{R300000zyZ7g9o@qaxm+6S00000NkvXX Hu0mjf>;!Jo diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/icon.png b/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/icon.png deleted file mode 100644 index c6ae7b4821378a32f9d1e48547b8f36e20a82748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_XZ=S<{680065=L_t(o!|jyI4a6V}1#Q?| zC?HA|sVL=bMO2Xra^n6SJ006+xc>x_H VO0`As+7AE#002ovPDHLkV1f;3CFKAB diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/inhand-left.png deleted file mode 100644 index c0ee4dab542319f0d557998f14aecae9664d9e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_hz^a8v;R00AdSL_t(|+U?pqZi7G+K+$W< zomW6f?-iuaO4tTcnyeyHR+8Rziu5iiQoD;pni*+?48fV84C0=K?*r!ZXx@M%Ns=T< z+M3-G4{e|asDLhaLm&^?1E}<#D17fv!YQ$qY{ASU_q4W-@Z{&Pb4en{6 pzjr1S-vQ?tQ+z5#BuSDq;u|pcN0WQ7suBPI002ovPDHLkV1n-TXd(ar diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Head/Hats/cardinal_hat.rsi/inhand-right.png deleted file mode 100644 index d23890bf29b705c93cb5273ef0622f3bc046c6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 804 zcmV+<1Ka$GP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_i13tK2gH00AILL_t(|+U?r0jlwV##_=yG zWfn-60a$AB8BEz_hdOBk~_&J|6k+CBO4rJB(;(T>-(8FH%ITpU!^YI+3{Y|w;d0KB*DkuyZ)*8H&X*O)^6AE2z*K7 z;O_d(oe;8kmvpt`R?;z})vzS~IxLT{Y;HD4aI*Gd7s@?XxrpO$+;3Y+XPam${>o>u zd+|qo#(Tls_^Z@FaduVEo1pag0RR91000000RGM5O35Lr#7JdTVCtol4+Y20S}UxM zr6ghV7lVY!H*0zX{AVb!l0K`M6=0~qc2CaftvzO*gnG`M@1jZi5_G&LeB373>i4UW iXG=Wwb^rhXKt>);W<_)%QiB`-0000EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE5EU|`jergS007TPL_t(|+U?mP4#F@L#_?B@ z1@{m&b2FR5au9B^v&?Y}4l+AIHZwOf!9)`>QPjxD1jz!0g#XX970uW5wd#ogf6c7j zsH%RN55r(WAKY5&qbQPb9HsC3u=!P4_}lgD=VR!6RrS_dud2cGf5N-~d}IIs00000 z00000cwu#4J&xn2u58zJL3{M?%HOOFcg{W5?d24_a`Q~*+~Pt$_5!AUd{eiQW{EU) zEBixkzVUpkvhdRx(ku}Xk?rni_}Bmd0000000013x&w-SRuHcQj`08h002ovPDHLk FV1mxpJiPz_ diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/icon.png b/Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/icon.png deleted file mode 100644 index 8f4d7923a4cfb8774d5b08fbf1dc625e436747a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmVEX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE5DpB>+EzaR008AlL_t(o!|jx@YQr!TMelo( zt<+0bgNMdYZ6X=+BmIMXlmEmY;?+~KWC~>SQt*=7p-pLNQb@6ykyD(K*MI5>@qwTtuj<+^kp3RoHjUbOGbg zvhNzI>P`9O9Gqw0H5`YQlTN`nwA}9w0D$NCg#GUD>mD9oWR@|!gj|yzPXm^5EB3n? bhH(#XR~mRF@_^;E00000NkvXXu0mjfCd@@o diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Head/Hats/kippah.rsi/inhand-left.png deleted file mode 100644 index 8626bad7b92de8c6b5e026f3ad070a0862469bd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 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 Z-UmzGv|B6dWvT!G002ovPDHLkV1h%ZbU*+A diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/pilgrim_hat.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Head/Hats/pilgrim_hat.rsi/inhand-right.png deleted file mode 100644 index 2849f2224eeccaf34ea5a4441fdf2bbddb3843b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmV-K1H1f*P)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3>i53(R>I100BTrL_t(|+U?pgj)O1|1<-F4 ziOxkDL`Q>s|B@4M2pSrM+_B7IKghb|pLeUk6FdjF~_&0}v4r5fKp)(SM_2 zC#$O30YGaF?>zv(TB~wN>Yex>u^%^00{}3_pznM6XwP92!uXwY&{|){U%XnVEK2}D zUDx0L7iimdmr^mtU|rYa3(h$Jz_x8zmIYE;!!RUM4R_*K=dzJS#5j%sfO(#ebKd); zo(bpprFz9QO(=>Y8ovs6@%emSUdTC@T=IA0SFwe{V=1j%-UPYFPeepSL_|bHL_|bH z^k;5&N~9Mb%BcgR?j|q&cj?O+W6*V7Hk(lV#v+pZxhwnC6%dZ0oaHoD^HG4(fxT)+ z%V0uEgA_53Pwu=VE=h(h=<_onb#HHg*7}$liIupu_T}4wh=_=Y67mE3XsAF9n?j)g O0000EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_G>|OPP2800BEmL_t(|+U?r0j)Wi(#_^AY z8fyyQ|G_M*@ddof3*kTo(Oq-@U$>hz12e-~4AMVmS|0M=ukq)3p3PemU|Tmo3`6|& z`eYK)0$eGAtqmke<2Xu^mSs_tj7Pe{d%q^hzf=TUQDr&jBuUdW{dp#{s4fX96(L6HZLiEZ{SLG zjxK0yw&`%oaMadj+d22U(R5C~Gr6s)Aw@mIUOopQ@SBpXq>7a`)B~ zLg;fppk_9I*PmkP81Aj5O9vdC$8UKHe0n_q000000002Izz?nrxbRWY_RjzS002ov JPDHLkV1fg0ZuI~F diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/icon.png b/Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/icon.png deleted file mode 100644 index 5264c18a564f4774d0e082163aaf9b4eae9eea59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmV;T0$u%yP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_OwQ`p?4v005pzL_t(o!|jwi4g(1oLDYhyVcK&+y5ioOA1~yLr%WCwq3*UMqj@|sOnT~X0*CXM99p@-I+IsYg&nD zo8I!<46ND^}fjb6oylaC1i008(oFAxVu7BlOwJ^%m!07*qo IM6N<$g8Ek^vH$=8 diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/inhand-left.png deleted file mode 100644 index c61ef31d5ed111f42e4eab33a1c24bb392968d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-ywP)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3>h%=3iLVv00B!$L_t(|+U?r0Zi6ro2H+nQ zF?wM@j0~1vg(v475CaoJ3|=fI576l-iV6)Sv_SuFH5cW=oip44L_|bHL_|dN-vmc| zXp$r&04Sy4oC5%KT^IaT{1%TRlFzaX0AP$kQ514CzLLZ|-dYQ#)Ta2Y!lOzniXs3& znx^+}0j>2YrD}|U_kKFF)&c;AVL;#akkYQIDtK4?pSOT>4pO$>dl+M;v%0PU0Bze& z+$*RidVk)-gqJ+ zA|fIpA|fIpA|hIFsY#3M4b1JG7Co+%e4ghh%M!rn)EGPW2EwbAtW1u-8>HT<1?DR= z&-Sj+oc;%pY4O?{mv;Ec(!}ZS07+buoR7<;BIFt8+~)frxJvo2B{px7cdgD45fKsH Z-UmzGv|B6dWvT!G002ovPDHLkV1h%ZbU*+A diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Head/Hats/widebrim_hat.rsi/inhand-right.png deleted file mode 100644 index 2849f2224eeccaf34ea5a4441fdf2bbddb3843b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 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 diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/inhand-left.png deleted file mode 100644 index 5697682bffd0c8685179424d2cb0476e562e187b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-ywP)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE5DF&)3Tk@*00B!$L_t(|+U?pgOT$1I#_=aX zyd)rELx&qOxj0F`K*xTVZc=b?a2H&h{Z!)C!O5Y6=%`7D#v!I2B~_cWrh)$t3MKF! zdEdKC_ecN$00000TVQRHTbtyo|NpCg6aKCi4os+C+|L6Owo>2P0IW^&z=Sd;(#>@& zVghPQYZGYBZc`GEQr+VNA61&(+(;BE7huo5MhoG?1rrznJUk zWuT|qVgQeeg&tIFVm43p_WI)eR`2?$zV!i=O)Pirs~J}||2_#-FW@+YZrcAzr@ z7!9Yoy6}}{@5^W95C#ptWUosnpv)S$n&t-fegJNGVx2NOQ0EH06DOc5FW@3O0000` Z!zbs)c8dJJ+FJks002ovPDHLkV1oZDc>@3d diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/inhand-right.png deleted file mode 100644 index 05ac0d22f754edf1e7fd5532844af70105d5f77b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmV-n1D^beP)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE5DFhF2-4*M00CV|L_t(|+U?puOT$1I2Jk0` z_}&FXZ0L}olY>qrU!Y?@OgAYwIJgU4oc&bA$qtBOT~*ZN@>XLy zDhlvCpJR-ofLWg6s1_cPWOi z8Hk98h=_=Yh=_=Yhz_n+x1_4$I-9+E)qzoU2hd_xHs2Ohs5(!-TznuBE;lU(PmkC3 z=nIf6-X6CHpJku8yHV)(Cf>||lfT|j_TtB|NU{{&uYBeFbOZob0A7ywBUrYdtNQS+ rCN8Ep=wG0!5AR}6o`{HusKLGg*lTXH)!aXC00000NkvXXu0mjf_G^Bg diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/meta.json b/Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/meta.json deleted file mode 100644 index f17e126838..0000000000 --- a/Resources/Textures/_NF/Clothing/Head/Hats/witch_hunter_hat.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Ported from tgstation github (https://github.com/tgstation/tgstation) by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat.rsi/equipped-HELMET.png b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat.rsi/equipped-HELMET.png deleted file mode 100644 index 0121cea426a2045112f0d8767fe5e143695f7952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1073 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 JPDHLkV1k`%N5}vG diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi/meta.json b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi/meta.json deleted file mode 100644 index e10341e615..0000000000 --- a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_blue.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e | resprited for acid raincoat hood by erhardsteinhauer", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/equipped-HELMET.png b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/equipped-HELMET.png deleted file mode 100644 index dbaa85d347f8af380ef4c973714227fcbcc52487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1096 zcmV-O1h@N%P)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}@APhs-15f|}02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00JOML_t(|+U=S#Zrd;vhJOcH1lUsmLmMYg>Pl$R1$2Qd zopKBh9*vwrQ*IDI7tlm#wWdsLJO~AxMTWh&K!=I~y3o?42qyV-nto`@=Q#kJ?EmJJi$x+}lK-*YJ(?q*=Q2tnh(tK= z{wDdVsJg?ppUO!Bgp;sK9>5a72EfLM5Ki2V0MqSP^$Ou6?2c8vde`o>2DEJ2&o|#y z+a&w9c2@$t0nq=$&tP8xu>HO*&G%p&2p_?!Odaj&rp>hgB>)NFb!y4=#e_^W51!0T+G;=LBIdNUBUp*S)}g`|(5E32_(R84=v>4>&~qQbT1* zu5~k8>t^P1kAO%7j31RLS-;e0KeM+0=Iyt;LS_IO0E_Br;j9L<&t3p%*1DPLLd*T0 z=tTgtE5l-kU(4l74~2W#`r7>=CU-^f0NXaOZyp3NJ}xrWZq6C|M*@RK5st;;b{-IY z{bD?pRvidE3efFXYfq(BBis)GgE0b diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/icon.png b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/icon.png deleted file mode 100644 index 39e6e7a678209710bb84831983b245c759dde67d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 775 zcmV+i1Ni)jP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}@7Y;q%!bkuB02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{007@fL_t(o!|jwY4#FT9g`cJiNxKp@rcTbrsTb%4yo&Jv zP48pE1sqxJ0f-L9!9`P+HgPG&bTHx9>hgaJ@PPll5CC8phWRry%BECj=dpHoH$|zH zP|S6q?V?ybwPxSI!JR1~5~{hW%rfZZwzL2&B}7yJU1$XJ-gkA-O=UJi2sG{xbprF4 z#VS{?<|hCxfVTHtZ7Q==xtjhC475Xg{qz-316%>PZ#+Y40Qifyp)aJ+)H?IX^}+Nw z(vPG0=}2|96H=^SH6g`1)!FW6-=~mb^=`~C48t%nJOH)`M;Sh2Pptp|002ovPDHLk FV1n{bOi2I$ diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/meta.json b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/meta.json deleted file mode 100644 index e10341e615..0000000000 --- a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_green.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e | resprited for acid raincoat hood by erhardsteinhauer", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/equipped-HELMET.png b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/equipped-HELMET.png deleted file mode 100644 index 75ef2facdcd2479a606e806ee63fe187bb843b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmV-g1f~0lP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}@ARJy`6Epw-02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00J^eL_t(|+U=S#Z`wc<$Nxl;7}zS|vRGa~Vvnp2!6Tm` zs?;IMmq21*MCD6Z9xC+%WMm|nEN>Z*lEpOxp%P03X(fgZ@w2WJ+H!E0s{DVF1%8M9 z-uwIR`NSPSj+>IsMQ+8LuG_LjTC)}OA^o4~IB&T@eBKNS+wFLSn+#JMBIL=(muFXn zElNVT6;I25NjLeyuHxP;&_}- ze`+^c19F!6=iGMHmSq3dZc2bTfb@TO4eAPjuis~}e6N-r&qlCO5^nA4(q>wK7=RBT zTYn8J?Z%J_A0^@I%|qOZcU>(z7pkpVb}rnCcYQR|$77bK%3^iB5y_32-pT@^yS zeNz(=%fb7apSm9;4d}5(+PjX+YKg49N2yWmx5A2Ht0mR2a zmgGr1uK)l507*qoM6N<$g5A&b$^ZZW diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/icon.png b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/icon.png deleted file mode 100644 index 3ef3eb524a613a71151747b54d7b74d3ef2fba72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 zcmV+n1M~ceP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}@ASD51n>+vj02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0087kL_t(o!((6=1*2dTjDi6MjO1vN<(7YeF828ALkV)s zVj;(J8(G`a)*7~Ov7hSTIYf+Ppn$l5Z% zEdTN6dk0Lsb9Y+>)DaBJZ#*O^1ei!stRkk0Z21!g28M483=H3X{Q2I|xx39&MNF0U zX#fhoLFspt<^pmZ@Q#6j;UP7$A-N7VL$X&76ST}+-_bC^g}53}?!dNF_|PdgyX zEx%cmT`U|~Oq5+LT$WpYGu?_$QFbwNeEd-`3P!;w7zLw%6aWChC`R|&9Mh}-0000< KMNUMnLSTZOpGKqr diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/meta.json b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/meta.json deleted file mode 100644 index e10341e615..0000000000 --- a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_magenta.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e | resprited for acid raincoat hood by erhardsteinhauer", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_yellow.rsi/equipped-HELMET.png b/Resources/Textures/_NF/Clothing/Head/Hoods/Coat/acid_raincoat_yellow.rsi/equipped-HELMET.png deleted file mode 100644 index a4fc8678701632b751f9e2781a2257de80f7317e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1109 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 N002ovPDHLkV1hA(Bennl diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/inhand-left.png deleted file mode 100644 index 63be2a0e52d8c4eda4c9dba30ff50366c0b84b6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 995 zcmV<9104K`P)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_z6ckY*kL00G}gL_t(|+U=S#Yr;SnhToWI zM39ahgbMA}#ig_2;MVRP{RJJnbnYMM($%ehpqqnKD0Xq^(#aMSEEJ(og<#Z>4!wjl zrZqINdgOf|gnN(g$oJltyTAn?gb+dqA%qY@2qDQrS;wIDT+a4u4Z~3WD}JK})N?ue zK+~|Vs;>58S$JM7LM0J3exn9B55K3XXql#~S9KkO5J`CB{S4M*f)?jszU2Fk-ZIT% zRo6qu1HhYQx%#fE2AUEFsW=DIzmj#5?*JHytKTwBtg>Kg+e^uN+fM)1R)B|*xc59- zF-)L8`BnP18qfpK_Gw390zbqo?7z^2qA&|{TlX3NeI5KaV=ASDe zC4&K_bQ%D<0J`njEY`zPDGa!rOcVe&0A2xfALnxb@f?^+VSwNPz#V|8SA1G5l3~E@ zbb2pLc#m^jnJU0B!6lBhKq>EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_zUWOYSTH00GNML_t(|+U=S#OT$1M#osk4 zfk1I|5G?5C;^J)S(9zwopTN<@*)QPY+RZP}&7oM3cIn{aRD}u^q#(3~kko{8Feyix zSVKGH%=2sVYTdGOKlN4f zA3?CxcMT&k6aXlxh4o`LGT#F*39nJd^N{xlTq#$~t98_#Is+6Y;eDuRRUH<2byx&`YS#^BzDWT&VAr z9W36~a-8%4E@v|leniv&+$c@8byF!%GazZJJ~GX}cfM)c7r)hn5JCtcgb+dqA%qY@ zG-czH-lVg5K%f5;n46k!q@Nl~9YQd-VO~9U>Mj;qy#l3e{m@j($ov4n;J92aMgY<1 zKYe{g=HCI_UC-y@-v{vQ`*Fzy@BpA+xK|+L6F|T1x{rkkAbw)3llhGTP`9|Lln58S xv%-A{0l-zIBBO<{?YaU*A~LTlB@j|*z5yPi$r{FTCWHV0002ovPDHLkV1j3ewbTFr diff --git a/Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/meta.json b/Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/meta.json deleted file mode 100644 index 45fb860ad7..0000000000 --- a/Resources/Textures/_NF/Clothing/Head/Hoods/cardinal_hood.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/a75dee2e6d236612dbd403dd5f8687ca930c01f1 || edits made by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/base_halfmask_01.png b/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/base_halfmask_01.png deleted file mode 100644 index 34f8d2af0e21a70c4fa979a30df54d4816f59be6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmV-_1AzRAP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}00042Nklj5Vb&{mZ<)TINvDOCfeTd0;?}KwLNRszHSZl+Q1+dok@g5at zN__K7@H9TKewAhVJRZ%T{9){hqW{dSwc*h{zf}ML000000002sEj``DjP3EUUi{Q9?N5yD zJ)9dj91dpD0t}OhZSwtoZ{mGj*IKdw!x&{*hS-{)8q>^?P@LANs;Y07&s~J!e8P6S zl_b4-cuD$rC8_VgeM@{eE6_B}tZzTgAEarjs;cgDcn?d@2n^>D000000001BiZ6SD Vx+W%q)a?KO002ovPDHLkV1i76hvxtQ diff --git a/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/decor_base_halfmask_01.png b/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/decor_base_halfmask_01.png deleted file mode 100644 index 22c36e0840bfb8dc5a6018cbe0c8f6d52ba39a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0000`NkllASgA?<@Ed3zqyt0000009a)JCm0)b4WF7yZhzg-o7S{mTzK~6*u1fp>=Ixt8QK$k&we^|RwvB#vYp)5|?>(~%-B7MZyYm!-`!ojTx)*O;;Aq32K!_xqT0?<;&O``$j_JYtM}e~>D-lT zSp%kQ+@VTqLzj{^l_GNo|R!h zL0t3jLyu?EUy#;~J+Qm645mf*f*OTps6uZRMl`n6U+(L(7S4s9Z@FY{RpAO+Nvs{WVyHIR*bg@nFE@Iarv(`5v;Jh19}nE8 zA&gF|9M0&+o)p&9)~|#lZ3|Kj)1ZYcbK`EB{hK)&x2qZ>X5MQ{4&A@ptg5p_{TR5HWPUT9Y(q#V+ir=iPkr%c$e9<7Ev@ zKyaz$JBj_Bcl`*)G}jiy=9E zM~u5-%I!|?4lCQ(fx0_GTB$*EM_hROix|k=vsG%OoAQhn(VDc8x_dtH7fzFfk;Ra6 z*-VY_?yW_8P5OBrwQZH9p5Znr$Z})20Mq-XF7m}behEs)_wm}ihH|f7lN~h&`BM+a zZaQ?!KVzjXVanb%u3mQj&Jf#vtvJE+THES$RBC%>X6Txx)F-8j=Vy_gNwORkG`qm^ z<4~z?Zsr6zv-mIJL?8oX; zP8>9WM;kl&rb`lTpErq0c^YqV6W+fi)~s_|HS|0ygK2pO)ApiVI?eMb@t%Beo66}H z*NSK|^eNWxSc(396`HtI%d1G_KGgUraa}sOs4%RD`JRXtKNwi-7#VDpZF;{dWGLOk z?HN>p*Z|+~h@Jh);K1Nst?Zq-^%%P#Ew`Z-KkL+&5tt%_1jweWj(;RoW0DDUN=$X} z$GG$>q?X!(_x-l`szj0be5bgVKGU15bJMAd&2x%mMIV=M19L-UkZ5r(r7AMPJ~+H$ zUTZ=QPyb%nK5Z}AbGTY*TU|ZPy7h2!A&z${cM8>G<1VO%ff%#Yf>y_*XM^OAoMI7v(gpYNu#~+fT&?(>Kxg zC(Cl(w6zD0$xzLyLB;DgcI%LvmRKc-9gUIi+z-|5_FXAAN#x>GNDpt-yHsmh1U{2b z&kTr7Ecc&cFF>Dghb7w_tvG80$LFcb5)D-@`B+wj*fx*W7pxVutX%@_%^mym#pX{o z-XUvG=R&OCPH}SPyX=9%2r5V5@%~n6RQ%};K`DK8z1#ld*cnj4AXzQYiDs+!~WqlzmQnNg)!+zU;pF% z{XX5(v&6j_W2$fLa4Mq*ymyX$$~AaMYk8)>Nt(T%ws}X{Qi7N9C0A3ETW1eiRb~E1YnTKYXMQw<+>6v?}YftgM6?3{ibg5n_KKPUB zJA&;E@$zlG=S?6Gl@yM1kQb)(%Z5Ef{eZqPg*0SmN<6N>6up&+W6J`D0@cwykKNN9HSM2xM9T z2YjRmqWO}U0-gh%C13y!a-I-;RTwVmW-kbnnB=ukP2%NLX76qu5i4BjiuNElQJk%UuV zK{S7;yFdg$aSk{K6v9)^iNwI1wV_TT7MmR4;Wa@4wkWVLi9|?7B4sj}gAD5+5QQSq zBoYaU!XPmi1c*S0qxcfK9Kjb`DJaG{JOD9M#1Tq30zOp1NoNS85(*3k_CqJg!Ct1P z95hY@P_&iwVhIaL1sgbUJ|F;zL7|8U6b6AIAt(ETy)@bvZ@zd!MNm(qoGwJ79Z*Of z?;8)X#53}1yub7i2ZB#_$N)erkcyaqXC%OvSWONp6J6lSm*H9fwB{87Kk*$8=;m;;?i! zfq+(0Db|7P=1---Fb?D7N{c_2E@2BqJg~ete3n2a{t6D{@PMTfxOUjb9;s00HnMa50j+yZ(iQrUDu{vG&V zn3jeKWc>e(=PUFJi`PX>xdvR!Kwg=bOH{`X5tAX$8Xui0=7g(7XfaeU=D!m3>KGi zouTlF{ImHMFAD<{$%Vq;5GY3k8W)JclF9+` zQDmwj5tmAZLM{goeXG;wy!n4{ll&)g^xwHphK+l>3xrW%6^BXuWcH9;jA98({ z0^bGxkzGIJ`Yr{&3;ZLy{%dk+e|_Z!_~3J&41A%EKASQGzKm-y7I}L>4nialNS6JF zM$j@vxNxNy0?`BS^%_-j?exq*qo#yP^VA&F&@-GqCHmFnRZ2>v>73%w-; zYN*~mz)eU(=<8@l`#i;eQTGKHc23(Z#eRU*d%kYIJPjnAxaJu% z-%CG?#f|>4YUJh6V~6PtPo9tH_sse@ka@2(XU+!bz@2NE^9N4pCza$JrKmhndE&FA zESHf{QfZ-APwJ}dG-Q^nvU}=NHmp`qnw67%xH3mPZ)nW%_?D5lR?_y$ypkMA-f=I8 zO=(%DPg&)?dqb8Lod-I7Y)W~%C?PA-7iifF67^LwuUo$xp8X z84nBlf(8`R|8jlQJhJ%Qd8v1NWBEtZzCkr7{B6q+opZ(=q4QO&e!m>4bwjlmv^HG< ztqF$=P%|2QHzpt;3MUO>$GGwNwZez`!bnvw#}J7YB=v)8l2&~MrMBNs5ryix*yG58 HkfeVCOTY=8 diff --git a/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/inhand-right.png deleted file mode 100644 index 9853f119bbb0b9b40e775da2383e525170e2d857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6468 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 PY6RVLp+}M1@}z$Pz31q% diff --git a/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/meta.json b/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/meta.json deleted file mode 100644 index 0efb71fbea..0000000000 --- a/Resources/Textures/_NF/Clothing/Mask/punkhalfmask.rsi/meta.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Resprited by erhardsteinhauer (discord/github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "base_halfmask_01", - "directions": 4 - }, - { - "name": "decor_base_halfmask_01", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/equipped-NECK.png b/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/equipped-NECK.png deleted file mode 100644 index 9665ec9f139b377b996c104cb27ab6fea98aef78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmV-x0+juUP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF3OXRpPS-R5003u6L_t(|+U?b`4S+BV1i*xS z=&2BsFc>Sa1fpgLHVF$L1QJc+yUy+szwDF%0N|B#9mW002ovPDHLk FV1n5E0nq>e diff --git a/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/icon.png b/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/icon.png deleted file mode 100644 index 18ebd2355e5561ca36dbdde7fceb6f6726abc13d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF3j!V)avW0t00BEmL_t(o!|heSOT$1IeV4kp z=-5(_E)J*8<;YOF#6KcJM*ki=$5GHBZjN7?M4Vh4pM#Cmv{H}Ur55tw z2+8;5-pluW?*de)P+`pwx-XC*MoR)mfDrooX%Tbywc zF}YRQ-12003<_#a{E}`~J8y1t8F9IXJ&Ov|9lH7~It{ecYLmKcJsT0Dydc-^>}% zwqe%e^mQBaSKZ!k-rq3ahOV2U(Q?pr(?W-lC^`#8%3tAM;1hb7$*ex~R0aS5002ov JPDHLkV1gq(cfJ4s diff --git a/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/inhand-left.png deleted file mode 100644 index aafa405e09f8ffbf2388c8b24240b0efe7cf00b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmV;U0$lxxP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF3OYAUol^4v005s!L_t(|+U?pg3IZ_@1<;KP zHdcz@RjkDOdIn*!v+xccKv)~=*rtz>iN1G$4>JsD@`nKc0001hI``8)N6srPT7*94 zSLnRv3)rq#q4P>(i_qO>`8?m|Yt+2v^5vK#=ao{+;nQJC(ehltHy%L%0000002-+6 z4s`!BRNEcsegU=JfwA`mbk`mDwA!EJ^ee-6(;bL*0r~;(-`-bSJbs?*l?(s?002ov JPDHLkV1jyLC9MDe diff --git a/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/inhand-right.png deleted file mode 100644 index b22bb73ef3e4140b7332f14fde931267cea1be3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF3Ofb`SYwC)006E@L_t(|+U?pg3c@fH2H>Uz z7bivVDo)~kJ%do(9K3@E5bEMwXCYuiD|&VgLXD diff --git a/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/meta.json b/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/meta.json deleted file mode 100644 index 9841a35335..0000000000 --- a/Resources/Textures/_NF/Clothing/Neck/Misc/crucifix.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken/modified files from the base SS14 (used bling.rsi and bible.rsi); edits made by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "equipped-NECK", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/equipped-NECK.png b/Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/equipped-NECK.png deleted file mode 100644 index c0f707457ec0d2ad1de206b79980ffa7b932f22e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmV+>1KIqEP)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3j-wWu+BlR(>wSo5!Aiyw1-N_*}e1m7p0%7ld&dvybj+e#IW-J~aAlm_gtCsllQ z4Vc>&Q2z|tKOkM=vu%PV4gdfE00000F;O2a)p=zeucxfjl^kxTB!(hi2wiq07*qoM6N<$f+Nad8UO$Q diff --git a/Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/icon.png b/Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/icon.png deleted file mode 100644 index 773543b47df3a2b3fe6831af636c0c48338e321f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 820 zcmV-41Izr0P)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3=}yycrw!f00A&bL_t(o!|hf}3WG2Z9S64+ z#4{DIBiL;Ob*tcYq*w4Rg?8WRDkV+Re8$*C>wx%8-kUe`1_Ay(67Iq}uSkD3UZ&(L z1We#uGRYR;Atcfm;29oX?yvWo_nx?>figV2fvbdk)WS93YBY0ieZQK3Et_WUp(_O| zku;W{RRu!GAh+gvqjjY)0=xPEV_2^%#Zv+GI;sMurut;J%}T&^icLWbmEV?ii1e!z zu#MPe?q7(w=0O@$a?UJ3ANhT!8Yhr5XzIKoSq4*2=w$!^pam$1fLx$w@3Nyh527ld zZ%7N!c$t#nJURP7|HhlZaGs3Ta`l9X#OYXtxj_0__jgwc?;j4%TzHGN5JU@*JgbK+ yMV(j1_v*T~5ER8W`i7eWhAQ+m;63*EnRozK*UM4+Yx{Ws0000EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE38?MgqDm75-=BD&0X|2LkH!`O00000002&h^k`0X6R^AACbK6Mvk|SFT(kzv>!YZg zYM+2rPExvwF8!psiI$L)tqCRN0000000000fH?LWfg0*WS&g~ilQcS2ou66U1f-q< z(+SA2$aKLUx*;%YKEX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3gg zTwZKz-eKDl@Fz*$Hp%+BGn?e<6HJ=7x66Ca8vp07*qoM6N<$g7m{f(f|Me diff --git a/Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/meta.json b/Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/meta.json deleted file mode 100644 index 276ae36807..0000000000 --- a/Resources/Textures/_NF/Clothing/Neck/Scarfs/chaplain_stole.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "equipped-NECK", - "directions": 4 - }, - { - "name": "icon" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index 7def3536535e782b8980d2919f9da8f5a50bf943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1263 zcmVEX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7ZV+~e(hBN000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0008UNkl6Xyx zz)ldhzQX1fEG@Sb+-CoRgMi%@S1njFf^EW|EtLeopDmFunP(1XT|adI>}na7>mcwM^0pbC0bt=x zqz6DauUp1lo~LE4zogPAx(?pD&zg$*zt{S?wDnhXos*pxXWcTwl8{~hNdd^(2Xa~J zPdFMq?|pXGoMhC$*zKsZd!J?Q1G%*IcPRr@)PJyM;UTW0pG)ll08r^Rc)SaX-CuYU zO?D8PqaOEXOW4)&NoLs9GTxtFHK`d8--Y;n6}&&aYRyrPi?kPSrYz29%7CPwzgZV2 z2!bF8f*=TjAP9mW2!c>e>OV81GPFz?OqETUv_SwT0_9uxS*vs#T!k(G{Lv;B-b53Q z3uOvGYJD)ZHaH!Q!-orzqS9?}_uE%EtvZ*T6>V?8k7_hu{rm;HTE^aIpFHP?iDtl8N}cemWd$m2QLos~+Ib zmS-~wVt(Q70hkWQni!6Z2Szj_*+UY?XNL|ZIhyoZR6=vq<0_^_Rjor11VIo4K@k5r ZzX5}`tOo}Rx`F@z002ovPDHLkV1lgeJSqSH diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/icon.png deleted file mode 100644 index ef7c22e953b092d399ba14016faa125659be9fe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 858 zcmV-g1Eu_lP)EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7ZWvt%SEpM000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003oNkl`w%Z2Hr!idqmo?U;rfAT)}DwKRII8wpUNwr6w3XZYhm@OB^ z_sr|i1hiE6YrHa91lV)} z`TpUZ0Gm#*U2pzT0`7btdIt!jXjU~yMloXk;~4ZW$g9GLdD%ZWuEV@43;@`^kNcyL kSB0@;A-#x*h=`x?1=;SvmRImSIRF3v07*qoM6N<$f>>UDW&i*H diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/inhand-left.png deleted file mode 100644 index 0df4e47e4b25d9ea5d3fff97f5e85abbfb549363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 934 zcmV;X16lluP)EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7ZwjWuxMBS000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0004fNkl zDC8Bg_Av^1i$M3TnNuiq3luUtv>+%r&{drjRM%~gauPB8-xM@lq|@mZ9}xfm00000 z004lO+xt81vVP2TG1oEnop1#j)w1`nqgtNz#jz!zZB*}J+eUfE8&m@JJN2t{r;E8Z z>ptaw^RSkc z#gFRnjT;hM0-BdMva5iI=>2s|r#yjf1)OyPx`(%K&nF3aC5KZ1o8?N3XA|9Rh~~G; z`|pbv5^GcG+qCQ9|BH7@EC2ui000000001h0pprSNQRmKu6YFZ1jPEH!!?hP#3;)U zxaJXpJb}03om4$N;NI5sPeOgCrf?V?m ztWUr$%h3LsM{wOk%H5QR!hgo*oJSCxjVZ?Ak2PD&5CDLSZ*DuYewjAh*8l(j07*qo IM6N<$f~3Tvvj6}9 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_green.rsi/inhand-right.png deleted file mode 100644 index 936ae845570a79b34ee7de54810acf24579a9401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 908 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 JPDHLkV1m`Ai5LI? diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/inhand-left.png deleted file mode 100644 index de7e7ee846d0e0f45afb0fbdcdd5093f41a21ffc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmV;S177@zP)EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7aSI+G$;}P000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0004aNkl1pw6vpvqlg&7UfS24RCuk0ksV68I za)?enLAUJf33`Su9lMlu{MjV*|C@q_C+X=)1pLeZ000000DvHO z*H@L#_+K`wWi`aQV^yGRlD2L(o1|xbaIysCMcKO9yeNa?T~q?LyZuq=ZdS{x9uJAv zjMYa1B1Mq(VqVRrU&#n*!}Hu|J&mA z`36V>t{3y8mpWwgr{Z;q1poj500000zy(wFBgB`Q098LiJk-gksrnJ53Fy)f;7iqy z5UCRo(huNE*^dw_H=m`+U_C)~Kf=LS!2BcSqPp}0_)_&F#OhONe$wvCseT0C`DGPQ zzrKCnf3xq;EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7aSZ%;lT_5000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0004PNklZq}6oBDJlr18vB4x>Ka)M@Wryik0 z4#80M5be$lI763?U8JSU*P?>6hUe6pfC8K-$EQJe(6Ccq}%vuD6IT%FE^E4ijKU`)Krz6&2;KccHZ zMC9}P*ZWsM8xwDD1#~yxRK;$yzN&wKp?HlI5XDJwJnU zIX?gD-I#rk7XSbN00000;H_Kf8PFCsH{VLnz`qmVx@X`Lm1dOy*F6K>^`|iUvytnb z0logi%Uj^=3~<>q(5ydY6)bITcHJ{zT7T9GaNRR7_2#V-5XDK5=A~ps)xPt3eCf~7 s-SuZb1odHL3U03d?Ph(x`vaK5A0lqnYMvHv#{d8T07*qoM6N<$g2c9%ng9R* diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/meta.json deleted file mode 100644 index e0d437b8ec..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_orange.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/6665eec76c98a4f3f89bebcd10b34b47dcc0b8ae", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_01.png deleted file mode 100644 index 3814c619e570f486cc77c165c8d193a5cd0f2de6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1203 zcmV;k1WfyhP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0007tNklRZv+?A606`E0K@h}$O5*dO zrfHV8ZIfr?&{S2mFvjdyYmMvm>Sh1n6Flb}bzLt2P}lXsIY-kpOU&TYG_@CF3{_Qm z*+1_6fKm!V2oyzuVHlQqo*{&YR6!JW2wxEW_z^!aUE&^W5IYag34x6FleKJ~I;$d=u>Zei1@EWZx`}q9{<7Ww6aK zg#BF=FijJRqPUy+_5Gchc-6kvdNTo9YcKo9z3Wd1VGXVCN-1cqgRg%x+v_AKrM&ln zqOt4{1VIo4K@h}0&Nm4L;9fv9 R!1(|G002ovPDHLkV1kvwAQb=r diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_02.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/base_OuterClothing_armor_02.png deleted file mode 100644 index 41c9b37d2be5d03b77ef94e8f0aaff21c5c1b327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1021 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 Ef-`S&GXMYp diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_01.png deleted file mode 100644 index 13687c01d443662542182aca88df1a8571211809..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 zcmV+#1LgdQP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N>000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0002-Nkl83Id4$00000FpHUeA9nLO=ZJ{NIma6cf4)91 zb7M3sBoQekskKVq_sy1tSJmHlcb8!po?id7*ORBJl2Te6r(GJr-KEwl?!IXOrggin zTeN;7J9gW5<{WEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0001UNkl8k39_Eh)tba1Wp_+gXuM0aEW=Xs9YuBqEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0003hNklB^k%DJ2Ualxu5r(vrN5m4;IZH}Oa?YnF zU~Tt)zaMJ9lMCCfJ9~ydYW$H9LY3X1R@}aHz+o7QcUD!cM%*e1SeB*A=&BXB>cVt| zxBvhE00000fd4Lp@Yd|dm##tFq1E?FJ4Gw!0b94lCeH)gIp6H{xvCnq d0{{T*@&#xqx$-mx@)-aC002ovPDHLkV1hHpY&rk{ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_04.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/decor_base_OuterClothing_armor_04.png deleted file mode 100644 index ea268dec115d9aec78e167e5a40c77a04849a7b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmVEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0002fNklE0_O{N?rQ_s~?^blUc z6vUrU2@MGGK3f#2U+iX!B>(^b004jua?bVH`j;Gg3U_x&s-=`E=Um%bl1eGl$i_#6 z=6Sx$NGVk_dpZB`O1Qf#BDAinBI10Yws!Ynx1r^m*~5J^>&oAJ16rYyv@FZjUq~rc zN#{n4aM|dd{av&|d-s1m9{>OV00000008)R-EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0002fNklEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0002XNkldC#ms!(fEeS? z=~5}B2><}TBk`=?;jFr0WHB?7ob&KVtg0>NJY@)Bbio;s_=(!C6Cp_x00000003V- z`w8J6nolXceuvyvZ+_o*x$j%9>)PDi05j`q9smINwtNzNb`p-`@RbBrwVmg=#Tcd5 mDyuGQcPphdx6K0p(B}hqGh!;BUUQBB0000EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rle{$WWau_=Px16^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi`@MHhM?AdGQ|nR+6bkx9)Fhls^u8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4Cb}vG}mbkA&x~Pkc0>sRcxRP3sG7%QcR?1Kjz^NJN_iOWO8kQ zkz*besE`~#_#gc4)+|g;xJkhn(D`E9AHzUk7iiRM`}^3o8z+GO8Mx9~{z@H~`6Rv8 z(jrGd|2A-O-O}Ve;Bp5Te9|RDawI=Zp-=$c&*+_CX>@2HM@dakSAh-}0003NNkla=+f zZQkGyKnW#Rd9}Iht;mYg=_IDHWD92OF$pj*Ffj1PnBF}&&vX5rTi12^bphV{nsbJf z@>JvevMkN_eq1Ft#z1S0ob!oXYYk%zy!W;B&d;k8NGXAcP)a%EODQ0t%T`_%z~t6i zq?B;G-R?1j03v#7PZt3>XOvPPguuS6~N?L>qF;{@tHl{1aOB$bm;ss zvdDikf#&z>oU1&6R~>S_l!9&Brfw5ZN+HJBJOQOtUkjMLbq8XM{da)h_p9%K5CT%l z<~_LdFL2IPYb`n;Aj1?OC4vMaTLfq{Xa@C9x4*`9nK#gPC2002ov JPDHLkV1iOha+Lr8 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_02.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_02.png deleted file mode 100644 index f7b597edf1e0f6ed8320542d2460110daa71b87c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmV?P)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rle{$WWau_=Px16^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi`@MHhM?AdGQ|nR+6bkx9)Fhls^u8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4Cb}vG}mbkA&x~Pkc0>sRcxRP3sG7%QcR?1Kjz^NJN_iOWO8kQ zkz*besE`~#_#gc4)+|g;xJkhn(D`E9AHzUk7iiRM`}^3o8z+GO8Mx9~{z@H~`6Rv8 z(jrGd|2A-O-O}Ve;Bp5Te9|RDawI=Zp-=$c&*+_CX>@2HM@dakSAh-}0002KNkl#wB4K z#}_BI^V>5}Nsr5Iszn(3Pbr79JXsy55fovodp`@VtWIF9pg ZJOK2SV}PDfwg>?P)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rle{$WWau_=Px16^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi`@MHhM?AdGQ|nR+6bkx9)Fhls^u8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4Cb}vG}mbkA&x~Pkc0>sRcxRP3sG7%QcR?1Kjz^NJN_iOWO8kQ zkz*besE`~#_#gc4)+|g;xJkhn(D`E9AHzUk7iiRM`}^3o8z+GO8Mx9~{z@H~`6Rv8 z(jrGd|2A-O-O}Ve;Bp5Te9|RDawI=Zp-=$c&*+_CX>@2HM@dakSAh-}0002KNkl#wB4K z#}_BI^V>5}Nsr5Iszn(3Pbr79JXsy55fovodp`@VtWIF9pg ZJOK2SV}PDfwg>EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rle{$WWau_=Px16^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi`@MHhM?AdGQ|nR+6bkx9)Fhls^u8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4Cb}vG}mbkA&x~Pkc0>sRcxRP3sG7%QcR?1Kjz^NJN_iOWO8kQ zkz*besE`~#_#gc4)+|g;xJkhn(D`E9AHzUk7iiRM`}^3o8z+GO8Mx9~{z@H~`6Rv8 z(jrGd|2A-O-O}Ve;Bp5Te9|RDawI=Zp-=$c&*+_CX>@2HM@dakSAh-}0002_Nkl)>WIKI5OX#IVh>pTq&I>-zYbfW3%M gv|irnbUGb?7i6A}$owWA$N&HU07*qoM6N<$g46tABLDyZ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_05.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/icon_armor_05.png deleted file mode 100644 index 8757a4003a9c79d946f6942777d97b07a1bd9f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmV;#0z3VQP)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rle{$WWau_=Px16^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi`@MHhM?AdGQ|nR+6bkx9)Fhls^u8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4Cb}vG}mbkA&x~Pkc0>sRcxRP3sG7%QcR?1Kjz^NJN_iOWO8kQ zkz*besE`~#_#gc4)+|g;xJkhn(D`E9AHzUk7iiRM`}^3o8z+GO8Mx9~{z@H~`6Rv8 z(jrGd|2A-O-O}Ve;Bp5Te9|RDawI=Zp-=$c&*+_CX>@2HM@dakSAh-}0001+NklGlB%>^H)=2T$h!0000EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rle{$WWau_=Px16^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi`@MHhM?AdGQ|nR+6bkx9)Fhls^u8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4Cb}vG}mbkA&x~Pkc0>sRcxRP3sG7%QcR?1Kjz^NJN_iOWO8kQ zkz*besE`~#_#gc4)+|g;xJkhn(D`E9AHzUk7iiRM`}^3o8z+GO8Mx9~{z@H~`6Rv8 z(jrGd|2A-O-O}Ve;Bp5Te9|RDawI=Zp-=$c&*+_CX>@2HM@dakSAh-}0004$NklD%45C-5&ROCq+*}$Y$GA`c0-l-tC z4^V6nRF5X@(rRU8gDT*;>{ALy^J7Ip4XUM+5)>00000000nWyWNg+ z*8ifl9&_xwttD1QZ-W z>bf3<5K{$&)nKh9=Nu`eikNs|CG2*)f;#~Vu0TU?==0-1uW#?uTDNcMc>JQ}N?vuh zq{NnhG>9jiI<}S*m}zMtv|i+c~1X(o6Tmd zs_JAd#T~%*E1;AroO9D@`{$UCCn9Q^W{MZa1poj5000000002ELtOI+<*g=wYaW3; z0d-wxne5=2M<{cYWeQyL2uWHXbrppFL;A$~LFsUazxMz|b4&_U*}9 zw{L0a&8#>J&P^>>l8iA~62LW&z}f=m8%pW7d4#!pC{px&>|f%s_rNvt2<(?&j*s{6 f;haYRfcx|f2o>8RzAFgW00000NkvXXu0mjfn!K={ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/inhand-right.png deleted file mode 100644 index f4f8ead4c30d31e080257894dbaf00a4d0ffe776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 947 zcmV;k15EshP)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rle{$WWau_=Px16^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi`@MHhM?AdGQ|nR+6bkx9)Fhls^u8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4Cb}vG}mbkA&x~Pkc0>sRcxRP3sG7%QcR?1Kjz^NJN_iOWO8kQ zkz*besE`~#_#gc4)+|g;xJkhn(D`E9AHzUk7iiRM`}^3o8z+GO8Mx9~{z@H~`6Rv8 z(jrGd|2A-O-O}Ve;Bp5Te9|RDawI=Zp-=$c&*+_CX>@2HM@dakSAh-}0004sNkl0eJf_3 zf`Q2|!~nA;nAkcrN+kxbbTWd<23dk)qW_a3Sq=*Japy$J5di=I00000000mXQJSW` z&wQw)l(XwSx!w>$ST}E*KQdf1c%9}ow|M{n0000000000fEka{Gcb1Yx%d%#2D}2Wch5kQ zB>k=d2%%?S?Q%Q$MBn^BD5dPj3t{F>p3c@!-#Y`ET2WONlewxasHxSzJpDM1sj1bf zS#b8bc<-J8rPS)p8D1IS>KXVOlr61&ugJF!_v{%Mp95>%&npA=?imQZHvs^S=NHb0 VwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/meta.json deleted file mode 100644 index d196f28c41..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/meta.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation, edited and separated into layers by erhardsteinhauer (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon_armor_01" - }, - { - "name": "icon_armor_02" - }, - { - "name": "icon_armor_03" - }, - { - "name": "icon_armor_04" - }, - { - "name": "icon_armor_05" - }, - { - "name": "base_OuterClothing_armor_01", - "directions": 4 - }, - { - "name": "base_OuterClothing_armor_02", - "directions": 4 - }, - { - "name": "base_OuterClothing_armor_03", - "directions": 4 - }, - { - "name": "base_OuterClothing_armor_04", - "directions": 4 - }, - { - "name": "base_OuterClothing_armor_05", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_01", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_02", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_03", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_04", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_05", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_06", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "mask_null", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_armor_01", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_armor_02", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_armor_03", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_armor_04", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_01.png deleted file mode 100644 index f2111b4f1b37c22fbe5b3d376aaf5e3de8055def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6221 zcmeHLd0Z3M77oZ(6a+;;QHep>bdt$N7Q-ToKxJPPsa7VF2?Vk+2_{&fRIOGK7qn=F zst9UD>xwJxfY3ffi->?vL_|SRs#Ou|_U;5kc=g%m@3rqQ6B2Uo{myrmd(OG{H%r4p z{LM^9nUY8(v%mn~2=L#F_?Q@h?;=TZ6NzLHH7_bg9f4@bN?ak9NHMZHRf&-?twc;B zX&dj)kgaHS9`f>nOP2}#T>a=Jv}s=~bbsX$;CgBHCHG4|N+esOmzY{q2$pY3{sDgd z>}u(pBf{k_5C%*BxccR*Y$j)&%=EJ~>(Q#Pq_R)*I=Tt5Hoth9v!Pp7Y+F7~RVhd6qK`LEcncf8Z;$QFkZH)nl=m&FrS+fQ5I)AZY=hi8i( zRQ-IdK+_spsPwp{x8O>3mFD@jyjEG;lKU+-Ox3CQ^a&SkUTnK1kUvGvq;1@})1`Fl zv)EeHrNp@0Xx*c+IpJ1^H}5I2vKstNllk0pzpPwbvm?v^3R!9tjc+KqUyBHrF%%jmhgBPvxYza8D(Eir5*y9Y_wfDuP`W?T7eB-DtuUqEOc(7Wbn-}(qUOX2Ze=SSeTGCMfs|~&^1^`gd67AJ2X24+qG-S4i1S5>vBjf4 zW9*YATJMU1_QBZ&YiAY5xNMys6#LaI`Z4ePI%~VbwS~8~osX3qbeKQyZjI`SJb&Hi z{-Xt}oTiTDOV@@w1uv=ziWG0;%W`Ip$-jN?r}6_kb8Yr;lB_~vzjU>a&l9k;=%{Lbx8 zW7Qt*V3(Jciic-r#nh%5s*v!f<|@xeT}DZ0n(X&82($Rm4gBtz`t-2%(+e&?34gA% z^O)Rh*X}teF@?Xvs8VvqscShW#bV{fnug0N@3Q7p(*;|Lx1}C)DE@A<)4{eW8_L?? zvJsDsPEO9(N=JsKcI^;2t*kd{x#Hi_AQ69m;EuX^_^MrK&0=QOHu}tUye8Co=(Cvh z_2awm{eI8T;RFX4*V9LBbLY>^yWm)D_Jwlg_CquFT3Ba{F#8>!|B61=u5HwH*{*`@ z=BJr%FG6k<+&3G4@bYTpbpmVOgP%Xwn*MXh;jEhQ-09u4c+T93^H$yn3NSzu4DHV;`wjc9qD?VV{mbj9|aEHv79vtz8s$tJ(loTo=U{r6;ZMm7&$+O}REQ)XAj%+0Az-Ndc>G~0WA zh#>Kz;Zpmf)RGtHj<)YT%`Bbj$POLtXq`D`k_MhQ()FQLvTr#1XPf=hiFt>)JHH*3 zbZyNkcl3IiHC z#{SybdGG#p=8vz^Nk<^Ov?G+PMNPDxO!m3$gaqtQ?`OsWEpr_p&l9t~#D7z_v?AXTbdjc6gc%7LKh;qb*&C@xW| zB?>v2;6#Lq6tz2r0@lgBfndM_{r~`t0mEDfW;-`uzQ-YKDq0>>^b0#hkca1`^Ki^~)!NlN;2O~m+!C~@*NI$ATxk`=5QH-Dh;4n}KLERV-+l|fSibZa0AhU` zcR*+nqB;PxZXS5U_rWnlt-zxc3aLAVu$D|v>WYdi=q(q1kOI{S>cE(YsJPym^G4!n zx}kvfKJXuyA`=uE`G3dr7TU)$1y^encv2`HDon&s_4|3=1@2>t0NqZd##00T#HoM7 z33?JX0LUuv)PDLSvE-gnPfL`ZUe%o7Y zZ{{WMNMuCJ6T2}%y1DV#Adz_(3?WR=tT-HmOBagi95L5zAiGK-R%;L(n-ULl0PHg; zF5NzpoqO}oWguRYfDy?BGguJJhG0$Y?At9Rw zjv53;*+M3lC1mz=vcBB-E8JtT`3%+@_XITJe0-Cu0^$S-4(9jIW&v@+@B@i95}Be@ zN+lRRFw5Um{eQsqlke>?e`A2aQ<$S#p%#c(100QR^ X{a#2$ElTu%BP0U-LVS07$1V65=6V93 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_02.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_02.png deleted file mode 100644 index 01b3175af61212ffea39d5ad103f783d7a897def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7577 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_03.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_03.png deleted file mode 100644 index ce0a76e863a61771175eb6f6cb7b262c9707fd4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6112 zcmeHLd0Z3M79K>AqF`+WL_k8SsK_KU*%JbUJyCX00jV;XOdybrB#?kgty(Qrs|7_A zY*kcn-x0K~C`wg|is17pDlSE#Zmrh3zB>UCUVZlYd+qzngoNC4zw@2to^xh?lNS{c zYHKsZ27(}4i8v?*{1=fQYb)@*UXjrZLA^iBiHkSHU`C2or;#g^1jUf8B`AbRA%`H- zg`X#=z8*HB|MMS5>3SFR)_usU~QSIe59q}l@g(IYLH=g!84mHAEBv-{rDOF1SrQrNpR$#2ue2MaQDdL;!O z^*Ug&Jy)~yH|N~+}xB&M4h+`FN+R0SzUr23dVb>pFFZwO}b_(IkMTiJ>u77 zKmSRejriiXkeXFUq&v4q1)lFR*7FU5+-Lbve~*)$W}wOK5@n?6krXUET2XiuNjpQR}Y9d{y}Av-MwjoJx#4*RX3@{C4Hh z2Ct%tnOXiBCnqIcy0~xr$W5Znrab{G8f(H6)2bG)J+*B2g@L|44=;{wQm>q{W#*jz z4SCVC?VNpYug;5Frns4~HloZlKX8(B^RAh6pMQ@g-ZdLRc7fxpJj@Ee_kM|$_i$_Ymynp|-k`hOss;6_R zjNgB;D0eP57jfidPCk@$zG2$oiwnM=cJRV^P4Up-F0-?SsLMk9pZF&y5*wbbd2|AQ zynDb@%jYQ~RnXF;@k^$+C=&?Vrd?vgseu#D-Vl!!*P;4b)y~5bZ^haducLl@J78$- z4;d#C>;_tt={fCzYgvh|7EA8y0*W?!=(DCr97%QVx8-ViL&af9{lzNxR)Hb0l2v+q ze#MjX`ljubi&cG3rU$P%v~1bACQ)Iylepbhr~JI$PI|b_I!hFlGx`K+a5 z%DLA(2MD8G4Gp_CeC^m!#Scj@_j*xo=WujXL+QYmKj!MELbVkW)0QmFyvnp@ue+PS zb5o7mmN};h*HZW)$6HmrpmtX2@9R>_=WgAzNW~eNxqVX2kTv}0s}58_e4O`Fkvjf}^ATooVO{ojypv<{1Exj@)9U-=xmD5jKC7u}-FlE& z9pb@`bn$SQ>*{4hMmu@lACwUk&Hll0J8g8yZr+B)L((r596%N|jX#rA#-GJ2Tqyd8 zDr<-e>Ep0!XWHr_@#)-?)qbsy3$EwajGP76hP_d(wZp zRg1Kasg0_qPtR8rkC^__sq)N)7ipG7&xh@6Zls2aE_1XQmm078T+#I%Y&tVMP&dpk zd}S2W{9|jePV^G4-*NL%4F;`%PB$8jG$WIy z(WTH)KA%rV7<2{$1_)T6tu|mLSgrqrr0C!XBJ{XUp*1KpY6{7TNi~@UA1W2>Q##4P zE*@+G!cGI^+DxxE$mkNVV1al5fX+Y=9*i(x2A|$tAMA#QcWJBjomm9=q?<4;9i<_3 zm8yq^-VmJi+TI&A^l{*lNsl4)noJ!|1ZNRy!zbO1YL%J#?lv>^1SvB6t(3{>z$vrk z?mD58@Te{wGL0z;mDa35qPrtyco$BasZ*LUGMr8*2^DZe517#&c!NUz`ha@GL+<>+ z5n!&1zX$qNzRbRu^C}3^;F+XRNstef^j9F$;0l?*{FBEbFr3Ta!YqV=!7PT13uA;F zeDM)XiZQrMz7*?5B~j}Qm>MTYDnL$C03JD)#l%rQ3bSM!Hq2tOn6MP(;4qubk>gSs zis3R|H;PD|0(1hV?CupwB?D9_i!WpFPy)trR0{YI4vcY_T$o8<2#-nd890u1j+zaGmXWac9PdF^#zUoYlq=_Pda~;^a)S}m5&kKl2EaLk<}#l%Wn^dljp~UvrV?avAq*Cb zuwjH7hw=mrrhtu5J5Iav^#7jlP(+Hd*nAvDnKA~k%Nqay diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_04.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural.rsi/overlay_base_OuterClothing_armor_04.png deleted file mode 100644 index c4e9a174a65f0535b2f2c02dacfc942ca69fcea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6265 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 O4@ItC!rd+*3I76yYA9_0 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/base_OuterClothing_armor_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/base_OuterClothing_armor_01.png deleted file mode 100644 index 1bca94bd1904dfa4a1cf114a09277d221afb578b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1381 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 FV1h`9cbNbH diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/decor_base_OuterClothing_armor_03.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/decor_base_OuterClothing_armor_03.png deleted file mode 100644 index 0b98706f19d7d205def5d1a12420d1926e4b8318..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/mask_null.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/mask_null.png deleted file mode 100644 index 2975c479be7566a6c59a7aca4e20778aa850feb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)ID7sLn`LH rJ;=xlwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/meta.json deleted file mode 100644 index b1fb6aa025..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/meta.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation, edited and separated into layers by erhardsteinhauer (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "base_OuterClothing_armor_01", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_01", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_02", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_03", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_04", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_armor_05", - "directions": 4 - }, - { - "name": "mask_null", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_armor_01", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/overlay_base_OuterClothing_armor_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_procedural_elite.rsi/overlay_base_OuterClothing_armor_01.png deleted file mode 100644 index 289528125dcd5cef0a53397a82f26bdab50cc16f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kw2P)EX>4Tx04R}tkv&MmKpe$iTT7)>I@m$9Lx$>PK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#&rl6@CN}#t5P!GqhB8F$dT2bq^0;@8Uem{oJ2pKrR{#@Cd|nOw&!`4dR(i zQ{%i(9AOnvCO#(~*Xe@9k6f1=e&bxW*~>E{dM-0h93d9UJuLMwtLO^xG;vH;RLb|} z9hNz7aaL*#*10EtVW_CCWVuc=iX@hhLK*@jG*CqiCgQZJq!`H1e!|5+Z2QyXlE_sB zBgX>jP$1fV@IUz7tx=kqbdo{|!2e=dAEQ8E7ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)nZ3LcpJF5?rPE=aJd5vJ!zsY+LDi^w^Rb&&*+;9z~C(qTyuKs?BnzS$Wd3zH^9Lm zFjl7Qb(eSd_xAShnNEK{XrpqYE&@qk00006VoOIv0HOes0A{ElwM_s3010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miQA2MeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{003V}L_t(|+U?mf3V<*S1yB+1f504}J;Zl$t~iJU-&;c= zNkf)w8vp>bktDkCXJZT#057YmblW^=MMk?00000z-Mx~ySsOB hJbmEi4gdf^e002ovPDHLkV1n!I0&D;P diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index c74ed8fc13c8c7fc0aad76d2922d46802c4cd829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1234 zcmV;@1TFiCP)EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7Xuz-wXVJZ000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}00081Nkl^i}rFvH7>~{m#fYN5`3*hhy`9C;(H}0ds8r<%~5BNQ0-kM$XvT;-n(~u#FWGK?u6!f34MWjih2`k~e12BG8QMpY$f^o+*X_)V zx$9!eX3V^16#D0Nuu2kRA4Nh=d--IVx)U|78Hu)2^s9m(2!bF8f*=TjAP9mWh`)i+ ze`dC2Xq7UUE}tf8g8(`L<-=}g=q!?uwq(bpG6jq;mN2FmZnvcz72n^Z;9U8vIK;8= zEepH1Hvqpift)dH($pC8@n!*dU9ZKrr>C>;Z^KZuRT@B@PSCGHk+lM{^B?&-#HW>^ zVnFzmo$uERs3LHjvzmk1mFe9L%5uyx9Ua26EF8=7OJ+b{9{FhQPJFD;} zO^vLoa4bul>bg0qqHW_?mdL8=>Ew*z wl0W^RXki~kLPxczE;|H45ClOG1o4ma3-=euo2EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7X$#&`vn>R000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003hNklqiR1?=nE_10pM=d&EgH;03F-G@-}m6WKILT~Miyiy7)DY36>=UekJ)B!_; z)))*#llbr+uapX^7c79uw`B=K1SQ1Bx$8Q###|jw6al@p7>FQ+!0Y8Q%S$0<&O{Z! zK0Ke~B-vKEE7J2Ty2SNXWMr*e%OYFK1046hTv~~c%d7t^;g+^<~WFfhP dgoK3e@CGPS!<8L&<01e6002ovPDHLkV1iSlep&zk diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/inhand-left.png deleted file mode 100644 index a5133d966f229ed1fd9a1ce8ab749bf6476e39ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7Xv7(4?8CS000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0004SNklU5J1rZMM88zR<5vJl$tIrC)q3P z5pspSM2@hc%T3%+P+C-M<%lIjD`0Ga^q&;Taxt-ou_+i400000003Z-@9VXnGyk7^ zRrN8}ooWR-<@w}hPkFxS2d9>R#<|JOHqI@Mx2puSUH4MD_p0js{E~R%SRoRSXau>H zWnX03vjT?I&^RY;*U8u8kt~Tftc1_HPBvQs7h~jH6o2N&{7KYRl$NkWljQQjhIXUd;jzv1C{&iS8;7xE5J4R|Zdmz#RY z=HJCz6AJ(U000000Dv9S>PJZTngFeS1oZ?=eH;lvs~;haQI;WS^&=$O3GfRD`58;I zA0gG;{KXjgI3A-^fL1@kL32^Hwb3p?t$qa6J7D}dJEV902y@q<+9Va@{QLNA*Gc2t v^UM#&bN)XKvA7r&;FI8!?#J{H0GQ(!Z2{0?fzD}E00000NkvXXu0mjfMMIPe diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/inhand-right.png deleted file mode 100644 index cbdf78f4007f0b54667ce69d79a24dbd23830ab8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 zcmV;519kj~P)EX>4Tx04R}tkv&MmKpe$i(`uzu9PA+CkfFM0K~%(1s#pXIrLEAagUO{ILX(Ch z#l=x@EjakGSaoo5*44pP5ClI!oE@ALU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade% zbRsV1@+)HS6#;}0!6>>VX6nhzLKdFm>mEM7-o<#9_qjhuuTn4>;1h{wnQmCb>%`NW zmd<&fIKs-3LVQj$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;(5l;8Yagc%K$f~%x&aOj zfsqnruX((?r?aOV24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O}7XvRfYp#R<000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0004DNklb>k6oBF9D3X;CSv^LS*<04EJ&li$ zEA$dwvsK-=i5CwZ5mP$ZA{NM|bqbFDZ$j9D2YEOHPXqt}000005D}4&^Z6drzqNG? zcA*Dvhl6)8Uw_W#;tg&@Y@E@S!(?cUm~7d(x5F5be|d9CZa zD$6l_I%6K%y|vP4UF5m}G4Td7;8ay|RO+GcsFa+lYBTA-B;I}K!FSt=n*|~wUu~QH z5pXSuH<$s_#Sb4rRhFCj2bhc3n*oj1#kH>Q?g!Cr=X(C#Gru(6UrDovQ8<4tY;2D_~wE?MX2B!0`Vez$5>Y4#} z{`cFhNRk1mYX*k-*UW-_%*&~327L4XYX+pQ8CZMqQ5!H^mv_dDXWnf;`x<&Wf07JH gT{AG99{~R92OKZ=S+FSVe*gdg07*qoM6N<$g6`~&p#T5? diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/meta.json deleted file mode 100644 index e0d437b8ec..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Armor/bulletproof_vest_red.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/6665eec76c98a4f3f89bebcd10b34b47dcc0b8ae", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index 351a43bcaa6409c94e8296d94ee823d32a08e28f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639 zcmV-t2AKJYP)EX>4Tx04R}tkv&MmP!xqv(@I4u4$V-+AwzYtAS&W0RV;#q(pG5I!Q`cX(4-|v zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?+q|hS93y=44-aUu+?gNBYm1$;R0?>5J zNGIY_F25=TUlD*0VTg#x%&aFfi&=Qq*FE)8-Nks8ci*2is1{5H_$1;vRyQo-4dR(i ztIm0!SY%~cB|aw}H|T=Ik6c$=e&bwnSm2qWkxkDNi^Ni?hm{^?WkVyLCXT9_PWeL4 zWtH<5XRX>`oqO^Zh6?&hhU>IOkiZg>NI`;v1}dn+LX38u6ccGWk9+us9e;{k3b`s^ z0{s+HjYZj*_-K0<)=zFp4k5M4F3$&ZI{e5iP?GwQN3|#45f2{?~ev;no zYSANLXdAe=?rO>&aJd6Sp6aq8JCdK4P%HxPXY@^ZAbbl9thsaRoa6KX$kMEqZ-9eC zV5~&h>mKj!@15JfJ)Qae06rRWlD+^#WB>pF24YJ`L;#5ZYXA?Ch)~P`000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O>6gv;zXruuE000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}000C&Nklpdw5IxQ03o-%)B4&mrON>n~2+8;x z@lMxwY1jVy#tWS-vd)?G@ogQ7B*Nl>}pB2{)|%!Zf#<)jxHCBPfbetH@7esDXJ25q*IGjC z>hogo%QqYVgb**w-^3`wMiLRKssisvB68%+W%wBSz9%-a>pJ)HS3P#l%`^AAMq5-> zg{Eo9+vhhRA~a1yOiZ5VE@gek{p-3`;p$)ax_gE04*+#tt5@Vd^#CcQ@_%Q>Lxkhu z-_5-ph{(NS-Tvh)Fg9V9W$3yNec!WNLI`oU7yG{d_I5DFKuS5P!5#GSw4Uwv_Vb{p=nPf(xP$9GHX zx_0~AD~nOrwK|;$|T(U&ZQilRVRa`R6jLQxdU5x@n}T;GdDp6Ae7|FI6yT1U&@#46&uzaOn*_udpp zDPgUJQVJ~ZbUKkz3f9`unqjtn06*_P>jymg{JZey_vJhqPtCrBgoK2IgoK2IgoK2I z86Jnj$5L)Q6h(oLkB=XD{5&3yLwFV$`zXAbC|mJaz1AAX<8k<5;}rn4ng?)q);lgI zA;fB)a6BFdYb}UK0sr;|$GTOsdcbbC8>*^uOnVJUWvyMs6CN24{BtNW)*+gWfUx0c zt@Ra9Q`*w8xXN(GhpqUxpPmQ!*A(O4l0q?*wSAZ;r_q4T5VJx|U8+ z1Q=s(T+TnQ{|SV50{k<}MLnSJdq+eN2Udf>|HBjGMT20|G-Qk+K7}PBr^r+#V##Nt zITrXj#RkD`tO8-4?Yi#lUy@n_d{L|Gy0OY{Sd4(N{pDwYH9UZ2jitaxI?fsc4u`|p zf6qa1%{aiagb;W7#Ll&yvIonuJo{vN7P%>MwaYBGiFXv44$r%GJE>6!!h#=Z~#Hz}N!#4r_k5B*r002ovPDHLkV1l-7`SAb% diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/icon.png deleted file mode 100644 index deb62dd58ba3f901138f241811b77dc30f0d927c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048 zcmV+z1n2vSP)EX>4Tx04R}tkv&MmP!xqv(@I4u4$V-+AwzYtAS&W0RV;#q(pG5I!Q`cX(4-|v zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?+q|hS93y=44-aUu+?gNBYm1$;R0?>5J zNGIY_F25=TUlD*0VTg#x%&aFfi&=Qq*FE)8-Nks8ci*2is1{5H_$1;vRyQo-4dR(i ztIm0!SY%~cB|aw}H|T=Ik6c$=e&bwnSm2qWkxkDNi^Ni?hm{^?WkVyLCXT9_PWeL4 zWtH<5XRX>`oqO^Zh6?&hhU>IOkiZg>NI`;v1}dn+LX38u6ccGWk9+us9e;{k3b`s^ z0{s+HjYZj*_-K0<)=zFp4k5M4F3$&ZI{e5iP?GwQN3|#45f2{?~ev;no zYSANLXdAe=?rO>&aJd6Sp6aq8JCdK4P%HxPXY@^ZAbbl9thsaRoa6KX$kMEqZ-9eC zV5~&h>mKj!@15JfJ)Qae06rRWlD+^#WB>pF24YJ`L;#5ZYXA?Ch)~P`000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O>6#@W3kzO4D000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0005+NklUJrNPdbz=-ErI?7KYnYnE%aq`C zUGw2^z+$n$a=FCuc-(C^8=BAOyY+faWm%@+&N&oCv760if41B0`&ak>{%S*{-53LA zzVHhn(t2da7;|y%+X;*lVP+5!lu~fcK`8|yO36(PJShPwYK>8#EOA*632 zg4UXpQi#ncr5wJ^Kv|Z2Zae2Lf?o4qJ9pO>#L0wWjW7tHpbA8FmOJ0UDr|Dwyd>A+qT?w9gWBG;R%czG1h-Peh(F* zb3{RU)V{k)5b0M+ao2Ux#>pn!fyw^^r=OAZ?wrQ-Ez7cxD2#s_-zT2EX>4Tx04R}tkv&MmP!xqv(@I4u4$V-+AwzYtAS&W0RV;#q(pG5I!Q`cX(4-|v zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?+q|hS93y=44-aUu+?gNBYm1$;R0?>5J zNGIY_F25=TUlD*0VTg#x%&aFfi&=Qq*FE)8-Nks8ci*2is1{5H_$1;vRyQo-4dR(i ztIm0!SY%~cB|aw}H|T=Ik6c$=e&bwnSm2qWkxkDNi^Ni?hm{^?WkVyLCXT9_PWeL4 zWtH<5XRX>`oqO^Zh6?&hhU>IOkiZg>NI`;v1}dn+LX38u6ccGWk9+us9e;{k3b`s^ z0{s+HjYZj*_-K0<)=zFp4k5M4F3$&ZI{e5iP?GwQN3|#45f2{?~ev;no zYSANLXdAe=?rO>&aJd6Sp6aq8JCdK4P%HxPXY@^ZAbbl9thsaRoa6KX$kMEqZ-9eC zV5~&h>mKj!@15JfJ)Qae06rRWlD+^#WB>pF24YJ`L;#5ZYXA?Ch)~P`000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O>6$J+8vu*DH000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003NNklrywo?^m70bxo~{?C+#;8?#nB6OQRgU)tNYXS-vertH>bm}} z+B8kKCDM-6jJe3RUK|Z6jJeB*U35e%s=3) zR|rLH4^EF9qrXFFK%VDXuGK6zN*>h!NvE&R1k-?DT%Q3R;1B5EmXgB^Zv_AV002ov JPDHLkV1nlbXGj15 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/inhand-right.png deleted file mode 100644 index d5698440f11cb2b844cb177ad8896b4fa52be9fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870 zcmV-s1DX7ZP)EX>4Tx04R}tkv&MmP!xqv(@I4u4$V-+AwzYtAS&W0RV;#q(pG5I!Q`cX(4-|v zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?+q|hS93y=44-aUu+?gNBYm1$;R0?>5J zNGIY_F25=TUlD*0VTg#x%&aFfi&=Qq*FE)8-Nks8ci*2is1{5H_$1;vRyQo-4dR(i ztIm0!SY%~cB|aw}H|T=Ik6c$=e&bwnSm2qWkxkDNi^Ni?hm{^?WkVyLCXT9_PWeL4 zWtH<5XRX>`oqO^Zh6?&hhU>IOkiZg>NI`;v1}dn+LX38u6ccGWk9+us9e;{k3b`s^ z0{s+HjYZj*_-K0<)=zFp4k5M4F3$&ZI{e5iP?GwQN3|#45f2{?~ev;no zYSANLXdAe=?rO>&aJd6Sp6aq8JCdK4P%HxPXY@^ZAbbl9thsaRoa6KX$kMEqZ-9eC zV5~&h>mKj!@15JfJ)Qae06rRWlD+^#WB>pF24YJ`L;#5ZYXA?Ch)~P`000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~O>6$UT^B&)Rm000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003!Nkl3!rO2AaMw6gR390VKU1?GLYS*%>17zZE5rRQWBCDAR;0nA|fIpA|fIn%d#fR zvgWaVl(^T{u;jEhiBbvx(Dyx(Bmn?utznG$^m*}H;|`W4kx~Kx>bm|>N-4eF347xX zmKv?K&{_ik%Cfv?(OT>E_TLltdEU@<9lEYVp67_72mtP7RaM?DesA2r5-^VA^sO{) z+X4XEwnZGrkA2?R8+WkQF=cNWJk@>oXK@Q58X-h8fA-x`<0c{^A|fIpA|fIpA`czq zp1`w$t&3Mmy;KrDw!G||yM|$i%jE*++;td+ueaI(ujsVp<@rIQ&&TD@I&U3N6a|3q wvv*?*-Yx;YUz7Rw1WeaW(lq5i0nzc@00+69Eldn3TmS$707*qoM6N<$f|AH|&;S4c diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/meta.json deleted file mode 100644 index 2834ac8f8d..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC0-1.0", - "copyright": "Made by Github user Psychpsyo for Space Station 14 | resprited for acid raincoat by erhardsteinhauer", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index 21d83215cec1b18a7a1db5763bf67903f201bada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1730 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_blue.rsi/inhand-left.png deleted file mode 100644 index 3dc2a157bda2218b5732a29957306fdfb29a40ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 860 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 Uf(4bUG5`Po07*qoM6N<$f;yd3`Tzg` diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/icon.png deleted file mode 100644 index 8f95774529bfc0a5f8004c5b99dfbd600ca6e043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmV-S1he~zP)EX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0006bNklNDxy z_i-=ho_qCxJ@(k+f5*GL2Mou&0|2+>#=e_xHvoXg+lPz1_Z{TfTvn9`03Wl_hJVaP zsA~c0X$-tIp^Ga2T*B0|72E9H7fV$SedU$j=yYJuA z+SzFwTnK@a+R5zW(WkHB(~mDN-T(fj4U+a?7=ZbF!%ql7QV-1M2!_GNxmPEUPK5a! znoePPHiQtcJR6!$(fM?v6wI8Z%wBd^!n8DY)CO0jv2k0 zf!f(APufC=jiB57+s^IO1>5K(gg^*^=_G`vQ%olzDpdu9kPT+0lQ2^`4l>l9rY|Cd z#A1`Sgq#P3%z^Y&GaNG#Lc{@+vrhX5GS SFGO?z0000EX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0003pNkl9Zq2HhphoTTi-GT@m#8Dh2 zi}YLh8IIrXe#eD9?1;)7)%Ny_tFp65xD!d0m6_pfWyIZZfy7Vj^7Nm8`g{u}*; z-*^T4$}!#mN!srUg{x4K^!ogAShfAG7$m2OXqKW4=hb({at7G~)zvCLwww=@W87@+#odRz`~f^tmyrcQVbA~o002ovPDHLkV1m(ne#`&> diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_green.rsi/inhand-right.png deleted file mode 100644 index 1462b1368dcc48ef65df83509ae06666e3827c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 902 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 M07*qoM6N<$f;;0R3jhEB diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/icon.png deleted file mode 100644 index 1c2c5068f8f10cf9bb3479a50214fc7a715d1d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1102 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 QO#lD@07*qoM6N<$g6)HjG5`Po diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/meta.json deleted file mode 100644 index 2834ac8f8d..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_magenta.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC0-1.0", - "copyright": "Made by Github user Psychpsyo for Space Station 14 | resprited for acid raincoat by erhardsteinhauer", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index 364d583fc799ffa604a52e835063ec0c75c0029f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1789 zcmVEX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}000EkNkl#kf+~&w0J}N6v71OKuA$oE&hm9>=qO<&iYbuXP=Hw3NY)||nZj{#cf}R< z+Z)Df!>o7L7u|f)3YZ<{{g^jz-n=(}hK7cQhK9!f6-(b6!_}(g0l@nY@BFskfBOOe zI5}|))$x{9I_K8cyh^#mPfnb-0gN?T?H;>0|7yf3e5>8#x4*ss00Y2V?VkT$RS8Rq z!~p<7Lgv=jJOHSaOQB{$Mfh563q~gGE5I91VB1aH(Pt|3mlh@d{=+*C0G$rUpg)=+ zQmtBEp_t{S$;c#GluDrSjZ7Necme>pqs0L5PUqGr=)KI}WB6ea;+D0^r&m*~uC5}R zeT|!&>&rK9Rz9DdU3`*-cZV)=xmTAfD=$8uon3s2Qg{G(`SNF6f4jlofBlK+)%5lB zYI=G7?FQoe7eD>z^EYq&)VvO4_Kwp9XE3I93R>-+FC5K20OU9F{zIVm zMkc*5{getLB&2CF)M{Ix^=O*RS58!d2Vu}3F%r@py8c7L5BejfI%aB~`Blm#Ur^g_ zGBR};rpaL2O-72TluQ1W^%V2p-`nBx?9*DOhb%=#QSf99r!j3dL+74?#T1RD zs$znvA?&&kB(23=%-XV6VapNQ~%I&asJgHqT*H+2OOsh zZ#+SMBTw5dOp_tMk%u>)%=o3q6|ksBk24UmtWAg^xAA4H(9IQV^oDTP3AKamI+nmlhEV~M4nWg;Ib+M@;>Vh z-G+EcDhbd?6y!|lePKMKWzk^(B_l3#-lx+j#B5=eOQrl`0b zpPW1KC_uiCBhP-Emm_2zXe$=4(T2I2w;V?ML{M%^LIFV&AhxUWpmZFbchX9#F8^QQ fLqkJDEX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0006dNkl9^d=k+W|6U$nd}8MbZO|IRgM_wl0kC%jYWqK(FVYC%x||$>wq;uK;ZC zCK3b!loD|6LWUBYyP%YqlRoYSe35c<{U-*{UNtBf%b00$~Ih zM|cPS3moTcudwu3wu%Me`xEjk3~aYuyVED#?xpa&A-dg5(eCs~v@KIlASy&%|7iQA zI*7KR2U1%54l04BpL18VJAG|qV-p;J*zbYOV?;x2+Vs3!$qzO@^0)TQkl~-kAE9Oc U*D>8E4*&oF07*qoM6N<$f)0iKdH?_b diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/inhand-left.png deleted file mode 100644 index 26aaafe4bf250a0f6f76488e2aa6aff57e319d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmV-j1ETziP)EX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0003rNkl$e;&{61^cI*Q< ztAh{IzJ-HIM<1YL63Ae{F9S z?~e+vU|l)Z8z4!C<4LRKMw0aQ{&8Nl!|~KeP7&R@f`Twr5T=^XUv+bRB}wOTvG}x} zW4!@C-@j&WCQ-DLBt_9q_Yb$(ch+(m*#gw^?00000NkvXXu0mjfVZeb+ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/acid_raincoat_yellow.rsi/inhand-right.png deleted file mode 100644 index f0a7d87d709ae8b931c4c538beaeff8705370988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 900 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 Rc`X0{002ovPDHLkV1jzij7
    EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}{2MO+R?PdS~02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00ApWL_t(o!|jy6Y63wJhrg3_d4ZrdHge5Xf(UXcw6aYd ze2x@p(&qsZNM({o2tq(RK?GmGW}Dr^P8;h@5hpn{vm}>?WvsI8Jy8ximYcZcL5A5^ll1{G$K$7eN zmzz*2a(5+|lv&nAa1tQpJ?`&!-_73&_-(lI4qYiNIL@?4=7pYOfNJ&Jrk~!l02x$| d$K&z1@ByCCevDszcg6q!002ovPDHLkV1fqOb+7;c diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/inhand-left.png deleted file mode 100644 index c4de9d7dc1bbe7cf3f6567f33b2844baf742b2fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}{1~)bf!HfU^02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00CM_L_t(|+U?puYr;Sn$MK)iElaz}B}*1@aS}uj7dv(F z4HUY#^c56eK$pG)$F5zwIoPEXN*N$bt>ycy%9xe9(3KvsX9;Jdv}`t$KPZ{1#JZ%HWb zdcoW4OEuaxRa+I+o8`3Hs;JSftv%oKUBxz05CoE>AP5xOME7?$dnwq-uB+c43}wSe zl4QfNJijCxM)LfUB&BaJ--Tt>pMC%EIZ}Tx)R}iG8%F96hBC%UCzId8!6v|l!Vw>nFkANh-K8@xNGLHJ^m#c?V0DuGW Y2fGH63U)`sA^-pY07*qoM6N<$f*0+El>h($ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/blazer_jamrock.rsi/inhand-right.png deleted file mode 100644 index 1f0251b25bdf1193ffc0e962c1d832af5dfb39b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 904 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_aerostatic.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_aerostatic.rsi/inhand-right.png deleted file mode 100644 index 9d21bdf0a974cfdee3cff568299873ea65d663e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 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 TWQMkF00000NkvXXu0mjfsr-aC diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_punk_red.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/bomber_punk_red.rsi/inhand-right.png deleted file mode 100644 index 4865e001206333047dbb522bf455e865a9ecac4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/icon.png deleted file mode 100644 index acfd6e4ac5c16cf7d6005ace533d2d5d2f5ac923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmV--1Bm>IP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}^Br5cDDV_iT02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B=)L_t(o!|heEYQr!PeGVONk_Um)b_jJ=LqcdfwOy0^ zds9LJS*^x|rWSaJr`z1=M4Wc0g43mXU<9W#@A>ZD83+gn`0t3$dFkf*wmFUMKR=>B z5g_D5eE>j`^f8-Hk)}fs5yqoQ z)4720Xwqn{p;QcGaunMgtStcm)|M!?I~bEgsTf*oFA={IP}c`X1^~w7t$QJtJUKgU zK~+_*=SsyOA}})sgVc#*W|!Bg0P~)^>6YFr732Bk3D)kRRP5rX`JGi@wO&Tz0IfBw zEsA$g<2$Ju|!K;{Ss5ZrF(Zio&$2<1_sM0RaI4f-g`4mv#8}K8^qY N002ovPDHLkV1ioOg0=tv diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/inhand-left.png deleted file mode 100644 index 342dc4032ace88d2a0f793ab415c65731c9b6f3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 869 zcmV-r1DgDaP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}^8~`{_T(bZG02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00BKoL_t(|+U?rAYQr!9h2i6n!BaX2vMN?l@Ye|y#{@`2T;9H<9S6|A`xgT|Z@!of;JIM*C|4x?XVN+Yz{@+6%>ktG0 z0000000000dLm2n@Y_{fS5e=?*SE?0-W(758vgd?F4V!>SLtUn0p5FAn<$Rs=Ka7v vhJ8N+{`+=d(C6?~wbo)ek9a!(0NBq5m8*h$L;dY}00000NkvXXu0mjfZi|3? diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/inhand-right.png deleted file mode 100644 index 8f0c61efb6292868931ae774efe3293ebd09d344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmV-n1D^beP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}^8#Gp>KEVJ002y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B8kL_t(|+U?mpPs1=2hT$)$gQs+`fJXArOy0~wqS7W6>Xgv;*?ba5$0xRzBLM&a00000I44P8u*l2!`SpUo(w+&{*jN0TT*k(aTm7Luf^>r1`8zROxWnE%CopsE(_ z1htE|)~fyJ*g2QUdoM{^KCL84-h1uth`}SUyLGI!TCZPJRg3O}$F|Z~{=P9rl9Z}#P-O>*ku+b(Qh$8}0BPMw&h^RDZ9dvh1ht^iH5l`%%nWk=i3|F!@j rgh?;FH9K`;d+v=flfMW70O#r(9S(r-2Ifdt00000NkvXXu0mjfXb6F{ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/meta.json deleted file mode 100644 index 6bcb85e3c0..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_biker.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC0-1.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/blob/master/icons/mob/clothing/suits/jacket.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index 57d31a48d90ddab49636ab6b0061d71a7e3a9060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1260 zcmVEX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}^7$%M}97+HH02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00P8GL_t(|+U=T6Z{jczhTk9#K81rN3aDxcKcH3r|BtBJ z!}dmYS1Z0GBazb_kg|u}iHtE2I|(3lo(sjqyyNlsqs#z;AP9mW2;Y<>v_m$XmHE$k zQn$TrvgxcOA`FKQRoiB>hEfVK`avDWqe-ch0ss&Zma9eLYwK$87e}hd~eMOuP<*UfA`b#BYyw-gQw@mgJ-y%pRcQ*)E&Gr21T)}Ja3G_ z$LD)uJ15WQNYerM`8J&3>ht%zxS!Y6zZd~Uv8!H*2wz`64mKbb-)z?2eob-pd9Ay| z>h~^rpJ$wfhr@@X8PHl+PT}XWY*vMCli7FmdBb&y)$i5u{${hraU^^#7 z|Kc9tJ5thgP(=X0_x0g(y9qHzYKZ<>2e_9CrIa_UxXqoNrk5h0KF_M{blxCi^!uS9 z>9XJNvET2na&Kq-Q>Q`9lIw+bIJX9`!L9WLK@bE%5ClOG1VIo4;kz*&P0BWY?!Fhh z`k@{8r)f?*6~zwMD2(u7r_4Ds6iP2fnDc|2g36||@)m>Vf!n#sP?8vr`)UQQ83}H& zhHXoz9l=ZBRIc7lPj?9s9n>kwL&e}~$J8VAn;LPha;rOvC$ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/icon.png deleted file mode 100644 index 31e0353bf9b4d37af586d5e6095515f5ba77bd36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmV-21I_%2P)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}^7%%tjr0xI!02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009a~L_t(o!|heOZo@DPJO>>(r2_%yG1dA1e<|9b*{n`^ z0UY9qn>&$^-4>7pw@Y-3?Gr5?j}!z{R8%}Vnv$P(+xkbeRcO!iE$@@O#Bxhy-@MH!N z@imK26|qVQvg9H3?tr-w3k#v2tS#n%ZLX>~9zW2wn{N)>ZdZ@X5s>7-+xx5A*|wXB z-R4LvY8dXzJ7Ck!%n%VzVozrF_r-_MpsJJP^NQ_M?D~)fctkr~Vq3 wTYXUrQn){9fn7MiRY^p}7g9wEX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}^8~`{_T(bZG02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00BKoL_t(|+U?rAYQr!9h2i6n!BaX2vMN?l@Ye|y#{@`2T;9H<9S6|A`xgT|Z@!of;JIM*C|4x?XVN+Yz{@+6%>ktG0 z0000000000dLm2n@Y_{fS5e=?*SE?0-W(758vgd?F4V!>SLtUn0p5FAn<$Rs=Ka7v vhJ8N+{`+=d(C6?~wbo)ek9a!(0NBq5m8*h$L;dY}00000NkvXXu0mjfZi|3? diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/inhand-right.png deleted file mode 100644 index 8f0c61efb6292868931ae774efe3293ebd09d344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmV-n1D^beP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}^8#Gp>KEVJ002y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B8kL_t(|+U?mpPs1=2hT$)$gQs+`fJXArOy0~wqS7W6>Xgv;*?ba5$0xRzBLM&a00000I44P8u*l2!`SpUo(w+&{*jN0TT*k(aTm7Luf^>r1`8zROxWnE%CopsE(_ z1htE|)~fyJ*g2QUdoM{^KCL84-h1uth`}SUyLGI!TCZPJRg3O}$F|Z~{=P9rl9Z}#P-O>*ku+b(Qh$8}0BPMw&h^RDZ9dvh1ht^iH5l`%%nWk=i3|F!@j rgh?;FH9K`;d+v=flfMW70O#r(9S(r-2Ifdt00000NkvXXu0mjfXb6F{ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/meta.json deleted file mode 100644 index 6bcb85e3c0..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_leather.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC0-1.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/blob/master/icons/mob/clothing/suits/jacket.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_blue.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_blue.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index a9a2d75a954240c08cd4257f2cf1a1c48b31ff14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1644 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/icon.png deleted file mode 100644 index 41b64862808551dd93f1051459bb7e3806ada388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941 zcmV;e15*5nP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}`6fvUH0`C9-02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00D(bL_t(o!|jzZYr;?zg-=Qc2|_SS6a-BWv_nJ$rw&g3 zjm$dv8{9MNlBt7B(AA-|wUbJvNS%VxC{$WOELkMm?W7nLG!W_Xz9roI&Pz`6?!5sR z3 zwr5`;NAULg2mqM$22i5HNsST}FzF3E`alfSn;mX!&9Pcc0RW#r&Pm-izgkQ&w&tie zJ6xc1AS?2eONvK@x9x)c{KtC31>T1Hg?BiJ_T$3>J;&{(!lmOL4WLWb0{a4$s2G;|tvTjX~NG8ha70|5R22V9yq!lef= P00000NkvXXu0mjfQ97EF diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/inhand-left.png deleted file mode 100644 index 45968148146c0af3bd81901df74869d0243c488e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 963 zcmV;!13dhRP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}`6d}K45{m!;02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00EmxL_t(|+U?r0O9D|G2k`Gn(=FijKT(#kXf~k9?vtT>HlHV=sdC4!S@ZtTz@72Bl)bus zdck_FEX|~6NAvzX)k0qCu>iK#SFKBr1yC*Ir6UTkwh@G0I>K!7dg%yj8$ny~sdNUO zXaWH6IGzFkJkbPF=?wmS0jh<(oQwoojV8Qq6))2_c-<;mjV2}|G50B&@x6A(O8#*? zMX%kl760o!AQ;@10H7K}?D#eGhlVx2YJLEK5Cg?-{A>@f6aQzLV7*qBd&w+rue&hE z%E`I%l{YCI@>%oyhi9B!UM*#>L_|bHL_|bHL_|bHL=F+rR2k9Kg%3?#PEWpaTtqyV z#G*xTYypb9n-cgqIQ`DQ1CA|#dGsC*`7jxYh1XeedJj0gxB&pD|LqNk=aSezJb(}b lMTmhC&n5XqAR?kKdI#QAj#On$w=Dnw002ovPDHLkV1m2coyGtF diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_brown.rsi/inhand-right.png deleted file mode 100644 index 91cbe1d4d612732282437abf3b908f5a9b68655a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 972 zcmV;-12g=IP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}`6em^(x4r-X02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00E>)L_t(|+U?mfOF~f;2k^hr^oGKRU{a8V5Cn<@VTB!-y7Upk573&8LeStK1VV#TEe+D9U zn3I#Dr`O58(G}7OnLKi1cXLC3l1FY7(h2#m2H3YeNM=)*EeQf zv5v`_zq~Qc5Gfurz+B?D$?wASeGq6 z7!M(Tk%8HpU|sfLI1)vx(+2=#4z^9(gtcW44hI6>y&ZhM{`@{)xdvR_J^=tu)>m)_ u1mhtH(Y6TDwj7_IAs7$wt3X6VCiD$m=a3M9Ccn!70000EX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}000CFNklaayoz2wG8m@?pWzWrsN# zrmV)dhJop!ExCl$-C?JJhZ#7BK@Ni+vWv%{Cm)(_dUm2%vJ|uR`+*Vf={^15`}E!?S>Fc`1VIo4@vaj1FAjQjsi2GD zm|2$Fb^P$lH?HQwIqh)&_5tIW}@5k@vZHmB%&SFWOTw1b;73Fh3*nFLBlJJ`E&71^BPixILp zMQ=tIQBn7i7LpLdG3HoN_tA_lI@TY_0NF>1jun89q#%T5Q99aT&XYu*_ z(Hnniyp<9K((4cXeyOv61_az|#yqctgx~vIkp0Ye~Ri-}?eUt#At` z>qVyB$$AmB!Y$Jw@{ts9c>bO}539b~X)t$v$WFa_wbO8&D#zxUkc&9 z(EH4}C%=Ag_BHQ%k5`=+F#1)WJ$3!MZKrRC6a6W>lh)4J+++RZk0R7gPm#9@4g=b{d$T%b?oxSDybF%G~===OZa-t-e#VtM?j1$8O8` zsZS6DK@bE%5ClOG1VIr016+MSvnD8f_0#7Q{RU@*xnwwu+lvNOh=ycmvQyIDo;ScBZIgPYGgzRr}B#@U>rV*%h+@~8pe zWS~-7v;9`@Clz%c(a$ze6MJ`3?vC-1gSdp_6=25dx4J>gw2(BzRu_rdX&@~mq3v2i z;-d5GI5WV4W%8DAd0I$bxB=2ak`2jk4UEyZ6@cMHiL(Nheqv}c$r_TRqIYDc}0Ut?W4-#bMU}8RC8&x!;i~Y&VaGaDe=?(zk&D#z>diXQ& z<=RBEX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0004jNklbI?ySP-`Iyxx0 z2+h=~AarslxH&ip1t%9RbnF%!x)iY>f;tDcf^cTYB6TX54yU1K12u5cq4$=%|Npz( z%fEmB00993fj@>6cR{Pt4cw3SAAT#5#r^Yb?C)K~-Q1K_c-uAO_qJ=8vWixv8=Osm zT_?dLnL%$gL{ZC!BE0PyMJqJ7XePcD*2l+FsJtN(~snZ{yEKr)2~Y0GT`*95?M6Db9U~E zYEX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0004oNklLRrAetNMX_TQd}CI z4Cep<{n-crFbwAq$fVaY1RU)Ez1R>ifW@GSgg=7me1e2Og2kW;7$4V7#>?XSvytg| zJ3LM%8$Z-AMh!t<6bXOi%NTxc9axJ0J_neI|1*=IUTlcKb{a3QEy$yl@hjsctMNoc zL_|bHL_|bHL_|dYkd`V4Emg3+XzFo$@u8D5zyLHr*x5v(y0v(@_W%ZfBl~$=+X2)0 zWVwW%1kksi$K&=npm)C9HxTqiH|q=V#&oFh5<1EX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0004rNklT)MdO6VxPY6BLexcJr4Cp{K8#^%!}D9(w|$$ObKZ{* zEr^JSh=_=Yh=|A}F@{~-N#(3kId6<=J6$rKu>#(O?{>4@;NtSs_*VgT_n)m!y#PR| zoHuq-ISasyWH~tsI=%?$y)$d|<7MFb_4FL)$6EvOn*%*#-DK^Nx05I4j?wq8CwN%g z0HD@-1mIzD1OIwrXn(W6dQ_oPFA(*GXtouPo7*eHjAZeI(|Rk2h=>b)0*khX U1~RMSJOBUy07*qoM6N<$f-6U>&j0`b diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/meta.json deleted file mode 100644 index 87418987f5..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_magenta.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC0-1.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/blob/master/icons/mob/clothing/suits/jacket.dmi | recolored by erhardsteinhauer for New Frontier with https://www.pixilart.com/palettes/cyberpunk-v1-24161", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index e0b7fc5d1367d43d72aa293534336f83173976f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1599 zcmV-F2Eh4=P)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}`B0I|(dV~M~02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00b9FL_t(|+U=UpYZ_@7$G;Jouu#Q=r(NP^wo+mtvm~)~ zD0?e8q?a^M5VEHp_n0N@hCLJ-SV&4p|AbOD3PZyhFNS64wU`U@#b8Difb$r#Gf&h~Ve+XQioO z>)(GI+2XO=ASnpMPPtpgM`A$$KqMA~;ODS0Jwse~KvED$Bo^!t+nAmqkyy}mCs5%2*BtA6?1 z%mSn=il$!*6-CUv0Eaqi%(ktBtlT{hpy> zDikKZJ9nUI8Wt}8Grf}?CAGA2N)Z_lrrS+ zUw?+$XkX2ShB*w<^4aZONbx5_IRhB=pRR3^>YFzmA=rr8Xk+U6b4b_w)zE(oC8P{l zS`<-Mt1uok=x%)|XYu2ZjPJ(!+9sJ3qdk|*jt%1(3;WkMUwjD6Ly$hwO;pFH7l3cr0cE)Xu z7yKL~xrURY3n)zuv)jAwiYBBC$>mF=UaymSy-srZ5{U?TOqo&of( z{!q?B+Dl_O#r5w3pVe#I1P*gW$DO`Cj-N-FW@F{5m&4YK+za%OM{k zu^^OG62v$&vl~(#`R%_GNu-lNd9v xoE$vdIG7pxv%a=Dw*D{}3{s$%sP%gptnG^s3002ovPDHLkV1ko3^pgMp diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/icon.png deleted file mode 100644 index 10df25d682ed5caadf8a4ca4c982a9b779be6092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmV;<12O!GP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}`BNyP=Cnf*@02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00E{+L_t(o!|jznOCv!T#(z1)ts+yT5)3zraA_9&0|{1w z1hg@Yu;4fF8(3M32v#Ci7Mj3fA!*{lHI^%zHEfy#(Hl_gj%Cp**UVK3j0Wxk8*Jv+ z4D-%2Gtc~c2P_tg<&(*c+M(gPy8HU)L)@L3WV_oPdAu*9PF^Y(P-)MItF%X{T%h5) zdTa*jeoNo2ZLxo;s1@@A6DsXdE9Tk1RNSp?QTJOqa|2-%>y2uKg~~EgI5eN$jP~Z! z8&WtdRF>JORtTe5XJ#ObVm&8kjI)-)F*H&*xKopZ`kb8kZxjDC;9oQWcvR1Hf;IqN zb=uJM>z$y@qk1;_WpV`9KLP+It{Rleg`t{KxxmC#!_a49;P7ZK*9qF(KfD0&^Y-^p zT|a*R@IohOb9l6u%QO#oLh4#E55W4(4Lh?-Na3K;9w)ydzOSwhE~KBTT;|WPfAQwe z&N*0IG1?9mSC~ILH*}e2LQhCN%+&j&1dL|~HcyWSs~h$V`{m~8@%TQDy5G`ClISps wwI`(B{rXLNLh3Mzb&@1{)GTPRSS%KRzYKSunTdEmXaE2J07*qoM6N<$f*Z}T6951J diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/inhand-left.png deleted file mode 100644 index 9713fdda1168e740329c9fb396605c28b038b641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 947 zcmV;k15EshP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}`BLx#+R&D?Q02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00E0hL_t(|+U?r0YQj(y2H-!XC>@jx-9%|1NGT{39ejok z&6uGsc?2b3L1@8Aq1dTIAHcz}i_hR-5fr3^3n>M+4#5sZm)j{p3dLwEHTZuJE;n$( zJ?Dm#Ar~MbA|fIpA|fK9eWGmRq1Pv;vibU={4`(1R5huo@nG(Hb96m-D{DRY>j!qa zJ?SUCJo@)nu`3N}WD>|HW5H!)60j=`8Hoa9^%QcgHkOmmwc5z)sc^erHX!Rw0KjOr z0078(6K2`K&KJP0G^8V@7}u)ECu4BEIr7OE#{(;`H+0RGv7VSn(e zvjc}wEr9FIp{a4?N<}zgx_<@m-PUaYKw;l{K-#j9YqcT7L=j@5q%DhI1R^3@(-$;D VmPHBVg5LlD002ovPDHLkV1gK`me2qI diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/inhand-right.png deleted file mode 100644 index 2f8f14bb689e8fa20ca13bc2d02144003a7603ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmV;s14R6ZP)EX>4Tx04R}tkv&MmP!xqv(@Kj}9PA+C5TQC*5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`vxAeOippOg))d%))bh-NVQCyBN>%zW3+qQwk;nd?N82(+!JwgLr1s z(mC%FM_5@>h|h_~4Qi11k?XR{Z=6dG3p_JoWYhD+5n{2_#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQcAxx(;exi3;X2hY5?DeKDTt6!M+H?_h|#W*Vj@lFaS#8H<4=)GCRYWF z91EyHh2;3b|KRs*&EnLgn-q=%JukNXF$x5CfmXw|zmILZbprUGfh(=!uQh?$PtqG5 zEqVm>Zvz+C9ZlW?E_Z;zCtWfmNAgn%#Uk*2M&FbN25y1gHFs|9bDTZ^S(?@I4RCM> zjFl*R-Q(S%?z#PYr#-(P6N_?z1g4Kr00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=mY}`BMbD{duadw02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00EOpL_t(|+U?pgYr;Sj2k?KSC>@jx-9%|1NGT{t9sCR( znx&ATF8K&bz=F_%lR~jmhkgJD$1Z*b2aBK}MGjI5**XL}6kV=UQY+dPrv(2$IF36A zy!Y<%vIHO^A|fIpA|fK9eWGmIygojWt=AW2+dAw_Rg;>U2-c3bK+khF#vfbX==S>3 zPkMFs_ruPvHl>kGqL7LQ!^kFKSDW%*1<2`XUqR=O+I5;xOjX()Qb??`36)B zj0Qsh-~SQpRRLzgMX_9hrY7Kci^$%9gIyoIZP);S%YEzt8OwqYQ$>iWl5cmAu`GTS dh=?eHz5tGcmT1N1#V`N>002ovPDHLkV1jzKnvVbg diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/meta.json deleted file mode 100644 index 6bcb85e3c0..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_letterman_red.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC0-1.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/blob/master/icons/mob/clothing/suits/jacket.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_01.png deleted file mode 100644 index 90b293d463efd69f67ac6dc22591ebfed82a3922..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1004 zcmVEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0005QNkldU}hbL!F_8l4Kphd(c|%0Y$8HL zL^b>q5z*`Q(!F&J|Ej9Ytg5PK{5LtyE#vVC)J{Sv+M^G2T}NpG%w7XkT@r0=&~+WD zsygRfmD1a4fwQIft^aA7bc<=4viu)v0XumSSuP`H*4Ta}B0?bqn&)|CpXZrE2wDEy zoIsw>C%xbAr3`D8f4b=sG^HGu3TTh`r!VLGA_=g~#${h)^KpxX5LR|uS80K99KW(% zorF>}IVG5u+9&%}E%4VT000000000000000fDdGeiOj6=Kd^n@yE}r9wLlTcnh(el zMuuT<-h1-iU#yN-3^ha&Z#w7>+PWKHdD$SPr#-_kOiD zP4JF3FrTR|nZ|f&1;hgjHLJi*e`_e>XdLaCKrGv_T3qw;D{-;1$G0@6+PeeXo%wo6b%e!YZUS^;|*zoP{(4*&oF00000 a$mIv-`Dyx(TGikH0000EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0003~Nklo_vlAd>%%#`2h%!I1()00000@SVhnFYUe0&)4R87EKbc27e5=b?r(y z=YI(hLKMZ8qgDTL^2@U9Cgt=5gb=b)YI95}MInTI<>cQzza;+c$jvcEdX<26{Az2} zr)i?CPWb30@Gik61vr!dX095q#mp}!8DlJpFH2vf<;3@vLQVS@C19@tBa-yxZnf>- zdKvUsZU6uP000000000Vqj)>pIhTouwARhG#h-ca^ZGBbwYKf{xYnACF~rQj$!N(r zmzkN2F{HIFevT}uI?>Nzh?G+I7EUSs>A<7KsM;A~=Bn)1(ppz; diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_03.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/base_OuterClothing_jacket_03.png deleted file mode 100644 index c05097d4cced840b2053959cf578ee7712df94bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1050 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 VyH9!V1E)}suBM?zx!RTR{{ktpp9KH_ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_jacket_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_jacket_01.png deleted file mode 100644 index 826cf64fd054f607c59ca7c5f1271449f630357f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11093 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 ZNzGZIrZv_0mg3Z+rFKpAx$>>M{{>xh3B&*Z diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_jacket_02.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_jacket_02.png deleted file mode 100644 index 5dae0642452f670430301e1e689594814ec41c2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8020 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_letterman.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/decor_base_OuterClothing_letterman.png deleted file mode 100644 index 2371390eb94fcbb4bce440be83e7801739dcac75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10126 zcmeHrcU+T8w{Eb3C?Z`z0fQht0TM_;Z&IXp1%VJk2qXkTs7eu~i6DXq(mMzeR6uEp z3eu~9^rCc;-bLgDbnorH=eysz-|u(Ne>;6*i0ZN&Rm{{9j*g61(VXXfk{a&H{gNB=F5q7pj4~dpo1pA0hsq8X7I- zbD~sWTb`4`sX=VBeS1yc@b{c{t@g+}ygz;{z4rEVS$R1AWg}H^Xj5V2r5@Feq1UAK zk!%lteFeX$MV7WT&5m-AF2}5U_0dU-D49*_4Oab)7m-m$H-?qZ?F?|sXzo;Z776vTuK6Y_sbQM8PZPAlRd--X_uOxG&3-{up^P`RD!>ls%=DqfuLRQl- z*GBJ@dD7gg+uaA_lj-}5=uWqM)|FV>3ZLf=ade%KWZ)Bv8 zF>;7lGJdJuy*?pgmo*^Fd@%E_yVn@aM{mxr4DFIv!_P7O5TwyM(saf3=K7DX4&GL6 zN0VZ73tJ^S$=CJ#7hX1AfxW971CkrbV+G;0$NWCWzR_Q9vmV(Q%hZ$KVYDm@q(5Jq zHer?#Znh>~d&a2c*@Zargpr0gUkp)byCrgB#;rj-H_1&<}iOT5+Xr%1nBFiq8VNkLp1k^g9i2BxFT^DNjebXciOin)3+b z?bDht{}H6%zX07?8Yq{|<{a;GlI0jzxov`2USa2w0fpCR$^z2#w!dm@ROs^dHe%G} z!)X08vg6z;V(XX2pkHTmeZMWlP0Me!TJ~123~nza-Jkn$qMf~bfwSFreUP)r-6YWi zRxFzZeqcbazU5k@G5KT&J*dswhD=Ue4~6A_?EHMPcOv=ITuXTy>|0V9w=m3Ne64}2 zH|(yl@tJBXK2EdOvCboR_T2j03$|y23#pER`hA>Eub-NV*gU1TD|h3Ly_0wcP_9HV zq?+LwUpzg~N?PIzt}}vn=BBD6d&F&;*BH8Ias2~HaPz7GA9ClILL8^idNHGFwRD}d z*=qBduPFGqgA;c%yIi||Y4~Kg`8669j$kKMv$?9KfkVKSMb;f7r$^RP-*8LSgGp5O zypw)UIT!_U-G_udJU(I^UVT|~Tl=)lJ6&38d2OoeP<{9|&`O(6_u)#|W%CzUwV)p`*`poR>r^+!M3(dcsyERfM;UoUXrGWdeBgY9inRUZJJNcJ{lz_Ik?5&KJa)FDPPVgs&r7&GeK8xm=w5Ag%CF>GW3wM=U_EBm))y?v}p#HGPT zciZ*cV49LQdfozu=7ZbR={&q;EN;qie!O+VbuX%s=<=LMI*-l(J27~f_0RAf&1C;U zOb&kYJ^&6ZYf$Wa@Cei^dy@WS_K93+L(x-oVds#|g%^YE(h&ijce6LFKFb2M`(KN7 z+C(M9o|dh?E(T2!(9P!=x0WzSwWA)EZ4Q_2%GzkTrGuA&-f}e(dnVjnP!$H6?uxx< zQ~FJ+I|5u9|WAL33Im1EaB@He&g?Vn+kj@s9LT?$hsPm*>(IBMjh2(G6Fz3-RHi zW{L=HV03;;VLWoJ#8E}%cGjDZvAAMZMS4+izI?e?)8i~q2uT~)#!^Xj0?1qZp33vF z&GB1z!%qPPZho}F1E2A8sGm`DV!zZuJ#{R^=CdrFhgjv9zVC67{zp%w;*uAKV1&!4 zww2}&F}P0Mj-cIP@Nj#ANqk>2oiN)o6U?v5`gg zZaShIu6?PrpfIhmjm?iwqHj?Ad5lghlifMnV7W+@ml1syB6amN(-sa5usafuyVcTP zaCsm1Jb&dlNk4gs)@mwy^KnRVjph}bSV<-W9cb9wcIWg z`k4sJcU0PD=!A)+ju5aB-rcov}~w_ zLJSqKpp9|sya>j5rPriwX>y2#=X*Y2Lg0{%)jQ=iw0EKL7DEE<%MKy-Hc^-@mjj*W z0x@MUGefW{t$x8O$1vgM$>w;LMxG}EcdjnPy^PCWn=W88dsn1J4*1%u9nH=u))V4r zp7l8H#*OsBC{>VSE+sfE8L8+hAN28t~lz;ip~bYy0ON%+qI7HcxI@&GQEap=K` zr?-s>?y=P9iZjc&dvQ-OuZT&Iyc(Bg_%8Ws3N9ME{RC*luF#X{Rd4~_c>j2AMov^l zk0Z(b!%y6WG3Ox>@T;xfr53Q8NwW#10m^x_{!JI+jrn5m9{0bijzuypooR~gi&BJS zIhjN=UGLv9LA}azBKqBoVO-nhh~=!k_f?ruH3Z`dfb!;x*h)GIhTeLddo4%gI+rhg zJ9-+GQWe%vI(jK~07mwTi)Et+YzvyHT8id_;6Se^JyM zGbOcvET!(Z7(A{3ZeB3hB~>bT#s6bwNyqHB``|%x;_bU|FzY@2PE&#O(_ZS%rpU|% zT(l}uke-r5g6;U=d}zAJ!4KCmfT$}@TMHSzmV zs7|e*hB&QqtghNbqgHow@#6_WyA@j@Q&DxUNYczgVcY9P0c3GdicVg6&X-p-Hr989 zlxk8m3Yfc9vhCy6%FGc>wKA2mg~FNf710vM$jmjWE=Dn-%<=DYbh46^Bdv`WPKVx1 zvVL4P5^;*Eh1^=~>a%hCeH^RWh#K!gVOC+1!>r}J(@J=`Ukr=KW<^*z6MG2YKjhS=kJ=BV*Nj%dCn5Bb}ic`Ai|hcfYoXIYkrGYu7$|*2EAw z4s+OKy-ha$#QYFe;?a2;TK&boqIghBNZk3#smC=kdJV`Ph1TgsA3QNyrXnFqjiyq zye-AFH@TjABG4RLW;bYGacrr`o-yhzzhL9FQkJOBIkC^(X3Od1Hz#gf9@UhlZ(OU$ zGHBXS!Ceh|n1c$F3#gUaovD{w;@OHDTYM3`*d6!Ms~CFv#ijGLyv_xf8*{Y9zOM3i znhJ4*-I95f^ZZ7Risit(j+sH;^{zN?lSNR`hUxCG#MAsvtUTqf*TCH~CrJtxy=e}1_fn^Dw!^E%xcgkvXEt~GZg zbFo8U1u2tWu%I8eF3^9-d}zu7V1dfTJV~uiTTjF%^!ny__U-Mu2L*b2eM=piHA(O$ zR4BY0Qt@0pue%rIT(?JU!_3-B4gN9Sr|@JOwP`-UT&Bq+gIFm|*c5Bi)1?K!NOV`z zp;xOIYgAEOgshVIjbfwQw(kIs`Nnu@n@vq3l9`Tjww}+km$nSQedjHomLS>Sd$~U3 zwmEJlizQIJ0A=NEL^s(1`7$-V3SmjbZcsfYxD@Ed__@K(sXB>0+Zi*7A9sB5-jPFO z!5l-k*)s(CF}X~&;7{8FZ|IyXsfRbvwqx6uVaKl|&sXUw_u>5DG~Nzt#`iCEH*Ice ze{j^`*o?|^s(Ze@u6ejTnCyEK@B=fIu>`I;;uOe1Fnyq9*j!QIprbNPWfRXi1f@5r zh$-FpekLuw$RNDpeoj{xwBJ{Wqh*76he=&MwmDq=9n%RtX8&@=0SmRJ!@ZijXz|pwmUfIW_o-_`dLf2WtB<>z(;whAFVknU<$c*Uzw5_!>|)y`!ypV3 z-T09hSY?H=Gp*}nS%|rRi0sBCXrNi;%eGrRP&@+CRmliee@{3^m4SsS}y4ZNf+iQ0>q@+qsZaC9HzJpiy!Kw*{>MbdInHJCXX4#D zWLQ^=S+=t8yrq>}@@wvEj`Xf+-aU3|t0Kw*k0<9nQ*GU0RMy`7JI&O%+~Uk&;E|97 zR6aL4`h~(nXf%NXTGVo3y5E=Vs)U=_Ry`$v_b{Uo3UDcWmVc%AI>%MIJ<@`wEN$Y4 z!q~}>QKrn*+9!T=8wli+hfls#Wm_OrAcyi+uXa7i7n39l2oNFcD#ye;&f!bSnI4aZ zJ5Gfm5HNfKWBg(rbu}4;@8CbO+Sr#OcY1PWM{35TY0-jfHArSy;``cG8u|Q)P!Go; z>16&vXoEiHj#dJLR}a{2Rs%P~91Z)pZP3~0Fr;D@Vc63u)|cXXE}Nw{xw4Lf)~P$2 z${~_p@CM}OqXcWZcb9VQl`hgnu_D|?>FIW9-b0U$)Q2Xo@XzyxbJ4zVFfAL4W84h5 zII=e3YW4iyt&KeCv(iRX(ckVQPGvfo`(|ND^1+8_K5WZ|_0-pD84s|wy^d_oU)ebF z$SUT=tFh1gpUq8cghpq3U*oUuk>OB1z1`-Kk3&OSA!6e%b?P{J6Ha*0QFYBX)ybN% z999AJC<+z?v_Z!PKDsV==c~09XuM|!o)r}+{5!`3pV=b3vAR$LQ31{f6cU)Oeq+mpNs`&U^*p}6-SKu;Ds_IP-J=5^!JNZC-DgiHf$~VYvLDE$@CIHyNMQzr; z`fO>Ald;{+aCJRx?d5dV>;CNEQw=!KbpUOo&vRv@=}32D>hp<6-{kT&h3^j|x5F2O zI=5hTCDR{wmH40B9;>QYi=BV+9WjI0gWqx{Xy)(brT_`Qsppa{QF!dtXkYM)B->Yop6*LZ>`VyEf=2i)=+? z8b709)v`!8p^mv+ou;W0{rR&%8SB~a=1&l1u(>Z|LNtNgJZ-0R?}!|Y{Ob`l?}wY^ z3hG7C((GeQVbk%>=Cz!)l8F!7yi;KksAYpNIP`DQpcFUWrd~iBT5kS+X7Eu2FPhbNGng z+394u71G8zWMm@%q50LcE}$ldcaKX`e|X zD(;DP6i;n@9H^f?9F#4Vw0uOKgYGWu<&($RI>1gAD~Q>STm=`Lj?fPCt)cE zgXTKg2owP?hO{HtqQ$)ME|h~q06K z1R@3`4u``*UgMfCLVAfhyYcQ*{NzwYyP=3!7ZR4>%(Kslv?aKc4j(xfyXl=)BqAPF!SCJL4im4JhOx2KHi==^Ez?Dk7V zik=`Zqzgz~3=G2K|7PJvQuFxB-@mkQGp3x+f(+4a1a~3|t>%GtCh`96)CK46_PbAa zH}rnjLEJbydk`h41JA$PsB7xz|7o)?BL<6iIk4DA|Bkdn{fTpNC*lq;b|?@UhsIL^ zaicJc{|!&V+W)mcf1A(#$bSoj;_grWzoGxo>mZf`T@k7Tl>5F@O;tJIe!K`f0t#z~ zIQS`Uhen|wXrw4o8Uhi8fT5D2NHiQGing^y+k(Lok`gG?Z&aGjZX~2L3cXK7As53^ zc+e8!5PLguJ5i)01T6}IK%_)r5-4&q^;y{6naD~r4o?1-=o^6vZGMJ zATT5)9Ed1VN=iZ$f~HU*VYU=zsGS5vLK-O{B`I}4wZ9GsC4EgfpoAFsuO59Il4MUH z;wj~Yb+#jTy8Sg|jK!mkNXUKJ#HGcdU^rA9EDeXjD53rZGDQ>JC~3aWDh?KtkT@8z zLm@6vIFXce!{U(`G|0snb1<;KFbK+YDAFSLtAoOP&`+5SLWPJ%k_bd&0s$un+>e%L zpYouncw~Q-3qqTKIxsu{qwV%9?pMtzBQca6l3*wtEef@# zq%Q<+3lW7&*&;=yD1BfQOd5)`{aFitvbz!NNuEd|S_wnR0m?d4itAvVc?5ptpWxr4 z@pM4%Cl^=(A_|6zf~AecVF=1gLK^sUwRvPg`#bC(vz6W7gLHHdzw05pzegc7_Y={` z-NglmMHBz7(;s>Bf5H7`|0_rTC-dK7Kdn^=F5Z+Xb|C3_I{#bu{{r}vK^u!gJG&A7 zUFg3aK;Icvw13@lqn#=L`#dQ()B;mq2Prq>$80aFs{-=(pXXs@ z8cNS`7mX`!0Kf^R{WldLA?XaIlbWQdqeeY*l$xHAGXd^%8vrZKu2#y zicg{Sk-7Te6x-^)*B^6l& zSOoFAqdk0HgcSKTLCebsK+sJr5IXHYGd)AbdB_XEsYIy)H#=A|xm zR_965`=?}RC#S^WW?u1V*9l3 zCg_KlVz0YurU9ec{kr;kITQwiX>`Aqkdl&P`waHrLie1zDv*JLlQYw_V3IwtdD3T> zjrQnCKC0*o_eGi?Xl2i=t#wOECF^z#51*srF<=fcr3&Qf=;>h@9vbqhLl<%vt+2aJ9CL^U`#cowbY5&2|QEGstmDMqhfc$(wKw+V%_54{bu0w#f_I3t`~udeXdEMR5gPv`(n*>eSwZ6lu0&C5|3;(qXd|NHDCeO@T1p{Sz22g zm0RXaPEL+MYrs63(H-0uo1ZUjY<%RL{Pqn|I*8ZG?NSns5^2t8ZPl^f#N%-K@~OGS z#gadEB_MiwdWU>@M%VC zL|@>za_DURc|b`?$y$-<>LNr^QpL&1Np)h+F0|;#11-MiBH>fh(^xb*$nTw%r7Tzd zmoGxI6}prl()E|ztG`}^G1F4=qNJ>>Plns(3M)T9|Lw)Cm3a@&n3x#rx|JBA)xBvm z_4Z5d{BJJrg+1`=$9a$lR61P^FXpYNxw*LoVztc8&9~a)6h&B>zN{m@)pt2S((;AO fgbp;~d}AG#K))Q9*>{{$cmPc`T~)HOP2hh4;U8i) diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/inhand-left.png deleted file mode 100644 index 77a9693e9540a54c0d60e78fe585379f1e2c351e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6746 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/inhand-right.png deleted file mode 100644 index 68ea63cc154ad4d50b590883e6cfe91b546284d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6731 zcmeHMc{r49+aG01(()ur(xgRU%wmR_v4ycrC2L57X1Qm{Y-VBbAWB6_iwe>56pt3^ zp-q-lLJ>kLB1I%+Nu?}#?-?q6@AEzH*KvIBf6Z~s%za(g@BE$T^}EjVy6$@>&UL-x zEER1P2m~^V=tOV_zgJ7&%8KCUSyoUh1foO_^Yjt9lS80<0gujN15i;YAAkZ9799eS zG`&sU7~FwXvmeio_m9EGkks_k>djxh98yr zZI|)*imdALQiT zqTp0{J4?f(deKa!edU8b&*v1UgyS6Bv-U=;NXiNH-$otooPH_GCGvCc!#-hpiV01oZ^NlhXg*M&~8$2c1 zwb!VM)aNspt2=G$t|F6rpOmM24->b1^RQDov#BDfy{(95vW*&+4XL`t!+#YU$;e|}MgLIgI?`2k0ZfA>g&*Ji~ zjf3#>vA2_8N&0~n2JiH4ZNlFz(@Kc#Ad?d0bnu!C?+>dK7!6ts@4U3b(|zen8KG2F z#rls+&P54^cISH+<|h^3*(4!XYl*FIrkT99+T82X+DhhZynfVMv~$T!yXha|w=dou zmNn{j&?-tC5YZN3Gp>@`Lo!SxiE3-Htb)W>^0Z7)_B(w5-DtVJ48^1rp8T`o4OjjC5an8#eubnNJPx3aSxiN3G& z8p5<~{Y0Wg{zu}Db;x_@5F*lnZb1gc*GjPz`KNKNGCi9lR(hvcsb5p$Y}|a>aGBiJ z%*u4CJ_L&w66;;b$MWm>V9vkQDmyee6f(fltgh;DTi9 z)hi1$)^%8 zsUlRYHiUU)AB~B1@HJMM+p92gTOMZNpIb0S2wf+lJPZmqn71^xf`pdK;7wz663CUF zzVjStl&sjcD!eHwT_@{`nTA$OPG6AQP~ENcJ1?e{lqe0}cSJZF zwR~XIE*G!ky0`GbeL2*{cm*qQQI$e^lSⅅG*%;N4Q)i_FYum10^`V_{W-S?_ZePOlPH%5w;B5Lxi zVXrFXul0r3y6jLME&#u?Z-kdax@{QPJ$~mLpLRE|%&o|9IA(OL)31|-UU}(Kx%L>W z+4sp@R_2Z(X-+Q{{2k@unF}ti;>^W7tnK#lNTiE{ zN21OZS&UwHFZ|fv*y0KOprN%>WnuIU(Mu2Io9g~^$Ex8?Ra&GPrdvYkvukJGyLRJW z)M+2II;CCv(VxRk>k8R^ZtoIwUJ{cLpV!89e0}CZVf*}w+>p11+;ENIQuxs4jHt27 zu{#|{{GUCYU9`H`umbi%4l=F<)K& z=Il8PC4GC1RRdAPllBQpD8}brpMh5iUbCiB{zgOF~LdurW zUk@};w2!s-=vo!G+Di@(y^e$G+FeWK=AzE7JgGW!t}n)Y-7=Q->*tFFqca3|I}D=tQ{~jN_UTxET0Gj@ zSmok;op^F(?Pp5!;-#zk8q5av$jIX>3-wpGXEUAHakDDUJ2^#2YUul+F8Pk&V6Lr+S1b6 ze1nlXHU^;^2>u}Kd2a=Q%uZv0w?ID5>+n<_$CymxQ2=8JhY#K&K_C{^5h%@e(1WsQmU`Y8XM{7~4q&pJ!UTXv*m_TDSRfTg)3dfxv5??F0uCS|LnRzG zSBRHb>dAQV;I*_Ht_PJtM1huiKF+RCJDvc5qK(nU2$;Qu6^zoeQh{0sXmq?g!C{gD zY+33tMIt^P4i5ZBo2pzBT#S@3I-xz!ceY=EP-)_OQjSO90Wi}6|nds z7LN;+a*`=LvB*+S4;+V1l7pjEdkNS%=|I|+(F;X1I1y~1!TEpyI0}Kl!VoAJ3J0HR z4~{xJf3xNaCshRXgiFYLIMNsa=Wu?o5Q^-Bzx(@J3!x`?Ckl55ggmi;3fKn&T+!00 zPWf!HaH>zS5Ri7s;%3w6a4;yD=czW1L}%A;Hc}ZGEDm30Aw^F`(x~5Xe6fHn!_cU3 zfDLfKK!hMO@&~+#MgP7)Kg>ru@^68F?!NK=fc~nNEEburcmj_qmO3R8EcK-E;%Pi8 zi-wn7VzF2p8fS`t(Xb|H7#f44!6>FkGRzD^H>2aISW_ewH-(DG6^h7QDj=l-$&Fbc z51o!c05l{DhBn0@VQ3l}2g8zSW-y$YDH?$^L1O3>%oGY20Sl}IGJ9%NQYsoqMMatd zIEon-hC$#=Kq~M9Yeu8O=om7FN~7awWI7v&X|p$rVrq!l+=bGBp#T-LOJ{}cG%m^_%g5bpnt=R5Qpi;X}O!V?6#2wW&z0IKMp zdHxRkjmaI{?SvvhDDgi`>VM!YCKA>OwB-pxr}*~(f+kuMTN0ZklL`uzZ3B2RbwYk2 zIT)bHmH^aoVu;Ela~S}*-%b|W*M8RDBr*btF)^W%sW4Lv83#jS!L165Kv7|6G6jJ$ zqaXl)hW(LU$fJuw$O6EI0p&R}uL))~5TGXGZnh!0@`(&R#*&@hB442kwcncy)P zJO-sVvD#1zxO9j8I$I0r9^~wdpQ?w2bdSOlrHSYv=JVMsK=7kZU-RaF!A-HB%+dd3 zJ{2}$ZO7w>f>q2ExrA{4(f!{5Cm7bTr~p^U`=`*SLMCLHau9(rPxOHY9C%*Bza5y9 zSt2c@|Ke*h`~Hg_Km&*4?Zh#Bk z_l1BD)K?;#wt^4iij=jE1jt#42m;w>G+GMw%-}n16ha_s;I&$*+#y4?g8$((jhK zdcV*t-e&G*W9yE2z4hSGM)pRZ;nC)Ilw}|*_-f0TUvvH96;6EvFE#U%hg{}e=lc1B zk;c3GMyxgls#6;p8pTDaQCF`>`icsNyvInvt-b}Cd5x`AHww~7hchS%yAvr129<(A z`{b_UeP4=3c}J$VW7ix2!BkvwZnfDv|1WoDAj&Fm`b2#C`rVBz*49*(#?trM;Uz5het(*`(=;^KHawvZlLn zP3P4&y6K;q^9JiRHtUq1KX!k-2r@XXz=_!^= WVehMf#nBt3bVU30gbTKtWBvsLA&Z;< diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/mask_null.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/mask_null.png deleted file mode 100644 index 2975c479be7566a6c59a7aca4e20778aa850feb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)ID7sLn`LH rJ;=xlwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/meta.json deleted file mode 100644 index 07c6947c01..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/meta.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/blob/master/icons/mob/clothing/suits/jacket.dmi , separated into layers and added new ones by erhardsteinhauer (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "base_OuterClothing_letterman", - "directions": 4 - }, - { - "name": "base_OuterClothing_jacket_01", - "directions": 4 - }, - { - "name": "base_OuterClothing_jacket_02", - "directions": 4 - }, - { - "name": "base_OuterClothing_jacket_03", - "directions": 4 - }, - { - "name": "base_OuterClothing_jacket_04", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_letterman", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_jacket_01", - "directions": 4 - }, - { - "name": "decor_base_OuterClothing_jacket_02", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_jacket_01", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_jacket_02", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_jacket_03", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_jacket_04", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_jacket_05", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_jacket_06", - "directions": 4 - }, - { - "name": "overlay_base_OuterClothing_jacket_07", - "directions": 4 - }, - { - "name": "mask_null", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_01.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_01.png deleted file mode 100644 index f2111b4f1b37c22fbe5b3d376aaf5e3de8055def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6221 zcmeHLd0Z3M77oZ(6a+;;QHep>bdt$N7Q-ToKxJPPsa7VF2?Vk+2_{&fRIOGK7qn=F zst9UD>xwJxfY3ffi->?vL_|SRs#Ou|_U;5kc=g%m@3rqQ6B2Uo{myrmd(OG{H%r4p z{LM^9nUY8(v%mn~2=L#F_?Q@h?;=TZ6NzLHH7_bg9f4@bN?ak9NHMZHRf&-?twc;B zX&dj)kgaHS9`f>nOP2}#T>a=Jv}s=~bbsX$;CgBHCHG4|N+esOmzY{q2$pY3{sDgd z>}u(pBf{k_5C%*BxccR*Y$j)&%=EJ~>(Q#Pq_R)*I=Tt5Hoth9v!Pp7Y+F7~RVhd6qK`LEcncf8Z;$QFkZH)nl=m&FrS+fQ5I)AZY=hi8i( zRQ-IdK+_spsPwp{x8O>3mFD@jyjEG;lKU+-Ox3CQ^a&SkUTnK1kUvGvq;1@})1`Fl zv)EeHrNp@0Xx*c+IpJ1^H}5I2vKstNllk0pzpPwbvm?v^3R!9tjc+KqUyBHrF%%jmhgBPvxYza8D(Eir5*y9Y_wfDuP`W?T7eB-DtuUqEOc(7Wbn-}(qUOX2Ze=SSeTGCMfs|~&^1^`gd67AJ2X24+qG-S4i1S5>vBjf4 zW9*YATJMU1_QBZ&YiAY5xNMys6#LaI`Z4ePI%~VbwS~8~osX3qbeKQyZjI`SJb&Hi z{-Xt}oTiTDOV@@w1uv=ziWG0;%W`Ip$-jN?r}6_kb8Yr;lB_~vzjU>a&l9k;=%{Lbx8 zW7Qt*V3(Jciic-r#nh%5s*v!f<|@xeT}DZ0n(X&82($Rm4gBtz`t-2%(+e&?34gA% z^O)Rh*X}teF@?Xvs8VvqscShW#bV{fnug0N@3Q7p(*;|Lx1}C)DE@A<)4{eW8_L?? zvJsDsPEO9(N=JsKcI^;2t*kd{x#Hi_AQ69m;EuX^_^MrK&0=QOHu}tUye8Co=(Cvh z_2awm{eI8T;RFX4*V9LBbLY>^yWm)D_Jwlg_CquFT3Ba{F#8>!|B61=u5HwH*{*`@ z=BJr%FG6k<+&3G4@bYTpbpmVOgP%Xwn*MXh;jEhQ-09u4c+T93^H$yn3NSzu4DHV;`wjc9qD?VV{mbj9|aEHv79vtz8s$tJ(loTo=U{r6;ZMm7&$+O}REQ)XAj%+0Az-Ndc>G~0WA zh#>Kz;Zpmf)RGtHj<)YT%`Bbj$POLtXq`D`k_MhQ()FQLvTr#1XPf=hiFt>)JHH*3 zbZyNkcl3IiHC z#{SybdGG#p=8vz^Nk<^Ov?G+PMNPDxO!m3$gaqtQ?`OsWEpr_p&l9t~#D7z_v?AXTbdjc6gc%7LKh;qb*&C@xW| zB?>v2;6#Lq6tz2r0@lgBfndM_{r~`t0mEDfW;-`uzQ-YKDq0>>^b0#hkca1`^Ki^~)!NlN;2O~m+!C~@*NI$ATxk`=5QH-Dh;4n}KLERV-+l|fSibZa0AhU` zcR*+nqB;PxZXS5U_rWnlt-zxc3aLAVu$D|v>WYdi=q(q1kOI{S>cE(YsJPym^G4!n zx}kvfKJXuyA`=uE`G3dr7TU)$1y^encv2`HDon&s_4|3=1@2>t0NqZd##00T#HoM7 z33?JX0LUuv)PDLSvE-gnPfL`ZUe%o7Y zZ{{WMNMuCJ6T2}%y1DV#Adz_(3?WR=tT-HmOBagi95L5zAiGK-R%;L(n-ULl0PHg; zF5NzpoqO}oWguRYfDy?BGguJJhG0$Y?At9Rw zjv53;*+M3lC1mz=vcBB-E8JtT`3%+@_XITJe0-Cu0^$S-4(9jIW&v@+@B@i95}Be@ zN+lRRFw5Um{eQsqlke>?e`A2aQ<$S#p%#c(100QR^ X{a#2$ElTu%BP0U-LVS07$1V65=6V93 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_02.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_02.png deleted file mode 100644 index 01b3175af61212ffea39d5ad103f783d7a897def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7577 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 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_03.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_03.png deleted file mode 100644 index ce0a76e863a61771175eb6f6cb7b262c9707fd4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6112 zcmeHLd0Z3M79K>AqF`+WL_k8SsK_KU*%JbUJyCX00jV;XOdybrB#?kgty(Qrs|7_A zY*kcn-x0K~C`wg|is17pDlSE#Zmrh3zB>UCUVZlYd+qzngoNC4zw@2to^xh?lNS{c zYHKsZ27(}4i8v?*{1=fQYb)@*UXjrZLA^iBiHkSHU`C2or;#g^1jUf8B`AbRA%`H- zg`X#=z8*HB|MMS5>3SFR)_usU~QSIe59q}l@g(IYLH=g!84mHAEBv-{rDOF1SrQrNpR$#2ue2MaQDdL;!O z^*Ug&Jy)~yH|N~+}xB&M4h+`FN+R0SzUr23dVb>pFFZwO}b_(IkMTiJ>u77 zKmSRejriiXkeXFUq&v4q1)lFR*7FU5+-Lbve~*)$W}wOK5@n?6krXUET2XiuNjpQR}Y9d{y}Av-MwjoJx#4*RX3@{C4Hh z2Ct%tnOXiBCnqIcy0~xr$W5Znrab{G8f(H6)2bG)J+*B2g@L|44=;{wQm>q{W#*jz z4SCVC?VNpYug;5Frns4~HloZlKX8(B^RAh6pMQ@g-ZdLRc7fxpJj@Ee_kM|$_i$_Ymynp|-k`hOss;6_R zjNgB;D0eP57jfidPCk@$zG2$oiwnM=cJRV^P4Up-F0-?SsLMk9pZF&y5*wbbd2|AQ zynDb@%jYQ~RnXF;@k^$+C=&?Vrd?vgseu#D-Vl!!*P;4b)y~5bZ^haducLl@J78$- z4;d#C>;_tt={fCzYgvh|7EA8y0*W?!=(DCr97%QVx8-ViL&af9{lzNxR)Hb0l2v+q ze#MjX`ljubi&cG3rU$P%v~1bACQ)Iylepbhr~JI$PI|b_I!hFlGx`K+a5 z%DLA(2MD8G4Gp_CeC^m!#Scj@_j*xo=WujXL+QYmKj!MELbVkW)0QmFyvnp@ue+PS zb5o7mmN};h*HZW)$6HmrpmtX2@9R>_=WgAzNW~eNxqVX2kTv}0s}58_e4O`Fkvjf}^ATooVO{ojypv<{1Exj@)9U-=xmD5jKC7u}-FlE& z9pb@`bn$SQ>*{4hMmu@lACwUk&Hll0J8g8yZr+B)L((r596%N|jX#rA#-GJ2Tqyd8 zDr<-e>Ep0!XWHr_@#)-?)qbsy3$EwajGP76hP_d(wZp zRg1Kasg0_qPtR8rkC^__sq)N)7ipG7&xh@6Zls2aE_1XQmm078T+#I%Y&tVMP&dpk zd}S2W{9|jePV^G4-*NL%4F;`%PB$8jG$WIy z(WTH)KA%rV7<2{$1_)T6tu|mLSgrqrr0C!XBJ{XUp*1KpY6{7TNi~@UA1W2>Q##4P zE*@+G!cGI^+DxxE$mkNVV1al5fX+Y=9*i(x2A|$tAMA#QcWJBjomm9=q?<4;9i<_3 zm8yq^-VmJi+TI&A^l{*lNsl4)noJ!|1ZNRy!zbO1YL%J#?lv>^1SvB6t(3{>z$vrk z?mD58@Te{wGL0z;mDa35qPrtyco$BasZ*LUGMr8*2^DZe517#&c!NUz`ha@GL+<>+ z5n!&1zX$qNzRbRu^C}3^;F+XRNstef^j9F$;0l?*{FBEbFr3Ta!YqV=!7PT13uA;F zeDM)XiZQrMz7*?5B~j}Qm>MTYDnL$C03JD)#l%rQ3bSM!Hq2tOn6MP(;4qubk>gSs zis3R|H;PD|0(1hV?CupwB?D9_i!WpFPy)trR0{YI4vcY_T$o8<2#-nd890u1j+zaGmXWac9PdF^#zUoYlq=_Pda~;^a)S}m5&kKl2EaLk<}#l%Wn^dljp~UvrV?avAq*Cb zuwjH7hw=mrrhtu5J5Iav^#7jlP(+Hd*nAvDnKA~k%Nqay diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_04.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_04.png deleted file mode 100644 index c4e9a174a65f0535b2f2c02dacfc942ca69fcea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6265 zcmeHLd0bQ15)Q2bqM)MUg2FZKVD>!)1rnAh0m>$Bg`1ljh>(SwKmsZvXa&Rts1%i| zsJNq2D~q_ZsE8GmBJQYY5yXAL;_}W7sPO8u&);j`UnV5v%=zY{A?h#_9qFEj)zg;T`Kz0l#@vvgEqj zb<4o?ZMV~(EVN(cFL6Dw{K<}zEu&gvgYU*Jdb_8h^fe?&s(JkK!eiE3npa``zU@t? zdOO$cF=>64h{=;0`TbXG#;n50`TdA3AtK0Kl{-(bmSbrww%Kg%Wc89#36H0Sm(wpJR z`>-VObPVP6_>`H|7iOEK^c1R0zPZ)pF1YJIKEZ0MFwu^8=4y0veAdm>6n4dOMSevp zE3^KkDa6Qgv02r-?_R6o#P2G?4(3>*e1(kD~#jpdJJVxiP#V?yh*6c+RJgWi0-3BmYrK?J!W0$ z$?1>_cVEJqNvNb?5auJU$lD0fM+uE zsR6dcu-pODvlr%PnWnZ#2u33Yhc5Yc3Tg=Clcy-kj-?jZj`iGG(;T~f{sHp^ zx??LgESOsT%bfwqRfmj6SX7qWI9uI3Qu?6+@7R_+zvcH@!qB;|DUWY)E3#(UYy(% zdWRP!{YGz=r?@m!|HqAGKc?U4cWO6h*Ota{+hWS9WpZUvAuGjNwNW8HcU-e`dhg$l z7C2Y+ed2#;V0Pp31M{N_Zp1XKFF0bkNL-~a&ek?)Q!cz{K2~tWIdSli3H7z7E3IVq z^Sx~IN#v`(iNRB@PnFDK&8yy0@3h>qXxH3`-P9Rr;SD|7GOIM|JT+e-v$xBJ_i}r0 zEDL|Sn|X0~AB&l3kW+5I8#eisvBp=jbH$SU2mWdE{)V#iJ zRjJIhG*#NZ$mSWvTYubhDC78L6YJA%H@FMehehPnSeqN2C^NCFZjctsMvpG|Zqn^V zm+PJ_Hg~)nIB)d&x-C$PbKpTN9)J8 z?RqufyfAVD6jxSDAQ&x@3j{tQf#6-!0<9{0eww34snhWCV85xZb{5h7B2W7KG_h^j zCjWd>t0^;c0!%Wd9@!ugq~E+bzQ}6$tDs%{B5q4_gPm!DE%d8}R|?tp=G%0ar9=8I zZ+~?E+O7K|Af}xstE7SuurJl$VXREEQ}S?-QI8uZxLd}^nvG&C>8ApWN1ga;htEh}+{4LjSM#Q4Wveq>XwXB+W!q9G z_295NMSFXF!P;^0Z-*A0yYyzx*IBPeAG%gYba%SWR!3f~YjkYDOor&sjS*m@CyR4@ z2-nUwt;L+)lB)OJd0uzv#NDq~=IqW?#U~0vHhWxbv3YR+{=L@gjJ!8-gd!4F+Tslv z5eWTf$iX2JB=+PZDg_yqsw5~`uTXKs! zF;%P4SPb=x_3}qz!x5g8IC+wpgPsov6sQ)4^oj_jhOc)d8hH8OH!h|SAp=Ak z?nn$0`#=H}hC)m-lT0PK>gCaN;v_T30h7x3zCyQ73NUgchH15GK82#w>Bu?;S%rmC zXgnT|LZwsabP_<2G%-potS2coqi~824k4;RFu7VQS1BQ!6PBo=w2nj~n1?#a!7Spc z2f|JR_}D<+2YO)Xg7!=1&U& z=HBynL%)lcVJ(KZ@`WlS3O6beIuh~q@}(+7F6A43a+xTMaOfNolS+q4OuCdqf>9ax z;!$AcsNuVm%(APNC-p9A~9tW8i^;Pu}EAtk0X`H zXdF75*@eOzlY>ftBf72%r;-9H8j~lbb7?3EL1+>ZQ%Yr%U^at8VxTaU%Rsp@X(tuF z4}51Ikt2~#rW(i%5}ycID^p<#P+oGSRHf5=nDUn^P(Lk)$Q_yP=t zwJOYCrHXJQ;%kF&N<&dW4xQz~_f#PUMFSX>;uY6fb1rZw#V~ZBd;T$>=)&uCOu$V6P{m{sc zQAbOPkQ+h;L54QKhmnr(Yv5>9YS;o0$Bro^3|5Aspx<^D+dH}ZBZ&;lcrrEvq#K*Z z0=2+HsU(;IniYowb7^=Y%ed_B>>8C!tAjDrITYjo*k@2&hJA*{cjn)O?s#1oiYFJ9 z&LmM;Br32W6uu_wRO( zYjBVK&OHYTem=g-RR{b85sUdz?KBs{TLVy6AUyn7>l* z3hU4osMIl_2Zw3Bb;?hg{|K;y!BdW)N{#AMOYaKl2uqi11Xy#23|vpZZHMyyy3<+X zcpLl&U!A?$4*8S>P|(^|yt~?85^SR0(eF zI`BAzGC@}a9;Fydrn(CWuK0UsVI~G7z0@AlH3UNM0rXvhJ&X#%#78nKOP4J zY#li(wzln=?Kskq>+!Fb7!B!v`3T?uuLi-0=Z{opxp6!@f{`gM*-~so$e-{kEKZz; O4@ItC!rd+*3I76yYA9_0 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_05.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_05.png deleted file mode 100644 index 2d1b7635ceccecd3b7bf135c4f0901225ccde282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 795 zcmV+$1LXXPP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N?^5mn000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0002;Nkl-D|cHnWfIm{}~5!}7Mjo!>(0^wm4x<_4zkE*<~Y+BbJpTy-;`>$n+a00000z=dVi)6FcV%Fo(rgK zlE*0(;_9l>B@^1St@iH!fZYb5H$Ufe5LI0!qor(002ovPDHLkV1nn(UOE5( diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_06.png b/Resources/Textures/_NF/Clothing/OuterClothing/Coats/jacket_procedural.rsi/overlay_base_OuterClothing_jacket_06.png deleted file mode 100644 index a0f142ab2566f2afa6d845be6c9eeab9ad7e0823..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 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 Tmw6h800000NkvXXu0mjfbe(UH diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/inhand-left.png deleted file mode 100644 index 84339384063b79a613565e6180950582bef6cf60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1149 zcmV-@1cLjCP)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE5H1hLS0g6?00MbQL_t(|+U?oTY7*pHp*%T9udK(zEfY{mA+sqT7H^Psb-r)4HepRg^~Vz;sGG->EP{v+@|5K?8m} z*ciV4(1|N6mICG<;jUS_dB0HT1reZH-yxtN#8xb+2vNEpmYs*|d2kz_{gJUrOLtam z1$>#Gp&WgKw=#(!B=q+5g4*lw*Jfc@hhY|nvA*F!3W8w{z$jmV+sXPzPK{bRvv$Mi zs=ZVOh0dx8?+0BphISU^b zs+gW#gmOk<7Y1P4TMs0i$sm_Akv=$vHCN%ui)n;mh`wTv_N>?nXa^n4y#0W=`6aB@ zHz0)k`%nphL<&=H=1~3m0}IPFNGY{v#dZWNGmC4NFQDmdqQ^M^cilzd_lXojz;A6L zl7y?5&SRlc!--=$qzXB^#GvEBo=)obr5o6RCcEl7$$5Kt)#5lI9=01)MigQvZ?v$P(8e?>}x zq_tBkDFU!_p(_Je-j6KC7-Nhv#u#IaF~(T3?d5_jlJ@8KdO=Q90Xi1sL=~W8K{k?9 zfQ|)OCaC}&3v!|g(6JyV>ImpqkdyTWXjqUFcMsUMR|~R%1mgvnG1jeL`vy=QNm-&X P00000NkvXXu0mjfi**9~ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/inhand-right.png deleted file mode 100644 index 1e91d0c194bb5a4f2254d1d61061deee71671882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmV;M1Z4Y(P)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE5H1(gJG*fJ00NguL_t(|+U?m(YZFlz2H^Lc zOp=)-CT-djmC~ZpdO<;i>PlTG2rl{$ETSO(1OGz*fy=saJQ)q^V-|5U@0F!rd(=1)RozJ&|2vGG;5Ks_e{Ss0Ef@C|aOb)i=z^=Y?d;5p2 zC?8(O%wYiUC&wsDAK@$v!}AHPEv=x>fzc7}kE6#U3oLIFN#1n4K^>F2G((y9bW- zMHYgNnT;@sL<;%RNm#`mROX)on1*2%03jfgIY=V~A=c1-^g5(r!czw9rAj)=6`*5g zx$z>GweV(Y9;4&aP=!8Z@}0QpjdaB=`1X$yT`kcoe?xqpjEy>HgO-a~MFw zTf^9k*O-``!D3|vLdYL~A_YJqfsyAEnE&t@Q*&iVDI*O)$IRgtu*@_roj-$`vx=6& z9@xt^^51rf5CU#}6@esNJa-yXvt=AP)QyJg)}jnR$IRbXK)rq?n=xr$N1KvDKo-xU zQn3N$z^Q$KYn(zRUxEN|_+S_LzF%$YJ`w3(p^llwuWno^zoK+HjRe&pDF8u0B`gFa z;dvfFlq+@}cbe%i^sh4;zq?_e6i8ZOM5G8nc+lzqFxPA+!Z^;%7-Nhv#u#IaF~(Rk zieqE^x5S?=h+|`{Er2*S###f2V`IEs#+K>Curc1QE!)jFHpW^5h+|`{bqmC?G1j{R tV%QjKKL>1xV`IGIE$}mLUm0V&%~$y6P#uOvNm2j+002ovPDHLkV1l#26z%{3 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/meta.json deleted file mode 100644 index 651bf54b5b..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/bishop_robe.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Ported from tgstation github (https://github.com/tgstation/tgstation) by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index fcb47c700070f6b215b41a66a6c51366318854d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1650 zcmV-&295cNP)EX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_6A)iI|lD00eGHL_t(|+U;5~Ya2-v{$_Ty zS|Vg6vf~9KH72Tz!C+FkaH@cdYwi#DQlz>RceuNNi-lZwT>e3>Or_rt6|QVUf}1Oh z8VP|StRxa5t6lBR7227s*0Rn!(kjP!J`i}vv-)PfdGqFJ-UAdA6ciK`6ciNhCPT&0A)>s{rR(a_xS#O*6@7*z?*)bq%~O1Z(A0$Qc1M?%_ff9Z7F_|gnZvL#dB*k z!f&5Gk>4LYU>mwF+G~!JiU`yA9mZf1f_eD$B;<9^6K$KB44ktw_V(alqCFfWTciln z_)YTd>*wJoNy$0!hOVRLIM_E$v_>NUfWw#&XHk}L6Tib4HZvL2J#V5dDZhT(fox_n z*VN{S5~qbYKc8e&92tK7HtN?LCvIY>ISz`Hib3$UMQ(+ExGa)}sItaeX0Pw@T zdrObpIKRV~_{7JxFeey?Nr*7V$15w)N~Q5u==A^qC&OW?lc%A1-vk+cJ?RUAq}Rja zW)r8qUg{H{#-EF90om10913$UAKimjK`=3xhVQ2q3QyyY`T!aJL_UBA8d37-bDDur zTKp7u9Cuy-eV&)Ef&kqhxaO4pw*s6FhcF2dUbhBbXZbt>r8rIbH2C1UpfkMw zhcF;ZMF1XW^A(TYzHkwWlwNaCi^4SiX?=J<1qB5K1qB5K1qB5Kg&C0g>DGGkgaPBE zNcr;eyIuq|9z9~bR$$}ZJCeEpyhwqA=jDFtbe1Z_Uk@KLU@{*V{fT~CP?^aWDaF2N zBAU2#&d%7fCeOKeVszg$#XUfLffgzN$F^bM!gWPLvhI0!dvJh3wVJvJgKAY2W$au`cAML1SnF9RZ8J7hSq3=7l((bul|d}Ly;U^y~Qn2Di#pOj->kk1x_ge zo^EZywk&jm01jj5MUs?D@c|LeZVEIi%XTFw@*ElcFxZOg*zPUpKFfdj^1Th_Ql zuHF9jcbWnmx7*R%U>p?+tTh^8$1u?N`gLjM|94my6pKSx>RaHZbN0Q&oxCh=;*v?q zF2o651pykq58JX*pS*2ZX!t&^=J5P;ZGodgf$=h!>iW7cIbJY<%ga;+&`KrP08YcA zjJ@@B_T$HogpV!hkth`h92E)-7#Az>oZv~PgI|_l{(iHG*PV{w9WW-wv$SJy+c1zL z1gl{x%p?RkLK1sm863CU$c3C{IEEY{(vhI54^RRq0g~gwb+6Uq43-!Q$GJ8$8C*!l wA<`Ej@jN^)mRN=WycQwOFB=RgDBNNE1IEEs_d|W$VgLXD07*qoM6N<$g62N=*8l(j diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/icon.png deleted file mode 100644 index f7237dd4f26ad32e3bba6fc8b8c5eec499c36482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmVEX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_7^jI$X8@00HhvL_t(o!|jx@ZW=)lhQHlg zd@C!5j7)`u5H8%Nxeg`H6XYE%+B`vIrHCx5yaLLr1VyfVOw4&-Y!cJD$h6Qsi+AKpw}OD@Diim@Y=q^L_fwCRb6k-8=B9Ubjs-*ZlVAh?_K} z=llG6egH*d82d=*0uDqdK-~a#s07*qoM6N<$g0+v$asU7T diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/inhand-left.png deleted file mode 100644 index 3bbf670574d70f3d1a4e06d7758eb4dc31fe8527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmVEX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_6@PT`j}_00H1hL_t(|+U?pgYZ`GF$MNr7 z%$*^eS~Lk1Is~$X;^I&UWa#TCba3rd`T`s>mO@{EL!o=$L5D)8PT8_$klvzFqC%qg z_nt0l+s)I8IsAR*``z91+;e}0|AB~zh=_=Yh=_>D4)Hc|(oaW6_U++;_HgJmqsT6c zMP7HiUY0yS>>N)E1%OQXEc{IrA3MiYqd_x@?5fcqc5YGBGWpviA$E>_ni4z5ZIUdV z-|7T3qsX4^?Ez2^0=|#OT!bOllL-Kw>6G?x=q-~Ey+4PI&6dhPiV3I(0lhTkCP@Ie zNfJh8)PrE@{9sn_t7;X1L5BRJSOeaaN>=lIULG9q_5Plb8Sn4zmcG{8a@k6MO~Am6 z4;k`XodAHM=P@$l^ze|8*-AGx&yCDBbCWZLO`P<35D+`Z=YF56?=M#Jtoiv`kTt*c z3CNR;wD!k%OwsfBm8JmvoK7?4uP2j#o=kW4DEX>4Tx04R}tkv&MmKp2MKrbGxbDzF$2%>bq^ok@1i`*yYA1?r{qlr_(bA4rW+RV2Jy_M zrE}gV4zrS^5T6r|8+1Y9N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`TKD8H4Cb|!G}md3AdV#@kc0>sHIz|-g(&SBDJD{M9`o=IIsPQMWO9|k z$gzMbR7j2={11Nj)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3on+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0eXURssLJs8~^|S24YJ`L;%kK&j8N@F3KqY000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hF2_7Il;E2lr00HAkL_t(|+U?pgYui8=2H^KD zj;s*Qp}5LW$k44z@uIB|NPkDcgVsW!zrkbaKk#7aoGzI&1PX;_2_=vrkfBr^ToYoc z#Inx%y4Y$$*8A~HsLVTjn;@<&}L{vyv2TZ>UqAhs44 zdA>CNt*%7I$j;gt0HEV}_>yIK)okKqIt2jyn9a~nk_S5pH}f~uznGcG()|BTK*#g& zyC`s$=Kz4SJVz>mj^{Zs{vFT5cwX?Eb{haNz9WC-ZoX}`uaPU_;7XQ z%o*^0YfD-;CSWXrk4y6FszqNZq#}5}xrtN+uF*i5I~A!ea;{Oe_|o$bTZ>Pl5!zap zC#fqI`4?xwUHNt0p93me^DWEZD}~FV008`)&73OgWIDaIv%~qn7!eT>5fKp)5fKp) zttK)?B4gy&-k!KzhhDY#UEeQ1|JmPnwh8yT^n0Q;zMh`qpxdq21OUL%WP*1=P`*b{ zy9V@=MD3iPD>&|6x5J;ex8=q9I(lJ<+MNM|AdtoQ9~>Xoa{?ZNl^gJ#ckc8k`~}Wh Vv{0#K_W%F@002ovPDHLkV1kuY$B6&{ diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/meta.json deleted file mode 100644 index 5ed4efd304..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/cardinal_robe.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken/modified files from the base SS14 (used redwizard.rsi); edits made by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index 835c49fda4315c5b449afe74fd431f9b7a4816d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1843 zcmV-32h8}1P)EX>4Tx04R}tkv&MmKpe$iQ$>-ANIQr)WT;LSM2k8~6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$B7h(UF@vbYOg)ia%)oPe-NVP%y9m$nKKJM7SMnwUd?N82(+!JwgLrz= z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I5bWxZDATo^;8O9LY~pC=`JAGy0|+5WEHY*4*A&`#607GSt=b4RCM> zj1?(+-Q(T8oxS~grq$mM6$f(Y!>Axb00006VoOIv0E_?t0050u=Ij6f010qNS#tmY z4#WTe4#WYKD-Ig~000McNliru=L{1OISg7KoIC&k1u#iOK~#9!?OH)=+ej4tq;)M> z#xb>%P_0REAT&OtA<$C^fu)c`uc7!4EK4aNVaX+IFPmOka%dYighKNVmXho4sq~V= z-ipb=frXS^(v+l@S2mF}PLcNDj5?9!)MHC-QuKj|B8~LTd-LARn>P=L5FtW@2oWMg zh|n1d<5LdL{VWDu6ifqUX5{_UN|DSYkV?l<*Bdz2O!t0Sk|9Y7^jZZ62mkhL1uQ?sLs4vL_t>`G zYaaeDS^#NSAjE)0Oq8VrBuT;H$9)Wc%3!Hz;n|A>4jUSV2Xk&a`d$!V`DG~q0C;*u z_G#Eu5HG*@CG8In=6pZ6^uWUG%r2H5SS=j}fZ@R$RCUDZb@W+&S2%Lk%?KkrFTdES z_Pu!aLO%1Cg+)vdV)SeU=kXI_xW8Wb&vk*tg?UU)OrW&0gWuLSd^^H+h(5o6|3~+| zm6esQ72xHk!ckZ73QfVo&oxP9vO|s(mq8j9(y6QX zfudyF;N6^YHD1o;of2~j%bv&gO9_7U2<(ykq$qOLCUB+1Hmzf@xj9NaDT;kdjJT;c z@jI8le5weGnE1;&=K5ZY$N#0c?54sAG4K{nQyIi^4@>smg{y!czL!wf1(Y-sWl3(H z72b3 z-@$2M3OFzK{%ARg*_qwY6)-!qi$}}JuKL)s0?zoL2fwZ!qhIjjqBQ}$5W5k6WBoZ6 z7v?WaFtfNYkB#-`T`Qp@q*5v0g2cl3lrx&Y;i&3}^Kz{ada>lowSuFnBhG04hT~V9 znaK`0sZ`1d+yd_1%)9jgEGA+mZY7%&?vph;^wFjqw~_)TVy&)t=UN8$Zsvnu2LIgq z&o}SC^Qk%OPG`{9WsvfE@%n=XNt45y1ij`@ueUV=Z{Cy8E#S?2f^E(4?L#++@xGv{ zBaT}qa6v%BW427LFBb4EAP@!gt1=`EPVq7dA0&4y2y*Isym5Hf+^2pnONpM9(6I%u z1&C}Y{57jW+Vz8{Sdz;Ew91h{qd~vfws_LOYREztPa4={_`Ut$JtF6Jf%6DTY9jPd hxMbT=9YBNt@jtai5ySX diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/icon.png deleted file mode 100644 index 6fb096351e524b6f4654c9a1b7238ba7ce3aea2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 zcmV;519kj~P)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE5H~UeKgKQq00D+cL_t(o!|j%_O2beThQCzl zy;0K8rWHyN914y;fun=3;NUZKD~^u7hJ&N4gQG8?n{I-XK(#F)(A*o)IA{WC6>@8< z2>Bt9lY4K@pL7266DU!lM2SC!WqP3DwGvU4bI*0G7>}NXJ%8@NuL;mZJkTM~T#$y#~^bgZ)blU{|Zi#q_WF77z#RleM})G=&$t;BWe z1mT3OW+zL2c(j+ROb||t{Gf0J#-nE|9XqY_eNJPgBV#jKcns5|vt&%MZj|)X0fTS? z!1c{8K{x_ntJ%qfxKa%$9er!XQrN~CSYNbsvo`!IEl@f_3VY6i(|8e5Mv85Ct)$4b glz%xTO8hIl1D#5w(_`n&-~a#s07*qoM6N<$f~~fb4FCWD diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/inhand-left.png deleted file mode 100644 index 13f968ff07a8e2049f5ba51ad1d1e6844bb000c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)1pw7zN;$(kXQ75CmGZXf|{UWX%zLi_AS>AhXwc(GvL41-z<5kn4uDvE-ZT29t%ETJ0N}kx*L7Gf zmsqV<008IQufzE~AC1lDxakzwZC~NNhxZ;;RRI91s_MVnZC{h}@fe%WQDkwk)`s}h zfYZ}#+jjJ|VqPf)5lPOcD6$B4T?eHUoOAtoPJVb^N|6qT3tybCabBn9MFctd6h%4! zIK2V1*1*4i*-3ecnb1OQdLjg3p(FaQ7m07*qo IM6N<$g0t<8 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/witch_hunter_coat.rsi/inhand-right.png deleted file mode 100644 index 1125a3d60009ed148bde54348286e11e6da7f35b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)1pw7zN{@Ykwr_W&;_)rLy>V(Sx}b{t9c(7B9VmW z-?AJc0YpSZL_|bHL`3vVULGCbUX)TPzrI{9i|6@T>a^CT`~^y>WUWo5_idH6HuZgv zeAM#)sLU`7NlFO-7{?L&{T=||y~pWv+Wd%_=bu~3f7PLsN`2o0073|eF+vD|uIm5* z&bjJvdbHd8SuOw7EpR;S5JEr*0mc{rfH7w3J05m-J%PWv&7Y52{^HftTBlq!;JcdV z^LevZ{#MQ}rG)psn!h*+#uy=`gmZ3cw74wN3sOK*h0Qi0a zD5a8f?rK75h4+3M!N1Nw{}EAYZ(Zy8iHL}Zh=_=Yh=^!&wATOPujaS4AMCmgF~$Vc zHy~`?s^ChgB!rk&kjHUswg{_7fH7uTd2QL^+F*?k0w3?6kWx;g;AvTFQ_B4e-7@Z4;7~v36xzpwn2)4FoBZ!4q1uSBlN=p%cgr(T}57a7HS%{_ATG&V+iPas6 z5jij-G10g3*15Ua-Ea1GmfhPK*v#yFGv9mj=9}5e&bGck8>uFzr6vy^V-Es^2xzzh zVF@%m0Kz61mVmD%aQ<=6m+M0PIz_Q{+ z9F1{%`=>fS?kGKn0rsR#a$a$yAunx5KH>=Ic9+!h@Yf{0h^yBj~aRUgS|)Je*j~vlfsK5KXX4$LS2}Q3vH+ z!O_n(0fVy)>~?z+xgaNqKu!|hxz7avh?625mbw5+NM*Gl9P2waL0N)0fiHD`I z;lc+Kz7sHr2P|^Xacx|6yIvLxU{jSLxVyU_e=uP_{&cW;%kYhlGqCXi6Nwyj-!`tg zT`!9T&^xir@B=BN)zvOd-g06PlN|B_iUmMeB|YXyDldsV{gN=j(aREee*IO8s@n+T z%dMTAvCULyT^0s7f~yo%907F5XE5#=5g>)H#*p}vmw8lK@E>4N2yy^~&P@vG^uGW$ zq0P;k@y}lq#6@|tuk=2P1N^w~a1uaDvQF)smq48cC*c|dkf^lCZ9)Vr^6W~+79v2R f(jvEMd<6UfpKyLzS{Z{900000NkvXXu0mjfkNL{K diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/icon.png b/Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/icon.png deleted file mode 100644 index aac777b0f9583f08f18781a675ddfe16d34aec68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmV+_0oDGAP)1P5F`@~Y4$h6 z?85xFv$L?yWn<`5gI?V&fCaDs7C;IR#bFV}VIkf78vuY(bJppqX0%RMg;H~ADFB92 zb7Rf~!T1Bhm@{o4L;x=xj|Z;TdzpLQ2=LmJY6tK({auY`Ad166>pcKTawE^ZS_IH~ zk8}_lcfj`txbB23J29J0zeb5fuOJAP?h*47FJ4V(|M1c17h9_W%Vy3pE|sOudF|USv1necxb5+O|54?N zCvy&$e)0es2?7nTT`nG4_VSWf&@8=N5#5~GHOXn$X3X5%6T74QV^H$5RjcMcve*#1 zb+Tdc+Ux%I=f3|vdE9h`^!ZKyUQdzXRXA-{8Z%A*)aSG2{^pJ5%-OzEWu=b)EWh_r&&7{A?z3MxTffVB{Z~eaD}ba#-}$-C z7JNA}?B~9*=Y>sbN$*wnyphTAw*KzDj>jJ(Q!A}@zfYRL9I;mJ?RD0!Y@Q+p-(!#4 p_v<|@SM`k0k1zfEkMY6%YG&4>k!@iaCRHGVJzf1=);T3K0RXMjnMwcv diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/inhand-right.png deleted file mode 100644 index 3abdad08570f7dadc8c0dd9e67bd64c0eaa94d7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV6^pgaSW-L^Y+%pu4V@Twg>T+ zI!w`RYmcz>HT+m;PDBS zU3i7dbJPCNz0IHZ-285wA?1Jh+nsBSOI|MQJpG9|vMj^9I>X7rH|F~Db9>J5?l4=* z%b@4W{qWB%n+t{wHs=`_Qh#!4zJ0iQ_r^sQ2S2Czes(RC+6i+5m|k=-vNrD0E%TsT z0*4Nk{l50P$Nl2#XTe_5yYKD}y`JuJv8u>EfJcjmS=jaUNxlVNtNyIt@~u~ZFD9HX z^!(kgzgX(R>^#3sd%aKT{OQEiyB5bWN9a6b&}*Ji^x4J5|2_9-mzaWQr!PMSh9`rk LtDnm{r-UW|u!W)- diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json deleted file mode 100644 index e482264df5..0000000000 --- a/Resources/Textures/_NF/Clothing/OuterClothing/Vests/mercwebvest.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/base_boots_01.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/base_boots_01.png deleted file mode 100644 index c122b55cbdbc26843d3973a8a8c0b8b2d76dbd2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1250 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 N002ovPDHLkV1nSzo9+Mr diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/decor_base_boots_02.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/decor_base_boots_02.png deleted file mode 100644 index ace0fa1663d964426adfc1e7edb8202a350b048e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0IC400IDH4t_T1C010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miH6Hw$^iG<^U702y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004eTL_t(|+U?pg3dA4~1yITTZzmYAO=pVqY5rbdi!HK9 z@V#0bX825_r2qf`0002+U282#vg`noq}CcyU@_NqW!d`oeNS!vpY^w24)xxrrf+tA z00000003s%_x+LQvhA${NK%&msKLs{80$v=JkLj)f87#1j^ok$K4jfEDV)^%ivR!s M07*qoM6N<$g6fka)&Kwi diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/inhand-left.png deleted file mode 100644 index 3a183904f06a436773aecd38c7c1aae0c31b5d52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6183 zcmeHLc~}$I79XqvlP(YnbCJ@O+GC%-P2_o3yUeQuq zE0!W^DK6D2pr8~5#Ra5@EKgf4qF}8Lte|faQ1P{|eSY8Tf9Cs=%$)l>zjN;Io^x*| z>q6!SSX($+003Yu2;_yL-#&)7nJM~NB1>!sfN>ks!lRH-Fa@jDsH8GEj73t_Fc#Ly zqyV66eHay;e|MJEP@LT&ef9+XkA2rzKltYFcJI-gN;`ERZp({{GAb;unsh%XvfKQ@ z5pVopru%_Vze)I$KdtBtqBphlg=~1T{Q3NV*8Ys51dCqLovvNE_TpbxROGKXv?}j9 zzO%=1*WLAdD2La*;4C0omz}mnW{W!()Ks4y+Y~&ZR;wqNJmfTQPPlp^;QoW2dv|93 zI5@8IX>D=LCmm;8v!5RD8DIPDj)5w!hT~cFA~P@43^RixQE`7j> z4R)B-aC7gpfFDFrEuf}-H%vP(>MQ+j;n7K*XFk|;1#)s$gcO-YiixtJ@!IL(7%;A?Dt!Ke?tc2uW5-t{m(+)1b zT5?D&;0F;b)_NQ}>gb;3RP}@aZ3Tw(S)37JjTIHVS`NTMzFcGAFgWv4)osBGM!1`Q^buC3q=2j;%cE=Px z`Bd3+%t_Zazo3`qCkA{7Ok`rgJh*!S@-EZ$M+x3w)M@3vKv#R z`1y;2i+t@|m^@5x?$e{ktv!ygXybP*37)i7tX!?s!uER>N8O#`rp%0hBiwh0{&}5w z6Ir|Sx|Mv~T#b8$-g{`@?w)BCly8#yx0PB3o{LlyIs`x(tPEh;m)I@|saa5eK|NpJ zbm&RJaoytH)zbX>O=ZiVhnA^bK+$hk)t47G-E8@J;$ojKTl4Qmww};@>cGBj&A}bT zm^MbRzg}Wy-s66Jd!L{;Fm^-ip=M0p_mXPwg*Hsnk_j6*A*XWI&bYd4y1J;l_p7cz zFFJeohOa7On=^AizO}WjY4!m0LDzRDZXI~h7Mq=J{n5OS#%>CfpNl6oF{yFSq-ptjeQ(DG`EjoMD;)Tz#lKBtYHs>;q1x$!eQr1p0-H#8(Y&rX-d3ToA;3Lcx z2V#Hr;Db`Ny+!BJV|0xDV!!`}KIve34gi>B%l!RA1pfZ7wq|rgF3i}> z4XpNYI=?jf7;Yhkn#+_F>zDb4*DNTB8f#f}sIergu4rlF{uzSA#K|$1HY+_MoMQ@; zlGJu%&yJrEhjHcqWA@`!g1!7aOzn^^r8lwPrtjvZdGwEF0Sn9XBp!35-y9V8*~Q+^ zS`A#7DeZoIL+rTg&Vy-Q743Xoe*a1DfFoO|4xP5^?(I-U)l99Sex83hb$8Sxz z>om{%`kIX~+hbSWiBY#)p^kIeS?D??_q^ZKON#oB*9LKfP7&eje;IPvZg)Alut~Fx z-dnfS{-Vr%_TlSJbFG4NT}&oYO5FBZSx#I`51ltt=H1;jT{CE|sk=KTb2DUOSG>u| zdtmzDqvm>%@RVS$TjMkFt?4d4>VL%FkUxLka(t?*Pp8AT*A~ABa^5jC^Gx%#a{)dt z8S2E_*Y0vVH5mI9*FN;u><5IayvCp2ebp1r%#7X>*YNPr$&J@BSYa%_1Hj}|#bsYSR({U;Nqf$Ay|Kv2FB6|Gy)0F*U6G8I4=tdMzR$3eX!GIv*53q>xBVJc)v*u!y7m z(NUrBwYO3`q9Up%Q3tAtWCDq(P`u@#Mfk~Y;{BnAHXQxQLJWnqsw52r^OIpE;xam@ zTArjG9WzM_8%)N$IQ81mZ3AY+_Np*DIL(4&zO=rvBAq>&pj5{L-P zVFj9q7G);Cg-2x4Hw*OEd<-MMO9Tz~n*S~IE4_@l7DxEMx)^&I!t4-7!X92z@w-HN-Y8^A=p5Lk`rVo4=5qg zX)I8J2T3#-Pm@9*o=Jkqco>pMVUS5-da^u6QHV4$v=c!2=&TG>5|oNg^^{0J7Kn#n zF-k>YfOs)QOvQ^?WGOmE5tHdmBb8wt*uEhGE{;MVy|IMIK}4$3DA4wjDJ7~D?VF)+ znF0<&K!a>#PcoB6B9T~35{t#4kMfUzHCnXH4Xk7mfkH95OCa`KloLeDO{M_jV4_+X zXB;pr3>%#eDlKT}4wTtwM`y$K*T5j6(uAv2axTu0E!IG3Y$_~gq+QtaRFKip2!gv2BN+yP3oxlVQ}K`-SCzqml>tPVvXAX8-#}C*MiBg#JB{gj>AJx zJgAI=(fxL$*M2DV0(|v6uqU>GZeRwJIr+ z0%~C2IJ5@Pbw-=ZxXxI&k@}ncHa;aDHWU|$Lc^07crrblL}F9OY$_8syxLd}(Xhk5 znk~n$2MLAj(Ry$UdlXw>D8#TNwOTHNHE-+ms&4)ZZj}E>jsBJUXxOl~ze=5oc5yr+ zN>To4_&)#+Gt84guu`k~v(!gJhGiLb5TQ8_+t33JJuiu`56qD&F*MTO_!_CczcB(z z{XWP$>HA);_j0|H0`CNVUtRCzdM5?m3H-jg{%>+wym{n?mFVxj6!d|5=?T6S`Y>)P z4i4Y}B>(~dn>+?

    Z=baFG@OY|v|)8k24AHd9d}1`!DPnER$Sc6PH4n3o?$O`QUs zZ#eq5cWar$8m!gYE}y!|pZUZ!{;Q35;W6X!;zD27?`JJZvYlXYy4M-I@tLn%t{Liu zzE(TlA+>Rv*0)b*HE6dk`!ZEI$?sSB%7#UuLBcVCv+D}V)6K4Ge{3kNOCD;XQu}vy zPO3_c?Q-LXAN%>)z7ox+xO++Cjuf0tFKRA4Uw^l}moS}eQ$4hJ%7TTds?QUiJTlSc zG@g2PAad``Ro#m$hl8S@+=ChPkI!I2p2xIj0LQXyADiE*l&W!FT~5Ugg=X9%6}3G+ k1NVOVuJVO_ArSJw@{5b=kM<;MPa6mX{Q11Ye#`X#280Jl82|tP diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/inhand-right.png deleted file mode 100644 index a8695b59c577a9f6085e11cf920a866e8c7fae84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6152 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 diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/meta.json b/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/meta.json deleted file mode 100644 index 63a5c0b80a..0000000000 --- a/Resources/Textures/_NF/Clothing/Shoes/Boots/punk.rsi/meta.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Sprited by erhardsteinhauer (discord/github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "base_boots_01", - "directions": 4 - }, - { - "name": "decor_base_boots_01", - "directions": 4 - }, - { - "name": "decor_base_boots_02", - "directions": 4 - }, - { - "name": "mask_null", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index d744ae82f0727ebaed1bc6fb4c39be32f01e088c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1457 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 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/icon.png b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/chaplain-pilgrim.rsi/icon.png deleted file mode 100644 index 28f992325337f84ed7f8ad2977f7c6f71e88b19e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 zcmV-S1GD^zP)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3@$6~Xr1B!00BrzL_t(o!|jzZio-AvMW5o0 zu$#ECF!(NMQw4IEoI}PZ$(52SU{WQGgv>=kr+s z0-&|VImdRpC5j?^tZiEWE|-hXU$zPTqDhhfa5|j;I3ACEY?wC|HPwcBo>SK~yWNhV zpy%_6bB@R3p;mhb0Gg%&;BYvQBnkWdzK_jewA!L5r0Y83IL0|gp6C6>zW%;9?)SS| z%>};u>$+a#jhQUK+ivLn;SH?%7XYMb+S~5+deOEmT5HlYUAG6u{(4hg5C{YU|IQok W-jlF3CX9Cg0000EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3@Qay(p4z{00EpyL_t(|+U?mrio#GBh2hso zI@=&Z)?n=l3}hF!_92pLrcC1w+=Z=`8*l;INP>usDFngdPUSGnk24dmI(IlvBSbhP z-~G7F0TB@q5fKp)5fP~)iXsz5k$L}YI2@X~d7nM2oA(vZM#%Z4Hk-|d|5mFNS(ceP zd7r71ck=-NC~Fz0VtsM&_ElyKF#JRitSOz+^IEFc>hMP60^Ml&Y#8ns-U_+JO0d{_J_) z(`+`Q)oO7#9O(D^tk-J*mdho_~2;loZ0KH!CPv+fh1A-th0Ou1s3&W72C;)zSYPR$4Hh@d&48T_2-R=OJ zFKatbL_|bHL_|bHMBHYpjrLspc$;ms=jsO7YNMSSfbBNg$qlgC9yeY4c-!rEX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE3@I|jLZjsX00EpyL_t(|+U?mfio#G7h2h^w zI$IGTYp`|&3fYCNeTbx*Dbu(EcVTPg23&wPk|1JZ3PG^QR1S=znItN_H=M70#&B}H z#NvX8h=_=Yh=_=Y01Su2{NCAkJkCwcdz-mTUgzFn(U&%x4N(*sRl+szZnvwP*Ln0o z9LGPVpx5i=*Yo4?Xxs$EaZI<{{mxl7@2>))D9VE%03c0MCX-3NTCH;5_es+ffFKBr znS$HAzVA~d@7)Q=vWzec0hrBZj7B5o^Em)v7?Nd~QNR8(d7HNf%jNRZah#9EVnM6b z;&eJO7!25Mw*aiyYtH90)9JKf!oxqC_u)gd+wHv5>9F7L@jQ>q<$~+FBuT>IaA=tJ z4yc>gDY~iax&ZY1eJlRD>*Q@bY7^kv=#}SrBuN5b)D%3Ex3GXBCKga9Z==plO??O0 zlvhMVL_|bHL`1{}wrz~daLQh2+s63i1%Q1USZKis8L&kKu=V=ihD3jUpD&TlS?hX7%@ zbNf4Y9bPEC`rzcQ-GzFg{Vx=v8nLC0>wgldb2=JTe`FLg+gahKt1*ZeW{ z?Z+K$?vLjSy>Iv+&)xX`$B%?aXTNHjZ1yd=v+o3ZJ@uKIyOvE!N$3}w&V%b)R;A5+ Q4~#GdPgg&ebxsLQ0M+f-GXMYp diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_leg_standard.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_leg_standard.png deleted file mode 100644 index 7140a3869c35f83f483a4e62161d3f9362777f39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zTRmMILn`LH zy>+*@ML~f5!^a}u8%OsgCyA=i$&**iaJc}1$7B1_>P|C48r&A3~= z=ldj0*B-+!6*iwtjq}$n{pc#~;9|n#ET@0k$!leeZQtUOU0RxI#?L=)(g`i@G+)4T z?9A*X>jLshq^AF8>FmFyGGpeNt-d=s!vnmY9*xSDUiAD?c74Mu-XGc<7%#EcS>d&i diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_torso_armless.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_torso_armless.png deleted file mode 100644 index 2864e1c04e7ffffc1201bf275f517c8af15615ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmV+`0@VG9P)Px$WTh%x|s_5!?XhTqmq=cptIzgUbsgTLk$v*ulm)a$^Qm$lO5KFmJKt+E)KnCO zpVB7%1+3TWD4#WGJl+(mpwwA|8X%?Ql%w%BV+;*F45Iu3UeSbDnS&ajl)8_m&*yWL zg1*CNIp+r7mJ`%~_F29x%eT~{@g{3+=f1$uD^Zj~AoUFrF*65W1~;1x5fSBiPFa=> tF6cY9+bwCW>2|v%$pZiY008)bJ^^l#YI1c*5!nC$002ovPDHLkV1i8;`RV`w diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_torso_croptop_armless.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/base_torso_croptop_armless.png deleted file mode 100644 index 6bfc957109e5e7941c02b376ade59f4721b81c9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 942 zcmV;f15x~mP)EX>4Tx04R}tkv&MmKpe$i(~2S$2P=v=WT=8*K~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4iM^Prka5XK-DZG z8HmEM7-bHwp_qjhukCHPP;1h}Gm~L3a8^kl4 zmd<&fIK+yQLVQjM*<>bR8c}179zB2q?kz3e$>N1&ouk{0pkjC)TgFoe*gdg24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~PC2?8R%Y4R2T000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0004nNklfL_}TJnUr(6XvQ+< zr{mefMMRu)G7r>q&N&g0)w!Jc!!UfSK{w4FhT*V$A|leDc@yRZIOpWZ>Du?bjN>Ru zb45hPaojZc%a%f#rkM)5-|y4@UzF4U?>*gaH>&G;8nk|f5XgIfc)@jDCmsJywWpXf ze)$l>+x+?QLmR-%tFW!%Tjb79z6Zn@>3Y4cLSL^}kp|?>Po4p7+ZtvjA|h+8vDQxe zM?M40ug}b6tu%csw3iu2tnKDpx_Jv#Pz*zvR;RQV4Jg`6??(`SJ9o^)ya z`Fs`|yk;@;?$>gX8nC>}cU@;(^b diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_01.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_01.png deleted file mode 100644 index f8ff99ecc5dfa38361a2fa6a10243e5bb8ab8979..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmV-k1EKthP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|I#@x(AwzYtAS&W0RV;#q(pG5I!Q|2}Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOibq^n3@1i`*``n+SU&)&c@QK88OgAjz4dR(i zOXs{#9A+g+AwDM_H|T=Ik6f2se&bwpSm2pqBa@mZ4ik&T4wgHZl?;`5nmD4U8s!UF zmle)ioYhK=weHDZ7|d%cX|B^8K^#j+APEsNYAB-u3sG7%QcR?1Kjz^dcKk_l$>b`7 zkz)Z>sE`~#_#gc4)+|g-x=Fzp5O}fek5Qm|7iiXP`}^3onxTdU02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00A~hL_t(|+U?pgj)FiG#__*gfYQdo%9@JS3sBo|1;PcW zIT#5CAn^i{P#ZmgTfM|FLKc>p-HqR`nS2i6y*%k=Ktx1DL_|bHL_}mnS(Xogx~|`@ zwjZkgSe_%A^KhD`0K{?pcC~$9?ES~%aWZ=wfXT89fFwzr9LjFDo6Oz^Fbo3#UDr7| zl(uaF==D_WzO(Dwt@toftkacd&<@%WlOM0~hK o1F-Y>rfHlU(qHI7MC9N50!ziWf2WIJ%K!iX07*qoM6N<$f=N_?ZvX%Q diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_02.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_02.png deleted file mode 100644 index 888c5d968c29eed2dbadf1351423c59d9708ca65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 827 zcmV-B1H}A^P)EX>4Tx04R}tkv&MmKpe$iQ;Q!|I#@x(AwzYtAS&W0RV;#q(pG5I!Q|2}Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOibq^n3@1i`*``n+SU&)&c@QK88OgAjz4dR(i zOXs{#9A+g+AwDM_H|T=Ik6f2se&bwpSm2pqBa@mZ4ik&T4wgHZl?;`5nmD4U8s!UF zmle)ioYhK=weHDZ7|d%cX|B^8K^#j+APEsNYAB-u3sG7%QcR?1Kjz^dcKk_l$>b`7 zkz)Z>sE`~#_#gc4)+|g-x=Fzp5O}fek5Qm|7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009$8L_t(|+U?n~iNi1$hT%68*tj+(3j{PkM#%`?AhkE} z2pS~=1hRk$s*OE?u8O%_NRh%mj(eX@mO+C5Q}ux)Ns=TYAQ_xoi%3bmA~xonbvVHlXE ziFuwWih{B%d3-kkYbK!Y`y4`8rr);huJ8NYG!0c%alKw?+jg}H{Py{hBuSDaNs=T< z(jWFwkJfcvE{cK>0(D(K?WL49>E<5&;JfqZdFFgR+YhdifbSCkmMLsC{dXxyDFN6H zZ<2tn>+<1n0HCTW#&HB#`ueRB&@|1<9d5Uq?_ZMifiH#Tk_Veg`cVJ?002ovPDHLk FV1kofW(5EM diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_03.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_03.png deleted file mode 100644 index 3dcda4c3e34e4fc679fe50bee5ce8a7c2ac00e47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 947 zcmV;k15EshP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|I#@x(AwzYtAS&W0RV;#q(pG5I!Q|2}Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOibq^n3@1i`*``n+SU&)&c@QK88OgAjz4dR(i zOXs{#9A+g+AwDM_H|T=Ik6f2se&bwpSm2pqBa@mZ4ik&T4wgHZl?;`5nmD4U8s!UF zmle)ioYhK=weHDZ7|d%cX|B^8K^#j+APEsNYAB-u3sG7%QcR?1Kjz^dcKk_l$>b`7 zkz)Z>sE`~#_#gc4)+|g-x=Fzp5O}fek5Qm|7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00E0hL_t(|+U?rGjlwVx1<)TF0C7f$29PKqrBFgd1DxG~ zOGpK&!39Ke0|xnQ;R?K`SV1wEtbA(ST-RV=iNWh=_=Yh=_=Yh-ks(atQz+ zgn0QJ@}=r8#VM+k54UX_0O0X>Jmof<4FKSLK3BOGpl#c5I2>YZjKMt4SwAj-F(v?j zQfd+p`BL?l;uNdYFBoHjwH961g}(2hlnU0`*hFqhsi2gClrr3IH%KXiQYvmnR#M8z z&X1cK=ijOR>N`8&oQuVzl)*VyW(P9VPg(%)J?grywAN^vrUHPbX)3KX>bkDH_gP>5 zx9bxT5fKp)5fKp)5fS|#!~A{eoorcN6L!1ZBxkKf-}iB3 zm5Y=zd{*CkkL&fCwTGvB0i{OcWAoZYhNHs{%oo90n|(As?_qo=q11Rj>bh=Hc!*2- zsUDKgiVz|kk4FH&cDsdh4ghe!-?N|p@h@P%-#_)Bwa$P3U;P6Q&yxN^4@5+7?*nCd VV;_3naRC4T002ovPDHLkV1k?Hp9=s0 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_04.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_short_04.png deleted file mode 100644 index fdb2880dbdaa1504d4070c3c6f7f87bb83ac397c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)EX>4Tx04R}tkv&MmKpe$iQ;Q!|I#@x(AwzYtAS&W0RV;#q(pG5I!Q|2}Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOibq^n3@1i`*``n+SU&)&c@QK88OgAjz4dR(i zOXs{#9A+g+AwDM_H|T=Ik6f2se&bwpSm2pqBa@mZ4ik&T4wgHZl?;`5nmD4U8s!UF zmle)ioYhK=weHDZ7|d%cX|B^8K^#j+APEsNYAB-u3sG7%QcR?1Kjz^dcKk_l$>b`7 zkz)Z>sE`~#_#gc4)+|g-x=Fzp5O}fek5Qm|7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005UsL_t(|+U?r04a6V}06->Yi)_G148kV)%09F0{{R3005k0w3lDGpC8>Oth!M+TfdF%x3#DAU;^SIBjSz;*xAFm l`WJY|etvW#;8G0WM;~FNx8Hf4knI2f002ovPDHLkV1kM}DJ%d0 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_01.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_01.png deleted file mode 100644 index 3beadabea7786755e11f1eaac69e7ae4b18e14b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6928 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 UOV@5WEF`utu{FN3V_)#U0PJD(T>t<8 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_02.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_leg_standard_02.png deleted file mode 100644 index bf5c4de3f5965f3ce978628030fb0dbeaa3701d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6865 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 T7rvQvL)0c&Y&B0e-E-idpkTD# diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_torso_croptop_armless_03.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/decor_base_torso_croptop_armless_03.png deleted file mode 100644 index 527f376f5e3744d8a326a77cb7f85ecfcb5690a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7299 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 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/inhand-left.png deleted file mode 100644 index 2cf20407017cf5061ba07a575f738285ecce4d94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7010 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 XD(lkO+ISOO6NtTyvvq~#j<|mTKi%wy diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/mask_null.png b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/mask_null.png deleted file mode 100644 index 2975c479be7566a6c59a7aca4e20778aa850feb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)ID7sLn`LH rJ;=xlwOr9UK@K`#+rw1POb(`njxgN@xNA?@buF diff --git a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/meta.json b/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/meta.json deleted file mode 100644 index 0f08362516..0000000000 --- a/Resources/Textures/_NF/Clothing/Uniforms/punk_procedural.rsi/meta.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "The sprite base is taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, separated into layers and added new ones by TheShuEd (github), croptops and additional decor options by erhardsteinhauer", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "base_leg_standard", - "directions": 4 - }, - { - "name": "base_leg_short", - "directions": 4 - }, - { - "name": "base_torso_armless", - "directions": 4 - }, - { - "name": "base_torso_croptop_armless", - "directions": 4 - }, - { - "name": "decor_base_leg_standard_01", - "directions": 4 - }, - { - "name": "decor_base_leg_standard_02", - "directions": 4 - }, - { - "name": "decor_base_leg_standard_03", - "directions": 4 - }, - { - "name": "decor_base_leg_standard_04", - "directions": 4 - }, - { - "name": "decor_base_leg_short_01", - "directions": 4 - }, - { - "name": "decor_base_leg_short_02", - "directions": 4 - }, - { - "name": "decor_base_leg_short_03", - "directions": 4 - }, - { - "name": "decor_base_leg_short_04", - "directions": 4 - }, - { - "name": "decor_base_leg_standard_05", - "directions": 4 - }, - { - "name": "decor_base_torso_croptop_armless_01", - "directions": 4 - }, - { - "name": "decor_base_torso_croptop_armless_02", - "directions": 4 - }, - { - "name": "decor_base_torso_croptop_armless_03", - "directions": 4 - }, - { - "name": "mask_null", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Markers/general.rsi/meta.json b/Resources/Textures/_NF/Markers/general.rsi/meta.json deleted file mode 100644 index 04b6da8f07..0000000000 --- a/Resources/Textures/_NF/Markers/general.rsi/meta.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/a879151ef04192ae2a791278ee882c1bce7c5062, cola and any sprite modified by potato1234x (github) for ss14, cut question mark from any.png by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "questionmark" - } - ] -} diff --git a/Resources/Textures/_NF/Markers/general.rsi/questionmark.png b/Resources/Textures/_NF/Markers/general.rsi/questionmark.png deleted file mode 100644 index 5e7a16a2932c68f740a79a451d85aa90b09300ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8549 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�OgLy^O2Ih|)wJ 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 diff --git a/Resources/Textures/_NF/Objects/Devices/Holoprojectors/graffiti.rsi/meta.json b/Resources/Textures/_NF/Objects/Devices/Holoprojectors/graffiti.rsi/meta.json deleted file mode 100644 index 22c628acd0..0000000000 --- a/Resources/Textures/_NF/Objects/Devices/Holoprojectors/graffiti.rsi/meta.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/f4017da82ae4de7bfaf8ebdbba33d0de81c15587, and resprited by TheShuEd (github), recolored by erhardsteinhauer", - "states": [ - { - "name": "icon", - "delays": [ - [ 0.3, 0.3, 0.3, 0.3 ] - ] - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/_NF/Objects/Misc/censer.rsi/burnt-icon.png b/Resources/Textures/_NF/Objects/Misc/censer.rsi/burnt-icon.png deleted file mode 100644 index 7c3c5826e6d3f1cf121b6b7bd20f611648d87d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919 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 P 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

    &a`)=y; zmT9$y$tXqHr{EEP}PJ`2P1~h%ITtFB~>EiDTI$0ef9HYklx*# Qmu(mzC#3|ckT4AVUuM@Og#Z8m diff --git a/Resources/Textures/_NF/Objects/Misc/censer.rsi/lit-inhand-left.png b/Resources/Textures/_NF/Objects/Misc/censer.rsi/lit-inhand-left.png deleted file mode 100644 index 5161b8bb72725bdd1ecfb9eaca11e2231661cb82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10393 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 diff --git a/Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/inhand-right.png b/Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/inhand-right.png deleted file mode 100644 index 3eed13c5d5fd66c7158c316eed23b9ae7a740917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 904 zcmV;319$w1P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2aAX}WT=8*p{R(XRIvyaN?V~-2a`*`ph-iL z;^HW{799LotU9+0Yt2!bCVt}afBE>hzEl0u6Z503ls?%w0>9UwF+Of|crfT~$W zDjpNFxm7XniXa9NKosK=GxbDzF$2%>bq^n3?;b`7 zkz)Z>sE`~#_#gc4)+|g-x=Fzp(EVcDAEQ8E7iiXP`}^3onmKj!>Fn*_Gp+u90M?&!&)w_-y#N3J24YJ`L;xB98UPwU!0Uhj000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hH6$?5@0tGq%00D$aL_t(|+U?rCN&`U{h2htz zC>U)5QBf-qcZDEglz^S&2GnR3MDP;423xN|tOOguPAn{}Y(xYFgQSWOA%zg4+5C)! zwXk8cn^DhG58uunW_Drb0}&As5fKp)kssvKn8SS1?5$#Ko@b}?i}@L}pP@ZBKhAn) zf|QeBcg5ZiQcj|y@dJJbmWpLAfnuRT%i=X~a8l{(`U-fhz;Hj@-IQ_Oq1E_1TiaIv ztr*m5u)XH8xV%Ht{IdW6Mn_?KD@Su1i?=|h^Yit^T$&;|IY!wd4#3q@wa?Z7vToeiJU>UX7NRDA<=4;~-xjWq#8-8axS-}nF5=SN+8QlS5KFZu?uZrnum eED;frKkf@7VwEGB3>H5C0000e!pkl?cScQ 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 diff --git a/Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/meta.json b/Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/meta.json deleted file mode 100644 index 72b4e4f59d..0000000000 --- a/Resources/Textures/_NF/Objects/Misc/mortuary_urn.rsi/meta.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken/modified files from the base SS14 (used vacuumflask.rsi); edits made by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "label" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/flashlight-on.png b/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/flashlight-on.png deleted file mode 100644 index 8d97ebdec5331483e017e2ca2e251385edfb10f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@>P)EX>4Tx04R}tkv&MmKpe$i(~2S$2P=v=WT=8*K~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4iM^Prka5XK-DZG z8HmEM7-bHwp_qjhukCHPP;1h}Gm~L3a8^kl4 zmd<&fIK+yQLVQjM*<>bR8c}179zB2q?kz3e$>N1&ouk{0pkjC)TgFoe*gdg24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~PB77GmgWUz|>000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003MNkl9C9EBfM)+j|?;Q;Yc+6`5eH&0%> zkn{K`Vd)sAY!O2*;uT@b2XLofg%FAO(+WlPoAAT%eKKGPAmpASgfxt0e#t$eIZ!&* zTJHcLNfJxl`CL8zi2#8KN^!2icKh@*CYiA!(Nyr^@KFK40A*QL)X|)=BAaXQA#fK?<2a510G#J__Z(eEB0@+rB(b@+ z0)6l;IHfPqe`KTIOvW;=lsa`grPN6XX}Y~J#(VGmtvS>${agpr7nqZWwKuaM5CraD zz*@VWK-;$KufT6e%noCjPt!E)g#T3F_2tbw*Mwh#kdVds28Jr2fJOy|i~s-t07*qo IM6N<$f~((SRsaA1 diff --git a/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/flashlight-overlay.png b/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/flashlight-overlay.png deleted file mode 100644 index cad64a5262aad868f2c7ff2ec4c4a0f63e561efe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n2LP)EX>4Tx04R}tkv&MmKpe$i(~2S$2P=v=WT=8*K~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4iM^Prka5XK-DZG z8HmEM7-bHwp_qjhukCHPP;1h}Gm~L3a8^kl4 zmd<&fIK+yQLVQjM*<>bR8c}179zB2q?kz3e$>N1&ouk{0pkjC)TgFoe*gdg24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~PB77GCN()^$R000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0000>Nkl2t-l20%HGg6G2R{8^VR*;J*O+ znFs)XCh15zn;YLYqN>6cuzmhyfz0#<*cTvx00L&l7tr1Q1ztn|0IV*&^$=5mat8EX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}00030Nkl#^iga_M_!_DA1&U@yT(?^5i7^G{^F^tYp94Ue z9>YE&R$nmTO8I%39z$aaL{XHn#xY$*#%=H>@H4zVM=3vlzQ%bJ34-v}Br$GVfjamV zyiKD1$~vzApFWP`9cxLFoY-cazaaZfV_2_$ydR0@Ei2b`2kir+UvFk2AOa#F0wN#+ mZwstfo649%js_CR;M@VD7K^f3{kwwz0000EX>4Tx04R}tkv&MmKpe$i(~2S$2P=v=WT=8*K~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4iM^Prka5XK-DZG z8HmEM7-bHwp_qjhukCHPP;1h}Gm~L3a8^kl4 zmd<&fIK+yQLVQjM*<>bR8c}179zB2q?kz3e$>N1&ouk{0pkjC)TgFoe*gdg24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~PB77sbjyRobQ000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}00011NklEX>4Tx04R}tkv&MmKpe$i(~2S$2P=v=WT=8*K~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4iM^Prka5XK-DZG z8HmEM7-bHwp_qjhukCHPP;1h}Gm~L3a8^kl4 zmd<&fIK+yQLVQjM*<>bR8c}179zB2q?kz3e$>N1&ouk{0pkjC)TgFoe*gdg24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~PB76~hBSZ87Y000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0001}NklB diff --git a/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/inhand-left.png b/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/inhand-left.png deleted file mode 100644 index eb86526e52adf441e3430a27372ba0370d005c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1037 zcmV+o1oHcdP)EX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0005xNklb;@5JkTuT8l`u-V3-Q=};88bLEs& zJ_(-M1d2ES$g&fBfAnpfh^{NxRbFcb6a}W~ zbOivL&HM9y|2g#i5rQDNMA2jm0L$fTQb(|>yw(h;5-1|0XtG@_7K!hVkfzg>#AHmB zU{`tTGN`-wGJ(3t;x$n;+3M%yIuU$r;Z5_Jm@ue2uqg1F$SSeLkG9LaRt=DMX*Qd^ zNNhfzzsa%0l~TF>x@?TZ^-a!I-quk{EX>4Tx04R}tkv&MmKpe$i(~2S$2P=v=WT=8*K~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4iM^Prka5XK-DZG z8HmEM7-bHwp_qjhukCHPP;1h}Gm~L3a8^kl4 zmd<&fIK+yQLVQjM*<>bR8c}179zB2q?kz3e$>N1&ouk{0pkjC)TgFoe*gdg24YJ`L;#BbivWwLf0Q)<000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j~PB76};Chz4{3000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}00023NklJ*mbp&7n-Uv@L{b+m7 z00yo#CQ2y)@PMiwRXx$xS#K^r#&B`7Zq`{dZ~l4$T5B#M+^n;fEX>4Tx04R}tkv&MmKp2MKrj?3R9IPPXkfFM0K~%(1s#pXIrLEAagUO|T(4-+r zad8w}3l9D)RvlcNb#-tR1i>E=X9p)m7b)?(q|hS9JC1vJ?|WbFz5|3tg{fv>0#G%} zNX27fHn%DUUlE`=fH6Q~rk+SIX5cx#?&0J6U6f~e*ZnzqmAuISpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3Dp}e+|<~prm#Ib|~k`N)IhB7L!5T#us#YBqEV;=q?$DbsZOs+B* zITlcb3d!+<|H1FxnuV!JHz^bYx?XJiV+0890?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m+XgPK+nT%wT_CX>@2HM@dakSAh-}0005pNkl@Y5hM$CGkA}SJf$s0&*}$%7g}kr@w7Z(v=Z)=oCc(m&>=1 zh-kn6c!}e9C}l$9@$=br=LaI9AlUj{7*VHAQ52Aay6*fC1Y2LqgjTCn$bCGfEhC!H zX?dQ1$_uCl%?fed`9a;s$8iGB^G|h~(3DOqFJMv7OTn{Cv56JXgiecHU9Z=#JYcig zymOoT`PRbQd1JUgdr_)`&UHG@B(-hZ_~!s!oey;9z<^tu(DC>w?tTSCQ6z8*zyKI< zp9biDv%p;drvMCq0k{ZWV>Vr+QYOYvo^|%&trY+O005xBm{Kp`IFnTUJ+6z;oiw+* ztQV+LhtNsbb-h5Ij;sb<9YQBzSM>r#Iykr5*3lt!5~_*Xs23=sLmgj5hsaA>=0Ch@ zz$HPd09_NR)B{w}VdVuerCy*79sdk4rCy+{4(@BcZlN#r0@uJtQ5XONU;qq&0Wbgt zzyJV%Hn;FHWK}t6HeICOKVMh@000000Da~c!!9U>UMo0700000NkvXXu0mjfaJ9nR diff --git a/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/meta.json b/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/meta.json deleted file mode 100644 index fdf994c000..0000000000 --- a/Resources/Textures/_NF/Objects/Tools/umbrella.rsi/meta.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation and modified by Swept at https://github.com/vgstation-coders/vgstation13/blob/Bleeding-Edge/icons/obj/lighting.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "flashlight" - }, - { - "name": "flashlight-on" - }, - { - "name": "flashlight-overlay" - }, - { - "name": "folded" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "inhand-left-light", - "directions": 4 - }, - { - "name": "inhand-right-light", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/equipped-BELT.png b/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/equipped-BELT.png deleted file mode 100644 index 1669aeab5eff9a809290b0ec0e496f5d96807d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmV-*0*d{KP)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE4>uAhD*~$k0041GL_t(|+U?pc4uCKW2GC}w z!%yR8k-Gr5;FKuzPz247S@xdavM)_qu|@y@002BxbF`k{pS~O}Q?&gUwDRj5txSDa z|Fvxqe$4PS4;=n#dgdMg000000JolY2GZXb+8OX|F8p{6&&~h<0R1@uUzRGpx-tMa P00000NkvXXu0mjfv9}05 diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/icon.png b/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/icon.png deleted file mode 100644 index 8af7c3e591cc8e02caf5c4ec186bc33c331f65ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 765 zcmVEX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE4>T48Yn5>T008+(L_t(o!((6=1*2dT&;hKh zV)&0sj)fi;pSguw4I?cr-+hjOL6C=mp?eK(dzfiqc~cz2e-VVP^hX1@=3=EH6F)+;8LA<$4)UsSf zih<$tH_|MpN(jI#CpONh>HtbDC%Ygj4Pp5I{tE*GrIwQ&0zuZ01jouudYn_72va;5 z{u?MmEPwZz@&wFCs^xNGq-Qm%IDi(G6YT()<(Ka>FswdI-O`hVnA8sQIkhb(mEX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE4>LHI{0?~l007%bL_t(|+U?pa62dSLfZ>JH z#aGwGA}eBh3ud@LZonNl0V&LMVC2}xo@P0MTg$|CP;kJ*V(ZB%!00000006*;9OJ4rwhm~rugFaEGBf5i~ks?2Qd(y_1w{plWs#CC8=BkL0&@L9_b^Ig$r__X1I(VnPvl RsVM*e002ovPDHLkV1hO0JUsva diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/inhand-right.png b/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/inhand-right.png deleted file mode 100644 index 5c45a5263c9c87fe51cfb008eb9da053e47fd439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmV<80v-K{P)EX>4Tx04R}tkv&MmKpe$iQ?()$hjtJV3|O5kh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MGzr$VHiUaGxbDzAp_6xbq^n3@1i`*``n+SSIL_U@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_Gw6cEk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2x^;P{i|lF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKt<824YJ`L;#Ec0001uRp#sf000SaNLh0L z01m_e01m_fl`9S#00007bV*G`2j>hE4>K-fD7z>C007=eL_t(|+U?pg4uUWg#_bsPvGRS2bBjMY_w z#eMYGf55V-Ii00-$`iun>ZlTOh2RPy0000000000P_Mn`1yZ!;TaSx+Cya`2T4AqM zkh(z{M(5KhDMOh1GDdSWbc)u;!Tpy{SqbY@*yf)@u;>yOxp}L_SJ7r?Rsdyq06iyS ULVG2@NB{r;07*qoM6N<$f})#30{{R3 diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/meta.json deleted file mode 100644 index 42a18e1785..0000000000 --- a/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/meta.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Resprited from tgstation (https://github.com/tgstation/tgstation) bamboo spear by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "spear" - }, - { - "name": "icon" - }, - { - "name": "spear1" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "equipped-BELT", - "directions": 4 - }, - { - "name": "wielded-inhand-left", - "directions": 4 - }, - { - "name": "wielded-inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/spear.png b/Resources/Textures/_NF/Objects/Weapons/Melee/wooden_stake.rsi/spear.png deleted file mode 100644 index 8af7c3e591cc8e02caf5c4ec186bc33c331f65ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 765 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 QGXMYp07*qoM6N<$g6$siSpWb4 diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti05.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti05.png deleted file mode 100644 index 399505bf18961f326d4c76d20b89692eab659628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1060 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 diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti11.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti11.png deleted file mode 100644 index c6a9d46132206d4e11bc3f302b367509e9dd4bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmV-(1C0EMP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miH09vR<@{CEHW02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B!$L_t(o!_8N14#OY_1+#nUZQPOOZS-X9&rBHg18CBg zq=}pL@q9%PfQ8js3!F4JMy<6FQ8`1xjnNnO$3sGk5k?DRi~s=8S_1%p7^6u_3kJ>> zc5AHx2TLhsi}Mj4#|SIdow-(tmGc<}YId$sV&{COM9}Pfr-a41#6S&AE=@)rsgisras96ukAkk7o%gZO0OP_+pp!zjz*3>U6Bjp%GT_e&FPix`4>fRmn0_+r9J=v002ov JPDHLkV1l(0h&uoP diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti12.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti12.png deleted file mode 100644 index 46c1852e12a8900fb473d4ed3632b92eaa9e8ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1739 zcmV;+1~mDJP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0IC400IDH4t_T1C010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miH1F)W^I7P9~V02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00g5+L_t(o!|hhjZxvM({_Z*V-kCS^ezou-gamQX*rKb( zjemeKZn~GHEKHCf(NY2iu!NS9SQpB|5V!mTZqS{qx)L`gq%o2j-8F^M_Pu#C_m`W_ z_>>3u3a;QLFPV9nd(L;i^PTTp;N^PJml$=!($Z3_lp3?vN+GK4LQ2^)#ymKC_N*Hv zo*WfGtyY`z-k(m>^biqwV+@#CW?6Q-)9HK-;Qs%@z?CakVj)CpY;0^s2(b{yamQK< zB7(IR09HZ>v+L{YtJd1h`T2SGTp38ybSi{!N+~s+BuNthwAS$6BZ?w8=O(tdx0eCj zN|NOIe`VsS3|zW&DV9>Uk|deYS}(NQ?G6!Pp#A^=?>(|CLzZPL*4o)_x4X*Bo9EA; ze@$2lu$~+dyk?h(ChV9y!W$2w3=nv=G@$z8%YCF z$~Qs?CtI!7bQDF+^8fAaZQQ$e4{4g>$dM!HcDqaU5fEa#G}pp-(R(WsIQz6&8LjaX~@*4l>v{*0o?j0}K??lSWy&bjyUJU`iNHpjj9 zu-3wRkAA<85CTeJ8e^){8)J~?`CTIVika^iV;=6=2d-Va_O{mg3ub;jNs@L5flK%E z-a|?W=NzPzU}ofb-Usk-XJ_ZT5W;6?&YW3)CMUGk{>sdsGV?pVUhm^tt+tPuLG-tU zXsuzbMNt&U^ZXa*+;!*N&(_+lJzMeBt5@R?!dM)~GSBlr0Q^owRtN#-9JJPO&Q(kh z5u9`I-tSmz?^jAk)R#q3>_{oK*7`OPJ$6cpVcs7_QEPmBd`2m?V2tSqAwWcBg6hqS0*DAo zsmd32V<3v6vP~zt-R`mw;?}Ms-XF@q{QP_@rEEn}G?OIBLcLz^3^NetTy<(8L)McS^4>6P3x!kz8tHa8?Y0EcY-on0bGr z(fHxqxpS9?mf*&X8=WLcyb!_(A!^=x7-J$L+9#!aO9=7J;}{uap?tR1RvKYu96NSQ z?Do3>0NCJ<|L(u>L002ovPDHLkV1k~#JMsVk diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti13.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti13.png deleted file mode 100644 index 85e4b0b7fb19348f3181c10a638dd24d1b4ae8ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 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 FV1nMGvhx4{ diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti15.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti15.png deleted file mode 100644 index ecf2de50e70f5df675150dbee80560feb2591df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107 zcmV-Z1g!gsP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miJ{D=L!F+}!{G02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00JvXL_t(o!{t{?%d$`q9$&H>5mZR6+O!E;wCf*71npY1 zXjzMjqM%lV5GGNEp?33fY~Gb(y?thxZNAy)@f>HK8E2ju0seQP-hENmbtHrUAq0}i zB=uF)x~`*heYsrlYsMu>dT8t`AXt`lH8L8FUIy{=%HiQ~=(=Ajm4c1Hd_H&euv)DK z8-br6_v4jHCHN#f9*+;b-0gO6C1L25!?G+RMNxkevQQ{ci9`YvMZs4&!7~6=RWTZk z+RA&q-pzh27NY4X3Pgb;MD|0Rl| z+!*!(z%>U#p^$Z@1VKPe(_EEZuU8O7(Jog+^p}LDX*y>BuViK4`v$OBEbM!RVW8D& zxhiY7+mOrU>@~-6{s5HAWs2iCGzBWzA+2?@LaWW&2s9(Fhj6a=AoDg5mv?^o%Eb zPejhLv@)D!*@q<<2moh;vB1RRabJz=B>;qwKl7n;PLw1mxbJ_T;ihTc^a)E0!@$6e z0{{qufB*o~=@k9^C3%_&d7g*$dW`@8sZEX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miJ~GZHhDyC(nu02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009|EL_t(o!@XBQ4g(EqVwwj5v>g>lyUS{Ejgm1cYTr?cy0@JkzmNVv3|+Mqx#S z04dEtmY8Hkh(?C;!Sc~F5qps%MC_G>i~OGE03uunF9=Pq7oqm;?#?WMG(Ju1YCE%~ zeMhoSqg@b*w5-<=PH6l1VTf8I_bjW__njK4xpnpqZ5>=Cpw_yQ@Rg$5o)cy z0wJ`=GYYr@k?*MtL^xteI-#16lwv2jWm~b9UN3;%U7Caz5fNZzTQQPy3n)b$tmAs# zo$dvt{|in)kY->hSCru%VSh4UDVJ8~6M;%EFS6gWa{c!O#RBmGk`;f9hp61-00000 LNkvXXu0mjfY$s$P diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti17.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti17.png deleted file mode 100644 index 0e831751e7016219868fdf06adab143f4430d52d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmV<10wn#3P)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miJ~Hx#~`+ZF%-02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{006T|L_t(o!|hgE3IHJp%%v-M{{wc2-LGJYw6aOqMWL_o z?Tn@r@+T>!+~GW&uLhJy%FIlXbLkJB<@;$FTiQYBRvfL$C_|}Anq27VW@fSkG8Keo z)ao$LWaH9bFTyd|sY;06w)%N>z*-X8ZBe#PI%1e1Go`Vl+v3`BPF~1?LD*78GkSW8 zGy6c>mhC_7ma=yjtdxEWPL-;AoB*e8=@^k<2#1_x@Wh7v&Q%WdP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miK01Q02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008AlL_t(o!^Ky@5dh(At8+OC@Kr*VWesxO9CR00Ww4^Thie?!kqp~X5*<2vNht_ zo=od_7?hMtfOV2>*Z+O9YY?%sVpg47srAxreP7wspDMZ1stY;)8<)`>kJnWKs`^F6 zxo$bm9^GPRID@gWArUwm4SOF<#8_qsq1_^tC_1tul~hK~uL_c=K(pBiuj5l6SDlBV z6xD@{j-+IHN96FsBqG7KVvE$SNci@rS!obeNidp$78%`-muKq-zsT&feRgPd00000 LNkvXXu0mjfvpY}1 diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti19.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti19.png deleted file mode 100644 index d01b41fcabb3e978c821d86bd893cb6c1e62cb1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmV-M1G)T(P)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0003UNklJ*tE-6os$DfMAi%>>y2gTQ}g+vW6@p zn=qA)g>Jx*Qt$_h`zjxKZxnxrVIT)Yi{N*1?uiKC<@IfnQle4{KW?P1>(868)}oKy zT8mf4@i?-WF&4P7&(Bp=o$kcrXzXzu2QEC%b7-38bgIFg*coHNQu$_hnx^o7&20u| z;M&fwz;_#X$IcHM*n(@VfBTXoN${4Bj#3JxlrP6lYmKg4Gq=bEZ^3Ujp_D=)#Nv^3 z;YCsWx$iac+=7>737m7tvTSj##u$jA2nZnn06++Vwr!#7y7MIzLLlcHw%~ILlu`)8 z5R5TEDTQ$y!CHH*jBBy4nV6;thhf0J@9&$x5MuX>wAMIZ{K3144`{Qv0YV QOaK4?07*qoM6N<$f)dkiy#N3J diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti20.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti20.png deleted file mode 100644 index 6a4d0d3a761c02c9f97b5c9bddd3a9a149b38c5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1813 zcmV+w2kQ8VP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miK05eXaxin0Iz02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00iwxL_t(o!|j(%Xj5w%$N%RfX@f|KwiTrcMr!;(Xu)Ra zMxoSOF1YYYcY>l9H$|_4F2=&RaiK^TW2rcZh@j(Q2wI7Y;;o=~#}7yygnZ(z%!MbL9geoV@2f|KI<4pZ9rBr0?;G0W3|WQZG}f)EKb*n*+Rl z{rYNSV{ovr>2TAPSy&FGzdU}vVB9Zt2 z)PFUAd_Mn=l`B^gi9~qw=1mFU?c29RA`zOKo5|<%r@of^b;pk%_at%R#EFu)F$RGC z{(dBJ?AS36Sog&N#>U2etE;PH_3G6Wi$wrD&%^UPj4?Ql!`iiLnLmF%&!0d4_m_76 z)2>~+ki_utaLK*vx+M^RYuBzJiJd!l0{rx)#A|QgzMZpeo6Vay&q;kX%$6-%uq=yP zw{GQt@Mi;fp4Z#n-cD_8Eu*8Oa|Fw;jWLXljuH-sX>V`G^Sr-(uKOkD&!3->#KD6H z0dO3r^zGL|u~@`)U1nxx0628$5Ry21_UsJM^vM9@Ao)Pm|4NX=!QU z#*G^lS#VvK;o)IgTU&YZ7l`^(|Ohmpj&bLYtC^F*Uj zB+=U1S`s(L;JPj?EiFi5#flY7PEK;+!UZJJ+uIA!{;{dI9zA;WpKv%#TU#3d<%f?X zPM$HE5OhHulW3-p`o{u*tTsO0MDL1s}PXH#fukd zXlS6Zv5|p+fjQ%2V`Bj9*s%ji3=Ivv1L~^vtm+?TXJ?PLwYBxWc=1AyA3s)8Qm`+XlEnM@K2g{Y~iA(>28fcZPaZ_zU|Geo0N8X6kN<#NCNk^2t6 z(l1}WTza72c*;B8)YKHQSZq!~mY)mN9dmGS5J~LWvj^bE>OCJwrBb88V33ZEjtcSW z^crL6>+73SbbWn&|MQG6#+0BsJ39#mgN%%fJO@JM06qR|Ryv(7O{{hgFf}zrJRY9| z5Rb>_xc8%2EaG_{>2#VhlL!6OM-qv|2TAnw^i)jr*WGcPiuE_faOch)lF20Z@82hz z%~m+~@AXZTgYDhB*MEJR0vfIN@86$XzkdCmmoH!H`t|E_9LGNeWm%R0S(a5^D+&Yx zlB9(T7b+Hu>FLv_8Xq4QAfV!2%d%uymW(m7ZCeu)6WYFgyOu3mriTw7p4FvGm-5x= z{8pbUSFYqO;7B5o_-jo~P0fZ48#FsRt3shrqW8%ql`>(BQ6LbI=Xr8n*D=O8wr$Jv zJlVD_+qPwlDX%g4<8^g)3WY*Sr_*NBrcM3d|K$D`@;q7if%6_R00000NkvXXu0mjf DY36aM diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti21.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti21.png deleted file mode 100644 index 8ce64bdebfc34628b8b4348c4c559679c9e6ff14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 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 diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight05.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight05.png deleted file mode 100644 index a0032230b8c1c65a0e4d1c195c2008eae020f88a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 795 zcmV+$1LXXPP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miG~CLFoE-a7yQ02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008qzL_t(o!|hco5`-`eP1Z)>>+szF3S0oo;4r8N2Fa>) zx>1amhEIRF3=WuNoPQ7`1o?1#y9 zK|O$T4w>1jCL$yvT$bhe9$1uLLTyyS5@Wn@4C*D)^!cc49+=xOu3+K z+w3?{qkI^K-M6M`a2v;^PK3%uY04#)>I7;s7lhfzVD7}X%r)2bnG>kZT#GX&&_cc~ z;5R2?L*QM?)t%U8p4#{`gy$S}0z>8Ud%Y9FvvXparjN<`zF&{t!*%SLx<47Q4d#RY Z0dL^69e0R2?FIk<002ovPDHLkV1hiAUk(5O diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight06.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight06.png deleted file mode 100644 index 8b5a21b3f0999bbe4fba6a1f7c27a7ed98242c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miG~CeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0053jL_t(o!|jy43cw%?gcIqDIp=wA_N`p)QlS)~F_pU9 zHz|1exu_z9Y(}F(Gi&!ffKaRyO%6arL~5;{97rD=5CB?A(d~15j^h^xR*`l)l2!-o z7u2gcJV|E)0#Gw+_t$Y1rC}TUI_KO*j?C^|4!nIb&#t^hxSiR07*qoM6N<$f)+6*O8@`> diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight07.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight07.png deleted file mode 100644 index 5cdbca8d95d11e1374176e48154fb4711365fbff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757 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 Ef=Fa@KL7v# diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight10.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight10.png deleted file mode 100644 index e4af835e384ca07f5abcda5ac394ca7076cb9af5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 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 UnV=|o$N&HU07*qoM6N<$g1f*~hyVZp diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight14.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight14.png deleted file mode 100644 index c86ad4d0b63deaaad6736a56658c0fdfec095a07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 zcmVP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0IC400IDH4t_T1C010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miH2GbE!#mNWnW02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00O{CL_t(o!|j#3PU}DrhQIYC1Ur$HNRd*|0RaBQ=_?5S+UKync0(B*HuGuF)hJG1jIEV0BA z3-J2-s{S>{&CSiva*ReJ1#o+N`(qM$j>%*)H;4G>xWB(wVHjc<29Dzph9RbDGMP+p z9EYc;Ct9r*K@gB-8M?0H`#$YQtV`D?iWjr2_)o-`; z?(VL%hcRm;N%HMPCnqP$aU6W#r`zp{e!s7T5Tt3!{{Frg3Y01gfgibR%W(dl%=`T4m5==FMHI2@{Ow<`c@wHlpHM_gQ7 zluv9J-yGgkHS={z+^J{b#-+dXR#2CMkA$Z8cC8A6Hu$w zh@uF?Fp4(S>ve<>#Bod<$E>ff^ZfjbX_}13V;YSHp68Jy36)BPEXzoegw4%O@mH2A zZ~TA6yqw0OprfNB)oeELJP*S#3O%qa3n?YGZKISb30M#WgkeY?XWKS=dwb$XY+cta zSf8GrDuCq72dSy^G;=3h?1EL_)B^?JSN zJ;2M$OYu}cK0dOxwuY1v-}kXBi)yusl#=c3Z5|#T2!epEtu4V4ODwU(9Q*-TX=qH8 Sy8eIw0000EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0IC400IDH4t_T1C010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miH2H5H`5F^B*F02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{001>fL_t(o!|l+q4FDhv1F)78`u~l60d^!dq%QWDEKwo= r7?!W1yZ4<{RsJ5ZrXMf>0ASn!JW&J)>viYT00000NkvXXu0mjfl*al{ diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight15.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight15.png deleted file mode 100644 index 85dd1c64d1cd8aefa659a4d9838838e6f387b6c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 878 zcmV-!1CjiRP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miJ{BOT(k^V$Fa02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00BlxL_t(o!|hf*Z^AGXJUbZ}3``&)@eA_*C3dz55Hmv- zgpi_S2*MwMNV!g}3M!POgtTgI^vCn_-Mwc69V%e6+3?vhWtGK)!Ju6RwASr1kR%CO zO(2S*PJ(~l2aGXyB`C|1jY{Bo-rf20`P?20d7iUz6F$O1Rrqx_6-B}Qeh;M-oO4i0 zf#mb)4#SYw50G>2%acy0)5Z91x8r)feoj{N`TQf0wf0*N%w{t-V!&Ise{}xG9{8+t zmSyxj4`o?mI2;N9kWw~V1yV{l=eSrbsI^AF-xr6&0jt%D$K#Pgh{_3wx^kpxN|GRn z@pvroN?bRiEX!(}PS)Af>-8>;R07*qoM6N<$ Ef=54x_5c6? diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight15_1.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight15_1.png deleted file mode 100644 index dfb649093b5954b099b7527a51bb5b6ad36276b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 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 KMNUMnLSTZF1RYuc diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight18.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight18.png deleted file mode 100644 index 1a6e61668a27aa75b97f03a4bb494523fae16843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmVEX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miJ~IygD)$+!Rj02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0072GL_t(o!{t{&4#O}A3(>yd|35H~*iMzANewudc3N|+ zz&3%pw6&)nV-v<0?`SLllL?rKBfv*|B-RCDs#fLF*Db|KE6?JwxFVUK zu_8KCDF6dtE0Jt_x?-SaQQm9kij?$`z^7ZFw&LDyKL0HsGBdAA;;otaR=wkjDN8iBf2{{7ytkO07*qoM6N<$g23BDzW@LL diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight19.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight19.png deleted file mode 100644 index 58e2e759cebc94ce62fbba56d4da5324070e1c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0001#Nkl3`Dgk%e4%v@Z>oqq=?y*Aj|pz zqpOes5l?TJOwbsW>Na`r5kkQ4MvgE+M9|oo8QYS0$Ii@HHjZBGC46ZgYO!xEV=eZr zn{Yfl#)y2D8~B2^-eN^0BJ|+mCNlhM8%jt@3FR$fq6HrTOd06GTPcW*VDtl;DWR1r jY6*4DS))>^RJZ5>NjAZ5MI3|j00000NkvXXu0mjfmPsIz diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight20.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight20.png deleted file mode 100644 index 76f89dd99555d91f5a33930083019d27229b4a4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 781 zcmV+o1M>WdP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miK05fpy|=4$`|02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008AlL_t(o!|hf<4#Xe`MB{()DfnW0Srbc;ptyCL?3}d3 z!i=K`@W-1$M3so@vE&V&BBG~=@WC!@g@00000 LNkvXXu0mjfc_v*> diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight21.png b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/holograffiti_highlight21.png deleted file mode 100644 index 66134bcd56a098f2da3a582da001a960a0613c29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmV;%0y+JOP)EX>4Tx04R}tkv&MmKpe$iTT7)>I@m$9Lx$>PK~%(1s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwX9p)m7b)?7NufoI2gm(*ckglc4)C^WOfmW<07W(R zOfn(l3#&rl6@CN}#t5P!GqhB8F$dT2bq^0;@8Uem{oJ2pKrR{#@Cd|nOw&!`4dR(i zQ{%i(9AOnvCO#(~*Xe@9k6f1=e&bxW*~>E{dM-0h93d9UJuLMwtLO^xG;vH;RLb|} z9hNz7aaL*#*10EtVW_CCWVuc=iX@hhLK*@jG*CqiCgQZJq!`H1e!|5+Z2QyXlE_sB zBgX>jP$1fV@IUz7tx=kqbdo{|!2e=dAEQ8E7ic#v>-*TU+9!bT8Msor{(1|T{Up8F z)nZ3LcpJF5?rPE=aJd5vJ!zsY+LDi^w^Rb&&*+;9z~C(qTyuKs?BnzS$Wd3zH^9Lm zFjl7Qb(eSd_xAShnNEK{XrpqYE&@qk00006VoOIv0HOes0A{ElwM_s3010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miQ7FFDuSs{;T402y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005pzL_t(o!|hbt3cw%;ZQ^tP|DFCodlDkFnHjvP!GkkRH&~NcI^q_DApK zeQ-;|X+FotP|E__aW$BAyojh-dIY?RG$OOoNN3>0@)=3+BV_`1R9nk219}^4oQRQ3 s=q9uT+*wBMB@|JDL?V$$Bof#00+Mot%b}CnWdHyG07*qoM6N<$f~u1(zW@LL diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/meta.json b/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/meta.json deleted file mode 100644 index d1ee59a33d..0000000000 --- a/Resources/Textures/_NF/Structures/Holo/graffiti/highlighted.rsi/meta.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "Holograffiti01-holograffiti10 were taken from tgstation13 and modified by erhardsteinhauer (discord); holograffiti12, holograffiti14, holograffiti15, holograffiti19, holograffiti20 - edits to SS14 sprites; holograffiti11 - holograffiti21 by exrhardsteinhauer (discord)", - "states": [ - { - "name": "holograffiti01" - }, - { - "name": "holograffiti02" - }, - { - "name": "holograffiti03" - }, - { - "name": "holograffiti04" - }, - { - "name": "holograffiti05" - }, - { - "name": "holograffiti06" - }, - { - "name": "holograffiti07" - }, - { - "name": "holograffiti08" - }, - { - "name": "holograffiti09" - }, - { - "name": "holograffiti10" - }, - { - "name": "holograffiti11" - }, - { - "name": "holograffiti12" - }, - { - "name": "holograffiti13" - }, - { - "name": "holograffiti14" - }, - { - "name": "holograffiti15" - }, - { - "name": "holograffiti16" - }, - { - "name": "holograffiti17" - }, - { - "name": "holograffiti18" - }, - { - "name": "holograffiti19" - }, - { - "name": "holograffiti20" - }, - { - "name": "holograffiti21" - }, - { - "name": "holograffiti_highlight01" - }, - { - "name": "holograffiti_highlight02" - }, - { - "name": "holograffiti_highlight03" - }, - { - "name": "holograffiti_highlight04" - }, - { - "name": "holograffiti_highlight05" - }, - { - "name": "holograffiti_highlight06" - }, - { - "name": "holograffiti_highlight07" - }, - { - "name": "holograffiti_highlight08" - }, - { - "name": "holograffiti_highlight09" - }, - { - "name": "holograffiti_highlight10" - }, - { - "name": "holograffiti_highlight11" - }, - { - "name": "holograffiti_highlight12" - }, - { - "name": "holograffiti_highlight13" - }, - { - "name": "holograffiti_highlight14" - }, - { - "name": "holograffiti_highlight14_1" - }, - { - "name": "holograffiti_highlight15" - }, - { - "name": "holograffiti_highlight15_1" - }, - { - "name": "holograffiti_highlight16" - }, - { - "name": "holograffiti_highlight17" - }, - { - "name": "holograffiti_highlight18" - }, - { - "name": "holograffiti_highlight19" - }, - { - "name": "holograffiti_highlight20" - }, - { - "name": "holograffiti_highlight21" - } - ] -} diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti01.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti01.png deleted file mode 100644 index 1676999941395046b80b3a5355203f699d28a4a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212 zcmV;t1Vj6YP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miG~AQhH6!5IJm02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00NXrL_t(o!|hhVPUA2TeNFrmL zap8c3IJP24QI*QYxUv2Au7i z{Lwi_V+@AFp=cYDQW5~p&(Cpoc7`m=L>~g-+;}_|0FcBVCzDBoowXLj;ZWpx&X11| zb{RZ8JVctNu-5YV`I*}YjK^aUE?)^v2v1p-oKB|7%fdPu1mXlCNv$=is%k`NFc?5< zy;2dz7y!U%G!ou>zP`TV^z^jeb8>QmG);x~p5A)^K$@n_f1Bs|O2RCcOXhh_=N#km zX_sl&dKbL+_1<<8?*;9|-5Jg~{s|-3dAJu(!bMtZw%hB|(-W<=R7z1PRhQi+WS=QcB+6 z-|s~D@$r#2H#eJ&PN!4$^(3AF0O0NIZDU(rEEd~suW0m|Qd_sbC<^Wp{!cZcBuQ#v zies diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti02.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti02.png deleted file mode 100644 index e0e341c0a32d15a068b4a2ad20aa2bdb382723d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmV;D18w|?P)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv0E+;N0E?)9lr;bV010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miG~Bssv2X#M~I02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00C-AL_t(o!|hhPuEQV9!-07b)_7s615Lt8*>7{jX#FSIT10?xNTceFk@Im7Dc>**0RUi{rf}u@5gu{ISMGEzCtE3U#Dp`^q3mglh@nPyiF3+L zMTUrhZ-|J2mz^I&td=P?<@QG@>Uo|)Yb|&X#+a%PO{|znDW0Y&SZiNO3jomfJt(D4 ztJE~jZnM@NY_UwA&E4Mv&bc6^6!901?7Y-UDX`W;*L6E*97oVv3*z%5GREx5@G;Fl zM9iBp?p){G-VZU4HYIJy_1M9mbFS+eN<8Ak!Bq#4(}6gE)O9VbRn!5#(dD~b;MML? o44_tYYIwi$NVy*>H*UOx9}XJhO==Nf?*IS*07*qoM6N<$f)?JH761SM diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti03.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti03.png deleted file mode 100644 index d65c74241ad99a0e6e8244ca49a3c73c7e0715aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmV-$1CRWPP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0003;Nkl2~zWpyI5(|wu?a}p74=&awZH8){vjYMP+5!G4~#<$iEdYg-x zsrNogDe15QEQ*P&PP?Irw77n&-iu@A^R|h|7-I}Port^_wo-5$s3ypI5=A9cV>_B zZ^&ZS855jQD%w3pRJ*d_+omjMS<5~g)^6Et*6#VJJx64-O7wu*f$WjTiswC|a`!d# z_#WxkEX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0002iNkl}Vf zunyB)ruvR_IE2`T109Rpwx7{E!x{f z>(xU?%iIh=>weLChX{HpMx#EZ3C#x4w#V0~+3t`wj`@EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>Nu!Dk000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0003zNkl@L$y{rqMwdPjVS}R0EwN^r) zJvK0Amqx7&X~V$cSZ`g(*tTtg)LI7&f(i8`AOAOuZsT+4#5*pyQtIN1AU%Xb6BNjAkHv!SGZv zCC7V*Lxzcnp;{|3vuFWUvL8_rBBCSHy~m&eu`DfTtH-;dCdYUqZAqOKnJw7cEv1w~ vM}eFbm7iTmMnTZO6WT$XR`n(5zfJ84Q)A~Mdm$;b00000NkvXXu0mjfU<7ZT diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti06.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti06.png deleted file mode 100644 index bad58265e818d1c9d0a61582bc6e0d6d5afecba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmV-Y1FigtP)EX>4Tx04R}tkv&MmKpe$iTT4}{4t5Z6$WWcEh>CQSDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRFSdL}hb93mEq9V~S)E9naH3~^XiRLb{e z9hNz7aaJld*19KuVKA?*q`6LW1aT}Ofg}V-sG*DsOhjl^NimS3{g{h?*!CyMC6TKP zMvetkp+L0#;D7MDTca>N_CX>@2HM@dakSAh-}0003gNkla2rMVwb?Vb1>Xt$kt}-esFjJV zK1$(=9yIEB1|B#sQ;P|e0j;Gx=e#?tfGH+C;Y78R3|V{K@_K(FVhR8Sw|vPY>#U%n z_KHB76Vszu6Q#9R3Rc_4*J{)w3?UT;s_tgE671``X745593vC-ZrIdryb>{@k zTFthiT<71K*s|rQtD@oW1M6I7c2v(X7v~t`H()4x`b|NQ8Trz5;p)wrVqOWX(rMYJ zCZS|uwGCTqDzLEB-Ynntyu19QN?vw{cWDra)hD+sjphetkw;*72V|xs%u;9xl(*JZ c#$MZMA5>b2=*oKdKL7v#07*qoM6N<$g0OFHr2qf` diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti07.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti07.png deleted file mode 100644 index d2e56c03300ba0d0abf25676742eb4e6ab879287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809 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 Y0S~*!%lG<&&j0`b07*qoM6N<$f<;C`H~;_u diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti15.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti15.png deleted file mode 100644 index 9edebfaefc9191c42a5adc88d8d72a40497b8d55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmV+*1K<3KP)EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miJ{6)jD0QUd@002y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008(&L_t(o!|hhf4umiWEX4o+W%gvk)+tO;>uw?!Z528U z<({$}=72H=8Fo;3ydx+i2LNVf-Y5$s@)ogC&7xL~{VTUs$EX;wvRwg)y{xw|5Tzg^ zdIg9x>7{=`d8H%L>^+%5A|m=kh4Ud)L}LV^O7%!@%X<8%(aeB|8l1AqmC*FM)Ih?d z9W(EF=5|30pQ-~ah{#4c3(%d2Ml-4sjxHPnYUYw2(r|P*8mB7r;;4Eq>y*sIy}X4l eZ&p7$-hBX7dsm&z?jt7v0000EX>4Tx04R}tkv&MmKpe$iQ%glE4t5Z6$WWau_>H4fu?QAQTcK44lS{v#Nkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&Bx4o-?LQsV!TLW>v=j{EWM-sA2aAT%mWHM_WTDX2A<>V9zMR_MR}I@xj#p*k~bOP6N%@TZdk+{#50?g z&Uv3W%u13%d`>)S&;^Mfxh}i>#<}RQz%#=}CN)nSCKihwEO#&~87lDOP(}q7qO@wHm`Krn%)>wE_><(4$yEj; z#{#NQAvu2VKlt6PS(uz~lR_~d@M7B^!$5EsXx44}``EUdCxHJMxYFAGY6F=4B)#6& zB1b^qHgIv>*5p0lat9cA(j`N3BtK1|PypV~=$mpt|1Hq7=JwXw$LRx*p{|y1fP+I| zq)6H89`Ek%?Csw(t^R%hxGi$SRk+Gb00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=miJ~Gcl3#%2faW02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009|EL_t(o!@XBQ4g(EqVwwj5v>g>lyUS{Ejgm1cYTr?cy0@JkzmNVv3|+Mqx#S z04dEtmY8Hkh(?C;!Sc~F5qps%MC_G>i~OGE03uunF9=Pq7oqm;?#?WMG(Ju1YCE%~ zeMhoSqg@b*w5-<=PH6l1VTf8I_bjW__njK4xpnpqZ5>=Cpw_yQ@Rg$5o)cy z0wJ`=GYYr@k?*MtL^xteI-#16lwv2jWm~b9UN3;%U7Caz5fNZzTQQPy3n)b$tmAs# zo$dvt{|in)kY->hSCru%VSh4UDVJ8~6M;%EFS6gWa{c!O#RBmGk`;f9hp61-00000 LNkvXXu0mjf=NM%= diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti17.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti17.png deleted file mode 100644 index c8d118b4368780b381d646e23ad6359b922d707d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 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 diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti20.png b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/holograffiti20.png deleted file mode 100644 index 3595a150d54fffb18368b8d12885ce70f504f2f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 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 diff --git a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/meta.json b/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/meta.json deleted file mode 100644 index 43ea700b17..0000000000 --- a/Resources/Textures/_NF/Structures/Holo/graffiti/simple.rsi/meta.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "Holograffiti01-holograffiti04 were taken from tgstation13 and modified by erhardsteinhauer (discord), holograffiti05 - holograffiti22 by exrhardsteinhauer (discord)", - "states": [ - { - "name": "holograffiti01" - }, - { - "name": "holograffiti02" - }, - { - "name": "holograffiti03" - }, - { - "name": "holograffiti04" - }, - { - "name": "holograffiti05" - }, - { - "name": "holograffiti06" - }, - { - "name": "holograffiti07" - }, - { - "name": "holograffiti08" - }, - { - "name": "holograffiti09" - }, - { - "name": "holograffiti10" - }, - { - "name": "holograffiti11" - }, - { - "name": "holograffiti12" - }, - { - "name": "holograffiti13" - }, - { - "name": "holograffiti14" - }, - { - "name": "holograffiti15" - }, - { - "name": "holograffiti16" - }, - { - "name": "holograffiti17" - }, - { - "name": "holograffiti18" - }, - { - "name": "holograffiti19" - }, - { - "name": "holograffiti20" - }, - { - "name": "holograffiti21" - }, - { - "name": "holograffiti22" - } - ] -} diff --git a/Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/clothing-vandalized-deny-unshaded.png b/Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/clothing-vandalized-deny-unshaded.png deleted file mode 100644 index d67626c00247bdd16d21e43dbc117ae45782deef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8317 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 LR*|ZfFb(-1R}m0g diff --git a/Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/meta.json b/Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/meta.json deleted file mode 100644 index ebec00f735..0000000000 --- a/Resources/Textures/_NF/Structures/Machines/VendingMachines/vandalized.rsi/meta.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 , edited by erhardsteinhauer (discord)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "clothing-vandalized-unshaded", - "delays": [ - [ - 1, - 0.1, - 1, - 0.1, - 1, - 0.1, - 1, - 0.1 - ] - ] - }, - { - "name": "clothing-vandalized-deny-unshaded", - "delays": [ - [ - 1, - 0.1 - ] - ] - } - ] -}