From 2a9e045f4e47e83749b17df7138c7377df016c4e Mon Sep 17 00:00:00 2001 From: Evgencheg <73418250+Evgencheg@users.noreply.github.com> Date: Sat, 19 Oct 2024 00:00:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=BA=D0=B8=3F)=20(#274)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * DELETE NOTHING ADD THING))) * again thing add * переводы * мда * Update CharacterRequirements.Profile.cs * Update CharacterRequirements.Profile.cs * Update CharacterRequirements.Profile.cs * Update CharacterRequirements.Profile.cs * Всё * bruh 1 * bruh2 * ФИУКСЫ --- .github/workflows/test-secrets4.yml | 4 +- .github/workflows/validate-rsis.yml | 4 +- .../Preferences/UI/HumanoidProfileEditor.xaml | 11 - .../UI/HumanoidProfileEditor.xaml.cs | 58 - .../Tests/Preferences/ServerDbSqliteTests.cs | 3 - .../20241014210800_Delete.Designer.cs | 1867 +++++++++++++++++ .../Postgres/20241014210800_Delete.cs | 22 + .../PostgresServerDbContextModelSnapshot.cs | 47 +- .../Sqlite/20241014210750_Delete.Designer.cs | 1796 ++++++++++++++++ .../Sqlite/20241014210750_Delete.cs | 22 + .../SqliteServerDbContextModelSnapshot.cs | 45 +- Content.Server.Database/Model.cs | 18 - Content.Server/Database/ServerDbBase.cs | 20 - .../Systems/CharacterRequirements.Profile.cs | 39 + .../Preferences/HumanoidCharacterProfile.cs | 82 - .../Locale/en-US/_LostParadise/loadouts.ftl | 1 + .../Locale/ru-RU/_LostParadise/loadouts.ftl | 1 + .../entities/clothing/back/backpack.ftl | 3 - .../entities/clothing/back/duffel.ftl | 3 - .../entities/clothing/back/satchel.ftl | 3 - .../entities/clothing/head/hairbows.ftl | 6 - .../entities/clothing/lpp/breast/breast.ftl | 3 - .../entities/clothing/lpp/socks/socks.ftl | 3 - .../clothing/lpp/underwear/underwear.ftl | 3 - .../entities/clothing/neck/cloaks.ftl | 20 - .../entities/clothing/neck/scarf.ftl | 3 - .../entities/clothing/uniforms/jumpskirts.ftl | 6 - .../ss14-ru/prototypes/corvax/sponsor.ftl | 54 - .../Entities/Clothing/Back/backpack.yml | 10 - .../Entities/Clothing/Back/duffel.yml | 10 - .../Entities/Clothing/Back/satchel.yml | 10 - .../Entities/Clothing/Head/hairbows.yml | 32 +- .../Entities/Clothing/LPP/Breast/breast.yml | 12 - .../Entities/Clothing/LPP/Socks/socks.yml | 10 - .../Clothing/LPP/Underwear/underwear.yml | 10 - .../Entities/Clothing/Neck/cloaks.yml | 74 - .../Entities/Clothing/Neck/scarf.yml | 12 - .../Entities/Clothing/Uniforms/jumpskirts.yml | 25 - .../blackbackpack.rsi/equipped-BACKPACK.png | Bin 3545 -> 0 bytes .../Back/Backpacks/blackbackpack.rsi/icon.png | Bin 5080 -> 0 bytes .../blackbackpack.rsi/inhand-left.png | Bin 4761 -> 0 bytes .../blackbackpack.rsi/inhand-right.png | Bin 4927 -> 0 bytes .../Backpacks/blackbackpack.rsi/meta.json | 26 - .../blackduffel.rsi/equipped-BACKPACK.png | Bin 3261 -> 0 bytes .../Back/Duffels/blackduffel.rsi/icon.png | Bin 2427 -> 0 bytes .../Duffels/blackduffel.rsi/inhand-left.png | Bin 2402 -> 0 bytes .../Duffels/blackduffel.rsi/inhand-right.png | Bin 2501 -> 0 bytes .../Back/Duffels/blackduffel.rsi/meta.json | 26 - .../blacksatchel.rsi/equipped-BACKPACK.png | Bin 2307 -> 0 bytes .../Back/Satchels/blacksatchel.rsi/icon.png | Bin 5471 -> 0 bytes .../Satchels/blacksatchel.rsi/inhand-left.png | Bin 2105 -> 0 bytes .../blacksatchel.rsi/inhand-right.png | Bin 2250 -> 0 bytes .../Back/Satchels/blacksatchel.rsi/meta.json | 26 - .../blackhairbows.rsi/equipped-HELMET.png | Bin 1863 -> 0 bytes .../Head/HairBows/blackhairbows.rsi/icon.png | Bin 2204 -> 0 bytes .../Head/HairBows/blackhairbows.rsi/meta.json | 19 - .../redhairbows.rsi/equipped-HELMET.png | Bin 1877 -> 0 bytes .../Head/HairBows/redhairbows.rsi/icon.png | Bin 2266 -> 0 bytes .../Head/HairBows/redhairbows.rsi/meta.json | 18 - .../Cloaks/Monorich.rsi/equipped-NECK.png | Bin 2617 -> 0 bytes .../Neck/Cloaks/Monorich.rsi/icon.png | Bin 1039 -> 0 bytes .../Neck/Cloaks/Monorich.rsi/inhand-left.png | Bin 703 -> 0 bytes .../Neck/Cloaks/Monorich.rsi/inhand-right.png | Bin 693 -> 0 bytes .../Neck/Cloaks/Monorich.rsi/meta.json | 26 - .../Scarfs/windy-scarf.rsi/equipped-NECK.png | Bin 1462 -> 0 bytes .../Neck/Scarfs/windy-scarf.rsi/icon.png | Bin 325 -> 0 bytes .../Neck/Scarfs/windy-scarf.rsi/meta.json | 24 - .../Cloak/Cargocloak.rsi/equipped-NECK.png | Bin 2170 -> 0 bytes .../Cloak/Cargocloak.rsi/icon.png | Bin 763 -> 0 bytes .../Cloak/Cargocloak.rsi/inhand-left.png | Bin 802 -> 0 bytes .../Cloak/Cargocloak.rsi/inhand-right.png | Bin 807 -> 0 bytes .../Cloak/Cargocloak.rsi/meta.json | 26 - .../engineeringcloak.rsi/equipped-NECK.png | Bin 2205 -> 0 bytes .../Cloak/engineeringcloak.rsi/icon.png | Bin 812 -> 0 bytes .../engineeringcloak.rsi/inhand-left.png | Bin 863 -> 0 bytes .../engineeringcloak.rsi/inhand-right.png | Bin 945 -> 0 bytes .../Cloak/engineeringcloak.rsi/meta.json | 26 - .../Cloak/medicalcloak.rsi/equipped-NECK.png | Bin 1765 -> 0 bytes .../Cloak/medicalcloak.rsi/icon.png | Bin 681 -> 0 bytes .../Cloak/medicalcloak.rsi/inhand-left.png | Bin 861 -> 0 bytes .../Cloak/medicalcloak.rsi/inhand-right.png | Bin 926 -> 0 bytes .../Cloak/medicalcloak.rsi/meta.json | 26 - .../scientificcloak.rsi/equipped-NECK.png | Bin 2068 -> 0 bytes .../Cloak/scientificcloak.rsi/icon.png | Bin 823 -> 0 bytes .../Cloak/scientificcloak.rsi/inhand-left.png | Bin 948 -> 0 bytes .../scientificcloak.rsi/inhand-right.png | Bin 937 -> 0 bytes .../Cloak/scientificcloak.rsi/meta.json | 26 - .../equipped-HELMET.png | Bin 1051 -> 0 bytes .../Cloak/scientificcloakhel.rsi/icon.png | Bin 369 -> 0 bytes .../Cloak/scientificcloakhel.rsi/meta.json | 18 - .../Cloak/securitycloak.rsi/equipped-NECK.png | Bin 1567 -> 0 bytes .../Cloak/securitycloak.rsi/icon.png | Bin 644 -> 0 bytes .../Cloak/securitycloak.rsi/inhand-left.png | Bin 812 -> 0 bytes .../Cloak/securitycloak.rsi/inhand-right.png | Bin 866 -> 0 bytes .../Cloak/securitycloak.rsi/meta.json | 26 - .../cowset/cowbra.rsi/equipped-BREAST.png | Bin 540 -> 0 bytes .../Underwear/cowset/cowbra.rsi/icon.png | Bin 278 -> 0 bytes .../Underwear/cowset/cowbra.rsi/meta.json | 18 - .../cowpanties.rsi/equipped-UNDERWEAR.png | Bin 432 -> 0 bytes .../Underwear/cowset/cowpanties.rsi/icon.png | Bin 163 -> 0 bytes .../Underwear/cowset/cowpanties.rsi/meta.json | 18 - .../cowset/cowsocks.rsi/equipped-SOCKS.png | Bin 827 -> 0 bytes .../Underwear/cowset/cowsocks.rsi/icon.png | Bin 321 -> 0 bytes .../Underwear/cowset/cowsocks.rsi/meta.json | 18 - .../equipped-INNERCLOTHING.png | Bin 7057 -> 0 bytes .../Topics/altwhitetopic.rsi/icon.png | Bin 4684 -> 0 bytes .../Topics/altwhitetopic.rsi/inhand-left.png | Bin 4854 -> 0 bytes .../Topics/altwhitetopic.rsi/inhand-right.png | Bin 4863 -> 0 bytes .../Topics/altwhitetopic.rsi/meta.json | 26 - .../whitetopic.rsi/equipped-INNERCLOTHING.png | Bin 6952 -> 0 bytes .../Uniforms/Topics/whitetopic.rsi/icon.png | Bin 4899 -> 0 bytes .../Topics/whitetopic.rsi/inhand-left.png | Bin 4979 -> 0 bytes .../Topics/whitetopic.rsi/inhand-right.png | Bin 4863 -> 0 bytes .../Uniforms/Topics/whitetopic.rsi/meta.json | 26 - 114 files changed, 3755 insertions(+), 1016 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20241014210800_Delete.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241014210800_Delete.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241014210750_Delete.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241014210750_Delete.cs create mode 100644 Resources/Locale/en-US/_LostParadise/loadouts.ftl create mode 100644 Resources/Locale/ru-RU/_LostParadise/loadouts.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/head/hairbows.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/sponsor.ftl delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/equipped-BACKPACK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/equipped-BACKPACK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/equipped-BACKPACK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/equipped-NECK.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/equipped-BREAST.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/equipped-UNDERWEAR.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/equipped-SOCKS.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/meta.json delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/icon.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-left.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-right.png delete mode 100644 Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/meta.json diff --git a/.github/workflows/test-secrets4.yml b/.github/workflows/test-secrets4.yml index b2de7a73aa0..b0ad4828282 100644 --- a/.github/workflows/test-secrets4.yml +++ b/.github/workflows/test-secrets4.yml @@ -10,7 +10,7 @@ jobs: validate_rsis: name: Validate RSIs if: github.actor != 'PJBot' && github.event.pull_request.draft == false && github.actor != 'DeltaV-Bot' && github.actor != 'SimpleStation14' && github.actor != 'Lost-Paradise-Bot' && github.repository == 'Lost-Paradise-Project/Lost-Paradise' - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3.6.0 - name: Download parts @@ -27,7 +27,7 @@ jobs: uses: space-wizards/submodule-dependency@v0.1.5 - name: Install Python dependencies run: | - pip3 install --ignore-installed --user pillow jsonschema --break-system-packages + pip3 install --ignore-installed --user pillow jsonschema - name: Validate RSIs run: | python3 RobustToolbox/Schemas/validate_rsis.py Resources/ diff --git a/.github/workflows/validate-rsis.yml b/.github/workflows/validate-rsis.yml index fb8f2f5a8b3..3815b74873d 100644 --- a/.github/workflows/validate-rsis.yml +++ b/.github/workflows/validate-rsis.yml @@ -13,7 +13,7 @@ on: jobs: validate_rsis: name: Validate RSIs - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3.6.0 - name: Setup Submodule @@ -22,7 +22,7 @@ jobs: uses: space-wizards/submodule-dependency@v0.1.5 - name: Install Python dependencies run: | - pip3 install --ignore-installed --user pillow jsonschema --break-system-packages + pip3 install --ignore-installed --user pillow jsonschema - name: Validate RSIs run: | python3 RobustToolbox/Schemas/validate_rsis.py Resources/ diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml index 83774791024..7b6941c650d 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml @@ -4,7 +4,6 @@ xmlns:humanoid="clr-namespace:Content.Client.Humanoid" xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls" xmlns:ui="clr-namespace:Content.Client.UserInterface.Controls" - xmlns:donate="clr-namespace:Content.Client._LostParadise.Donate" HorizontalExpand="True"> @@ -213,16 +212,6 @@ - - - - - - - - - - diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs index e4fe9c50694..b2038fd06fb 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs @@ -90,11 +90,6 @@ public sealed partial class HumanoidProfileEditor : BoxContainer private Button _loadoutsShowUnusableButton => LoadoutsShowUnusableButton; private Button _loadoutsRemoveUnusableButton => LoadoutsRemoveUnusableButton; private NeoTabContainer _loadoutsTabs => CLoadoutsTabs; - - private BoxContainer _donateList => LPPDonateTab; // Lost Paradise Donate Preferences -#if LPP_Sponsors - private List<_LostParadise.Donate.DonatePreferenceSelector> _donatePreferences; // Lost Paradise Donate Preferences -#endif private readonly List _jobPriorities; private OptionButton _preferenceUnavailableButton => CPreferenceUnavailableButton; private readonly Dictionary _jobCategories; @@ -588,45 +583,6 @@ public HumanoidProfileEditor(IClientPreferencesManager preferencesManager, IProt }; #endregion Dummy - -#if LPP_Sponsors // Lost Paradise Donate Preferences - #region Donate - LPPDonateTab.Orphan(); - _tabContainer.AddTab(LPPDonateTab, Loc.GetString("lost-donate-editor")); - var donate = prototypeManager.EnumeratePrototypes().OrderBy(t => Loc.GetString(t.Name)).ToList(); - _donatePreferences = new List<_LostParadise.Donate.DonatePreferenceSelector>(); - var granted = false; - _donateList.DisposeAllChildren(); - if (donate.Count > 0) - { - foreach (var donatet in donate) - { - var selector = new _LostParadise.Donate.DonatePreferenceSelector(donatet); - selector.PreferenceChanged += preference => - { - Profile = Profile?.WithDonatePreference(donatet.ID, preference); - }; - if (selector.Gave) - granted = true; - - _donateList.AddChild(selector); - _donatePreferences.Add(selector); - } - } - if (!granted) - { - _donateList.AddChild(new Label - { - Text = Loc.GetString("lost-nodonate"), - FontColorOverride = Color.Gray, - }); - } - // Lost Paradise Donate Preferences End - #endregion - -#else - LPPDonateTab.Dispose(); -#endif #endregion Left if (preferencesManager.ServerDataLoaded) @@ -641,20 +597,6 @@ public HumanoidProfileEditor(IClientPreferencesManager preferencesManager, IProt IsDirty = false; } -#if LPP_Sponsors // Lost Paradise Donate Preferences - private void RefreshDonatePreferences() - { - _donatePreferences = new List<_LostParadise.Donate.DonatePreferenceSelector>(); - foreach (var preferenceSelector in _donatePreferences) - { - var donateId = preferenceSelector.Donate.ID; - var preference = Profile?.DonatePreferences.Contains(donateId) ?? false; - - preferenceSelector.Preference = preference; - } - } -#endif - private void LoadoutsChanged(bool enabled) { _tabContainer.SetTabVisible(4, enabled); diff --git a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs index 812685bf27b..c310df55e69 100644 --- a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs +++ b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs @@ -68,9 +68,6 @@ private static HumanoidCharacterProfile CharlieCharlieson() antagPreferences: new List(), traitPreferences: new List(), loadoutPreferences: new List() -#if LPP_Sponsors - , donatePreferences: new List() // Lost Paradise Donate Preferences -#endif ); } diff --git a/Content.Server.Database/Migrations/Postgres/20241014210800_Delete.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241014210800_Delete.Designer.cs new file mode 100644 index 00000000000..04f8791510f --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241014210800_Delete.Designer.cs @@ -0,0 +1,1867 @@ +// +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("20241014210800_Delete")] + partial class Delete + { + /// + 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.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("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + 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("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.Loadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("loadout_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("LoadoutName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("loadout_name"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_loadout"); + + b.HasIndex("ProfileId", "LoadoutName") + .IsUnique(); + + b.ToTable("loadout", (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("LastSeenHWId") + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + 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("Backpack") + .IsRequired() + .HasColumnType("text") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("text") + .HasColumnName("clothing"); + + b.Property("CustomSpecieName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("custom_specie_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("Height") + .HasColumnType("real") + .HasColumnName("height"); + + 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.Property("Voice") + .IsRequired() + .HasColumnType("text") + .HasColumnName("voice"); + + b.Property("Width") + .HasColumnType("real") + .HasColumnName("width"); + + 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.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("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + 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("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + 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); + }); +#if LPP_Sponsors + modelBuilder.Entity("Content.Server.Database.Sponsor", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("AllowJob") + .HasColumnType("boolean") + .HasColumnName("allow_job"); + + b.Property("AllowedMarkings") + .IsRequired() + .HasColumnType("text") + .HasColumnName("allowed_markings"); + + b.Property("ExtraSlots") + .HasColumnType("integer") + .HasColumnName("extra_slots"); + + b.Property("HavePriorityJoin") + .HasColumnType("boolean") + .HasColumnName("have_priority_join"); + + b.Property("OOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ooccolor"); + + b.Property("Tier") + .HasColumnType("integer") + .HasColumnName("tier"); + + b.HasKey("UserId") + .HasName("PK_sponsors"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("sponsors", (string)null); + }); +#endif + 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.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.Loadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + 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.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.Navigation("CreatedBy"); + + 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.Navigation("CreatedBy"); + + 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"); + }); + + 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.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/20241014210800_Delete.cs b/Content.Server.Database/Migrations/Postgres/20241014210800_Delete.cs new file mode 100644 index 00000000000..c8374031203 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20241014210800_Delete.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class Delete : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index 3bd3470d70c..f437849ebb1 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -566,34 +566,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); }); }); -#if LPP_Sponsors - modelBuilder.Entity("Content.Server.Database.Donate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("donate_id"); - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DonateName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("donate_name"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_donate"); - - b.HasIndex("ProfileId", "DonateName") - .IsUnique(); - - b.ToTable("donate", (string)null); - }); -#endif modelBuilder.Entity("Content.Server.Database.Job", b => { b.Property("Id") @@ -1260,10 +1233,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("text") .HasColumnName("allowed_markings"); - // b.Property("ExpireDate") - // .HasColumnType("text") - // .HasColumnName("expire_date"); - b.Property("ExtraSlots") .HasColumnType("integer") .HasColumnName("extra_slots"); @@ -1612,19 +1581,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Server"); }); -#if LPP_Sponsors - modelBuilder.Entity("Content.Server.Database.Donate", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Donate") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_donate_profile_profile_id"); - b.Navigation("Profile"); - }); -#endif modelBuilder.Entity("Content.Server.Database.Job", b => { b.HasOne("Content.Server.Database.Profile", "Profile") @@ -1870,9 +1827,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("Content.Server.Database.Profile", b => { b.Navigation("Antags"); -#if LPP_Sponsors - b.Navigation("Donate"); -#endif + b.Navigation("Jobs"); b.Navigation("Loadouts"); diff --git a/Content.Server.Database/Migrations/Sqlite/20241014210750_Delete.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241014210750_Delete.Designer.cs new file mode 100644 index 00000000000..ab00486b030 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241014210750_Delete.Designer.cs @@ -0,0 +1,1796 @@ +// +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("20241014210750_Delete")] + partial class Delete + { + /// + 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.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("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + 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("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.Loadout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("loadout_id"); + + b.Property("LoadoutName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("loadout_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_loadout"); + + b.HasIndex("ProfileId", "LoadoutName") + .IsUnique(); + + b.ToTable("loadout", (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("LastSeenHWId") + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + 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("Backpack") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("clothing"); + + b.Property("CustomSpecieName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("custom_specie_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("Height") + .HasColumnType("REAL") + .HasColumnName("height"); + + 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.Property("Voice") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("voice"); + + b.Property("Width") + .HasColumnType("REAL") + .HasColumnName("width"); + + 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.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("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + 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("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + 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); + }); +#if LPP_Sponsors + modelBuilder.Entity("Content.Server.Database.Sponsor", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AllowJob") + .HasColumnType("INTEGER") + .HasColumnName("allow_job"); + + b.Property("AllowedMarkings") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("allowed_markings"); + + b.Property("ExtraSlots") + .HasColumnType("INTEGER") + .HasColumnName("extra_slots"); + + b.Property("HavePriorityJoin") + .HasColumnType("INTEGER") + .HasColumnName("have_priority_join"); + + b.Property("OOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("ooccolor"); + + b.Property("Tier") + .HasColumnType("INTEGER") + .HasColumnName("tier"); + + b.HasKey("UserId") + .HasName("PK_sponsors"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("sponsors", (string)null); + }); +#endif + 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.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.Loadout", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Loadouts") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_loadout_profile_profile_id"); + + b.Navigation("Profile"); + }); + + 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.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.Navigation("CreatedBy"); + + 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.Navigation("CreatedBy"); + + 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"); + }); + + 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.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/20241014210750_Delete.cs b/Content.Server.Database/Migrations/Sqlite/20241014210750_Delete.cs new file mode 100644 index 00000000000..49814c5b6e7 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20241014210750_Delete.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class Delete : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index 2bbce619b84..eab4e9f3088 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -532,32 +532,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("connection_log", (string)null); }); -#if LPP_Sponsors - modelBuilder.Entity("Content.Server.Database.Donate", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("donate_id"); - - b.Property("DonateName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("donate_name"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_donate"); - - b.HasIndex("ProfileId", "DonateName") - .IsUnique(); - b.ToTable("donate", (string)null); - }); -#endif modelBuilder.Entity("Content.Server.Database.Job", b => { b.Property("Id") @@ -1191,10 +1166,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("TEXT") .HasColumnName("allowed_markings"); - // b.Property("ExpireDate") - // .HasColumnType("TEXT") - // .HasColumnName("expire_date"); - b.Property("ExtraSlots") .HasColumnType("INTEGER") .HasColumnName("extra_slots"); @@ -1539,19 +1510,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Server"); }); -#if LPP_Sponsors - modelBuilder.Entity("Content.Server.Database.Donate", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Donate") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_donate_profile_profile_id"); - b.Navigation("Profile"); - }); -#endif modelBuilder.Entity("Content.Server.Database.Job", b => { b.HasOne("Content.Server.Database.Profile", "Profile") @@ -1797,9 +1756,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("Content.Server.Database.Profile", b => { b.Navigation("Antags"); -#if LPP_Sponsors - b.Navigation("Donate"); -#endif + b.Navigation("Jobs"); b.Navigation("Loadouts"); diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index 980d69e9edf..93a6252981d 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -69,12 +69,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.Entity() // _LostParadise-Sponsors .HasIndex(p => p.UserId) .IsUnique(); - - modelBuilder.Entity() - .HasIndex(p => new { HumanoidProfileId = p.ProfileId, p.DonateName }) - .IsUnique(); #endif - modelBuilder.Entity() .HasIndex(j => j.ProfileId); @@ -363,9 +358,6 @@ public class Profile public List Jobs { get; } = new(); public List Antags { get; } = new(); public List Traits { get; } = new(); -#if LPP_Sponsors // _LostParadise-Sponsors - public List Donate { get; } = new(); -#endif public List Loadouts { get; } = new(); [Column("pref_unavailable")] public DbPreferenceUnavailableMode PreferenceUnavailable { get; set; } @@ -411,16 +403,6 @@ public class Trait public string TraitName { get; set; } = null!; } -#if LPP_Sponsors // _LostParadise-Sponsors - public class Donate - { - public int Id { get; set; } - public Profile Profile { get; set; } = null!; - public int ProfileId { get; set; } - public string DonateName { get; set; } = null!; - } -#endif - public class Loadout { public int Id { get; set; } diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index 3f3ae50f496..0ae79982300 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -40,9 +40,6 @@ public ServerDbBase(ISawmill opsLog) .Include(p => p.Profiles).ThenInclude(h => h.Jobs) .Include(p => p.Profiles).ThenInclude(h => h.Antags) .Include(p => p.Profiles).ThenInclude(h => h.Traits) -#if LPP_Sponsors - .Include(p => p.Profiles).ThenInclude(h => h.Donate) // Lost Paradise Donate Preferences -#endif .Include(p => p.Profiles).ThenInclude(h => h.Loadouts) .AsSingleQuery() .SingleOrDefaultAsync(p => p.UserId == userId.UserId); @@ -92,9 +89,6 @@ public async Task SaveCharacterSlotAsync(NetUserId userId, ICharacterProfile? pr .Include(p => p.Jobs) .Include(p => p.Antags) .Include(p => p.Traits) -#if LPP_Sponsors - .Include(p => p.Donate) // Lost Paradise Donate Preferences -#endif .Include(p => p.Loadouts) .AsSplitQuery() .SingleOrDefault(h => h.Slot == slot); @@ -183,9 +177,6 @@ private static HumanoidCharacterProfile ConvertProfiles(Profile profile) var antags = profile.Antags.Select(a => a.AntagName); var traits = profile.Traits.Select(t => t.TraitName); var loadouts = profile.Loadouts.Select(t => t.LoadoutName); -#if LPP_Sponsors - var donates = profile.Donate.Select(t => t.DonateName); // Lost Paradise Donate Preferences -#endif var sex = Sex.Male; if (Enum.TryParse(profile.Sex, true, out var sexVal)) @@ -256,9 +247,6 @@ private static HumanoidCharacterProfile ConvertProfiles(Profile profile) antags.ToList(), traits.ToList(), loadouts.ToList() -#if LPP_Sponsors - , donates.ToList() // Lost Paradise Donate Preferences -#endif ); } @@ -315,14 +303,6 @@ private static Profile ConvertProfiles(HumanoidCharacterProfile humanoid, int sl .Select(t => new Trait {TraitName = t}) ); -#if LPP_Sponsors - profile.Donate.Clear(); // Lost Paradise Donate Preferences - profile.Donate.AddRange( - humanoid.DonatePreferences - .Select(d => new Donate { DonateName = d }) - ); -#endif - profile.Loadouts.Clear(); profile.Loadouts.AddRange( humanoid.LoadoutPreferences diff --git a/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs b/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs index a5defdfb14d..49b2b9811ee 100644 --- a/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs +++ b/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs @@ -10,6 +10,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Physics; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; @@ -351,3 +352,41 @@ public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, return count < group.MaxItems; } } +#if LPP_Sponsors +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterSponsorRequirement : CharacterRequirement +{ + [DataField(required: true)] + public int Min; + + [DataField(required: true)] + public int Max; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, IPrototype prototype, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason, int depth = 0, int sponsorTier = 0, string uuid = "") + { + reason = null; + return sponsorTier >= Min && sponsorTier <= Max; + } +} + +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterUUIDRequirement : CharacterRequirement +{ + [DataField(required: true)] + public string Uuid; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, IPrototype prototype, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason, int depth = 0, int sponsorTier = 0, string uuid = "") + { + reason = null; + return uuid == Uuid; + } +} +#endif diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index 58dced7d072..0d677f37c5a 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -32,9 +32,6 @@ public sealed partial class HumanoidCharacterProfile : ICharacterProfile private readonly List _antagPreferences; private readonly List _traitPreferences; private readonly List _loadoutPreferences; -#if LPP_Sponsors - private readonly List _donatePreferences; // Lost Paradise Donate Preference -#endif private HumanoidCharacterProfile( string name, @@ -56,9 +53,6 @@ private HumanoidCharacterProfile( List antagPreferences, List traitPreferences, List loadoutPreferences -#if LPP_Sponsors - , List donatePreferences // Lost Paradise Donate Preference -#endif ) { Name = name; @@ -80,9 +74,6 @@ List loadoutPreferences _antagPreferences = antagPreferences; _traitPreferences = traitPreferences; _loadoutPreferences = loadoutPreferences; -#if LPP_Sponsors - _donatePreferences = donatePreferences; // Lost Paradise Donate Preferences -#endif } /// Copy constructor but with overridable references (to prevent useless copies) @@ -92,16 +83,10 @@ private HumanoidCharacterProfile( List antagPreferences, List traitPreferences, List loadoutPreferences -#if LPP_Sponsors - , List donatePreferences // Lost Paradise Donate Preferences -#endif ) : this(other.Name, other.FlavorText, other.Species, other.Voice, other.Customspeciename, other.Height, other.Width, other.Age, other.Sex, other.Gender, other.Appearance, other.Clothing, other.Backpack, other.SpawnPriority, jobPriorities, other.PreferenceUnavailable, antagPreferences, traitPreferences, loadoutPreferences -#if LPP_Sponsors - , donatePreferences // Lost Paradise Donate Preferences -#endif ) { } @@ -111,9 +96,6 @@ private HumanoidCharacterProfile(HumanoidCharacterProfile other) : this(other, new Dictionary(other.JobPriorities), new List(other.AntagPreferences), new List(other.TraitPreferences), new List(other.LoadoutPreferences) -#if LPP_Sponsors - , new List(other.DonatePreferences) // Lost Paradise Donate Preferences -#endif ) { } @@ -138,17 +120,11 @@ public HumanoidCharacterProfile( IReadOnlyList antagPreferences, IReadOnlyList traitPreferences, IReadOnlyList loadoutPreferences -#if LPP_Sponsors - , List donatePreferences // Lost Paradise Donate Preferences -#endif ) : this(name, flavortext, species, voice, customspeciename, height, width, age, sex, gender, appearance, clothing, backpack, spawnPriority, new Dictionary(jobPriorities), preferenceUnavailable, new List(antagPreferences), new List(traitPreferences), new List(loadoutPreferences) -#if LPP_Sponsors - , new List(donatePreferences) // Lost Paradise Donate Preferences -#endif ) { } @@ -181,9 +157,6 @@ public HumanoidCharacterProfile() : this( new List(), new List(), new List() -#if LPP_Sponsors - , new List() // Lost Paradise Donate Preferences -#endif ) { } @@ -218,9 +191,6 @@ public static HumanoidCharacterProfile DefaultWithSpecies(string species = Share new List(), new List(), new List() -#if LPP_Sponsors - , new List() // Lost Paradise Donate Preferences -#endif ); } @@ -284,9 +254,6 @@ public static HumanoidCharacterProfile RandomWithSpecies(string species = Shared { {SharedGameTicker.FallbackOverflowJob, JobPriority.High}, }, PreferenceUnavailableMode.StayInLobby, new List(), new List(), new List() -#if LPP_Sponsors - , new List() // Lost Paradise Donate Preferences -#endif ); } @@ -326,9 +293,6 @@ public static HumanoidCharacterProfile RandomWithSpecies(string species = Shared public IReadOnlyList AntagPreferences => _antagPreferences; public IReadOnlyList TraitPreferences => _traitPreferences; public IReadOnlyList LoadoutPreferences => _loadoutPreferences; -#if LPP_Sponsors - public IReadOnlyList DonatePreferences => _donatePreferences; // Lost Paradise Donate Preferences -#endif public PreferenceUnavailableMode PreferenceUnavailable { get; private set; } public HumanoidCharacterProfile WithName(string name) @@ -405,9 +369,6 @@ public HumanoidCharacterProfile WithJobPriorities(IEnumerable(jobPriorities), _antagPreferences, _traitPreferences, _loadoutPreferences -#if LPP_Sponsors - , _donatePreferences// Lost Paradise Donate Preferences -#endif ); } @@ -424,9 +385,6 @@ public HumanoidCharacterProfile WithJobPriority(string jobId, JobPriority priori } return new(this, dictionary, _antagPreferences, _traitPreferences, _loadoutPreferences -#if LPP_Sponsors - , _donatePreferences// Lost Paradise Donate Preferences -#endif ); } @@ -439,9 +397,6 @@ public HumanoidCharacterProfile WithAntagPreferences(IEnumerable antagPr { return new(this, _jobPriorities, new List(antagPreferences), _traitPreferences, _loadoutPreferences -#if LPP_Sponsors - , _donatePreferences// Lost Paradise Donate Preferences -#endif ); } @@ -464,9 +419,6 @@ public HumanoidCharacterProfile WithAntagPreference(string antagId, bool pref) } return new(this, _jobPriorities, list, _traitPreferences, _loadoutPreferences -#if LPP_Sponsors - , _donatePreferences// Lost Paradise Donate Preferences -#endif ); } @@ -491,9 +443,6 @@ public HumanoidCharacterProfile WithTraitPreference(string traitId, bool pref) } return new(this, _jobPriorities, _antagPreferences, list, _loadoutPreferences -#if LPP_Sponsors - , _donatePreferences// Lost Paradise Donate Preferences -#endif ); } @@ -518,9 +467,6 @@ public HumanoidCharacterProfile WithLoadoutPreference(string loadoutId, bool pre return new(this, _jobPriorities, _antagPreferences, _traitPreferences, list -#if LPP_Sponsors - , _donatePreferences// Lost Paradise Donate Preferences -#endif ); } @@ -549,9 +495,6 @@ public bool MemberwiseEquals(ICharacterProfile maybeOther) || !_antagPreferences.SequenceEqual(other._antagPreferences) || !_traitPreferences.SequenceEqual(other._traitPreferences) || !_loadoutPreferences.SequenceEqual(other._loadoutPreferences) -#if LPP_Sponsors - || !_donatePreferences.SequenceEqual(other._donatePreferences)// Lost Paradise Donate Preferences -#endif ) return false; return Appearance.MemberwiseEquals(other.Appearance); @@ -859,36 +802,11 @@ public override int GetHashCode() _antagPreferences, _traitPreferences, _loadoutPreferences -#if LPP_Sponsors - , _donatePreferences// Lost Paradise Donate Preferences -#endif ), HashCode.Combine( Customspeciename ) ); } - -#if LPP_Sponsors - public HumanoidCharacterProfile WithDonatePreference(string donateId, bool pref) // Lost Paradise Donate Preferences - { - var list = new List(_donatePreferences); - if (pref) - { - if (!list.Contains(donateId)) - { - list.Add(donateId); - } - } - else - { - if (list.Contains(donateId)) - { - list.Remove(donateId); - } - } - return new(this, _jobPriorities, _antagPreferences, _traitPreferences, _loadoutPreferences, list); - } -#endif } } diff --git a/Resources/Locale/en-US/_LostParadise/loadouts.ftl b/Resources/Locale/en-US/_LostParadise/loadouts.ftl new file mode 100644 index 00000000000..e16fc14ffa6 --- /dev/null +++ b/Resources/Locale/en-US/_LostParadise/loadouts.ftl @@ -0,0 +1 @@ +loadout-category-Sponsors = Sponsor items diff --git a/Resources/Locale/ru-RU/_LostParadise/loadouts.ftl b/Resources/Locale/ru-RU/_LostParadise/loadouts.ftl new file mode 100644 index 00000000000..c32104737d0 --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/loadouts.ftl @@ -0,0 +1 @@ +loadout-category-Sponsors = Спонсорские вещи diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/backpack.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/backpack.ftl index 2f04d3fefc7..8173ede3491 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/backpack.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/backpack.ftl @@ -1,9 +1,6 @@ ent-LPPClothingSatchelSmugglerAbstract = { ent-ClothingBackpackSatchel } .desc = { ent-ClothingBackpackSatchel.desc } .suffix = Контрабандист -ent-LPPClothingBackpackBlack = Чёрный рюкзак - .desc = Он что-то напоминает. - .suffix = Спонсор ent-LPPClothingBackpackBlueshieldFilled = { ent-LPPClothingBackpackBlueshield } .desc = { ent-LPPClothingBackpackBlueshield.desc } ent-LPPClothingBackpackIIC = Рюкзак ИРЦ "Дельта" diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/duffel.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/duffel.ftl index 6bcf7919d03..b6c103277c7 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/duffel.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/duffel.ftl @@ -12,6 +12,3 @@ ent-LPPClothingBackpackDuffelDelta = Спортивная сумка "Дельт .desc = { ent-ClothingBackpackDuffel.desc } ent-LPPClothingBackpackDuffelCommandDelta = Спортивная сумка командира "Дельта" .desc = { ent-ClothingBackpackDuffel.desc } -ent-LPPClothingBackpackDuffelBlack = Чёрный вещмешок - .desc = Стильный чёрный вещмешок, который выглядит надежным. - .suffix = Спонсор diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/satchel.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/satchel.ftl index 5cfdcd0c0ff..b5a33586336 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/satchel.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/back/satchel.ftl @@ -11,6 +11,3 @@ ent-LPPClothingBackpackSatchelExpeditor = Сумка исследователя .desc = Сделана из прочных материалов на случай, если королева ксено захочет узнать вас поближе. На вкус. ent-LPPClothingBackpackSatchelBlueshieldFilled = { ent-LPPClothingBackpackSatchelBlueshield } .desc = { ent-LPPClothingBackpackSatchelBlueshield.desc } -ent-LPPClothingBackpackSatchelBlack = Чёрная сумка - .desc = Стильная чёрная сумка, что вешается на плечо. - .suffix = Спонсор diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/head/hairbows.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/head/hairbows.ftl deleted file mode 100644 index c765edc4771..00000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/head/hairbows.ftl +++ /dev/null @@ -1,6 +0,0 @@ -ent-LPPClothingHeadHatBlackHairbows = Чёрные бантики - .desc = Чёрные банты на голову. - .suffix = Спонсор -ent-LPPClothingHeadHatRedHairbows = Красные бантики - .desc = Красные банты на голову. - .suffix = Спонсор diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/breast/breast.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/breast/breast.ftl index b262ebb2d78..51184e2ba89 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/breast/breast.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/breast/breast.ftl @@ -334,6 +334,3 @@ ent-LPPCutOutTop = Топ с вырезом .desc = { ent-LPPClothingBreastBase.desc } ent-LPPCutOutTop2 = Топ с вырезом v2 .desc = { ent-LPPClothingBreastBase.desc } -ent-LPPCowTop = Коровий бюстгальтер - .desc = Муу. - .suffix = СПОНСОР diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/socks/socks.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/socks/socks.ftl index 94a48061f0b..a61ab4fc441 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/socks/socks.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/socks/socks.ftl @@ -186,6 +186,3 @@ ent-LPPClothingUnderThinThighTeal = { ent-LPPClothingUnderThinThighBlack } .desc = { ent-LPPClothingUnderwearSocksBase.desc } ent-LPPClothingUnderThinThighYellow = { ent-LPPClothingUnderThinThighBlack } .desc = { ent-LPPClothingUnderwearSocksBase.desc } -ent-LPPCowSocks = Коровьи чулки - .desc = Муууу! - .suffix = СПОНСОР diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/underwear/underwear.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/underwear/underwear.ftl index 1b5f4b81ebf..1cad89027e9 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/underwear/underwear.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/lpp/underwear/underwear.ftl @@ -270,6 +270,3 @@ ent-LPPHOPPanties = Трусики главы персонала .desc = { ent-LPPClothingUnderwearBase.desc } ent-LPPCapPanties = Трусы капитана .desc = { ent-LPPClothingUnderwearBase.desc } -ent-LPPCowPanties = Коровьи трусики - .desc = Муууу! - .suffix = СПОНСОР diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/cloaks.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/cloaks.ftl index 4ff5944a44a..49d94a471b4 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/cloaks.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/cloaks.ftl @@ -1,20 +1,3 @@ -ent-LPPsecuritycloak = Плащ Охраны - .desc = Служба Безопасности, сила! - .suffix = Спонсор -ent-LPPScientificcloak = Научный Плащ - .desc = На этом плаще видны следы всех научных историй станции. Вы не станите исключением. - .suffix = Спонсор -ent-LPPClothingHeadHatHoodScientificCloak = Капюшон Научного Плаща - .desc = Капюшон научного плаща. -ent-LPPmedicalcloak = Медицинский Плащ - .desc = Только лучшие докторы заслуживают носить этот плащ, вы точно исключение. - .suffix = Спонсор -ent-LPPengineerscloak = Инженерный Плащ - .desc = Великолепный инженерный плащ, ходят слухи что он защищает от огня, иди и протестируй это! - .suffix = Спонсор -ent-LPPCargocloak = Плащ Отдела Снабжения - .desc = Ты совершил больше экспедиций ради этого плаща чем можешь сосчитать. - .suffix = Спонсор ent-LPParbitercloak = Плащ Арбитра .desc = Дорогой плащ неизвестной фирмы с меховым воротником. Мягкий мех и шелк высочайшего качества. Между нитями видно золото. Роскошь. .suffix = Личные вещи @@ -40,9 +23,6 @@ ent-LPPCloakNPZ = Плащ НПЗ .desc = Плащ для стильного развивания на ветру, пока вы будете унижать жалких ксеносов. ent-LPPCloakAdmiralNPZ = Плащ адмирала НПЗ .desc = Плащ для пафосного скидывания, чтобы показать всем ваши медали и ордена! -ent-LPPCloakJapaneese = Накидка в японском стиле - .desc = Kore yon deru hito wa bakadayo. - .suffix = СПОНСОР ent-LPPCloakMantleNPZ = Накидка НПЗ .desc = Мы торопимся или действуем скрытно? ent-LPPADJUCloak = Плащ Адъютанта diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/scarf.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/scarf.ftl index 24b18a76f42..b3a8a39dc94 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/scarf.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/neck/scarf.ftl @@ -1,5 +1,2 @@ -ent-LPPClothingWindyScarf = Ветреный шарф - .desc = Реквезит для киноиндустрии и театральных представлений. Является прекрасным примером безопасности использования Блюспейс технологий. - .suffix = СПОНСОР ent-LPPClothingNeckScarfPG = Шарф-шемаг .desc = Полосатый шарф, которым можно защитить лицо от песка diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/uniforms/jumpskirts.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/uniforms/jumpskirts.ftl index 6ff2f5dd506..5b65aeb663a 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/uniforms/jumpskirts.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/_lostparadise/entities/clothing/uniforms/jumpskirts.ftl @@ -60,9 +60,3 @@ ent-LPPSkirtleneckQMSec = Водолазка с юбкой СБ .desc = { ent-ClothingUniformBase.desc } ent-LPPSupplyChiefSkirtSec = Рубашка с юбкой СБ .desc = { ent-ClothingUniformBase.desc } -ent-LPPClothingUniformJumpskirtAltWhiteTopic = Тонкий белый топик с юбкой - .desc = Красивая одежда, обнажающая тело. - .suffix = Спонсор -ent-LPPClothingUniformJumpskirtWhiteTopic = Белый топик с юбкой - .desc = Красивая одежда, обнажающая тело. - .suffix = Спонсор diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/sponsor.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/sponsor.ftl deleted file mode 100644 index 1257ded3de4..00000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/sponsor.ftl +++ /dev/null @@ -1,54 +0,0 @@ -ent-ClothingOuterAtmosianBomberJacket = Куртка-бомбер атмосианина - .desc = Плотная, поношенная куртка-бомбер атмосианина. - .suffix = Спонсор -ent-ClothingMaskGasAtmosian = Противогаз атмосианина - .desc = Улучшенный противогаз, используемый атмосианинами. Огнеупорный! - .suffix = Спонсор -ent-ClothingCloakAtmosian = Плащ атмосианина - .desc = Плащ легендарного атмосианина. - .suffix = Спонсор -ent-ClothingMaskSkull = Маска черепа - .desc = Зловещая маска черепа. - .suffix = Спонсор -ent-ClothingCloakGamer = Легендарный плащ геймера - .desc = Его носят самые опытные профессиональные геймеры. - .suffix = Спонсор -ent-ClothingUniformJumpsuitSkeleton = Комбинезон скелета - .desc = Черный комбинезон с напечатанным на нем белым узором из костей. Жуть! - .suffix = Спонсор -ent-ClothingBackpackSatchelHoS = Сумка главы службы безопасности - .desc = Стильная чёрная кожаная сумка. - .suffix = Спонсор -ent-ClothingBeltHoS = Кожаный пояс охраны - .desc = Стильный чёрный кожаный пояс. - .suffix = Спонсор -ent-ClothingHandsGlovesLeatherHoS = Кожаные перчатки - .desc = Стильные чёрные кожаные перчатки. - .suffix = Спонсор -ent-ClothingHeadHatCapLeatherHoS = Кожаная фуражка главы службы безопасности - .desc = Довольно старая вещь для этих времён, навевающая старые воспоминания... - .suffix = Спонсор -ent-ClothingOuterCoatHoSOvercoat = Бронированная шинель - .desc = Довольно старая вещь для этих времён, навевающая старые воспоминания... - .suffix = Спонсор -ent-ClothingUniformJumpsuitHoSOld = Старый комбинезон главы службы безопасности - .desc = Довольно старая вещь для этих времён, навевающая старые воспоминания... - .suffix = Спонсор -ent-ClothingHandsWatchDivine = Божественные часы - .desc = Эти часы может носить только божественная личность - .suffix = Спонсор -ent-ClothingHandsGlovesLeatherUSSPBlack = Старые кожаные перчатки СССП - .desc = Чёрные кожаные перчатки прямиком из СССП. - .suffix = Спонсор -ent-ClothingHeadHatCapUSSPBlack = Старая кожаная фуражка СССП - .desc = Старая вещица, прямиком из СССП. - .suffix = Спонсор -ent-ClothingOuterCoatUSSPOvercoatBlack = Бронированная шинель СССП - .desc = { ent-ClothingHeadHatCapUSSPBlack.desc } - .suffix = Спонсор -ent-ClothingUniformJumpsuitUSSPBlack = Старый комбинезон СССП - .desc = { ent-ClothingHeadHatCapUSSPBlack.desc } - .suffix = Спонсор -ent-ClothingShoesUSSPBlack = Старые ботинки СССП - .desc = { ent-ClothingHeadHatCapUSSPBlack.desc } - .suffix = Спонсор diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/backpack.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/backpack.yml index b4ff016ab49..e185ec4449f 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/backpack.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/backpack.yml @@ -20,16 +20,6 @@ - type: Transform anchored: false -- type: entity - parent: ClothingBackpack - id: LPPClothingBackpackBlack - name: black backpack - suffix: Sponsor - description: It's a tough backpack for the daily grind of station life. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi - - type: entity parent: LPPClothingBackpackBlueshield id: LPPClothingBackpackBlueshieldFilled diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/duffel.yml index d536b7bbf46..cf97d072be1 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/duffel.yml @@ -1,13 +1,3 @@ -- type: entity - parent: ClothingBackpackDuffel - id: LPPClothingBackpackDuffelBlack - name: black duffel bag - suffix: Sponsor - description: A large duffel bag for holding extra tools and supplies. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Back/Duffels/blackduffel.rsi - - type: entity parent: ClothingBackpackDuffel id: LPPClothingBackpackDuffelHop diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/satchel.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/satchel.yml index 355aa471fa6..c6a521cd989 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/satchel.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/Back/satchel.yml @@ -1,13 +1,3 @@ -- type: entity - parent: ClothingBackpackSatchel - id: LPPClothingBackpackSatchelBlack - name: black satchel - suffix: Sponsor - description: A tough satchel with extra pockets. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Back/Satchels/blacksatchel.rsi - - type: entity parent: ClothingBackpackSatchel id: LPPClothingBackpackSatchelHop diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/Head/hairbows.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/Head/hairbows.yml index 768cf4c5d4a..e02abfc9b0e 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/Head/hairbows.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/Head/hairbows.yml @@ -1,31 +1 @@ -- type: entity - parent: ClothingHeadBase - id: LPPClothingHeadHatBlackHairbows - name: black hairbows - suffix: Sponsor - description: A stylish black hairbows. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Head/HairBows/blackhairbows.rsi - - type: Clothing - sprite: _LostParadise/Clothing/Head/HairBows/blackhairbows.rsi - - type: Tag - tags: - - ClothMade - - WhitelistChameleon - -- type: entity - parent: ClothingHeadBase - id: LPPClothingHeadHatRedHairbows - name: red hairbows - suffix: Sponsor - description: A stylish red hairbows. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Head/HairBows/redhairbows.rsi - - type: Clothing - sprite: _LostParadise/Clothing/Head/HairBows/redhairbows.rsi - - type: Tag - tags: - - ClothMade - - WhitelistChameleon + diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Breast/breast.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Breast/breast.yml index edf2923d6d5..e8a756eed19 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Breast/breast.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Breast/breast.yml @@ -1575,15 +1575,3 @@ sprite: _LostParadise/Clothing/Underwear/bra/LPPCutOutTop2.rsi - type: Clothing sprite: _LostParadise/Clothing/Underwear/bra/LPPCutOutTop2.rsi - -- type: entity - parent: LPPClothingBreastBase - id: LPPCowTop - suffix: SPONSOR - name: Cow bra - description: Moo. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Underwear/cowset/cowbra.rsi - - type: Clothing - sprite: _LostParadise/Clothing/Underwear/cowset/cowbra.rsi diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Socks/socks.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Socks/socks.yml index fbf8a47291a..9be34321b32 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Socks/socks.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Socks/socks.yml @@ -872,13 +872,3 @@ components: - type: Sprite sprite: _LostParadise/Clothing/Socks/ThinThigh/yellow.rsi - -- type: entity - parent: LPPClothingUnderwearSocksBase - id: LPPCowSocks - suffix: SPONSOR - name: Cow stockings - description: Moooo! - components: - - type: Sprite - sprite: _LostParadise/Clothing/Underwear/cowset/cowsocks.rsi diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Underwear/underwear.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Underwear/underwear.yml index 199d92cf4f5..5fbafc9883a 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Underwear/underwear.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/LPP/Underwear/underwear.yml @@ -1266,13 +1266,3 @@ components: - type: Sprite sprite: _LostParadise/Clothing/Underwear/Command/cap.rsi - -- type: entity - parent: LPPClothingUnderwearBase - id: LPPCowPanties - suffix: SPONSOR - name: Cow panties - description: Moooo! - components: - - type: Sprite - sprite: _LostParadise/Clothing/Underwear/cowset/cowpanties.rsi diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/cloaks.yml index 6d01a775a2e..768d43f20df 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/cloaks.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/cloaks.yml @@ -1,67 +1,3 @@ -- type: entity - parent: ClothingNeckBase - id: LPPsecuritycloak - name: security cloak - description: Police brutality! - components: - - type: Sprite - sprite: _LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi - -- type: entity - parent: ClothingNeckBase - id: LPPScientificcloak - name: Scientific cloak - description: Traces of all the scientific stories of the station are visible on this cloak, you will not be an exception. - components: - - type: Sprite - sprite: _LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi - - type: ToggleableClothing - clothingPrototype: LPPClothingHeadHatHoodScientificCloak - slot: head - - type: ContainerContainer - containers: - toggleable-clothing: !type:ContainerSlot {} - storagebase: !type:Container - ents: [] - -- type: entity - parent: ClothingHeadBase - id: LPPClothingHeadHatHoodScientificCloak - name: Scientific cloak hood - description: A hood of a Scientific cloak. - components: - - type: Sprite - sprite: _LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi - - type: Clothing - sprite: _LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi - -- type: entity - parent: ClothingNeckBase - id: LPPmedicalcloak - name: medical cloak - description: Only the best doctors deserve to wear this raincoat, you are clearly an exception. - components: - - type: Sprite - sprite: _LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi - -- type: entity - parent: ClothingNeckBase - id: LPPengineerscloak - name: engineer's cloak - description: A magnificent engineering cloak, rumor has it that it protects against fire, go and test it. - components: - - type: Sprite - sprite: _LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi - -- type: entity - parent: ClothingNeckBase - id: LPPCargocloak - name: Cargo cloak - description: You've made more expeditions for this cloak than you can count. - components: - - type: Sprite - sprite: _LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi - - type: entity parent: ClothingNeckBase id: LPParbitercloak @@ -201,16 +137,6 @@ - type: Sprite sprite: _LostParadise/Clothing/Neck/NPZ/upgneckadmiral.rsi -- type: entity - parent: ClothingNeckBase - id: LPPCloakJapaneese - suffix: SPONSOR - name: Japanese-style cape - description: Kore yon deru hito wa bakadayo. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Neck/Cloaks/Monorich.rsi - - type: entity parent: ClothingNeckBase id: LPPCloakMantleNPZ diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/scarf.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/scarf.yml index cb32a5770a8..5d5a4d8e3c0 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/scarf.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/Neck/scarf.yml @@ -1,15 +1,3 @@ -- type: entity - parent: ClothingNeckBase - id: LPPClothingWindyScarf - name: windy scarf - suffix: SPONSOR - description: Cool scarf for cool people - components: - - type: Sprite - sprite: _LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi - - type: Clothing - sprite: _LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi - - type: entity parent: ClothingNeckBase id: LPPClothingNeckScarfPG diff --git a/Resources/Prototypes/_LostParadise/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/_LostParadise/Entities/Clothing/Uniforms/jumpskirts.yml index 86c72c5a24e..7577fe9fc37 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Clothing/Uniforms/jumpskirts.yml @@ -338,28 +338,3 @@ sprite: _LostParadise/Clothing/Uniforms/Sec/supply_chief_skirt.rsi - type: Clothing sprite: _LostParadise/Clothing/Uniforms/Sec/supply_chief_skirt.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: LPPClothingUniformJumpskirtAltWhiteTopic - name: alt white topic - suffix: Sponsor - description: Pretty clothes exposing the body. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi - - type: Clothing - sprite: _LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: LPPClothingUniformJumpskirtWhiteTopic - name: white topic - suffix: Sponsor - description: Pretty clothes exposing the body. - components: - - type: Sprite - sprite: _LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi - - type: Clothing - sprite: _LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi - diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/equipped-BACKPACK.png b/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/equipped-BACKPACK.png deleted file mode 100644 index f874c3c16e48f542ee32d5d9af65302ca8e690b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3545 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 TG?rfG00000NkvXXu0mjfTGZXI diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/icon.png deleted file mode 100644 index 02934780e411e5844be5ddbed6eb89c1c80e7641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5080 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 diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-left.png deleted file mode 100644 index 2347e302567b7cd1ef23aeb4c483b286d493c433..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4761 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 diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-left.png deleted file mode 100644 index d40efb0178570ea2a7e8f8af92b4931ca6957051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2402 zcmb_dX>b!|7+yeP4?q|S<#uO5Ib^eEw#hglwl(YmvEXQ7H7Lx3;yKT~f3(m<0p@$>88{z#r7vupNo=vfw!~j3ICoV$8538IgeSM3)=RR5S@@ z%s49GI0X{~V-`grjTh*lFo}}{hFdWr4J9a+u(DJd96JyYPZPatzH?M88hEoKKEqI1 z3=4%q<`898v_g!q*=!h2VkC(I1ge(=4K9oZ_5RHaPDvLuSv6!O2uBz>UMVu{2+-P; zL_m$x2K88>K*_K$r(%Q|k0ccZib5Qx7HR%ya8bY{zZ8&yh7Pbq9IN^iL(zT8L#X4Q z9|!=7>vF|ow5lZ#h=mS@(dxO5-oxklIGGRJmTi4LD+0r2dyiK{U76`nXxCo z3`ae|aze!Gc0`CYSrU=hu-r;Lo+xr`e#j>Q(nmDEDY~wBjS#0v8HJ#Bk2M$eF!4H9 z{AlSS?@gnv42AMk8jng=nn!sar%+rFEEXG%lioC@IrX@7U`7HZiI^EFyxENZMS83( zf{zOpN?_^4kpG^{llihqWy@q*{j>hRWU$D3+2kX^$*FON+4ZNvO_(XFkOOL5+y zl$-m{Ot-xB-PTjv_q;x5x&B$fsCMd4_F73A^ zPQ!bsHTC%epw0O?eTmohetm_gFE006`|O@mF*f;t39o&(=1Q_-W=Y4xB3ZZZY<+vv z3EQt0`0ZOzXLxtn!J_Wkv_0~yF(m(+O|@<=Ap)+ zj`DNe4^$-`G)?QZG9memUS}_yq7thb!XKQ(k0VZ#W6AEp{RUiL*7M8iqsZDfEtOAS zH`vN8;iXsSA4P`G>RjJpf-1z?&bMz;<^Hf6D%+EA91=6QSO4e=C8h33 z$i2{J%jG-Swssr)AMXQz?eT6^wc5@$=T~PfJ>X1VHRh?ZF5gaeR5buG>yr06!wYxR z*HJ3|b+#^LBl}G674OelvDI-G(()=j1?$^R{p$jJdhEOk`yA*};q09s TRUbMWNh~KT*ST}#w0VC6g1t09 diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-right.png deleted file mode 100644 index 475c150757fef318e560e2b4f583491e532e8b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2501 zcmb_d4Nw$i7(P4)41q{XluWnN%96ePz1!Oz4h7Bx^pM~tX=(=d@3@7#+jDn;gT%p~ znWn(9%rbw{7;O|B{6RBg6m_!3(vhZ71~hbVEFFem$}tsd`t~?ZO#B(Ao!Q-QzwiB? z_j%veZ2cY+4W13s;x6!dB9QflYA}o)uisII^&2M| z3^5kTRj3s@=QF(QGqZxsiRPd$0IUs$)LFp*%a@88#EHd{-)`z_X*EHTU^gwaI8kRH zQ}jq#Rfzx3dRTqvoQn(g)bBErwDE)-|=eL z8~C!DJen3@5Tv4_!dyX^Wu+LwXqrY)9KmrISiowfUt@!?U!69D;1E?_kph||`ym~X z<>WHWZUS5fgYX3+uzoe1D3CHF$OaJ1jOsy!3*2)WDJ4KZ=7ShJi zVuZ~CMFO41dWWOxtOS6Fx(S>UaSKf2lp7{lk^+b<29pFwvM5Q4l#S5Ue8=+;N;-&7 z1%*_@-IBo;heuv1ZDi7z8^cl1GcZcvR+zMr9L%A(09$Dm2P;-k5IPmn8wEf>gQG!M z1>MO;~u?f|3GEQ?vlPF`nZEf}m&&9|}D} z9kdDt<5;*=2x_QR9*253Exd>I7mMJ>j+h=lm`CfHL6*aV8L{vGzhFWl9aI?dU-5<3 zhW+`6lnjm&eHb~(z(?dP6#XDi3OMPWQtDuXVU#u7k?sn1_I93n?--gG)9>gvjz;P) z9)GEA&0PCH;glsQr>lOhJ-lp7Ol!jOi!tkZ<5p=c?>GJ4>9`%^>io`j)45^7WMAED zo6nP>Q}^CS+A~|;GS_ZuIP*&Nx~p2lrSCuaaofW2C1f(Uv-Ws*+L7{>%TXo!*E3T- zIRDO9#Ahcj&->|UwQ+lU54V$wQVvdDu(8YY$G$@s`X+smHzP2$^Yhccl{9zsm+vkb zh;H**S3TWhHx%q}x%L$9n|MBd$H&a()1O8)cck>qnw*dt?B7vsT+PK_?Dk#WzgY8kJ{hGk&z&jRe`S6CniDINk{WaB8_)bO&+tv%w!*2=SIS$K zcn_Sbe$%-9W^7`Sv3^h2=rOP7W^SslU6i)Db$(YujxTjeZQ=~Zx779;9rrEL7&}l;OLF%+otZeT|at) zs?iwV)h)^lMdi%8=b2mz6yxsk?nt+tgJ} zrC@rx65WQiTa5YR#u>N#y4O8B=a`4gNjQ?5pL}C&X!>CMt?Sn&IFDV`Ze1WQ7Mx2G WR>n5%?JX?QiDl2pbu?uxTK+E-pHcz< diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/meta.json deleted file mode 100644 index 693f3807ffe..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-NC-SA-3.0", - "copyright": "by Kyburka", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-BACKPACK", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/equipped-BACKPACK.png b/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/equipped-BACKPACK.png deleted file mode 100644 index 4b1ace07f999610657c030ca090e995da83c15dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2307 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 diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-left.png deleted file mode 100644 index c5784acd5edb71b0e9236a57bf2aad144bc14f35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2105 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 aFQ)f)?b-6_>skGVv(n-+_pTYW%l`!%@%=0S diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/meta.json deleted file mode 100644 index 693f3807ffe..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-NC-SA-3.0", - "copyright": "by Kyburka", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-BACKPACK", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/equipped-HELMET.png b/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/equipped-HELMET.png deleted file mode 100644 index b0f7889d9ea44d0975595ca984d310d6b41e0e94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1863 zcmbVNTWB0r7@nFaZ8cg*h!-pjlagBO?97>&%cwjkIC#fM@Qj3pRt`jCQP(8ibGrC!eLZq`&1Q(Tzq z`Of!!|7HGtrmyGzx~+F@Wf-O|-W}_w*FC|p`6haP!x){Xmn}~B!yd!jTpt{pm}Ap- zFwBkTjO36%l-Q>u+YCW$r%0$^Iuy+?t!)Jdq7mY=DUva)D0k(fvm9&SC^y)W5ED)Z z$r{~7mkbnplBhU>G|aW#$F>%9N?;NnvIR3|d3qtrm3Vb}AG{VgwgmA4Sb8%Ylk9Ael=u?!- z`o5zJLO!1l<>ip=W(1&VnjlJoB=Ho%dlQxq3%unutuVxhhg`$)4clS^Mwqh4{3u7g zmV+>zDy`*J5=B!c6rdx3kQfA20%BCfIb&|FB#x0la>OK-?@=tMVx6q*+g{dQhq}6a zjQ~w?(~D_VB|N`#oQ6?J$eL&`IpGkYpLq6|i%91Lz7*!lyync0k~IGbx|xs6E-%|6IH0f zi-4Cvl2#X}x-4D;rA>pO4>ts3q^E7ygfw8ogc%|@R)%A%Y1BLHob6I!>P{}XNF?;Q z<@wM;Bp!=$H0F?DU|mFNIwh(yA5p2RNLrD2*a9>jX>_3lphya&R`$niG!|4g*k5jQ zY$M9?k18ObC4!L5hp{H{Et&#(s36QE0I{Shs)p5aPNFbTT3)F67d;nC7fRKAY^GFrLI8EmO1bcljpk8&s| zGQnKswXs${u1C4DKc6L(^goJUR`=|*pNB4K&(Pd$*j&PT<~=yRf%WSuW!Y2J`g+ay zf2>#1g0j%c5IQ;qE(k^lMohUV!oTZPT3a=aR^W8T1-I4lN*}5Nnpl+DrQ`R!e7u)o zHZ{d#?a9L2kKeT4Iwfw~^I%tgdg{!f`eIGb_s96~>vG+W9WO_ooBXOR9zOBm%a?9-W9}`#L7(|<=fnr|+Q8At$nR$xhi5OE+b_Ph`z`*HU*646Hvc@BpDcV_^O?N-L)*y0 zZnLQ~URW z7aE@adMEo+@s)iCW1rsL(7xPy!$W=V7q1EpjVN^R(&6DNlc#Dgz{d`)N6j#o>wBMV WzI1Hck@3a=6z}Yby}kE|slNf1sad)J diff --git a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/icon.png deleted file mode 100644 index 7c88b3cc03a259fe4ab61d410be0f0815780c316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2204 zcma)84Qvx-7(OJ7zb)ZsAqyBe4%7j=-hX>{P++WVtD{@9RhTmnu6N(H$J)DkciXy| zKv-Zfe}W{!0**)^BM`+g0SzL72ufrsQ=&oL0uwYbjvyi-#1Q?iYs(}fq3QL$d%x#< z-v9U79;__On>2G0f*^VRa$hyPqs}!U2mV?uEq}w?#6 z6Cy!0H8r`K7?)v22uctHf}{zW#vuZ?nsr-B;<`0A!{7s!Y-$NxGj!Bpl)^@X?Zu$2 z!%oB#fk2j6x6+}4K_iks# z?|(>VC*@}bnur>3hhPLnpCLCm=J|b@s!$ABQ^YJ<H^1PPFw%Bi&MnBcJab<37?88~cE;?f|KDsX`Jr~=M~Jq*s!tOpPCih#46 z8?X{1GcqM)&R3ZlENm$@(kh2Xfjly=NMV5&a7K|-oP}kHOC-s|6-9F-rE&`E!B8hv zVsX&##b_6qehkJWTQ$tM7kg3Hl4)T`i-Q_la`HgAIl;}aJPT`*;{|sbu?moN@0Em))WO!o=G^3U`3H^ zh$2N6eg&NLI7uL$$o$caeX{Bwb~bCp<4R!|_J~izBRiOBew3zMG+MY?(-ou1%6d2= zw2m``Gg61sLOhzW)ZU2kn}Nfb?kuyf6ZnvQApsp`&4jO;@ds}Ggdk(K`F+Kq+H*H| z^}P1kvMFu5&T+vq@hT8Ggl&Ab{n>Lq>jUsvb#!MSeZaj8)K)*BZ)==-St@_6m7p_n3 zs`d{xF6z7#>DN7VMKfkIXe)YFq3>@9PJQ`&v$yihFl8UU@tI^LPC(zi@W& zpC!LkTMxe9bF=?U--ktYu8#e+MHeF<%_zQHfppe#?>^nxd1~$9t_^3ZcCT!!+IA?k zU|(VBfgOb%y~hXiLH?Upa}V9f-+4{H)^oD$+??O;oGdCnk1W}BqV8t%nydFKeu%Q0 zwLNS>ZePsZwRdgzy^WqZ9&G#8gAYy~yIXZQrw^IAZ0x+eKgX5je^D_1)2(^V{|Eny LO5X>|*R}o!Wa#e| diff --git a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/meta.json deleted file mode 100644 index 074f9a950a1..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/meta.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-NC-SA-3.0", - "copyright": "by Kyburka", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} - \ No newline at end of file diff --git a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/equipped-HELMET.png b/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/equipped-HELMET.png deleted file mode 100644 index a8a75934f008e5b4dd13a0bccdc0b88536204e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1877 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 Z?rdx4oljZ|fcfvkU0&t-XvVVD{{alL|7rjL diff --git a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/meta.json deleted file mode 100644 index 506f0c30b21..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-NC-SA-3.0", - "copyright": "by Kyburka", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/equipped-NECK.png b/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/equipped-NECK.png deleted file mode 100644 index 9734e8a0e88e0236f688135e142632d9bc6b7abb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2617 zcmV-93dZ$`P)Px;^GQTORCt{2ntO0m)g8w_=Wh0$_fttg!dpv0gvi4{4c4@iY7qgc3T+3bN{~_v zNXDjMK`g>Fj8qh-6>25425^AFz)b3xiYQ=s2;~t%!aE@>2_XsDWV5^X^p8!}g=CYv z5m3kd%w%Ra_jm61`}>`9?mhS1g&;wK1PKx(NRaO-LTliKmA!{X3@4n5X%?f#}EIeK!a}ctkit+$bTXq^`COq~s^#p4F`1Y2e2@^5v|| zECeui^hksd{AJz7Htl9log}4{eEjJiB(Q4r3dUwk{@R7`)sK$|W6Y1!h=`0}+oml% z@r#K7Z24dlk57Dp+H1A!`lyi0we_0yI}CVrZl?VBKZT@>c#!(~dW=RR+X@OPtGL{z zUGHuQ^6~UE91aIzVPO>Q{erQNrm-M*b(f29v;Nc5eu>lRM6VCw;`xg#S-cE@KP=29 zsYen{rwhGa&-RU*HR~(>4lK@^A(Q*|Va=vIuGiNyZ1^xXZZBvzd4RHt%VOj90)`DA z#`XGo)@;fnxo;m9XU&jZN&aU2mlow9rRP)*M>ENNdU<1$`}D%$Xa+n}VaB}Kn)O5c z9q2#s2c)EqWaE2z)Kyora7ixZRaZN#W_i_Bv2aPQOnYD;8{f-g(yynWHy8p)+rR#W zbLRnx#bO~uAA-x}x*bIE!t>Q(y_b@nRC>z$kA5ik(83`NKzR%#4p%m@j zLrUsM^4GqpX)5@}b?ecc(6BI6sUjuVE>)uFbeJs`Pk?Os1I!i+icW{^QYBJ?DpgJT zZ3@tud|X02J^S{i@ZeDZ?z<;RQv$7Vg$Iw)vu|(W65_okw2+cIvW*9UAT&IT<|YR& zrwhB?j@#u%C<37f+%7kEyWKMdnjD0NhanJ}^lvD@>5}~tATA-EDw~bbqtd;-|3Lp< z?X_=1Yg~ENRWW*0I#o6saS8D^oZlb5$9+8hi@|AU=D3leKuypAP&X%4=AW&76`7dU6 zs^7-!l=Lxj@v0RpoRy_H>5d5Wd{ffLNPxwwRg$UR1Z6@lQ|ktKa4}m{+h%jNMrvTj&1QrSRZU{=2gvpb@lo z<)381ww*|z`pOjmwr|=(h&}{IQxhS2Jz?SDy#K-90oe6XA@y~2xSYvj6ja%$U2NT@QX2LI9y=lQ)S# zXl)Z}HgUbNDbVHs)LyH_-eBiUX(?ORZ(z)$V@bP6XmTL%T=nbg>b!S>`no#LT>*ik$${JDX4J!D*t&iLXHJ#! zNJcu-p3Km;4)8@EqVs;%DIJEk8|T|T5N5tK2dC4?mi76}%+5kem7x!fKuU?z(7F*Wm<8(Ti`O=(rwK|*vCZhqT+l@|9 z2sN8DnGZFa&?yQbIt7!lYtI40My8ALsVVY>m*=6n-KcIAYp9jj_&9IO^odiv`x4V9 zPLXRimGY-tGu#g9d0yzN_&;f&>W?BuJ1TLB5Z4 z=^-KSZ*Rzk>kU}UMml1VbsIqHI|9}gy{FV8#|GoVXfYa%uveHIP zO-+}?zYdC`5FQ!9U3bN!*Xxlj-sUe_9#AJ}+vjRwVOFMWwA%qtTV7Dc#l@g#+%CJ7 zD2n3I*6F;x-)Oh9Fe@{lp%9RBDJ4UO-VZ=!c?Hg9Cq0sTa`MX~ez%-%2b*^niIZO* zp+|C0oXt)u%PRmFGW34$8)K~mRDhp7@t9{XUP@x(QPEMXS@|{<)p!2te=`-;HLO|rHc`=0-v13AGKicx&ubb5 znhJ1y|3O0ZdhdJol}naWQC-8n6Q$qyZtK1irJ|y`hLuZ}1D@X%gy{7g-+xe3`%Vim zJ~c&VzxE1>A~X6KF%(6R{n{&xPfh7`6m(huQ+xu;au!j3?g9ur zpR2z4p?@>wRW&TjSp)*g&s|_y<|l37xjqbwt8>Pr9C>l2u_%qDay}Z zAhAbx@5#OkM90RE*rPk;=Pz`64e0bP&{_oGTiyGuw0hK%JZM}9`4-{3fY#)L1PK!4 bd(Zy?(?xB;%M>!P00000NkvXXu0mjf9@-}# diff --git a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/icon.png deleted file mode 100644 index 1161a626de51c0886516a8136cdf8b6c509af1ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1039 zcmV+q1n~QbP)Px&$w@>(R9J=WlTU0^RTRd5_ultsX4=x!*r~x(tkMFZlm#>5^be$?HqpeD3pcD> zK_oG$Yr8;})TF@%HcSXiAno7+BsLjiYf57YC3Vx72oa5h7>8B^LzGVY-gWWjz4kdX zP&X#Ve#yFM`nz`OJ#DS}{OJ>V zqrBp22PVH5(?^dCB7k&X3LylaO?(A_k`e&Nbpd$i&DYRcGkI+m4Sag)6Vh+J`$UZ= zZhrjX5k2|k6vh4>8XB0peuMNI{d_ch zs-}*twQ+3lux@ML&Y4SD9u?YeB=#qGR4j7lQkJ&%?Hn6C zT(c!L6WGzYo9^^Ma%ZzVTv}r2_;9VG6&N}`%)_N6a%Z!2rw_8Db9c?NRTCJ?oYcwQ z6qhfIv#YC_}t7adz1SZ&zuX$ z0fZ39U{PLPEQAQ19nYL&Z*m`VGqW|5s2Gkrw{GgWnOT}!;=I`YGJV|x>#Flagb?M6 zI-t>j)*7ufj;n*0aqXKtKi&R;`@a@Q_NI8LBN5UJIdJFJO%2f85@)ec2*d%T6euMz z4TWW>^4GvJjL<)&BvP(v^mPxgSSZlk5)WzkFxCe{M+bTDgZEi16hf{TN};60P@br7 zciC~Y_NsTarnI{1#R^s(C*bfoGb5uR?vMl7{Itl7jFRX{aphue?T`={N_rKW2C;}u zEMik1i&7tp2C-#&ju=WJ#hMFOF6Kz|q{xhnlFd(tS`c!;Pa-{$*Z$;7A&^pFD9_@E zWuc_Nwk+aJjQ|vWf5397gp{&811_tMixdJ^Yo_KG_wPq0 zBLoN`i8nQp%}DU?#46H4K_Zm6>LPC1T)lnU3?1f@`z5Blfoc|by1`cSyvVY^=CN}Z^!(SK@Uu0b9>Tm!6002ov JPDHLkV1n&+?w|kw diff --git a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-left.png deleted file mode 100644 index 11f003313bad271b6e6faf1281fa08c095088084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)Px%c}YY;RCt{2+DmH_Q4|O8|Go3dOk-vQYeRjk6p9E^P%8+20C!z>;a;-!o49CK zZUo7qLeWBPbW!n+fFB+MDNE4~RSE005x0x-qCa4vlgE)A>2! zdMgM>wMdVu3kBnxqQ>h>m z1Td}0VF$1MQiwoASbjQBnIKRa8u?8O!@&9R3y@O68ybRtG=P*6wQ9BBlK(2vT9O2S z8ie8Oh;p5g0Z1v434Aod5O;3RU^+h+#|6*{puW2c(=>5r?6Pv5k-q^#2-uE|l$*k( zt5^Cgb8y-Lq}&w3Fw`0w*#SZbIF18q5WH;q&nrA2w(V#y&&U9X2$p4m0631*Pi+IY z`MC_su`zn;7-Nhv#u#IaF~%5UgY)x&h`rl+Dzr97pLm)nJ$=w!c=ouAepc>5UAJdxN-AV*EX2zxiCz#XKDOO zA_EXYpb<7;?Xyd5+cvh!o62(~G60|%f|N$jb<47F; diff --git a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-right.png deleted file mode 100644 index b6da823ba03d5a12d85860897396ce8160aaab29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)Px%Z%IT!RCt{2+RtkfK@{=O!|GdJLv*q4cpx zmdO}nj4{R-V~jDz7-RqR_g2?Iys!|r$WMjS5ASy^wpiH4@{^Q){bH$a3lX^huIJ+H z`Ewm(J72y+DuwTr3i-t15~%>$Oj=8&;CgPy_|03lMGyoKLST6*)t6lmxdT2IORy}f zYuq#ynvEvuE>N5z7vR*HF_@;=9bm}5T|Cf30fZ1Rq{Oqw$&OYx3f9(9LL9Iehw8khC@_-6~Z&LnW3f=6_yq@?v!?=F+cZM4bv@`xD!t%iu9Dr zAvZEV8begi@*|ya*f34v?^@S*HRp5Dl0H004j- z_w@->WT~Rk)PRb+`FWnTB9!6-FO}C-FbfMb z6q;shTZ2UU8(2F-3>BN2)ZH_RP)!I72-^9405Ct`F~vwd))yBK0BCpoQ%c>WiYNd; z1$x{E9h`!nFPguy;;uzs8J4vQy#vW3^?3-MRRF$C-rq^F%SsHqoYaE2Qca8v9uQPK z;+{U3+~7+m)V~yB)A4abq0mKP_n>oG|A=|3SXr8-?cXvkgeF{U^5os=ZmPaTLe%y? z7VF2NiCznrho5EEc*-~hqd}lza6?G~f6ydrJqB08bZC26p-cACd;CYrnVHxOWKZt5 zHx3L9uHAORN80JeLDKpQS)M_!v3rHa0aLG^3O*UIAI27-ymD;cPGwUDD0-vupwR{R z@RVy#P!-&IH%5^82>^6VPVbi9Eo?hUSf!e!E}3W}I`_~}THC{X3OVIT3WU&3VNS#` zF6gptBGg-!4h>Z<-j|0AaUzH4V4V@~TxXTBX@mEM#YOR{PX!yeCdt1P2S$ zB*ao6@YFVy7x}h>6c_%0kvgm5lsfoAD`{4zQFiNRc?@Vi*1M4_`w?dRr?cymuk`%s zTGWQX@M@MZ?Jno1>uM(v>Ta+?$5-51 z;`tsALMM^+)-ufSqS;hb@T*_Vg%_>dP?KxTwzPJo{0Y|q34h5IHRg_*T00W@zVv3) z)!x`1T-rI?9?-|lQscec_UYN)wIkPAp6#zHvf%}YTN|=@1f=WT^GP|ckr@7fo7xXs z76BXQ5~;1*r6^1BKu9>ad3#nK_M7Phvo(ZX-V)dM{inw`t8S^&nY0rTp+OHWx_Fe|U0Q z+(=>0670NiDQTC&lq2`<RQF$g~KUJlUx$i>{ zJ3%)-z|gVEuJLfDJbp(YQ#Jq>u8yE2UFtD3JgjCu-UWJNrJRu@s^6lc5w#jVVZaFI z4|aX|h;Db$y)qe2+6nVcJPh|jgmOA-5blQ6Ih)wdYnh8Hwdnd#~pO$inid{N< zTqSjFi{(NlQNQ!!;dEf~^=-7Y*Krxj_q0$uYapnsXi~v)vo= zm}7=rtaR(!#+ILwpGF(0IaO;p{6a3GA3l@~G8Z*+Oguh&*M-h6yJ1i1aJ(}-XpV0k zs55cz{i5CLLDfV}R*I2-l6WhXyIC@cGn zQ$qbVRkk7)ug~giYQks2!7_z*5_N3_pGs~{>kbiEX7u|y|FlpFMk2;kjxo|9nGP@E zE>!Gky)+FPwWU&|^YI7)wIQ0iDI-Xy)UfbA0?@ME^rubHJ_hbu^NYmm9*Y%F-W(2U yI9Fgw-Z0XaUIndD{Fq#$OJAQT94<+bt2ViFSVot!uPgpd!11F2KGj|k8Gi#_sLap+ diff --git a/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/icon.png deleted file mode 100644 index 04300a59374bc8234e7152e8567bcf27455ae74c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|L<4+6T>t<7 zAET`7C@$Wht-apX)`V9QC^I|4fe}ctmjw9*0~G)PgOoS38&K%9r;B5VMeo+h2l);g za5y(}{`s$deu9hd?gg<{e7#z6yk%FO*{|Bm>)_HLB+&8go+#^qy6G$WxB?6xJDc_L zJ}5EuUc?|GQeZw${3FXDPu74cfhIlohWTk1x!*8EED=zvW}P76xUrszZDM5nU+IQO zHkslN1?H0u1uB|#yeyo<*t^@yfxF?K(W?(1d0iN+8WiR`s2QX$Z@I%Lb>V7xx65_! z*^fW7UC-M2TqTO_$i8YKSFV&dijrE52+nd(!i2uL&A7c%J)jSci-;=_o Q0KLWF>FVdQ&MBb@0I=Px-8c9S!RCt{2npB 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 diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-right.png deleted file mode 100644 index 850afe115f173f16b51fb3f21472388ac772550e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wk0|V23 zPZ!6KiaBp*8D`&hkZ8NVUh{6wmYET8T&-r^nJ>ef4WICzxS(3`;@ZNQOtMy{S2inF zmoFFK`g&_EOO#bQcT3sI%Ti7T5}P#R+c&4UPRluYrIK|Ydr$7mlDcLoaWG?tx=$2gDMRnG?7-Y-HTPdgBJe4W^tNh8#vSGlp#pvv+@FRuZb? z`xmXE6cD;4YtdgumAZW%E`M#s85S^1cxEf?@Fa=#jO#&G|5eX^Wu&^Qe6YQ-Z{f@r zb1hhG#D7&>uIW>=l40)6lkijYd^L5kV1TY__402GMUpSfTth<{63V^5{IlEel1bl= z>Bh`&6O=Bl>a6>hJI7u5#Yq8+-7NR&W{PxFo@aTm^TKm}#{2AlvV#*BbF=jR|M#j) zYLm`Yp@I#%R#J@O;g=tO|M%^~*VyW1HLrpX>}RX{WAd`L+Bmmn^JVAFm!n&M*FSy4 zWg#zJ&+uYTj(U|k+k@Zc`{&0p%`aPapa1(UjaM!|7Gxc(5%RnzG~dKUWsc6H*2l-Y ze@Nt9RhhzN^Bm}e4S8$+#y5cig~+f&C{rsfH0exO8WGyeD#9=$vLizEqAhpjspS*3 z8!}oa^9rvBXE;7{UR){%P`LQilTQ&<94zGr3eQB{*<9T8||4NT>qV#b;hlp!SYV_;!t7V*(|R`i=EBP zjKWr}ni=o#>+aW>7q8tfEM7cs(=*2NyzOZ(cCPT~`Cuq@bVd rlFzh7(ggXh0@F8NYJ_K+uP=iZkj(+aAaE&oGKlhY^>bP0l+XkKRJl_T diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/meta.json deleted file mode 100644 index 63a31f7be78..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "BL02DL", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-NECK", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/equipped-NECK.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/equipped-NECK.png deleted file mode 100644 index f613539dfd9210414e3b79b7e7b3a11e6df3fbe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2205 zcmV;O2x9k%P)Px-S4l)cRCt{2nq6!Z*A>Tqv)^9tvTMBT;!Fz0V8AAXwr&gN!IY?yg(~_`QA*NC zp>OFEQL6S8`LU^xD&?UsmGaO^K|E9nq^+O@3W`jixGj*Z?EwCujJ-RoRhi4;3(d*?w)B9}7zDj%l6K50W zMWcM*mCy6yk5a3igtBlcd<9VypL#Ay5~6Ydu$Ksjl}0yDtuut4TL5%S9pXXL`%Ih{ zje&syqb$B->JR`z&n<4AT4z`dzzXVh(fGXW265pmfj|IBl8|K?09lriB#A&EKwLP> z=WRDouZx!byR0_1)uO)4zy)_t$WB8;^VAxLq!S!654o z1c5K=Q~M0G%zP3XcSqNiAJLo3I%js z=Zn9#F_!a_7%#3!c$t}xCKz>`rpYjnBnhX}i71M6cXyk<)9JKX0fu2P>Nw4gkB(Wg zUv;oJbF#%aeArK6`!Md$x|q4AFgWa??-#>nxd9Z5MXvt7i~U_Xz8_5D@p#a6olEa_ za&%yJMFV2ua$Cil%;^q>myTZE+wHEn)-;Xvy~C)gN-C8i z5{a-r7(~-FQ+&Bk-h%zA*-2b(GyFZHra?{9h(sdG_DQ8uMsssB0EI$<%+L-?Ww;#j zrI-=yoiMKpg#y8e-ON2>ln?kFsO@(u5~f~jC;G|?Dj=sjaOtIG*3vgojq-q)(=9DC zs&ePf9d_^D4M1>WH){KxiswJpb^h$}pe{Vmb&i<*+AY|x8sUTK(s!rpI)y@k_=jCp zjm1CgGQ}5*MQ#jcEQGK;x;%#<2*|RG&*uX$r{iES$WL^gzqhuU(=UL}=R=ld1VKQT z=W6<>S^qx!?7{`k~f$f9Ys}D z91aIb#aYuw&2>N|5+S*egpFIOH{ZC$Wr|NE5;dLIVlL-|xj6!X0J1C-(hcr@@(Iys zl-E-!0Qx2;ar=DyCX*qr8>aZVxjD$KLIN&cyhtn-BNmI%;j3QK<>!e+f@Cs@&x%S5 z%q=7#rwibLpH57e&))U>Aye|3(*+#91@RWCItCmam=%2YPXLfiCMmXrE1qYw*@~Jh zwuH^n_uW6S;ziJbw`K)l{0M+4Dx1ynjv%1V%5{unBY zYMoUo?rWM>X>3*@!Ro$!fLtyIz^Lz!i0aP(IO7GDEHg#}e=^%PS+s2_0Z>Xp)4U&e zBDz?t92CcL{#6*1Bm=(^PJYfJV9o8;f zxKMGO7%$@EgxSw>6jkUu{zy1;vc)LdZJJ*`WZ%Lpl~_gp4H`6P(4aws1`QfCXwaa+ z0>*98FmA8T=I3hgT;q9oy4jeVoHSCY)K?-2#%<9^rBcS^sn34BdjPRjh079VD(>m3|TxOn`^gO;jLu;CZviRJs9$G^V0)7WG zFASk+8re(V1R!$wF3l5rEGNP8CopqQ;qeBI$l<%B&UNA)+lSWiG0mMLXz4UQASUl6 z*0T&Bo*2IEtc_ zw#$aU1wbg^X6F730Cv8=dMFQcty^13&lO5HyZ%EmnIs$zqE zd1~iqEhx5xtH$7pt+Qp%_6EMDX%zvK9dFLPR&jW8t!VF;gw46vo*Bc^ohmETb%J4W z5;B<#!uXNrBEC#}za$9bM=D~dM?BOq2Dn_ME%35KP16X}<$C2Tj-eczU2IiAPIsWH zDo&@&yQEqNpENEWDW|00000NkvXXu0mjfD62bd diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/icon.png deleted file mode 100644 index 37bc82cda88f3816e69294b1a5436cb2f488d9c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 812 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 Hu0mjf*ppP_ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/icon.png deleted file mode 100644 index 5e2df270f18d272c2c655e365166520a67408331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmV;a0#^NrP)Px%V@X6oR9J=Wl}&3CQ51%sX_9IoF>PZILaiG`>=&U;!Bt%aq=-VP7*Qx~v+NI0 z*P`OOTXj<*fieqGH$hz)x`JLF(lqEK(`l}YX=6gHxhY);=79^tnRCv4 zdG8mrY18I^M`^X-uD4$t^zWgTX}MpAY@$eviSebha5~ALsRHNaO1?uhMeg323?9mGNQ6%yM+??Ak|ySfpDkF!rUy$h)S2D z5Z&J3onEYt+Q}E@W(jwyGHvAq%&(;dz>DwS>O>SxgG~7+MboI8TrFLwhT46^XWLn>w2ZEduAQpWG2rU>5guaSW-L z^LExjZ)r!7WBWN<-yW5lv}WF|?i=0hE?T#gL_8Nv4{QCR;G*y3V32w{N@MR2evvGd z31SB)M<`C=(%Q?xSiLdO`)reC$CoU_PB|}Iou+06<^e?_!%6u_K-Tc07 zEcb`E6FC=J_>0+pI{1Jo?a*S54XF$cU#iPBr>!cCEB(N_Bh7un-p9&1yB0GvG#+MI zw9{{0)@%)yQjjqdt}e`)Gk-ek$qq@y#J~WDo=lA(bTiywsWhgA?x~MeP zSU6a~`c+y4-)O`?KZV=Y4&X?6q$caWK_? z%dk5aar$@C?SBEOyQf;L%R6@JcywptQ-Lk1+zeNbc6R;SUGF{j@!Fz?x&=2CnNzqY z@JcE~H{_gPxXF~_%yvR7LH$tuv{OIU^Q>SuI?%b`x3iy1Dcf&{w({gmKJ!06Bxa~ zCmBEy|Lt7 l_e?hw**5@F=#Eo=*fbes=4gp4Zvf^O22WQ%mvv4FO#saWfBpaf diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-right.png deleted file mode 100644 index dddfbac8172282d0d66eedd9c15490d16770fede..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>V2?xtcq zOozLCCwO=)RtR_#uu|Z4L-mReK?+aS$*tk*-jLsZGxGcWH|IJYZ{KkL{U&SU_jSK( z&VN5=ZTwqLL4bpWsnG#Jo#LFfxA{-Q8iAuqTDRn?Z`_VrkmhIo?Digye=9jX^voAI zPWv3ma6sec@-l`0;c3NBwF_2B{n*F%XO?1AP6j)}6<@yPTQ(c&e(SiXkX_4|^Jbes zmbks?W=qk$8*CuOwedhxd_QobZK{ z4K{2qR`1{VoBz7g;t4T%RUf_x#q@dYv3$tPP?FOxf2-wE;@Z_mo0YVx!uMWzvBvH0 z6@w*PoD(wz%KzCoe?FyC5O#aIIrFt&Og9)5cHSwdkd#~1vhLcc~*Ky@p|Mvmk{7JQfu#A^5pmA>feg(onIufFY&kai+3GAaeg`j!^>a7 zr>CqsbMw~cw1$f;-Wy+}PWDe$yvtYpbc)>}hI>pE!Qa@Ph#g!Lee?d}cGXt?)cK4% z`JGc9ANJ`yaA{o^kPB9&%=19E!5lktTHO>*?dMB&rcW2)2=6$>D_V;N#6GW9h1*Fi^`ra;$1OY#x1`>aq$D!<{s1a zXC8Hz$op;-T2WK1yJ w%O=9Ttwue9qc+uRWpCUYzW`9metM=p;Dcrw`^sgSzzoOW>FVdQ&MBb@0NhrlMgRZ+ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/meta.json deleted file mode 100644 index 63a31f7be78..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "BL02DL", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-NECK", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/equipped-NECK.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/equipped-NECK.png deleted file mode 100644 index 5d9745c0ab1b6f0bba3a4d5eb434a23144067c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2068 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 W00000(o>TF0000B2a diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-right.png deleted file mode 100644 index 4ee4c0e4a4089a68013f95e737a48c8ce33013e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmV;a16KTrP)Px&Nl8RORCt{2n$1faK^VrLt-%l0rH7(PizrB?7s0lnhg7imk${vY3ptfN_&3CR z{S)fNYY#o_p@#)G7KBI(6-opV6nbe(1&b5|Z7If}m4)eH*>#hw$!wZrZ1esggzUaM zJp1g-JDGh4AP9mW2!bF8f*=TjAPAz9kSY(b44|4CD_KSKjAy0ScYv`q``p0kG?Tj& z$RP!*DZT32DxNcbA=2f|u?%-J0Dwn3z|BG6(-+{zk0g^rihHhP6|s@dO473Z``TrV zObsRQb8p(cgMrg&Hb0Wa)KCI|ZBj5Gc;(4k^f==*XYwm>iyg98$_+LVgXD ztRmJA49Hz}@WAhHm>)@FudodOh(==AIm)-?h5$gC-Q|v*GnO!Ct+3wjeaP*b@IL+b zU*BSKcm}zB(>+#Y0AN4;^#cQrd$E2EdxdRGgdYHaYec)a_v|ir?9|W-db|5@c7E#W zcgUaUh@QvF;(dpJ^YpzJTFi3KSyNM~K`RXt!erAy8j zSxxCuSa**@HNggZZngF10pMMfKUOvEq3I;*unxrfFUEYOcHddRi(^1R;}_u~Xcq7i z*8R2Dodr4tGC;Hd(R924zW)P6z!*ouTx|a2Q)PgY9sQ1TW#a&u|0)p3(*MN(@01(N z0G@9858ySR#C*Rz1P(AZGHqy?Ej2o3ds#~_V?}VG8V!aye!z?stLEO)@a+caP}&Axj#|6I6CXC1)5qHh#N^a z`-;4IFZB!{2!bFwnLh{SE7d+om;(R+01jnXNoGw=04e|g00;m8000000Mb*F00000 LNkvXXu0mjf);X!L diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/meta.json deleted file mode 100644 index 63a31f7be78..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "BL02DL", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-NECK", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/equipped-HELMET.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/equipped-HELMET.png deleted file mode 100644 index d62f7508efca901ba744101839fa03b38b3620c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1051 zcmV+$1mydPP)Px&yGcYrRCt{2nlWe_R~W~C62@ms#b7wJdhsC2ZK2dlgKD%isW-(U&LFxvw`3?J zg?Px2E``t{N~V}2P!l6Eq>U%XRTWCq!HY4$5Q9;M4CkW;ONt~Td>wr6DkVyjcanT< z{eEy9_r2qN|L=eA?ww8#6la@=%*n-K5rBfZ;m-eZuJY^GTikqdwJR=*)KxQ$ zB{wmVU~F`p+=DOuxRw2d=1~Lt(C#@BQmK?bdip^WnV3ibkXxC_Z!X{Pr!W znxsa6C_ZbYnVz1mh%IZS85Df;;zLIid-2W;kFS-vcxR?7E{n7Q9=p|Q^)i6B-woJLU_|kcua*1iN7{gPyA7P& z*JA6850khSBd*1Ow?{x{n+!omz_a%p4~4POamGf+iEA;6*SE;r{hZ?UE#g|tZD?ChM&XMPI2EwmdUa=&C`iqPo4&qe`hEyU$(6@HqdF7 z$Y$Gu6up(Z{+>zu=acsD%sU+m8NTB?jVG&!yD~b=%V}HweM0|q)5kw|?3vHV;;3L$ zpm=KA*{REKEUljOXJ+g!_sTAtn>?4I6y`WAy6jll^?J3m*y{Gh^N!B1sV%>fdv;Te z=+!+_RQk_8);aS1Z`PI5oA$)&UeoaRJjHlOd&TWp7Tg!3!VidLG`MBQ9*y+4d+o9m z!;4*fw zHya+?^Y`lUh+R#5?S~&0F#KUivQ7HNTXy{{Fr@fWBRtc5eHpZXYz`m>flI-YL6oPf KpUXO@geCwax13b~ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/meta.json deleted file mode 100644 index 18d3e1ba040..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "BL02DL", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/equipped-NECK.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/equipped-NECK.png deleted file mode 100644 index 7db798bc153ac40bf9060407d3e64422c91c97ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1567 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 diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/meta.json deleted file mode 100644 index 99f95c94344..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from Bluemoon SS13 https://github.com/BlueMoon-Labs/MOLOT-BlueMoon-Station", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-BREAST", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/equipped-UNDERWEAR.png b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/equipped-UNDERWEAR.png deleted file mode 100644 index 102deb11b59d954e06a63154678366eaaade06b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zvpiiKLn`LH zy`|fCC_seu!R3v26kaj>W#N67%Mf@_D&m08sz~?JnHMX}0vKm2sGJu%#PsUDh7{XT zUPW`sbLzLJ-mQ>F9OSEP)|uzG{MI(zV~-8H79Dt4@Z$T^%D#gM4VPc0SUtjrbN2eJpGxj*nd=w+>7 z|8R_H4|7E_<2}YbP-UqbJ2E&NU+)SNyeP5wn8em~*}RG`Ry*C>b#DDCujC#rrN4iU zCMBLrsMD_b?`zlcf%Cy`9q&8!tLs?>FJ8=GVTjjUI{)_D*z2i(>>Geik^9R1L!sc@ U%|^T9z$jqwboFyt=akR{0FX7rPyhe` diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/icon.png deleted file mode 100644 index 1be1755579ce2e74dfac3561e5583e213f9195ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}v7RoDArY-_ z&n@IVU?AXpQJddzKWkohPhE6MQ;xv9MIM?q0RdP0qc-iE*#QJ6rn|5_pQCcJ;{hkb z-MQ=8QkJDIV^m=1Gu*NGTUco*v)@|Nbz9}+_kJ&G>G*S-H!{&g^Qx`yb)ZEIp00i_ I>zopr03gmfC;$Ke diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/meta.json deleted file mode 100644 index 412bf23043e..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from Bluemoon SS13 https://github.com/BlueMoon-Labs/MOLOT-BlueMoon-Station", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-UNDERWEAR", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/equipped-SOCKS.png b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/equipped-SOCKS.png deleted file mode 100644 index 59b0da218bd0e0d9e4ab65f43fd30761b1f60e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 827 zcmV-B1H}A^P)Px%^+`lQRCt{2n%_&?P!z|%-H(Shh(u)E&^J3t$Jk?Rqc0(rAdFG+CgT6-n@G^o zmwBUk9Al2LBED4TXpz$FF?-P5wbqT~+IqKnJ}a90cf9LLEdAkCcxeSR)U$Bx^;&dyHZ zu2`P>Pcm1(fiZ@+@0w!2-P(tyX;@lX%9~1x%Cb3D9{?5>UrfZZlFNW}mO1BRan3nb z>Z@?vhLniBaL$F6yY%HDcLzjK1OQ_vYuk42!ZJ8+1D0h?!~o#rQEc0uFeWR{WDeq-qxbzA`d0%HI}Q)g>2$_o)8=<=zp(fMx~}8vm(RI#X6^vr z_mj=7Z2*Ahc}T~bTiftF4~3`CQCT)&7)J7^JhB*ukyMsV0M|1{u=}V;y8wB znwfIvdJ+1UnAwZa{{|VLT7YWE0M!CiLk6f8pc*njwE)$S0jdS4h73?GKs985Y5}St z15^u84H=+XfNID9)dE!W=natiGxlPSp6SZB}mDVBM0e{0Kkn-RiaCX{3nK7)?SCM`;A6>0AYtpCC*=Yv=P-aYw z^CI;aeD(SbK7IUv=qMC1t5(PP`FWBqQ=1j~{9M8qL#6T(R;>=;`aaOTxRlB#Wx#Ma zMEBwn&1O>w2=;c->-A>3L?$KJ+Z87d0NsmA{20pB{RyOW4h_(lHkJSY002ovPDHLk FV1jt$e8T_$ diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/icon.png deleted file mode 100644 index d2cd61d8fd319b73766e66efae9313690f424dc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl;P)Px#`$G63`yR)CGR1y^E?u&TSdI%_ zYkYyQ*o5P|rT>+>!ljpqh(wWSmd6PK+ zl*)3aGZ~&7GLOk}htkMAGL!~zm|g%4O6RcLpj5Ie69RGW8IfIk*3x!LarR5|_29iB z5%)rQw?~ya7p^uRKR<%FFTgIph3M+I-einFn~v;kL0Gvx@#3*}9Usaq46}LaVtqAq zgAE|_L6q!bTnekORI%uGn9aPOYbn^OLFk-5GI`$g>-%+0H8r!N8Vml9G~U%fUVhd= ziNz%92b&X%K6~w{pATuFOf(-o!9+>A+(!6P4klC=h@R0>3jWku;uM@yz_|s?Uho}E z6dW6a=DA(U6&FOszA1-qj4hj(W~&=(XRrejqvrwwLZb!0&H$mqA3Wd43@0kjG7sC` zX$-?5E;TeFu0InokLp6Grw%l0&Y`bX62wjmWTVmfdI2GqcPsHtWK1+|Gn!CR)R)pY zSAy)@YLn#y6_={DI4oXUCN6WX_R4|CaJ|?~>()(LLx4)})os%vr^CH6tcNxwhaU=; z7h98X^qy=%iA71M5PB%Wo!u88c*GNT)4~o`A!It^YVa^V{E!M!xM1x)*KF&O*Uw_g zJ$;I|)hLl2<>pc*s@6YeX;->u95JXCDE3M{RwuQw8US`r0Ao-nm@kM-Y=&eB*HfttA-D=$#=gb76Riy!zSTv=YHD zcUgU7O6AN;c^w0oH73)^Uy|hsX=v%Bgp}vW{ci%h zu8$H&b{=-vAvwD9yX85%ft`MpLsM@~ys3_gz4#D5k+69;T&1@5^WM%ZOx4HntVyG8 zWeq}==cKOX{;PU9smWcco(mOGOsCW%>T{2VS-oO4ud`))WOEpP^m)&Y4trKDqx<8X z&h&KHBVV5TyO(iOQ-IV5)V%Q9@An% z`nB|$L7!#`mDp?Y$7Ta(BV!m_kfhcgm-op}YF(|H->)BwEvhPhCs>rzammSPK4i3~ za`u-8N^r^?Z_&jVlIKxWN`HoKK8#Yw%5 z9VT9?lfRrLeiZTc;uUN7V}VSuP$(icc%8`ANr)bFok|9utND7Hn$wly`vjwcrETx_ z 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 diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/icon.png deleted file mode 100644 index 8373cdc3e68c4b2bcc85f56aa6aa7f8ccfdfffe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4684 zcmbVP2{@E{+aE2aw25Oq9ZiVPtd?Oigb@xSVPr{qX67*lvzQtClC4fEMoG#NO4eid z%C1wE(-BHhXpsnoL5fJeq4J&g`_6mb_j>2Lo_YSy^Zf4n{@vSuiLtRZ+a@M227y4f zS(p=Sg?HG>wMkU?&kYKig+RnY=q4sMTw60^7?sXtdjo+mHizX-_Xc79be_lBOAmlU z^#?d0jKX5N(`mjOfJbLBVN`$zz^EXH?gvs~?i>~aMghF(5QxW%3Arutc1J%bFMe#h z6@D<{RBI&fw@H=Ww z=6I(iN(*tVxdm~nTg>KcA3{HMsLfyron3_$KPP$4sQKW-{% zOv&-}j7Ms0>V?rO5>q>xn}6=)l(u*lO1g^hC1OlNd>+ajxqji&UY~>qNWCxpp+l_f zUbDy5zx#z}w~B}jzD6s$Eju7q&(}>Qh<27>Fq3yi4Q)2VOBD3u!_!Kj zAMdgT1S;k9Yk56Gn2lC*$sdyyuxV(St4S$Ol3%}pwl`uLkDwY)kc_Sm^lwx>b9g)?ZTM!+CvxSd2}t zOs^XbXp_|7S1NcdhAzg$(SAbWI$wCcO@3JKO=^3)O~5azE*^mv<@8*0bNdo8`J!s^ z$Iz2c9c%LHPkIlSrF4eoPF6nb-w|5n`1YsI$s@$xvBk3G!h@Zc1)^=nnN!obOG+=# zx1SNnela7rjk;AnuUzWohfPsBUk+CeWlucQgCYC}or zT-Rdy=dRX9a_B&Fu|XB>^%I%_FGMiOVuV!<9w^4oJQ4_=`M2Kqu$ZGT-_Pgo3K=SO zHMHC%uU|JQ!)W~VlkYG~X1VC|(@0fm11F!5=9mTAu9Lj<8NC0<`?CJV; z7W3-lLnb1yacQTx#F504lZ$gH%X#%EzgKsB-Kr+HJPCbOgUnitY-5zGBuKyEkLg}( zP{_!VIDvR``8o;yK=g)qBn-h1-zt_p10le+YGkhSw%O)Tcdkm}5cF)g%+b38Io-gS zs2%y@`6B6k8B*B?c{AG?@h*28Zb?DkhW$7CSqIs{y zoAtJYQK~S}Q+wjs$71~tnHj00>q0g;5igz+*D>k}oK}k{kj^z4E41M&X~e-dwC*jl z+UII|Iz%F_I65R&x9kY#k#$1qC!SgQ4*^h9V&?+@! z{7{ayW)D_BtNix9(9$;*353Ke z8{SR*FnuAXiGDfIcE{2mO{&_ep6vNA_NsH1mJ#oV<$c=i=JOKWn>-2qS_4QI>|pc6 zQO$<+`;)7Wwrb_%2B{PrdpG*?tv5|H-rHv=T=#o?T19VLuIQ6=vc&Mr_NMq;gZP96 z?w0qdzo}~*T6hvnEot~(K26111Jb{5Fg4oHxciLsQ5VY8)A75tnv`^>T~AR=`O*Bg zvYgl-obqJ5f})A#2gbhSCK|;)^U^R=&qtb`6`k=(F$x*F7`gbYc_K%8ZZPy`H#=|+ zc-_}lwc8pPdf#wx5pnS68!sZ{O%q0<2`s5u!3GDV<$@=jGtQ+rHQM8nca1u%y`28B z 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 bN`U3f%uzk?oxo-68X*%yb6k=B>G1ynK=w7} diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-right.png deleted file mode 100644 index 4d7f5a1b47ec8426096e5c6d62d984c70a6ed1c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4863 zcmbVQ2|SeR{vQfOiwKcZ6CyOLeX@kH#mK%UjhWXN%gmS=YZOu^ib;~}l&r_@TC%lR zP6a0#Set3C}z#%e|1b@c59)f~<^z zs8(DlY~-L_b|6?tw883>P(!)UzPN_lC!-?KjJ-Q{uxvp2zmT^kJ$$v} z^4z{}MsDqsu2rwA*7_Oe=5bxaZ);b3PhK6A9;{onPRP)%q>T|ehpN32XJ~SbrJ;-6 zs~KOr+nU@$M_Nj>YY1a63EK3KxmmK$xth^qC0eYWxw*lBwmY9!a}O*r84Ssg@iG@3 zQ%MQU`dKlbrr(zR-jc=Ei@&~#kQ3E*^bKi=S|LcDr)RLV0wz8#HqAfkIhm%h*d0?s zua^j!30I3vyGX-KB%GgJT})ZeZ-D#1dFba_Gb`{i^vyk3_G(1CPlar}=sU)gdV1r5 z%xs}E(04a)+d`i4-VuxdLm6Q^_;XkwGPP_UmHA04b(P3itk4AEPv6nCG zE)Xo>${5HL$vG~5FPSe(?+l;ZL%s#8OyLD1!JZ2NVwQ1H(i4(~>0e|-?;MMyj|sMD z2%N*!AS34wU89_e2{1I$RY25-Y;(k1zbL4x+a0tZA6_V$r#n?-!H`yrg=}p*TyA#6 z#o$tiP;5zLNQ`><8#Nd0Rv75QlFT8IM#U+s!-8`DB1KhEOB&mi&_YFW1=`tr(C0$o zmyo}2i-!`oA>?i<>AiX*lf$UFWPHA{Aal;q!!W#PGTic$PO*_P@viQ5nXs`kUzc0w zsdGnrmvT?D{&D%>!?XOcy43drmWtwsqZwZKHd6`47M{0x54i)k_&Q#GO9-AyQusB6 zXU{<8MP+R-ewVC^{`y_k3C!!c;{}(}Duum=w|HdS*zHnq=?c{&lgN{~C4*iB(k2jj zD2GiIuNfY6=7M|k2p03gF4%?DxL0xqF;Ue!ZJh(21*xO8gY!kx6A!^Eyv1UtEu~fC zNuPO^m}W{vw~G5`)meSdjH$LTF}LzplC8E$UyojWW?mkVIC|AtCZ`9b#8)G)r!}5y z?y$33PiMz{_cWQ-XGu0{S(R5SuEq&w^(YocMVMb*4F2Wy;Czy3&?2g^yjK3~QYK%S zezRhPG_QEB%T2%3a(%+=g~(%hPR3G6PVpK}um%KP)}R$8-06Az`95Tt6ys~mwxW?0 zH~{zYR~azHIR|tTq1eh#hoC8bJxa$W9P3|LkP05%!Uot~cp;s=lkh>k{5d)P-3wU9 zqnrCJ_{9&gs`I0&Y)Q!K$ALoL>Ai}KCycyKqRUe~-&EGgB~q_9=SwlhC& zvQHWYk?Sm!<%97#omDSf^TrD|tVx(iLk<=t&=#mQ-W4MgCJ|J2x1-?O^wvi>%A;$?~I#&_2E&S5-!70@)evUFNGFUvPYH)Q;J#Oh$nOs?qSXy^%7YhV#OHqc&k z&>TDdvGMpS^!SN8L*Wtz@e`3~vdE{ot#;Dug)h5UPGu;0!i&=PO{(O>ROZzBqSpPq ztkmr*c4M}MQy*)$e&{gPnI5{Jl39QeG1-5oC*9d-c+52MA8mvQM-e+W(rEd1l>lkH zjggC4W685G_m9SoX9H_X9}ts=WM_M_HS5kzmHV#+r-|DhEZ!w;rupmab@TJH`^}si zpD12?Q5^KRt|77CTsYuEH!%6?bDuBJoM8MsD|73f*N;<5MEmbi8}C^XN}}p~r(C{t zSPg|%+-#I~9A0@W^hhS&$w-aSggLNp?oEMT0(4G9BA-^Vk4mv_wa%};ofdfD`nAH} z;R^m1a8STOR|EJw#&BDh~%emq<%4ZyP8fx&3ax%qFW(I(QLh8c__GORoS zRz-wo(R#-{a3Xyr&8|?Hucg{-?ciCp__cA5i?)-P{6$6@g^%@o>G^Sgff+p;^cf z?bSMW%F~|HA?M~y+1t_W6k|sk2qYlPxw$~esrx`6UNfSN1Kj~*hQg73pjbTF4S)vv zP}pb?NK+?}g2j0Obg&yhAdmfhe{BAAr4U4fOFQ(NKX}QX6tn>^A2$ObWaKp?hgb>2ef;9WWMPeKLFJs|tlf zaB#R17=ciQ;_)~&H=OcOFcOYLz~JgIgc<~)ghHsJl+?gKE-AJ?D&8Gsg*N=5jos6d z@}ScxC>SgtAOISm1SL}mFocGN1`LjbA(0R^0zwNS(XoLL5>5K21T;XyQHhj|EjLFZ z){X2(*OFp${ceO0Wm7DP_QO$Zm%#$D6c_>u=NPpC#N#$`6hEr>hH^X(26zKL0Etdx zV-cHJiU*larg@P6jp)tKe^S79E(Wuy<1e}R_-v}6(GC3BX8dr-U!rL?K@}DAvedP$v8hwWPgswv&U<|Rd5dGn*tOgPXK`OZ+5K5{Dyt+H`r~Z>vBD=P*-v6^4b_M*ug+Ha}vMr*q zLr42jA9`5AkCr!4n`0)2CKjoJM7XP{vU$Og5Wr2@9pa{fP==`DlmU0PTBye9rdME*OE zeis|y0kDPsP5OO@(a7#}&T(6pz>eO3OmEn~BTvJ!&*gtd{l815f2IDH}|$5pJ8dY5A5la}#@^AlDls_?641k^T`qrZB9$5JZ_3S^d7?-YBP_zp)09v;>O z0ghjY$-79IHTOK`gv0DvB2~Lb)!nVc0*dB!;>pXCh7~L&1JA~G?$~r<)uagSyjcAAW-vV`4x9@ zhz|tJt$4j74K~E{Cxg!1&bNP-$#vPDUu|yi3imwpB98MH66d;a3<^qLUm5dl8g9>8 zVscp+phO&2zRt{ngd`blV_nrQdoN~>hT6ptLWN|q;-a-AcXg+xEJ?W^_lRC_eR_At z&Q2~`BXb6Q6R7Ot|KMLIqAliWeaVpP%p3XElU!Gc;m`JtEfYBC!6xpn!3`(;CR^?h l-bCep5f3xMaws@Nhi=iXGeiVGJ{`>In;4j*i}lV#{2xUgK|TNg diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/meta.json deleted file mode 100644 index 285980ae71a..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-NC-SA-3.0", - "copyright": "by Kyburka", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index d9c744a3aeb91b940c9428c0050aca2b2c7e5dea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6952 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 diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/icon.png deleted file mode 100644 index 980617511a02ea9809246cccd2690cf969cf861d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4899 zcmb_f2UJtpx{fHI*bo(jaWHf#sg#6Bs6k*Lh%_mJ9+Hy~N)nP#1*GYWC`3g-DFP!y z9Xc0KnxhmML{tQYIEoYj1pLJNK?xFKeBgefIhO|Ns7W_TK00Y%R7+ z$VosTknL8M1bg8fx_WIE6aKTq!sa0miEx^knH}5S!W2rTv6+5AD3r-!P-uQ2G?>Qm zUZ3;^Sma=U1wu&-I)z3JWC0u+gAOGF8~{oNS+pRK45hFb{!kL&M}t7TUrfnvz36c4 zcjcvbowZTM(P!FYIKND*_OIl1MqZwR-xFh2-G&eJ)pl6xUCcuCcflR~9|duk8j<4# zC9%#=e4O%Pb~uCk-tGi^tSgkN9W?EEZc8`r6*!1@<1zgUo`TE7_iwg!G&C$t<5x~S zz>hURp3j>iB@?fjN7-RZ=YtNle2VV!n(aJ!mWJHx^9wxG>u73y@y-iIs!?;@Ok4X@JzX--mybT=M zH*r;MiFVxOPFt)F{CaB}ytY@uE`9)RkTKF}xQxoH!$_VN`w4|AB7{e0YpIIN=FD~| zSk0;`n@i&_l_LfZIOm2yrKB6}k4rUHO6|MU_~VgtaRlz3ZQBG+5U?(I;w}r)0Os2CmdO^YDO2vPXZsbVVf~=^;Y@ z6E9+fk=JkW8K{5Z%H zRXfvR`aM!(a<`}Yakqner`10?Tyhyv533vhedz2^eLOeiK5RC1zZOihv2otGKNo#- zawb<`#Z$v$ZUzd>9KOpVmS?^rx?r?%vULL?2 zK13|TWYuIfjD~dX*5ua6`z}Q+olB&Ci@(oFR3;9KE^Jd*s4%rRVia4#`=D)$C#FgBP{F zsZ(sVrt*k|$4glsAGbGqMGUr<8P-vUpHdAu;rwZae`MXzp)$OnhtGc=+4qHcQY(}-8M5V=b+o&Hs- zNz$*m6WHrb^4YmkC*iMCesqF86uTiA1BG*=wn^j(AOz?(%^VRwyY0>m=j)^ni^oUF z9J@Q1-wXT@yR%5LXhYUO_TD^W*;{GiIi@GY)$WMT+Gp>cwUF$I4VF22>73Ho{=?Vb zDNElt6vr8sY}MZyNvcD~%_v-C9#059Y+<5-Y6#!#O1ykVQqSaZ=&X8lv2=mSM2Q_& zNiz|)sa>Vg=Aei9*>I`EvbgXBY~?GAhhZB661%9Zu(wHb!d^vEEog5^&ACPWE!qUB z615`3++Bpo2;^Dxz0FB*+Gdnmini&qSIT+Zy0ez2n~JjeuHJ{EOU9#*&Ks3l=+J&L zxvU&DToK@L^)!pG)w`JQDfq_^2kxAbNHk%+9XP5fs}j%kCAVA4aW{&N7TggD*%;vZ z!zeXu;+n?y>7u&^s?X>c`bv1@oCz}Pc1Y%3&L1f{n_0cv@8w4CtSdV`iq4*Ad1uo^ zvo~gON+5<*nkZAnTJz%J1MVA;exj14Vu)Dhs5(luNGK0iyWPn>_+coPU>H^?eLYnH zQROF-_~xjRUK0Ix(M6t(cFEP!{%NeB@1Z5j2_fTE`D}li)3uLU7arPH#-t8ia97Uj z!D)-vshi?Q@@-wV*P0q_yG_YdZhLsm5tCDWq3XgV$($a|(sMDk7Z$?4{q6b8HR;d= zTyf=1^;3)4;uU5snlVaZviTk+ z(3y(dj|rPg20tJ{q<@g^fHlcI_%RI*RL?8G(*t|74~@AtJh7t}-MtC~JI6jz%H2+# z#8y6HB)xuu=(?Nojh%$7f}plA9=P9n&qu?yDd<6$`CFbufBa}0s`|K*YmqGMDDiy; zI1)|vpb}YQy}!Ml?N`n4&vUhwj%-vuk1E4e?&rxQA0x6#P1?@|6n6dcQ+k7mZJ*4w z3?HlFHf5&=g_p+rln^kr2gR!52ywSl*y3eB^6tiEIV&aDfs$nQEI=LT)5`c+ZpT1G z#p~)MLh{v3Z)f(*UdnHwrG(n=T>iC1O;^o_x%kOZZNb_)dTvxMpvz&gFqzWgL*VHQ zBHS@Uty9Oen>K2t-8|N=lV1>~T73NN_;3Qo^zVyOS z#CIngzy)Av8#v(ifO({6!V1x}s%r2K8O z9z%u2n^;-E-!90>*z&=7*r|A8?&hY+E=!{~FJg7Gi->!zzPZtJ-QD8luyyJ`+Noo% zd!4=LLzP=}gO$jR79KWDWe?xo)=C`71(z2mQR51#(>=Kc^^p^mLCay8vQ7s|cPQBy zd_R5J_Vn~OHttQoYF>O&8ro6cnA&f{X!1L{qKHD%q z|GpY9N1)a?#x< z@Ew)B@i3>0^%|C;{mF$ASSQ<5YK6wHfg1)&psl$!*Blfz56&Ms{A(v6K}GG?UGFDy z-kbt8L?U+_oX<)y#kB+`-}af`q~^3KcI23ez|}RM2JM$sABk4X1OWjBd>(JWpZVlT zuu__T$>knY78Gn1RK@s|taROirgA=HIv4ARx7OM$A2@|cS|0H}<1|hzT;OIh#RZS} zZnsnriPjp$HsLSW&sIdz@Ar6yNAj(O+tDpdOIJ1ovUT_BwE>cru@3?fSD-n%a9oHs zI1zfs!G%{ZCm@W}XWSW8AG|Mm+ z=n!V>NDA{M>5~@Uq@x8zBhe@X5{p1#U?^=I3X9XmK)?JHh4xrv z3eKKz_=`2+6JF7q!(rkOh~VI0c(68{!J;Bi`uh3^BpQK6!-NPJJCx1=LSS^Z(pL=x zkWFIIm}^_^RgHibBankv6mtFSggsY2YgTr8ZGyaY0_1FJoKp0#iaoxtBa`E?HH^JtZ2MOKy5|BSd zvmHa3Ai^GGGXhy8&^$;;Q)$&3CeDln0vra*k-_l$nku`ml%Z%891T5qj7BFjg4ybS z5C91P2gEB1v!(+>qF`v0BMObv6=n^siPXa(k)NSN2AM_){Ua0&L+d%Bg-|3;_n)D{ zqFFr!{YNmFgrhK6{(#V7nm<4V5llK&5xO2moEgK9!4eu4veRB;K_ud==xh!^CxKQ3 zyrR%&IE_ZeQS`_lMMuXA=7k~Y!;pG9+AuEwg@x%*kZ3Xrg`t3G>{odLgA}-$*{||s zp}d|K2GrNn^MdIB6n&UBN+_?7LSkWnmkvr>pQNkj1+3dY!lDU#3-J5fdW0SDzaD?I-o8J27qJ$rlSXF!vH;PeHfsl ztBWR~P)G`eWPn(03ZXFc^XRie#9v!pD^;8&ZIwyr7yAxiz&aD?T6N+8(rVY?6-le* z29g!OOw;}(Gyh#=KdTM)28Bxhq6|O7*bEA1_1JAf6=v~2mO0|zk!J(K^Z8#<2e7(& zXtX{Oh9r|HFp91Y5(Xg2D3~sYq#%*{SggJm=Bxa_Qpe)ZC>&b%YX|)u>R-Z2@&@Qs zQ1}r?DE@tC{<{wO*F5}bkN^KUvsR>^D-7{}i*N1SAHMQmD_OX7tPa;#E#brZx(CvQ zabgKqH9Go;Hw3Z)YDF+{bh$f~Vp0@`+;+C-mH!@m^kC)nI~(ize8Ut1RL1RP;^Eq# z62A>c8)`klAbV~fp-D|XeR5b-yXVl#FrElSL*u?%h1G%%&Pb_^K_)98TM3H-e3&U9X*AS6_kq(Q! zaTV@Sa~=n7X&I;c+}^VLa_k Q)$N0oxh)Yx=&HYPtQ3RJxlG^ZFqlLL)5yq@XKi8#r!#pRZy*TH;j%rL-XJ`H$@g5k z=?QS@0RR_-)7UHzCc}>l@R@8DoDT2-I346N{Xsh1gUj}T(*SQK4CeWKR8}(1#^Hm~ z?8lbt;rbCrno}qqvv%0yudUlLFf4Gf2 zR1JGNWr&uFJ#QRtNhp}|-&OxLqSbw}<=`LJFqswFQooB`#b9zNArWaB%A%9$lg-;r zCzX|qWyq(CP<`9%GXmk#GBwuwrE5y0x16rIyzfLbMX+)8YM~trtO!`vF)i_Xw12wY z@WzYLF46K*D-sVj$>tSV7e%hb3?F52`a;AH_~GiT9Tm$~QfItP?j=OKs1sJ@Nj7<3 zwJUo0D7MruuyA{|GT5ZL898q+9CG<>=Nj^P%UV36(L&M&7ZgHbm{svbOf%FOE5Z?!~R+mqo-QgR5A4UAy z8#=(w>^6B=dB;CIvq?mv|4p*^+;CqftTZ5-XVwNYe5fL&oeeevT(dF>R;<_n2Qk1xJ@E#6v(t+PVc9kesJ+}FE8 zBJMY{yruxO^wBvwkaK-S4{$u@BCk5y3Atn>IY9Q2WYNqtNGq9EK zCNhMky((nwNX%n#pUY-3f<3z@_ijD&Z^DwO6ze~Elw_%FCWdRtg>Rpe`tvKQtRUdm@(cD~i74^)nkS(KV*E2?GskfzpIce>>M9|8qjp*!)%uP zOs_z&HDsXJRnKgzoKE%FW}muipZo^do97F@Jc(41(RK0-X*ltjvGoW)RY(pPdOuw^ zal3P03URt4rjTDP7cv^59h-8LM;%HyGB!J%G@nz0_J4WH&#hui@^R?P8>o!g$QGYc z<#?Ibf)T={TKTjL>4V7E=PuhJ?u%WKii9Ht;j1Mwg)jfbA*cZ;74 z-|TR^FY6KTThzK-sa%oNp0rJw`m#4Jil-YM6j!+=K53n{VbVmZGb&)S)#($8LtA%W z`luvxWmh!+l~e;!GK^M%jh@&Z$Jrkfu-n8y4O1Pm(usQJsFapLN6@5dM4n8x!AQQP zKv6vwvAk(ViTO@f<6|Mxv4zngF@%zr+OE2dC|J~t()LZY>Lb=Wq*VMj<(HqBA+FM- zNaw5M>SnB`goUDyVehPrM>1DpRL*G{K6$B>DX2KM=SXdC+PIVF?uh*12&*Z*0uvnb zs=*nh@K?pYuIG<%$2A_!WE~Lx@!Pgrhb3YSxNm!`)Ma;^6da;AnaK&3tr*O{B^tQQ z*Xg%GM)1f5wc|-E*7uYh#pxcBa7{nzZ`5v+(0e9pAoo~G*#_?y%RE!hu5-;j_B+=z zjkzLiSt>strpsWi;OsC{kK4V?MFj1=LaIOv6=fe@;ZY_U)JwX)#?B?+eh`788=NC^ zDRDch)O&O68!JVvc-Ds%Gri`T`R5C|#|Xl%`+K-{sLk#rPqsGNUHGDL>b^xuWMcm* z7p2TjlBRftsv&tG%ffNZbwjdT_t4Y-c z7G0Y!Bzu|WH7eP)<(wYwQbZwC+VYgeQR2>r33+qg^bIw0a;A!iZTShjNr2JQrICD1 zZf#F!@$0g9O2YZ&ZzncRp3bUgo(r;GH+Q#Q1+U`8nfYp~GHqrS@qSRwx7B7QC&8oM zi_(khL%C@8H;g)H)-KbySn1G&%gPQ`&fEWXc<=Ss^$h--r)bin_vDna?v`w^$Eohp zgTl4-aoM_Y@t=8;@00&j!|R!PQH;$Py&Z!!)pw23G0ZdYm2 zQk}LwL9^tBb6ZNXVm3PEZ0QJ&rk3s+`I?1u*cwR(}?$zxT@X2sz{Up=b(w)71EKd&T*@$L&JrVv;K3 zVbR+@5uZ#`DS){@~Y4Fuk7+h-d8Sv*SbgV&GRUHS}t{y=`UA0FS(e!cx9IO zM-yYnX_LJ>tG{FwK0uLfYvO8NTX_HDO^w)r3~+Ad9cFmD@>pkvPF2`QiT_-1imctX zg0+g~I>*P(SR5Jq#oVR#u6o?Vf}rNAn#6944FT^uz~Lt!x_rUrcpzfgU?CWNwG(o=4OgXFu!4 zdvX!&Zsg{Y-r-=oxGJ?hLEQ;C5(GPoL`JdNT|beYe0W2K`2`yV^_^4ucHeEG#OzSH zyZ+Ni`kTX`nrPVCol~hXhNODGgqvPd%T?@_M-4a_2%Vg=nDA~{)qx0w6c7-4fKN~A zj8A+$KrvOEdLa<(R1#)O3QHrs^5(=RKJhO}f{4AS7(u4BC#a;_Pwa!C;ab77h{E#pEq8nAjbr zts~!&YEGiDeUJd1?G7RXeK-&r2Gh|C&e(Xe!4D z^knV{=7KiC7PhqDLo^~?K~ER16G(y__<+!^HPFYK#Ullh6&C%Hp!ULTlmdJa!aqb- zFjxo(ccfavjo8r6R||6dH@dVi6Dm!3$#Xfj|U{ zr})DI1?17VOwQt#d%+{%&i3Pz6(FwPMEG!)+_HGz2MQW8R3N}XVUXwrQHwx2Z3)Nm z<9aU!r_)fNH|PVh_&f-US;BHW*?cz7ll?cYmmdF10BCTj)TJ1I$;HQKDFlyi><`KK zJ|KUI=Gg{uK$JDeWBYMwps_zhQ*l8Jhh)SB0X~~+%VvB3NR{Oe%5W?OiG}ZUV6y1! z0G{ek1|S9CgJcCLYd8cNgTP{JF<25F${JQ3twlnkzd@;NI@2TQXDAkd)w0DxP&7#s z_b*Ur(ky%h{aY}dM)F{DeE>)>(+6OHC=QFE0ACtLk`ddR&4mI(>@*iyP^lzS7LO0G zXrL*DtN>|7GMRJ|9go3+bPo&yjYSg?SUL_s5HUnF0!IX}I4qrj*V3l{u&1zTehZoX zVNZwb@gTw79fKnx(C&~uo{j?%1OiAyU_mW{HXZ5%SgjxS`?yS~wgB({+7DC#|Euta z7XwHU4@w>Hdwm!JjPEUPrtX5w1)4-Oo<^kM&U*=#KM1xZ^Q6gcc14dT0_ohB|MEyUT$p4@EUzXy3L;d@((mVkc1B4b1l){3T#cX~{3hMvnYw_7nFXJC@ z=ncQnTv}Y9&eHM(vLM%7Xz@Yax+4jLi8Py13~U2?Mw2kHQD`aSQH>qsy;OsCd<9jm zO+Sh&vQ~c^GHzM)MMLIpEkeKHl(E*lM=EeTc^v4=QGeU`?4N zxPF5CJNfZ*tHa%|9lq8f+flo&=(x+)a0#Set3C}z#%e|1b@c59)f~<^z zs8(DlY~-L_b|6?tw883>P(!)UzPN_lC!-?KjJ-Q{uxvp2zmT^kJ$$v} z^4z{}MsDqsu2rwA*7_Oe=5bxaZ);b3PhK6A9;{onPRP)%q>T|ehpN32XJ~SbrJ;-6 zs~KOr+nU@$M_Nj>YY1a63EK3KxmmK$xth^qC0eYWxw*lBwmY9!a}O*r84Ssg@iG@3 zQ%MQU`dKlbrr(zR-jc=Ei@&~#kQ3E*^bKi=S|LcDr)RLV0wz8#HqAfkIhm%h*d0?s zua^j!30I3vyGX-KB%GgJT})ZeZ-D#1dFba_Gb`{i^vyk3_G(1CPlar}=sU)gdV1r5 z%xs}E(04a)+d`i4-VuxdLm6Q^_;XkwGPP_UmHA04b(P3itk4AEPv6nCG zE)Xo>${5HL$vG~5FPSe(?+l;ZL%s#8OyLD1!JZ2NVwQ1H(i4(~>0e|-?;MMyj|sMD z2%N*!AS34wU89_e2{1I$RY25-Y;(k1zbL4x+a0tZA6_V$r#n?-!H`yrg=}p*TyA#6 z#o$tiP;5zLNQ`><8#Nd0Rv75QlFT8IM#U+s!-8`DB1KhEOB&mi&_YFW1=`tr(C0$o zmyo}2i-!`oA>?i<>AiX*lf$UFWPHA{Aal;q!!W#PGTic$PO*_P@viQ5nXs`kUzc0w zsdGnrmvT?D{&D%>!?XOcy43drmWtwsqZwZKHd6`47M{0x54i)k_&Q#GO9-AyQusB6 zXU{<8MP+R-ewVC^{`y_k3C!!c;{}(}Duum=w|HdS*zHnq=?c{&lgN{~C4*iB(k2jj zD2GiIuNfY6=7M|k2p03gF4%?DxL0xqF;Ue!ZJh(21*xO8gY!kx6A!^Eyv1UtEu~fC zNuPO^m}W{vw~G5`)meSdjH$LTF}LzplC8E$UyojWW?mkVIC|AtCZ`9b#8)G)r!}5y z?y$33PiMz{_cWQ-XGu0{S(R5SuEq&w^(YocMVMb*4F2Wy;Czy3&?2g^yjK3~QYK%S zezRhPG_QEB%T2%3a(%+=g~(%hPR3G6PVpK}um%KP)}R$8-06Az`95Tt6ys~mwxW?0 zH~{zYR~azHIR|tTq1eh#hoC8bJxa$W9P3|LkP05%!Uot~cp;s=lkh>k{5d)P-3wU9 zqnrCJ_{9&gs`I0&Y)Q!K$ALoL>Ai}KCycyKqRUe~-&EGgB~q_9=SwlhC& zvQHWYk?Sm!<%97#omDSf^TrD|tVx(iLk<=t&=#mQ-W4MgCJ|J2x1-?O^wvi>%A;$?~I#&_2E&S5-!70@)evUFNGFUvPYH)Q;J#Oh$nOs?qSXy^%7YhV#OHqc&k z&>TDdvGMpS^!SN8L*Wtz@e`3~vdE{ot#;Dug)h5UPGu;0!i&=PO{(O>ROZzBqSpPq ztkmr*c4M}MQy*)$e&{gPnI5{Jl39QeG1-5oC*9d-c+52MA8mvQM-e+W(rEd1l>lkH zjggC4W685G_m9SoX9H_X9}ts=WM_M_HS5kzmHV#+r-|DhEZ!w;rupmab@TJH`^}si zpD12?Q5^KRt|77CTsYuEH!%6?bDuBJoM8MsD|73f*N;<5MEmbi8}C^XN}}p~r(C{t zSPg|%+-#I~9A0@W^hhS&$w-aSggLNp?oEMT0(4G9BA-^Vk4mv_wa%};ofdfD`nAH} z;R^m1a8STOR|EJw#&BDh~%emq<%4ZyP8fx&3ax%qFW(I(QLh8c__GORoS zRz-wo(R#-{a3Xyr&8|?Hucg{-?ciCp__cA5i?)-P{6$6@g^%@o>G^Sgff+p;^cf z?bSMW%F~|HA?M~y+1t_W6k|sk2qYlPxw$~esrx`6UNfSN1Kj~*hQg73pjbTF4S)vv zP}pb?NK+?}g2j0Obg&yhAdmfhe{DAAr4U4fOFQ(NKX}QX6_v>^A2$ObWaKp?hgb>2eH$9WWMPeKLFJs|tlf zaB#R17=ciQ;_)~&H=OcOFcOYLz~JgIgc<~)ghHsJl+?gKE-AJ>D&8Gsg*NSgtAOISm1SL}mFocGN1`LjbA(0R^0zwNS(XoLL5>5K21~fp!QHhj|EjLFa z){X2(*OFp${qBShWm7GQ_9Ia2kii166c_>u=QyhH*R&26zKL0Etdx zV-cHJiU*larg@P6jq1(Me=@)hE(Wt{<1e}R_-vY>(GC3BZu|(yU!rL?K@aFnw8pP=lb;hcj0BN&fE zxs$0rShmANA1ncYQAh+S@MaiM`ebi1m2H^KPHBS$27@vo(dbwb4lqG$NwIx~5{Y<} zx++3RSxo~0Q9|Ic5LGp0cZi!3QU#)+;f~cn;x&*sgz8UuG#Tf|$?Q*gJX>A^u7cCR zDZ?SEssJ8>Q&(1ju;p+Nq>>u~p`?nytGgqA%AceX*<%aq{XgqrkAVO8@TV4CwnsE} z>S#a4haQ&jqvcK1=D5kBiAAa)5$-CgY+i6A1aRZHse(|3sN$3XcO?yX4HW>d3F8a~ zwh;Jx>$@V@-&@=$QIs)}!yxE~U2DL1lL2_6Dp6P*XS8Wa;W%Xm;H7@NCjLc6{=0~N zR~z5~u$BHz`F)4c$nJE`aa)(b&fb44Z`i*hPs6g$<$p*0zbmGHrT&-0;eVn2Bdj;PdIy)D4+3#L zH$mP;t3J&28f3tnQrK2W>AQ?mY}L}QFt`U8OloHMsTBnUGRv!XioHyHhob`z59@*e z$1lX>U8KyKdmeMbVfHMMs@@F+`i;$(1A%^@Y*qGFUj8%dz6}Qlo*as^UrzsQI$|in}<( z2Lk3+yxx%p8{+wsLuYR1+ds?Xx@^y{HaB>Mdmefb$N3A1bKN%v1*NaAjQKVVw`VOe zxhxD&A`UBGXXZdcl8m;ou4Hk@q}-2tL@&5Ly}M&) zCl{@eIfK3lRQBM>$eE