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 f874c3c16e4..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/equipped-BACKPACK.png and /dev/null differ 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 02934780e41..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/icon.png and /dev/null differ 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 2347e302567..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-right.png deleted file mode 100644 index 7a94db6a50c..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.rsi/meta.json deleted file mode 100644 index 693f3807ffe..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Back/Backpacks/blackbackpack.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/Duffels/blackduffel.rsi/equipped-BACKPACK.png b/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/equipped-BACKPACK.png deleted file mode 100644 index 3ca40a373ac..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/equipped-BACKPACK.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/icon.png deleted file mode 100644 index 13afe982954..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/icon.png and /dev/null differ 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 d40efb01785..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-left.png and /dev/null differ 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 475c150757f..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Duffels/blackduffel.rsi/inhand-right.png and /dev/null differ 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 4b1ace07f99..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/equipped-BACKPACK.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/icon.png deleted file mode 100644 index c289cd47a43..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/icon.png and /dev/null differ 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 c5784acd5ed..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-right.png deleted file mode 100644 index be98196ff8e..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Back/Satchels/blacksatchel.rsi/inhand-right.png and /dev/null differ 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 b0f7889d9ea..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/equipped-HELMET.png and /dev/null differ 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 7c88b3cc03a..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/blackhairbows.rsi/icon.png and /dev/null differ 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 a8a75934f00..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/equipped-HELMET.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/icon.png deleted file mode 100644 index 1f8b7b767b8..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Head/HairBows/redhairbows.rsi/icon.png and /dev/null differ 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 9734e8a0e88..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/equipped-NECK.png and /dev/null differ 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 1161a626de5..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/icon.png and /dev/null differ 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 11f003313ba..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-left.png and /dev/null differ 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 b6da823ba03..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/meta.json deleted file mode 100644 index fb7b3bbc336..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Neck/Cloaks/Monorich.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Made by Plaga & MegaDaimond", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-NECK", - "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/Neck/Scarfs/windy-scarf.rsi/equipped-NECK.png b/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/equipped-NECK.png deleted file mode 100644 index 67939b86b90..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/equipped-NECK.png and /dev/null differ 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 04300a59374..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/meta.json deleted file mode 100644 index 1384e2d133b..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Neck/Scarfs/windy-scarf.rsi/meta.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Taken from bluemoon https://github.com/BlueMoon-Labs/MOLOT-BlueMoon-Station/tree/master/modular_bluemoon/krashly/icons for Lost Paradise", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "equipped-NECK", - "directions": 4, - "delays": [ - [0.15, 0.15, 0.15, 0.15, 0.15], - [0.15, 0.15, 0.15, 0.15, 0.15], - [0.15, 0.15, 0.15, 0.15, 0.15], - [0.15, 0.15, 0.15, 0.15, 0.15] - ] - }, - { - "name": "icon" - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/equipped-NECK.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/equipped-NECK.png deleted file mode 100644 index 4ba5c2545c5..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/equipped-NECK.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/icon.png deleted file mode 100644 index eb981d3f3e4..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-left.png deleted file mode 100644 index bad4ddf489b..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-left.png and /dev/null differ 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 850afe115f1..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/Cargocloak.rsi/inhand-right.png and /dev/null differ 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 f613539dfd9..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/equipped-NECK.png and /dev/null differ 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 37bc82cda88..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-left.png deleted file mode 100644 index 7f5a2dde542..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-right.png deleted file mode 100644 index db517f43f6b..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.rsi/meta.json deleted file mode 100644 index 63a31f7be78..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/engineeringcloak.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/medicalcloak.rsi/equipped-NECK.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/equipped-NECK.png deleted file mode 100644 index 4bc40402415..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/equipped-NECK.png and /dev/null differ 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 5e2df270f18..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-left.png deleted file mode 100644 index db099fdf20e..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-left.png and /dev/null differ 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 dddfbac8172..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/medicalcloak.rsi/inhand-right.png and /dev/null differ 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 5d9745c0ab1..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/equipped-NECK.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/icon.png deleted file mode 100644 index faa7d004657..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-left.png deleted file mode 100644 index d8eda46b7be..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-left.png and /dev/null differ 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 4ee4c0e4a40..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloak.rsi/inhand-right.png and /dev/null differ 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 d62f7508efc..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/equipped-HELMET.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/icon.png deleted file mode 100644 index 3bf9a931be7..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/scientificcloakhel.rsi/icon.png and /dev/null differ 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 7db798bc153..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/equipped-NECK.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/icon.png deleted file mode 100644 index d76f06aa6b6..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-left.png deleted file mode 100644 index b30e899256d..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-right.png deleted file mode 100644 index 846819ab47d..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.rsi/meta.json deleted file mode 100644 index 63a31f7be78..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/OuterClothing/Cloak/securitycloak.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/Underwear/cowset/cowbra.rsi/equipped-BREAST.png b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/equipped-BREAST.png deleted file mode 100644 index 8010fc4446a..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/equipped-BREAST.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/icon.png b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/icon.png deleted file mode 100644 index 0631b91faf7..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowbra.rsi/icon.png and /dev/null differ 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 102deb11b59..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/equipped-UNDERWEAR.png and /dev/null differ 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 1be1755579c..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowpanties.rsi/icon.png and /dev/null differ 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 59b0da218bd..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/equipped-SOCKS.png and /dev/null differ 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 d2cd61d8fd3..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.rsi/meta.json deleted file mode 100644 index 83d09d2fd4f..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Underwear/cowset/cowsocks.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-SOCKS", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 3f9203c9ad2..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/equipped-INNERCLOTHING.png and /dev/null differ 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 8373cdc3e68..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-left.png deleted file mode 100644 index bb99c957fca..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-left.png and /dev/null differ 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 4d7f5a1b47e..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/altwhitetopic.rsi/inhand-right.png and /dev/null differ 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 d9c744a3aeb..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/equipped-INNERCLOTHING.png and /dev/null differ 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 980617511a0..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-left.png deleted file mode 100644 index e006be23577..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-right.png deleted file mode 100644 index a183f05cfdf..00000000000 Binary files a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/meta.json b/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.rsi/meta.json deleted file mode 100644 index 285980ae71a..00000000000 --- a/Resources/Textures/_LostParadise/Clothing/Uniforms/Topics/whitetopic.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