diff --git a/Content.Client/Clothing/Systems/WaddleClothingSystem.cs b/Content.Client/Clothing/Systems/WaddleClothingSystem.cs new file mode 100644 index 0000000000..b8ac3c207b --- /dev/null +++ b/Content.Client/Clothing/Systems/WaddleClothingSystem.cs @@ -0,0 +1,31 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Movement.Components; +using Content.Shared.Inventory.Events; + +namespace Content.Client.Clothing.Systems; + +public sealed class WaddleClothingSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGotEquipped); + SubscribeLocalEvent(OnGotUnequipped); + } + + private void OnGotEquipped(EntityUid entity, WaddleWhenWornComponent comp, GotEquippedEvent args) + { + var waddleAnimComp = EnsureComp(args.Equipee); + + waddleAnimComp.AnimationLength = comp.AnimationLength; + waddleAnimComp.HopIntensity = comp.HopIntensity; + waddleAnimComp.RunAnimationLengthMultiplier = comp.RunAnimationLengthMultiplier; + waddleAnimComp.TumbleIntensity = comp.TumbleIntensity; + } + + private void OnGotUnequipped(EntityUid entity, WaddleWhenWornComponent comp, GotUnequippedEvent args) + { + RemComp(args.Equipee); + } +} diff --git a/Content.Client/Movement/Systems/WaddleAnimationSystem.cs b/Content.Client/Movement/Systems/WaddleAnimationSystem.cs new file mode 100644 index 0000000000..83bb697b26 --- /dev/null +++ b/Content.Client/Movement/Systems/WaddleAnimationSystem.cs @@ -0,0 +1,135 @@ +using System.Numerics; +using Content.Client.Gravity; +using Content.Shared.Movement.Components; +using Content.Shared.Movement.Events; +using Robust.Client.Animations; +using Robust.Client.GameObjects; +using Robust.Shared.Animations; +using Robust.Shared.Timing; + +namespace Content.Client.Movement.Systems; + +public sealed class WaddleAnimationSystem : EntitySystem +{ + [Dependency] private readonly AnimationPlayerSystem _animation = default!; + [Dependency] private readonly GravitySystem _gravity = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnMovementInput); + SubscribeLocalEvent(OnStartedWalking); + SubscribeLocalEvent(OnStoppedWalking); + SubscribeLocalEvent(OnAnimationCompleted); + } + + private void OnMovementInput(EntityUid entity, WaddleAnimationComponent component, MoveInputEvent args) + { + // Prediction mitigation. Prediction means that MoveInputEvents are spammed repeatedly, even though you'd assume + // they're once-only for the user actually doing something. As such do nothing if we're just repeating this FoR. + if (!_timing.IsFirstTimePredicted) + { + return; + } + + if (!args.HasDirectionalMovement && component.IsCurrentlyWaddling) + { + component.IsCurrentlyWaddling = false; + + var stopped = new StoppedWaddlingEvent(entity); + + RaiseLocalEvent(entity, ref stopped); + + return; + } + + // Only start waddling if we're not currently AND we're actually moving. + if (component.IsCurrentlyWaddling || !args.HasDirectionalMovement) + return; + + component.IsCurrentlyWaddling = true; + + var started = new StartedWaddlingEvent(entity); + + RaiseLocalEvent(entity, ref started); + } + + private void OnStartedWalking(EntityUid uid, WaddleAnimationComponent component, StartedWaddlingEvent args) + { + if (_animation.HasRunningAnimation(uid, component.KeyName)) + { + return; + } + + if (!TryComp(uid, out var mover)) + { + return; + } + + if (_gravity.IsWeightless(uid)) + { + return; + } + + var tumbleIntensity = component.LastStep ? 360 - component.TumbleIntensity : component.TumbleIntensity; + var len = mover.Sprinting ? component.AnimationLength * component.RunAnimationLengthMultiplier : component.AnimationLength; + + component.LastStep = !component.LastStep; + component.IsCurrentlyWaddling = true; + + var anim = new Animation() + { + Length = TimeSpan.FromSeconds(len), + AnimationTracks = + { + new AnimationTrackComponentProperty() + { + ComponentType = typeof(SpriteComponent), + Property = nameof(SpriteComponent.Rotation), + InterpolationMode = AnimationInterpolationMode.Linear, + KeyFrames = + { + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(0), 0), + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(tumbleIntensity), len/2), + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(0), len/2), + } + }, + new AnimationTrackComponentProperty() + { + ComponentType = typeof(SpriteComponent), + Property = nameof(SpriteComponent.Offset), + InterpolationMode = AnimationInterpolationMode.Linear, + KeyFrames = + { + new AnimationTrackProperty.KeyFrame(new Vector2(), 0), + new AnimationTrackProperty.KeyFrame(component.HopIntensity, len/2), + new AnimationTrackProperty.KeyFrame(new Vector2(), len/2), + } + } + } + }; + + _animation.Play(uid, anim, component.KeyName); + } + + private void OnStoppedWalking(EntityUid uid, WaddleAnimationComponent component, StoppedWaddlingEvent args) + { + _animation.Stop(uid, component.KeyName); + + if (!TryComp(uid, out var sprite)) + { + return; + } + + sprite.Offset = new Vector2(); + sprite.Rotation = Angle.FromDegrees(0); + component.IsCurrentlyWaddling = false; + } + + private void OnAnimationCompleted(EntityUid uid, WaddleAnimationComponent component, AnimationCompletedEvent args) + { + var started = new StartedWaddlingEvent(uid); + + RaiseLocalEvent(uid, ref started); + } +} diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs index 0eff811fa4..13e3fd05f5 100644 --- a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs @@ -59,8 +59,10 @@ namespace Content.Client.Options.UI.Tabs UpdateApplyButton(); }; - ShowOocPatronColor.Visible = _playerManager.LocalSession?.Channel.UserData.PatronTier is { } patron; - + // Channel can be null in replays so. + // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract + ShowOocPatronColor.Visible = _playerManager.LocalSession?.Channel?.UserData.PatronTier is { }; + HudThemeOption.OnItemSelected += OnHudThemeChanged; DiscordRich.OnToggled += OnCheckBoxToggled; ShowOocPatronColor.OnToggled += OnCheckBoxToggled; diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index fcc8bfc420..3faa392e58 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -184,6 +184,12 @@ namespace Content.Client.Popups PopupEntity(message, uid, recipient.Value, type); } + public override void PopupPredicted(string? recipientMessage, string? othersMessage, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small) + { + if (recipient != null && _timing.IsFirstTimePredicted) + PopupEntity(recipientMessage, uid, recipient.Value, type); + } + #endregion #region Network Event Handlers diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs index a81e8ae887..2d670d1e77 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs @@ -40,7 +40,7 @@ public sealed partial class GunSystem if (sprite == null) return; - if (args.AppearanceData.TryGetValue(AmmoVisuals.MagLoaded, out var magloaded) && + if (!args.AppearanceData.TryGetValue(AmmoVisuals.MagLoaded, out var magloaded) || magloaded is true) { if (!args.AppearanceData.TryGetValue(AmmoVisuals.AmmoMax, out var capacity)) diff --git a/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs new file mode 100644 index 0000000000..bb165c37e8 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs @@ -0,0 +1,1766 @@ +// +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("20240409013837_FixRoundStartDateNullability")] + partial class FixRoundStartDateNullability + { + /// + 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.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("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("integer") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.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); + }); + + 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.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("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/20240409013837_FixRoundStartDateNullability.cs b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs new file mode 100644 index 0000000000..84b296d4fe --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs @@ -0,0 +1,40 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class FixRoundStartDateNullability : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldDefaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.Sql("UPDATE round SET start_date = NULL WHERE start_date = '-Infinity';"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "timestamp with time zone", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index 1d3c525dac..8376407dcf 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -845,10 +845,8 @@ namespace Content.Server.Database.Migrations.Postgres .HasColumnType("integer") .HasColumnName("server_id"); - b.Property("StartDate") - .ValueGeneratedOnAdd() + b.Property("StartDate") .HasColumnType("timestamp with time zone") - .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) .HasColumnName("start_date"); b.HasKey("Id") diff --git a/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs new file mode 100644 index 0000000000..e3ca0e78bd --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs @@ -0,0 +1,1697 @@ +// +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("20240409013832_FixRoundStartDateNullability")] + partial class FixRoundStartDateNullability + { + /// + 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.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("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.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); + }); + + 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.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("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/20240409013832_FixRoundStartDateNullability.cs b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs new file mode 100644 index 0000000000..dbfd7776ba --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs @@ -0,0 +1,38 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class FixRoundStartDateNullability : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "TEXT", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "TEXT", + oldDefaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "TEXT", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + oldClrType: typeof(DateTime), + oldType: "TEXT", + oldNullable: true); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs new file mode 100644 index 0000000000..2ec05cdd45 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs @@ -0,0 +1,1697 @@ +// +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("20240409014937_FixRoundStartDateNullability2")] + partial class FixRoundStartDateNullability2 + { + /// + 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.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("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.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); + }); + + 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.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("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/20240409014937_FixRoundStartDateNullability2.cs b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs new file mode 100644 index 0000000000..01b90f8333 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class FixRoundStartDateNullability2 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + // This needs to be its own separate migration, + // because EF Core re-arranges the order of the commands if it's a single migration... + // (only relevant for SQLite since it needs cursed shit to do ALTER COLUMN) + migrationBuilder.Sql("UPDATE round SET start_date = NULL WHERE start_date = '0001-01-01 00:00:00';"); + } + + /// + 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 fb4fc71f17..80c374c785 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -796,10 +796,8 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("server_id"); - b.Property("StartDate") - .ValueGeneratedOnAdd() + b.Property("StartDate") .HasColumnType("TEXT") - .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) .HasColumnName("start_date"); b.HasKey("Id") diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index b6c238c9e5..2e13c2a2f6 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -118,10 +118,6 @@ namespace Content.Server.Database modelBuilder.Entity() .HasIndex(round => round.StartDate); - modelBuilder.Entity() - .Property(round => round.StartDate) - .HasDefaultValue(default(DateTime)); - modelBuilder.Entity() .HasKey(logPlayer => new {logPlayer.RoundId, logPlayer.LogId, logPlayer.PlayerUserId}); @@ -494,7 +490,7 @@ namespace Content.Server.Database [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } - public DateTime StartDate { get; set; } + public DateTime? StartDate { get; set; } public List Players { get; set; } = default!; diff --git a/Content.Server/Administration/ServerApi.Utility.cs b/Content.Server/Administration/ServerApi.Utility.cs new file mode 100644 index 0000000000..951e0039d6 --- /dev/null +++ b/Content.Server/Administration/ServerApi.Utility.cs @@ -0,0 +1,147 @@ +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using Robust.Server.ServerStatus; + +namespace Content.Server.Administration; + +public sealed partial class ServerApi +{ + private void RegisterHandler(HttpMethod method, string exactPath, Func handler) + { + _statusHost.AddHandler(async context => + { + if (context.RequestMethod != method || context.Url.AbsolutePath != exactPath) + return false; + + if (!await CheckAccess(context)) + return true; + + await handler(context); + return true; + }); + } + + private void RegisterActorHandler(HttpMethod method, string exactPath, Func handler) + { + RegisterHandler(method, exactPath, async context => + { + if (await CheckActor(context) is not { } actor) + return; + + await handler(context, actor); + }); + } + + /// + /// Async helper function which runs a task on the main thread and returns the result. + /// + private async Task RunOnMainThread(Func func) + { + var taskCompletionSource = new TaskCompletionSource(); + _taskManager.RunOnMainThread(() => + { + try + { + taskCompletionSource.TrySetResult(func()); + } + catch (Exception e) + { + taskCompletionSource.TrySetException(e); + } + }); + + var result = await taskCompletionSource.Task; + return result; + } + + /// + /// Runs an action on the main thread. This does not return any value and is meant to be used for void functions. Use for functions that return a value. + /// + private async Task RunOnMainThread(Action action) + { + var taskCompletionSource = new TaskCompletionSource(); + _taskManager.RunOnMainThread(() => + { + try + { + action(); + taskCompletionSource.TrySetResult(); + } + catch (Exception e) + { + taskCompletionSource.TrySetException(e); + } + }); + + await taskCompletionSource.Task; + } + + private async Task RunOnMainThread(Func action) + { + var taskCompletionSource = new TaskCompletionSource(); + // ReSharper disable once AsyncVoidLambda + _taskManager.RunOnMainThread(async () => + { + try + { + await action(); + taskCompletionSource.TrySetResult(); + } + catch (Exception e) + { + taskCompletionSource.TrySetException(e); + } + }); + + await taskCompletionSource.Task; + } + + /// + /// Helper function to read JSON encoded data from the request body. + /// + private static async Task ReadJson(IStatusHandlerContext context) where T : notnull + { + try + { + var json = await context.RequestBodyJsonAsync(); + if (json == null) + await RespondBadRequest(context, "Request body is null"); + + return json; + } + catch (Exception e) + { + await RespondBadRequest(context, "Unable to parse request body", ExceptionData.FromException(e)); + return default; + } + } + + private static async Task RespondError( + IStatusHandlerContext context, + ErrorCode errorCode, + HttpStatusCode statusCode, + string message, + ExceptionData? exception = null) + { + await context.RespondJsonAsync(new BaseResponse(message, errorCode, exception), statusCode) + .ConfigureAwait(false); + } + + private static async Task RespondBadRequest( + IStatusHandlerContext context, + string message, + ExceptionData? exception = null) + { + await RespondError(context, ErrorCode.BadRequest, HttpStatusCode.BadRequest, message, exception) + .ConfigureAwait(false); + } + + private static async Task RespondOk(IStatusHandlerContext context) + { + await context.RespondJsonAsync(new BaseResponse("OK")) + .ConfigureAwait(false); + } + + private static string FormatLogActor(Actor actor) => $"{actor.Name} ({actor.Guid})"; +} diff --git a/Content.Server/Administration/ServerApi.cs b/Content.Server/Administration/ServerApi.cs new file mode 100644 index 0000000000..6f10ef9b47 --- /dev/null +++ b/Content.Server/Administration/ServerApi.cs @@ -0,0 +1,711 @@ +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Security.Cryptography; +using System.Text; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Threading.Tasks; +using Content.Server.Administration.Systems; +using Content.Server.GameTicking; +using Content.Server.GameTicking.Presets; +using Content.Server.GameTicking.Rules.Components; +using Content.Server.Maps; +using Content.Server.RoundEnd; +using Content.Shared.Administration.Managers; +using Content.Shared.CCVar; +using Content.Shared.Prototypes; +using Robust.Server.ServerStatus; +using Robust.Shared.Asynchronous; +using Robust.Shared.Configuration; +using Robust.Shared.Network; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Server.Administration; + +/// +/// Exposes various admin-related APIs via the game server's . +/// +public sealed partial class ServerApi : IPostInjectInit +{ + private const string SS14TokenScheme = "SS14Token"; + + private static readonly HashSet PanicBunkerCVars = + [ + CCVars.PanicBunkerEnabled.Name, + CCVars.PanicBunkerDisableWithAdmins.Name, + CCVars.PanicBunkerEnableWithoutAdmins.Name, + CCVars.PanicBunkerCountDeadminnedAdmins.Name, + CCVars.PanicBunkerShowReason.Name, + CCVars.PanicBunkerMinAccountAge.Name, + CCVars.PanicBunkerMinOverallHours.Name, + CCVars.PanicBunkerCustomReason.Name, + ]; + + [Dependency] private readonly IStatusHost _statusHost = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + [Dependency] private readonly ISharedPlayerManager _playerManager = default!; + [Dependency] private readonly ISharedAdminManager _adminManager = default!; + [Dependency] private readonly IGameMapManager _gameMapManager = default!; + [Dependency] private readonly IServerNetManager _netManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IComponentFactory _componentFactory = default!; + [Dependency] private readonly ITaskManager _taskManager = default!; + [Dependency] private readonly EntityManager _entityManager = default!; + [Dependency] private readonly ILogManager _logManager = default!; + [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; + [Dependency] private readonly ILocalizationManager _loc = default!; + + private string _token = string.Empty; + private ISawmill _sawmill = default!; + + void IPostInjectInit.PostInject() + { + _sawmill = _logManager.GetSawmill("serverApi"); + + // Get + RegisterActorHandler(HttpMethod.Get, "/admin/info", InfoHandler); + RegisterHandler(HttpMethod.Get, "/admin/game_rules", GetGameRules); + RegisterHandler(HttpMethod.Get, "/admin/presets", GetPresets); + + // Post + RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/start", ActionRoundStart); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/end", ActionRoundEnd); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/restartnow", ActionRoundRestartNow); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/kick", ActionKick); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/add_game_rule", ActionAddGameRule); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/end_game_rule", ActionEndGameRule); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/force_preset", ActionForcePreset); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/set_motd", ActionForceMotd); + RegisterActorHandler(HttpMethod.Patch, "/admin/actions/panic_bunker", ActionPanicPunker); + } + + public void Initialize() + { + _config.OnValueChanged(CCVars.AdminApiToken, UpdateToken, true); + } + + public void Shutdown() + { + _config.UnsubValueChanged(CCVars.AdminApiToken, UpdateToken); + } + + private void UpdateToken(string token) + { + _token = token; + } + + + #region Actions + + /// + /// Changes the panic bunker settings. + /// + private async Task ActionPanicPunker(IStatusHandlerContext context, Actor actor) + { + var request = await ReadJson(context); + if (request == null) + return; + + var toSet = new Dictionary(); + foreach (var (cVar, value) in request) + { + if (!PanicBunkerCVars.Contains(cVar)) + { + await RespondBadRequest(context, $"Invalid panic bunker CVar: '{cVar}'"); + return; + } + + if (value == null) + { + await RespondBadRequest(context, $"Value is null: '{cVar}'"); + return; + } + + if (value is not JsonValue jsonValue) + { + await RespondBadRequest(context, $"Value is not valid: '{cVar}'"); + return; + } + + object castValue; + var cVarType = _config.GetCVarType(cVar); + if (cVarType == typeof(bool)) + { + if (!jsonValue.TryGetValue(out bool b)) + { + await RespondBadRequest(context, $"CVar '{cVar}' must be of type bool."); + return; + } + + castValue = b; + } + else if (cVarType == typeof(int)) + { + if (!jsonValue.TryGetValue(out int i)) + { + await RespondBadRequest(context, $"CVar '{cVar}' must be of type int."); + return; + } + + castValue = i; + } + else if (cVarType == typeof(string)) + { + if (!jsonValue.TryGetValue(out string? s)) + { + await RespondBadRequest(context, $"CVar '{cVar}' must be of type string."); + return; + } + + castValue = s; + } + else + { + throw new NotSupportedException("Unsupported CVar type"); + } + + toSet[cVar] = castValue; + } + + await RunOnMainThread(() => + { + foreach (var (cVar, value) in toSet) + { + _config.SetCVar(cVar, value); + _sawmill.Info( + $"Panic bunker property '{cVar}' changed to '{value}' by {FormatLogActor(actor)}."); + } + }); + + await RespondOk(context); + } + + /// + /// Sets the current MOTD. + /// + private async Task ActionForceMotd(IStatusHandlerContext context, Actor actor) + { + var motd = await ReadJson(context); + if (motd == null) + return; + + _sawmill.Info($"MOTD changed to \"{motd.Motd}\" by {FormatLogActor(actor)}."); + + await RunOnMainThread(() => _config.SetCVar(CCVars.MOTD, motd.Motd)); + // A hook in the MOTD system sends the changes to each client + await RespondOk(context); + } + + /// + /// Forces the next preset- + /// + private async Task ActionForcePreset(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + if (ticker.RunLevel != GameRunLevel.PreRoundLobby) + { + await RespondError( + context, + ErrorCode.InvalidRoundState, + HttpStatusCode.Conflict, + "Game must be in pre-round lobby"); + return; + } + + var preset = ticker.FindGamePreset(body.PresetId); + if (preset == null) + { + await RespondError( + context, + ErrorCode.GameRuleNotFound, + HttpStatusCode.UnprocessableContent, + $"Game rule '{body.PresetId}' doesn't exist"); + return; + } + + ticker.SetGamePreset(preset); + _sawmill.Info($"Forced the game to start with preset {body.PresetId} by {FormatLogActor(actor)}."); + + await RespondOk(context); + }); + } + + /// + /// Ends an active game rule. + /// + private async Task ActionEndGameRule(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + var gameRule = ticker + .GetActiveGameRules() + .FirstOrNull(rule => + _entityManager.MetaQuery.GetComponent(rule).EntityPrototype?.ID == body.GameRuleId); + + if (gameRule == null) + { + await RespondError(context, + ErrorCode.GameRuleNotFound, + HttpStatusCode.UnprocessableContent, + $"Game rule '{body.GameRuleId}' not found or not active"); + + return; + } + + _sawmill.Info($"Ended game rule {body.GameRuleId} by {FormatLogActor(actor)}."); + ticker.EndGameRule(gameRule.Value); + + await RespondOk(context); + }); + } + + /// + /// Adds a game rule to the current round. + /// + private async Task ActionAddGameRule(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + if (!_prototypeManager.HasIndex(body.GameRuleId)) + { + await RespondError(context, + ErrorCode.GameRuleNotFound, + HttpStatusCode.UnprocessableContent, + $"Game rule '{body.GameRuleId}' not found or not active"); + return; + } + + var ruleEntity = ticker.AddGameRule(body.GameRuleId); + _sawmill.Info($"Added game rule {body.GameRuleId} by {FormatLogActor(actor)}."); + if (ticker.RunLevel == GameRunLevel.InRound) + { + ticker.StartGameRule(ruleEntity); + _sawmill.Info($"Started game rule {body.GameRuleId} by {FormatLogActor(actor)}."); + } + + await RespondOk(context); + }); + } + + /// + /// Kicks a player. + /// + private async Task ActionKick(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + if (!_playerManager.TryGetSessionById(new NetUserId(body.Guid), out var player)) + { + await RespondError( + context, + ErrorCode.PlayerNotFound, + HttpStatusCode.UnprocessableContent, + "Player not found"); + return; + } + + var reason = body.Reason ?? "No reason supplied"; + reason += " (kicked by admin)"; + + _netManager.DisconnectChannel(player.Channel, reason); + await RespondOk(context); + + _sawmill.Info($"Kicked player {player.Name} ({player.UserId}) for {reason} by {FormatLogActor(actor)}"); + }); + } + + private async Task ActionRoundStart(IStatusHandlerContext context, Actor actor) + { + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + + if (ticker.RunLevel != GameRunLevel.PreRoundLobby) + { + await RespondError( + context, + ErrorCode.InvalidRoundState, + HttpStatusCode.Conflict, + "Round already started"); + return; + } + + ticker.StartRound(); + _sawmill.Info($"Forced round start by {FormatLogActor(actor)}"); + await RespondOk(context); + }); + } + + private async Task ActionRoundEnd(IStatusHandlerContext context, Actor actor) + { + await RunOnMainThread(async () => + { + var roundEndSystem = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); + + if (ticker.RunLevel != GameRunLevel.InRound) + { + await RespondError( + context, + ErrorCode.InvalidRoundState, + HttpStatusCode.Conflict, + "Round is not active"); + return; + } + + roundEndSystem.EndRound(); + _sawmill.Info($"Forced round end by {FormatLogActor(actor)}"); + await RespondOk(context); + }); + } + + private async Task ActionRoundRestartNow(IStatusHandlerContext context, Actor actor) + { + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + + ticker.RestartRound(); + _sawmill.Info($"Forced instant round restart by {FormatLogActor(actor)}"); + await RespondOk(context); + }); + } + + #endregion + + #region Fetching + + /// + /// Returns an array containing all available presets. + /// + private async Task GetPresets(IStatusHandlerContext context) + { + var presets = await RunOnMainThread(() => + { + var presets = new List(); + + foreach (var preset in _prototypeManager.EnumeratePrototypes()) + { + presets.Add(new PresetResponse.Preset + { + Id = preset.ID, + ModeTitle = _loc.GetString(preset.ModeTitle), + Description = _loc.GetString(preset.Description) + }); + } + + return presets; + }); + + await context.RespondJsonAsync(new PresetResponse + { + Presets = presets + }); + } + + /// + /// Returns an array containing all game rules. + /// + private async Task GetGameRules(IStatusHandlerContext context) + { + var gameRules = new List(); + foreach (var gameRule in _prototypeManager.EnumeratePrototypes()) + { + if (gameRule.Abstract) + continue; + + if (gameRule.HasComponent(_componentFactory)) + gameRules.Add(gameRule.ID); + } + + await context.RespondJsonAsync(new GameruleResponse + { + GameRules = gameRules + }); + } + + + /// + /// Handles fetching information. + /// + private async Task InfoHandler(IStatusHandlerContext context, Actor actor) + { + /* + Information to display + Round number + Connected players + Active admins + Active game rules + Active game preset + Active map + MOTD + Panic bunker status + */ + + var info = await RunOnMainThread(() => + { + var ticker = _entitySystemManager.GetEntitySystem(); + var adminSystem = _entitySystemManager.GetEntitySystem(); + + var players = new List(); + + foreach (var player in _playerManager.Sessions) + { + var adminData = _adminManager.GetAdminData(player, true); + + players.Add(new InfoResponse.Player + { + UserId = player.UserId.UserId, + Name = player.Name, + IsAdmin = adminData != null, + IsDeadminned = !adminData?.Active ?? false + }); + } + + InfoResponse.MapInfo? mapInfo = null; + if (_gameMapManager.GetSelectedMap() is { } mapPrototype) + { + mapInfo = new InfoResponse.MapInfo + { + Id = mapPrototype.ID, + Name = mapPrototype.MapName + }; + } + + var gameRules = new List(); + foreach (var addedGameRule in ticker.GetActiveGameRules()) + { + var meta = _entityManager.MetaQuery.GetComponent(addedGameRule); + gameRules.Add(meta.EntityPrototype?.ID ?? meta.EntityPrototype?.Name ?? "Unknown"); + } + + var panicBunkerCVars = PanicBunkerCVars.ToDictionary(c => c, c => _config.GetCVar(c)); + return new InfoResponse + { + Players = players, + RoundId = ticker.RoundId, + Map = mapInfo, + PanicBunker = panicBunkerCVars, + GamePreset = ticker.CurrentPreset?.ID, + GameRules = gameRules, + MOTD = _config.GetCVar(CCVars.MOTD) + }; + }); + + await context.RespondJsonAsync(info); + } + + #endregion + + private async Task CheckAccess(IStatusHandlerContext context) + { + var auth = context.RequestHeaders.TryGetValue("Authorization", out var authToken); + if (!auth) + { + await RespondError( + context, + ErrorCode.AuthenticationNeeded, + HttpStatusCode.Unauthorized, + "Authorization is required"); + return false; + } + + var authHeaderValue = authToken.ToString(); + var spaceIndex = authHeaderValue.IndexOf(' '); + if (spaceIndex == -1) + { + await RespondBadRequest(context, "Invalid Authorization header value"); + return false; + } + + var authScheme = authHeaderValue[..spaceIndex]; + var authValue = authHeaderValue[spaceIndex..].Trim(); + + if (authScheme != SS14TokenScheme) + { + await RespondBadRequest(context, "Invalid Authorization scheme"); + return false; + } + + if (_token == "") + { + _sawmill.Debug("No authorization token set for admin API"); + } + else if (CryptographicOperations.FixedTimeEquals( + Encoding.UTF8.GetBytes(authValue), + Encoding.UTF8.GetBytes(_token))) + { + return true; + } + + await RespondError( + context, + ErrorCode.AuthenticationInvalid, + HttpStatusCode.Unauthorized, + "Authorization is invalid"); + + // Invalid auth header, no access + _sawmill.Info($"Unauthorized access attempt to admin API from {context.RemoteEndPoint}"); + return false; + } + + private async Task CheckActor(IStatusHandlerContext context) + { + // The actor is JSON encoded in the header + var actor = context.RequestHeaders.TryGetValue("Actor", out var actorHeader) ? actorHeader.ToString() : null; + if (actor == null) + { + await RespondBadRequest(context, "Actor must be supplied"); + return null; + } + + Actor? actorData; + try + { + actorData = JsonSerializer.Deserialize(actor); + if (actorData == null) + { + await RespondBadRequest(context, "Actor is null"); + return null; + } + } + catch (JsonException exception) + { + await RespondBadRequest(context, "Actor field JSON is invalid", ExceptionData.FromException(exception)); + return null; + } + + return actorData; + } + + #region From Client + + private sealed class Actor + { + public required Guid Guid { get; init; } + public required string Name { get; init; } + } + + private sealed class KickActionBody + { + public required Guid Guid { get; init; } + public string? Reason { get; init; } + } + + private sealed class GameRuleActionBody + { + public required string GameRuleId { get; init; } + } + + private sealed class PresetActionBody + { + public required string PresetId { get; init; } + } + + private sealed class MotdActionBody + { + public required string Motd { get; init; } + } + + #endregion + + #region Responses + + private record BaseResponse( + string Message, + ErrorCode ErrorCode = ErrorCode.None, + ExceptionData? Exception = null); + + private record ExceptionData(string Message, string? StackTrace = null) + { + public static ExceptionData FromException(Exception e) + { + return new ExceptionData(e.Message, e.StackTrace); + } + } + + private enum ErrorCode + { + None = 0, + AuthenticationNeeded = 1, + AuthenticationInvalid = 2, + InvalidRoundState = 3, + PlayerNotFound = 4, + GameRuleNotFound = 5, + BadRequest = 6, + } + + #endregion + + #region Misc + + /// + /// Record used to send the response for the info endpoint. + /// + private sealed class InfoResponse + { + public required int RoundId { get; init; } + public required List Players { get; init; } + public required List GameRules { get; init; } + public required string? GamePreset { get; init; } + public required MapInfo? Map { get; init; } + public required string? MOTD { get; init; } + public required Dictionary PanicBunker { get; init; } + + public sealed class Player + { + public required Guid UserId { get; init; } + public required string Name { get; init; } + public required bool IsAdmin { get; init; } + public required bool IsDeadminned { get; init; } + } + + public sealed class MapInfo + { + public required string Id { get; init; } + public required string Name { get; init; } + } + } + + private sealed class PresetResponse + { + public required List Presets { get; init; } + + public sealed class Preset + { + public required string Id { get; init; } + public required string Description { get; init; } + public required string ModeTitle { get; init; } + } + } + + private sealed class GameruleResponse + { + public required List GameRules { get; init; } + } + + #endregion +} diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index c3c024174a..b7ca4e915b 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -61,7 +61,7 @@ namespace Content.Server.Administration.Systems public IReadOnlySet RoundActivePlayers => _roundActivePlayers; private readonly HashSet _roundActivePlayers = new(); - private readonly PanicBunkerStatus _panicBunker = new(); + public readonly PanicBunkerStatus PanicBunker = new(); public override void Initialize() { @@ -240,7 +240,7 @@ namespace Content.Server.Administration.Systems private void OnPanicBunkerChanged(bool enabled) { - _panicBunker.Enabled = enabled; + PanicBunker.Enabled = enabled; _chat.SendAdminAlert(Loc.GetString(enabled ? "admin-ui-panic-bunker-enabled-admin-alert" : "admin-ui-panic-bunker-disabled-admin-alert" @@ -251,52 +251,52 @@ namespace Content.Server.Administration.Systems private void OnPanicBunkerDisableWithAdminsChanged(bool enabled) { - _panicBunker.DisableWithAdmins = enabled; + PanicBunker.DisableWithAdmins = enabled; UpdatePanicBunker(); } private void OnPanicBunkerEnableWithoutAdminsChanged(bool enabled) { - _panicBunker.EnableWithoutAdmins = enabled; + PanicBunker.EnableWithoutAdmins = enabled; UpdatePanicBunker(); } private void OnPanicBunkerCountDeadminnedAdminsChanged(bool enabled) { - _panicBunker.CountDeadminnedAdmins = enabled; + PanicBunker.CountDeadminnedAdmins = enabled; UpdatePanicBunker(); } private void OnShowReasonChanged(bool enabled) { - _panicBunker.ShowReason = enabled; + PanicBunker.ShowReason = enabled; SendPanicBunkerStatusAll(); } private void OnPanicBunkerMinAccountAgeChanged(int minutes) { - _panicBunker.MinAccountAgeHours = minutes / 60; + PanicBunker.MinAccountAgeHours = minutes / 60; SendPanicBunkerStatusAll(); } private void OnPanicBunkerMinOverallHoursChanged(int hours) { - _panicBunker.MinOverallHours = hours; + PanicBunker.MinOverallHours = hours; SendPanicBunkerStatusAll(); } private void UpdatePanicBunker() { - var admins = _panicBunker.CountDeadminnedAdmins + var admins = PanicBunker.CountDeadminnedAdmins ? _adminManager.AllAdmins : _adminManager.ActiveAdmins; var hasAdmins = admins.Any(); - if (hasAdmins && _panicBunker.DisableWithAdmins) + if (hasAdmins && PanicBunker.DisableWithAdmins) { _config.SetCVar(CCVars.PanicBunkerEnabled, false); } - else if (!hasAdmins && _panicBunker.EnableWithoutAdmins) + else if (!hasAdmins && PanicBunker.EnableWithoutAdmins) { _config.SetCVar(CCVars.PanicBunkerEnabled, true); } @@ -306,7 +306,7 @@ namespace Content.Server.Administration.Systems private void SendPanicBunkerStatusAll() { - var ev = new PanicBunkerChangedEvent(_panicBunker); + var ev = new PanicBunkerChangedEvent(PanicBunker); foreach (var admin in _adminManager.AllAdmins) { RaiseNetworkEvent(ev, admin); diff --git a/Content.Server/Audio/AmbientSoundSystem.cs b/Content.Server/Audio/AmbientSoundSystem.cs index b8cabbef41..aa2c656a86 100644 --- a/Content.Server/Audio/AmbientSoundSystem.cs +++ b/Content.Server/Audio/AmbientSoundSystem.cs @@ -2,6 +2,7 @@ using Content.Server.CrystallPunk.Temperature; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Audio; +using Content.Shared.Mobs; namespace Content.Server.Audio; diff --git a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs index bb2ab4099d..2e7f8c4235 100644 --- a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs +++ b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs @@ -225,13 +225,16 @@ public sealed class CryostorageSystem : SharedCryostorageSystem if (!TryComp(station, out var stationRecords)) return; - var key = new StationRecordKey(_stationRecords.GetRecordByName(station.Value, name) ?? default(uint), station.Value); - var jobName = "Unknown"; + var jobName = Loc.GetString("earlyleave-cryo-job-unknown"); + var recordId = _stationRecords.GetRecordByName(station.Value, name); + if (recordId != null) + { + var key = new StationRecordKey(recordId.Value, station.Value); + if (_stationRecords.TryGetRecord(key, out var entry, stationRecords)) + jobName = entry.JobTitle; - if (_stationRecords.TryGetRecord(key, out var entry, stationRecords)) - jobName = entry.JobTitle; - - _stationRecords.RemoveRecord(key, stationRecords); + _stationRecords.RemoveRecord(key, stationRecords); + } _chatSystem.DispatchStationAnnouncement(station.Value, Loc.GetString( diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs index efec18485c..9ffe944486 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs @@ -3,7 +3,7 @@ using Content.Server.StationRecords.Systems; using Content.Shared.CriminalRecords; using Content.Shared.Security; using Content.Shared.StationRecords; -using Robust.Shared.Timing; +using Content.Server.GameTicking; namespace Content.Server.CriminalRecords.Systems; @@ -17,7 +17,7 @@ namespace Content.Server.CriminalRecords.Systems; /// public sealed class CriminalRecordsSystem : EntitySystem { - [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly GameTicker _ticker = default!; [Dependency] private readonly StationRecordsSystem _stationRecords = default!; public override void Initialize() @@ -71,7 +71,7 @@ public sealed class CriminalRecordsSystem : EntitySystem /// public bool TryAddHistory(StationRecordKey key, string line) { - var entry = new CrimeHistory(_timing.CurTime, line); + var entry = new CrimeHistory(_ticker.RoundDuration(), line); return TryAddHistory(key, entry); } diff --git a/Content.Server/Database/DatabaseRecords.cs b/Content.Server/Database/DatabaseRecords.cs index 460a6c8222..c0d81147bb 100644 --- a/Content.Server/Database/DatabaseRecords.cs +++ b/Content.Server/Database/DatabaseRecords.cs @@ -123,6 +123,6 @@ public sealed record PlayerRecord( IPAddress LastSeenAddress, ImmutableArray? HWId); -public sealed record RoundRecord(int Id, DateTimeOffset StartDate, ServerRecord Server); +public sealed record RoundRecord(int Id, DateTimeOffset? StartDate, ServerRecord Server); public sealed record ServerRecord(int Id, string Name); diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index ad72e16d9f..67b29209a3 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -696,7 +696,7 @@ namespace Content.Server.Database await db.DbContext.SaveChangesAsync(cancel); } - public virtual async Task AddNewRound(Server server, params Guid[] playerIds) + public async Task AddNewRound(Server server, params Guid[] playerIds) { await using var db = await GetDb(); diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index 46886fe4d1..88ecf82002 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -452,34 +452,6 @@ namespace Content.Server.Database return (admins.Select(p => (p.a, p.LastSeenUserName)).ToArray(), adminRanks)!; } - public override async Task AddNewRound(Server server, params Guid[] playerIds) - { - await using var db = await GetDb(); - - var players = await db.DbContext.Player - .Where(player => playerIds.Contains(player.UserId)) - .ToListAsync(); - - var nextId = 1; - if (await db.DbContext.Round.AnyAsync()) - { - nextId = db.DbContext.Round.Max(round => round.Id) + 1; - } - - var round = new Round - { - Id = nextId, - Players = players, - ServerId = server.Id - }; - - db.DbContext.Round.Add(round); - - await db.DbContext.SaveChangesAsync(); - - return round.Id; - } - protected override IQueryable StartAdminLogsQuery(ServerDbContext db, LogFilter? filter = null) { IQueryable query = db.AdminLog; diff --git a/Content.Server/Entry/EntryPoint.cs b/Content.Server/Entry/EntryPoint.cs index bf7f3ea84a..3cdf3bfe8e 100644 --- a/Content.Server/Entry/EntryPoint.cs +++ b/Content.Server/Entry/EntryPoint.cs @@ -102,6 +102,7 @@ namespace Content.Server.Entry IoCManager.Resolve().Initialize(); IoCManager.Resolve().Initialize(); IoCManager.Resolve().Initialize(); + IoCManager.Resolve().Initialize(); _voteManager.Initialize(); _updateManager.Initialize(); @@ -167,6 +168,7 @@ namespace Content.Server.Entry { _playTimeTracking?.Shutdown(); _dbManager?.Shutdown(); + IoCManager.Resolve().Shutdown(); } private static void LoadConfigPresets(IConfigurationManager cfg, IResourceManager res, ISawmill sawmill) diff --git a/Content.Server/IoC/ServerContentIoC.cs b/Content.Server/IoC/ServerContentIoC.cs index 2a63ace8e3..25bb1072a5 100644 --- a/Content.Server/IoC/ServerContentIoC.cs +++ b/Content.Server/IoC/ServerContentIoC.cs @@ -58,6 +58,7 @@ namespace Content.Server.IoC IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); + IoCManager.Register(); } } } diff --git a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs index 2caab4063c..3c1e89b1f2 100644 --- a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs @@ -1,5 +1,7 @@ using Content.Server.Body.Systems; using Content.Server.Kitchen.Components; +using Content.Server.Nutrition.EntitySystems; +using Content.Shared.Body.Components; using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; using Content.Shared.Database; @@ -11,9 +13,14 @@ using Content.Shared.Storage; using Content.Shared.Verbs; using Content.Shared.Destructible; using Content.Shared.DoAfter; +using Content.Shared.Interaction; using Content.Shared.Kitchen; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; +using Content.Shared.Nutrition.Components; +using Content.Shared.Popups; +using Content.Shared.Storage; +using Content.Shared.Verbs; using Robust.Server.Containers; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -35,7 +42,7 @@ public sealed class SharpSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnAfterInteract, before: new[] { typeof(UtensilSystem) }); + SubscribeLocalEvent(OnAfterInteract, before: [typeof(UtensilSystem)]); SubscribeLocalEvent(OnDoAfter); SubscribeLocalEvent>(OnGetInteractionVerbs); @@ -43,16 +50,14 @@ public sealed class SharpSystem : EntitySystem private void OnAfterInteract(EntityUid uid, SharpComponent component, AfterInteractEvent args) { - if (args.Handled) + if (args.Handled || args.Target is null || !args.CanReach) return; - if (args.Target is null || !args.CanReach) - return; - - args.Handled = TryStartButcherDoAfter(uid, args.Target.Value, args.User); + if (TryStartButcherDoafter(uid, args.Target.Value, args.User)) + args.Handled = true; } - private bool TryStartButcherDoAfter(EntityUid knife, EntityUid target, EntityUid user) + private bool TryStartButcherDoafter(EntityUid knife, EntityUid target, EntityUid user) { if (!TryComp(target, out var butcher)) return false; @@ -66,11 +71,11 @@ public sealed class SharpSystem : EntitySystem if (butcher.Type != ButcheringType.Knife && target != user) { _popupSystem.PopupEntity(Loc.GetString("butcherable-different-tool", ("target", target)), knife, user); - return true; + return false; } if (!sharp.Butchering.Add(target)) - return true; + return false; var doAfter = new DoAfterArgs(EntityManager, user, sharp.ButcherDelayModifier * butcher.ButcherDelay, new SharpDoAfterEvent(), knife, target: target, used: knife) @@ -165,7 +170,7 @@ public sealed class SharpSystem : EntitySystem Act = () => { if (!disabled) - TryStartButcherDoAfter(args.Using!.Value, args.Target, args.User); + TryStartButcherDoafter(args.Using!.Value, args.Target, args.User); }, Message = message, Disabled = disabled, diff --git a/Content.Server/Labels/Label/LabelSystem.cs b/Content.Server/Labels/Label/LabelSystem.cs index 59a1a3b213..dd4ba1f718 100644 --- a/Content.Server/Labels/Label/LabelSystem.cs +++ b/Content.Server/Labels/Label/LabelSystem.cs @@ -84,10 +84,7 @@ namespace Content.Server.Labels { _itemSlotsSystem.AddItemSlot(uid, ContainerName, component.LabelSlot); - if (!EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance)) - return; - - _appearance.SetData(uid, PaperLabelVisuals.HasLabel, false, appearance); + UpdateAppearance((uid, component)); } private void OnComponentRemove(EntityUid uid, PaperLabelComponent component, ComponentRemove args) @@ -131,10 +128,18 @@ namespace Content.Server.Labels if (args.Container.ID != label.LabelSlot.ID) return; - if (!EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance)) + UpdateAppearance((uid, label)); + } + + private void UpdateAppearance(Entity ent) + { + if (!Resolve(ent, ref ent.Comp2, false)) return; - _appearance.SetData(uid, PaperLabelVisuals.HasLabel, label.LabelSlot.HasItem, appearance); + var slot = ent.Comp1.LabelSlot; + _appearance.SetData(ent, PaperLabelVisuals.HasLabel, slot.HasItem, ent.Comp2); + if (TryComp(slot.Item, out var type)) + _appearance.SetData(ent, PaperLabelVisuals.LabelType, type.PaperType, ent.Comp2); } } } diff --git a/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs b/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs index 0edd0711b6..43087214a4 100644 --- a/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs @@ -1,12 +1,11 @@ using Content.Shared.Containers.ItemSlots; using Content.Server.Nutrition.Components; -using Content.Shared.Nutrition.Components; -using Content.Shared.Nutrition.EntitySystems; using Content.Server.Popups; using Content.Shared.Interaction; +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; -using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.Nutrition.EntitySystems @@ -34,10 +33,7 @@ namespace Content.Server.Nutrition.EntitySystems /// private void OnAfterInteract(EntityUid uid, UtensilComponent component, AfterInteractEvent ev) { - if (ev.Handled) - return; - - if (ev.Target == null || !ev.CanReach) + if (ev.Handled || ev.Target == null || !ev.CanReach) return; var result = TryUseUtensil(ev.User, ev.Target.Value, component); diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index 237ca33a4d..d1163a2be1 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -126,5 +126,10 @@ namespace Content.Server.Popups RaiseNetworkEvent(new PopupEntityEvent(message, type, GetNetEntity(uid))); } } + + public override void PopupPredicted(string? recipientMessage, string? othersMessage, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small) + { + PopupPredicted(othersMessage, uid, recipient, type); + } } } diff --git a/Content.Server/Sound/EmitSoundSystem.cs b/Content.Server/Sound/EmitSoundSystem.cs index 5b9620990e..fc10d951e7 100644 --- a/Content.Server/Sound/EmitSoundSystem.cs +++ b/Content.Server/Sound/EmitSoundSystem.cs @@ -40,7 +40,6 @@ public sealed class EmitSoundSystem : SharedEmitSoundSystem SubscribeLocalEvent(HandleEmitSoundOnTrigger); SubscribeLocalEvent(HandleEmitSoundOnUIOpen); - SubscribeLocalEvent(HandleSpamEmitSoundMapInit); } diff --git a/Content.Server/Station/Components/StationRandomTransformComponent.cs b/Content.Server/Station/Components/StationRandomTransformComponent.cs new file mode 100644 index 0000000000..ea0fc5f269 --- /dev/null +++ b/Content.Server/Station/Components/StationRandomTransformComponent.cs @@ -0,0 +1,16 @@ +using Content.Server.Station.Systems; + +namespace Content.Server.Station.Components; + +/// +/// Stores station parameters that can be randomized by the roundstart +/// +[RegisterComponent, Access(typeof(StationSystem))] +public sealed partial class StationRandomTransformComponent : Component +{ + [DataField] + public float? MaxStationOffset = 100.0f; + + [DataField] + public bool EnableStationRotation = true; +} diff --git a/Content.Server/Station/Systems/StationSystem.cs b/Content.Server/Station/Systems/StationSystem.cs index 492f15c8e2..408b3ebc55 100644 --- a/Content.Server/Station/Systems/StationSystem.cs +++ b/Content.Server/Station/Systems/StationSystem.cs @@ -1,9 +1,10 @@ using System.Linq; +using System.Numerics; using Content.Server.Chat.Systems; using Content.Server.GameTicking; using Content.Server.Station.Components; using Content.Server.Station.Events; -using Content.Shared.CCVar; +using Content.Shared.Fax; using Content.Shared.Station; using JetBrains.Annotations; using Robust.Server.GameObjects; @@ -49,17 +50,12 @@ public sealed class StationSystem : EntitySystem _sawmill = _logManager.GetSawmill("station"); SubscribeLocalEvent(OnRoundEnd); - SubscribeLocalEvent(OnPreGameMapLoad); SubscribeLocalEvent(OnPostGameMapLoad); SubscribeLocalEvent(OnStationAdd); SubscribeLocalEvent(OnStationDeleted); SubscribeLocalEvent(OnStationGridDeleted); SubscribeLocalEvent(OnStationSplitEvent); - Subs.CVar(_configurationManager, CCVars.StationOffset, x => _randomStationOffset = x, true); - Subs.CVar(_configurationManager, CCVars.MaxStationOffset, x => _maxRandomStationOffset = x, true); - Subs.CVar(_configurationManager, CCVars.StationRotation, x => _randomStationRotation = x, true); - _player.PlayerStatusChanged += OnPlayerStatusChanged; } @@ -112,19 +108,6 @@ public sealed class StationSystem : EntitySystem RaiseNetworkEvent(new StationsUpdatedEvent(GetStationNames()), Filter.Broadcast()); } - private void OnPreGameMapLoad(PreGameMapLoad ev) - { - // this is only for maps loaded during round setup! - if (_gameTicker.RunLevel == GameRunLevel.InRound) - return; - - if (_randomStationOffset) - ev.Options.Offset += _random.NextVector2(_maxRandomStationOffset); - - if (_randomStationRotation) - ev.Options.Rotation = _random.NextAngle(); - } - private void OnPostGameMapLoad(PostGameMapLoad ev) { var dict = new Dictionary>(); @@ -311,6 +294,8 @@ public sealed class StationSystem : EntitySystem // Use overrides for setup. var station = EntityManager.SpawnEntity(stationConfig.StationPrototype, MapCoordinates.Nullspace, stationConfig.StationComponentOverrides); + + if (name is not null) RenameStation(station, name, false); @@ -319,11 +304,48 @@ public sealed class StationSystem : EntitySystem var data = Comp(station); name ??= MetaData(station).EntityName; - foreach (var grid in gridIds ?? Array.Empty()) + var entry = gridIds ?? Array.Empty(); + + foreach (var grid in entry) { AddGridToStation(station, grid, null, data, name); } + if (TryComp(station, out var random)) + { + Angle? rotation = null; + Vector2? offset = null; + + if (random.MaxStationOffset != null) + offset = _random.NextVector2(-random.MaxStationOffset.Value, random.MaxStationOffset.Value); + + if (random.EnableStationRotation) + rotation = _random.NextAngle(); + + foreach (var grid in entry) + { + //planetary maps give an error when trying to change from position or rotation. + //This is still the case, but it will be irrelevant after the https://github.com/space-wizards/space-station-14/pull/26510 + if (rotation != null && offset != null) + { + var pos = _transform.GetWorldPosition(grid); + _transform.SetWorldPositionRotation(grid, pos + offset.Value, rotation.Value); + continue; + } + if (rotation != null) + { + _transform.SetWorldRotation(grid, rotation.Value); + continue; + } + if (offset != null) + { + var pos = _transform.GetWorldPosition(grid); + _transform.SetWorldPosition(grid, pos + offset.Value); + continue; + } + } + } + var ev = new StationPostInitEvent((station, data)); RaiseLocalEvent(station, ref ev, true); diff --git a/Content.Shared/Audio/SharedAmbientSoundSystem.cs b/Content.Shared/Audio/SharedAmbientSoundSystem.cs index 5f17261825..0a52b7c58e 100644 --- a/Content.Shared/Audio/SharedAmbientSoundSystem.cs +++ b/Content.Shared/Audio/SharedAmbientSoundSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Mobs; using Robust.Shared.Audio; using Robust.Shared.GameStates; @@ -12,6 +13,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(GetCompState); SubscribeLocalEvent(HandleCompState); + _query = GetEntityQuery(); } diff --git a/Content.Shared/Audio/SoundWhileAliveComponent.cs b/Content.Shared/Audio/SoundWhileAliveComponent.cs new file mode 100644 index 0000000000..977d9372ce --- /dev/null +++ b/Content.Shared/Audio/SoundWhileAliveComponent.cs @@ -0,0 +1,10 @@ +using Content.Shared.Sound.Components; +using Robust.Shared.GameStates; + +namespace Content.Shared.Audio; + +/// +/// Toggles and off when this entity's MobState isn't Alive. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class SoundWhileAliveComponent : Component; diff --git a/Content.Shared/Burial/BurialSystem.cs b/Content.Shared/Burial/BurialSystem.cs index ccf5f1a298..326272cc7d 100644 --- a/Content.Shared/Burial/BurialSystem.cs +++ b/Content.Shared/Burial/BurialSystem.cs @@ -116,8 +116,9 @@ public sealed class BurialSystem : EntitySystem { if (used != null) { - _popupSystem.PopupClient(Loc.GetString("grave-start-digging-user", ("grave", uid), ("tool", used)), user, user); - _popupSystem.PopupEntity(Loc.GetString("grave-start-digging-others", ("user", user), ("grave", uid), ("tool", used)), user, Filter.PvsExcept(user), true); + var selfMessage = Loc.GetString("grave-start-digging-user", ("grave", uid), ("tool", used)); + var othersMessage = Loc.GetString("grave-start-digging-others", ("user", user), ("grave", uid), ("tool", used)); + _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); component.ActiveShovelDigging = true; Dirty(uid, component); } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 72f7526651..c787e01471 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -229,25 +229,6 @@ namespace Content.Shared.CCVar public static readonly CVarDef GameCryoSleepRejoining = CVarDef.Create("game.cryo_sleep_rejoining", false, CVar.SERVER | CVar.REPLICATED); - /// - /// Whether a random position offset will be applied to the station on roundstart. - /// - public static readonly CVarDef StationOffset = - CVarDef.Create("game.station_offset", true); - - /// - /// When the default blueprint is loaded what is the maximum amount it can be offset from 0,0. - /// Does nothing without as true. - /// - public static readonly CVarDef MaxStationOffset = - CVarDef.Create("game.maxstationoffset", 1000.0f); - - /// - /// Whether a random rotation will be applied to the station on roundstart. - /// - public static readonly CVarDef StationRotation = - CVarDef.Create("game.station_rotation", true); - /// /// When enabled, guests will be assigned permanent UIDs and will have their preferences stored. /// @@ -776,6 +757,13 @@ namespace Content.Shared.CCVar public static readonly CVarDef AdminAnnounceLogout = CVarDef.Create("admin.announce_logout", true, CVar.SERVERONLY); + /// + /// The token used to authenticate with the admin API. Leave empty to disable the admin API. This is a secret! Do not share! + /// + public static readonly CVarDef AdminApiToken = + CVarDef.Create("admin.api_token", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// /// Should users be able to see their own notes? Admins will be able to see and set notes regardless /// diff --git a/Content.Shared/Climbing/Systems/BonkSystem.cs b/Content.Shared/Climbing/Systems/BonkSystem.cs index 4fe2661aff..ea4e04c621 100644 --- a/Content.Shared/Climbing/Systems/BonkSystem.cs +++ b/Content.Shared/Climbing/Systems/BonkSystem.cs @@ -57,9 +57,11 @@ public sealed partial class BonkSystem : EntitySystem if (user == source) { // Non-local, non-bonking players - _popupSystem.PopupEntity(Loc.GetString("bonkable-success-message-others", ("user", userName), ("bonkable", bonkableName)), user, Filter.PvsExcept(user), true); + var othersMessage = Loc.GetString("bonkable-success-message-others", ("user", userName), ("bonkable", bonkableName)); // Local, bonking player - _popupSystem.PopupClient(Loc.GetString("bonkable-success-message-user", ("user", userName), ("bonkable", bonkableName)), user, user); + var selfMessage = Loc.GetString("bonkable-success-message-user", ("user", userName), ("bonkable", bonkableName)); + + _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); } else if (source != null) { diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 5471f07250..1bdaecf730 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -307,8 +307,7 @@ public sealed partial class ClimbSystem : VirtualController ("climbable", climbable)); } - _popupSystem.PopupEntity(othersMessage, uid, Filter.PvsExcept(user, entityManager: EntityManager), true); - _popupSystem.PopupClient(selfMessage, uid, user); + _popupSystem.PopupPredicted(selfMessage, othersMessage, uid, user); } /// diff --git a/Content.Shared/Clothing/Components/WaddleWhenWornComponent.cs b/Content.Shared/Clothing/Components/WaddleWhenWornComponent.cs new file mode 100644 index 0000000000..5cd7a72457 --- /dev/null +++ b/Content.Shared/Clothing/Components/WaddleWhenWornComponent.cs @@ -0,0 +1,35 @@ +using System.Numerics; + +namespace Content.Shared.Clothing.Components; + +/// +/// Defines something as causing waddling when worn. +/// +[RegisterComponent] +public sealed partial class WaddleWhenWornComponent : Component +{ + /// + /// How high should they hop during the waddle? Higher hop = more energy. + /// + [DataField] + public Vector2 HopIntensity = new(0, 0.25f); + + /// + /// How far should they rock backward and forward during the waddle? + /// Each step will alternate between this being a positive and negative rotation. More rock = more scary. + /// + [DataField] + public float TumbleIntensity = 20.0f; + + /// + /// How long should a complete step take? Less time = more chaos. + /// + [DataField] + public float AnimationLength = 0.66f; + + /// + /// How much shorter should the animation be when running? + /// + [DataField] + public float RunAnimationLengthMultiplier = 0.568f; +} diff --git a/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs new file mode 100644 index 0000000000..b045a6af3b --- /dev/null +++ b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Labels.Components; + +/// +/// Specifies the paper type (see textures/storage/crates/labels.rsi to see currently supported paper types) to show on crates this label is attached to. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class PaperLabelTypeComponent : Component +{ + /// + /// The type of label to show. + /// + [DataField] + public string PaperType = "Paper"; +} diff --git a/Content.Shared/Labels/LabelEvents.cs b/Content.Shared/Labels/LabelEvents.cs index 362500b768..9f00354af2 100644 --- a/Content.Shared/Labels/LabelEvents.cs +++ b/Content.Shared/Labels/LabelEvents.cs @@ -13,9 +13,11 @@ namespace Content.Shared.Labels } [Serializable, NetSerializable] - public enum PaperLabelVisuals + public enum PaperLabelVisuals : byte { + Layer, HasLabel, + LabelType } /// diff --git a/Content.Shared/Movement/Components/WaddleAnimationComponent.cs b/Content.Shared/Movement/Components/WaddleAnimationComponent.cs new file mode 100644 index 0000000000..c43ef3042e --- /dev/null +++ b/Content.Shared/Movement/Components/WaddleAnimationComponent.cs @@ -0,0 +1,72 @@ +using System.Numerics; + +namespace Content.Shared.Movement.Components; + +/// +/// Declares that an entity has started to waddle like a duck/clown. +/// +/// The newly be-waddled. +[ByRefEvent] +public record struct StartedWaddlingEvent(EntityUid Entity) +{ + public EntityUid Entity = Entity; +} + +/// +/// Declares that an entity has stopped waddling like a duck/clown. +/// +/// The former waddle-er. +[ByRefEvent] +public record struct StoppedWaddlingEvent(EntityUid Entity) +{ + public EntityUid Entity = Entity; +} + +/// +/// Defines something as having a waddle animation when it moves. +/// +[RegisterComponent] +public sealed partial class WaddleAnimationComponent : Component +{ + /// + /// What's the name of this animation? Make sure it's unique so it can play along side other animations. + /// This prevents someone accidentally causing two identical waddling effects to play on someone at the same time. + /// + [DataField] + public string KeyName = "Waddle"; + + /// + /// How high should they hop during the waddle? Higher hop = more energy. + /// + [DataField] + public Vector2 HopIntensity = new(0, 0.25f); + + /// + /// How far should they rock backward and forward during the waddle? + /// Each step will alternate between this being a positive and negative rotation. More rock = more scary. + /// + [DataField] + public float TumbleIntensity = 20.0f; + + /// + /// How long should a complete step take? Less time = more chaos. + /// + [DataField] + public float AnimationLength = 0.66f; + + /// + /// How much shorter should the animation be when running? + /// + [DataField] + public float RunAnimationLengthMultiplier = 0.568f; + + /// + /// Stores which step we made last, so if someone cancels out of the animation mid-step then restarts it looks more natural. + /// + public bool LastStep; + + /// + /// Stores if we're currently waddling so we can start/stop as appropriate and can tell other systems our state. + /// + public bool IsCurrentlyWaddling; +} diff --git a/Content.Shared/Popups/SharedPopupSystem.cs b/Content.Shared/Popups/SharedPopupSystem.cs index b199884afb..10e8ca9be1 100644 --- a/Content.Shared/Popups/SharedPopupSystem.cs +++ b/Content.Shared/Popups/SharedPopupSystem.cs @@ -94,6 +94,12 @@ namespace Content.Shared.Popups /// will do nothing and the server will show the message to every player in PVS range. /// public abstract void PopupPredicted(string? message, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small); + + /// + /// Variant of that displays + /// to the recipient and to everyone else in PVS range. + /// + public abstract void PopupPredicted(string? recipientMessage, string? othersMessage, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small); } /// diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index f172060ded..974755f000 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -230,13 +230,19 @@ public class RCDSystem : EntitySystem // Exit if the RCD prototype has changed if (component.ProtoId != args.Event.StartingProtoId) + { + args.Cancel(); return; + } // Ensure the RCD operation is still valid var location = GetCoordinates(args.Event.Location); if (!TryGetMapGridData(location, out var mapGridData)) + { + args.Cancel(); return; + } if (!IsRCDOperationStillValid(uid, component, mapGridData.Value, args.Event.Target, args.Event.User)) args.Cancel(); diff --git a/Content.Shared/Sound/SharedEmitSoundSystem.cs b/Content.Shared/Sound/SharedEmitSoundSystem.cs index 329626964e..a9a50698d7 100644 --- a/Content.Shared/Sound/SharedEmitSoundSystem.cs +++ b/Content.Shared/Sound/SharedEmitSoundSystem.cs @@ -1,7 +1,10 @@ +using Content.Shared.Audio; using Content.Shared.Hands; +using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Maps; +using Content.Shared.Mobs; using Content.Shared.Popups; using Content.Shared.Sound.Components; using Content.Shared.Throwing; @@ -28,7 +31,8 @@ public abstract class SharedEmitSoundSystem : EntitySystem [Dependency] private readonly INetManager _netMan = default!; [Dependency] private readonly ITileDefinitionManager _tileDefMan = default!; [Dependency] protected readonly IRobustRandom Random = default!; - [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + [Dependency] private readonly SharedAmbientSoundSystem _ambient = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] protected readonly SharedPopupSystem Popup = default!; public override void Initialize() @@ -44,6 +48,20 @@ public abstract class SharedEmitSoundSystem : EntitySystem SubscribeLocalEvent(OnEmitSoundOnInteractUsing); SubscribeLocalEvent(OnEmitSoundOnCollide); + + SubscribeLocalEvent(OnMobState); + } + + private void OnMobState(Entity entity, ref MobStateChangedEvent args) + { + // Disable this component rather than removing it because it can be brought back to life. + if (TryComp(entity, out var comp)) + { + comp.Enabled = args.NewMobState == MobState.Alive; + Dirty(entity.Owner, comp); + } + + _ambient.SetAmbience(entity.Owner, args.NewMobState != MobState.Dead); } private void OnEmitSpawnOnInit(EntityUid uid, EmitSoundOnSpawnComponent component, MapInitEvent args) diff --git a/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs index 58c5fec2d8..ce96639e3c 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs @@ -17,4 +17,20 @@ public sealed partial class GunWieldBonusComponent : Component /// [ViewVariables(VVAccess.ReadWrite), DataField("maxAngle"), AutoNetworkedField] public Angle MaxAngle = Angle.FromDegrees(-43); + + /// + /// Recoil bonuses applied upon being wielded. + /// Higher angle decay bonus, quicker recovery. + /// Lower angle increase bonus (negative numbers), slower buildup. + /// + [DataField, AutoNetworkedField] + public Angle AngleDecay = Angle.FromDegrees(0); + + /// + /// Recoil bonuses applied upon being wielded. + /// Higher angle decay bonus, quicker recovery. + /// Lower angle increase bonus (negative numbers), slower buildup. + /// + [DataField, AutoNetworkedField] + public Angle AngleIncrease = Angle.FromDegrees(0); } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs index 57db1d2b9c..9eb290ab65 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs @@ -1,7 +1,6 @@ using Content.Shared.Examine; using Content.Shared.Interaction.Events; using Content.Shared.Verbs; -using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Containers; @@ -13,6 +12,7 @@ public abstract partial class SharedGunSystem protected virtual void InitializeMagazine() { + SubscribeLocalEvent(OnMagazineMapInit); SubscribeLocalEvent(OnMagazineTakeAmmo); SubscribeLocalEvent(OnMagazineAmmoCount); SubscribeLocalEvent>(OnMagazineVerb); @@ -22,6 +22,11 @@ public abstract partial class SharedGunSystem SubscribeLocalEvent(OnMagazineExamine); } + private void OnMagazineMapInit(Entity ent, ref MapInitEvent args) + { + MagazineSlotChanged(ent); + } + private void OnMagazineExamine(EntityUid uid, MagazineAmmoProviderComponent component, ExaminedEvent args) { if (!args.IsInDetailsRange) @@ -62,16 +67,21 @@ public abstract partial class SharedGunSystem if (MagazineSlot != args.Container.ID) return; - UpdateAmmoCount(uid); - if (!TryComp(uid, out var appearance)) + MagazineSlotChanged((uid, component)); + } + + private void MagazineSlotChanged(Entity ent) + { + UpdateAmmoCount(ent); + if (!TryComp(ent, out var appearance)) return; - var magEnt = GetMagazineEntity(uid); - Appearance.SetData(uid, AmmoVisuals.MagLoaded, magEnt != null, appearance); + var magEnt = GetMagazineEntity(ent); + Appearance.SetData(ent, AmmoVisuals.MagLoaded, magEnt != null, appearance); if (magEnt != null) { - UpdateMagazineAppearance(uid, component, magEnt.Value); + UpdateMagazineAppearance(ent, ent, magEnt.Value); } } diff --git a/Content.Shared/Wieldable/WieldableSystem.cs b/Content.Shared/Wieldable/WieldableSystem.cs index 9fe76c625b..6bd406c1ca 100644 --- a/Content.Shared/Wieldable/WieldableSystem.cs +++ b/Content.Shared/Wieldable/WieldableSystem.cs @@ -90,6 +90,8 @@ public sealed class WieldableSystem : EntitySystem { args.MinAngle += bonus.Comp.MinAngle; args.MaxAngle += bonus.Comp.MaxAngle; + args.AngleDecay += bonus.Comp.AngleDecay; + args.AngleIncrease += bonus.Comp.AngleIncrease; } } @@ -195,8 +197,9 @@ public sealed class WieldableSystem : EntitySystem && !_delay.TryResetDelay((used, useDelay), true)) return false; - _popupSystem.PopupClient(Loc.GetString("wieldable-component-successful-wield", ("item", used)), user, user); - _popupSystem.PopupEntity(Loc.GetString("wieldable-component-successful-wield-other", ("user", user), ("item", used)), user, Filter.PvsExcept(user), true); + var selfMessage = Loc.GetString("wieldable-component-successful-wield", ("item", used)); + var othersMessage = Loc.GetString("wieldable-component-successful-wield-other", ("user", user), ("item", used)); + _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); var targEv = new ItemWieldedEvent(); RaiseLocalEvent(used, ref targEv); @@ -239,10 +242,9 @@ public sealed class WieldableSystem : EntitySystem if (component.UnwieldSound != null) _audioSystem.PlayPredicted(component.UnwieldSound, uid, args.User); - _popupSystem.PopupClient(Loc.GetString("wieldable-component-failed-wield", - ("item", uid)), args.User.Value, args.User.Value); - _popupSystem.PopupEntity(Loc.GetString("wieldable-component-failed-wield-other", - ("user", args.User.Value), ("item", uid)), args.User.Value, Filter.PvsExcept(args.User.Value), true); + var selfMessage = Loc.GetString("wieldable-component-failed-wield", ("item", uid)); + var othersMessage = Loc.GetString("wieldable-component-failed-wield-other", ("user", args.User.Value), ("item", uid)); + _popupSystem.PopupPredicted(selfMessage, othersMessage, args.User.Value, args.User.Value); } _appearance.SetData(uid, WieldableVisuals.Wielded, false); diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8a4c345ae7..9bb7095fd1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,94 +1,4 @@ Entries: -- author: Jajsha - changes: - - message: Emagged borgs now recieve laws recontextualizing who's a crew member - instead of recieving a completely new lawset. - type: Tweak - id: 5843 - time: '2024-02-01T05:02:49.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24698 -- author: PJB3005 - changes: - - message: Health analyzers now show if somebody is starving. - type: Add - id: 5844 - time: '2024-02-01T06:28:17.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24789 -- author: PixelTK - changes: - - message: The arachnid plushie now has a new sprite. - type: Tweak - id: 5845 - time: '2024-02-01T06:36:43.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24747 -- author: lzk228 - changes: - - message: Yellow oxygen tank was removed to standardise gas tank colourings. - type: Remove - id: 5846 - time: '2024-02-01T06:53:33.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24374 -- author: koteq - changes: - - message: Fixed indicator near SSD players - type: Fix - id: 5847 - time: '2024-02-01T08:30:07.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24589 -- author: TheShuEd - changes: - - message: Anomaly generator can now only be used by a scientist. - type: Tweak - id: 5848 - time: '2024-02-01T08:45:24.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24464 -- author: PJB3005 - changes: - - message: Removed starvation damage - type: Remove - id: 5849 - time: '2024-02-01T09:01:52.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24790 -- author: SlamBamActionman - changes: - - message: The Visitor job can now be given to ID cards via the ID Card Console/Agent - IDs. - type: Add - id: 5850 - time: '2024-02-01T10:13:44.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23972 -- author: Dygon - changes: - - message: When slipping on lube you now keep sliding until you reach a tile without - lube. - type: Tweak - id: 5851 - time: '2024-02-01T10:39:10.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24801 -- author: FungiFellow - changes: - - message: Added Binary Key in RD's Locker - type: Add - - message: 50% off Binary Key - type: Tweak - id: 5852 - time: '2024-02-01T10:42:12.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24778 -- author: Dygon - changes: - - message: Paraplegic entities have their legs healed when zombified. - type: Fix - id: 5853 - time: '2024-02-01T11:06:05.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24169 -- author: PJB3005 - changes: - - message: The AME can now single-handedly power the entire station until one of - our cool coders gets their shit together and fixes engineering. - type: Fix - id: 5854 - time: '2024-02-01T11:06:52.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24806 - author: Varen changes: - message: Cutting wires will now properly electrocute if enough power is available. @@ -3828,3 +3738,104 @@ id: 6342 time: '2024-04-13T15:36:05.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26499 +- author: Boaz1111 + changes: + - message: The doors on the ice expedition map can now be accessed by anyone instead + of... botanists. + type: Fix + id: 6343 + time: '2024-04-13T20:49:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26928 +- author: Tayrtahn + changes: + - message: Placing a player with no entry in the manifest into cryostorage no longer + removes the captain from the crew manifest. + type: Fix + id: 6344 + time: '2024-04-14T02:19:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26927 +- author: superjj18 + changes: + - message: Honkbot's basic AI has been restored and honks have returned to being + at random intervals! + type: Fix + id: 6345 + time: '2024-04-14T02:51:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26939 +- author: GreaseMonk + changes: + - message: Added StopsWhenEntityDead property to audio components + type: Add + id: 6346 + time: '2024-04-14T03:12:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26905 +- author: DrSmugleaf + changes: + - message: Fixed rocket launchers and laser guns looking like they have nothing + loaded. + type: Fix + id: 6347 + time: '2024-04-14T03:17:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26933 +- author: Vermidia + changes: + - message: You can now see paper attached on crates. Color differs depending on + the paper used. + type: Add + - message: The labels on bodybags also have different colors depending on the paper + used. + type: Tweak + - message: Cargo Invoices are now blueish (to differentiate them from Cargo Bounties) + type: Tweak + id: 6348 + time: '2024-04-14T03:39:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26834 +- author: Terraspark4941 + changes: + - message: Autism pins have been added to maintenance loot! + type: Add + id: 6349 + time: '2024-04-14T05:35:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25597 +- author: Flareguy + changes: + - message: Colored jumpsuits, shoes, and (most) colored gloves are now colorized + off of one set of greyscale sprites. They should now be more consistent & significantly + less ugly. + type: Tweak + id: 6350 + time: '2024-04-14T08:41:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26943 +- author: BramvanZijp + changes: + - message: Nanotrasen's Small Arms Division has slightly improved the firerate and + drastically improved the accuracy on its WT550 SMGs. + type: Tweak + - message: The WT550 and C-20R SMGs can now fire in a 5 round burst-fire mode, making + it easier for their users to control the recoil on these weapons. + type: Add + id: 6351 + time: '2024-04-14T08:51:07.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26886 +- author: Dutch-VanDerLinde + changes: + - message: Holoparasites and holoclowns will now phase through projectiles such + as bullets, like a holocarp. + type: Tweak + id: 6352 + time: '2024-04-14T08:52:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26862 +- author: Tyzemol + changes: + - message: Board game crate now comes with character sheets + type: Add + id: 6353 + time: '2024-04-14T08:54:40.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26926 +- author: FairlySadPanda + changes: + - message: Clown shoes make you waddle, as God intended. + type: Add + id: 6354 + time: '2024-04-14T12:12:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26338 diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 6c838abb85..7be6ba13e0 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, CrafterKolyan, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mephisto72, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nails-n-Tape, Nairodian, Naive817, NakataRin, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, Nylux, OctoRocket, OldDanceJacket, OliverOtter, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, Phill101, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, Putnam3145, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, RIKELOLDABOSS, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, CrafterKolyan, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mephisto72, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nails-n-Tape, Nairodian, Naive817, NakataRin, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, Nylux, OctoRocket, OldDanceJacket, OliverOtter, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, Phill101, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, Putnam3145, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem diff --git a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl index 8de5f9019b..500a530562 100644 --- a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl +++ b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl @@ -1,5 +1,6 @@  ### Announcement +earlyleave-cryo-job-unknown = Unknown earlyleave-cryo-announcement = {$character} ({$job}) has entered cryogenic storage! earlyleave-cryo-sender = Station diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml index 72cf6c447c..c52e13bd13 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml @@ -180,6 +180,8 @@ - id: GrassBattlemap - id: DiceBag amount: 6 + - id: PaperCNCSheet + amount: 6 - type: entity id: CrateFunSadTromboneImplants diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml b/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml index 2038ef0013..4e885a08b2 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml @@ -38,7 +38,7 @@ amount: 3 - id: ClothingUniformRandomArmless amount: 5 - - id: ClothingUniformRandomStandart + - id: ClothingUniformRandomStandard amount: 5 - id: ClothingUniformRandomBra amount: 5 diff --git a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml index 38472e3901..02cf0ab6f6 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml @@ -34,3 +34,13 @@ spawned: - id: MaterialCloth1 amount: 1 + +# gloves that cover the fingertips and have synthetic fibers +- type: entity + abstract: true + parent: ClothingHandsButcherable + id: ClothingHandsGlovesSyntheticBase + components: + - type: Fiber + fiberMaterial: fibers-synthetic + - type: FingerprintMask diff --git a/Resources/Prototypes/Entities/Clothing/Hands/colored.yml b/Resources/Prototypes/Entities/Clothing/Hands/colored.yml index 4a78bd0a99..0fa298b648 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/colored.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/colored.yml @@ -1,13 +1,8 @@ -# gloves that cover the fingertips and have synthetic fibers -- type: entity - abstract: true - parent: ClothingHandsButcherable - id: ClothingHandsGlovesSyntheticBase - components: - - type: Fiber - fiberMaterial: fibers-synthetic - - type: FingerprintMask +#DO NOT MAKE THESE THE SAME COLOR AS THE JUMPSUIT. It is going to cause contrast issues for those wearing the full set of color clothing and is almost definitely going to look worse. +#If you want to make it similar to the jumpsuit color, it should be slightly off. +#P.S: Most of these just use the shoe colors, so they end up having a nice "secondary" color when wearing the full set of color clothing. +# Purple Gloves - type: entity parent: ClothingHandsGlovesSyntheticBase id: ClothingHandsGlovesColorPurple @@ -15,12 +10,28 @@ description: Regular purple gloves that do not keep you from frying. components: - type: Sprite - sprite: Clothing/Hands/Gloves/Color/purple.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#9C0DE1" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9C0DE1" + right: + - state: inhand-right + color: "#9C0DE1" - type: Clothing - sprite: Clothing/Hands/Gloves/Color/purple.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#9C0DE1" - type: Fiber fiberColor: fibers-purple +# Red Gloves - type: entity parent: ClothingHandsGlovesSyntheticBase id: ClothingHandsGlovesColorRed @@ -28,12 +39,232 @@ description: Regular red gloves that do not keep you from frying. components: - type: Sprite - sprite: Clothing/Hands/Gloves/Color/red.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#940000" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#940000" + right: + - state: inhand-right + color: "#940000" - type: Clothing - sprite: Clothing/Hands/Gloves/Color/red.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#940000" - type: Fiber fiberColor: fibers-red +# Blue Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorBlue + name: blue gloves + description: Regular blue gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#0089EF" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#0089EF" + right: + - state: inhand-right + color: "#0089EF" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#0089EF" + - type: Fiber + fiberColor: fibers-blue + +# Brown Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorBrown + name: brown gloves + description: Regular brown gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#723A02" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#723A02" + right: + - state: inhand-right + color: "#723A02" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#723A02" + - type: Fiber + fiberColor: fibers-brown + +# Grey Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorGray + name: grey gloves + description: Regular grey gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#999999" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#999999" + right: + - state: inhand-right + color: "#999999" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#999999" + - type: Fiber + fiberColor: fibers-grey + +# Green Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorGreen + name: green gloves + description: Regular green gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#5ABF2F" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#5ABF2F" + right: + - state: inhand-right + color: "#5ABF2F" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#5ABF2F" + - type: Fiber + fiberColor: fibers-green + +# Light Brown Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorLightBrown + name: light brown gloves + description: Regular light brown gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#C09F72" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#C09F72" + right: + - state: inhand-right + color: "#C09F72" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#C09F72" + - type: Fiber + fiberColor: fibers-brown + +# Orange Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorOrange + name: orange gloves + description: Regular orange gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#EF8100" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EF8100" + right: + - state: inhand-right + color: "#EF8100" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#EF8100" + - type: Fiber + fiberColor: fibers-orange + +# White Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorWhite + name: white gloves + description: Regular white gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#EAE8E8" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EAE8E8" + right: + - state: inhand-right + color: "#EAE8E8" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#EAE8E8" + - type: Fiber + fiberColor: fibers-white + +# Black Gloves +# TECHNICALLY, if you ported the worn state to the RSI, this could be greyscaled, but I do not really feel like doing that. - type: entity parent: ClothingHandsGlovesSyntheticBase id: ClothingHandsGlovesColorBlack @@ -42,6 +273,14 @@ components: - type: Sprite sprite: Clothing/Hands/Gloves/Color/black.rsi + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#535353" + right: + - state: inhand-right + color: "#535353" - type: Clothing sprite: Clothing/Hands/Gloves/Color/black.rsi - type: GloveHeatResistance @@ -53,97 +292,8 @@ - type: Fiber fiberColor: fibers-black -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorBlue - name: blue gloves - description: Regular blue gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/blue.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/blue.rsi - - type: Fiber - fiberColor: fibers-blue - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorBrown - name: brown gloves - description: Regular brown gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/brown.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/brown.rsi - - type: Fiber - fiberColor: fibers-brown - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorGray - name: grey gloves - description: Regular grey gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/gray.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/gray.rsi - - type: Fiber - fiberColor: fibers-grey - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorGreen - name: green gloves - description: Regular green gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/green.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/green.rsi - - type: Fiber - fiberColor: fibers-green - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorLightBrown - name: light brown gloves - description: Regular light brown gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/lightbrown.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/lightbrown.rsi - - type: Fiber - fiberColor: fibers-brown - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorOrange - name: orange gloves - description: Regular orange gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/orange.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/orange.rsi - - type: Fiber - fiberColor: fibers-orange - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorWhite - name: white gloves - description: Those gloves look fancy. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/white.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/white.rsi - - type: Fiber - fiberColor: fibers-white - +# Insulated Gloves (Yellow Gloves) +# Currently can not be greyscaled without looking like shit. - type: entity parent: ClothingHandsBase id: ClothingHandsGlovesColorYellow @@ -166,6 +316,7 @@ fiberMaterial: fibers-insulative fiberColor: fibers-yellow +# Budget Insulated Gloves - type: entity parent: ClothingHandsGlovesColorYellow id: ClothingHandsGlovesColorYellowBudget @@ -192,6 +343,7 @@ - 3.5 - 4 +# Conductive Insulated Gloves - type: entity parent: ClothingHandsGlovesColorYellow id: ClothingHandsGlovesConducting diff --git a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml index 0d22a653db..0054a3645c 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml @@ -151,3 +151,35 @@ clothingVisuals: neck: - state: trans-equipped + +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckAutismPin + name: autism pin + description: be autism do crime + components: + - type: Sprite + sprite: Clothing/Neck/Misc/autismpin.rsi + layers: + - state: autism + - type: Clothing + sprite: Clothing/Neck/Misc/autismpin.rsi + clothingVisuals: + neck: + - state: autism-equipped + +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckGoldAutismPin + name: golden autism pin + description: be autism do warcrime + components: + - type: Sprite + sprite: Clothing/Neck/Misc/goldautismpin.rsi + layers: + - state: goldautism + - type: Clothing + sprite: Clothing/Neck/Misc/goldautismpin.rsi + clothingVisuals: + neck: + - state: goldautism-equipped diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/color.yml b/Resources/Prototypes/Entities/Clothing/Shoes/color.yml index 0bfe153b59..16608aacc9 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/color.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/color.yml @@ -1,3 +1,6 @@ +# DO NOT ARBITRARILY CHANGE THESE TO MAKE THEM "CONSISTENT" WITH THE COLOR JUMPSUITS. You are probably just going to make them look worse. + +# Black Shoes - type: entity parent: ClothingShoesBaseButcherable id: ClothingShoesColorBlack @@ -5,76 +8,30 @@ description: Stylish black shoes. components: - type: Sprite - sprite: Clothing/Shoes/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#3f3f3f" #Different from the worn state for contrast reasons. + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: soles-inhand-right - type: Clothing - sprite: Clothing/Shoes/Color/black.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorBlue - name: blue shoes - description: Stylish blue shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/blue.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/blue.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorBrown - name: brown shoes - description: A pair of brown shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/brown.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/brown.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorGreen - name: green shoes - description: Stylish green shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/green.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/green.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorOrange - name: orange shoes - description: Stylish orange shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/orange.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/orange.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorPurple - name: purple shoes - description: Stylish purple shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/purple.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/purple.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorRed - name: red shoes - description: Stylish red shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/red.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/red.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#1d1d1d" + - state: soles-equipped-FEET +# White Shoes - type: entity parent: ClothingShoesBaseButcherable id: ClothingShoesColorWhite @@ -82,10 +39,183 @@ description: Don't take them off at your office Christmas party. components: - type: Sprite - sprite: Clothing/Shoes/Color/white.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#EAE8E8" #Deliberately NOT pure white + - state: soles-icon + - type: Item + inhandVisuals: #We don't want the sole icons. Since this is white, it's just going to look weird (white on white doesn't really contrast.) + left: + - state: inhand-left + color: "#EAE8E8" + right: + - state: inhand-right + color: "#EAE8E8" - type: Clothing - sprite: Clothing/Shoes/Color/white.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#EAE8E8" + - state: contrastedsoles-equipped-FEET +# Blue Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorBlue + name: blue shoes + description: Stylish blue shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#0089EF" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#0089EF" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#0089EF" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#0089EF" + - state: soles-equipped-FEET + +# Brown Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorBrown + name: brown shoes + description: A pair of brown shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#723A02" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#723A02" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#723A02" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#592D01" + - state: soles-equipped-FEET + +# Green Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorGreen + name: green shoes + description: Stylish green shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#5ABF2F" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#5ABF2F" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#5ABF2F" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#5ABF2F" + - state: soles-equipped-FEET + +# Orange Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorOrange + name: orange shoes + description: Stylish orange shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#EF8100" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EF8100" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#EF8100" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#EF8100" + - state: soles-equipped-FEET + +# Red Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorRed + name: red shoes + description: Stylish red shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#940000" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#940000" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#940000" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#940000" + - state: soles-equipped-FEET + +# Yellow Shoes - type: entity parent: ClothingShoesBaseButcherable id: ClothingShoesColorYellow @@ -93,6 +223,56 @@ description: Stylish yellow shoes. components: - type: Sprite - sprite: Clothing/Shoes/Color/yellow.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#EBE216" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EBE216" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#EBE216" + - state: soles-inhand-right - type: Clothing - sprite: Clothing/Shoes/Color/yellow.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#EBE216" + - state: soles-equipped-FEET + +# Purple Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorPurple + name: purple shoes + description: Stylish purple shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#9C0DE1" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9C0DE1" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#9C0DE1" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#9C0DE1" + - state: soles-equipped-FEET \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml index 4b9cbeef42..987eda582e 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml @@ -15,6 +15,7 @@ parent: [ClothingShoesBaseButcherable, ClothingSlotBase] id: ClothingShoesClownBase components: + - type: WaddleWhenWorn - type: ItemSlots slots: item: @@ -157,9 +158,28 @@ - type: Tag tags: [] # ignore "WhitelistChameleon" tag - type: Sprite - sprite: Clothing/Shoes/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: soles-icon - type: Clothing - sprite: Clothing/Shoes/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#1d1d1d" + - state: soles-equipped-FEET + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: soles-inhand-right - type: ChameleonClothing slot: [FEET] default: ClothingShoesColorBlack diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml new file mode 100644 index 0000000000..1f77059841 --- /dev/null +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml @@ -0,0 +1,491 @@ +# White Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorWhite + name: white jumpskirt + description: A generic white jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + - state: trinkets-inhand-left + right: + - state: inhand-right + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + - state: trinkets-equipped-INNERCLOTHING + +# Grey Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorGrey + name: grey jumpskirt + description: A tasteful grey jumpskirt that reminds you of the good old days. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#b3b3b3" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#b3b3b3" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#b3b3b3" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#b3b3b3" + - state: trinkets-equipped-INNERCLOTHING + +# Black Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorBlack + name: black jumpskirt + description: A generic black jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3f3f3f" + - state: trinkets-equipped-INNERCLOTHING + +# Blue Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorBlue + name: blue jumpskirt + description: A generic blue jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#52aecc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#52aecc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#52aecc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#52aecc" + - state: trinkets-equipped-INNERCLOTHING + +# Dark Blue Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorDarkBlue + name: dark blue jumpskirt + description: A generic dark blue jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#3285ba" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3285ba" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3285ba" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3285ba" + - state: trinkets-equipped-INNERCLOTHING + +# Teal Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorTeal + name: teal jumpskirt + description: A generic teal jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#77f3b7" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#77f3b7" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#77f3b7" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#77f3b7" + - state: trinkets-equipped-INNERCLOTHING + +# Green Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorGreen + name: green jumpskirt + description: A generic green jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#9ed63a" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9ed63a" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9ed63a" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9ed63a" + - state: trinkets-equipped-INNERCLOTHING + + # Dark Green Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorDarkGreen + name: dark green jumpskirt + description: A generic dark green jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#79CC26" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#79CC26" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#79CC26" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#79CC26" + - state: trinkets-equipped-INNERCLOTHING + +# Orange Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorOrange + name: orange jumpskirt + description: Don't wear this near paranoid security officers. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ff8c19" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8c19" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ff8c19" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8c19" + - state: trinkets-equipped-INNERCLOTHING + +# Pink Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorPink + name: pink jumpskirt + description: Just looking at this makes you feel fabulous. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ffa69b" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffa69b" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffa69b" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffa69b" + - state: trinkets-equipped-INNERCLOTHING + +# Red Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorRed + name: red jumpskirt + description: A generic red jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#eb0c07" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#eb0c07" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#eb0c07" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#eb0c07" + - state: trinkets-equipped-INNERCLOTHING + +# Yellow Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorYellow + name: yellow jumpskirt + description: A generic yellow jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ffe14d" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffe14d" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffe14d" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffe14d" + - state: trinkets-equipped-INNERCLOTHING + +# Purple Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorPurple + name: purple jumpskirt + description: A generic light purple jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#9f70cc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9f70cc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9f70cc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9f70cc" + - state: trinkets-equipped-INNERCLOTHING + +# Light Brown Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorLightBrown + name: light brown jumpskirt + description: A generic light brown jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#c59431" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#c59431" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#c59431" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#c59431" + - state: trinkets-equipped-INNERCLOTHING + +# Brown Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorBrown + name: brown jumpskirt + description: A generic brown jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#a17229" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#a17229" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#a17229" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#a17229" + - state: trinkets-equipped-INNERCLOTHING + +# Maroon Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorMaroon + name: maroon jumpskirt + description: A generic maroon jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#cc295f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#cc295f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#cc295f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#cc295f" + - state: trinkets-equipped-INNERCLOTHING diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml new file mode 100644 index 0000000000..f56afabeac --- /dev/null +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml @@ -0,0 +1,503 @@ +# White Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorWhite + name: white jumpsuit + description: A generic white jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + - state: trinkets-inhand-left + right: + - state: inhand-right + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + - state: trinkets-equipped-INNERCLOTHING + +# Grey Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorGrey + name: grey jumpsuit + description: A tasteful grey jumpsuit that reminds you of the good old days. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#b3b3b3" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#b3b3b3" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#b3b3b3" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#b3b3b3" + - state: trinkets-equipped-INNERCLOTHING + +# Black Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorBlack + name: black jumpsuit + description: A generic black jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3f3f3f" + - state: trinkets-equipped-INNERCLOTHING + +# Blue Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorBlue + name: blue jumpsuit + description: A generic blue jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#52aecc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#52aecc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#52aecc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#52aecc" + - state: trinkets-equipped-INNERCLOTHING + +# Dark Blue Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorDarkBlue + name: dark blue jumpsuit + description: A generic dark blue jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#3285ba" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3285ba" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3285ba" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3285ba" + - state: trinkets-equipped-INNERCLOTHING + +# Teal Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorTeal + name: teal jumpsuit + description: A generic teal jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#77f3b7" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#77f3b7" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#77f3b7" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#77f3b7" + - state: trinkets-equipped-INNERCLOTHING + +# Green Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorGreen + name: green jumpsuit + description: A generic green jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#9ed63a" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9ed63a" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9ed63a" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9ed63a" + - state: trinkets-equipped-INNERCLOTHING + + # Dark Green Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorDarkGreen + name: dark green jumpsuit + description: A generic dark green jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#79CC26" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#79CC26" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#79CC26" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#79CC26" + - state: trinkets-equipped-INNERCLOTHING + +# Orange Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorOrange + name: orange jumpsuit + description: Don't wear this near paranoid security officers. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ff8c19" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8c19" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ff8c19" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8c19" + - state: trinkets-equipped-INNERCLOTHING + +# Pink Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorPink + name: pink jumpsuit + description: Just looking at this makes you feel fabulous. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ffa69b" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffa69b" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffa69b" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffa69b" + - state: trinkets-equipped-INNERCLOTHING + +# Red Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorRed + name: red jumpsuit + description: A generic red jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#eb0c07" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#eb0c07" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#eb0c07" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#eb0c07" + - state: trinkets-equipped-INNERCLOTHING + +# Yellow Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorYellow + name: yellow jumpsuit + description: A generic yellow jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ffe14d" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffe14d" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffe14d" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffe14d" + - state: trinkets-equipped-INNERCLOTHING + +# Purple Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorPurple + name: purple jumpsuit + description: A generic light purple jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#9f70cc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9f70cc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9f70cc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9f70cc" + - state: trinkets-equipped-INNERCLOTHING + +# Light Brown Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorLightBrown + name: light brown jumpsuit + description: A generic light brown jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#c59431" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#c59431" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#c59431" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#c59431" + - state: trinkets-equipped-INNERCLOTHING + +# Brown Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorBrown + name: brown jumpsuit + description: A generic brown jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#a17229" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#a17229" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#a17229" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#a17229" + - state: trinkets-equipped-INNERCLOTHING + +# Maroon Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorMaroon + name: maroon jumpsuit + description: A generic maroon jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#cc295f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#cc295f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#cc295f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#cc295f" + - state: trinkets-equipped-INNERCLOTHING + +# Rainbow Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformColorRainbow + name: rainbow jumpsuit + description: A multi-colored jumpsuit! + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index 5573deb314..50d84e30eb 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -263,15 +263,34 @@ sprite: Clothing/Uniforms/Jumpskirt/brigmedic.rsi - type: entity - parent: ClothingUniformSkirtBase + parent: ClothingUniformBase id: ClothingUniformJumpskirtPrisoner name: prisoner jumpskirt description: Busted. components: - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/prisoner.rsi + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ff8300" + - state: prisoner-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8300" + - state: prisoner-inhand-left + right: + - state: inhand-right + color: "#ff8300" + - state: prisoner-inhand-right - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/prisoner.rsi + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8300" + - state: prisoner-equipped-INNERCLOTHING - type: SuitSensor controlsLocked: true randomMode: false @@ -279,8 +298,8 @@ - type: Tag tags: - ClothMade - - WhitelistChameleon - PrisonUniform + - WhitelistChameleon - type: entity parent: ClothingUniformSkirtBase @@ -359,184 +378,6 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpskirt/warden.rsi -# COLORS - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorGrey - description: A tasteful grey jumpskirt that reminds you of the good old days. - name: grey jumpskirt - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/grey.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/grey.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorBlack - name: black jumpskirt - description: A generic black jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/black.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/black.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorBlue - name: blue jumpskirt - description: A generic blue jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/blue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/blue.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorGreen - name: green jumpskirt - description: A generic green jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/green.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/green.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorOrange - name: orange jumpskirt - description: "Don't wear this near paranoid security officers." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/orange.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/orange.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorPink - name: pink jumpskirt - description: "Just looking at this makes you feel fabulous." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/pink.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/pink.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorRed - name: red jumpskirt - description: A generic red jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/red.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/red.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorWhite - name: white jumpskirt - description: A generic white jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/white.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/white.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorYellow - name: yellow jumpskirt - description: A generic yellow jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/yellow.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/yellow.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorDarkBlue - name: dark blue jumpskirt - description: A generic dark blue jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorTeal - name: teal jumpskirt - description: A generic teal jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/teal.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/teal.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorPurple - name: purple jumpskirt - description: A generic purple jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorDarkGreen - name: dark green jumpskirt - description: A generic dark green jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorLightBrown - name: light brown jumpskirt - description: A generic light brown jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorBrown - name: brown jumpskirt - description: A generic brown jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/brown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/brown.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorMaroon - name: maroon jumpskirt - description: A generic maroon jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/maroon.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/maroon.rsi - - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtLibrarian diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 5eba391786..ec160b54cb 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -458,9 +458,28 @@ description: Busted. components: - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/prisoner.rsi + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ff8300" + - state: prisoner-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8300" + - state: prisoner-inhand-left + right: + - state: inhand-right + color: "#ff8300" + - state: prisoner-inhand-right - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/prisoner.rsi + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8300" + - state: prisoner-equipped-INNERCLOTHING - type: SuitSensor controlsLocked: true randomMode: false @@ -592,195 +611,6 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/warden.rsi -# COLORS - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorGrey - description: A tasteful grey jumpsuit that reminds you of the good old days. - name: grey jumpsuit - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/grey.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/grey.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorBlack - name: black jumpsuit - description: A generic black jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorBlue - name: blue jumpsuit - description: A generic blue jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/blue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/blue.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorGreen - name: green jumpsuit - description: A generic green jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/green.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/green.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorOrange - name: orange jumpsuit - description: "Don't wear this near paranoid security officers." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/orange.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/orange.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorPink - name: pink jumpsuit - description: "Just looking at this makes you feel fabulous." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/pink.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/pink.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorRed - name: red jumpsuit - description: A generic red jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/red.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/red.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorWhite - name: white jumpsuit - description: A generic white jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/white.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/white.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorYellow - name: yellow jumpsuit - description: A generic yellow jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/yellow.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/yellow.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorDarkBlue - name: dark blue jumpsuit - description: A generic dark blue jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorTeal - name: teal jumpsuit - description: A generic teal jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/teal.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/teal.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorPurple - name: purple jumpsuit - description: A generic purple jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorDarkGreen - name: dark green jumpsuit - description: A generic dark green jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorLightBrown - name: light brown jumpsuit - description: A generic light brown jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorBrown - name: brown jumpsuit - description: A generic brown jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/brown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/brown.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorMaroon - name: maroon jumpsuit - description: A generic maroon jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/maroon.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/maroon.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformColorRainbow - name: rainbow jumpsuit - description: A multi-colored jumpsuit! - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi - - type: entity parent: ClothingUniformBase id: ClothingUniformOveralls diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml index 88278077b5..e113f0ffc7 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml @@ -10,9 +10,9 @@ - type: Sprite sprite: Clothing/Uniforms/procedural.rsi layers: - - state: base_torso_standart + - state: base_torso_standard map: [ "torso" ] - - state: base_leg_standart + - state: base_leg_standard map: [ "leg" ] - state: mask_null map: [ "decor" ] @@ -24,9 +24,9 @@ sprite: Clothing/Uniforms/procedural.rsi clothingVisuals: jumpsuit: - - state: base_torso_standart + - state: base_torso_standard map: [ "torso" ] - - state: base_leg_standart + - state: base_leg_standard map: [ "leg" ] - state: mask_null map: [ "decor" ] @@ -42,7 +42,7 @@ offset: 0 prototypes: - ClothingUniformRandomArmless - - ClothingUniformRandomStandart + - ClothingUniformRandomStandard - ClothingUniformRandomBra - ClothingUniformRandomShorts - ClothingUniformRandomShirt @@ -57,7 +57,7 @@ - torso: base_torso_armless: Sixteen leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -76,16 +76,16 @@ - type: entity parent: ClothingUniformRandom - id: ClothingUniformRandomStandart + id: ClothingUniformRandomStandard name: colorful costume components: - type: RandomSprite available: - torso: - base_torso_standart: Sixteen - base_torso_standart2: Sixteen + base_torso_standard: Sixteen + base_torso_standard2: Sixteen leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -100,15 +100,15 @@ decor_torso_armless8: Sixteen decor_torso_armless9: Sixteen decor_torso_armless10: Sixteen - decor_torso_standart1: Sixteen - decor_torso_standart2: Sixteen - decor_torso_standart3: Sixteen - decor_torso_standart4: Sixteen - decor_torso_standart5: Sixteen - decor_torso_standart6: Sixteen - decor_torso_standart7: Sixteen - decor_torso_standart8: Sixteen - decor_torso_standart9: Sixteen + decor_torso_standard1: Sixteen + decor_torso_standard2: Sixteen + decor_torso_standard3: Sixteen + decor_torso_standard4: Sixteen + decor_torso_standard5: Sixteen + decor_torso_standard6: Sixteen + decor_torso_standard7: Sixteen + decor_torso_standard8: Sixteen + decor_torso_standard9: Sixteen mask_null: "" - type: entity @@ -121,7 +121,7 @@ - torso: base_torso_bra: Sixteen leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -143,7 +143,7 @@ - torso: mask_null: "" leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -159,11 +159,11 @@ base_torso_armless: Sixteen mask_null: "" leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen decor: base_torso_shirt: Sixteen overlay: decor_torso_shirt1: Sixteen decor_torso_shirt2: Sixteen - decor_torso_shirt3: Sixteen \ No newline at end of file + decor_torso_shirt3: Sixteen diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml index d7a5e2b787..ad02f4aa67 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml @@ -8,9 +8,28 @@ - type: Tag tags: [] # ignore "WhitelistChameleon" tag - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: trinkets-inhand-right - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#1d1d1d" + - state: soles-equipped-FEET - type: SuitSensor randomMode: false mode: SensorOff diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml index 46a4dcaf7d..852fe020d3 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml @@ -66,6 +66,8 @@ - ClothingUniformJumpsuitPirate - ClothingShoesBootsCowboyFancy - ClothingHeadHatCowboyBountyHunter + - ClothingNeckAutismPin + - ClothingNeckGoldAutismPin rareChance: 0.01 prototypes: - Lighter diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 5263fefd44..9489fda5f0 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -114,11 +114,16 @@ description: Horrifying. components: - type: SpamEmitSound + minInterval: 2 + maxInterval: 12 sound: collection: BikeHorn - type: Sprite sprite: Mobs/Silicon/Bots/honkbot.rsi state: honkbot + - type: HTN + rootTask: + task: HonkbotCompound - type: Slippery launchForwardsMultiplier: 2 - type: Speech diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index c7cd40988d..ae4a370f9d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -66,7 +66,7 @@ mask: - FlyingMobMask layer: - - FlyingMobLayer + - Opaque - type: Damageable damageContainer: Biological - type: MobState @@ -86,6 +86,8 @@ animation: WeaponArcFist attackRate: 1.8 autoAttack: true + soundHit: + collection: Punch damage: types: Blunt: 20 @@ -227,6 +229,8 @@ angle: 30 animation: WeaponArcFist attackRate: 1.8 + soundHit: + collection: BikeHorn damage: types: Blunt: 5 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml index 06009b4d2f..1aeef4f066 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml @@ -5,5 +5,5 @@ description: "Like a cigar, but for tough teens. (WARNING:Pour only water into the vape)" components: - type: Sprite - sprite: Objects/Consumable/Smokeables/Vapes/vape-standart.rsi - state: icon \ No newline at end of file + sprite: Objects/Consumable/Smokeables/Vapes/vape-standard.rsi + state: icon diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 58457ebb7f..c6cc598f26 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -15,6 +15,7 @@ map: ["enum.PaperVisualLayers.Stamp"] visible: false - type: Paper + - type: PaperLabelType - type: ActivatableUI key: enum.PaperUiKey.Key closeOnHandDeselect: false @@ -143,6 +144,8 @@ - state: paper_stamp-generic map: ["enum.PaperVisualLayers.Stamp"] visible: false + - type: PaperLabelType + paperType: CaptainsPaper - type: PaperVisuals headerImagePath: "/Textures/Interface/Paper/paper_heading_captains_thoughts.svg.96dpi.png" backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png" @@ -160,19 +163,21 @@ sprite: Objects/Misc/bureaucracy.rsi layers: - state: paper - color: "#f7e574" + color: "#9ef5ff" - state: paper_words map: ["enum.PaperVisualLayers.Writing"] - color: "#f7e574" + color: "#9ef5ff" visible: false - state: paper_stamp-generic map: ["enum.PaperVisualLayers.Stamp"] visible: false + - type: PaperLabelType + paperType: Invoice - type: PaperVisuals backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png" contentImagePath: "/Textures/Interface/Paper/paper_content_lined.svg.96dpi.png" - backgroundModulate: "#f7e574" - contentImageModulate: "#f7e574" + backgroundModulate: "#9ef5ff" + contentImageModulate: "#9ef5ff" backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0 contentMargin: 16.0, 16.0, 16.0, 16.0 headerImagePath: "/Textures/Interface/Paper/paper_heading_cargo_invoice.svg.96dpi.png" @@ -184,6 +189,29 @@ name: bounty manifest description: A paper label designating a crate as containing a bounty. Selling a crate with this label will fulfill the bounty. components: + - type: Sprite + sprite: Objects/Misc/bureaucracy.rsi + layers: + - state: paper + color: "#f7e574" + - state: paper_words + map: ["enum.PaperVisualLayers.Writing"] + color: "#f7e574" + visible: false + - state: paper_stamp-generic + map: ["enum.PaperVisualLayers.Stamp"] + visible: false + - type: PaperLabelType + paperType: Bounty + - type: PaperVisuals + backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png" + contentImagePath: "/Textures/Interface/Paper/paper_content_lined.svg.96dpi.png" + backgroundModulate: "#f7e574" + contentImageModulate: "#f7e574" + backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0 + contentMargin: 16.0, 16.0, 16.0, 16.0 + headerImagePath: "/Textures/Interface/Paper/paper_heading_cargo_invoice.svg.96dpi.png" + headerMargin: 0.0, 12.0, 0.0, 0.0 - type: CargoBountyLabel - type: StaticPrice price: 0 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml index 2c48ef5da0..0656621465 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml @@ -17,8 +17,8 @@ visible: false - state: open_overlay map: ["enum.StorageVisualLayers.Door"] - - state: label_overlay - map: ["enum.BodyBagVisualLayers.Label"] + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Objects/Specific/Medical/Morgue/bodybags.rsi state: bag @@ -62,9 +62,15 @@ - type: GenericVisualizer visuals: enum.PaperLabelVisuals.HasLabel: - enum.BodyBagVisualLayers.Label: + enum.PaperLabelVisuals.Layer: True: {visible: true} False: {visible: false} + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } enum.FoldedVisuals.State: foldedLayer: True: {visible: true} diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml index 4abeea3812..c38868b399 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: CrateArtifactContainer parent: BaseStructureDynamic name: artifact container @@ -24,6 +24,8 @@ - state: locked map: ["enum.LockVisualLayers.Lock"] shader: unshaded + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: InteractionOutline - type: Physics - type: Fixtures @@ -73,6 +75,23 @@ - type: EntityStorageVisuals stateDoorOpen: artifact_container_open stateDoorClosed: artifact_container_door + - type: GenericVisualizer + visuals: + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } + enum.StorageVisuals.Open: + enum.PaperLabelVisuals.Layer: + True: { offset: "0.0,0.3125" } + False: { offset: "0.0,0.0" } + - type: LockVisuals - type: ItemSlots - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index 311a5d5106..96aff6df98 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -21,7 +21,7 @@ maxAngle: 16 fireRate: 8 angleIncrease: 3 - angleDecay: 16 + angleDecay: 16 selectedMode: FullAuto availableModes: - SemiAuto @@ -95,6 +95,11 @@ - type: Clothing sprite: Objects/Weapons/Guns/SMGs/c20r.rsi - type: Gun + shotsPerBurst: 5 + availableModes: + - SemiAuto + - Burst + - FullAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/c-20r.ogg - type: ChamberMagazineAmmoProvider @@ -222,9 +227,16 @@ - type: ChamberMagazineAmmoProvider boltClosed: null - type: Gun - fireRate: 5 + fireRate: 5.5 + minAngle: 1 + maxAngle: 6 + angleIncrease: 1.5 + angleDecay: 6 selectedMode: FullAuto + shotsPerBurst: 5 availableModes: + - SemiAuto + - Burst - FullAuto - type: ItemSlots slots: diff --git a/Resources/Prototypes/Entities/Stations/base.yml b/Resources/Prototypes/Entities/Stations/base.yml index c3fbb998b2..dcaa3d747a 100644 --- a/Resources/Prototypes/Entities/Stations/base.yml +++ b/Resources/Prototypes/Entities/Stations/base.yml @@ -4,6 +4,12 @@ components: - type: StationData +- type: entity + id: BaseRandomStation + abstract: true + components: + - type: StationRandomTransform + - type: entity id: BaseStationCargo abstract: true diff --git a/Resources/Prototypes/Entities/Stations/nanotrasen.yml b/Resources/Prototypes/Entities/Stations/nanotrasen.yml index ab885b03e5..7e650d536f 100644 --- a/Resources/Prototypes/Entities/Stations/nanotrasen.yml +++ b/Resources/Prototypes/Entities/Stations/nanotrasen.yml @@ -25,6 +25,7 @@ - BaseStationSiliconLawCrewsimov - BaseStationAllEventsEligible - BaseStationNanotrasen + - BaseRandomStation noSpawn: true components: - type: Transform diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index fa029c035a..2caa4010ca 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -53,18 +53,6 @@ components: - type: StorageFill contents: - - id: ClothingUniformRandomArmless - prob: 0.05 - orGroup: dressermainloot - - id: ClothingUniformRandomStandart - prob: 0.05 - orGroup: dressermainloot - - id: ClothingUniformRandomBra - prob: 0.05 - orGroup: dressermainloot - - id: ClothingUniformRandomShorts - prob: 0.05 - orGroup: dressermainloot - id: ClothingNeckLGBTPin prob: 0.06 orGroup: dressermainloot diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml index 403e20b43c..95580292d9 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml @@ -21,6 +21,9 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + map: ["enum.PaperLabelVisuals.Layer"] - type: InteractionOutline - type: Physics - type: Fixtures @@ -55,6 +58,18 @@ - type: EntityStorageVisuals stateDoorOpen: open stateDoorClosed: closed + - type: GenericVisualizer + visuals: + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } - type: PaperLabel labelSlot: insertVerbText: Attach Label @@ -106,6 +121,9 @@ - state: locked map: ["enum.LockVisualLayers.Lock"] shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + map: ["enum.PaperLabelVisuals.Layer"] - type: Damageable damageContainer: StructuralInorganic damageModifierSet: StructuralMetallic diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml index e55612d2c4..8d8eec9538 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml @@ -138,6 +138,9 @@ map: ["enum.StorageVisualLayers.Base"] - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + map: ["enum.PaperLabelVisuals.Layer"] - type: Construction graph: WebStructures node: crate @@ -320,6 +323,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.25,0.625" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/livestock.rsi state: base @@ -371,6 +378,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,0.125" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/cage.rsi - type: Destructible @@ -424,6 +435,10 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,-0.09375" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/piratechest.rsi state: crate_icon @@ -449,6 +464,8 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/toybox.rsi state: crate_icon @@ -465,6 +482,8 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/coffin.rsi state: base @@ -503,6 +522,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.28125,0.625" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/wooden_grave.rsi state: base @@ -547,6 +570,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.3125,0.5625" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/stone_grave.rsi state: base @@ -571,6 +598,17 @@ sprite: Structures/Storage/Crates/trashcart.rsi - type: Sprite sprite: Structures/Storage/Crates/trashcart.rsi + layers: + - state: base + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] - type: entity parent: CrateBaseSecure @@ -581,6 +619,20 @@ sprite: Structures/Storage/Crates/trashcart_jani.rsi - type: Sprite sprite: Structures/Storage/Crates/trashcart_jani.rsi + layers: + - state: base + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] - type: AccessReader access: [["Janitor"]] diff --git a/Resources/Prototypes/Maps/debug.yml b/Resources/Prototypes/Maps/debug.yml index 15561da2c1..c35a83fa17 100644 --- a/Resources/Prototypes/Maps/debug.yml +++ b/Resources/Prototypes/Maps/debug.yml @@ -24,6 +24,9 @@ Dev: stationProto: StandardNanotrasenStation components: + - type: StationRandomTransform + enableStationRotation: false + maxStationOffset: null - type: StationBiome - type: StationNameSetup mapNameTemplate: "Dev" diff --git a/Resources/Prototypes/Maps/europa.yml b/Resources/Prototypes/Maps/europa.yml index a47a63bdfa..fb9c15cad5 100644 --- a/Resources/Prototypes/Maps/europa.yml +++ b/Resources/Prototypes/Maps/europa.yml @@ -8,6 +8,9 @@ # Europa: # stationProto: StandardNanotrasenStation # components: +# - type: StationRandomTransform +# enableStationRotation: false +# maxStationOffset: null # - type: StationNameSetup # mapNameTemplate: '{0} Europa {1}' # nameGenerator: @@ -61,3 +64,4 @@ # Mime: [ 1, 1 ] # Musician: [ 1, 1 ] # Reporter: [ 1, 1 ] +# diff --git a/Resources/Prototypes/Maps/train.yml b/Resources/Prototypes/Maps/train.yml index 7673213dc1..244652e08b 100644 --- a/Resources/Prototypes/Maps/train.yml +++ b/Resources/Prototypes/Maps/train.yml @@ -8,6 +8,8 @@ # Train: # stationProto: StandardNanotrasenStation # components: +# - type: StationRandomTransform +# enableStationRotation: false # - type: StationNameSetup # mapNameTemplate: 'Train "Sentipode" {0}-{1}' # nameGenerator: diff --git a/Resources/Prototypes/NPCs/honkbot.yml b/Resources/Prototypes/NPCs/honkbot.yml new file mode 100644 index 0000000000..c9c925ac49 --- /dev/null +++ b/Resources/Prototypes/NPCs/honkbot.yml @@ -0,0 +1,6 @@ +- type: htnCompound + id: HonkbotCompound + branches: + - tasks: + - !type:HTNCompoundTask + task: IdleCompound diff --git a/Resources/Prototypes/Procedural/dungeon_configs.yml b/Resources/Prototypes/Procedural/dungeon_configs.yml index 9e8d3a4409..3614e4e787 100644 --- a/Resources/Prototypes/Procedural/dungeon_configs.yml +++ b/Resources/Prototypes/Procedural/dungeon_configs.yml @@ -292,11 +292,11 @@ - !type:JunctionPostGen width: 1 entities: - - AirlockHydroGlassLocked + - AirlockGlass - !type:JunctionPostGen entities: - - AirlockHydroGlassLocked + - AirlockGlass - !type:AutoCablingPostGen diff --git a/Resources/Prototypes/Recipes/Lathes/chemistry.yml b/Resources/Prototypes/Recipes/Lathes/chemistry.yml index 6d69010a0c..7dc43f5f33 100644 --- a/Resources/Prototypes/Recipes/Lathes/chemistry.yml +++ b/Resources/Prototypes/Recipes/Lathes/chemistry.yml @@ -82,7 +82,7 @@ - type: latheRecipe id: Vape icon: - sprite: Objects/Consumable/Smokeables/Vapes/vape-standart.rsi + sprite: Objects/Consumable/Smokeables/Vapes/vape-standard.rsi state: icon result: Vape completetime: 2 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/equipped-HAND.png deleted file mode 100644 index 61a4591b67..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/icon.png deleted file mode 100644 index 5904f18aff..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-left.png deleted file mode 100644 index 6c05483432..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-right.png deleted file mode 100644 index 1b786b19c7..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/equipped-HAND.png deleted file mode 100644 index 56cb86d572..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/icon.png deleted file mode 100644 index 20d3129452..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-left.png deleted file mode 100644 index fe5f356b27..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-right.png deleted file mode 100644 index 535677138a..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/equipped-HAND.png similarity index 100% rename from Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/equipped-HAND.png rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/equipped-HAND.png diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/icon.png new file mode 100644 index 0000000000..d01ea7d912 Binary files /dev/null and b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-left.png rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-right.png rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json similarity index 89% rename from Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json index 88e3ebd509..7a0bf77e1b 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e and modified by Flareguy for Space Station 14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/equipped-HAND.png deleted file mode 100644 index 92fd0f3d72..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/icon.png deleted file mode 100644 index 10fc55c579..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-left.png deleted file mode 100644 index cfbe7a4066..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-right.png deleted file mode 100644 index 1878f63519..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND.png deleted file mode 100644 index 089be84488..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/icon.png deleted file mode 100644 index 9c84c803b9..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-left.png deleted file mode 100644 index 64a1ce54ca..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-right.png deleted file mode 100644 index 1405a9195d..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/equipped-HAND.png deleted file mode 100644 index e1a9bf6860..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/icon.png deleted file mode 100644 index 09b2d39429..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-left.png deleted file mode 100644 index 16e615d222..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-right.png deleted file mode 100644 index 9ef6856a37..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/equipped-HAND.png deleted file mode 100644 index ebb73fed1b..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/icon.png deleted file mode 100644 index b879d6144c..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-left.png deleted file mode 100644 index 0ac2935cb1..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-right.png deleted file mode 100644 index e0241e65fe..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/equipped-HAND.png deleted file mode 100644 index 9c05f89fe2..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/icon.png deleted file mode 100644 index 04f8fb677d..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-left.png deleted file mode 100644 index 7440a5a458..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-right.png deleted file mode 100644 index ceace96792..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND.png deleted file mode 100644 index 72465e0ae4..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/icon.png deleted file mode 100644 index a7cf36f869..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-left.png deleted file mode 100644 index a3e036119b..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-right.png deleted file mode 100644 index f8ea102806..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/icon.png deleted file mode 100644 index a59b2c401d..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/equipped-HAND.png deleted file mode 100644 index 6d36627397..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/equipped-HAND.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/icon.png deleted file mode 100644 index 1eca25df50..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-left.png deleted file mode 100644 index 5a4586c2f9..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-right.png deleted file mode 100644 index c993e20080..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json deleted file mode 100644 index dd95d95446..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/55d823b97dda098a1b2ee9edfca7155c753e456e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism-equipped.png b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism-equipped.png new file mode 100644 index 0000000000..49e264e16e Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism-equipped.png differ diff --git a/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism.png b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism.png new file mode 100644 index 0000000000..16a2ce09cd Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism.png differ diff --git a/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/meta.json new file mode 100644 index 0000000000..e82672f071 --- /dev/null +++ b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-NC-4.0", + "copyright": "Terraspark's work", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "autism" + }, + { + "name": "autism-equipped", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism-equipped.png b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism-equipped.png new file mode 100644 index 0000000000..39560cafa6 Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism-equipped.png differ diff --git a/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism.png b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism.png new file mode 100644 index 0000000000..22e9102e2b Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism.png differ diff --git a/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/meta.json new file mode 100644 index 0000000000..6848744ab8 --- /dev/null +++ b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-NC-4.0", + "copyright": "Terraspark's work", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "goldautism" + }, + { + "name": "goldautism-equipped", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json index 57fab6a8ba..46b0496399 100644 --- a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json @@ -6,69 +6,70 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "aro" - }, - { - "name": "aro-equipped", - "directions": 4 - }, - { - "name": "asex" - }, - { - "name": "asex-equipped", - "directions": 4 - }, - { - "name": "bi" - }, - { - "name": "bi-equipped", - "directions": 4 - }, - { - "name": "inter" - }, - { - "name": "inter-equipped", - "directions": 4 - }, - { - "name": "les" - }, - { - "name": "les-equipped", - "directions": 4 - }, - { - "name": "lgbt" - }, - { - "name": "lgbt-equipped", - "directions": 4 - }, - { - "name": "non" - }, - { - "name": "non-equipped", - "directions": 4 - }, - { - "name": "pan" - }, - { - "name": "pan-equipped", - "directions": 4 - }, - { - "name": "trans" - }, - { - "name": "trans-equipped", - "directions": 4 - } - ] + "states": [ + { + "name": "aro" + }, + { + "name": "aro-equipped", + "directions": 4 + }, + { + "name": "asex" + }, + { + "name": "asex-equipped", + "directions": 4 + }, + { + "name": "bi" + }, + { + "name": "bi-equipped", + "directions": 4 + }, + { + "name": "inter" + }, + { + "name": "inter-equipped", + "directions": 4 + }, + { + "name": "les" + }, + { + "name": "les-equipped", + "directions": 4 + }, + { + "name": "lgbt" + }, + { + "name": "lgbt-equipped", + "directions": 4 + }, + { + "name": "non" + }, + { + "name": "non-equipped", + "directions": 4 + }, + { + "name": "pan" + }, + { + "name": "pan-equipped", + "directions": 4 + }, + { + "name": "trans" + }, + { + "name": "trans-equipped", + "directions": 4 + } + ] } + diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET-vox.png deleted file mode 100644 index 583a818e53..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET-vox.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET.png deleted file mode 100644 index 92f069be24..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/black.rsi/icon.png deleted file mode 100644 index bf2a91927b..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/black.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-left.png deleted file mode 100644 index 0913bfe4dd..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-right.png deleted file mode 100644 index d854fb1dc2..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json deleted file mode 100644 index 233691629a..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", "size": {"x": 32, "y": 32}, "states": [{"name": "icon"}, {"name": "equipped-FEET", "directions": 4}, {"name": "inhand-left", "directions": 4}, {"name": "inhand-right", "directions": 4}, {"name": "equipped-FEET-vox", "directions": 4}]} diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/equipped-FEET.png deleted file mode 100644 index fdfd845fc9..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/icon.png deleted file mode 100644 index 5c9abb0963..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-left.png deleted file mode 100644 index 5d844ce09e..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-right.png deleted file mode 100644 index 4669e8771c..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/equipped-FEET.png deleted file mode 100644 index 6bf8932f14..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/icon.png deleted file mode 100644 index b2fb1eb685..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-left.png deleted file mode 100644 index 9b18d40741..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-right.png deleted file mode 100644 index d1236d6306..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/green.rsi/equipped-FEET.png deleted file mode 100644 index 95a6643869..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/green.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/green.rsi/icon.png deleted file mode 100644 index 6e2bb8cde4..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/green.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-left.png deleted file mode 100644 index 5d4b837a92..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-right.png deleted file mode 100644 index 15799306e8..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/equipped-FEET.png deleted file mode 100644 index 6e5b72b88d..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/icon.png deleted file mode 100644 index 5adb5f2d6a..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-left.png deleted file mode 100644 index e509ec0c4f..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-right.png deleted file mode 100644 index 3516a60cd8..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/equipped-FEET.png deleted file mode 100644 index 9e52d381b4..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/icon.png deleted file mode 100644 index a21acc31b7..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-left.png deleted file mode 100644 index 056e73d94d..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-right.png deleted file mode 100644 index 0123087171..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/red.rsi/equipped-FEET.png deleted file mode 100644 index 61d3dd5026..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/red.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/red.rsi/icon.png deleted file mode 100644 index b139627d8d..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/red.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-left.png deleted file mode 100644 index 4ae9c7e535..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-right.png deleted file mode 100644 index 73fbec68f5..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/white.rsi/equipped-FEET.png deleted file mode 100644 index db8ec2d0bb..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/white.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/white.rsi/icon.png deleted file mode 100644 index ac14852457..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/white.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-left.png deleted file mode 100644 index a47cde6331..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-right.png deleted file mode 100644 index 47119de223..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/equipped-FEET.png deleted file mode 100644 index 083a41ec47..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/equipped-FEET.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/icon.png deleted file mode 100644 index 2398b7f04a..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-left.png deleted file mode 100644 index 082235b69c..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-right.png deleted file mode 100644 index f95c661939..0000000000 Binary files a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET-vox.png new file mode 100644 index 0000000000..a7ebf25671 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET.png b/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET.png new file mode 100644 index 0000000000..0baedaa9c0 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET-vox.png new file mode 100644 index 0000000000..d81e2314b6 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET.png new file mode 100644 index 0000000000..dd4df4b601 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/icon.png b/Resources/Textures/Clothing/Shoes/color.rsi/icon.png new file mode 100644 index 0000000000..8e42e5c5ce Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/color.rsi/inhand-left.png new file mode 100644 index 0000000000..d3741e6b7b Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/color.rsi/inhand-right.png new file mode 100644 index 0000000000..5a4e04ca31 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/meta.json b/Resources/Textures/Clothing/Shoes/color.rsi/meta.json new file mode 100644 index 0000000000..5e43acc086 --- /dev/null +++ b/Resources/Textures/Clothing/Shoes/color.rsi/meta.json @@ -0,0 +1,57 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 and modified by Flareguy for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "soles-icon" + }, + { + "name": "soles-equipped-FEET", + "directions": 4 + }, + { + "name": "soles-equipped-FEET-vox", + "directions": 4 + }, + { + "name": "soles-inhand-left", + "directions": 4 + }, + { + "name": "soles-inhand-right", + "directions": 4 + }, + { + "name": "contrastedsoles-equipped-FEET", + "directions": 4 + }, + { + "name": "contrastedsoles-equipped-FEET-vox", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET-vox.png new file mode 100644 index 0000000000..0255ed7b78 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET.png b/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET.png new file mode 100644 index 0000000000..6d643f6f3b Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/soles-icon.png b/Resources/Textures/Clothing/Shoes/color.rsi/soles-icon.png new file mode 100644 index 0000000000..ba918d282d Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/soles-icon.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-left.png b/Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-left.png new file mode 100644 index 0000000000..19945c1a59 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-right.png b/Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-right.png new file mode 100644 index 0000000000..a33bc4d825 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 6a76cd35ef..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 8bf8b8906f..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/icon.png deleted file mode 100644 index d39607e94d..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-left.png deleted file mode 100644 index 8ca0193cb1..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-right.png deleted file mode 100644 index f2a18bc4eb..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 4df69fee45..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index f453ae0427..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/icon.png deleted file mode 100644 index 0420b506db..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-left.png deleted file mode 100644 index 6aad457526..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-right.png deleted file mode 100644 index b185b62396..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index a16b8908c2..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index fc7582154f..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/icon.png deleted file mode 100644 index 0c2d3ece6b..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-left.png deleted file mode 100644 index d316b0400e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-right.png deleted file mode 100644 index 6523d6ef6d..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 21e3f5f76c..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 3f01003004..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/icon.png deleted file mode 100644 index 97bd52cfe9..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-left.png deleted file mode 100644 index ea01f616e4..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-right.png deleted file mode 100644 index 2ef7181ab0..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 11a28280d7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index ae2631d0da..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/icon.png deleted file mode 100644 index 5077680c75..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-left.png deleted file mode 100644 index 5456486c25..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-right.png deleted file mode 100644 index 23855a8759..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 161af53da2..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index c5b151b493..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/icon.png deleted file mode 100644 index 1407b79d7a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-left.png deleted file mode 100644 index 5456486c25..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-right.png deleted file mode 100644 index 23855a8759..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 7edf356ec6..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 5074896bfb..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/icon.png deleted file mode 100644 index 3c0c3e0f9a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-left.png deleted file mode 100644 index ae15d262d7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-right.png deleted file mode 100644 index 60bea1b51a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 4d274a2282..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index d3fb22d4be..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/icon.png deleted file mode 100644 index a240bfd7d7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-left.png deleted file mode 100644 index d316b0400e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-right.png deleted file mode 100644 index 6523d6ef6d..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 80854928bf..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 7dc954dd90..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/icon.png deleted file mode 100644 index 61fc966e58..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-left.png deleted file mode 100644 index 46be5288e6..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-right.png deleted file mode 100644 index f1911c7ec0..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 3df6ea0d92..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 6d92e3e450..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/icon.png deleted file mode 100644 index 9be9ecf9d6..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-left.png deleted file mode 100644 index a703128c96..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-right.png deleted file mode 100644 index 8c73e1c7ce..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index fe4dcbe7f7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index cef8a7c5f8..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/icon.png deleted file mode 100644 index 3f876a8b2a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-left.png deleted file mode 100644 index 5e5c42697c..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-right.png deleted file mode 100644 index fee1dd85cd..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 00e7198cc4..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 6698c719ff..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/icon.png deleted file mode 100644 index bef1f6a308..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-left.png deleted file mode 100644 index 9112f9b980..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-right.png deleted file mode 100644 index d3df7bcb6b..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 0e1f28b34f..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 31cb581211..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/icon.png deleted file mode 100644 index 52ac071c07..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-left.png deleted file mode 100644 index 4cd9c955ae..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-right.png deleted file mode 100644 index ae5a124c66..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 04ea2792e8..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index f37256fe84..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/icon.png deleted file mode 100644 index b2757bc090..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-left.png deleted file mode 100644 index 748bfb2e97..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-right.png deleted file mode 100644 index 4944e6fc0b..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 6c3ea56b53..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 8c7d6e406c..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/icon.png deleted file mode 100644 index 0d2bf73ca8..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-left.png deleted file mode 100644 index 592cd94079..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-right.png deleted file mode 100644 index 3d3dd56f27..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 07673c8fa6..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index d557558081..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/icon.png deleted file mode 100644 index 15670841c2..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-left.png deleted file mode 100644 index 6959537bce..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-right.png deleted file mode 100644 index 148b981232..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..3faba7285f Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png new file mode 100644 index 0000000000..64642a1158 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png new file mode 100644 index 0000000000..0b13123486 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-right.png new file mode 100644 index 0000000000..ba6769d59d Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json similarity index 50% rename from Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/meta.json rename to Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json index 6a2ed23204..7e6832bd12 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 and modified by Flareguy for Space Station 14", "size": { "x": 32, "y": 32 @@ -14,14 +14,6 @@ "name": "equipped-INNERCLOTHING", "directions": 4 }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-vox", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 @@ -29,6 +21,36 @@ { "name": "inhand-right", "directions": 4 + }, + { + "name": "trinkets-icon" + }, + { + "name": "trinkets-equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "trinkets-inhand-left", + "directions": 4 + }, + { + "name": "trinkets-inhand-right", + "directions": 4 + }, + { + "name": "prisoner-icon" + }, + { + "name": "prisoner-inhand-left", + "directions": 4 + }, + { + "name": "prisoner-inhand-right", + "directions": 4 + }, + { + "name": "prisoner-equipped-INNERCLOTHING", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..f5230c6400 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-icon.png new file mode 100644 index 0000000000..0cea666be5 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png new file mode 100644 index 0000000000..f6ff6866ff Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png new file mode 100644 index 0000000000..45393e81a6 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..cee5a50d2c Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-icon.png new file mode 100644 index 0000000000..effb2ada73 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-left.png new file mode 100644 index 0000000000..9bbcac8268 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-right.png new file mode 100644 index 0000000000..cfd7258315 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index cf66060dca..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 1492d76a1d..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/icon.png deleted file mode 100644 index e2cb52fdec..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-left.png deleted file mode 100644 index 0e02959652..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-right.png deleted file mode 100644 index cfbe848c3b..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json deleted file mode 100644 index 36ab573091..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey derivative made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index cb1a5eece6..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 445e8d01df..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/icon.png deleted file mode 100644 index 8cf3cc9e90..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-left.png deleted file mode 100644 index 8ca0193cb1..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-right.png deleted file mode 100644 index f2a18bc4eb..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 93c02f4b75..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index ce33a56ae7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/icon.png deleted file mode 100644 index 54266e7972..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-left.png deleted file mode 100644 index 6aad457526..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-right.png deleted file mode 100644 index b185b62396..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 38766b03b5..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 95090dd752..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/icon.png deleted file mode 100644 index 9dcfac02b7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-left.png deleted file mode 100644 index d316b0400e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-right.png deleted file mode 100644 index 6523d6ef6d..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index a5bff74a25..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 74bab00422..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/icon.png deleted file mode 100644 index a054d2a82e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-left.png deleted file mode 100644 index ea01f616e4..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-right.png deleted file mode 100644 index 2ef7181ab0..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index a48109bfba..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 4ae08467c9..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/icon.png deleted file mode 100644 index 5f9834bf8e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-left.png deleted file mode 100644 index 5456486c25..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-right.png deleted file mode 100644 index 23855a8759..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 947d515970..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 029f91d0d4..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/icon.png deleted file mode 100644 index c8b62b63ff..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-left.png deleted file mode 100644 index 5456486c25..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-right.png deleted file mode 100644 index 23855a8759..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index a1e1573d24..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-vox.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-vox.png deleted file mode 100644 index f312aac297..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-vox.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 56c385790e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/icon.png deleted file mode 100644 index 4b976a5ede..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-left.png deleted file mode 100644 index ae15d262d7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-right.png deleted file mode 100644 index 60bea1b51a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 5989aa1d07..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index d77f8e18e1..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/icon.png deleted file mode 100644 index db1bf71e11..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-left.png deleted file mode 100644 index d316b0400e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-right.png deleted file mode 100644 index 6523d6ef6d..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 06d66a9b1a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index a7784172f7..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/icon.png deleted file mode 100644 index e3825ee3d1..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-left.png deleted file mode 100644 index 46be5288e6..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-right.png deleted file mode 100644 index f1911c7ec0..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 543da4f4e4..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index ddab094d22..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/icon.png deleted file mode 100644 index 459de73286..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-left.png deleted file mode 100644 index a703128c96..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-right.png deleted file mode 100644 index 8c73e1c7ce..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 3ac7ea5d02..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 71e32fc8ea..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/icon.png deleted file mode 100644 index c443437f6a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-left.png deleted file mode 100644 index 5e5c42697c..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-right.png deleted file mode 100644 index fee1dd85cd..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index d69c0924ea..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index bb3294245a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/icon.png deleted file mode 100644 index db1cba5d7e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-left.png deleted file mode 100644 index 9112f9b980..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-right.png deleted file mode 100644 index d3df7bcb6b..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index d1274a497a..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 27edb0b73e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/icon.png deleted file mode 100644 index 871e9e5e4e..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-left.png deleted file mode 100644 index 4cd9c955ae..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-right.png deleted file mode 100644 index ae5a124c66..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 7771053658..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 2c8be92e08..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/icon.png deleted file mode 100644 index d2156294af..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-left.png deleted file mode 100644 index 748bfb2e97..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-right.png deleted file mode 100644 index 4944e6fc0b..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index c99223c467..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 1196f82db6..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/icon.png deleted file mode 100644 index 3cf289d5ac..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-left.png deleted file mode 100644 index 592cd94079..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-right.png deleted file mode 100644 index 3d3dd56f27..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 69166ef2e5..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index e884390be2..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/icon.png deleted file mode 100644 index 74cc6a4f8c..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-left.png deleted file mode 100644 index 6959537bce..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-right.png deleted file mode 100644 index 148b981232..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..5c333dfc11 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/icon.png new file mode 100644 index 0000000000..c0087d4d25 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-left.png new file mode 100644 index 0000000000..0b13123486 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-right.png new file mode 100644 index 0000000000..ba6769d59d Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json new file mode 100644 index 0000000000..7e6832bd12 --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json @@ -0,0 +1,56 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 and modified by Flareguy for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "trinkets-icon" + }, + { + "name": "trinkets-equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "trinkets-inhand-left", + "directions": 4 + }, + { + "name": "trinkets-inhand-right", + "directions": 4 + }, + { + "name": "prisoner-icon" + }, + { + "name": "prisoner-inhand-left", + "directions": 4 + }, + { + "name": "prisoner-inhand-right", + "directions": 4 + }, + { + "name": "prisoner-equipped-INNERCLOTHING", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..320db64b57 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-icon.png new file mode 100644 index 0000000000..faebe0e055 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-left.png new file mode 100644 index 0000000000..f6ff6866ff Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-right.png new file mode 100644 index 0000000000..45393e81a6 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..e21afe8d4e Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png new file mode 100644 index 0000000000..c9e8398b47 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-left.png new file mode 100644 index 0000000000..9bbcac8268 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png new file mode 100644 index 0000000000..cfd7258315 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 6c1672bd7f..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING-monkey.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index a4ec7058a1..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/icon.png deleted file mode 100644 index 6910994580..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-left.png deleted file mode 100644 index 0e02959652..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-right.png deleted file mode 100644 index cfbe848c3b..0000000000 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standart.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standard.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standart.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standard.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard2.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart2.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard2.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart1.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard1.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart1.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard1.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard2.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart2.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard2.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart3.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard3.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart3.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard3.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart4.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard4.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart4.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard4.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart5.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard5.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart5.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard5.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart6.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard6.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart6.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard6.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart7.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard7.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart7.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard7.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart8.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard8.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart8.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard8.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart9.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard9.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart9.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard9.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json index 08133fc00b..545f209db9 100644 --- a/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json @@ -20,7 +20,7 @@ "directions": 4 }, { - "name": "base_leg_standart", + "name": "base_leg_standard", "directions": 4 }, { @@ -36,11 +36,11 @@ "directions": 4 }, { - "name": "base_torso_standart", + "name": "base_torso_standard", "directions": 4 }, { - "name": "base_torso_standart2", + "name": "base_torso_standard2", "directions": 4 }, { @@ -116,39 +116,39 @@ "directions": 4 }, { - "name": "decor_torso_standart1", + "name": "decor_torso_standard1", "directions": 4 }, { - "name": "decor_torso_standart2", + "name": "decor_torso_standard2", "directions": 4 }, { - "name": "decor_torso_standart3", + "name": "decor_torso_standard3", "directions": 4 }, { - "name": "decor_torso_standart4", + "name": "decor_torso_standard4", "directions": 4 }, { - "name": "decor_torso_standart5", + "name": "decor_torso_standard5", "directions": 4 }, { - "name": "decor_torso_standart6", + "name": "decor_torso_standard6", "directions": 4 }, { - "name": "decor_torso_standart7", + "name": "decor_torso_standard7", "directions": 4 }, { - "name": "decor_torso_standart8", + "name": "decor_torso_standard8", "directions": 4 }, { - "name": "decor_torso_standart9", + "name": "decor_torso_standard9", "directions": 4 }, { diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/icon.png b/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/icon.png rename to Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/icon.png diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/meta.json rename to Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/meta.json diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/bounty.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/bounty.png new file mode 100644 index 0000000000..5db87e6182 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/bounty.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/captains_paper.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/captains_paper.png new file mode 100644 index 0000000000..87ee739fa2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/captains_paper.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/invoice.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/invoice.png new file mode 100644 index 0000000000..508a6b12e6 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/invoice.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json index b6feb49959..e872787314 100644 --- a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/39659000f380583c35fb814ee2fadab24c2f8076", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/39659000f380583c35fb814ee2fadab24c2f8076, additional label sprites by Vermidia", "size": { "x": 32, "y": 32 @@ -14,10 +14,19 @@ "name": "bag_folded" }, { - "name": "label_overlay" + "name": "paper" }, { "name": "open_overlay" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/label_overlay.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/paper.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/label_overlay.png rename to Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/paper.png diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/bounty.png b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/bounty.png new file mode 100644 index 0000000000..ee32a8211e Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/bounty.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/captains_paper.png new file mode 100644 index 0000000000..57f9a90950 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/captains_paper.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/invoice.png new file mode 100644 index 0000000000..ed4951d12a Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/invoice.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json index 7a17f38fa5..1a535ab97c 100644 --- a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json @@ -1,32 +1,44 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from baystation at commit https://github.com/Baystation12/Baystation12/commit/a929584d9db319eb7484113221be25cfa1d5dc09. Label sprites by Vermidia.", + "states": [ + { + "name": "artifact_container" }, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from baystation at commit https://github.com/Baystation12/Baystation12/commit/a929584d9db319eb7484113221be25cfa1d5dc09", - "states": [ - { - "name": "artifact_container" - }, - { - "name": "artifact_container_door" - }, - { - "name": "artifact_container_open" - }, - { - "name": "artifact_container_icon" - }, - { - "name": "locked" - }, - { - "name": "unlocked" - }, - { - "name": "welded" - } - ] + { + "name": "artifact_container_door" + }, + { + "name": "artifact_container_open" + }, + { + "name": "artifact_container_icon" + }, + { + "name": "locked" + }, + { + "name": "unlocked" + }, + { + "name": "welded" + }, + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" + } + ] } \ No newline at end of file diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/paper.png new file mode 100644 index 0000000000..6cf41f02c8 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/paper.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/bounty.png b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/bounty.png new file mode 100644 index 0000000000..54a2f0fbd0 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/bounty.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/captains_paper.png new file mode 100644 index 0000000000..7265057446 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/captains_paper.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/invoice.png new file mode 100644 index 0000000000..e0efa6e950 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/invoice.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json index 610ea0183c..7908408cd3 100644 --- a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/32c8d0abc573d7370eb145d8ce74176d59b7eea3", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/32c8d0abc573d7370eb145d8ce74176d59b7eea3. Label sprites by Vermidia.", "size": { "x": 32, "y": 32 @@ -15,6 +15,18 @@ }, { "name": "closed" + }, + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" } ] } diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/paper.png new file mode 100644 index 0000000000..630ffe8e10 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/paper.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/bounty.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/bounty.png new file mode 100644 index 0000000000..52e515e39b Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/labels.rsi/bounty.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png new file mode 100644 index 0000000000..961991bf34 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png new file mode 100644 index 0000000000..3e00e7d806 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json new file mode 100644 index 0000000000..c180604984 --- /dev/null +++ b/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites by Vermidia.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png new file mode 100644 index 0000000000..8daf777083 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/bounty.png b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/bounty.png new file mode 100644 index 0000000000..d7bd7f29ee Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/bounty.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/captains_paper.png new file mode 100644 index 0000000000..4fd4bf0503 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/captains_paper.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/invoice.png new file mode 100644 index 0000000000..aacd2ca768 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/invoice.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json index 082564ccfb..9c0d876c50 100644 --- a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood118 (github) for ss14", + "copyright": "Made by brainfood118 (github) for ss14. Label Sprites by Vermidia.", "size": { "x": 32, "y": 32 @@ -20,21 +20,33 @@ "name": "crate_icon" }, { - "name": "sparking", - "directions": 1, - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] + "name": "sparking", + "directions": 1, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] + ] }, { "name": "crate_open" + }, + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/paper.png new file mode 100644 index 0000000000..f0c91659d3 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/paper.png differ diff --git a/RobustToolbox b/RobustToolbox index 6764ed56b0..af8fb52a4f 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 6764ed56b06309b56bd35c8ebffdf64882d4c4c1 +Subproject commit af8fb52a4f057fbfef1d285e12b98915de870f5c