From 018d65d99ba4e1fd55a590e3a75fcd6f61aa637a Mon Sep 17 00:00:00 2001 From: freezer dog Date: Mon, 20 Jul 2026 18:08:56 -0400 Subject: [PATCH 01/36] Imp ports - Novice mark and wearable examine (#6118) * Obvious Examine (#2462) * Obvious Examine * Feature creep is real * Less words and better colors * even fewer words, please * Oops sorry yaml * Refactor entire Obvious Examine system * whitespace --------- Co-authored-by: beck <163376292+widgetbeck@users.noreply.github.com> # Conflicts: # Content.Shared/_Impstation/Examine/DetailedInspectComponent.cs # Content.Shared/_Impstation/Examine/DetailedInspectSystem.cs # Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl # Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml # Resources/Prototypes/Entities/Clothing/Neck/medals.yml # Resources/Prototypes/Entities/Clothing/Neck/pins.yml # Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml # Resources/Prototypes/_Impstation/Entities/Clothing/Neck/cloaks.yml # Resources/Prototypes/_Impstation/Entities/Clothing/Neck/misc.yml # Resources/Prototypes/_Impstation/Entities/Clothing/Neck/pins.yml # Resources/Prototypes/_Impstation/Entities/Clothing/Neck/scarfs.yml * Novice's mark (#2626) * Adding the item * Update descriptions * Add to trinket list, add to all trainee roles * Add to PTech * License fix * And credit fix. Be nice it's my first sprite implementation lol # Conflicts: # Resources/Prototypes/Catalog/VendingMachines/Inventories/cart.yml # Resources/Prototypes/Loadouts/loadout_groups.yml # Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml # Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml # Resources/Prototypes/_DV/Roles/Jobs/Cargo/cargo_assistant.yml # Resources/Prototypes/_Impstation/Entities/Clothing/Neck/pins.yml # Resources/Prototypes/_Impstation/Loadouts/Miscellaneous/trinkets.yml * killing things i forgot to oops * fix + select in loadouts for everyone --------- Co-authored-by: January Nelson Co-authored-by: beck <163376292+widgetbeck@users.noreply.github.com> --- .../WearerGetsExamineTextComponent.cs | 66 +++++++++++ .../Clothing/WearerGetsExamineTextSystem.cs | 111 ++++++++++++++++++ .../Examine/DetailedInspectComponent.cs | 40 +++++++ .../Examine/DetailedInspectSystem.cs | 50 ++++++++ .../Examine/ExtraExamineTextComponent.cs | 24 ++++ .../Examine/ExtraExamineTextSystem.cs | 33 ++++++ .../Locale/en-US/_Impstation/obvious.ftl | 65 ++++++++++ .../VendingMachines/Inventories/cart.yml | 1 + .../Entities/Clothing/Neck/cloaks.yml | 41 +++++-- .../Entities/Clothing/Neck/medals.yml | 34 ++++++ .../Entities/Clothing/Neck/misc.yml | 4 +- .../Entities/Clothing/Neck/pins.yml | 36 ++++++ .../Entities/Clothing/Neck/scarfs.yml | 49 ++++++-- .../Prototypes/Loadouts/loadout_groups.yml | 1 + .../Jobs/Engineering/technical_assistant.yml | 1 + .../Roles/Jobs/Medical/medical_intern.yml | 1 + .../Roles/Jobs/Science/research_assistant.yml | 1 + .../Roles/Jobs/Security/security_cadet.yml | 1 + .../_DV/Entities/Clothing/Neck/misc.yml | 4 +- .../_DV/Roles/Jobs/Cargo/cargo_assistant.yml | 1 + .../Entities/Clothing/Neck/cloaks.yml | 8 ++ .../Entities/Clothing/Neck/misc.yml | 7 ++ .../Entities/Clothing/Neck/pins.yml | 12 ++ .../Entities/Clothing/Neck/scarfs.yml | 7 ++ .../Loadouts/Miscellaneous/trinkets.yml | 5 + .../Misc/novicemark.rsi/equipped-NECK.png | Bin 0 -> 322 bytes .../Neck/Misc/novicemark.rsi/icon.png | Bin 0 -> 330 bytes .../Neck/Misc/novicemark.rsi/meta.json | 18 +++ 28 files changed, 597 insertions(+), 24 deletions(-) create mode 100644 Content.Shared/_Impstation/Clothing/WearerGetsExamineTextComponent.cs create mode 100644 Content.Shared/_Impstation/Clothing/WearerGetsExamineTextSystem.cs create mode 100644 Content.Shared/_Impstation/Examine/DetailedInspectComponent.cs create mode 100644 Content.Shared/_Impstation/Examine/DetailedInspectSystem.cs create mode 100644 Content.Shared/_Impstation/Examine/ExtraExamineTextComponent.cs create mode 100644 Content.Shared/_Impstation/Examine/ExtraExamineTextSystem.cs create mode 100644 Resources/Locale/en-US/_Impstation/obvious.ftl create mode 100644 Resources/Prototypes/_Impstation/Entities/Clothing/Neck/cloaks.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Clothing/Neck/misc.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Clothing/Neck/pins.yml create mode 100644 Resources/Prototypes/_Impstation/Entities/Clothing/Neck/scarfs.yml create mode 100644 Resources/Prototypes/_Impstation/Loadouts/Miscellaneous/trinkets.yml create mode 100644 Resources/Textures/_Impstation/Clothing/Neck/Misc/novicemark.rsi/equipped-NECK.png create mode 100644 Resources/Textures/_Impstation/Clothing/Neck/Misc/novicemark.rsi/icon.png create mode 100644 Resources/Textures/_Impstation/Clothing/Neck/Misc/novicemark.rsi/meta.json diff --git a/Content.Shared/_Impstation/Clothing/WearerGetsExamineTextComponent.cs b/Content.Shared/_Impstation/Clothing/WearerGetsExamineTextComponent.cs new file mode 100644 index 00000000000..5328c87d6fa --- /dev/null +++ b/Content.Shared/_Impstation/Clothing/WearerGetsExamineTextComponent.cs @@ -0,0 +1,66 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._Impstation.Clothing; + +/// +/// Adds examine text to the entity that wears item, for making things obvious. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(WearerGetsExamineTextSystem))] +public sealed partial class WearerGetsExamineTextComponent : Component +{ + /// + /// The LocId that specifies what category of object this is. + /// i.e. "pin" or "scarf" + /// Should be redefined on a per-category basis, naturally. + /// + [DataField("thing")] + public LocId Category = "obvious-thing-default"; + + /// + /// The LocId that specifies what member of the category this is. + /// i.e. "lesbian pride" + /// Can be used to define text colors that are copied to all things + /// which share this specifier (i.e. the other items of the same pride). + /// (And summarily, makes accessibility-based changes for these colors a cinch.) + /// Should be defined by each thing that has this component. + /// + [DataField("thingType")] + public LocId Specifier = "obvious-type-default"; + + /// + /// The LocId that will be added to any wearing entity's examination. + /// Typically only needs redefining on a per-category basis, + /// but items that should have totally-unique obvious text can simply specify them here. + /// + [DataField("examineText", required: true)] + public LocId ExamineOnWearer = "obvious-desc-default"; + + /// + /// Reference to the entity wearing this clothing. + /// + [DataField, AutoNetworkedField] + public EntityUid? Wearer; + /// + /// The string that is attached to this item's ExamineOnWearer. + /// Typically doesn't need to be redefined. + /// + [DataField] + public LocId PrefixExamineOnWearer = "obvious-prefix-wearing"; + + /// + /// If true, an entity with this item in any slot (i.e. in pockets) will gain the examine text, + /// instead of when just equipped as clothing. + /// Should be used sparingly only when truly appropriate; this is effectively a half-measure for lack of a special pin slot. + /// + [DataField] + public bool PocketEvident; + + /// + /// If true, the entity's description will inform examiners what others will see on the wearer (before they equip it). + /// If the item is contraband, the item will also warn that displaying it may cause undue attention. + /// Keep this false for good-natured jokes (i.e. the pride cloaks having funny, non-pride names) + /// + [DataField] + public bool WarnExamine = true; +} diff --git a/Content.Shared/_Impstation/Clothing/WearerGetsExamineTextSystem.cs b/Content.Shared/_Impstation/Clothing/WearerGetsExamineTextSystem.cs new file mode 100644 index 00000000000..bb38ee55407 --- /dev/null +++ b/Content.Shared/_Impstation/Clothing/WearerGetsExamineTextSystem.cs @@ -0,0 +1,111 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Examine; +using Content.Shared.IdentityManagement; +using Content.Shared.Inventory.Events; +using Content.Shared.Contraband; +using Content.Shared._Impstation.Examine; +using System.Text; + +namespace Content.Shared._Impstation.Clothing; + +/// +/// Adds examine text to the entity that wears item, for making things obvious. +/// +public sealed class WearerGetsExamineTextSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEquipped); + SubscribeLocalEvent(OnUnequipped); + SubscribeLocalEvent(OnExamine); + } + + private void OnEquipped(Entity entity, ref GotEquippedEvent args) + { + if (!TryComp(entity, out ClothingComponent? clothing)) + return; + var isCorrectSlot = (clothing.Slots & args.SlotFlags) != Inventory.SlotFlags.NONE; + if (!entity.Comp.PocketEvident) //if it can't be evident in our pockets + { + // Make sure the clothing item was equipped to the right slot, and not just held in a hand. + if (!isCorrectSlot) + return; + } + + entity.Comp.Wearer = args.Equipee; + Dirty(entity); + + //GIVE THEM INSPECT TEXT + var obviousExamine = EnsureComp(args.Equipee); + obviousExamine.Lines.TryAdd(entity.Owner, //using try so that we don't cause an error if we move something from slot to slot + ConstructExamineText(entity, !isCorrectSlot, args.Equipee)); + } + + + private string ConstructExamineText(Entity entity, bool prefixFallback, EntityUid affecting) + { + //parameters (these are the same between both constructions) + var user = Identity.Entity(affecting, EntityManager); + var nomen = Identity.Name(affecting, EntityManager); + var thing = Loc.GetString(entity.Comp.Category); + var type = Loc.GetString(entity.Comp.Specifier); + var stringSpec = entity.Comp.Specifier.ToString(); + var shortType = stringSpec.Substring(stringSpec.LastIndexOf('-')); // necessary for working with colored text... + + var prefix = Loc.GetString(prefixFallback ? "obvious-prefix-default" : entity.Comp.PrefixExamineOnWearer, // uses a different prefix if worn / displayed + ("user", user), + ("name", nomen), + ("thing", thing), + ("type", type)); + var suffix = Loc.GetString(entity.Comp.ExamineOnWearer, + ("user", user), + ("name", nomen), + ("thing", thing), + ("type", type), + ("short-type", shortType)); + return prefix + " " + suffix; + } + + private void OnUnequipped(Entity entity, ref GotUnequippedEvent args) + { + if (entity.Comp.Wearer is not { } wearer) + return; + + if (TryComp(wearer, out ExtraExamineTextComponent? obviousExamine)) + { + obviousExamine.Lines.Remove(entity.Owner); + } + + entity.Comp.Wearer = null; + Dirty(entity); + } + + private void OnExamine(Entity entity, ref ExaminedEvent args) + { + var currentlyWorn = entity.Comp.Wearer != null; + var outString = new StringBuilder(Loc.GetString(currentlyWorn ? "obvious-on-item-currently" : "obvious-on-item", + ("used", Loc.GetString(entity.Comp.PocketEvident ? "obvious-reveal-pockets" : "obvious-reveal-default")), + ("thing", entity.Comp.Category), + ("me", Identity.Entity(entity, EntityManager)))); + + if (entity.Comp.WarnExamine) + { + if (!currentlyWorn && TryComp(entity, out ContrabandComponent? contra)) // if the item's contra and we're not wearing it yet + { + var contraLocId = "obvious-on-item-contra-" + contra.Severity; // apply additional text if the item is contraband to note that displaying it might be really bad + if (Loc.HasString(contraLocId)) // saves us the trouble of making a switch block for this + outString.Append(" " + Loc.GetString(contraLocId)); + } + var affecting = currentlyWorn ? entity.Comp.Wearer.GetValueOrDefault() : args.Examiner; + var testOut = ConstructExamineText(entity, false, affecting); + + outString.Append("\n" + Loc.GetString("obvious-on-item-for-others", + ("will", currentlyWorn ? "can" : "will"), // i love hardcoding strings it's my favorite thing ever + ("output", testOut))); + } + + args.PushMarkup(outString.ToString()); + } +} diff --git a/Content.Shared/_Impstation/Examine/DetailedInspectComponent.cs b/Content.Shared/_Impstation/Examine/DetailedInspectComponent.cs new file mode 100644 index 00000000000..3c1d7e2bb98 --- /dev/null +++ b/Content.Shared/_Impstation/Examine/DetailedInspectComponent.cs @@ -0,0 +1,40 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._Impstation.Examine; + +[RegisterComponent, NetworkedComponent] +public sealed partial class DetailedInspectComponent : Component +{ + [DataField] + public LocId VerbText = "verbs-detailed-inspect"; + + [DataField] + public LocId VerbMessage = "verbs-detailed-inspect-message"; + + [DataField(required: true)] + public List ExamineText; + + /// + /// Whether or not the entries in ExamineText are separated by linebreaks. + /// + [DataField] + public bool LineBreak = true; + + /// + /// Whether or not the entries in ExamineText are preceded by ticks. + /// + [DataField] + public bool TickEntries = false; + + /// + /// Whether or not entries in the list are numbered. + /// + [DataField] + public bool NumberedEntries = false; + + /// + /// Rooted directory of the icon for the verb. + /// + [DataField] + public string Icon = "/Textures/Interface/VerbIcons/dot.svg.192dpi.png"; +} diff --git a/Content.Shared/_Impstation/Examine/DetailedInspectSystem.cs b/Content.Shared/_Impstation/Examine/DetailedInspectSystem.cs new file mode 100644 index 00000000000..a02c33d0255 --- /dev/null +++ b/Content.Shared/_Impstation/Examine/DetailedInspectSystem.cs @@ -0,0 +1,50 @@ +using Content.Shared.Examine; +using Content.Shared.Verbs; +using Robust.Shared.Network; +using Robust.Shared.Utility; + +namespace Content.Shared._Impstation.Examine; + +public sealed partial class DetailedInspectSystem : EntitySystem +{ + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(OnGetVerb); + } + + public void OnGetVerb(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess || !_net.IsServer) + return; + + var msg = new FormattedMessage(); + var numberedIndex = 1; + + foreach (var locId in ent.Comp.ExamineText) + { + if (ent.Comp.TickEntries) + msg.AddMarkupOrThrow("- "); + + if (ent.Comp.NumberedEntries) + { + msg.AddMarkupOrThrow($"{numberedIndex}. "); + numberedIndex++; + } + + msg.AddMarkupOrThrow(Loc.GetString(locId)); + + if (ent.Comp.LineBreak) + msg.PushNewline(); + else + msg.AddMarkupOrThrow(" "); + } + + + _examine.AddDetailedExamineVerb(args, ent.Comp, msg, Loc.GetString(ent.Comp.VerbText), ent.Comp.Icon, Loc.GetString(ent.Comp.VerbMessage)); + } +} diff --git a/Content.Shared/_Impstation/Examine/ExtraExamineTextComponent.cs b/Content.Shared/_Impstation/Examine/ExtraExamineTextComponent.cs new file mode 100644 index 00000000000..2df9f89b536 --- /dev/null +++ b/Content.Shared/_Impstation/Examine/ExtraExamineTextComponent.cs @@ -0,0 +1,24 @@ +using Robust.Shared.GameStates; +using Content.Shared._Impstation.Clothing; + +namespace Content.Shared._Impstation.Examine; + +/// +/// Adds examine text to the entity, intentionally "obvious details". +/// Like, that's it. It's basic -- all it does is add the lines to the attached entity. +/// This is particularly used for assigning players unique examine text. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(ExtraExamineTextSystem), typeof(WearerGetsExamineTextSystem))] +public sealed partial class ExtraExamineTextComponent : Component +{ + /// + /// The LocIds that will be added to the attached entity's examination. + /// + /// The key is the source of the line, and the value is the text + /// (built by the component that creates this one). + /// + [DataField, AutoNetworkedField] + public Dictionary Lines { get; set; } = new(); + +} diff --git a/Content.Shared/_Impstation/Examine/ExtraExamineTextSystem.cs b/Content.Shared/_Impstation/Examine/ExtraExamineTextSystem.cs new file mode 100644 index 00000000000..3cc94f3c0f0 --- /dev/null +++ b/Content.Shared/_Impstation/Examine/ExtraExamineTextSystem.cs @@ -0,0 +1,33 @@ +using Content.Shared.Examine; +using Content.Shared.IdentityManagement; + +namespace Content.Shared._Impstation.Examine; + +/// +/// Adds examine text to the entity, intentionally "obvious details". +/// Like, that's it. It's basic -- all it does is add the line to the attached entity. +/// This is particularly used for assigning players unique examine text. +/// +public sealed class ExtraExamineTextSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnExamine); + } + + private void OnExamine(Entity entity, ref ExaminedEvent args) + { + if (entity.Comp.Lines.Count == 0) + { + RemCompDeferred(entity); // no more need for me! + return; + } + + foreach (var l in entity.Comp.Lines) + { + args.PushMarkup(l.Value); + } + } +} diff --git a/Resources/Locale/en-US/_Impstation/obvious.ftl b/Resources/Locale/en-US/_Impstation/obvious.ftl new file mode 100644 index 00000000000..f3835f19cb7 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/obvious.ftl @@ -0,0 +1,65 @@ +obvious-on-item = When {$used}, { SUBJECT($me) } will be [color=white]obvious[/color] to casual examination. +obvious-on-item-currently = { CAPITALIZE(SUBJECT($me)) } { CONJUGATE-BE($me) } [color=white]obvious[/color] to casual examination. +obvious-on-item-for-others = [italic][color=#777777]Others {$will} see:[/color] "{$output}"[/italic] + +obvious-reveal-default = worn +obvious-reveal-pockets = worn or pocketed + +obvious-on-item-contra-Syndicate = Might make you seem [color=#ff0000]evil[/color]. +obvious-on-item-contra-Magical = Might make you seem [color=blue]mystical[/color]. +obvious-on-item-contra-Major = Don't be surprised if [color=#cb0000]some people[/color] aren't a fan. + +obvious-prefix-default = { CAPITALIZE(SUBJECT($user)) } { CONJUGATE-HAVE($user) } +obvious-prefix-wearing = { CAPITALIZE(SUBJECT($user)) } { CONJUGATE-BE($user) } wearing + +## general descriptions +obvious-desc-default = { INDEFINITE($short-type) } { $type } { $thing }. +obvious-desc-colors = { INDEFINITE($thing) } { $thing } in { $type } colors. +obvious-desc-proves = { INDEFINITE($thing) } [color=white]{ $thing }[/color] that proves { SUBJECT($user) } { CONJUGATE-BE($user) } { INDEFINITE($short-type) } { $type }. + +## item categories +obvious-thing-default = [italic]something-or-another[/italic] +obvious-thing-cloak = cloak +obvious-thing-pin = pin +obvious-thing-scarf = scarf +obvious-thing-badge = badge +obvious-thing-armband = armband +obvious-thing-medal = medal + +## item types +obvious-type-default = [italic]nothing[/italic] + +# prides +obvious-type-pride = [color=#d479d4]LGBTQ[/color] [color=white]pride[/color] +obvious-type-pride-aro = [color=#3DA542]aromantic[/color] [color=white]pride[/color] +obvious-type-pride-ace = [color=#efefef]asexual[/color] [color=#800080]pride[/color] +obvious-type-pride-aroace = [color=#efc337]aroace[/color] [color=#45bcee]pride[/color] +obvious-type-pride-lesbian = [color=#EF7627]lesbian[/color] [color=#B55690]pride[/color] +obvious-type-pride-bi = [color=#D60270]bisexual[/color] [color=#0038A8]pride[/color] +obvious-type-pride-pan = [color=#FF218C]pansexual[/color] [color=#21B1FF]pride[/color] +obvious-type-pride-gay = [color=#078D70]gay[/color] [color=#5049CC]pride[/color] +obvious-type-pride-omni = [color=#FE9ACE]omnisexual[/color] [color=8EA6FF]pride[/color] +obvious-type-pride-bear = [color=#FDDC62]bear[/color] [color=#613704]pride[/color] +obvious-type-pride-intersex = [color=#FFD800]intersex[/color] [color=#7902AA]pride[/color] +obvious-type-pride-nonbinary = [color=#FCF434]nonbinary[/color] [color=#9C59D1]pride[/color] +obvious-type-pride-trans = [color=#5BCEFA]transgender[/color] [color=#F5A9B8]pride[/color] +obvious-type-pride-gf = [color=#FF76A4]genderfluid[/color] [color=#2F3CBE]pride[/color] +obvious-type-pride-aut = [color=#FFD700]autism[/color] [color=white]pride[/color] +obvious-type-pride-straightally = [color=#7c7c7c]straight[/color] [color=#d479d4]LGBTQ ally[/color] +obvious-type-pride-gq = [color=#B57EDC]genderqueer[/color] [color=#4A8123]pride[/color] + +# lawyers +obvious-type-law = [color=white]certified[/color] [color=#FFD700]lawyer[/color] +obvious-type-law-defense = [color=white]certified[/color] [color=#00C0C0]defense attorney[/color] +obvious-type-law-prosecution = [color=white]certified[/color] [color=#FF2222]prosecuting attorney[/color] + +## SPECIFIC DESCRIPTIONS (skips the above description-builders) +obvious-x-scarf-lesbian-long = some [color=#EF7627]long[/color] [color=white]ba[/color][color=#B55690]con[/color]. +obvious-x-medal-nothing = a [color=#FFD700]gleaming medal[/color]! +# medals should be in the description building functions but there's too many of them and this feature is already over-scope + +# imp only items +obvious-x-pin-straight = a [color=#7c7c7c]straight[/color] [color=white]pride[/color] pin... [italic]Ew.[/italic] +obvious-x-cloak-straight = a cloak in the [color=#7c7c7c]straight[/color] [color=white]pride[/color] colors... [italic]Ew.[/italic] +obvious-x-pin-novice = a [color=#F4EE12]novice[/color] [color=#1CAC99]mark[/color], identifying as [color=#efefef]unskilled[/color]. [color=#1CAC99][italic]Be patient and considerate with { OBJECT($user) }.[/italic][/color] + diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/cart.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/cart.yml index 49a60bb9db9..76e009b2fff 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/cart.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/cart.yml @@ -6,6 +6,7 @@ PassengerIDCard: 5 ClothingHeadsetGrey: 5 ClothingHeadsetService: 5 # Delta-V + ClothingNeckNoviceMark: 5 # imp RubberStampApproved: 1 RubberStampDenied: 1 BoxFolderPlasticClipboardEmpty: 2 diff --git a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml index bc6ed9b499d..374560aabd8 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml @@ -136,7 +136,7 @@ sprite: Clothing/Neck/Cloaks/miner.rsi - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakTrans name: vampire cloak description: Worn by high ranking vampires of the transylvanian society of vampires. @@ -145,6 +145,8 @@ sprite: Clothing/Neck/Cloaks/trans.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakTrans # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-trans - type: entity parent: ClothingNeckBase @@ -214,7 +216,7 @@ proto: alien - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakAce name: pilot's cloak description: Cloak awarded to Nanotrasen's finest space aces. @@ -223,9 +225,11 @@ sprite: Clothing/Neck/Cloaks/ace.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakAce # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-ace - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakAro name: werewolf cloak description: This cloak lets others know you're a lone wolf. @@ -234,9 +238,11 @@ sprite: Clothing/Neck/Cloaks/aro.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakAro # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aro - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakAroace name: aeropilot's cloak # thank you happyman442 this was the best name idea ever description: Cloak awarded to Nanotrasen's finest pilots on planets with inhabitable atmospheres. @@ -245,9 +251,11 @@ sprite: Clothing/Neck/Cloaks/aroace.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakAroace # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aroace - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakBi name: poison cloak description: The purple color is a clear indicator you are poisonous. @@ -256,9 +264,11 @@ sprite: Clothing/Neck/Cloaks/bi.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakBi # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-bi - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakIntersex name: cyclops cloak description: The circle on this cloak represents a cyclops' eye. @@ -267,9 +277,11 @@ sprite: Clothing/Neck/Cloaks/intersex.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakIntersex # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-intersex - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakLesbian name: poet cloak description: This cloak belonged to an ancient poet, you forgot which one. @@ -278,9 +290,11 @@ sprite: Clothing/Neck/Cloaks/les.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakLesbian # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-lesbian - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakGay name: multi-level marketing cloak description: This cloak is highly sought after in the Nanotrasen Marketing Offices. @@ -289,9 +303,11 @@ sprite: Clothing/Neck/Cloaks/gay.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakGay # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-gay - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakEnby name: treasure hunter cloak description: This cloak belonged to a greedy treasure hunter. @@ -300,9 +316,11 @@ sprite: Clothing/Neck/Cloaks/enby.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakEnby # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-nonbinary - type: entity - parent: ClothingGenderCloakBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderCloakBase, BaseObviousCloak ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckCloakPan name: chef's cloak description: Meant to be worn alongside a frying pan. @@ -311,4 +329,7 @@ sprite: Clothing/Neck/Cloaks/pan.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckCloakPan # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-pan + diff --git a/Resources/Prototypes/Entities/Clothing/Neck/medals.yml b/Resources/Prototypes/Entities/Clothing/Neck/medals.yml index 4bd42ecf6b8..68b0206491d 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/medals.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/medals.yml @@ -13,6 +13,11 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true + - type: entity parent: ClothingNeckBase @@ -30,6 +35,10 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true - type: entity parent: ClothingNeckBase @@ -45,6 +54,10 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true - type: entity parent: ClothingNeckBase @@ -60,6 +73,10 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true - type: entity parent: ClothingNeckBase @@ -75,6 +92,10 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true - type: entity parent: ClothingNeckBase @@ -90,6 +111,10 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true - type: entity parent: ClothingNeckBase @@ -105,6 +130,10 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true - type: entity parent: ClothingNeckBase @@ -122,3 +151,8 @@ tags: - Medal - WhitelistChameleon + - type: WearerGetsExamineText # imp + thing: obvious-thing-medal + examineText: obvious-x-medal-nothing + pocketEvident: true + diff --git a/Resources/Prototypes/Entities/Clothing/Neck/misc.yml b/Resources/Prototypes/Entities/Clothing/Neck/misc.yml index 60ea7c49ecb..ad6b6c108c3 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/misc.yml @@ -46,7 +46,7 @@ sprite: Clothing/Neck/Misc/bling.rsi - type: entity - parent: ClothingNeckBase + parent: [ ClothingNeckBase, BaseObviousBadge ] # imp id: ClothingNeckLawyerbadge name: lawyer badge description: A badge to show that the owner is a 'legitimate' lawyer who passed the NT bar exam required to practice law. @@ -57,6 +57,8 @@ sprite: Clothing/Neck/Misc/lawyerbadge.rsi - type: TypingIndicatorClothing proto: lawyer + - type: WearerGetsExamineText # imp + thingType: obvious-type-law - type: entity parent: ClothingNeckBase diff --git a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml index 2966369a499..4e4a3d4fdda 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml @@ -11,6 +11,10 @@ sprite: Clothing/Neck/Misc/pins.rsi - type: Clothing sprite: Clothing/Neck/Misc/pins.rsi + - type: WearerGetsExamineText # imp + thing: obvious-thing-pin + examineText: obvious-desc-default + pocketEvident: true - type: entity parent: ClothingNeckPinBase @@ -46,6 +50,8 @@ equippedPrefix: lgbt - type: ChameleonClothing default: ClothingNeckLGBTPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride - type: entity parent: ClothingGenderPinBase @@ -59,6 +65,8 @@ equippedPrefix: ally - type: ChameleonClothing default: ClothingNeckAllyPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-straightally - type: entity parent: ClothingGenderPinBase @@ -72,6 +80,8 @@ equippedPrefix: aro - type: ChameleonClothing default: ClothingNeckAromanticPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aro - type: entity parent: ClothingGenderPinBase @@ -85,6 +95,8 @@ equippedPrefix: aroace - type: ChameleonClothing default: ClothingNeckAroacePin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aroace - type: entity parent: ClothingGenderPinBase @@ -98,6 +110,8 @@ equippedPrefix: asex - type: ChameleonClothing default: ClothingNeckAsexualPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-ace - type: entity parent: ClothingGenderPinBase @@ -111,6 +125,8 @@ equippedPrefix: bi - type: ChameleonClothing default: ClothingNeckBisexualPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-bi - type: entity parent: ClothingGenderPinBase @@ -124,6 +140,8 @@ equippedPrefix: gay - type: ChameleonClothing default: ClothingNeckGayPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-gay - type: entity parent: ClothingGenderPinBase @@ -137,6 +155,8 @@ equippedPrefix: inter - type: ChameleonClothing default: ClothingNeckIntersexPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-intersex - type: entity parent: ClothingGenderPinBase @@ -150,6 +170,8 @@ equippedPrefix: les - type: ChameleonClothing default: ClothingNeckLesbianPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-lesbian - type: entity parent: ClothingGenderPinBase @@ -163,6 +185,8 @@ equippedPrefix: non - type: ChameleonClothing default: ClothingNeckNonBinaryPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-nonbinary - type: entity parent: ClothingGenderPinBase @@ -176,6 +200,8 @@ equippedPrefix: pan - type: ChameleonClothing default: ClothingNeckPansexualPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-pan - type: entity parent: ClothingGenderPinBase @@ -202,6 +228,8 @@ equippedPrefix: omni - type: ChameleonClothing default: ClothingNeckOmnisexualPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-omni - type: entity parent: ClothingGenderPinBase @@ -215,6 +243,8 @@ equippedPrefix: gender - type: ChameleonClothing default: ClothingNeckGenderqueerPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-gq - type: entity parent: ClothingGenderPinBase @@ -241,6 +271,8 @@ equippedPrefix: trans - type: ChameleonClothing default: ClothingNeckTransPin + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-trans - type: entity parent: ClothingNeckPinBase @@ -252,6 +284,8 @@ state: autism - type: Clothing equippedPrefix: autism + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aut - type: entity parent: ClothingNeckPinBase @@ -263,6 +297,8 @@ state: goldautism - type: Clothing equippedPrefix: goldautism + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aut - type: entity parent: BaseItem diff --git a/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml b/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml index 7bc9b6e77be..3fcfe613511 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml @@ -136,7 +136,7 @@ # Pride Scarves - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedAce name: striped asexual scarf description: A stylish striped asexual scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -147,9 +147,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/ace.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedAce # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-ace - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedAro name: striped aromantic scarf description: A stylish striped aromantic scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -160,9 +162,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/aro.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedAro # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aro - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedAroace name: striped aroace scarf description: A stylish striped aroace scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -173,9 +177,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedAroace # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-aroace - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedBiSexual name: striped bisexual scarf description: A stylish striped bisexual scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -186,9 +192,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/bi.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedBiSexual # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-bi - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedGay name: striped gay scarf description: A stylish striped gay scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -199,9 +207,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/gay.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedGay # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-gay - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedInter name: striped intersex scarf description: A stylish striped intersex scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -212,9 +222,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/inter.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedInter # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-intersex - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedLesbian name: striped lesbian scarf description: A stylish striped lesbian scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -225,9 +237,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/lesbian.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedLesbian # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-lesbian - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedPan name: striped pan scarf description: A stylish striped pan scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -238,9 +252,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/pan.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedPan # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-pan - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedNonBinary name: striped non-binary scarf description: A stylish striped non-binary scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -251,9 +267,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/non.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedNonBinary # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-nonbinary - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedRainbow name: rainbow scarf description: A stylish rainbow scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -264,9 +282,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/rainbow.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedRainbow # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedTrans name: striped trans scarf description: A stylish striped trans scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. @@ -277,9 +297,11 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/trans.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedTrans # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + thingType: obvious-type-pride-trans - type: entity - parent: ClothingGenderScarfBase # DeltaV - Chameleon pride clothing + parent: [ ClothingGenderScarfBase, BaseObviousScarf ] # DeltaV - Chameleon pride clothing, porting imp's examine id: ClothingNeckScarfStripedLesbianLong name: long bacon description: Long bacon! Perfect for sharing with your girlfriend! @@ -290,3 +312,6 @@ sprite: Clothing/Neck/Scarfs/PrideScarfs/lesbian-long.rsi - type: ChameleonClothing # DeltaV - Chameleon pride clothing default: ClothingNeckScarfStripedLesbianLong # DeltaV - Chameleon pride clothing + - type: WearerGetsExamineText # imp + examineText: obvious-x-scarf-lesbian-long + diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index 93ddd05705d..ed9612212d1 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -85,6 +85,7 @@ - LighterInterdyne - LighterNanotrasen - MatchboxGorlex + - NoviceMark # from imp # End DeltaV Additions - type: loadoutGroup diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index ab7feced380..7e73280d3f6 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -25,6 +25,7 @@ equipment: shoes: ClothingShoesBootsWork id: TechnicalAssistantPDA + neck: ClothingNeckNoviceMark # imp belt: ClothingBeltUtilityEngineering ears: ClothingHeadsetEngineering pocket2: BookEngineersHandbook diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index 8860ec9efa6..1801993653a 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -21,6 +21,7 @@ equipment: shoes: ClothingShoesColorWhite #id: MedicalInternPDA # DeltaV: different PDAs in loadouts + neck: ClothingNeckNoviceMark # imp ears: ClothingHeadsetMedical belt: ClothingBeltMedicalFilled pocket2: BookMedicalReferenceBook diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 90884ef61eb..c9ee75f0b80 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -20,6 +20,7 @@ id: ResearchAssistantGear equipment: shoes: ClothingShoesColorWhite + neck: ClothingNeckNoviceMark # imp id: ResearchAssistantPDA ears: ClothingHeadsetScience pocket2: BookScientistsGuidebook diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index bf2d9d3caf5..c42ebce1ba5 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -28,6 +28,7 @@ id: SecurityCadetGear equipment: shoes: ClothingShoesBootsJackFilled + neck: ClothingNeckNoviceMark # imp outerClothing: ClothingOuterArmorDuraVest # DeltaV - ClothingOuterArmorBasic replaced in favour of stab vest. Sucks to suck, cadets id: SecurityCadetPDA ears: ClothingHeadsetSecurity diff --git a/Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml b/Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml index 596def94880..0f25e900e13 100644 --- a/Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml +++ b/Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml @@ -1,5 +1,5 @@ - type: entity - parent: ClothingNeckBase + parent: [ ClothingNeckBase, BaseObviousBadge ] # imp id: ClothingNeckProsecutorbadge name: prosecutor badge description: A badge to show that the owner is a 'legitimate' prosecutor who passed the NT bar exam required to practice law. @@ -10,6 +10,8 @@ sprite: _DV/Clothing/Neck/Misc/prosecutorbadge.rsi - type: TypingIndicatorClothing proto: lawyer + - type: WearerGetsExamineText # imp + thingType: obvious-type-law-prosecution - type: entity parent: ClothingNeckBase diff --git a/Resources/Prototypes/_DV/Roles/Jobs/Cargo/cargo_assistant.yml b/Resources/Prototypes/_DV/Roles/Jobs/Cargo/cargo_assistant.yml index 87b8c6431af..1a279301bf6 100644 --- a/Resources/Prototypes/_DV/Roles/Jobs/Cargo/cargo_assistant.yml +++ b/Resources/Prototypes/_DV/Roles/Jobs/Cargo/cargo_assistant.yml @@ -14,6 +14,7 @@ id: CargoAssistantGear equipment: id: CargoAssistantPDA + neck: ClothingNeckNoviceMark # imp ears: ClothingHeadsetCargo pocket1: BookLogistics diff --git a/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/cloaks.yml new file mode 100644 index 00000000000..8b357799ad0 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/cloaks.yml @@ -0,0 +1,8 @@ +- type: entity + id: BaseObviousCloak + abstract: true + components: + - type: WearerGetsExamineText + examineText: obvious-desc-colors + thing: obvious-thing-cloak + warnExamine: false # for funny jokes! diff --git a/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/misc.yml b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/misc.yml new file mode 100644 index 00000000000..e768c499004 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/misc.yml @@ -0,0 +1,7 @@ +- type: entity + id: BaseObviousBadge + abstract: true + components: + - type: WearerGetsExamineText + examineText: obvious-desc-proves + thing: obvious-thing-badge diff --git a/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/pins.yml new file mode 100644 index 00000000000..715bcb29cb4 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/pins.yml @@ -0,0 +1,12 @@ +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckNoviceMark + name: novice's mark + description: A mark in CentComm's green and gold, for identifying yourself as unskilled to others. Take it (as a trinket) if you need to! # the rest of the description is handled by WearerGetsExamineText + components: + - type: Sprite + sprite: _Impstation/Clothing/Neck/Misc/novicemark.rsi + - type: Clothing + sprite: _Impstation/Clothing/Neck/Misc/novicemark.rsi + - type: WearerGetsExamineText + examineText: obvious-x-pin-novice diff --git a/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/scarfs.yml b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/scarfs.yml new file mode 100644 index 00000000000..c5940b0a169 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Clothing/Neck/scarfs.yml @@ -0,0 +1,7 @@ +- type: entity + id: BaseObviousScarf + abstract: true + components: + - type: WearerGetsExamineText + examineText: obvious-desc-colors + thing: obvious-thing-scarf diff --git a/Resources/Prototypes/_Impstation/Loadouts/Miscellaneous/trinkets.yml b/Resources/Prototypes/_Impstation/Loadouts/Miscellaneous/trinkets.yml new file mode 100644 index 00000000000..5d03132609f --- /dev/null +++ b/Resources/Prototypes/_Impstation/Loadouts/Miscellaneous/trinkets.yml @@ -0,0 +1,5 @@ +- type: loadout + id: NoviceMark # no playtime lockout for needing time :) + storage: + back: + - ClothingNeckNoviceMark diff --git a/Resources/Textures/_Impstation/Clothing/Neck/Misc/novicemark.rsi/equipped-NECK.png b/Resources/Textures/_Impstation/Clothing/Neck/Misc/novicemark.rsi/equipped-NECK.png new file mode 100644 index 0000000000000000000000000000000000000000..ac0f4dff14212ce02ac93432f7627256f6b9b4b9 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enP@=>&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s z&%FEEcT1oezSIcMG+$o^Eg+i%h(X{|@MIu4)6>N?)bzf3@V@ptq-ha^QD|7(3cC+Ob%r$Yap z{>TYnT>g5?5`lNmT|Iekmc(`yPMvn#`P9yu?W*$k-h2dE3iR#mUxzzy@yL191idau wn!*I)^#mO#Gq0X@;Yrq$qXj_I7f31EFa&?o_$zqX0OUvpPgg&ebxsLQ0CdW3JOBUy literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Impstation/Clothing/Neck/Misc/novicemark.rsi/icon.png b/Resources/Textures/_Impstation/Clothing/Neck/Misc/novicemark.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c449bcdd7951e49f70556046ebc0868906c627c0 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCiji0(?STMa0BD-{%%M*FWt^^0{;TysKu19t;IaI({iw3#2$og8YL2Ljc3Q z=Dm?XG0p;y$YKTtzQZ8Qcszea3dpb$*NBqf{Irtt#G+J&fW*wa5 Date: Tue, 21 Jul 2026 00:09:16 +0200 Subject: [PATCH 02/36] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 8d032a1f7e6..ac77e7bbb19 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: DisposableCrewmember42 - changes: - - message: You can no longer drink the deep fryer. - type: Fix - id: 2078 - time: '2026-01-18T04:40:48.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/5238 - author: snowywinters changes: - message: Reinforced cameras can now be built! They have additional HP and are @@ -4371,4 +4364,14 @@ id: 2578 time: '2026-07-20T20:29:02.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/6292 +- author: keekee38 + changes: + - message: Added the novice mark, to help show that you're new! It is on intern + roles by default, and optional for everyone + type: Add + - message: Some clothes now have examine text, in particular pride clothes. + type: Tweak + id: 2579 + time: '2026-07-20T22:08:57.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/6118 Order: 1 From 064fd77a1136e93e2368e315a5b1488a7aa9685b Mon Sep 17 00:00:00 2001 From: Coryn Date: Tue, 21 Jul 2026 00:10:48 +0200 Subject: [PATCH 03/36] Shadekins arrived (#5481) * Merge pull request #838 from FoxxoTrystan/Shadekin Shadekin # Conflicts: # Resources/Prototypes/Body/species_base.yml # Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml # Resources/Prototypes/Guidebook/species.yml # Resources/Prototypes/Species/species_weights.yml * Merge pull request #868 from FoxxoTrystan/Shadekin-Perf Shadekin Performence * Merge pull request #883 from FoxxoTrystan/Shadekin-Patch Shadekin Patch + Markings * Merge pull request #947 from RHSvenson/Shadekin_SurvivalBox Added and implemented emergency boxes for nonbreathers * Merge pull request #1861 from ilovehans10/shadekin-guidebook-typo-fixes Shadekin guidebook typo fixes * Mars -> Marrs (#2381) Changes `@ mars` to `@ marr`s for Shadekin. Parity with emote wheel. Also, ` mars` feels weird. (...probably because Mars as in the planet.) - [X] I do not require assistance to complete the PR. - [X] Before posting/requesting review of a PR, I have verified that the changes work. - [X] I have added screenshots/videos of the changes, or this PR does not change in-game mechanics. - [X] I affirm that my changes are licensed under the [Starlight Fork License](https://github.com/ss14Starlight/space-station-14/blob/Starlight/LICENSE-Starlight.TXT) and grant permission for use in this repository under its conditions. **Changelog** :cl: Fractalflower - tweak: Changed Mar emote text to `@ marrs`. * Fix shadekin guidebook resistance info (#2881) The shadekin guidebook currently overstates the cellular resistance by 10% and vastly underestimates the bloodloss damage. The guidebook being accurate helps guide player understanding. image - [X] I do not require assistance to complete the PR. - [X] Before posting/requesting review of a PR, I have verified that the changes work. - [X] I have added screenshots/videos of the changes, or this PR does not change in-game mechanics. - [X] I affirm that my changes are licensed under the [Starlight Fork License](https://github.com/ss14Starlight/space-station-14/blob/Starlight/LICENSE-Starlight.TXT) and grant permission for use in this repository under its conditions. **Changelog** :cl: Penguinwizzard - fix: Turns out that we were issuing wildly incorrect guidebooks on Shadekin; an updated edition should now be available for crews. * New Shadekin Disabilities * Light hurts Shadekin Shadekin should get more than a mild sunburn in extreme light * Changes to make it work * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Foam Immunity Readded * Flash Modifer works now * Remove DarkLightComponent * Add missing Locale for Markings from Den * Fix Issues, Seperate from _DV namespace * Yaml Linter Fixes * ARGH * ARGHv.2 * ARGHv.3 * Nutribatard instead of Baguette * Exchange Nutribricks with PSB * Cotton Baguette * Changing away from BaseOrganic and Respirator Removal in Code * Fulfill Content Review Requests * Remove Eye Coloration - Unused * Remove ShadekinPhase entirely * Attribution correctly linked * Review Changes * done yml links correctly now * yml format in shadekin effects * Remove yml file mention and read Internal * Readd Internals * _StarLight -> _Starlight * Port to Nubody and maybe fixing some fuckups * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Shadekin Yaml Errors * Add missing markings name, add missing base_scale * Remove Internal Removal in base_species. Make it Component based * Add missing readonly * Remove Non Breahter emergency boxes, Shadekin normal box * DV Comment Fixes * Untouched File? * Use FlashMultiplierDurationEvent * Add missing attribution * Fixed scream attributions * Shadekins can now properly succumb. Starlight#4746 --------- Co-authored-by: Matthew Herber <32679887+Happyrobot33@users.noreply.github.com> Co-authored-by: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Co-authored-by: Rinary Co-authored-by: FoxxoTrystan Co-authored-by: Tess_the_Evil Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Tobias Berger Co-authored-by: Vanessa --- .../Fluids/EntitySystems/SmokeSystem.cs | 4 +- Content.Server/Ghost/GhostSystem.cs | 11 +- Content.Server/Mobs/DeathgaspComponent.cs | 10 +- Content.Server/_Starlight/ShadekinSystem.cs | 290 ++++++++ Content.Shared/Flash/SharedFlashSystem.cs | 3 +- .../Flash/Component/FlashModifierComponent.cs | 8 + .../_Starlight/Humanoid/EyeColor.cs | 51 ++ .../_Starlight/ShadekinComponent.cs | 45 ++ .../Voice/Shadekin/attributions.yml | 29 + .../Audio/_Starlight/Voice/Shadekin/mar.ogg | Bin 0 -> 10161 bytes .../_Starlight/Voice/Shadekin/scream_f1.ogg | Bin 0 -> 13443 bytes .../_Starlight/Voice/Shadekin/scream_f2.ogg | Bin 0 -> 24372 bytes .../_Starlight/Voice/Shadekin/scream_m1.ogg | Bin 0 -> 15854 bytes .../_Starlight/Voice/Shadekin/scream_m2.ogg | Bin 0 -> 20459 bytes .../_Starlight/Voice/Shadekin/wurble.ogg | Bin 0 -> 21569 bytes .../Locale/en-US/_DV/markings/shadekin.ftl | 154 +++++ .../_Starlight/datasets/names/shadekin.ftl | 58 ++ Resources/Locale/en-US/_Starlight/emotes.ftl | 5 + .../en-US/_Starlight/species/shadekin.ftl | 14 + .../en-US/_Starlight/species/species.ftl | 1 + .../en-US/_Starlight/traits/disabilities.ftl | 8 + Resources/Prototypes/Alerts/alerts.yml | 1 + .../Mobs/Customization/Markings/tattoos.yml | 18 +- Resources/Prototypes/Guidebook/species.yml | 7 + .../Loadouts/Miscellaneous/survival.yml | 1 + .../Prototypes/Species/species_weights.yml | 1 + .../Prototypes/_DV/Body/Species/shadekin.yml | 327 +++++++++ .../Mobs/Customization/Markings/shadekin.yml | 631 ++++++++++++++++++ Resources/Prototypes/_DV/Species/shadekin.yml | 19 + .../Prototypes/_Starlight/Alerts/shadekin.yml | 19 + .../_Starlight/Damage/modifier_sets.yml | 10 + .../_Starlight/Datasets/Names/shadekin.yml | 5 + .../_Starlight/Entities/Effects/shadekin.yml | 66 ++ .../Entities/Objects/Fun/plushie_bases.yml | 25 + .../Entities/Objects/Fun/plushies.yml | 12 + .../_Starlight/SoundCollections/shadekin.yml | 11 + .../_Starlight/Traits/disabilities.yml | 41 ++ .../_Starlight/Voice/speech_emote_sounds.yml | 80 +++ .../_Starlight/Voice/speech_emotes.yml | 35 + .../ServerInfo/Guidebook/Mobs/Species.xml | 1 + .../_Starlight/Guidebook/Mobs/Shadekin.xml | 65 ++ .../Objects/Storage/boxes.rsi/meta.json | 5 +- .../Objects/Storage/boxes.rsi/shadekin.png | Bin 0 -> 266 bytes .../_Starlight/Effects/shadekin.rsi/meta.json | 79 +++ .../_Starlight/Effects/shadekin.rsi/tp_in.png | Bin 0 -> 4384 bytes .../Effects/shadekin.rsi/tp_out.png | Bin 0 -> 5233 bytes .../Interface/Actions/shadekin.rsi/meta.json | 15 + .../Interface/Actions/shadekin.rsi/phase.png | Bin 0 -> 5595 bytes .../Alerts/shadekin.rsi/dangerous.png | Bin 0 -> 8475 bytes .../Interface/Alerts/shadekin.rsi/dark.png | Bin 0 -> 4335 bytes .../Interface/Alerts/shadekin.rsi/extreme.png | Bin 0 -> 4335 bytes .../Interface/Alerts/shadekin.rsi/high.png | Bin 0 -> 4335 bytes .../Interface/Alerts/shadekin.rsi/low.png | Bin 0 -> 4335 bytes .../Interface/Alerts/shadekin.rsi/meta.json | 36 + .../Interface/Alerts/shadekin.rsi/normal.png | Bin 0 -> 4335 bytes .../shadekin/ears.rsi/aqua_default.png | Bin 0 -> 1588 bytes .../shadekin/ears.rsi/aqua_incolor.png | Bin 0 -> 897 bytes .../shadekin/ears.rsi/bull_default.png | Bin 0 -> 1225 bytes .../shadekin/ears.rsi/bull_smooth.png | Bin 0 -> 508 bytes .../shadekin/ears.rsi/cowling_secondary.png | Bin 0 -> 602 bytes .../shadekin/ears.rsi/fluffy_butterfly.png | Bin 0 -> 653 bytes .../shadekin/ears.rsi/fluffy_cowling.png | Bin 0 -> 722 bytes .../shadekin/ears.rsi/fluffy_crow.png | Bin 0 -> 873 bytes .../shadekin/ears.rsi/fluffy_default.png | Bin 0 -> 1237 bytes .../shadekin/ears.rsi/fluffy_motley.png | Bin 0 -> 520 bytes .../shadekin/ears.rsi/fluffy_ringed_all.png | Bin 0 -> 246 bytes .../shadekin/ears.rsi/fluffy_ringed_left.png | Bin 0 -> 199 bytes .../shadekin/ears.rsi/fluffy_ringed_right.png | Bin 0 -> 203 bytes .../shadekin/ears.rsi/fluffy_spidy.png | Bin 0 -> 782 bytes .../ears.rsi/gauze_ear_all_default.png | Bin 0 -> 311 bytes .../shadekin/ears.rsi/gauze_ear_l_default.png | Bin 0 -> 327 bytes .../shadekin/ears.rsi/gauze_ear_r_default.png | Bin 0 -> 288 bytes .../Customization/shadekin/ears.rsi/meta.json | 167 +++++ .../shadekin/ears.rsi/motley_secondary.png | Bin 0 -> 467 bytes .../shadekin/ears.rsi/piercing_all.png | Bin 0 -> 192 bytes .../shadekin/ears.rsi/piercing_left.png | Bin 0 -> 525 bytes .../shadekin/ears.rsi/piercing_right.png | Bin 0 -> 527 bytes .../ears.rsi/ringed_all_secondary.png | Bin 0 -> 251 bytes .../ears.rsi/ringed_left_secondary.png | Bin 0 -> 214 bytes .../ears.rsi/ringed_right_secondary.png | Bin 0 -> 215 bytes .../shadekin/ears.rsi/saggy_brawly.png | Bin 0 -> 888 bytes .../shadekin/ears.rsi/saggy_default.png | Bin 0 -> 1453 bytes .../shadekin/ears.rsi/saggy_gauze_all.png | Bin 0 -> 326 bytes .../shadekin/ears.rsi/saggy_gauze_l.png | Bin 0 -> 331 bytes .../shadekin/ears.rsi/saggy_gauze_r.png | Bin 0 -> 338 bytes .../shadekin/ears.rsi/saggy_gradient.png | Bin 0 -> 656 bytes .../shadekin/ears.rsi/saggy_zebra.png | Bin 0 -> 553 bytes .../shadekin/ears.rsi/shadekin.png | Bin 0 -> 9242 bytes .../shadekin/ears.rsi/shadekin_stripes.png | Bin 0 -> 789 bytes .../Customization/shadekin/ears.rsi/shady.png | Bin 0 -> 1189 bytes .../shadekin/ears.rsi/short_butterfly.png | Bin 0 -> 748 bytes .../shadekin/ears.rsi/short_default.png | Bin 0 -> 1033 bytes .../shadekin/ears.rsi/short_ringed_all.png | Bin 0 -> 214 bytes .../shadekin/ears.rsi/short_ringed_left.png | Bin 0 -> 171 bytes .../shadekin/ears.rsi/short_ringed_right.png | Bin 0 -> 178 bytes .../shadekin/overlay.rsi/body_arrow.png | Bin 0 -> 327 bytes .../shadekin/overlay.rsi/body_blackhole.png | Bin 0 -> 165 bytes .../shadekin/overlay.rsi/body_brace.png | Bin 0 -> 232 bytes .../shadekin/overlay.rsi/body_brawly.png | Bin 0 -> 502 bytes .../shadekin/overlay.rsi/body_heart.png | Bin 0 -> 350 bytes .../shadekin/overlay.rsi/body_ink.png | Bin 0 -> 241 bytes .../shadekin/overlay.rsi/body_ink2.png | Bin 0 -> 260 bytes .../shadekin/overlay.rsi/body_ink3.png | Bin 0 -> 268 bytes .../shadekin/overlay.rsi/body_ink4.png | Bin 0 -> 271 bytes .../shadekin/overlay.rsi/body_ink5.png | Bin 0 -> 426 bytes .../shadekin/overlay.rsi/body_ink6.png | Bin 0 -> 397 bytes .../shadekin/overlay.rsi/body_ink_anim.png | Bin 0 -> 1179 bytes .../shadekin/overlay.rsi/body_lines.png | Bin 0 -> 379 bytes .../shadekin/overlay.rsi/body_neck.png | Bin 0 -> 344 bytes .../shadekin/overlay.rsi/body_shield.png | Bin 0 -> 349 bytes .../shadekin/overlay.rsi/body_vacuum.png | Bin 0 -> 356 bytes .../shadekin/overlay.rsi/meta.json | 81 +++ .../tails32x32.rsi/medium_twocolored.png | Bin 0 -> 580 bytes .../shadekin/tails32x32.rsi/meta.json | 27 + .../tails32x32.rsi/shadekin_medium.png | Bin 0 -> 807 bytes .../tails32x32.rsi/shadekin_shorter.png | Bin 0 -> 630 bytes .../shadekin/tails32x32.rsi/shorter_brush.png | Bin 0 -> 519 bytes .../shadekin/tails64x32.rsi/meta.json | 23 + .../shadekin/tails64x32.rsi/shadekin.png | Bin 0 -> 4674 bytes .../shadekin/tails64x32.rsi/shadekin_big.png | Bin 0 -> 5277 bytes .../tails64x32.rsi/shadekin_big_fluff.png | Bin 0 -> 1785 bytes .../Species/Shadekin/organs.rsi/appendix.png | Bin 0 -> 1609 bytes .../Species/Shadekin/organs.rsi/brain.png | Bin 0 -> 823 bytes .../Mobs/Species/Shadekin/organs.rsi/core.png | Bin 0 -> 927 bytes .../Mobs/Species/Shadekin/organs.rsi/eyes.png | Bin 0 -> 1014 bytes .../Species/Shadekin/organs.rsi/heart.png | Bin 0 -> 670 bytes .../Species/Shadekin/organs.rsi/kidneys.png | Bin 0 -> 759 bytes .../Species/Shadekin/organs.rsi/liver.png | Bin 0 -> 710 bytes .../Species/Shadekin/organs.rsi/meta.json | 38 ++ .../Species/Shadekin/organs.rsi/stomach.png | Bin 0 -> 770 bytes .../Species/Shadekin/organs.rsi/tongue.png | Bin 0 -> 2303 bytes .../Mobs/Species/Shadekin/parts.rsi/eyes.png | Bin 0 -> 1643 bytes .../Shadekin/parts.rsi/full-nomarkings.png | Bin 0 -> 3355 bytes .../Mobs/Species/Shadekin/parts.rsi/full.png | Bin 0 -> 4851 bytes .../Species/Shadekin/parts.rsi/head_f.png | Bin 0 -> 849 bytes .../Species/Shadekin/parts.rsi/head_m.png | Bin 0 -> 849 bytes .../Mobs/Species/Shadekin/parts.rsi/l_arm.png | Bin 0 -> 614 bytes .../Species/Shadekin/parts.rsi/l_foot.png | Bin 0 -> 1867 bytes .../Species/Shadekin/parts.rsi/l_hand.png | Bin 0 -> 450 bytes .../Mobs/Species/Shadekin/parts.rsi/l_leg.png | Bin 0 -> 3086 bytes .../Mobs/Species/Shadekin/parts.rsi/meta.json | 71 ++ .../Mobs/Species/Shadekin/parts.rsi/r_arm.png | Bin 0 -> 605 bytes .../Species/Shadekin/parts.rsi/r_foot.png | Bin 0 -> 1876 bytes .../Species/Shadekin/parts.rsi/r_hand.png | Bin 0 -> 460 bytes .../Mobs/Species/Shadekin/parts.rsi/r_leg.png | Bin 0 -> 3090 bytes .../Species/Shadekin/parts.rsi/torso_f.png | Bin 0 -> 1442 bytes .../Species/Shadekin/parts.rsi/torso_m.png | Bin 0 -> 1432 bytes .../Plushies/shadekin_plushie.rsi/icon.png | Bin 0 -> 749 bytes .../Plushies/shadekin_plushie.rsi/meta.json | 14 + 149 files changed, 2608 insertions(+), 14 deletions(-) create mode 100644 Content.Server/_Starlight/ShadekinSystem.cs create mode 100644 Content.Shared/_Starlight/Flash/Component/FlashModifierComponent.cs create mode 100644 Content.Shared/_Starlight/Humanoid/EyeColor.cs create mode 100644 Content.Shared/_Starlight/ShadekinComponent.cs create mode 100644 Resources/Audio/_Starlight/Voice/Shadekin/attributions.yml create mode 100644 Resources/Audio/_Starlight/Voice/Shadekin/mar.ogg create mode 100644 Resources/Audio/_Starlight/Voice/Shadekin/scream_f1.ogg create mode 100644 Resources/Audio/_Starlight/Voice/Shadekin/scream_f2.ogg create mode 100644 Resources/Audio/_Starlight/Voice/Shadekin/scream_m1.ogg create mode 100644 Resources/Audio/_Starlight/Voice/Shadekin/scream_m2.ogg create mode 100644 Resources/Audio/_Starlight/Voice/Shadekin/wurble.ogg create mode 100644 Resources/Locale/en-US/_DV/markings/shadekin.ftl create mode 100644 Resources/Locale/en-US/_Starlight/datasets/names/shadekin.ftl create mode 100644 Resources/Locale/en-US/_Starlight/emotes.ftl create mode 100644 Resources/Locale/en-US/_Starlight/species/shadekin.ftl create mode 100644 Resources/Locale/en-US/_Starlight/species/species.ftl create mode 100644 Resources/Locale/en-US/_Starlight/traits/disabilities.ftl create mode 100644 Resources/Prototypes/_DV/Body/Species/shadekin.yml create mode 100644 Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/shadekin.yml create mode 100644 Resources/Prototypes/_DV/Species/shadekin.yml create mode 100644 Resources/Prototypes/_Starlight/Alerts/shadekin.yml create mode 100644 Resources/Prototypes/_Starlight/Damage/modifier_sets.yml create mode 100644 Resources/Prototypes/_Starlight/Datasets/Names/shadekin.yml create mode 100644 Resources/Prototypes/_Starlight/Entities/Effects/shadekin.yml create mode 100644 Resources/Prototypes/_Starlight/Entities/Objects/Fun/plushie_bases.yml create mode 100644 Resources/Prototypes/_Starlight/Entities/Objects/Fun/plushies.yml create mode 100644 Resources/Prototypes/_Starlight/SoundCollections/shadekin.yml create mode 100644 Resources/Prototypes/_Starlight/Traits/disabilities.yml create mode 100644 Resources/Prototypes/_Starlight/Voice/speech_emote_sounds.yml create mode 100644 Resources/Prototypes/_Starlight/Voice/speech_emotes.yml create mode 100644 Resources/ServerInfo/_Starlight/Guidebook/Mobs/Shadekin.xml create mode 100644 Resources/Textures/Objects/Storage/boxes.rsi/shadekin.png create mode 100644 Resources/Textures/_Starlight/Effects/shadekin.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Effects/shadekin.rsi/tp_in.png create mode 100644 Resources/Textures/_Starlight/Effects/shadekin.rsi/tp_out.png create mode 100644 Resources/Textures/_Starlight/Interface/Actions/shadekin.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Interface/Actions/shadekin.rsi/phase.png create mode 100644 Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/dangerous.png create mode 100644 Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/dark.png create mode 100644 Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/extreme.png create mode 100644 Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/high.png create mode 100644 Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/low.png create mode 100644 Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/normal.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/aqua_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/aqua_incolor.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/bull_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/bull_smooth.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/cowling_secondary.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_butterfly.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_cowling.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_crow.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_motley.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_ringed_all.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_ringed_left.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_ringed_right.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_spidy.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/gauze_ear_all_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/gauze_ear_l_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/gauze_ear_r_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/motley_secondary.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/piercing_all.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/piercing_left.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/piercing_right.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_all_secondary.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_left_secondary.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_right_secondary.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_brawly.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gauze_all.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gauze_l.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gauze_r.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gradient.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_zebra.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/shadekin.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/shadekin_stripes.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/shady.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_butterfly.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_default.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_all.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_left.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_right.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_arrow.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_blackhole.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_brace.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_brawly.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_heart.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink2.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink3.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink4.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink5.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink6.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink_anim.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_lines.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_neck.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_shield.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_vacuum.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails32x32.rsi/medium_twocolored.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails32x32.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails32x32.rsi/shadekin_medium.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails32x32.rsi/shadekin_shorter.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails32x32.rsi/shorter_brush.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails64x32.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails64x32.rsi/shadekin.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails64x32.rsi/shadekin_big.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails64x32.rsi/shadekin_big_fluff.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/appendix.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/brain.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/core.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/eyes.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/heart.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/kidneys.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/liver.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/stomach.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/tongue.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/eyes.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/full-nomarkings.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/full.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/head_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/head_m.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/torso_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/torso_m.png create mode 100644 Resources/Textures/_Starlight/Objects/Fun/Plushies/shadekin_plushie.rsi/icon.png create mode 100644 Resources/Textures/_Starlight/Objects/Fun/Plushies/shadekin_plushie.rsi/meta.json diff --git a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs index c787132504f..ab493b754e8 100644 --- a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs +++ b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs @@ -23,6 +23,7 @@ using Robust.Shared.Timing; using System.Linq; using Content.Shared.EntityEffects.Effects.Solution; using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; +using Content.Server.Body.Components; // Delta V namespace Content.Server.Fluids.EntitySystems; @@ -267,7 +268,8 @@ public sealed class SmokeSystem : EntitySystem if (!_solutionContainerSystem.ResolveSolution(entity, bloodstream.BloodSolutionName, ref bloodstream.BloodSolution, out var bloodSolution) || bloodSolution.AvailableVolume <= 0) return; - var blockIngestion = _internals.AreInternalsWorking(entity); + var blockIngestion = _internals.AreInternalsWorking(entity) + || !HasComp(entity); // Starlight - Shadekin does not breathe and "AreInternalsWorking" does not check for that var cloneSolution = solution.Clone(); var availableTransfer = FixedPoint2.Min(cloneSolution.Volume, component.TransferRate); diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index eefe7782204..9b3db6d735e 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -41,6 +41,7 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; +using Content.Server.Mobs; // Starlight namespace Content.Server.Ghost { @@ -619,7 +620,15 @@ namespace Content.Server.Ghost _damageable.GetTotalDamage((playerEntity.Value, damageable)); } - DamageSpecifier damage = new(_prototypeManager.Index(AsphyxiationDamageType), dealtDamage); + // Starlight - Start + //DamageSpecifier damage = new(_prototypeManager.Index(AsphyxiationDamageType), dealtDamage); + + var damageType = _prototypeManager.Index(AsphyxiationDamageType); + if (TryComp(playerEntity, out var deathgasp)) + damageType = _prototypeManager.Index(deathgasp.DamageType); + + DamageSpecifier damage = new(damageType, dealtDamage); + // Starlight - End _damageable.ChangeDamage(playerEntity.Value, damage, true); } diff --git a/Content.Server/Mobs/DeathgaspComponent.cs b/Content.Server/Mobs/DeathgaspComponent.cs index 5ac925c3dd2..9d8784e4fd3 100644 --- a/Content.Server/Mobs/DeathgaspComponent.cs +++ b/Content.Server/Mobs/DeathgaspComponent.cs @@ -1,4 +1,6 @@ -using Content.Shared.Chat.Prototypes; +using Content.Shared.Chat.Prototypes; // Starlight +using Content.Shared.Damage.Prototypes; // Starlight +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Mobs; @@ -21,4 +23,10 @@ public sealed partial class DeathgaspComponent : Component /// [DataField] public bool NeedsCritical = true; + + /// + /// Starlight - The damage that is taken when succumbing + /// + [DataField] + public ProtoId DamageType = "Asphyxiation"; } diff --git a/Content.Server/_Starlight/ShadekinSystem.cs b/Content.Server/_Starlight/ShadekinSystem.cs new file mode 100644 index 00000000000..41d7acc9fce --- /dev/null +++ b/Content.Server/_Starlight/ShadekinSystem.cs @@ -0,0 +1,290 @@ +using Content.Shared.Humanoid; +using Content.Shared.Alert; +using Robust.Server.GameObjects; +using Content.Shared.Examine; +using Robust.Server.Containers; +using Content.Shared._Starlight; +using Content.Shared.Damage.Components; +using Content.Shared.Mobs; +using Content.Shared.Movement.Systems; +using Content.Shared.Movement.Components; +using Content.Shared.Damage; +using Content.Server.Chat.Managers; +using Content.Shared.Damage.Systems; +using Content.Shared._Goobstation.Overlays; +using Robust.Shared.Timing; +using Content.Server.Body.Components; +using System.Linq; +using Content.Shared._Goobstation.Flashbang; +using Content.Shared._Starlight.Flash.Components; +using Content.Shared.Body.Components; +using Content.Shared.Flash; // Delta V - Flash Work + + +namespace Content.Server._Starlight; + +public sealed class ShadekinSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; + [Dependency] private readonly ContainerSystem _container = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly MovementSpeedModifierSystem _speed = default!; + [Dependency] private readonly SharedFlashSystem _flashSystem = default!; + + private sealed class LightCone + { + public float Direction { get; set; } + public float InnerWidth { get; set; } + public float OuterWidth { get; set; } + } + private readonly Dictionary> lightMasks = new() + { + ["/Textures/Effects/LightMasks/cone.png"] = new List + { + new LightCone { Direction = 0, InnerWidth = 30, OuterWidth = 60 } + }, + ["/Textures/Effects/LightMasks/double_cone.png"] = new List + { + new LightCone { Direction = 0, InnerWidth = 30, OuterWidth = 60 }, + new LightCone { Direction = 180, InnerWidth = 30, OuterWidth = 60 } + } + }; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnEyeColorChange); + SubscribeLocalEvent(OnRefreshMovementSpeedModifiers); + SubscribeLocalEvent(OnShadekinFlashed); // Delta V - Prevent Chain Flashing + SubscribeLocalEvent(GetFlashModifier); // Delta V - Flash Modifier to Shadekin + } + + private void OnInit(EntityUid uid, ShadekinComponent component, ComponentStartup args) + { + UpdateAlert(uid, component, (short)component.CurrentState); + RemComp(uid); + } + + private void OnEyeColorChange(EntityUid uid, ShadekinComponent component, EyeColorInitEvent args) + { + if (!TryComp(uid, out var humanoid)) + return; + + // humanoid.EyeColor = Color.Black; + Dirty(uid, humanoid); + } + + public void UpdateAlert(EntityUid uid, ShadekinComponent component, short state) + { + _alerts.ShowAlert(uid, component.ShadekinAlert, state); + } + + private Angle GetAngle(EntityUid lightUid, SharedPointLightComponent lightComp, EntityUid targetUid) + { + var (lightPos, lightRot) = _transform.GetWorldPositionRotation(lightUid); + lightPos += lightRot.RotateVec(lightComp.Offset); + + var (targetPos, targetRot) = _transform.GetWorldPositionRotation(targetUid); + + var mapDiff = targetPos - lightPos; + + var oppositeMapDiff = (-lightRot).RotateVec(mapDiff); + var angle = oppositeMapDiff.ToWorldAngle(); + + if (angle == double.NaN && _transform.ContainsEntity(targetUid, lightUid) || _transform.ContainsEntity(lightUid, targetUid)) + { + angle = 0f; + } + + return angle; + } + + /// + /// Return an illumination float value with is how many "energy" of light is hitting our ent. + /// WARNING: This function might be expensive, Avoid calling it too much and CACHE THE RESULT! + /// + /// + /// + public float GetLightExposure(EntityUid uid) + { + var illumination = 0f; + + var lightQuery = _lookup.GetEntitiesInRange(Transform(uid).Coordinates, 20, LookupFlags.Uncontained); + + foreach (var light in lightQuery) + { + if (!light.Comp.Enabled + || light.Comp.Radius < 1 + || light.Comp.Energy <= 0) + continue; + + var (lightPos, lightRot) = _transform.GetWorldPositionRotation(light); + lightPos += lightRot.RotateVec(light.Comp.Offset); + + if (!_examine.InRangeUnOccluded(light, uid, light.Comp.Radius, null)) + continue; + + Transform(uid).Coordinates.TryDistance(EntityManager, Transform(light).Coordinates, out var dist); + + var denom = dist / light.Comp.Radius; + var attenuation = 1 - (denom * denom); + var calculatedLight = 0f; + + if (light.Comp.MaskPath is not null) + { + var angleToTarget = GetAngle(light, light.Comp, uid); + foreach (var cone in lightMasks[light.Comp.MaskPath]) + { + var coneLight = 0f; + var angleAttenuation = (float)Math.Min((float)Math.Max(cone.OuterWidth - angleToTarget, 0f), cone.InnerWidth) / cone.OuterWidth; + + if (angleToTarget.Degrees - cone.Direction > cone.OuterWidth) + continue; + else if (angleToTarget.Degrees - cone.Direction > cone.InnerWidth + && angleToTarget.Degrees - cone.Direction < cone.OuterWidth) + coneLight = light.Comp.Energy * attenuation * attenuation * angleAttenuation; + else + coneLight = light.Comp.Energy * attenuation * attenuation; + + calculatedLight = Math.Max(calculatedLight, coneLight); + } + } + else + calculatedLight = light.Comp.Energy * attenuation * attenuation; + + illumination += calculatedLight; //Math.Max(illumination, calculatedLight); + } + + return illumination; + } + + private void SetPassiveBuff(EntityUid uid, ShadekinState state) + { + if (!TryComp(uid, out var passive)) + return; + + if (state == ShadekinState.Extreme || state == ShadekinState.Annoying || state == ShadekinState.High) + { + // passive.DamageCap = 1; + } + else if (state == ShadekinState.Low) + { + // passive.DamageCap = 20; + passive.AllowedStates.Clear(); + passive.AllowedStates.Add(MobState.Alive); + passive.Interval = 1f; + } + else if (state != ShadekinState.Dark) + { + // passive.DamageCap = 0; + passive.AllowedStates.Clear(); + passive.AllowedStates.Add(MobState.Alive); + passive.AllowedStates.Add(MobState.Critical); + passive.AllowedStates.Add(MobState.Dead); + passive.Interval = 0.5f; + } + } + + private void ToggleNightVision(EntityUid uid, ShadekinState state) + { + if (state == ShadekinState.Dark) + { + var nightVisionComponent = EnsureComp(uid); + nightVisionComponent.Color = Color.FromHex("#808080"); // Delta V - Change Night Vision Color + } + else + { + if (TryComp(uid, out var nightVision) && nightVision.IsActive) + _flashSystem.Flash(uid, uid, uid, TimeSpan.FromSeconds(0.5 * (int)state), 0.5f); + RemComp(uid); + } + } + + private void ApplyLightDamage(EntityUid uid, float dmg) + { + var damage = new DamageSpecifier(); + damage.DamageDict.Add("Heat", dmg); + _damageable.TryChangeDamage(uid, damage, true, false); + + } + + private void OnRefreshMovementSpeedModifiers(EntityUid uid, ShadekinComponent component, RefreshMovementSpeedModifiersEvent args) + { + if (component.CurrentState == ShadekinState.Low || component.CurrentState == ShadekinState.Annoying || + component.CurrentState == ShadekinState.Dark || component.CurrentState == ShadekinState.Invalid) + return; + + if (!TryComp(uid, out var movement)) + return; + + var sprintDif = movement.BaseWalkSpeed / movement.BaseSprintSpeed; + args.ModifySpeed(1f, sprintDif); + } + + private ShadekinState GetStateByThreshold(ShadekinComponent component, float lightExposure) + { + var returnState = ShadekinState.Dark; + + foreach (var (threshold, shadekinState) in component.Thresholds.Reverse()) + { + if (threshold <= lightExposure) + { + returnState = shadekinState; + break; + } + } + + return returnState; + } + + // Delta V - Begin Shadekin Flash Changes + private void GetFlashModifier(EntityUid uid, ShadekinComponent comp, FlashDurationMultiplierEvent args) + { + if (!TryComp(uid, out var flashModifier)) + return; + + args.Multiplier = flashModifier.Modifier; + } + + private void OnShadekinFlashed(EntityUid uid, ShadekinComponent comp, AfterFlashedEvent ev) + { + RemComp(uid); + } + // Delta V - End + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var component)) + { + if (_timing.CurTime < component.NextUpdate) + continue; + + component.NextUpdate = _timing.CurTime + component.UpdateCooldown; + + var lightExposure = 0f; + + if (!_container.IsEntityInContainer(uid)) + lightExposure = GetLightExposure(uid); + + component.CurrentState = GetStateByThreshold(component, lightExposure); + + UpdateAlert(uid, component, (short)component.CurrentState); + + SetPassiveBuff(uid, component.CurrentState); + ToggleNightVision(uid, component.CurrentState); + + _speed.RefreshMovementSpeedModifiers(uid); + + if (component.CurrentState == ShadekinState.Extreme) + ApplyLightDamage(uid, 5); + } + } +} diff --git a/Content.Shared/Flash/SharedFlashSystem.cs b/Content.Shared/Flash/SharedFlashSystem.cs index 50317a74478..cc867d5c23f 100644 --- a/Content.Shared/Flash/SharedFlashSystem.cs +++ b/Content.Shared/Flash/SharedFlashSystem.cs @@ -26,6 +26,7 @@ using System.Linq; using Content.Shared.Movement.Systems; using Content.Shared.Random.Helpers; using Content.Shared.Clothing.Components; +using Content.Shared._Starlight.Flash.Components; // Delta V - For Flash Duration namespace Content.Shared.Flash; @@ -173,7 +174,7 @@ public abstract class SharedFlashSystem : EntitySystem // Goobstation end // don't paralyze, slowdown or convert to rev if the target is immune to flashes - if (!_statusEffectsSystem.TryAddStatusEffect(target, FlashedKey, flashDuration, true) && !ignoreProtection) //DeltaV: allow flashing to ignore flash protection + if (!_statusEffectsSystem.TryAddStatusEffect(target, FlashedKey, flashDuration * multiplier, true) && !ignoreProtection) //DeltaV: allow flashing to ignore flash protection. Added Flashduration Multiplier return; if (stunDuration != null) diff --git a/Content.Shared/_Starlight/Flash/Component/FlashModifierComponent.cs b/Content.Shared/_Starlight/Flash/Component/FlashModifierComponent.cs new file mode 100644 index 00000000000..b9231392e29 --- /dev/null +++ b/Content.Shared/_Starlight/Flash/Component/FlashModifierComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Shared._Starlight.Flash.Components; + +[RegisterComponent] +public sealed partial class FlashModifierComponent : Component +{ + [DataField] + public float Modifier = 1f; +} diff --git a/Content.Shared/_Starlight/Humanoid/EyeColor.cs b/Content.Shared/_Starlight/Humanoid/EyeColor.cs new file mode 100644 index 00000000000..78e1f44674a --- /dev/null +++ b/Content.Shared/_Starlight/Humanoid/EyeColor.cs @@ -0,0 +1,51 @@ +namespace Content.Shared.Humanoid; + +public static class EyeColor +{ + public const float ShadekinBrightness = 0.251f; + + public static bool VerifyShadekin(Color color) + { + var colorHsv = Color.ToHsv(color); + + if (colorHsv.Z > ShadekinBrightness) + return false; + + return true; + } + + public static Color MakeShadekinValid(Color color) + { + var hsv = Color.ToHsv(color); + + hsv.Z = Math.Clamp(hsv.Z, 0, ShadekinBrightness); + + return Color.FromHsv(hsv); + } + + public static bool VerifyEyeColor(HumanoidEyeColor type, Color color) + { + return type switch + { + HumanoidEyeColor.Shadekin => VerifyShadekin(color), + _ => false, + }; + } + + public static Color ValidEyeColor(HumanoidEyeColor type, Color color) + { + return type switch + { + HumanoidEyeColor.Shadekin => MakeShadekinValid(color), + _ => color + }; + } +} + +public enum HumanoidEyeColor : byte +{ + Shadekin, +} + +[ByRefEvent] +public record struct EyeColorInitEvent(); \ No newline at end of file diff --git a/Content.Shared/_Starlight/ShadekinComponent.cs b/Content.Shared/_Starlight/ShadekinComponent.cs new file mode 100644 index 00000000000..3e2444ca1a9 --- /dev/null +++ b/Content.Shared/_Starlight/ShadekinComponent.cs @@ -0,0 +1,45 @@ +using Content.Shared.Alert; +using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._Starlight; + +#region Shadekin +[RegisterComponent, NetworkedComponent, AutoGenerateComponentPause, AutoGenerateComponentState] +public sealed partial class ShadekinComponent : Component +{ + [DataField] + public ProtoId ShadekinAlert = "Shadekin"; + + [ViewVariables(VVAccess.ReadOnly), AutoPausedField] + public TimeSpan NextUpdate = TimeSpan.Zero; + + [DataField] + public TimeSpan UpdateCooldown = TimeSpan.FromSeconds(1f); + + [AutoNetworkedField, ViewVariables] + public ShadekinState CurrentState { get; set; } = ShadekinState.Dark; + + [DataField("thresholds", required: true)] + public SortedDictionary Thresholds = new(); + + /// + /// whether to flicker lights or not. default on + /// + [DataField] public bool DoLightFlicker = true; +} + +[Serializable, NetSerializable] +public enum ShadekinState : byte +{ + Invalid = 0, + Dark = 1, + Low = 2, + Annoying = 3, + High = 4, + Extreme = 5 + +} +#endregion diff --git a/Resources/Audio/_Starlight/Voice/Shadekin/attributions.yml b/Resources/Audio/_Starlight/Voice/Shadekin/attributions.yml new file mode 100644 index 00000000000..6c2ce49f2ba --- /dev/null +++ b/Resources/Audio/_Starlight/Voice/Shadekin/attributions.yml @@ -0,0 +1,29 @@ +- files: ["wurble.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from CHOMPStation" + source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/wurble.ogg" + +- files: ["mar.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from CHOMPStation" + source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/mar.ogg" + +- files: ["scream_f1.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken and remixed from CHOMPStation" + source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_f1.ogg" + +- files: ["scream_f2.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken and remixed from CHOMPStation" + source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_f2.ogg" + +- files: ["scream_m1.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken and remixed from CHOMPStation" + source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_m1.ogg" + +- files: ["scream_m2.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken and remixed from CHOMPStation" + source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_f2.ogg" \ No newline at end of file diff --git a/Resources/Audio/_Starlight/Voice/Shadekin/mar.ogg b/Resources/Audio/_Starlight/Voice/Shadekin/mar.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b13d2df83774dd6bdc545157e1054ae3c877a180 GIT binary patch literal 10161 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_Starlight/Voice/Shadekin/scream_m1.ogg b/Resources/Audio/_Starlight/Voice/Shadekin/scream_m1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..67f4734bcf49c5c0996980198883950c845c4d0b GIT binary patch literal 15854 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 AegFUf literal 0 HcmV?d00001 diff --git a/Resources/Audio/_Starlight/Voice/Shadekin/scream_m2.ogg b/Resources/Audio/_Starlight/Voice/Shadekin/scream_m2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bc499bad782858e3a58a4c0bf2271d3f3aaac944 GIT binary patch literal 20459 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 P00000006+BlKf2o-IC)Y literal 0 HcmV?d00001 diff --git a/Resources/Audio/_Starlight/Voice/Shadekin/wurble.ogg b/Resources/Audio/_Starlight/Voice/Shadekin/wurble.ogg new file mode 100644 index 0000000000000000000000000000000000000000..859c9df35308e50a7e8be215e6ff4ca21d3737bc GIT binary patch literal 21569 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 + diff --git a/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Shadekin.xml b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Shadekin.xml new file mode 100644 index 00000000000..54a694da879 --- /dev/null +++ b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Shadekin.xml @@ -0,0 +1,65 @@ + + # Shadekin + + + + + Shadekin are a species whom originally dwell and are from another dimension called “The Dark”. + Most if not all Shadekin that are employed or under contract from NT are afflicted with a condition they call “Black-eye” and or as the Shadekin themselves refer to as being “Burnt”. + This affliction and condition supposedly is the cause of them being incapable of returning to the aforementioned “The Dark”. + Adapted to their home dimension of which is one absent of light, their vision is highly reactive to light levels. + Dim lights being a source of passive annoyance or discomfort, bright lights ail them much more noticeably, being a source of pain and harm to them. + + ## Racial Features + + - Receive [color=#ffa500]20% more heat damage[/color] + - Receive [color=#1e90ff]25% less cold damage[/color] + - Receive [color=#ffa500]170% more bloodloss damage[/color] + - Receive [color=#ffa500]30% more radiation damage[/color] + - Receive [color=#ffa500]25% more shock damage[/color]. + - Heal [color=#ffa500]bloodloss damage 75% slower[/color] + - They do not breathe and thus require no air. + - Flash stun times are doubled. + - Deal [color=red]5[/color] slashing damage with claws. + + ## Marish + Shadekin have a language shared amongst them all, composed of only a singular word: “Mar”, whilst it can be altered in length and or composition, from potential additional A’s or R’s in the pronunciation. With this one and simple word however, Shadekin can convey and provide complex thought, and deep emotion alike. + Simplistic but endlessly deep for the Shadekin. + + ## Age & Names + Shadekin are an example of a very slow biological aging process. + Whilst maturity and eligible employment are known to standard to be 18. + Often Shadekin are considered young up until the age range of around 100, the ranges of 100-200 are what would be considered middle-aged, 200-300 being the instance of them starting to enter a elderly state. + Names are of great significance to Shadekin. Often these names are considered titles and bear them upon entering the physical from their home of “The Dark”. + These titles are often provided and or given to them by the attributes or qualities they exhibit, however there are other cases where it can be even items, passions, or ideas they are fond of. + There are instances as well of some Shadekin whom have become acclimated to provide their own titles, replacing previous ones. + This is not an aspect taken lightly by them nor other Shadekin, such a decision is akin to throwing away their previous selves. + + ## Nightvision + Shadekin due to their natural adaptation to their home dimension have innate Night-vision. + Capable of seeing and viewing things even in the most abyss-like darknesses, not needing any form of light providing device. + When wearing flash resistant equipment their vision will be normal. + This can be easily sorted by the Shadekin wearing a HUD variant, no longer having flash resistance, but keeping the utility that their nightvision and the HUD provide. + + + + + + ## LIGHT SENSITIVITY + [color=yellow]Light Exposure: Dark[/color] + - Passive Regeneration is increased. + - Nightvision. + + [color=yellow]Light Exposure: Low[/color] + - No changes. + + [color=yellow]Light Exposure: Annoying[/color] + - Passive Regeneration is disabled. + + [color=yellow]Light Exposure: High[/color] + - Heavy Slowdown. + + [color=yellow]Light Exposure:[/color] [color=red]EXTREME[/color] + - Get burned [color=red]1[/color] heat damage per second. + + diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index e17ef58b0a6..856abc3deeb 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/ca674eff9d23e04357b7609ef7e07eadfc1a993f and modified by Flareguy (github), encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef, nitrogentank modified from extendedtank by Errant, agrichemkit by Cerol, modified by ps3moira (github). sechud renamed to secglasses, new sechud, sunglasses by K-Dynamic (github), trigger by IProduceWidgets, utensils by gentleman-bird (github). stamp, totes modified from box by Mixelz.", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/ca674eff9d23e04357b7609ef7e07eadfc1a993f and modified by Flareguy (github), encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef, nitrogentank modified from extendedtank by Errant, agrichemkit by Cerol, modified by ps3moira (github). sechud renamed to secglasses, new sechud, sunglasses by K-Dynamic (github), trigger by IProduceWidgets, utensils by gentleman-bird (github). stamp, totes modified from box by Mixelz, shadekin icon by RHSvenson (github)", "size": { "x": 32, "y": 32 @@ -253,6 +253,9 @@ }, { "name": "agrichemkit" + }, + { + "name": "shadekin" } ] } diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/shadekin.png b/Resources/Textures/Objects/Storage/boxes.rsi/shadekin.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe1b15b5fb8f6410f0a8fa1e27365b8253db3b7 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-G$*l2rk&Wd@@jkv%n*=n1O*?7=#%aX3dcR3bL1Y`ns~eWM||O6}kTVjRH`}&(p;* zB;xSf3kP`{40xOa#aAkqFulKf*2sIuAx;m=hA;P3C+TlfVq{?W)B1MH-0+*h(Wxgs zuG?j+pfpRR_hzc~@i)u&tO~XN;AYA2K)CFqoJifQC%4*xCNp@t`njxgN@xNAt07X} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Effects/shadekin.rsi/meta.json b/Resources/Textures/_Starlight/Effects/shadekin.rsi/meta.json new file mode 100644 index 00000000000..afec12131a6 --- /dev/null +++ b/Resources/Textures/_Starlight/Effects/shadekin.rsi/meta.json @@ -0,0 +1,79 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/CHOMPStation2/CHOMPStation2/", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "tp_out", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "tp_in", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/_Starlight/Effects/shadekin.rsi/tp_in.png b/Resources/Textures/_Starlight/Effects/shadekin.rsi/tp_in.png new file mode 100644 index 0000000000000000000000000000000000000000..00890591cb8b1357fc5e8c299905dd15061eeda3 GIT binary patch literal 4384 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 ruy$_H%|XNf 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 SzkU8gSk>)2%jdQoc=s>of*H2} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/dark.png b/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b1c5b8dc7cc8f2c42783f046829169fd6b489e20 GIT binary patch literal 4335 zcmeH{O-NKx6vxk_Qs;?gVkQm6P~aj(auqy-7#VRM`J|>GU1f;6Xd{eCjZq>>v zXx5@dL>nQhO|%|p8*SS31ryWY2ZT%@(sa)o&*jXW_ukCdCg@$5Ip^H-@&Da3;{6N# zy>qW4+zl$9L^_MX-M?Y=r?{%-8N*JAjqL(U=90 zXa$&_1=to>(`kSkrvWlU0LBu)k?}`wE}j*Mz<6{p4$yHDKibWw=O)Ev^@M5lRR5?t zc(|)}r89O0prOr-gf9;Sv{1w6O;O<=e*^vo{__oJfAjuy@_CN>TZ}7vnpIH~7bIaf zTP{#p0F?-s9v4#8n12sl)3ivBd$8G3GC+LG_4#6E>3-J5Uv2P z9?sb>4+WcPMv>((PNLZGC6$qVeWO#FVHkQcnat9qBLIn0krxEjI9V=Ed4wPzZ9#w+ z%d>I$n`0boZbW0BN$?#u$sf`AViv?93^ z$Ak9OUO-ggPv27T?B&}cy`l>hLe~S((v<&0BoM0MKM@I14p)sQy|w|_>@P=g%zFZ0 z0d4{z@DPX{h%XLAf|NsHJYM3MFA0D}2!WPB(8t4pNHCwt3#0F}cB(;J763I62*n%- zU&_zd_3S?JAMZE6bMh+!PzP|JQZH3|{n+1tzkz>d16{WsHy-1;%g5IwoRdHqZ~D#v39ohY@J zXl9mZl|wUmqKiSI!WdEb7SWEWd(TcB;e>B0Hku?l(2L`mo)x& z@VUvpT|}MxbZbC}%PmBkTA3D>~n6 zytUb5D0zRpH3Qgw2dF7@zccC!g@U0&p%Ao%+h#dZi09Se)dkQL4u`dLI$Z<_P4m(Hg++v`HUb}H z045qS5dj__)~Q%ru?0u1Edd$AM7+DZv=xwm2ocF=vsp1I807!SiU1e_@Q+`LU3{Uh zO4>3vB!DU=v4=^#hb=^4LsUWnSjkj?VcV@;YM`4EKoOH@=NqiyN#Kj9gm6<;ngL5~ zO9Z4Cn#mkwGOuB)gm}#$xsJFa&IX(f{8JlPOD%nxeq7wfq_<3r#3yx~_Ob0XFY)H& P4OsDkq3EOjv8%rTC7k7P literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/high.png b/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/high.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1d1d6d042d5a57fe10b2306e10cbab480c2aa4 GIT binary patch literal 4335 zcmeHFPe>GD6n_(??v`d$o781N=ui?}cL-u-&0T7wHbFgQhWC=B#B&;@E%)URG6}rhZ&G_8a z^Iw=S$cGgaN`U&(AYy+#NJyZ7*H7=tHSgNd;-9b0KP-QewT|P%S{`iy-6}axQ$>i^ z@imDp$yg=lOPvUkbI1a5W8nn%H$S}O4gm@SG_MI(zPK-=? zL9*ftKwc975%LH^*FGm;98PV%kJX#H zz;e0l;OLAAF%-smJv`3>wss`rCK=U&$#ZAi$hK|5sZ=WN@#Dhe+{?4j!}Gbn?oS~= z&dkjRR4SDiM~TF*pD|HwcYi$o0ab6em1Pfz*;1*LOD^VmI6Vo2;RmdY^JxCLd!-YC zBE+bqxbqX^PRt`QZyn#d3xL@mA|8*?{n>f}uHzG$pPyj#>0gr8{rV7GKRRb}s-r7}MC;{BSLO53iF(KE2h#B`= z0=S92Dkv-=_eMV2K(v8>W&;Z}zVvaT_oWcjGTfgVu`D_u;-;FwSEp|v%60W*<~j#2 F{{%plrg;DW literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/low.png b/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/low.png new file mode 100644 index 0000000000000000000000000000000000000000..bb72fb9398dd03c6e2ede3d3e7a2020906d108ca GIT binary patch literal 4335 zcmeH{OK1~e5XWc1J`!oIQfo0FLBWF-@tReTl$2(%TQn8Yo~%gQgO@^7Bo!>u9z2K# z5qw<=ig;1P$3Z-KNDy!0MGq=MAcoR_N(3py@4t1H>Asrv@>FOMHqiP&s*qCj+D4<7Bp{UhhqX2)5>9P0Si zzGb_9=-!X9k3>EDjZFH)cuY(7e6FjC$f5~E6No18?-Qt&9ya;GDY~xXA1{;wdeb5E`VlPG-u{EmHt-mTrTH!xnVf4B1kN2h#sd=u!F z;(S^w5K^4`{2+V*p50!wZk|l^@fj{JVZ21q@TF3-`$necTzakzRI@mD20?I*mzUz4 zcS5)TZY>n-&m2vOzHQt~VL+sKrM6<9fne!HxlR2#RuQ`Z)ZRJ(6sd{8xl95{L0PD7 zESDVHx^}>sxicr5i#L|6Ww~6od@7Z)yqeCsiExk8w)$ZIcQvR5b&6WGzr9loQE*XYwTPD-x2^fFbJ2{u>aP`0_tdyCZJM-C#hrfv-;G^IWDJdF9t}=j{sSNE;Nt)Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/meta.json b/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/meta.json new file mode 100644 index 00000000000..1751b96f076 --- /dev/null +++ b/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/meta.json @@ -0,0 +1,36 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Starlight, MailTech Icons by tinnitus intensifies (420711810417557504) on discord", + + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "dark" + }, + { + "name": "low" + }, + { + "name": "normal" + }, + { + "name": "high" + }, + { + "name": "extreme" + }, + { + "name": "dangerous", + "delays": [ + [ + 0.5, + 0.5 + ] + ] + } + ] +} diff --git a/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/normal.png b/Resources/Textures/_Starlight/Interface/Alerts/shadekin.rsi/normal.png new file mode 100644 index 0000000000000000000000000000000000000000..6f49ae113f0f288f44c69232b6e2decbb5497f42 GIT binary patch literal 4335 zcmeH`O-K}B7{{Lhzji~@$St(PvO$NE@VZM7D=Y4hBeezUDMQqQ7hx@84U({fhY0Fo zUq=xyfmoO5;H8$JQ*`ODTNlZONUSiZV0)h#|1YmQGrO~O37i++eV%!~{=a#4cmC`^ zUvs!4OhnCkI+YPN%D1UOd}edG@4{%=Oka=o?p4=y@lZFBG?GLsxA*5M^? zJ4Q4+NAy#KW;ci~cN3W-M2Q8WLsJi*ojWBGp{ew6mgwYBzS`Br(^o{WaauQe8$UJd zZ%@S57JhXQwVu#Z$qPdvE!z5iQ&a>e*g&v>J-z|$U*3P?<#GxAhZBQ;HLIp3RS?2n z)-RARfLeshfvSO21$g`Pfn4*!wwChwp3k2*zsg+KnK4ft&jfd?;+Wk|<9e7?jNLm&V#wz!-_oPG3Q1_QW>d#+;GNR^gWpIeM# zh-D*@-T#PKEGFNfSS(7P9n-Xb{qcC*ii>$9<~j5n0d)#Pgu@|vw7hDC0fHJ82!hB# zcy!R9?d>0~;#^x1fC~V@K0w&#qXI$D&JeLMpGxAKuL{6L48fMSp&k_og2=NlAGfum zhOI9EGynw8Di8#bt0s)PngGxQs{;8IL~me&4FntbZ#J;C75aGO&g(S+)G{`tj~fOZ W7k<+Y;G6Sz+0%OmQjdE^Zu|kkkvf0? literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/aqua_default.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/aqua_default.png new file mode 100644 index 0000000000000000000000000000000000000000..f47523a98aefbed7654658e53c8aadc81001625d GIT binary patch literal 1588 zcmV-42Fv-0P)EX>4Tx04R}tkvmAkP!xv$rWK1+9PA+CkfAzR@KMB3s#pXIrLEAagUL-_(4-+r zad8w}3l2UOs}3&Cx;nTDg5U$h)x}BCMM^w3DYS_3z~z4Y_xwNio(l-gDpSqC1fXh` zkxsMqK&y!-yFex+bCz$X&VG2O6;H;898 zEuHf|ahR1Qh4`F!+@K2*KXP4m`HgeQVS#6cjcj_JI7}>-x>)XFRyI`P7;!{VHOd!q zE-Re3IIGn?i4s zjutrr2DX8V>y9Sx0hc?#(3371k|X(P3B@Aten#Jv2L^9}zBPAl?Q@(y09l&V@(pls z2#l2|d)?#R!S1>J+tZ%k53U(t~& z*Kj$%T_)$e?>x_(IdkBB4gSG(UBv@7Ha3ih*G462-0kh{N8>(y`t;=d!{XjcAf;5d zx3}Ef+yLPFe%~7&Ml9U2EC61;dd0-V1h#GWjpccsDijJ_UtbeN5%qfg(G4dh7H*m* zLI@@&CuuYqEH5wLi}fh5lu}740kCbGD2hfhqFcBSg6>#@#K(A^r!31Nm&psud2xVyWfTCLtQVvq^0 z>#A*k`F!3;r_)rcRUF4*W@ZN8_gPq2==n~^;ujVc@O__|nHe0% zp<1nuEFNHadD%ESJEPfblFQ`~LXgd7$!4>Z%jKT=%jL3)#|R zE1;W3qoFF53YKMYaB#rq&!79w+1lFbnBX`Lg+k%Uo7m~;sWJ?M%gakztrm-mi+yA6 z?d_>dCd2F3uTe@dH#avlf6o=rO`%XQip3&A2xezz2acVcoka*iu~>W-@c?skb4D13 zofR;McuW|EiNr$!1A-t>sZW+Dz#coWilCBtriy- z7X!y$TwKsL)M~Xv`3D*h1c54*O2n^#Qi{#Z&7OfbH#e113d^#nR4SB8r6-%< zd7d&&lQ0Z9IXOW}**E`}FJF|Dl9Q7Y!Z5@%O+3#Vnt$Mq4kZ2pbkBSE3H+0DMEo6p z|Ni|S=l}WhC-B4rmFv2y-_HM>bH+8lMx)VaG#ZUYqtR$I8jVJy(fqG4pmz*47N@Q5bPuSFNtD za&>h@rBVU@Esl)45f6pOg&D_jNT<`3N~K4|m4TI^*a(11rGjnS)a!MkC>kph%H^^O zf&d`|rfDLj#Bm&ezQSXMiiqojalkMP34(y7rKNjwzkdCyR#sMC#FSdCrrPZ``Fx&S zE(iSmz*bjRhxR5UzTwyic%J5|=jQwO@9NjDUjT`O$BZPT(P*fCE8r#B-``jDdcCs( zM(Ir$+8+=Tm%62tV1a#(8YJovDV0jtwvA<3_`cs${I_r4UaTDb;ll@Ge}5m}_pvMs+qM%oXbf~{cXwAU zE-q59*Pqlh`CroAr)ZicdwYAGLr*XI{?UDmyuQ93d*KgpT~|#`PIi8e)44^X(P%Up mjYgx8IoX0000Y4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/aqua_incolor.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/aqua_incolor.png new file mode 100644 index 0000000000000000000000000000000000000000..54fb6f571170037c9905729735f8d84bfdf4b90a GIT binary patch literal 897 zcmV-{1AhF8P)EX>4Tx04R}tkvmAkP!xv$rWK1+9PA+CkfAzR@KMB3s#pXIrLEAagUL-_(4-+r zad8w}3l2UOs}3&Cx;nTDg5U$h)x}BCMM^w3DYS_3z~z4Y_xwNio(l-gDpSqC1fXh` zkxsMqK&y!-yFex+bCz$X&VG2O6;H;898 zEuHf|ahR1Qh4`F!+@K2*KXP4m`HgeQVS#6cjcj_JI7}>-x>)XFRyI`P7;!{VHOd!q zE-Re3IIGn?i4s zjutrr2DX8V>y9Sx0hc?#(3371k|X(P3B@Aten#Jv2L^9}zBPAl?Q@(y09l&V@(pls z2#l2|d)?#R!S1>J+tZ%k53U(t<9w@E}nRCt{2nxReuK@f)jK_YReD&!@+ z0WW|c_a-$wL=EW^)Krrb)g+keCP)+ths6Gv-F9+m>E7O6xR(DjciZm#voqbjYcd1; zbIcD&&H#J@_yF*3W^a8RkgNdQ0GI%{HnYbg^EUv#0eqR+eF6U~09ODm&FnVC;Kkk7 zA%Gmm70G&^ZU>DO$z`VhWe7gYxFI@qK#^VGM5q2dADLU13f^fZ z1)nqjB0+2h0A}`_A{ggIyOYKT(e((l?R&0cupN*h*7;S~eg*dQpA}5eBnTmd5JCtc zgb+dqA%qZTNGO5D+FsqKJU#|ueZp0%tE94BERVbKNhM-WZ^FS6z3uzZ88!f30l>_j zNLD4fMusG=(fxpTX7RCYiYo1^^!PJ9Mn zGUjJMSlgs{Z$eI=z+W&#Z^Bl{|3?@z{#{=r31dI^hbY;kA%qY@2qA= Xc4((?e#{^+00000NkvXXu0mjfmSCL3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/bull_default.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/bull_default.png new file mode 100644 index 0000000000000000000000000000000000000000..bf12fa33328c62e40a5294131343b35b962a5bc7 GIT binary patch literal 1225 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_butterfly.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_butterfly.png new file mode 100644 index 0000000000000000000000000000000000000000..a04088a025f1d58e24170341760a35d11360e6c2 GIT binary patch literal 653 zcmV;80&@L{P)Px%M@d9MRCt{2+PkXaP!tB>KRVtUMbZm`_=UZ+YKU-*djm<#O_5GC?R5LM#@8BuR3&+a)K(yWK8H zk|f7sF@!=POeT}7!+(YP7u9OjQBkLPufEx~{)uA)MwJkH<8d&B(H> zyYg6;MYGwA#^bT`{xwabX9v)Aoit5z)P$yK)a&)0%F*lf9M=c%aqB#~2)eG*tG3d! zd0x7eE0xMa$sUdW>h=F$jYfljkAuiCjJsCVFpSFqbpE|t>jMB(RV77H9!jJr3aP64 zlH2gz^%-M~F~%5Uj4{R-V~l+#0sypHEeZyM5Cj1}pAUi{z_x9iPABa5dt@>h$M5Oi zq1|qi-|vUVTxHn!U>ve~RGoP%q%8hO25h@yx@A^`vpMNtNTPNzfZblO#m z@N3WW`J4b?G#X((pW}EuBA?G+pQl!^ zrChNMhQlG5rU}C^ZpM0U1(Zr9d9hf)G|iVZ_b-^HiN#`pQmOR1Kdf9XyJjo6saN-~ zEQ{Q5AolzHyFaJ`J|BesL{Svl?RJRA<5;iPC=?2=I0RKyrAQ=#<#LHYAb?`A=!(7> nV~jDz7-Nhv#u#Ia{cS%1XR2P@h*?|K00000NkvXXu0mjfMxiqE literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_cowling.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_cowling.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f23803097bf01bdc406dd515ea312d2c565b4a GIT binary patch literal 722 zcmV;@0xkWCP)Px%j7da6RCt{2+C6LPP#6dB{}r?pp&dl&s0f`qSn)GB>f$%ZXL_Jp23-;mQE|~l zA(()55F{u)cl1vQ(^g9+BhTdfx5^ZAp$HWa1NfMds;b&bq^j!CQ{Ha<>2$g` z@A`Eo>jMDN>9nn6cJDv;`v0$TxlF*vg7Vq-ztn6tR}0rN-ii8l;+(1v0FY&wBuTQB zNRlLyW!aHw_}ldvV~jDz7-Nhv#u#Ia{Y(B>4Lm~z@L?RdU5;RSto0}WB-EM?JAp!W< zGaL*Ch{xmB&yvgKEH^{z^*U9n)wA7js8*{~uh;kXr>ZLDa=D$co$~>vX<|4WqEsqv zY&8QwG#V8Gfq>I}J0=haAR3Jdz~7z$pj0Z+a5#i%nmcC%EZ2agOeRCOx3>s~!??e{ z7ka%O-QC^c`uh5;K8e@YSL*ls2!%p|uItq8b}<@_kV>Ua?^6^-Di(`pJN35}i$$`1 z8ssxiPfr)~0xqf7%TcS<$dUc_Z&ogssaC5U-RHqYP?98idwYY==fh+&K_ZbjtA)>s zEX(BedSMs_uCA_-OeQa)Z^js7j4{R-V~jDz7-Qe<9hYsjNNHWz&Hw-a07*qoM6N<$ Ef*}%LW&i*H literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_crow.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_crow.png new file mode 100644 index 0000000000000000000000000000000000000000..a657a8c2326b97ef43e8613e163a05133d975dc2 GIT binary patch literal 873 zcmV-v1D5=WP)Px&BS}O-RCt{2+Dl98Koke?e+-paAE;f}l^}@tfbIlA5p|Q5_z7J1GaYc}!j*yq zE7>F>3Q~pQ!Uqy6WHnZ*;-dyj%w2dV*V9gZm7uCBf*`=n%?)N|W~$;fJ3jzmV`GB= z;QaiY03eskQK3*E%d#kH@Oyo{V45+xuUYzh3;B*4Njo8VMoDw(U<1!nSP^ zLR7V_75Ah3a^V`yFZ;ijUwM78yu3{DcpM!a9nf_>eRg(6LqkJp8SLWX0>1BKa&oe2 z3+?XilB%lc>+8e7z(5)RWPj5%>Hhv6rBVrti;H!)^V|FY;JPkpnudpm2YfbvdwV-P z&qIHIe;NQjo4>-^+8P1C{{DWra)*b9?>>ds_hmmBC#tvo^7%YDj`MCT$8jj1&sVf* zG(UT7Wo0GODn@PJOiHaEP17V@*VCqHQY;ojB9Xw=)fHxEXFq&@Y}=;Z-d+@oMU=~B z$T;$y{*1qwzvcn}FJH~h&Q6Sujv|>%M*bfbLeTN?G4Af}u&}TYxqq|sGsYNWj4{R- zV~jDz7-Rn-1pv0Uw@K49D2jquECxkU5Cj39pP%vc^n{6tiH7U+%^=6Rx3@>Ft*vNj zX$j|4E|(Dm0X)yc^z`(v`51;lnM@`uXW zlOe+}!t1KakYN~$>FoKHA#a;5ZJZrl!8-PT1Mmp~1mHJU%``Rn@RO z4!l&Wg%FsZpRX8u-SYtepzC`2gsB!T=gdjA?Wt@7MiAo6PIH* zO_Km1@)-dlA^_Oj+^l(OJGRjz6YW*nR8HtD}l}aI- z&3^ku$Y!&YN~Nl{{@Xc8bUagIF*IO00000NkvXXu0mjflb)vi literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_default.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_default.png new file mode 100644 index 0000000000000000000000000000000000000000..bff105dd93473bb85cb6fb394b41a74c2a39d7bc GIT binary patch literal 1237 zcmV;`1SPx(k4Z#9RCt{2+RtkfO&GxO?_}N0CYx-GX|>oQfkv>gM2~_X>cxYIpeGN42f@E7 z;6d<^lYvk?^s$W%`N4YEbqRuij~_pB^XAQ= zagHMYj-ZuFMNUsoW7{^muA^xhhGDR>vck1%*Y+*q#fukmZf*|W_X)$0ZnsOT)na2~ zgWI=n@4LRAKaoffjYj|T{J%VS`t+%c$Kxat2~M0iK`NCRY(f}@eEs^BFbuhT`SOlH zuV25Gnx=8;)TzPyK@boG0qg7Qv|26N?Kb!C-yhn<&-rI&X3%vV(=;(n6W4V|&Tm;3 zp6B6t-oE*V7E>;lWi%S)>+HPoE}{NU*Z9 zvS+Yzxh&`A=4iEAeEITaq$7Wj{ONR>si~=AG&Y&06bH9r8QQb|@S6*+3brBZ36 zcgG=rWVeTli;J@V={Sze=kwUMJyJm1w#n!7IF2KKjx%aOe>(rrBT}hUWHOl~pU>m_ zK8;3$ckkZq`zKZ?6iBDj7=}T$TBX@+9_lFmsr>sERxX#NloH?fxp(j0zVDYxC21H2 zLWo2C`HfqCMNt$*Q4~c{6h%=KMNt&x|3m=1di6@0ril;&UDpvpAf=?&>*4!8mo8m8 z^ql@E^lN?d=8ZHAgGeMY=qU&Sq?CA`$CWEr#Gs*tg$1c;8k3WgWV2ZSI-L%NVX(fw z&dkgV)oS%XbNZvupCt8b_I;mNEC#^Z+8Udin}lJ=ty{MQ>@pZxSXhu#Q&S`o2~5)j z7>v7Pu^68|eZu$svD*m8ain1w-cF+V@g?Ck7VZNTd4 zs$5=P#&uoV?KTe|J{+mOJ?{tf6^lh#C=|%$a%8hvgcz&d0T4ov&1T8vauf;$ipAnD zJq)`eFtn4!#YI`K*GZ?-oIih_FbwfLkGF5%lF#RNy{B`OmX?-ewOZxk#fzAxiKc11 zfB&9Fqd_K<;l_;{yVkpB6VIMKlihBYOeTZtx@>Q6^WedQv100000NkvXXu0mjf2y%CI literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_motley.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_motley.png new file mode 100644 index 0000000000000000000000000000000000000000..2eac6f98b785564f2c9988902eb8f2108036bde0 GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z4|%#chE&XX zduwmkD+dX-2jx6X8;x8KTr%1!uCSAF{o(9cR;4VSiYrAn3cq35?V+HsY@?9lqnwTD zhjyGgxTe~mx?;Z8(VF_nOJ)iFNVc1Q+HX0tB1_jIhuwGEo>waG$=H4O)a92fr#CH_ za_D14%lqHumG?vUFO;vjFP|F8c6-}H3%|%e1r{gXi(D(5_qOmFHQ_pYad<#*2W@UWuO!VzvjshnPcvKnIgsnDG@V)Gne=uhK=axi`W`!Tw za-099ZPvUV_Lu9-SF7{JU-Ns8Ki=KD!s+-+o6wgQ#mcKL6y9GOU-j+s-<3OdT~${? zfJOgX85)izDMqgqYZ1sWn=RnvpxOHRYggU=|DPoPTCcsHeKW)4)J(nU+*5)q=AW0~ zVN+fx?iQ$`d%EfMt`}dc3Sz&fefV3azx(dH^*4Il_dcuCE8i{q$;LfUM1rrqKfQC& zi)R6bob6n`hAJa1}q3=2O9KLS%m8VeV z^r>=|B~yeLmR-(#%l_Z%`eK@{oCO|{#S9GG z!XV7ZFl&wkP>?6UC&U#<|NsC0=FOX1w{AUL|KSpl&r%ZP7Yq{Jtn1JLw4<8S^M1;h@0~u~@$Ep@seUmqsHSypJ8D{3m_gE!(O};cR zGoKe{ljuD8K0a{)C7t^J#zrM?EE)pVSM*OjsIY)h@4%6-tQji~ ivhFyL@k_#ri6N<4(Q*07=956{89ZJ6T-G@yGywoQyikV# literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_ringed_left.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_ringed_left.png new file mode 100644 index 0000000000000000000000000000000000000000..a8caabc10f552d2a334acbc330d99969167a2412 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|8a-VcLn`LH zy}6P1fC3MT!?*kGi8IJX%_&?!Kk4|F%EpwAEX$P5m6bt6hTk>$khpem(Wp zbawo;^TNa6U5B2`S>Cke=f%ajnPy*J)dP(Lf`)pI`zGhBxNJ&V!aUp8E%Vp?P_k^_ pq`sPty6^s`)kpg59-V`z^p>4flB0UqN5BHa_jL7hS?83{1OOu3O}GF6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_ringed_right.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_ringed_right.png new file mode 100644 index 0000000000000000000000000000000000000000..5171d4a75d5aeef80f4ecb996d4b03ee2e0bb3cb GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|T0LDHLn`LH zy|tV7umKON!~6aHZ5K^^jyh~$miVV)_IS5jFUy|g)8?o}bad>nIy}?t>&*Cdza)28 zf4O&GeDyT{DWCte ufBNjV`q;&yr?QQPzaN*eXr)2a{a7W=w>?L-DP;F;kTy?OKbLh*2~7aK*-|Y4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_spidy.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/fluffy_spidy.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4e406476a58d8745e630df0486551a536f1911 GIT binary patch literal 782 zcmV+p1M&QcP)Px%$Vo&&RCt{2+P_QdP!tF7Z{Lt0q9CQS-Clj*z5H^G$AP}`IFAg>h-!(S5=Q+CZ1(kOU1M- zi+-HnwrvU@g%ISruF^@!bzKrdP(030^8-M&TKzIk__<2{%)AdQ%c8ZlH5?uunqkn} z+gqHUpPTd6)M_=_+uOtb{=NxJE=MmfFE~Cvp1Vdhe-H#Hm&;S}DwPW9x(?O+a~lx4 zy1JtAc#P3#gtN1=g&V2Y>!fKKGMNlcPEM3Jp0@mqF~%5Uj4{R-V~jDz{!2;C`+tK< ztuyBWgTa6RAeYOTzVFlH<0H1Vw$SNxqCrJk2_eWZ41_grZf=^uWKX$VZmRY#2P0BS z%IEWD_!1$YlIMjG)=?K&JNz*-Vm?*{rw%gySv}7x7}`k_(}P`PuJJi zsrpOAZ;Ak>YfgmcdH-bgpA;!2C3<57i>Xv9QD+|>9#YrkcunzI7nykyv~8P?j*g;} z1`*N0!2tk3*Y#-poHnlOQV;|H0LO7)nr2kz=RJkyUIlF1rr~gijg1Wy3I%L$Z=1km z{A?IT>YCuXE_FJcXoT*09<|$TJUu-jo6Ta@=79y5!OP1_3W5OHY!wVSu3|VGLf3Vio}Q+ZpLr?;;iJ$PX6jT<*suU>5zm$wh7 zf~zFRFPPy!4AgasgaJk8c)B=-RLn_EabRMSpP5oU)yiCk&lWi;Vh$oH4o@Yeq$X&x zohw+uv?n3t;EJX|R_5gm8}~7Gi$s6<#UH@h8opI6;neX}@212vXgWOlr*j~Qsd!S7 u=oOZB=7_cFzg@Q|yNmW{NrXD2vNGuGP;@-YTmKN~P6kg`KbLh*2~7YhGjrSk literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/gauze_ear_l_default.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/gauze_ear_l_default.png new file mode 100644 index 0000000000000000000000000000000000000000..918f3b9788865b1e113a3c59dcb9fe5416199dca GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z89iMbLn`LH zy|pp>kb}takMplBFlq6N<>}xkD>(N|Z>cl)zl}=o@@D2{ENDF>>h(I|U{c^7KGk4e zmxoMk@6+qc-+zCwtb9^(q0DWg*L|VIr5|#vHk$9-Kk3Vt zKg%w@ox9m?uB^^q)`=?XABxL086L~KE`RIYwJM+crT-1eZY?g}{PIXzvxZjenYD(? zrl>!NnWUo5YPppU=xQk7vwVNGxGzU~@2@aF8ozV^`s?XwTsWM zpSw=4{)#-$|EFuG-&q{|_uz(Ut$S|hi?TGD{SM3famxBzGAJ-0ARuvn(Y@fSELwRR OKmwkwelF{r5}E*E6O3vA literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/gauze_ear_r_default.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/gauze_ear_r_default.png new file mode 100644 index 0000000000000000000000000000000000000000..955df586423253d281b09a7c634504ab3d8b31fa GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|Zh5*mhE&XX zdut=tAp?P9AA_SrL}b5+wmj0d(D<=~)v?^MJx_9u*M{!N%{w&0xWXQVm@n>Faq)lt zUY_zN+upk*m`nDbSzcXnY;o=MoTDmzXWm6jEIT|oc%Ikt+ne|OXY-ViyubQn*?jM+ z8=mzBTfWt7UNOb!=!54)-c1TWem&%l$_~~|S5i7(A0y=Mmi_k0FY!YLCY~~uw#-1s zK|q6fke8+WlzT^);a%}(r literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/meta.json new file mode 100644 index 00000000000..7a0b91e74ed --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/meta.json @@ -0,0 +1,167 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "shadekin, shadekin_stripes made by team Adventure Time. Other made by discord:filokini", + "states": [ + { + "name": "shadekin", + "directions": 4 + }, + { + "name": "shadekin_stripes", + "directions": 4 + }, + { + "name": "aqua_default", + "directions": 4 + }, + { + "name": "aqua_incolor", + "directions": 4 + }, + { + "name": "bull_default", + "directions": 4 + }, + { + "name": "bull_smooth", + "directions": 4 + }, + { + "name": "cowling_secondary", + "directions": 4 + }, + { + "name": "motley_secondary", + "directions": 4 + }, + { + "name": "shady", + "directions": 4 + }, + { + "name": "fluffy_butterfly", + "directions": 4 + }, + { + "name": "fluffy_cowling", + "directions": 4 + }, + { + "name": "fluffy_crow", + "directions": 4 + }, + { + "name": "fluffy_default", + "directions": 4 + }, + { + "name": "fluffy_motley", + "directions": 4 + }, + { + "name": "fluffy_ringed_left", + "directions": 4 + }, + { + "name": "fluffy_ringed_right", + "directions": 4 + }, + { + "name": "fluffy_ringed_all", + "directions": 4 + }, + { + "name": "fluffy_spidy", + "directions": 4 + }, + { + "name": "gauze_ear_l_default", + "directions": 4 + }, + { + "name": "gauze_ear_r_default", + "directions": 4 + }, + { + "name": "gauze_ear_all_default", + "directions": 4 + }, + { + "name": "piercing_all", + "directions": 4 + }, + { + "name": "piercing_left", + "directions": 4 + }, + { + "name": "piercing_right", + "directions": 4 + }, + { + "name": "ringed_left_secondary", + "directions": 4 + }, + { + "name": "ringed_right_secondary", + "directions": 4 + }, + { + "name": "ringed_all_secondary", + "directions": 4 + }, + { + "name": "saggy_brawly", + "directions": 4 + }, + { + "name": "saggy_default", + "directions": 4 + }, + { + "name": "saggy_gauze_l", + "directions": 4 + }, + { + "name": "saggy_gauze_r", + "directions": 4 + }, + { + "name": "saggy_gauze_all", + "directions": 4 + }, + { + "name": "saggy_gradient", + "directions": 4 + }, + { + "name": "saggy_zebra", + "directions": 4 + }, + { + "name": "short_butterfly", + "directions": 4 + }, + { + "name": "short_default", + "directions": 4 + }, + { + "name": "short_ringed_left", + "directions": 4 + }, + { + "name": "short_ringed_right", + "directions": 4 + }, + { + "name": "short_ringed_all", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/motley_secondary.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/motley_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..3e53e2e7f1383c15f1a420b5a1711240f5e7de05 GIT binary patch literal 467 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zdp%toLn`LH zy}7aLkb?;81#3pf;Gxug=zW;vqz}d9q zea9bvbas4GT(r6i_!Z0PsU-b3oUHevTKllD?ReAm=!Ecqj&#Rv`-*q={ zDO>34S7!4&kib7~#+v;r%x3#?C|<}gQD||9oVFuIuVc}Rr{=%PXZbB(`Pd?D`Q?`_ zn{*0oBle6JO8ZL~Q* zF;#NOl>PrVHXnSDb@Ogsdfoc#uW!Y*%sqRK=gzw?Q;sH0WI9l`d+pm#v(BwB-oNJZ z%NcH~udezgo{+v}^ZpzQnQL{GZzpdO5=4ND@jsb%9%XMkQ7ZwABnAdgS3j3^P6eK@{oCO|{#S9GG z!XV7ZFl&wkP>?6UC&U#<|NsC0`t|GAu3aljP~`{mSxSQZfFS z$te!ZJv@Bu4I-!ICC;8$@PXlk!43u|9tS?gmPgg&ebxsLQ04U})OaK4? literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/piercing_left.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/piercing_left.png new file mode 100644 index 0000000000000000000000000000000000000000..7cddf7faf8e80be93ef67d6e606b99621bcc7360 GIT binary patch literal 525 zcmV+o0`mQdP)EX>4Tx04R}tkvmAkP!xv$rWK1+9PA+CkfAzR@KMB3s#pXIrLEAagUL-_(4-+r zad8w}3l2UOs}3&Cx;nTDg5U$h)x}BCMM^w3DYS_3z~z4Y_xwNio(l-gDpSqC1fXh` zkxsMqK&y!-yFex+bCz$X&VG2O6;H;898 zEuHf|ahR1Qh4`F!+@K2*KXP4m`HgeQVS#6cjcj_JI7}>-x>)XFRyI`P7;!{VHOd!q zE-Re3IIGn?i4s zjutrr2DX8V>y9Sx0hc?#(3371k|X(P3B@Aten#Jv2L^9}zBPAl?Q@(y09l&V@(pls z2#l2|d)?#R!S1>J+tZ%k53U(t<8LrFwIRCt{2+OZ7)APfUR?>}JH2`hkv zkbt}T8~08)qq}=&ca^GI8nxO3000000000<9{nB6@;3kg000000KPW>0pu2V*K5?8 P00000NkvXXu0mjfyMgBz literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/piercing_right.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/piercing_right.png new file mode 100644 index 0000000000000000000000000000000000000000..c0beecf8af8e61cdc1f9cdefa96fdd8868687491 GIT binary patch literal 527 zcmV+q0`UEbP)EX>4Tx04R}tkvmAkP!xv$rWK1+9PA+CkfAzR@KMB3s#pXIrLEAagUL-_(4-+r zad8w}3l2UOs}3&Cx;nTDg5U$h)x}BCMM^w3DYS_3z~z4Y_xwNio(l-gDpSqC1fXh` zkxsMqK&y!-yFex+bCz$X&VG2O6;H;898 zEuHf|ahR1Qh4`F!+@K2*KXP4m`HgeQVS#6cjcj_JI7}>-x>)XFRyI`P7;!{VHOd!q zE-Re3IIGn?i4s zjutrr2DX8V>y9Sx0hc?#(3371k|X(P3B@Aten#Jv2L^9}zBPAl?Q@(y09l&V@(pls z2#l2|d)?#R!S1>J+tZ%k53U(t<8MM*?KRCt{2+QA6`APfUQ_g}E%)VI%q zB80mMl75@DICXdb&hWyhS5-wFA*~Mp000000038{ZUjdB)Bykh00000f^6nh7J;=~ RrV#)D002ovPDHLkV1gK#>2m-8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_all_secondary.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_all_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..0596e3ace40588a09584fc5b59174ef071d17b8f GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSjKx9jPK-BC>eK@{oCO|{#S9GG z!XV7ZFl&wkP>?6UC&U#<|NsC0=FOX1w{AUL|KSpl&r%ZP7Yq{Jtn1JLcjQyLf+d|~v{FktYK=aLstdhq37auGu!gGQ}^iOB(0 lg_nmPFvTR8)bhwOGQ>EmJNifZ!~osE;OXk;vd$@?2>{T5PSyYb literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_left_secondary.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_left_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1408149db0ba1f28695e3908861087f53bcdaa GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|CV09yhE&XX zd&`^ekO2>?L-+4^^>$A^VY6IStqH%pCnl!7b*alOD`R>5_1^CjzeKjR?Xv!peC6nC zg|%CKpI<9o8Grarjb>_i$4i}nZ*-_zC4Wt~$( F69CQ9RNw#r literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_right_secondary.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/ringed_right_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..b66b1cf3ca46427ce5fab13f6e5f3a234aef97e5 GIT binary patch literal 215 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 Hu0mjfL*TBI literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gauze_all.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gauze_all.png new file mode 100644 index 0000000000000000000000000000000000000000..ce47f2e507b6499ba70e818666093df167297af6 GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e#^NA%C&rs6b?Si}&H|6fVg?3o zVGw3ym^DWNC@2)*6XFV_AKbcd=FFL=PoLhnabwfQb+1o6UIG+lD+%%oX7~>RRh19^ z0Y!Fux;TbZ%t=mBV36nxI`Bi@#prJ{r_syUhVCZO6?YgX>KO4a;0pO?)9~4mE8@o& zJ_b$aWt#;m)As&X5T2vAw^1v>=ud(82_chR%%+E4{;6JI#QL+=KwIQ~J;Nlm{DiO# zFXl2&YWicKz2Ka4k&4iKi~K$TB=wj++Bf4WACKab%Z00t7Abqa z+LiY~>gg5ld%BVLS4#c(_idJH=63tjmg=5fnk(P`KKOb@q@QNy-dWz0-pR|YuKTPZ zTwo!S_wS>3+O*lr0(&+_JzH^X2TS%dMxYNMK=|XQKU2=WS!MP1zj!b6l&-q%_Wz@n z^?h=9q(3vV&oFD_otm&O_A{@rOcC3e8$Gx0_Ud~=K3Pn^_RU`#UOe?9JItH|t^D^( V^5@Rp-lPB$@^tlcS?83{1OT|GlzadH literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gauze_r.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/saggy_gauze_r.png new file mode 100644 index 0000000000000000000000000000000000000000..131a217811f96e83416a632246bb8f4b4f80c2d1 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zc|2VlLn`LH zy=9o)93ay6aJ{Qzhs8?;y}4HDAIimV-7jqKneG#LWZ}$1k}^%(CnsN7vM{T1{#Ut& zk7M4K^s)F@$?_+@esv$wtSvunz)7W-tP(N6VLeE`|bOO z_1^D*_|EPv*xhPx%N=ZaPRCt{2n!irtKoG{iImICfQj)7qyZ|)~EzOnp7WZ~M0Od8bG`s;NLP7#j zBoY)$aWi4;?7ssgc68sb@vc3yJ2PIdi~WHA9O*lN8bS!?0Nwzs^!h9!Pwx45080Q3 zfEj>BL~d%vt}4JT1E`q$0>F!#dnF%d82+s zil4x)1IRD}Fu})5c&_v_yGH#-IpbUb_7Xq_^PK>A1hCZ2Hi_GeA3Od@as}8+03}4^ z3cy0U%YwN*U#MS^;wP}{01EixEkxulXROZ`?pCq*r2_0cfDFeXa;fdPh}_mVsoh-L zmjI4GHG2r*w`>2?@66l#aR?!V5JCtcgb+dqA%u{AsnrLZp?&-f0I$I2XuLPvY1LS- z8;wBCSwgk|nm7uscs-MH}IfwG1_0iRN0 zNT^j(D`4aV4y|9xfzbU8ULm1Y$*lmRL4`PCNI0Q}SGiTMfFq~OfGR$}s`%=IsaLCN qPDee)LkJ;+5JCtcgb+f=5O@dlgX#FJVxQOm0000QQw{~`H(s{h^`>&nr%(s62dB(-%`s=Oc`|8%c_VvR;`-T6c&24GTS-#0T-Gd1nd^mq1skGKEo zfBfU~zwf{Qs>lo7w+OC1Yu~l`_FFrzN0+~OPWqGed;i`D(&HZzx z2E|N!`X>E$Xyi1TlKd6rtSpWKTXT1JG#^#*+>sm2)pQ_NmFMkL)dIQO4+|ph^lvy~ m__s&(&2L3-Icb=48y4%^8<>aLPB;An67qEQb6Mw<&;$T=!~zun literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/shadekin.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/shadekin.png new file mode 100644 index 0000000000000000000000000000000000000000..3aec926c5e273471968944a48d6306c1cbf5d59d GIT binary patch literal 9242 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 N@^tlcS?83{1OSASL8brz literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/shady.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/shady.png new file mode 100644 index 0000000000000000000000000000000000000000..6ddcd27cdd0c9050bd2be23ee436516d7af28d4f GIT binary patch literal 1189 zcmV;W1X}xvP)Px(Ur9tkRCt{2+RslDX&lG#_mp;~L(>85w!;Dmpw=@-PbQl6e=r=Y2U%l`VdILP z71pfT7*kxLa==7P{0od5+ZYZe{0FWY2#M)rTIfutcBUmf9$bjOpe3N-=6Ri(>CAk- z-zQI>N&1Y!eWe4)a!L@+s3wS8jS{-Os47e-#b6_`GHI( zqqMcP;rl-2a+x3qFbsp<-d^(gy!ib5kLB}u(c9aLVHgBKK)GDT_kG&h+FELUFY><_ z0D$4)Va4}-JkP^%96Zk>7K<@7G{oH8+*ga3o0}6uLqo)3u}`k^eV^gs;cZRf@0s7U zut$#`iNl8vV;Ba8VbI;(z3DZDLP5B$i|e|)di9D^r%vs75!>s00A^=rMYHL*E}zef z+1c5a&fO3B;jO-W`0$~KL?R>-398jrBYL;?8o#tjh)g+NhI6optU27nNP za5&8AGiQFtznAadyC+sxS5cG?ten6&dyF0MIj!K zGcYiKWm$wmA$~b|@`o6Rf1W-SYinzmrpdy>0+mVyAq3@ed1Da9u3S-IlZ}zTZr&6> zC6jb_ccW?=x~^lICU4)q#WYP09z3`&2jb0}H^QSqeK@eaS3Z&C%1_uYp<#M~a`MDc%xttgr93-7iV-*SnL4fCZ zc-1QQCe1?&TVs>itmq#YpufK#UDr8q-~iERlou~vaQyi3eK8Yqxtut9^eDdXv%I`a ztyW`kagoJ^1%5quZp#{5YT)lXcSQQg5xTm%=;-L+(4j;7qVdnYe*IcFj>F2z3je-* z$=Q*Srgd(*JN&V;BO{7!+gO&x{QUgREB!|1=jX933){9^Y93k~fT^h|Q7jg59EZNX zzMWP14fXZ);W!S(Vv(t-sg~BMEnkrMV`4%i5($3p>7h}tqqn!Sw6wH4)qVp@OG_Wt zC`}`xs@%JKSCmR6e!qNq`|k*iU%MuR5C|Y{7{udoT-W8og$w)g_rLDety{t{3@Vih z71u=p6h&d|>eYQ+wNL7Rzy!@ok00000NkvXXu0mjf DM%hdy literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_butterfly.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_butterfly.png new file mode 100644 index 0000000000000000000000000000000000000000..a723daec11a6ab9a58ce097453c78eaa72154370 GIT binary patch literal 748 zcmVPx%rb$FWRCt{2+P_OWVH^kW_nm~)+2LhM5p7NewzWF8B{Vn)fs_7CpJ)&cBpMFR zMH<~iTu!LTDG5chG%72jd#!Uyg$!}yIYxIwf`}P{OT8--UI=++tWdlYFaXOtiJw5$) z0k^le)a`Z`+W1%bhlhs<1Om3}-QV9+xm?Dw@`tXkuW6a%7R`Tnc=&YvkLy2`zY>zk z!zk@!vzh)AYIpI2I#s@hG7iHjLu)g==@wRM~b4%9Iq$}a=F}G`L^Ex zP18t{B-Cm(TwGk(zEi5IlF#RZWmz~sKmX%*@VE0BV~jDz7-Nhv#u#IaG4}76IvCM3 zjW#zop(qL*4hIH<0X8-^Ac`Wo-R@G3%zsiopC_l&iGIJ2x3@P4f`DGHhnJTZbUK}> z!;-NE5Yg~_UXmp2@9!fR46gKs?G%ees#GelENl3WKq8SC?rG-H*hfQ-kB`@`5yfJW z48xe(@Iq8orA#KXHpkAHOomidU2eTsS66G(fOV>MwWU(2u}&5W1>1iFev_{2R45e2 z>YLodB-{T3QmGVqJRVq<1=BPUi^W#@W0*`PNtR_ul7vR1foL?k()BXN7-Nhv#u#Ia eF~%7Co8AF&9ZS^{R@6EG0000Px&!%0LzRCt{2+RsZeTNnrMuSz+SKToJAVhd}Vf{2@-)@=$}v=G|X-&D90B3caS zrkz;OW^kkFt`rjS*N`^OG-ILXU0jm;X8w5J>*dOQ&u6Ec^E~Hy=FI9Dfcdi-zW$L) zrKrp00svU8Rsg`u%L|M~Blh<8#@2szdwWZV!y(q!*8u>Eq5uFSNy6db;mrNl*Voi; zx5H+$!D_X_WHO=MZvS$Ax7&@uU;sr?(ChUe%QB9SkH_}^^vA`;1zlTPgT-Qj-|vUh z=>#DJJkJ9F9v&Vr91gLwvojXx{{EgCjYe#5Zvy}{O+%;CLATpQtyY7os(5>Q!|Cbi z#3H`SZ@1fFu~@)y9CEqb%>2=46uPcMRaMBcJTw2q!=%$`N-4$G))oMO=XqGIR@Cct zgu~&neffNz`g}epiULj30057Vk1!YvI5;?%`Q)bMce~x-I1W6|qtR#}5D1LLt5&Pj z>-9p@H0ZjHcDp@S{+S0$r_h*fjYPHbs_kXMKN%;eT z0PJ=<91aI;HrrU-Uav=AUtb~1GOE?;!t#$?U0u;duKS(*f*?$dEeHbr)%?bJ7UlDK z8i_>a3K)q*kk98A+JsCdLkS^}Wf`IVd22Q0?RMRvNLLiFb%qKRBAPBTvE>n-k1Bb%_LI`59*tgd@7K<4OA#gYx@OV5Z zm&T#O;6M-r%JV!3AuyRtpp;@|Wd%l~5&eFD;$&u7h@wc%W;2GvAwE7nU@#ak z7!1(qbf9V4*s$cMALr-iqxrnWVu8=+gVk!q>gp)LY7b%;~(nKP$nDO}E1%p9Il7v#Jw6skql}c2SBm{%Ox%W)HBA1t!ln{c=%}uo1 zZJ5nwM5EEAy#AkZxg72H`*6G6czSw5r_(_^9-nyTsW%`Vj~hCj4l0!jn$0GP#p2>m zykNy*5zS^3l}cr1@eIQ-48t%C!!QiPFbu;m%%A25T^Z>ho2V1600000NkvXXu0mjf D(mMIH literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_all.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_all.png new file mode 100644 index 0000000000000000000000000000000000000000..119326cdf7c45374e11bd0568daa01caacb4aac9 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSjKx9jPK-BC>eK@{oCO|{#S9GG z!XV7ZFl&wkP>?6UC&U#<|NsC0=FOX1w{AUL|KSpl&r%ZP7Yq{Jtn1JLXRwAZ>yJuPdLS+VqE+q*^OMxSkfW|X;y85}Sb4q9e0CxpI ABLDyZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_left.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_left.png new file mode 100644 index 0000000000000000000000000000000000000000..4b53f8f51c6db7fc9e7a68bebb97410602075428 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|QaxQ9Ln`LH zy>*edL4k+W;nBa>20S{!?iY?IUAy!5bI>XE^`;4}9Ub~lb3T^*FxRVJ!!y4)&vt+4 zd)ud9Hx&U*0D-!dCF>PV&sB~2#(Yd7)qLhP{S`ml;|tTkk_}7!jvdpV$@{n88pQW> L^>bP0l+XkK&euJX literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_right.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/ears.rsi/short_ringed_right.png new file mode 100644 index 0000000000000000000000000000000000000000..71484ebcdcd3d35b6f11dfe575f04af89d8aea32 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ay(reLn`LH zy=BPPpuppB@!0S9_QMBK3yM_TvOUgLYoE?fSS)zp)STjXc@;`acfa~D-TLqGR|P#2 z!#6v6)n~7LqP^l4FVGy2Q6Yb4|CzdiCt>|n#b|Ai|tDnm{r-UW|LIpx( literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_arrow.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..13729c090aa95b17607493a90547d01c130b4697 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z89iMbLn`LH zofXK}qQK*lsQ-GVh3@ao@@ulMi8VHUh;!m`duy=q=#n;|Mh1orsuzm_&+VME?EJ?a zmg=f*moMc!nX}%_N_M%F@6L!N<^M`5=1+eY{?zz@@}ld~54-Z8UcIuCb){yLcYv6O>;|q_}Nylt~kiBmBCbEf!G2z z<||BB5*nf!q<8|j1DYAL7_$rM7SnSn=o^>_(`^d*BBTYTGqW_ecq>Ox2=m$UwN|OwvZZq znYuSK9-@vb4nj*C=ATl%{V=W`?u8RGhQGePgg&ebxsLQ E0ChSyO!Td;^g(Jf|FD{CoTD(xtMw8%&VKZPj+-%yS3q` zM$9$+lh=b^&-j&){_)b>eg8tTpYs1OVPC+U!RNq!L8gIkfhB{iLotI@!!w2whO>+> z7-lhFV8o+9?R@&1&wdM*{IXk6Z8z=4%exIgdsRGl#ZH*PPx$ut`KgRCt{2n%fS8FbIZqFY7b)Y2Dq@G(B*p&i_lybecjbAZ0ra0001E?)#n{ zWpUs8n98T{akifqWpPdBTs_dSWI2xG>O4C7-ivzDUAgDEoZcFu>t%(4Is_yh@E9l_ zAk6_~@EJiNoZHcHw=!_S-hFSEpI%!UfIF#(oUk;wr2%T8t>DtR7d7Fj2U;5-GXz@W z&RqZZtd#+z6S6eKXu>0-lMSG$1S8)7ZK1=xmJ_(j92t~CjI=P?I^b%qJ-7tp+m+>v zRgWr%S4sGHPL|HN^U^AqY5#15)q0&Lq6!rge0!@$l++Ghx+(qUAk{%RZ{}$keKcX&xaU827J2V9BQY0FrD9uWyJT2PkDc selxUW)7U5J;%$H(41pvF002P27Y8*g##-Q=RR91007*qoM6N<$f+!T&DgXcg literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_heart.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..edccaf8577f6d7139981056cb7b9e1a9512f88b8 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zB|KdmLn`LH zopqb9$v}Wr{PF%zzJH@?7@e-I)4BCcVy-8L_(fY;ubLaP7=ct{Lty)3`~e!j+Zj?3LK%KO8j+OvP> z#W966_q(`kHn82MsjZMu{oQ@D@5h_6?|p)^GUT~`L~UYP_mBIJ3`YQaKr=%rgDFXj zdi@9go_+6oo9>$b;e>nSx^HZ?#vz(Yt76aOyt^s0R&-rihV`S@wyCGMJSIl$G%V_M zSd}(S?Cr;k{`R5eS9n&~&J0}b5_gXoLbrnfZshM;5;?f;%hMa~%>M`_NTmL@lN2kocOSiTk6S(qW>DJZO4R=22?z+#o!|+`1m7g3rCz)O_m~by( zzM#{<=dhWj*7`1lTUCvRHCbW3h>rBTSIX}+g*AFxc>llqt? o=4GF7!P04$)jTJuytK2s7kOK{@T}=UppO_lUHx3vIVCg!04;E5D*ylh literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink4.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink4.png new file mode 100644 index 0000000000000000000000000000000000000000..a348728e2a061657d5a3433753bd045b9fc3a81c GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|PI|gHhE&XX zdn=Hu*+9hQ;>MEovB6>4^|#hO_{SK=L`;E@9y8y7zq_AO7<1 z=ez#s$486%s~k0^AG&eb-)^O-LF-~xpO0TA-;yr)byEE}m&DAJPoA6J$X@vR^W_Ge z-H-Pd2rgm1pwqzTu$jS%;Vjb&1{3ZDL&t;ucLK6Um^lwf8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink5.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink5.png new file mode 100644 index 0000000000000000000000000000000000000000..31b14c5280e1782a8a84d28f1711751de1bcf421 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zQ#@T9Ln`LH zogFCDtia>qyuAFW&%A4O7qzsM6*nw-_j}{wa~mR=QYLf>IB_Vp2z>H5GrU_4;gfEJ0Kh~hSdyzrr{m%j?xRpdrOC3BN zgbb@xGxGdrGo~NxKeER5w3Wg|V{R{1!xG6JBS*z02a^>`X0onfk&oi+GV$rsZM~4Q zqNI?c@_ed#xGG3_3y+i$mW4pEv?~Kyjdpf2v>NSf$6!^i-tkAyX zoWnf%bM^O+eKxA#uxJUm%Q=tNqvkyKhnfQqoKC#Gw0&u*kj%$;Mkfz@yUCNh_Xizt R)&K@RgQu&X%Q~loCIG<~rXc_T literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink6.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_ink6.png new file mode 100644 index 0000000000000000000000000000000000000000..17d4c461f3d3c0ae2d69fe3a42680c88301c53c1 GIT binary patch literal 397 zcmV;80doF{P)Px$M@d9MRCt{2n&A$EAPj`ZvUl~FeA@1p3uy*M#Jg(mOBTnbxkFk&;q?+ij9_MK zeaxm$#aH^wO?aQTBPh&Dfx{8d5=@zkf($L{X7<9j(yxWgY~4O6BmcC{>VHPflv0+_ zYiCeOSg{Z=1)=g!n`wRrtMB_$Yytti6SzdqLe*!f zaeMV?Qu0jjfwH8D{5$HVs~yYEM*C+6az7FK@@#{rb}{b4J6T^}$;|YLuX$<68`7m% zh7=1Dw&Aqi*%GjVNASlKRG`pgK%z8$B<=PO-fOlFh)6<3Jsj&(5#AHErGvE0Fax38 zBRRt&Ax|4k3QZd&O)RoicJ!>hu0;4OY+u+Bf0(bdO^MU0S$&wr3c(mvReu>ZFR}XA z@lH1wmuQJI=0(KhH6afR|AyKW4+xM54Cd#!M@*x}`v8T(@ZhPa&nve@1D%_r1$u}bSD;MVY$kFpQ+V8_byrl z!8pk*F>h+R@FEz;H{NSM;t|Cbp@k9v<>wQ4sU95eNz@0=@PV#4$k7q>A1-;XHU|N6 zT2vZfsP?MeC-Slf&!6Tus=Z=oG`==Bhu5roVqjdD&Bk5-j%S8R1_FBT6NcEEfu;Va z;2PPsLbncT=4n3ra1o3ws$}P~5gF%bUevSSTYD?WdQL*@{amnG5NzhuM9*`VU_P*7 zZlHhW<8`*4Ti8m=wRKR|^e3b1BFm5U&qFSiu$-f@ewQf{b$*(c3S_uj{L=9%^ae@m zg^#HKx%Z@SkUZTO8 z_1rN_z0+Zw02Z2HCk;J)1;yK1~0EQeu5ZQ=f~^l`u~LZ?m>6IFx_P5KyM8PdQLs zMyZjY;@#0ewQ4Q{)5#}jnNdXTb%8Oo*{*Al`xWnV2r0*58&_)WaSTs*U7~{-g!pNT~x2Rq|UIS#&r@RogxJ6BMl)qxE^VsggC&D0fNC@(;T5jcpH* zL!fMA=y9d{?e*Hh&?I+5vm{(G}_wBU$QKf UOFr5K<=u53FRq#!e!tx>88gWpoU8mm-=V>(VOA95&iVUieOBI)wRq**Yl0KBThbm}W!=fN z)}y;2reoQ$>B~2n$%p>tzv~si?sICR4o3icKr=%rgDF17iamDbA6L%dd3(+{iDgAv zOZytn6`~JH%a*a|AKp>FT3t7FXX#BJ&Sgi{pGJtWtYBW@2y#jwQ%Gxo`Ce|7un6IT w_-XRp6IG(53v#}1`fJUqp>^QZHbw@Ud*-hM-?dkr-wX;7Pgg&ebxsLQ04lGUg8%>k literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_neck.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_neck.png new file mode 100644 index 0000000000000000000000000000000000000000..89750000e38bbbf3e79bc532e8e85c025129e4c3 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zg*;sxLn`LH zofXK}tRTX&ar#%EIoIk;)Q)KUSY)tuuBT6?cg^WTkJy)~C;>rGYUH%9r(A!Zd0!sC z^P{BHb?po0_wVSRs=EL4!T-w3@8hI4+g5#BeZN}jg47ER<)YQHib9Q3>`t$VNxJ>* z;-@!9cT{~iCcf(aZH8Z(7w&K?xhQW~dcE)dqMk=HUWBGK_8nZx;UmaA?~ut{xob~3 zY~*+suwKYu&~0#I&R{f=a^PNYks*qqm+b;mhDn2%!(zrQ3{ogc!g)?~T1#q4E?!*3 zoW2QE&ONIVqx_np4Smb8Q~+(Nre-K88{7e-}oVZ6VMz2(@~@BIfa|EXnh d0fV|ubBD|N%x6x_-wg~Z22WQ%mvv4FO#qx{j_Lpa literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_shield.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/overlay.rsi/body_shield.png new file mode 100644 index 0000000000000000000000000000000000000000..a397a0aa6a8256e03a24ecc294a4a3604da41158 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z#XVgdLn`LH zoq3zDSwVnxqy201pIg5jyfLA7da5IznK9?YYaxE@)2I7#0(CMxm{c13ePc@T`R{An zvupL|JMnuz{Tub>^LxAPhb6Y{E+}1pb)Ejr&F`PRb)BP=w%+#C1D~=LEMBZPj=tG? zeMjtl@0XGWT*bFu+3s)a;K~qtV9FE5)LtsD*|^f>0OR3z|4e@Vi(1=|_>rsPwc-sP zmKDq^92=|}q=;gK{Q34Wtb+4=`p1$K_7{AApT#Zeop|?0&NJJcXCCDC?9kk}{?=EI z{0-j(&b(cI<$278*Iz3?FN(e8m+$z4H$&ASlBt#jPx$9!W$&RCt{2n$Zq}APhxu*}wWte64$#i*ZY+P`G8DlQh$a;d)1FGnNtn00000 z0Q_d#wmtIU_*ay!4+|@gj=uFEH(syf;yG@70(qgG9BFJYB33Cf&(-+bw{I)$#L2+pvq^&PE?mdz>@+8!bD ze(##NP4D*Z+T(Akc;?|8W6xQ_4IK#Z;;6}NU%{047Z*GK=zFbn_`Po_` zu4disx&HcV%QdTj9ODb?{B^{*4QHPX(3(2O{h03b(|(ID3Us`(Or@e zdbWqA{?A?Ox<6Lb6mP28%sB74qh{;XEY`KAQ-b29TUHHzi0zgp2QkVf*>#pZ%+UU0+xHwrsbOP^W?j*Tc7Oc|TUjO!Q!xeU@#e z&#|2~EbPsVJN}(~P+_wuLT8`L!S5wjvVwf=`q$eM6{es5+i|O7-wWB2uV0R>;!m9e POco5Du6{1-oD!Mk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0N3h)VWy>{)|yLa#2zI}V>(4p6_U%z_wYXAQImo8m;_Uzg1+qXAu+VuSS z^GA;!-MxEv`}XZmo;R0Bytse={)Gz{HgDd% zd-v{LyLLT({P^L+hnFv3K5*c``t|Gg?Afzp$Br{+&TQDQVcoiQYu2nec<|u9efu_U z+_-k_+VkhnKYjZ2i-&i-WB){j6Arsu!!~tre8~=DNMdc9)VxJiU7O9RGE)1FL#v>+ zMqPY=;X#$()AQc1sn#%f#PahD^O9IOUe(36Q{O)45|JomddzyrZvD2YUZG33OMQ_n zY%0&-UwQRv|M|avh3`2E^&b28Zpvns!U9I|fE^9o8ZjG`H?*iN5zgQeThe6WG*H+)pLa^n-8;}dtQPCDgsL3yp_ zvfsZFUaW8Lf5gvTWv_e5{hgrWG&z~3z*3WWGXK5{t?)UPQq}OnODUjh(e%0J{#5R0 z;B=2{DXup=Ta^^3$h7=%);FV|!dlkH?vYnFO6lgFeQV)jVA>QYGHLU4mc!}}%T^_t zaP?>kKIl~ORKNds8f&E4&(r=tx5sE4_`&U!qg}dtcB}(1vKTyF{an^LB{Ts52cyJN literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails32x32.rsi/shadekin_shorter.png b/Resources/Textures/_Starlight/Mobs/Customization/shadekin/tails32x32.rsi/shadekin_shorter.png new file mode 100644 index 0000000000000000000000000000000000000000..979e4e6b26c4f0f65d39fb7b1789af3e7c6cc35a GIT binary patch literal 630 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

Bf?!# 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 uhn<6_LDDV~o{hlc|I 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 bVY2fd@2#J`H)&^900000NkvXXu0mjfPZv=2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/appendix.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/appendix.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2ad309c74d012db5d5dab59a953f02654d7a5e GIT binary patch literal 1609 zcmV-P2DbT$P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-_Zk|ZY#{pS=u0$PFNutxX>KE5BBl~uh|bWcx@ ze;l1erYMz=#Cr$`^Pj(0_zMqZ%Rwz=FYXbK7A;)S$?@^bn=CP|-B-MH)6w0E!mB^7 z9-%$cGo(Pusl3ON?MPk>@VlgEda^fqxrgCb8Rg3nqrK2KyN7tBa(mYrd120BTWeJZ zK7O0jHI<_W!v+u?NyPVvh~2Qz0gai=arU0Mk6EJ|YalEfoGFYh)}T)5 zazT4LvCSD6V zf0s9Y$z0gf{R!s6rtS%I?|FN|+SvPh-*p(VvF$S4phiLY!C>af85aCC8NNE;$I*|Y z|He_bqo~pE?n$D z+oTr5QCK@|D}1x#tlHUW{$QTrJHWJNipxkf8y3v5f0{QOe>mHa&qQt=N(FcW8r&M} z1Wd6jp7Yw1IdXi+@K*6fNp0wk<6+r8M0t*#L&i>+30rHe*mfzMfC8uDJ)Vf|NfpP< zC;Bl>_}U(A-`I}McjXI5z5rGhH9=Nw99>)#eE+dQGR(r~USKzcvhTs?uYmj4FOd7W z48LM{qH}%$7GL1lEpO2t1HXdo_mK*p8omtsLDcXE2>WsLKX;UHg~1*a{soGNSj#pX zO4R@W0flKpLr_UWLm+T+Z)Rz1WdHzpoPCi!NW(xJ#a~mUDisGSh&W`ZPF6%k97`38 zV4<`XT6HkF^h0RUkfgXc3a$kQKNhPFF3!3-xC(;c2Z*bSlcI~1_`jskBF2N`e!RQ) zxO)c(^)geYYVzG_o zHfAM5C7vb@E2>8MLe^!4^A=~dTxHFB@)rj4+H#ufG=~w#A`(bKgp4XSP=w3Vu9j|qgF|4nNZD&1@9t{v?cX!a{(b=U>2lk$kG59;000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^Ri2^9i1CxXzlHUIzs8FWQh zbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0G>%iK~z}7?Ub<%!ypty&&Z`+ zcmQZ<>;b(0B2JUgQ$UX^OJ6Ax!52=7djs(94g^35Aw+?7zF6mr<_x2euiK7kUZ4qK zH0eV)06-POXxd-o6q`$owPFBRw;drI$SGo)7u7o&YUENT-6SE>X3>`{Av#clnUMt#ph0Cn0Wc{I?+pA*7WPP4YcQ=~tct00000NkvXX Hu0mjf8{*v2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/brain.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/brain.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2806b79cefb50b0dafdbb93575cdde187cc7e8 GIT binary patch literal 823 zcmV-71IYY|P)EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#@meDV7L00A>eL_t(o!|jz_Pr@)1hMx^) zwt+J!aX8RKK>z>mQ7;8<{9pp@*w)q?UBGAp3&fi~H*HSRzHi>}#M?-Va1j@1`6Oypqs%m~1 zkO_$&26&zaA!I^Qtk;xf$-xaQ(iCG1VY`J~35s=2^TZ<)a!Wi-)59B>K2ID57-LLj zL~BhkFNmUuJj(#czSg6)VKV4%y{+&2D5YpL8Yra*!w?|^d7d+yOr4|5flaRZi3x(B zmiXRX@Efzq)R9sGRN_aUgnuQmY07>w7K_EQE1!JgsDt#P++qL#002ovPDHLkV1nd; BZnppc literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/core.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/core.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2d7893fdb13dd286886878c3ad64ea8ca4f934 GIT binary patch literal 927 zcmV;Q17Q4#P)EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v$8%dYvKw00EmxL_t(o!|hc)Yr;?zJx`=V zZJ>n=Ej)#yODVV{yL+c@4*7i<-24mfW)VskMTh}22nM2A)4|@yO^j(0Q>UEi<%67) zbI-jOXwaZRMRa@pxQ_3LI>^J_5daWGzPO110C>EAjsZZ^I{<(O?Fj&|U3;a3w5yPE z5HSEqIRF5>K*rx+b5WZEZ|`P;c)RvaM6Xian|+LdyVH3zov3$$$QRvSKi;@2QAq$N zmvR8lTb{i`e{P!wM$-uZ;1KTB^GoCa&?;N|+2{D|OrnUKhm!(YSpZo{u;z{;r!xT9 zLnAXAe+9CT17s(+--RQ5V<|InW0qmgxYvCkB7HLUQw(WTG z(?PUNLzTtzmW2f5mO#@x2qItbkEAo9GVn`on?`1*Tr~%>oJc!D4)8V%cSmS?C$|m7 zHB*q2^GtA;XjESk(Jo3(WgsDGa1eS0UyCP+lDml=v-zS zwyFvUB41E_>3ZX?68CCf$63fr_`f>Pph1JW@B`15%vja@;{E^t002ovPDHLkV1j#; Bn(F`n literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/eyes.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c0a306aaad6dd6f4ddc3c683915f301b68977d GIT binary patch literal 1014 zcmVEX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v$8%dYvKw00HtzL_t(o!|j!^ZxV47$G=yc zN-w2`#3nr;kuJzeoE&XwW6~~7Y;@j?nF=V|0?D(~fGn2GMCp zA^%+%sydh3%XUG%`Z`7@*?cav`Gp zS1WH?0=V2>itw_RzNpj>gigtHbdH2WTwDmE_@jh+?KggI@8I=286Q8qZ4pr|*Uqg( z-xY|2Lwxf1Imi<@93nE=U5wniiKk0|qU4zR`b7YMF>&H7!~7pXW8wrPY1)XDPJKo< zk*142e}Dk+ZBqu=fYvBuBawul=~#OB!m#^0@Jw)-iju=o^{}sT9Wh&!q-msgvzWd2 z2n3+(I#g9dI+ZnTLYLc1MadbWE(M=Iz?tAOshu#nwa&!GTE~gV$g3>vC76-lv;FKC z=p>AULp;k+!rc6QQ`@6o+q931#&<*0;Jkjj=Mf!_xa zuXsFCOV0p+&1S>6bOS>Xu(PKa?|1LaquGf0LUDK(Ry-D^t`EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#}SbIh0k005dvL_t(o!|l|u3c@fH1<;$~ zWct8D1{Ymi^aC;$`v2ch7tPQiU?H|^o%#X#LW*$D2fSP!FBc#pqJMSRAD0|+Ds70< z`LYxbus$lzs)JP86<%*10PuX=O|bwePVjAqS{j7V!?zuZZa|zx2t77G!j&eB(fj~$ z7PT~Zrx#M3FwVo*^LD=m80Wzt=IH`;A>}G1A|l$v2lEdq91C)P=l}o!07*qoM6N<$ Ef{!*J8~^|S literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/kidneys.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/kidneys.png new file mode 100644 index 0000000000000000000000000000000000000000..482bb2410227df442ae3e7ee251ef6fcd27fa473 GIT binary patch literal 759 zcmVEX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#~`bo>qg008qzL_t(o!|jx@3WG2dMQ=(c zTfssH2X)awKfwS006##7y4Vg5fd*2urc**96sne%!aIwQ7hmpuUIP#WK@b~=f>^uH zHSB(EV!vc_n&sB%b?DjB`X&Ksmg{49LXs3_NlQL?^|Gn~0Jqx(X_o7EMC{%@+-+_U zYGhFmYoSJakg1nd?M-BJ22A55DbTeIB%i$SU5B1^ZDS|o3jJ6HT#V}|i1k#yEh{RxB`8Mr^@d2`7pgy(~GF8KsE poSQQ+7vVa8Ri~?%APC|wcmnhbg@c}Xw&(x=002ovPDHLkV1mhNOmF}I literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/liver.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/liver.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2e6ab25ae4c51e237c78ed7f9e592422c6fe16 GIT binary patch literal 710 zcmV;%0y+JOP)EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#@meDV7L006>CL_t(o!|jv54uUWchkqC* z0tsv^?ZN^N!23Ud51<1s+QGr3Catb@Y66PdYieBX8!y*>_ooFIhGCdLlf@hovUA^Z zPRB!*yZ|rmhj9^CYJxQy{V+nQ2>@V?4k{w2$i3K0Jaf4<8USD}x1f7->iE~>0I=U} z7vk&voNfg|cCM_Nm$;WdcN{8@n!qP9RZc3v8jZ4Q-tL$xj+%fqdi8O|%1Pf)$j+te sdd?;^@fUJ3bEX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#{UMq;_4>Y36V0N{E#qszo78Q>)&MgGzX=I@VTbs_1Dr=tS{faG~64Z%|?@>k=O z7iHo8Hxiy7DtNVG3FjpnZwe&*d^!RE{KXueAAVIW_d_3e?@v&LtBbQpv@NE- z@Ie`HgeCLN&BwzI!qR#tzh556^Wrzv_Bf&c&j07*qoM6N<$f=-=I AiU0rr literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/tongue.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/organs.rsi/tongue.png new file mode 100644 index 0000000000000000000000000000000000000000..64306900f57f8f8214509ed2fe4ee22edb47debf GIT binary patch literal 2303 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|aavV1d{pTri1Y#q|$QU6_!#c}8V#f7$Rm;FnMdvzgBmeO-lQ}sXw$mnpn)wa zFLp@g!E()2ac(>$3yCICQQGX%WJ(p5!Ak_Q{M-v&>$YpTK@|&6f+iD;5#G2)dffc# z_|(wejUZYvUcK zOP7sr(mix@?u@tFE?UBh|KS-L}j2U3c5@MD0Q~y~FGya^FUc?x+E(m@Oe>LRvHPwd{1 z`+!?Q-Ty3Z{EA#U(ESeN(t++18?4jdTPLOfH0Y*|ZKq_rtYX2<=}w=`hDF>q1)n*#u8tRp`Cp&^^qL?s666 z9AYnhHAl)-F<(f*b+l?jMkjcSX3@t+FSEw#fshdQ5}|9Cjx$Eo%9>7H2bz*j^E?<1 z9XP{mA#i1L!ue2Y3_R3NjCc`UCjCmxL5R275#4qWZ1q z!tpyRx>=UCb`TQ829Df09W}vqtrLU=e@<+cPx#tTD(zgV`7M_cl4+vIakOrd*h;t9 zozQi1_z264WwCT9WH-|c3h+JKbqd~#JGJFM>)Sh-z9<4g5!j;$;wl2a6#;gHXS0~V zW^5$M0H&MiD%QhCGrC^YO7E-n;R?D}bM&QXZ@^VM?1ih=lWNj`EX>4Tx0C=2zkv&MmKpe$iQ>7{u2P=p;WT;M7 zL`57+6^me@v=v%)FuC+YXws0RxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi}v_(b9;(+!Jwop@%`(mC%FhgeBch|h_~47wokBiCh@-#8Z?7Isb!v+DNN+{ftykfE-YZh(VBV6;ftYaZ|JYVYmeGtK^f0QKo|+p>?gR{#J224YJ` zL;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j>YD0yY}jxcDak z000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0005vNkl8xhd~l5T^Rp?;tPn-oi6eOcByn>DHL3|@C|$fcOn`Wv6YHw zHH|1;#1>N2j#`?G$9uG#D;+2e9OzZ@ZEEM=YofahsXbp)NSGXRkn>+fl8+e}@VVxzHzRjqOH@+D?-r$ygF2v9Ig z5g~{X9YPx(=3pR5`h>~C{St>2mGM(qiua0tm5F`LtzeiU?jK+*q@a(a88UUM&nf_n zWskD-;yFN9B0a59!7xQm86}fAL{uGQq4E;d7v}iMNvvv(>h`9qgs&HYJF9P{l}3$s z)<=R$lmnp%)5}HaZs{R!Ha9S}G&9+}==mRTlel^;A~NeAXgaN*!3CK9_Ejiyl)iP~ z2aS$H-L_HX$ZzM09A)m+qSUtx{L1xQUYM~IYxPguC@=PR3;q;JJ*=@S;ren94-b!j ZhVN3>q1ffHIM)CG002ovPDHLkV1iKRO}YR8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/eyes.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..20fd326f17fa91b0b6c33b7fea29a3d693ec11c3 GIT binary patch literal 1643 zcmV-x29)`UP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-_bawI7X{O1&V1SBB@$3cK1_6B?WO{yQZ$Bvn? zcYh|rMR%)0tp_MYLfZfQ9qBJTOu3|@)@rXc<0-v#9(ZZ_<=J=HbB^;~@TI$so>r9J z{PB1rjF0pTDUfngKJ&>5B(EImQ_@Fz(jWBlOv7(x)E}4$%dKJ}D(!>-C zZ#GEg$#UtM7a>p-jZ|y zEihEba&xwI4}cOOw_-9RKpzEt<~z;i^If{~Wvi{e#-@!{+GXpm+jiT1k3g%1L|9%p%Xor0WmHF#O)w}hUSA=Zd3{%yA5uz;LpkQ zS%=RD+AfoHXDk6MTc+%_A`XE%+v+yaPQA*m6@R!VER@=;D^_hmBN}^b0#$oHeRupV z>Ijk8irSbPJWuf2wuyU`5!NELVw>kJ>$dPJv9j-pstOnw-XnT0-tEz&TRJdT`k4*iUOR4qd1@hG<0k)nPy*96vq`P z^4Bu`uHko}??B&y{+vLxs)0B`ykL>u48$7y;*tW|1!*2~NsL2j9?~_?V|g+ln})LC z0vl8^n-b0#P$z@E;?N?m;|$K4Gl8P+l625UN$^&9RDYu7`CSrd|DBl?FXuoPDoLzj%B3tt|B-f9FSKGH#i6>Z`cb zd{QR*qT_dtTaxIHS|0004mX+uL$Nkc;*aB^>EX>4Tx0C=2z zkv&MmP!xqvQ>7vm2Rn#3WT*~eK~%(1qF4kArLEAagUL((ph-iL;^HW{799LptU9+0Yt2!cN#t}afBE>hxsNufoI4=(THymt=w-3JJb3e&8v2|&|rGZmM_Y;IKyy+S}3 zpc<2zWhByz8ThWRdj$A?7vov}_x@acYTjZ%KqQ`HhG`RT5YKGd2Iqa^2rJ1d@j3Ch zNevP|a$WKGjdRgufoDd{OlqDuLM#?LSm|I^GBx69;;5?WlrLmGRyl8R)+#mD>XW}P zoYz;J85!}Oe8QU00006VoOIv0RI600RN!9r;`8x010qNS#tmY4#WTe4#WYKD-Ig~ z000McNliru=K>4>3_I#Q%W41s0Axu-K~#9!?b@*sfItWYz#l83^ec%@-o!*R4Sv+w zjTj;z<;DQuo+LBLyw+c|Jz2i0PQ9ucUp~TZ^Kh*J00000008*2)vxhaz2cM1?p``j pcfTu?u{s|hj{pDw0000yu>@~?2Bl{Avj9n;{Ey{?(m;Qt@wlGl* zpJkFX$!E#%S&Onw8T?Q8o^$W-zUThVIq&;E&-0!vyxm!T9w{CO1j3KAwr~J%lRq7C z1U&1AVbc%@M>^5m9FH?Mmk$jOxke21g+MTO6Yid|?!${_9M)tDs-)aNhV|pi-I0HV zsX3{oq_TT(77k48gJ>{^3zi<-!ux#FG8oY9%2LE!?WbtH9Fbv+Ls!sr&6ts>s*jQ zi{%_ui`G(=RQbUdW^J$Yk9f0&>cdv-vm&YMQw2R*`3&a|muq!0u*LZ%!YH4Qcq_OV z>gDw(_pL``hx&|HSOxR<2Aqy4(x7#Ch0}=}#w^22FSHC7j>El7c5{MAw>b?vOB$r);YfrjKg#a~43bm&H+)l4C0 zMo993PIPd6#6u&9WZC#n{?Jgwc~RxKDdtpHdBk38txk{Je+%K`t^=|=ATLL}&YiV@ z9R9fMU(PWavcTGsHUD2BT=c&aMHlS&EtxEl3$UG~i`fl11!zjo;ACv_s=rCy54h0?%th_ zlaP=w>AFG#pSdC3ziL8IOUyVjS1xm7GNfnw_RO~JxpU{VOV3wL1*bBxF=Q^>J^ZtA ztutq&vD{!J(%&DE%cO?MV6vfZ#rE~ialIs_^p#gJrs{)c7}1m(B8YMz+``@hbvMb^ zEmVeUY-}vkE-g<^AagXh6|_pClyDZz!ahwNabB?FHAzt@eq)wnAy!s~cA`>JR@O?T zsJFi#flzp_&2K>W2J5M+s%Cabvsl?xR4u+@61o6qESO9zL!_G#m_0%lJ3Bi+MiD6M z8GW7>C?QtqePWrv?gJ2%d|$~b%v^c&^y!zF&r?&?<#t@fzNSc6fAj57EZ-!h62o(T zEUiKskpeMAPD>oN2!$?=99`+qs2f)i6BoDFD5UR` zC?%*biXf4}VSF;8{qhCYzpJ7Q`cC)$&Lt>>lamt*05|gRbn4U;VQ6URs*exsN6f?h zkxhe_lR;|g>Z7SD2QxqR86)CX>6`BZT3l~@Q9n@SmQPDsjGf<%yZ072=ek36ilZ{PeV-s0lx%9Ev{=%NAU~?o4o0|%l2XL&fqXUQdYfJq-9>9g7 z(zqbBFbN|C81Vg3A?mKRiIWpR`4F9ckrvj`OFG7p%akt}G%fZm9P~YJXXgdLli>-x zg(R(Z04SQ9o8P~GpW2rxc-N+Smcc9FbF)u*_kTy-8@|@m*_qSc-p-jt{r6v)_PAY*pT7(m2%T0d+xj5dzHY#`HHkH> z02-H4SJ#%fuRpL5-WIp}UHWSe1vURn69O`HtE#_nmu`IcW_hf(RDfm1nu?w|>Mp!> zvbzcsN)R8uCQ|6IwzhUPJX|=#b4_F}c%!q9i*?DicFa`w!CM!P1WTX+qsx&Jrl#%~ zQK$l}Vbv=lLc}Bf2Yle#3ot_(60r5Es#zK`hMZ|v+t;6u&LW&yqU`Dy_)0dcniVf3 zF#fVM?VP%11h+~e@k9{B$%`BikoeV(wVTwp_~U_^%su;2-b5GJ(8$O=TAp0rrU8W) zMAEJ{Rp|m5c17@hdHJzl@#JIHM%@+ctrYt99D)|6wkZr#*my4}+@l0VDDZ79tnWAX zy;;vrs;)lvC-pYVMqH4q0Rb!2%nA~;VpU8A;$AN%BI5x`J+6RZH@JJ#$%bGPn36#t zI}pfV^TsCK*xSb^jr$^g=K`|_6aZs?!*#jq*RMMwVb1y3=AO5{-+o{XQr2(cB^;BCZ}Df(AUF7>uWA z+=d8>zWLcqB10%1wqZc;FfpJj0<R+wN0;H$w+Vy4i0LU+W`s$hJ>tNAJuy> zO#YeF;FlISnc?ep%j)s}bPrdb_n0|3X-nN9XNXRJbaZ-KpmZVh@F1bBftS4aHC8qU zI!W1k!OLbb^R@s|;0mx}-=@{KUP3O)3I1Ond9UAec16k)`u{Y^^r{sSOYWCm>j1xviBfX)1eq0ra zzlk0=*DF_QfU7`pkuVO@{e{S5{PXYzyk@Y;xYB!0<;cJ{#p~P{atoM#nV(hh}4CftqUDdK>B!7$81jdpqB# zxVD5nT>$L&QRTyM|FVp0FSzNO9V2HuP@p6M9)kt~=beynw4(tiXQ54XLW)G8TXDL> zQy3$va#bH>qN%HEnEkU8my85j=2>=}ug|33*&HpLJd-^=G4Xm~umsf5!4l1a^75mf zB<@(CfcR+frAFQ6RHQ}`@HQu~SOo4~=+=_G^}RHI?QB=IPkJ1;-+F=U?8QsS$iS*! zu71EWf>^({SztI6J9M%sQOs&zfk?WdEOiG8Id==HINO`fi+(VCGPFl&z4hI1qEQVd zJ5Z>3LQUgxn+a5rY8*5{x#LaCt;A!rzE&1iF%*fdXTxliMdr;alYqTRyKPd$)5R}& zU;y{OhK6R1KyY{f2ql&QgueAUu~DQcmJ_JaIJW%Ay}tQ44pjWoQ+_FNaK1k3#0x)r zl_I=KQRvD?WnJ+{M5&PqW4SiuLt_#d#MJ6>G9Ht5vDWScX@qPzxqY`y6$@JShiKmf^P?4ABfL+VPoU_?Wg zKU8-Iah7NhQ0ZnI5M&t4XE=T=E;#r1|sD2dT5ZAnd289VQucKjI+F`API|V{u*n>qu@%%Ao`9TlL4&-A+ z_k91SNHsz8*5&r_bc48^zzWR-#jBp4$s7d*xY?n&zm>PhPR?0WXe6kpb*e^G}?q5CTaZ;w;P!nHjkm5eNjcv5}r7{KX$VQFQQH?&bFpfj~xi z>FQb->*@;lUccty_ zBuRd@CiZl!=jnfPwlw|jr;9}GWUF|;p^f8jKGnL{-@IJYr4V5ts&tM=ggt>*`lhTD zm*ghe&xoKj#8G!jD!WmoBAxrnY-*?M{VD6Q3nfa?DjE0jtU_)R76!EJLeH-}%`_Ul zMefyF-AVnNGH697JU~@$A$TTaLu*IFppKtU7Y< zbyxc2Z<`ZcAH-IEHL$Bv(KUu8P#Q$nkq_0nUZtMmN)i6!#Slfc5n}KujXL^T*n!eb zpJz9+H4$8o-u__r^+lQDB!XraXWMgb>^7Dtb@G4xa{aCCAm4AO3!TeZLp{Xd(Qkfx zNh(Abe2wgGAP}d7kDkcDBCP-j(i4r%^y!xvSgE)aIJ%wkAjCz~wW&zb9y zXf!(i`E%Ux@bL2LYPfiOX+=fEz@oDWkw~BW^Prp>&HiF7HO(w8pXE&db>OUv+%4$ZdB{u9d-N-w3l zGs#Upj;P9?S$cTB{{_hzq4RYR>6B9#?*dWPt=681T>+9>k z>$s!Vy4}A0(VjDcivmk4n)8)&I@JVrcRET#JG8tVsdTDa!^?u!p7wJ@8P=I_d z?&9KNS$TOX0@Q&DOwt0TZTPSu9&-){RcBvoVojFX?A96}iH6ucbw`>B6aK8DrMJySq#CYCIS;3rpuw&U3UvbBiq{IHSW}YaM1Ix=w!z z)@}5j4i68fdR3Qrl;*!HB{YbRzpGM1emr`FKC!&ux;6J2Y=<-FoC+qHPs3hb(=Ohj zW!C5ExR);veXp$33;SbndNtQRb+9>XGtF~waOjRJUV23Lc$kiWJBEpQ7}>de0#I^E zJ}Yw8Cq~3r)-!5R#a5afwkVQn3~7G<{yp32$hdW1mHXx;56nvhjae_8;(%h(Xyb(* zyyDJtASZwS*naj_F8zRCticn+-INs8w2TawU#o8gBJn9Aker1D7xGClDM8VWVULJH z@x;)kSsw@ke4vP}v$;wKh0;ozn&$qFG3DiRxA>q+<|V0DL!kznfjn8JbcNyzGE^^I zF3Q3pg)DT+pa_ljUGaEd6`n+T5mtuMaz-5#LljmaiL-2~+!;FVfbnlw{ggrbx{SFWAWNQRv?Cgh_o;$aAu)hmeUVFQ~y|^}A z|MbZd>i9yZ#r}Iz^1Gn}{M_8(<>hbudE*PaewyaJZWIaru7B)wjyW}ACfroA?ben@ zVsi2m=-3LIY6EDR-5h65qmuE&L}{^wL*7pp0z44PXzH?m8Lcb)jdz&1?_#N-(YJS} zl?XWJ#+llHZ}w~NUoc&ns)`!+aLwjH?1g9r=F$t2n5YkB8Nd zy3mBLC@)7K>g(&FKS}a;<5&=nisgcJP{0m&i73(+9Yt<iN$7cP(tYBz&zt^!1863^z+JI(x%pL9 zn4^Ndy{v!k9E;}8Tts#beaGQJkp21d5pWmmbEc;@b~arh=fOMkF?RDeruW``xGbNA zrlX_V*c{+bJva!-D5#zJw$=!^mePs*dXNm=o28m}I<|8}*t|r6a>!9Pn}P1di>5mF z0}-up3(_1vetZJ<$AhVURe3fgGAoPAL_%LO-Gza3e1AA+P*JBLC7nLAMAmW2nUfCD zC5v8e8L8r6XNNPMR8{%tXXrRO@;-3qvaU#H{`j*87|(1xU!2jh45wf;f(DM!{PA<; zJZE%w05WM2n15q!T0v1sNt=K(H8rhVe!soDpZNRoBRVUq=}`v)F5tk{L=$ftufsDS z_w^)-${`hcJt86^aC`QqjUx8@Ok?tgCclV`^mM`0!MlqG*{4&JjZ*qzZOt{De57UR zHMZ|~dWwC#wUm>+Mz!8~sCn!68kd`$feMd-I8H|Zi-$J=)D$YGNxG(6TcXd(%c+Wp zxk&P7_mGef^KobMlH&yyv2O)1{FIA@%%LC%C(Q}k9`p}LEAp8XgWCsg$N^& z@UbyVqQ8GZOAGf*!&UGN1?}zaKMzS=K|w)f@E-(q{r#0%T3Rf?Gr)SNBu#`iTxs`D z>g{jumHsY|3jh5)c>MkNxUPePgG5owy`~CCh8-U{* z!(_fuz~g8oMwdh8;!`MtnVDJ5v^U6aX=y3m&rh!7;O~{TzpE8kny`~1?9VS@p0>B= z#22EH7V{~pw{PFxnD)#QRF)hCsl z%PVYd=7LnbYrCaTX)P6)Yk2M2`dI}XuvW7m$AEG`6i8#O>i`CJS>MnWud6Vi%QGNv?1ps ziEkz+4X#|i3_$|}gRkk!i<>G#B$6OWUZ(&H-m+0#gIz>NYyanQB{cPw$;z z;$r2s0rId`@D3J43s|!DxYR9SWEp>FS(~%Nl8fWg6mrH{GIO>z@ zJdJY_o6Z02?JOowsBb@h`*3>NE_m}L$LEEY3B=xLW`Rh7EYrFmsxU+nzgF(JitozU zNqcMS=w>@16N%{PXy1iCh96%Z{x=481Fne*?=r87Vc{1&iwQpzwW+>Xl%Ae$B$^sX zdDeJvyf|=ag!eL#q^jy8|5Lt$bb%Xl$a^ncj?&?yqOAP;1Ln`|aP#yG|H-YNEkg5u(6CFL)c_6`nSU}0TqIVnt# zM}Tm&Gnr&s-Go#$i;yPWcjpoo7KXCMzH|W<>2~tHh$p8*RiST|TarM;s;3ejJUCYT z(9Ucq4!N+Y!Wu_|)7KVZ4I5vHw2S9EaiVwhiQx@C`XoLLlm7mGTjz-tq7Z8wo`AEK z8_7Zv9qEg3fJUI&N`6@x8JVS(n&yy((>sehh`Y#q|X0j(lne}va;U^u-WXKGf zfg5)Lm7pcI(*2K8CoAnDMn?&0X=(YOcxjes3}!4nknAqV#l!Qo+vz^-XCQ}4henJ? zKohj=*QF(0oc>eGGL9eNOWXoj)SI?8_00V+;4{El)6I3hD=`c)y_J4vvP^}rsL#P) zslyNyCbFA63Zh2BBzfg)9}@u}*7a%bS(5SLpjLIuCqb`EXTEuG@z+Zj6L8?(g*egh za2YQ)tCRr?xHj8*dMV6l{bRdciU@gRq{pYx6^@zafhvl}%b)Yq#?A$_LJKY5V1{`` zb)D4HqXR->l+?U`Ob5#tbwqTltC!jDNfcrAH;bNyZv8>r*ePuGIWxX@x%7R^)K&gUHgJXJWerb_|75ZwAQEVV@k_mvZU50$SNsCt*m%i zU-YDV*Wxe5#mCp**GEGc$WseMY+XM%;tpnJ=E}1_J6Vszbc#F*92Qr2!TdPfViO$` zQ|nK$mQO~xr%sM3GM_wo(zp47U0$b+Z?Z{KUVhm|M_$9rF4G* zZ*T8U-}mmdy{|Ckbn46V2dl*!_H}o6Z&Ldgry(-s&s2sT>$E#BPjKaFcRupCkhAgl z+cN38ECY!J_unVy=KAu@`}Aw~ZtKYARZ|#bWMwUZen?7BcW;V_jh*_MVfllzXL-Gr zPFlac;raf(dwU~v)UL~)JCwJ*J8bpRr|b8y$;iuFFJHb~X{Jw7YAWmFj}m9ogw@s6 z8+DrQ|F!(QR0o(UJGx?*D7fE&VGu;baO^{kPwWztuPn zr!pP@2b&lJ&vaG>oZNS(@JHS z^Nz>$X8Ym9n-yoaCKMM7i;IgZ%|HK}sqy(TcJ|Y~g7w>vpLlk42}tEPm3@2m{L!EH zOzFssKMx-|W=}r!zw7zC5-X!=&+oDD+el|8<*o{1D<~*XSg*HS>Ak&F^{cN{8e-l1 z?lQHvx1am@bEk)j(2o84r{6EMeUQ6gc38GOTjhFlDc+qNPl|RPkZZip7`{66;nhXe y`{eg>ynXlX-z&Ms$cF9tO$IRp0+WH~x_n6G0s-Tto*uwF!rZ?Z{KUVhm|M_$9rF4G* zZ*T8U-}mmdy{|Ckbn46V2dl*!_H}o6Z&Ldgry(-s&s2sT>$E#BPjKaFcRupCkhAgl z+cN38ECY!J_unVy=KAu@`}Aw~ZtKYARZ|#bWMwUZen?7BcW;V_jh*_MVfllzXL-Gr zPFlac;raf(dwU~v)UL~)JCwJ*J8bpRr|b8y$;iuFFJHb~X{Jw7YAWmFj}m9ogw@s6 z8+DrQ|F!(QR0o(UJGx?*D7fE&VGu;baO^{kPwWztuPn zr!pP@2b&lJ&vaG>oZNS(@JHS z^Nz>$X8Ym9n-yoaCKMM7i;IgZ%|HK}sqy(TcJ|Y~g7w>vpLlk42}tEPm3@2m{L!EH zOzFssKMx-|W=}r!zw7zC5-X!=&+oDD+el|8<*o{1D<~*XSg*HS>Ak&F^{cN{8e-l1 z?lQHvx1am@bEk)j(2o84r{6EMeUQ6gc38GOTjhFlDc+qNPl|RPkZZip7`{66;nhXe y`{eg>ynXlX-z&Ms$cF9tO$IRp0+WH~x_n6G0s-Tto*uwF!rJPv-nPv#~t!+Ar0~E3ZvA-M{ngnKkhWeB2C$5eyxNnH*%q7#?k45OCkw z@U=?!(Z?OWrSIzYi%;}$sa#jYxG;cY@=2GJ&5@~R`;I3kZoj>d`6-j$bnZnLS6n(1 zq0{#IE0?T>=!KUhM}F40DF_@Wun_rK^Y8I$hi7}@^kw?pmG|Gx)85NFg=@mu(%rEW zPd}aDp)w`q)SSyNTV9rMU1iq~tm8J3;=P@;QQ-V@;pT%5B3!Ni^P;Yup0j`Fg@$R@ zAC&EOwVK;@_FLrnO>uUAQs(Jx;mFt;<)JotMTnOC(<@n~%IP~}oW!G8-jrEazH(g| z^6Q1r1WS9SBlB%^Gom?HW$n8EKHIv2Q@_;_>d|)A1`8dABZ-WdVQ}1t$!+n(55NC< zEDc&_w>aAAz{3Iopl{>Wi+}zZlVUWpe%gnxOlGrtKYGW_tKEJ(Hz(~!731ccJP!+Q zNSrFLkg2edTlQ*yoWstTZC|Tw1$o#Weyk|ieb?t|{a%L7%P&oq1+@rFxU7=4p@m`o z`SdsU-uo$F<^vNBgQu&X%Q~loCIEgx3!MM} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_foot.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..30ad69dc3f0463bd7436d5c0dd40d2762822e7cf GIT binary patch literal 1867 zcmV-R2ekN!P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|ck|ZY#{O1%t0zycF;~+p0zJZVLr1~+lJ8gT{ z>+n|>(*vy*dL<-O+JF2W={G!uYDrbBX;;m7YOlQv3|jtp_Py^p#~D|A=q{tD7Nu`~ zc#H_`mAs&5^n4RO{qZrxpC;(Dr&n^4@8tY+Q@)9)Jq#7JPx4i=<s?W>_@S}bI09Y8Q&^l#qNN{AonQ)us{Fy8)C4z6HS$1A(l>LQ2_6F(TBl0iS`$3#VEf5Rgb&h_X~>1vsr7-!N2m9E`->%ETwrvsJ;W{)-?@Z#*%#nsK5cOMhWXVxiGr_DC|9BGxs zt1el(Y_-+b*tD^fcHOdd+itt>5m;)$QA0w*qD7DKMD0Q~eS_Io{UlpTO8m_FV=hbSmAIprA=ktOB^IA6XfleqiG3DK32tHKp=D3-h(E>!5!!* zD2|Wtx_!2dTh+M2f7z$oV7t$A*R+UMCxVJ&2AqG=U7e?25i4!gSj!!xMu=|3QU{xd zr>sl2@3}m7Ju0+t(aN-?A|2lQgr{&Ydp^eY>axu@?ktEmCQg%3++T3@s|a4;!6$O= z${^Td&>%V$-m!}Bj;g@9Ds-w{bw@d2cH2s4>#Y~8@E)j z$;{gDa=h6F)NwiNOJd@6FT5Q>I+TMO9EglTc70p$jc`C&%NxEqWZU}6*-{s|0?+x! zd)dRmkHrGHxd!a6)bYg+pV|=fyc~?Tt0JkX$e_h$1Ygg2)r&T;b160G@F(beH+IwO zI9e?C0}B-1n@u&m)1IGNb#S>rnL;ZJM86KLvOvnGl9vI;n=%R!X`BR${{>8-Wz;?W z33HeOX>Q;w_y7O_hG|1XP)S2WAaHVTW@&6?004NLeUUv#!%!53PgA8L6%jj#IAo|! z7DPn^mr}(dSSW3URvk=U`Ug!Kk`xz5!L{Jv&tlcV#aUMeS3wZ`0daM4Qgo3L?@J0T zV!ZHpALre3c<(+yXjGVLc1-}PW*Mn?Ow8t1#lR~B1mVK~<|Jn7iS%Lyp7nK4om6)b zp5@*5XZ0z0lL0=FILdUxBHkdL*|c=d`@|tuk`&@|;&Fp6Nc_lk+2uFRMTZ5R88R}d zdEyYUSnOcAgIUQ?iKmIfimFk*kabz%yv13q)L84D{Dr~1wvy&Ltr5hrganchA)|&e zDzFftT_eRriq2ym{$a-)kq~_kr8`?LJ#?;(srom*uNKFj{yP@U?yEx-U z|961*ps3190ssI2000000002|u4x*3KA$#@qj~S`$}aD{jpJyK$HSVY`AXN%rvWJ? z#TX??RaNP#A$aetswzp+aU4o1eI+;lG+^I%4a1yvZ(KS-S2nRb$vUN^#&W}e8YTy%ZdO1002ovPDHLk FV1g6-alrrp literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_hand.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbc7371d14bd73a3bb5d33ed1f9e467fc12f881 GIT binary patch literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R4; zr;B4q#hkad7OrawU^w=%zxR=_1+$;@Tz3PD`v+1s%((N!lc#J`?;D;lxr1kKnn+z) z(6_UgUHa*}yz)Z_4}Aa2C35cE&%+8bF%yCraG~4Gd1lg=Uw^%jwe`Z=vbkExM+~N+cvVXJ=9!zL)}HzO_gK=#4gY?m zXH{~xC1&Jq3RV8+9?yu&acJTu2lBQX&wKu`z#_p!s&>ot4ATR3`_1>gzrJhc&)a3Y zP3QWtpMSpj%GWUFIp@=BZa*z@+$K6-^D}?rRfgt+4_24k8_V_2{aTgV_1S-Y{t@d1 mXAW`qas;$8HOzsbJNyn45~Pj< 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/meta.json new file mode 100644 index 00000000000..a259ab696b8 --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/meta.json @@ -0,0 +1,71 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13/commit/5bc3ea02ce03a551c85017f1ddd411315a19a5ca#diff-519788fa2ca74299d1686a44d3ab2098b49ed5ab65d293ec742bead7d49f0b8d", + "states": [ + { + "name": "full", + "directions": 4 + }, + { + "name": "full-nomarkings", + "directions": 4 + }, + { + "name": "head_m", + "directions": 4 + }, + { + "name": "head_f", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + }, + { + "name": "torso_f", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_arm.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..c294120942cf5eed679cf4306018857a95c18f09 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|OJk zr;B4q#hkadd|w*|N*w=q|B0WbbmD2Jh=>zWUY?)$_Apv|om#!&i<{1r6z{OER^Ej< zwoff57XLr5dAj<{oxkE~>t06(n;FM`o|!yr)=%a~h729Y85HE08!C7hK%8`mguQXx z`|q!RczU+qawVZoiFua=9M)eK=4)pTJMsGKqWkZ=Q;ae>4hlFJNE~@saA3Rn?6XHc zR=6k#80Jwhj8>61O3E>36vYsNO5e%chYvgKq7lXmFZFv0GlJZIN(f3Ukyv~$am zPxb20|IUn-m>DhZAon1>Su}fV)c)@>3C|@MjwCY(^fNlxurYkZ$~p7SK&to1%MvH8 zshh6sZmLh^O0baWs<2siPa@Y$`r+rFI{gV;2c8x^{92{Su#@ZA=bap_PSe~BSPS;w zzuGQT6umaANc6y~nM@PH|5fdMRAZOC{r18Djfh{bPWv#P(06SSc*V`L{4%F?3fF_O z-7Bjb&b%!<%r}$i#PiQlyYGrUERZ;wBv|%hzg&yfRIWFZGJ$p^EdCKFf$DB${tx0+ X*88+ucF0=;(+h*AtDnm{r-UW|r#lO; literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_foot.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..390e0a27ee3c31b36740b4d14c49fc5461cf57cb GIT binary patch literal 1876 zcmV-a2dnsrP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|cmMbR={AU$e0+JAdRw3JP`FfBhNh4?IkTQ&DTR*P8K^UOEqST7G}_P4=AQ^b0<8)6v6<(x)Hp zJwkh?XGnpRH|1kKIgaGRfclX1Oi%hnFOO;XQ$+3Vh|xai7iY^KpZ5NVSS_&TbgauL z75S;RMctQj^Bsr+iqCr9Xl9MJvEWFtu znJ3GoYhv7aN*0omq)4G)lP*h|uuR?}(DEY|y5{ZIbdwq;UIa@fI3tX>TDo`sZ+q$} zVxANcR)5bG;$l89(8;2l|F8le6!(3kSAy^D>jPlnq`>N=xnY4L`RQ?b&phlYw4Rjq2;wCku+OVwJd)pHhyi4{|;X4b6RXwpj4 zR-3ifdK;;87o1h?wOen!_c1W(faihHqYWsWUA(w@b@S%k$HexTW$LWcW}AJEw0OxX zOIKaC+Ujd;+Sp3FY~6L+ZoBUh*lHnBLZgO7iyq^F+J$QRgxPoG{uwp8p$5Rxg;{~o z9W|)U?k?!ii5|>=7#9NKb`ZdZ=7U*oR0<#D(!nfu#;H(7lzPBfbPxlAWfN=A1G{(R zzTuW|?*A)p{1Lfyp!*%jr32j)t;+Gw~kH;IH>;Mjr~Y)^|?aNhBKE6AsNSltmICL!4A*rocO1X>y4 zQX^2-bb-+{o0_wA75E8n#|fAzjs#amI2f<*XwxzNXme|*jXajbUY4ScKscB$Dt!j-ltVc>d}1Vr?<=A`>lSL@t;G(!%h3(cYdieeb+;I{hn|#U z-KHnm63wa2YHPTaI=o+bgdWt39N~+OmSsyF?90$;2n6LBa=7KTTP3Vlr*H*x_yl|Qx=^DXP62=RLp?hdJLRH@+i2}VtaKMee_Q5^QAG4Z+w%7!W-c&9x-wc@zC6vlKY*E#w{uDpEClgZ10<4qZf zh&0Xu*?$2O?o8x8{S6*e{0(5$8@&Jk0fuQqLr_UWLm+T+Z)Rz1WdHzpoPCi!NW)MR zg-=tZA{7xkh&W`ZP8LK(1ea39B3LMGg;pI*Uit@38j=(jN5Qq=;Ll>!!Nplu2UkH5 z`~h)waZ+@V67Ne2En>XzcpvB8b9nDQKxkB$YIaQks%9CfcudUZR>i<81O(y30OllS z>WTDX2A=hGPn}eE5uWAU_hE=c^y zb=l=N&P9g>o*6PSsd?fMu~_V2xr15BP>H9B!-}d=zL0fU;k?CJt<+fSp8SQuytb0& zI;|1Jv4jMY5Fw+6GAghTp$?=2#!SC6cg{et5 zDHsE~Uu^qh6bS4B&AM%WAKP~G1n@rtS6bU&Z2+^Mq}SV8_z39V1}?7Kn!E>G?f^qi zx@1U>4?5<5S>o`L`X0O?6YK~#9!?b@M^g+L62;d2)Z0*mLZcthq52*Kh}K!PDb z0Tw~ROw!dWA)6b-|LK`dr%hcY0000000000006*WbzR#uP1g6lm1Svf$f+z#8-~HA zX|lSmZ|C%L=ks}HY zbIv__KYntlD2k7B&W__yk|Z*-uP#ii>#8`8wQZZ)wpE&@DvILsB-StK1bo9B1R=!$ O0000XhvZ!BQeyxZ7OypHo7SH)?>RDJ^{CTqbMEwcD3^-838phL4FU|2&Kl8l!%Ii|@{5%t> znMoTtju#rt^tq5>5_ElzlmZ7+v5nls(@z7mrhedjWZ}21{V-#qL|UIeZ^7Igv)PLC z&nIub`9Szh+3u9HPm3gmG{eTzrD97t(MinkC7Pk&Njh9M(TR$#;COcD?{ww?SGihf0r>(WMP0t zf{onlsI}iNaa?|RrDERqEyed_6ZYRfyzOmD{qDPuu3mfnHTd~%YlqD@x3D!g{=9j- yJ9PEc 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/torso_m.png b/Resources/Textures/_Starlight/Mobs/Species/Shadekin/parts.rsi/torso_m.png new file mode 100644 index 0000000000000000000000000000000000000000..dafc83b65eb84c863c1f67ff31c90ef59b130ced GIT binary patch literal 1432 zcmV;J1!ww+P)afqZvo(H z7%XPqX0uUhYAQd+&oD%aqE|@Zy_oIC$43@DI5-%d$NUiE{r#OVIja1A34oUt78cUO z!vhn82&#vLg)uP({`B<3f5+!M2)GD%FWfvNBm^$c*X!#m-=CkKIUF1g2Y=4P?e}~A z5&(noyjWCMSJTwg6vfBK)BXKD#~+ON`ubweXm4+q1_X5Q$oAXY+XVjU>1oQ(&u76g z^Wct-j;5276aFkdr?NWu9Rl)&`}_MMJw2Tc4-d(1x6{tf4te5^PESvH;412?as#`& zyCNeagFZh$IUHhRV|fzx_V&EO2iyaE5f>LnDJdzex+f`7QBe_x1l->U$gq_dRo)>hIRNWN`tZTz!mN621)$#6QI{A^@oMERY{A%JDB zzP_I3=H@v5;Q>ueP5fN%e~diKpiS;cundF0wzihJ|6eBc-3rV70PZCvB{VTHAv!xd znH0~-0LZ~MHa61W;2_P<&wD38%Mz^Y0lu>=2M@p~qafFNh#;YL0s?j*@*DpW2Lk`x ziO`?&jMn_~&j}D{SOSpAVF^Gcha~`+9F_oNa##Y8$zcgVCWj@!Prm%y{Q-fnL6ZP8 zGc%&6r-%L);G7T#w$07W`ko0&fXMB3i|+33Uu%#6z>TB0p`jrh)EajnvbMG+a&vQO zb#;}G$5FR;I2?wGu)e-7WMv8`)3B+cqC$TUfa)%ni%(%kM@P9do|cwIo12@WtgOrs z5x`YkT+Hj(BT}1!~xKNBm zQAQ3P6Vlh$N2R5uO7Bw^Ko%qc5W^6ZsL{NDBB|a0$Hm13p-%|hzQ^&tw)qQX0XjN5 zxHNWte$MfS;v{N>D3v>%PTfNQ9G+!Qpf(8Z;o)Ja0Ag%wYfFF-7pk=} zF){1~Mgd&lL`35mOyZ0;Aqw;C@4UmkT^R# zqw@0dz_!UrWM^l4yFz4Z9A*O9*N7EB0$kt(H*E0rM%btVB>^z&fXx1wiH3#-Ze2s8 zq)`ADyso9Cg%%eVz3p7nq!! zWC2v%A5cz$AXr#f@CH1{joJcB)Ya87pX?R^&?ls2AEId$kVJYkMXJEJF;n&lslqxD mB9p@sfJ_cc05UmDFTj5?`Q@6?Q8k_iNr*Nj4;2Kza?o6e)H*_CMo)W&*$X&&Y;@wrzvFJLk|^ zXU8V#Fvf(UDB`%T>!bb7hJ(7UGv^#iDT<=N7!#%jryj19!Z|m4_@eQCzYl%ihp&(@ z#)Q7_!+yVCwLhDi)LLg<*WtZCITGTz_nxlnRnqN=NLJRTh7?Xlv2ruClL@50Jpcdac)Wg;O_1Y;H31O6``PQ+c3Ou@p2BsZ&SM^e9E+K z+n|&Jz*-ycSTr!iPy>?tVz-w6vmd7wQJ}TXrqxZ>$Tyi=tAJmIF($mfzmJ~pRLo>% z5*4Ksd7h8HdGBMEoa$}T;twQoZ-R1 zXeZSdP1A%q zn>8#JA|QG$@ZKM-kvS3S)Mg2bSMXU$Jsb`(6NZFD50IV>N$q$F>5KyDfI`Ari!mmo z^n}$b5Hw8_w%ct~zt%dF1FW@dw_6?`AIbB46p1OO+DIbMG)>rSHj6(R)><~34fpr= z;7cN$ z!@o^qB$QI|nd_iGPGF9NKs+C;iTJrbJ;78L(}RB@_zTb8svQtpNNfNA01jnXNoGw= f04e|g00;m8000000Mb*F00000NkvXXu0mjf`aV`x literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Objects/Fun/Plushies/shadekin_plushie.rsi/meta.json b/Resources/Textures/_Starlight/Objects/Fun/Plushies/shadekin_plushie.rsi/meta.json new file mode 100644 index 00000000000..eb8f0dc3590 --- /dev/null +++ b/Resources/Textures/_Starlight/Objects/Fun/Plushies/shadekin_plushie.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 2, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Conf (97524725969862656)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] +} From e47ee2601b1bde9c5875ac8779382d73e0864544 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:11:09 +0200 Subject: [PATCH 04/36] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index ac77e7bbb19..e9243715aee 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,14 +1,4 @@ Entries: -- author: snowywinters - changes: - - message: Reinforced cameras can now be built! They have additional HP and are - more resistant to explosions and meteors. - type: Add - - message: The AI has its own section in the security cameras console. - type: Add - id: 2079 - time: '2026-01-18T17:18:45.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/5027 - author: Dorragon changes: - message: Ready Manifest added to the lobby @@ -4374,4 +4364,11 @@ id: 2579 time: '2026-07-20T22:08:57.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/6118 +- author: Coryler + changes: + - message: Shadekin has arrived in the DeltaV sector. + type: Add + id: 2580 + time: '2026-07-20T22:10:50.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/5481 Order: 1 From 6fda61e9cbc74535a15ae8a63435da46091102bb Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Mon, 20 Jul 2026 18:20:11 -0400 Subject: [PATCH 05/36] Report global coordinates on the crew monitor (#6326) --- .../Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs b/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs index c2806a79f7d..9771886fa6d 100644 --- a/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs +++ b/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs @@ -75,9 +75,11 @@ public sealed partial class CrewMonitoringNavMapControl : NavMapControl if (!LocalizedNames.TryGetValue(netEntity, out var name)) name = Loc.GetString("navmap-unknown-entity"); + var pos = _xform.ToMapCoordinates(blip.Coordinates); // DeltaV - map-coordinates + var message = name + "\n" + Loc.GetString("navmap-location", - ("x", MathF.Round(blip.Coordinates.X)), - ("y", MathF.Round(blip.Coordinates.Y))); + ("x", MathF.Round(pos.X)), // DeltaV - map-coordinates + ("y", MathF.Round(pos.Y))); // DeltaV - map-coordinates _trackedEntityLabel.Text = message; _trackedEntityPanel.Visible = true; From aacfbd17f83b17fc3f9d3c7df3956cddb53ca1b7 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:20:31 +0200 Subject: [PATCH 06/36] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index e9243715aee..067309daf44 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Dorragon - changes: - - message: Ready Manifest added to the lobby - type: Add - id: 2080 - time: '2026-01-18T18:47:07.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/5187 - author: MilonPL changes: - message: Added a new traits system, supporting conditions and new effects. Make @@ -4371,4 +4364,11 @@ id: 2580 time: '2026-07-20T22:10:50.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/5481 +- author: sowelipililimute + changes: + - message: The crew monitor now reports global coordinate positions. + type: Tweak + id: 2581 + time: '2026-07-20T22:20:12.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/6326 Order: 1 From b71e0a2edf52bafec9589414edff232f0f1e5bfd Mon Sep 17 00:00:00 2001 From: freezer dog Date: Mon, 20 Jul 2026 18:21:23 -0400 Subject: [PATCH 07/36] vulpkanin yip (#6301) * ok i think this works? idunno * now its working * fixin some namespace stuff thank ya stxcking --- Resources/Locale/en-US/_DV/chat/emotes.ftl | 1 + .../Prototypes/Body/Species/vulpkanin.yml | 2 +- .../_DV/SoundCollections/vulpkanin.yml | 5 +++++ .../_DV/Voice/speech_emote_sounds.yml | 4 ++++ .../Prototypes/_DV/Voice/speech_emotes.yml | 18 ++++++++++++++++++ 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/_DV/chat/emotes.ftl b/Resources/Locale/en-US/_DV/chat/emotes.ftl index 1af2a94e88f..1d92a2aabbe 100644 --- a/Resources/Locale/en-US/_DV/chat/emotes.ftl +++ b/Resources/Locale/en-US/_DV/chat/emotes.ftl @@ -16,3 +16,4 @@ delta-chat-emote-name-harpysquish = Squish delta-chat-emote-name-quack = Quack delta-chat-emote-name-squawk = Squawk delta-chat-emote-name-horn = Horn +delta-chat-emote-name-yip = Yip diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index 4820d97df06..7a5575c6ec2 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -149,7 +149,7 @@ - type: Speech speechSounds: Vulpkanin speechVerb: Vulpkanin - allowedEmotes: [ 'Bark', 'Snarl', 'Whine', 'Howl', 'Growl' ] + allowedEmotes: [ 'Bark', 'Snarl', 'Whine', 'Howl', 'Growl', 'Yip' ] # DeltaV - Added Yip Emote - type: Vocal sounds: Male: MaleVulpkanin diff --git a/Resources/Prototypes/_DV/SoundCollections/vulpkanin.yml b/Resources/Prototypes/_DV/SoundCollections/vulpkanin.yml index c0091431a14..4584b535f17 100644 --- a/Resources/Prototypes/_DV/SoundCollections/vulpkanin.yml +++ b/Resources/Prototypes/_DV/SoundCollections/vulpkanin.yml @@ -31,3 +31,8 @@ id: VulpkaninHowls files: - /Audio/_DV/Voice/Vulpkanin/howl.ogg + +- type: soundCollection + id: VulpkaninYips + files: + - /Audio/Animals/fox_squeak.ogg diff --git a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml index addcba9ea4d..088ddd70e40 100644 --- a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml @@ -286,6 +286,8 @@ collection: VulpkaninHowls Awoo: collection: VulpkaninHowls + Yip: + collection: VulpkaninYips Gasp: collection: MaleGasp DefaultDeathgasp: @@ -332,6 +334,8 @@ collection: VulpkaninHowls Awoo: collection: VulpkaninHowls + Yip: + collection: VulpkaninYips Gasp: collection: FemaleGasp DefaultDeathgasp: diff --git a/Resources/Prototypes/_DV/Voice/speech_emotes.yml b/Resources/Prototypes/_DV/Voice/speech_emotes.yml index 0ad77d9b6fd..bca4234d5c0 100644 --- a/Resources/Prototypes/_DV/Voice/speech_emotes.yml +++ b/Resources/Prototypes/_DV/Voice/speech_emotes.yml @@ -231,6 +231,24 @@ - awooing - awooed +- type: emote + id: Yip + name: delta-chat-emote-name-yip + category: Vocal + available: false + whitelist: + components: + - Vocal + blacklist: + components: + - BorgChassis + chatMessages: ["delta-chat-emote-msg-yip"] + chatTriggers: + - yip + - yips + - yipping + - yipped + # Feroxi - type: emote id: Gnash From 609bf88d9df937bc99e33ac9476a90566989c00d Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:21:43 +0200 Subject: [PATCH 08/36] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 067309daf44..280b16015c5 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,14 +1,4 @@ Entries: -- author: MilonPL - changes: - - message: Added a new traits system, supporting conditions and new effects. Make - sure to check out the Traits tab in the character editor! - type: Add - - message: All character traits have been reset. - type: Remove - id: 2081 - time: '2026-01-20T11:49:59.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/5208 - author: pootslap changes: - message: You can now examine character descriptions from much further away. @@ -4371,4 +4361,11 @@ id: 2581 time: '2026-07-20T22:20:12.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/6326 +- author: keekee38 + changes: + - message: Vulpkanins can yip now. + type: Tweak + id: 2582 + time: '2026-07-20T22:21:24.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/6301 Order: 1 From da7468e79e2029446c4fed4f609d3686d82e1133 Mon Sep 17 00:00:00 2001 From: pootslap <211648338+pootslap@users.noreply.github.com> Date: Mon, 20 Jul 2026 23:22:59 +0100 Subject: [PATCH 09/36] Fixed improvised shotgun recipe (#6327) fixed recipes --- .../Graphs/improvised/improvised_shotgun.yml | 8 +- .../improvised/improvised_shotgun_shell.yml | 151 +++++++++--------- 2 files changed, 76 insertions(+), 83 deletions(-) diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun.yml index 5455bfd056b..02ec4625e66 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun.yml @@ -6,11 +6,11 @@ edges: - to: shotgun steps: - - tag: ModularBarrel #Starlight + - tag: Pipe icon: - sprite: _Starlight/Objects/Misc/modular_barrel.rsi - state: icon - name: crafting-menu-name-MB + sprite: Structures/Piping/Atmospherics/pipe.rsi + state: pipeStraight + name: construction-graph-tag-pipe - tag: ModularReceiver icon: sprite: Objects/Misc/modular_receiver.rsi diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun_shell.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun_shell.yml index 2817cbca525..bcbe4d74306 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun_shell.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun_shell.yml @@ -2,82 +2,75 @@ id: ImprovisedShotgunShellGraph start: start graph: - - node: start - edges: - - to: shell - steps: - - material: Steel - amount: 1 - doAfter: 0.5 - - material: Plastic - amount: 1 - doAfter: 0.5 - # Starlight - Makeshift Weapons Update - - material: Glass - amount: 3 - doAfter: 1.5 - - material: CrushedPhosphorus - amount: 4 - # - tag: GlassShard - # name: construction-graph-tag-glass-shard - # icon: - # sprite: Objects/Materials/Shards/shard.rsi - # state: shard1 - # doAfter: 0.5 - # - tag: GlassShard - # name: construction-graph-tag-glass-shard - # icon: - # sprite: Objects/Materials/Shards/shard.rsi - # state: shard2 - # doAfter: 0.5 - # - tag: GlassShard - # name: construction-graph-tag-glass-shard - # icon: - # sprite: Objects/Materials/Shards/shard.rsi - # state: shard1 - # doAfter: 0.5 - # - tag: GlassShard - # name: construction-graph-tag-glass-shard - # icon: - # sprite: Objects/Materials/Shards/shard.rsi - # state: shard3 - # doAfter: 0.5 - # - tag: Matchstick - # name: construction-graph-tag-match-stick - # icon: - # sprite: Objects/Tools/matches.rsi - # state: match_unlit - # doAfter: 0.5 - # - tag: Matchstick - # name: construction-graph-tag-match-stick - # icon: - # sprite: Objects/Tools/matches.rsi - # state: match_unlit - # doAfter: 0.5 - # - tag: Matchstick - # name: construction-graph-tag-match-stick - # icon: - # sprite: Objects/Tools/matches.rsi - # state: match_unlit - # doAfter: 0.5 - # - tag: Matchstick - # name: construction-graph-tag-match-stick - # icon: - # sprite: Objects/Tools/matches.rsi - # state: match_unlit - # doAfter: 0.5 - # - tag: Matchstick - # name: construction-graph-tag-match-stick - # icon: - # sprite: Objects/Tools/matches.rsi - # state: match_unlit - # doAfter: 0.5 - # - tag: Matchstick - # name: construction-graph-tag-match-stick - # icon: - # sprite: Objects/Tools/matches.rsi - # state: match_unlit - # END Starlight - doAfter: 0.5 - - node: shell - entity: ShellShotgunImprovised + - node: start + edges: + - to: shell + steps: + - material: Steel + amount: 1 + doAfter: 0.5 + - material: Plastic + amount: 1 + doAfter: 0.5 + - tag: GlassShard + name: construction-graph-tag-glass-shard + icon: + sprite: Objects/Materials/Shards/shard.rsi + state: shard1 + doAfter: 0.5 + - tag: GlassShard + name: construction-graph-tag-glass-shard + icon: + sprite: Objects/Materials/Shards/shard.rsi + state: shard2 + doAfter: 0.5 + - tag: GlassShard + name: construction-graph-tag-glass-shard + icon: + sprite: Objects/Materials/Shards/shard.rsi + state: shard1 + doAfter: 0.5 + - tag: GlassShard + name: construction-graph-tag-glass-shard + icon: + sprite: Objects/Materials/Shards/shard.rsi + state: shard3 + doAfter: 0.5 + - tag: Matchstick + name: construction-graph-tag-match-stick + icon: + sprite: Objects/Tools/matches.rsi + state: match_unlit + doAfter: 0.5 + - tag: Matchstick + name: construction-graph-tag-match-stick + icon: + sprite: Objects/Tools/matches.rsi + state: match_unlit + doAfter: 0.5 + - tag: Matchstick + name: construction-graph-tag-match-stick + icon: + sprite: Objects/Tools/matches.rsi + state: match_unlit + doAfter: 0.5 + - tag: Matchstick + name: construction-graph-tag-match-stick + icon: + sprite: Objects/Tools/matches.rsi + state: match_unlit + doAfter: 0.5 + - tag: Matchstick + name: construction-graph-tag-match-stick + icon: + sprite: Objects/Tools/matches.rsi + state: match_unlit + doAfter: 0.5 + - tag: Matchstick + name: construction-graph-tag-match-stick + icon: + sprite: Objects/Tools/matches.rsi + state: match_unlit + doAfter: 0.5 + - node: shell + entity: ShellShotgunImprovised From 3b7304d092294bbd8ad4ff7d99fa92ad7adac59d Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:23:18 +0200 Subject: [PATCH 10/36] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 280b16015c5..c032daa0007 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: pootslap - changes: - - message: You can now examine character descriptions from much further away. - type: Tweak - id: 2082 - time: '2026-01-20T11:49:48.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/5219 - author: Eternally-Confused changes: - message: (TEST MERGE) Space pens now contain a chemical called Stabilizine instead @@ -4368,4 +4361,13 @@ id: 2582 time: '2026-07-20T22:21:24.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/6301 +- author: pootslap + changes: + - message: Improvised shotgun shells use the old upstream crafting recipe. + type: Tweak + - message: The improvised shotgun is craftable once again. + type: Fix + id: 2583 + time: '2026-07-20T22:22:59.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/6327 Order: 1 From 35fa80f7370e3c7cff3c07db27b0363e1319d566 Mon Sep 17 00:00:00 2001 From: KOTOB <59124164+kotobdev@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:44:01 -0700 Subject: [PATCH 11/36] Kill security poncho (#6332) * ughhh * explode * explode harder --- .../Catalog/VendingMachines/Inventories/secdrobe.yml | 1 - Resources/Prototypes/Loadouts/loadout_groups.yml | 2 -- .../_DV/Loadouts/Jobs/Security/security_officer.yml | 7 ------- Resources/Prototypes/_DV/Loadouts/loadout_groups.yml | 2 -- Resources/Prototypes/_DV/Recipes/Lathes/Packs/clothing.yml | 3 --- 5 files changed, 15 deletions(-) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml index 3ef0f6da297..d52e2f70563 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml @@ -41,7 +41,6 @@ ClothingOuterCoatStasec: 2 # DeltaV - replace ClothingOuterWinterSec ClothingOuterCoatStasecCorpsman: 2 # DeltaV - added corpsman uniform to secdrobe # ClothingOuterWinterSec: 2 # DeltaV - removed this - ClothingNeckCWPSec: 3 # DeltaV - add cold weather ponchos ## ClothingOuterArmorBasic: 2 # DeltaV - moved body armour from SecDrobe to SecTech ## ClothingOuterArmorBasicSlim: 2 ClothingNeckScarfStripedBlue: 3 # DeltaV - blue instead of red scarf. Was ClothingNeckScarfStripedRed diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index ed9612212d1..32134225fe7 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -1456,7 +1456,6 @@ # Begin DeltaV changes - ScarfBlue - ScarfBlack - - SecurityPoncho - HeadOfSecurityRobe - HeadOfSecurityCloakBoat # End DeltaV changes @@ -1621,7 +1620,6 @@ loadouts: - DetectiveTie - ScarfBlue # DeltaV - Was ScarfRed - - SecurityPoncho # DeltaV - type: loadoutGroup id: DetectiveJumpsuit diff --git a/Resources/Prototypes/_DV/Loadouts/Jobs/Security/security_officer.yml b/Resources/Prototypes/_DV/Loadouts/Jobs/Security/security_officer.yml index 5c0561e3217..75108f5b5ae 100644 --- a/Resources/Prototypes/_DV/Loadouts/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/_DV/Loadouts/Jobs/Security/security_officer.yml @@ -150,13 +150,6 @@ equipment: outerClothing: ClothingLongcoatSecurity -# Neck - -- type: loadout - id: SecurityPoncho - equipment: - neck: ClothingNeckCWPSec - # Gloves - type: loadout diff --git a/Resources/Prototypes/_DV/Loadouts/loadout_groups.yml b/Resources/Prototypes/_DV/Loadouts/loadout_groups.yml index 93885f937e4..10fa42639cb 100644 --- a/Resources/Prototypes/_DV/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/_DV/Loadouts/loadout_groups.yml @@ -284,7 +284,6 @@ - ScarfBlack - ScarfBlue - ScarfLightBlue - - SecurityPoncho - type: loadoutGroup id: BrigMedicJumpsuit @@ -482,7 +481,6 @@ loadouts: - ScarfBlue - ScarfBlack - - SecurityPoncho - type: loadoutGroup id: SecurityOuterClothingDeltaV diff --git a/Resources/Prototypes/_DV/Recipes/Lathes/Packs/clothing.yml b/Resources/Prototypes/_DV/Recipes/Lathes/Packs/clothing.yml index 63aa77afc19..cfcc561e88c 100644 --- a/Resources/Prototypes/_DV/Recipes/Lathes/Packs/clothing.yml +++ b/Resources/Prototypes/_DV/Recipes/Lathes/Packs/clothing.yml @@ -148,9 +148,6 @@ - ClothingOuterStasecSweater - ClothingOuterWinterLongMime - ClothingOuterFurCoatMime - # Ponchos - - ClothingNeckCWPSec - - ClothingNeckCWPArctic - type: latheRecipePack id: BeltsDeltaV From 9a6cfb2bfb3760ad0f33a7396e8ef5ac7ee7ce53 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:44:20 +0200 Subject: [PATCH 12/36] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index c032daa0007..606d47ba7da 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,14 +1,4 @@ Entries: -- author: Eternally-Confused - changes: - - message: (TEST MERGE) Space pens now contain a chemical called Stabilizine instead - of Leporazine, which is better at stabilizing body temperature. - type: Tweak - - message: Avali no longer die from space pens. - type: Tweak - id: 2083 - time: '2026-01-20T21:15:21.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/5181 - author: turtlemutt changes: - message: Added more names for ghost role spawns. @@ -4370,4 +4360,11 @@ id: 2583 time: '2026-07-20T22:22:59.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/6327 +- author: kotobdev + changes: + - message: Security cold weather ponchos are gone from loadouts and the SecDrobe. + type: Remove + id: 2584 + time: '2026-07-20T22:44:01.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/6332 Order: 1 From dcd0fb693c60cde5f654131ff19ebcacfcfadf3a Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Mon, 20 Jul 2026 19:17:52 -0400 Subject: [PATCH 13/36] Evidence bags (#6280) * Evidence bags * tests * fix the gridinv thing --- .../_DV/Forensics/DVItemSlotVisualsSystem.cs | 73 ++++++++++++++++ Content.Shared/Item/SharedItemSystem.cs | 16 ++++ .../EntitySystems/SharedStorageSystem.cs | 10 ++- .../DVExpandToInsertedItemSizeComponent.cs | 15 ++++ .../DVExpandToInsertedItemSizeSystem.cs | 50 +++++++++++ .../Forensics/DVItemSlotVisualsComponent.cs | 17 ++++ .../Forensics/DVSeenInsertedItemComponent.cs | 10 +++ .../_DV/Forensics/DVSeenInsertedItemSystem.cs | 80 ++++++++++++++++++ .../en-US/_DV/forensics/evidence_bag.ftl | 4 + .../VendingMachines/Inventories/sec.yml | 2 + .../_DV/Catalog/Fills/Lockers/security.yml | 2 + .../Specific/Forensics/evidence_bag.yml | 49 +++++++++++ .../Forensics/evidencebag.rsi/evidence.png | Bin 0 -> 335 bytes .../Forensics/evidencebag.rsi/evidenceobj.png | Bin 0 -> 455 bytes .../Forensics/evidencebag.rsi/meta.json | 17 ++++ 15 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 Content.Client/_DV/Forensics/DVItemSlotVisualsSystem.cs create mode 100644 Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeComponent.cs create mode 100644 Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeSystem.cs create mode 100644 Content.Shared/_DV/Forensics/DVItemSlotVisualsComponent.cs create mode 100644 Content.Shared/_DV/Forensics/DVSeenInsertedItemComponent.cs create mode 100644 Content.Shared/_DV/Forensics/DVSeenInsertedItemSystem.cs create mode 100644 Resources/Locale/en-US/_DV/forensics/evidence_bag.ftl create mode 100644 Resources/Prototypes/_DV/Entities/Objects/Specific/Forensics/evidence_bag.yml create mode 100644 Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/evidence.png create mode 100644 Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/evidenceobj.png create mode 100644 Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/meta.json diff --git a/Content.Client/_DV/Forensics/DVItemSlotVisualsSystem.cs b/Content.Client/_DV/Forensics/DVItemSlotVisualsSystem.cs new file mode 100644 index 00000000000..2e76979f765 --- /dev/null +++ b/Content.Client/_DV/Forensics/DVItemSlotVisualsSystem.cs @@ -0,0 +1,73 @@ +using System.Linq; +using Content.Shared._DV.Forensics; +using Robust.Client.GameObjects; +using Robust.Client.ResourceManagement; +using Robust.Shared.Containers; +using Robust.Shared.Utility; + +namespace Content.Client._DV.Forensics; + +public sealed class DVItemSlotVisualsSystem : EntitySystem +{ + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; + [Dependency] private readonly IResourceCache _resourceCache = default!; + + private static readonly ResPath TextureRoot = new("/Textures"); + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInsertedIntoContainer); + SubscribeLocalEvent(OnRemovedFromContainer); + } + + private void RefreshVisuals(Entity ent) + { + var slot = _container.EnsureContainer(ent, ent.Comp.ItemSlot); + if (slot.ContainedEntity is { } contained) + { + _sprite.CopySprite(contained, ent.Owner); + _sprite.AddLayer(ent.Owner, ent.Comp.FilledSprite); + } + else + { + var sprite = Comp(ent); + var count = sprite.AllLayers.Count(); + for (var i = count - 1; i >= 0; i--) + { + _sprite.RemoveLayer((ent, sprite), i); + } + + if (ent.Comp.UnfilledSprite is not SpriteSpecifier.Rsi rsi) + { + throw new InvalidOperationException($"{ToPrettyString(ent)} has an unfilled sprite that's not an RSI"); + } + + if (!_resourceCache.TryGetResource(TextureRoot / rsi.RsiPath, out var res)) + { + throw new InvalidOperationException($"{ToPrettyString(ent)} has invalid RSI: {TextureRoot / rsi.RsiPath}"); + } + + _sprite.SetBaseRsi(ent.Owner, res.RSI); + _sprite.AddLayer(ent.Owner, ent.Comp.UnfilledSprite); + } + } + + private void OnInsertedIntoContainer(Entity ent, ref EntInsertedIntoContainerMessage args) + { + if (args.Container.ID != ent.Comp.ItemSlot) + return; + + RefreshVisuals(ent); + } + + private void OnRemovedFromContainer(Entity ent, ref EntRemovedFromContainerMessage args) + { + if (args.Container.ID != ent.Comp.ItemSlot) + return; + + RefreshVisuals(ent); + } +} diff --git a/Content.Shared/Item/SharedItemSystem.cs b/Content.Shared/Item/SharedItemSystem.cs index 3764d015e4c..5dc0fc4644c 100644 --- a/Content.Shared/Item/SharedItemSystem.cs +++ b/Content.Shared/Item/SharedItemSystem.cs @@ -103,6 +103,22 @@ public abstract class SharedItemSystem : EntitySystem VisualsChanged(uid); } + ///

+ /// DeltaV - clear item visuals + /// + public void ClearVisuals(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + ent.Comp.RsiPath = null; + ent.Comp.InhandVisuals = new(); + ent.Comp.HeldPrefix = null; + + Dirty(ent, ent.Comp); + VisualsChanged(ent.Owner); + } + #endregion private void OnHandInteract(EntityUid uid, ItemComponent component, InteractHandEvent args) diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 22564e64bc3..723d3ddd3a2 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -188,12 +188,20 @@ public abstract class SharedStorageSystem : EntitySystem return; } + // Begin DeltaV - the grid check excludes the item being resized because it's already in the storage which defeats the purpose so yoink it out to remove that + storage.StoredItems.Remove(itemEnt.Owner); UpdateOccupied((container.Owner, storage)); - if (!ItemFitsInGridLocation((itemEnt.Owner, itemEnt.Comp), (container.Owner, storage), loc)) + if (ItemFitsInGridLocation((itemEnt.Owner, itemEnt.Comp), (container.Owner, storage), loc)) + { + storage.StoredItems.Add(itemEnt.Owner, loc); + UpdateOccupied((container.Owner, storage)); + } + else { ContainerSystem.Remove(itemEnt.Owner, container, force: true); } + // End DeltaV - the grid check excludes the item being resized because it's already in the storage which defeats the purpose so yoink it out to remove that } private void OnNestedStorageCvar(bool obj) diff --git a/Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeComponent.cs b/Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeComponent.cs new file mode 100644 index 00000000000..09cc36a782b --- /dev/null +++ b/Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeComponent.cs @@ -0,0 +1,15 @@ +using Content.Shared.Item; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DV.Forensics; + +[RegisterComponent, NetworkedComponent] +public sealed partial class DVExpandToInsertedItemSizeComponent : Component +{ + [DataField(required: true)] + public string ItemSlot; + + [DataField(required: true)] + public ProtoId EmptySize; +} diff --git a/Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeSystem.cs b/Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeSystem.cs new file mode 100644 index 00000000000..5010e842f54 --- /dev/null +++ b/Content.Shared/_DV/Forensics/DVExpandToInsertedItemSizeSystem.cs @@ -0,0 +1,50 @@ +using Content.Shared.Item; +using Robust.Shared.Containers; + +namespace Content.Shared._DV.Forensics; + +public sealed class DVExpandToInsertedItemSizeSystem : EntitySystem +{ + [Dependency] private readonly SharedItemSystem _item = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnItemInserted); + SubscribeLocalEvent(OnItemRemoved); + } + + private void Refresh(Entity ent) + { + var slot = _container.EnsureContainer(ent, ent.Comp.ItemSlot); + if (slot.ContainedEntity is { } contained) + { + var item = Comp(contained); + _item.SetSize(ent, item.Size); + _item.SetShape(ent, item.Shape); + } + else + { + _item.SetSize(ent, ent.Comp.EmptySize); + _item.SetShape(ent, null); + } + } + + private void OnItemInserted(Entity ent, ref EntInsertedIntoContainerMessage args) + { + if (ent.Comp.ItemSlot != args.Container.ID) + return; + + Refresh(ent); + } + + private void OnItemRemoved(Entity ent, ref EntRemovedFromContainerMessage args) + { + if (ent.Comp.ItemSlot != args.Container.ID) + return; + + Refresh(ent); + } +} diff --git a/Content.Shared/_DV/Forensics/DVItemSlotVisualsComponent.cs b/Content.Shared/_DV/Forensics/DVItemSlotVisualsComponent.cs new file mode 100644 index 00000000000..0995def0c6d --- /dev/null +++ b/Content.Shared/_DV/Forensics/DVItemSlotVisualsComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Utility; + +namespace Content.Shared._DV.Forensics; + +[RegisterComponent, NetworkedComponent] +public sealed partial class DVItemSlotVisualsComponent : Component +{ + [DataField(required: true)] + public string ItemSlot; + + [DataField(required: true)] + public SpriteSpecifier FilledSprite; + + [DataField(required: true)] + public SpriteSpecifier UnfilledSprite; +} diff --git a/Content.Shared/_DV/Forensics/DVSeenInsertedItemComponent.cs b/Content.Shared/_DV/Forensics/DVSeenInsertedItemComponent.cs new file mode 100644 index 00000000000..115d3fe3d39 --- /dev/null +++ b/Content.Shared/_DV/Forensics/DVSeenInsertedItemComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DV.Forensics; + +[RegisterComponent, NetworkedComponent] +public sealed partial class DVSeenInsertedItemComponent : Component +{ + [DataField(required: true)] + public string ItemSlot; +} diff --git a/Content.Shared/_DV/Forensics/DVSeenInsertedItemSystem.cs b/Content.Shared/_DV/Forensics/DVSeenInsertedItemSystem.cs new file mode 100644 index 00000000000..70511e57025 --- /dev/null +++ b/Content.Shared/_DV/Forensics/DVSeenInsertedItemSystem.cs @@ -0,0 +1,80 @@ +using Content.Shared.Examine; +using Content.Shared.IdentityManagement; +using Content.Shared.Item; +using Content.Shared.NameModifier.EntitySystems; +using Robust.Shared.Containers; +using Robust.Shared.Timing; + +namespace Content.Shared._DV.Forensics; + +public sealed class DVSeenInsertedItemSystem : EntitySystem +{ + [Dependency] private readonly NameModifierSystem _nameModifier = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedItemSystem _item = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnRefreshModifiers); + SubscribeLocalEvent(OnItemInserted); + SubscribeLocalEvent(OnItemRemoved); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + var slot = _container.EnsureContainer(ent, ent.Comp.ItemSlot); + if (slot.ContainedEntity is { } contained) + { + args.PushMarkup(Loc.GetString("dv-seen-inserted-item-examined.full", ("container", Identity.Entity(ent, EntityManager, args.Examiner)), ("contained", contained))); + } + else + { + args.PushMarkup(Loc.GetString("dv-seen-inserted-item-examined.empty", ("container", Identity.Entity(ent, EntityManager, args.Examiner)))); + } + } + + private void OnRefreshModifiers(Entity ent, ref RefreshNameModifiersEvent args) + { + var slot = _container.EnsureContainer(ent, ent.Comp.ItemSlot); + if (slot.ContainedEntity is not { } contained) + return; + + args.AddModifier("dv-seen-inserted-item-name-modifier", extraArgs: ("contained", contained)); + } + + private void Refresh(Entity ent) + { + _nameModifier.RefreshNameModifiers(ent.Owner); + + var slot = _container.EnsureContainer(ent, ent.Comp.ItemSlot); + if (slot.ContainedEntity is { } contained) + { + var item = Comp(contained); + _item.CopyVisuals(ent.Owner, item); + } + else + { + _item.ClearVisuals(ent.Owner); + } + } + + private void OnItemInserted(Entity ent, ref EntInsertedIntoContainerMessage args) + { + if (args.Container.ID != ent.Comp.ItemSlot || _timing.ApplyingState) + return; + + Refresh(ent); + } + + private void OnItemRemoved(Entity ent, ref EntRemovedFromContainerMessage args) + { + if (args.Container.ID != ent.Comp.ItemSlot || _timing.ApplyingState) + return; + + Refresh(ent); + } +} diff --git a/Resources/Locale/en-US/_DV/forensics/evidence_bag.ftl b/Resources/Locale/en-US/_DV/forensics/evidence_bag.ftl new file mode 100644 index 00000000000..b7ee7621261 --- /dev/null +++ b/Resources/Locale/en-US/_DV/forensics/evidence_bag.ftl @@ -0,0 +1,4 @@ +dv-seen-inserted-item-name-modifier = {$baseName} with { INDEFINITE($contained) } { $contained } +dv-seen-inserted-item-examined = + .full = { CAPITALIZE(SUBJECT($container)) } has [color=paleturquoise]{ INDEFINITE($contained) } { $contained }[/color] in { SUBJECT($container) }. + .empty = { CAPITALIZE(SUBJECT($container)) } has nothing in { SUBJECT($container) }. diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index 5e03e195978..be47499d620 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -31,6 +31,8 @@ ClothingHeadHelmetBasic: 2 # DeltaV - added helmets to the SecTech. Another line of defense between the tide and your grey matter. BreachingCharge: 8 # DeltaV - added breaching charges TicketPad: 5 # imp + DVEvidenceBag: 10 # DeltaV - evidence bags + DVBoxEvidenceBags: 2 # DeltaV - evidence bags # security officers need to follow a diet regimen! contrabandInventory: WeaponMeleeNeedle: 2 diff --git a/Resources/Prototypes/_DV/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/_DV/Catalog/Fills/Lockers/security.yml index 230981678e3..f0f529a0935 100644 --- a/Resources/Prototypes/_DV/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/_DV/Catalog/Fills/Lockers/security.yml @@ -238,3 +238,5 @@ - id: ClothingHeadsetSecurity - id: LunchboxSecurityFilledRandom prob: 0.3 + - id: DVBoxEvidenceBags + amount: 2 diff --git a/Resources/Prototypes/_DV/Entities/Objects/Specific/Forensics/evidence_bag.yml b/Resources/Prototypes/_DV/Entities/Objects/Specific/Forensics/evidence_bag.yml new file mode 100644 index 00000000000..b0361c828ef --- /dev/null +++ b/Resources/Prototypes/_DV/Entities/Objects/Specific/Forensics/evidence_bag.yml @@ -0,0 +1,49 @@ +- type: entity + parent: BaseItem + id: DVEvidenceBag + name: evidence bag + description: An evidence bag for containing evidence. + components: + - type: Sprite + sprite: _DV/Objects/Specific/Forensics/evidencebag.rsi + state: evidenceobj + - type: NameModifier + baseName: evidence bag + - type: ItemSlots + slots: + contained_evidence: + swap: false + - type: ContainerContainer + containers: + contained_evidence: !type:ContainerSlot + - type: DVItemSlotVisuals + itemSlot: contained_evidence + filledSprite: + sprite: _DV/Objects/Specific/Forensics/evidencebag.rsi + state: evidence + unfilledSprite: + sprite: _DV/Objects/Specific/Forensics/evidencebag.rsi + state: evidenceobj + - type: DVSeenInsertedItem + itemSlot: contained_evidence + - type: DVExpandToInsertedItemSize + itemSlot: contained_evidence + emptySize: Tiny + - type: Item + size: Tiny + +- type: entity + name: evidence bag box + parent: BoxCardboard + id: DVBoxEvidenceBags + description: A box that allegedly claims to contain evidence bags. + components: + - type: EntityTableContainerFill + containers: + storagebase: + id: DVEvidenceBag + amount: 9 + - type: Sprite + layers: + - state: box_security + - state: writing diff --git a/Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/evidence.png b/Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/evidence.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7f51283dd5e4a92bbcd3910f006fee7aad01ee GIT binary patch literal 335 zcmV-V0kHmwP)52OV5W)X`~rU&-o4>Nbr8BDkmV}U5Menn zAqHhhVFqPUelY*;>yHF2*?;jiSRV{Ldi9Rs?K_CR_aC@{;o++dRF|0jmO44k+fz|ZlO;o}b;AnP{+Eda=JP#XAy%>i#285vAe zRcA8L97r+jyvUf2;edexqYfB#z^DU89Wd&EQ3s4VVAKJl4j5bx*twuJoq^5(?ts&) hS4%Mr02uHn004LKN%A#VxaI%=002ovPDHLkV1iDji3R`w literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/evidenceobj.png b/Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/evidenceobj.png new file mode 100644 index 0000000000000000000000000000000000000000..123dd31cc260ba5336d0c6c385a2eb49aad72666 GIT binary patch literal 455 zcmV;&0XY7NP)L51lMtnvv_ZK|JLD|6UoM>UBlmtE;W1`K z0Fwu>y17Nx^4l+?2)n;LNZ%eEGD87Ux`A5lG5w}mn>G`Rg?n(!c+t>XcCq%iu1qNm&?lW@JSf9 zB7g|s2SC^z-~kwiB7n&Pa4!k%i)edDt|ti`#a->azmz~xzr6hcV$-RwC9O8}^BxRf xQx;G5WVh^5${zTC?*Vuy6c~i4$?Ae}=o79seieM09hv|D002ovPDHLkV1mL)!KVNK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/meta.json b/Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/meta.json new file mode 100644 index 00000000000..543beff48bc --- /dev/null +++ b/Resources/Textures/_DV/Objects/Specific/Forensics/evidencebag.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Baystation12 at https://github.com/Baystation12/Baystation12/blob/0404a67862b7a32a4ac1017ad27c38e243f0057f/icons/obj/bags.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "evidence" + }, + { + "name": "evidenceobj" + } + ] +} From 19ebd10ad104be22220cefd037aa234b945ba509 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Tue, 21 Jul 2026 01:18:12 +0200 Subject: [PATCH 14/36] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 606d47ba7da..9ba0df07b56 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: turtlemutt - changes: - - message: Added more names for ghost role spawns. - type: Add - id: 2084 - time: '2026-01-21T05:17:05.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/5254 - author: Cepelinas1 changes: - message: Logistics Officers can now use the shipyard to buy shuttles. No need @@ -4367,4 +4360,12 @@ id: 2584 time: '2026-07-20T22:44:01.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/6332 +- author: sowelipililimute + changes: + - message: Security now has access to evidence bags, for storing all the illegal + things that can be stored. + type: Add + id: 2585 + time: '2026-07-20T23:17:53.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/6280 Order: 1 From dbe955ca179055056329bbb3f5674d91658f22fd Mon Sep 17 00:00:00 2001 From: jessiscah23 Date: Mon, 20 Jul 2026 16:23:28 -0700 Subject: [PATCH 15/36] Cargo bounty console improvements (with changes) (#6306) * simple fix for "Approved by: Self" on all cargo invoices * port of ruddygreat's bounty console improvements to DeltaV * modified tooltips and fixed a few importing errors * StatusLabel in BountyEntry.xaml.cs * final stupid tweak * removed unrelated bugfix PR that snuck into this branch somehow * Cargo bounty fix requests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: cargomouse Co-authored-by: Jessica Harvey Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../CargoBountyConsoleBoundUserInterface.cs | 13 ++++ Content.Client/Cargo/UI/BountyEntry.xaml | 18 +++-- Content.Client/Cargo/UI/BountyEntry.xaml.cs | 16 +++++ Content.Client/Cargo/UI/CargoBountyMenu.xaml | 5 +- .../Cargo/UI/CargoBountyMenu.xaml.cs | 4 ++ .../Cargo/Systems/CargoSystem.Bounty.cs | 71 +++++++++++++++++++ Content.Shared/Cargo/CargoBountyData.cs | 16 ++++- .../Components/CargoBountyConsoleComponent.cs | 1 + .../Components/CargoBountyConsoleComponent.cs | 31 ++++++++ .../en-US/cargo/cargo-bounty-console.ftl | 19 +++++ 10 files changed, 187 insertions(+), 7 deletions(-) create mode 100644 Content.Shared/_DV/Cargo/Components/CargoBountyConsoleComponent.cs diff --git a/Content.Client/Cargo/BUI/CargoBountyConsoleBoundUserInterface.cs b/Content.Client/Cargo/BUI/CargoBountyConsoleBoundUserInterface.cs index 04075000f5b..4983d3df13d 100644 --- a/Content.Client/Cargo/BUI/CargoBountyConsoleBoundUserInterface.cs +++ b/Content.Client/Cargo/BUI/CargoBountyConsoleBoundUserInterface.cs @@ -2,6 +2,7 @@ using Content.Client.Cargo.UI; using Content.Shared.Cargo.Components; using JetBrains.Annotations; using Robust.Client.UserInterface; +using Content.Shared._DV.Cargo.Components; // DeltaV: Bounty claim messages namespace Content.Client.Cargo.BUI; @@ -30,6 +31,18 @@ public sealed class CargoBountyConsoleBoundUserInterface : BoundUserInterface { SendMessage(new BountySkipMessage(id)); }; + + // DeltaV: bounty claim stuff begins + _menu.OnClaimButtonPressed += id => + { + SendMessage(new BountyClaimedMessage(id)); + }; + + _menu.OnStatusOptionSelected += (id, status) => + { + SendMessage(new BountySetStatusMessage(id, status)); + }; + // DeltaV: bounty claim stuff ends } protected override void UpdateState(BoundUserInterfaceState message) diff --git a/Content.Client/Cargo/UI/BountyEntry.xaml b/Content.Client/Cargo/UI/BountyEntry.xaml index 99874cf1a5d..837edc7d900 100644 --- a/Content.Client/Cargo/UI/BountyEntry.xaml +++ b/Content.Client/Cargo/UI/BountyEntry.xaml @@ -10,6 +10,8 @@ + + @@ -17,14 +19,22 @@