diff --git a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs index 323ff60003d..2c88c029dc1 100644 --- a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs +++ b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs @@ -77,6 +77,9 @@ public void UpdateSprite(Entity en var width = Math.Clamp(humanoidAppearance.Width, speciesPrototype.MinWidth, speciesPrototype.MaxWidth); humanoidAppearance.Height = height; humanoidAppearance.Width = width; + // TODO? Floof/pirate port: The pirate port changed these settings, will look into it after some testing. + //I havent noticed much in testing so far? If theres some sizeing issues with tails someone poke me to port the change in this area + //But it looks like a check if info is sent and if it fails then set to min size by default. _sprite.SetScale((entity, sprite), new Vector2(width, height)); // end Goobstation: port EE height/width sliders @@ -337,7 +340,8 @@ private void RemoveMarking(Marking marking, Entity spriteEnt) _sprite.RemoveLayer(spriteEnt.AsNullable(), index); } } - private void ApplyMarking(MarkingPrototype markingPrototype, + private void ApplyMarking( + MarkingPrototype markingPrototype, IReadOnlyList? colors, bool visible, Entity entity) @@ -345,6 +349,44 @@ private void ApplyMarking(MarkingPrototype markingPrototype, var humanoid = entity.Comp1; var sprite = entity.Comp2; + //Floof/Pirate PR port Omustation custom layers start + var colorDict = new Dictionary(); + + for (var i = 0; i < markingPrototype.Sprites.Count; i++) + { + var spriteName = markingPrototype.Sprites[i] switch + { + SpriteSpecifier.Rsi rsi => rsi.RsiState, + SpriteSpecifier.Texture texture => texture.TexturePath.Filename, + _ => null + }; + + if (spriteName != null) + { + var color = (colors != null && i < colors.Count) + ? colors[i] + : Color.White; + colorDict[spriteName] = color; + } + } + + if (markingPrototype.ColorLinks != null) + { + foreach (var (child, parent) in markingPrototype.ColorLinks) + { + if (child == null || parent == null) + continue; + + if (colorDict.TryGetValue(parent, out var color)) + { + colorDict[child] = color; + } + } + } + + var layerDict = new Dictionary(); + //Floof/Pirate PR port Omustation custom layers end + if (!_sprite.LayerMapTryGet((entity.Owner, sprite), markingPrototype.BodyPart, out var targetLayer, false)) { return; @@ -365,28 +407,70 @@ private void ApplyMarking(MarkingPrototype markingPrototype, var layerId = $"{markingPrototype.ID}-{rsi.RsiState}"; - if (!_sprite.LayerMapTryGet((entity.Owner, sprite), layerId, out var layer, false)) // Goob edit + // Floof/Pirate PR port for Omu Start + var layerSlot = markingPrototype.BodyPart; + var currentTargetIndex = 0; + + if (markingPrototype.Layering != null && + markingPrototype.Layering.TryGetValue(rsi.RsiState, out var layerValue)) + { + var layerKey = layerValue?.ToString(); + + if (layerKey != null && Enum.TryParse(layerKey, true, out var layerEnum)) + { + layerSlot = layerEnum; + } + } + + if (!_sprite.LayerMapTryGet((entity.Owner, sprite), layerSlot, out var customLayerIndex, false)) + { + layerSlot = markingPrototype.BodyPart; + currentTargetIndex = targetLayer; + } + else + { + currentTargetIndex = customLayerIndex; + } + + if (layerDict.TryGetValue(layerSlot.ToString(), out var layerIndex)) + { + layerDict[layerSlot.ToString()] = layerIndex + 1; + } + else + { + layerDict.Add(layerSlot.ToString(), 0); + } + + var targLayerAdj = currentTargetIndex + layerDict[layerSlot.ToString()] + 1; + + + // Floof/Pirate PR port Floofstation custom layers end + + if (!_sprite.LayerMapTryGet((entity.Owner, sprite), layerId, out _, false)) // Floof/Pirate PR port Omustation custom layers { - layer = _sprite.AddLayer((entity.Owner, sprite), markingSprite, targetLayer + j + 1); // Goob edit + var layer = _sprite.AddLayer((entity.Owner, sprite), markingSprite, targLayerAdj); // Floof/Pirate PR port Omustation custom layers _sprite.LayerMapSet((entity.Owner, sprite), layerId, layer); _sprite.LayerSetSprite((entity.Owner, sprite), layerId, rsi); } var hasInfo = humanoid.CustomBaseLayers.TryGetValue(markingPrototype.BodyPart, out var info); // Goobstation + // impstation edit begin - check if there's a shader defined in the markingPrototype's shader datafield, and if there is... - if (markingPrototype.Shader != null) - { - // use spriteComponent's layersetshader function to set the layer's shader to that which is specified. - sprite.LayerSetShader(layer, markingPrototype.Shader); // Goob edit - } - else // Goobstation + if (markingPrototype.Shader != null) { - if (hasInfo && info.Shader != null) - sprite.LayerSetShader(layer, info.Shader); - else - sprite.LayerSetShader(layer, null, null); + // use spriteComponent's layersetshader function to set the layer's shader to that which is specified. + sprite.LayerSetShader(layerId, markingPrototype.Shader); // Floof/Pirate PR port Omustation custom layers, also Goobstation + } + else if (hasInfo && info.Shader != null) + { + sprite.LayerSetShader(layerId, info.Shader); // Floof/Pirate PR port Omustation custom layers, also Goobstation + } + else + { + if (_sprite.LayerMapTryGet((entity.Owner, sprite), layerId, out var shaderLayerIndex, false)) // Floof/Pirate PR port Floofstation custom layers + sprite.LayerSetShader(shaderLayerIndex, null, null); // Floof/Pirate PR port Floofstation custom layers } - // impstation edit end + // impstation edit end _sprite.LayerSetVisible((entity.Owner, sprite), layerId, visible); @@ -395,31 +479,17 @@ private void ApplyMarking(MarkingPrototype markingPrototype, continue; } - // Okay so if the marking prototype is modified but we load old marking data this may no longer be valid - // and we need to check the index is correct. - // So if that happens just default to white? - if (colors != null && j < colors.Count) - { - // Goob edit start - var color = colors[j]; - if (hasInfo && info.Color != null) - color = Color.InterpolateBetween(color, info.Color.Value, 0.5f); - _sprite.LayerSetColor((entity.Owner, sprite), layerId, color); - // Goob edit end - } - else - { - // Goob edit start - var color = Color.White; - if (hasInfo && info.Color != null) - color = info.Color.Value; - _sprite.LayerSetColor((entity.Owner, sprite), layerId, color); - // Goob edit end - } + // Omustation Floof/Pirate port - use colorDict (respects ColorLinks), then info.Color + var spriteColor = colorDict.TryGetValue(rsi.RsiState, out var dictColor) ? dictColor : Color.White; + + if (hasInfo && info.Color != null) + spriteColor = Color.InterpolateBetween(spriteColor, info.Color.Value, 0.5f); + _sprite.LayerSetColor((entity.Owner, sprite), layerId, spriteColor); + // Floof/Pirate PR port Omustation custom layers end if (humanoid.MarkingsDisplacement.TryGetValue(markingPrototype.BodyPart, out var displacementData) && markingPrototype.CanBeDisplaced) { - _displacement.TryAddDisplacement(displacementData, (entity.Owner, sprite), targetLayer + j + 1, layerId, out _); + _displacement.TryAddDisplacement(displacementData, (entity.Owner, sprite), targLayerAdj, layerId, out _); // Floof/Pirate PR port Omustation custom layers } } } diff --git a/Content.Client/Humanoid/MarkingPicker.xaml.cs b/Content.Client/Humanoid/MarkingPicker.xaml.cs index 591885efe4f..dfa13d38cc1 100644 --- a/Content.Client/Humanoid/MarkingPicker.xaml.cs +++ b/Content.Client/Humanoid/MarkingPicker.xaml.cs @@ -420,12 +420,37 @@ private void OnUsedMarkingSelected(ItemList.ItemListSelectedEventArgs item) List colorSliders = new(); for (int i = 0; i < prototype.Sprites.Count; i++) { + //Floof/pirate PR port Omustation custom layers start + var skipDraw = false; + if (prototype.ColorLinks?.Count > 0) + { + var name = prototype.Sprites[i] switch + { + SpriteSpecifier.Rsi rsi => rsi.RsiState, + SpriteSpecifier.Texture texture => texture.TexturePath.Filename, + _ => null + }; + + if (name != null && prototype.ColorLinks.ContainsKey(name)) + { + // this layer is colored by another layer, so skip it + skipDraw = true; + } + } + //Floof/pirate PR port Omustation custom layers end + var colorContainer = new BoxContainer { Orientation = LayoutOrientation.Vertical, }; - CMarkingColors.AddChild(colorContainer); + //CMarkingColors.AddChild(colorContainer); + //Floof/pirate PR port Omustation custom layers start + if (!skipDraw) + { + CMarkingColors.AddChild(colorContainer); + } + //Floof/pirate PR port Omustation custom layers end ColorSelectorSliders colorSelector = new ColorSelectorSliders(); colorSelector.SelectorType = ColorSelectorSliders.ColorSelectorType.Hsv; // defaults color selector to HSV @@ -562,4 +587,4 @@ private void MarkingRemove() CMarkingColors.Visible = false; OnMarkingRemoved?.Invoke(_currentMarkings); } -} \ No newline at end of file +} diff --git a/Content.Shared/Humanoid/HumanoidVisualLayers.cs b/Content.Shared/Humanoid/HumanoidVisualLayers.cs index ebf065114b9..f83e39e09c0 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayers.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayers.cs @@ -47,6 +47,8 @@ public enum HumanoidVisualLayers : byte Snout, HeadSide, // side parts (i.e., frills) HeadTop, // top parts (i.e., ears) + TailBehind, // Omustation Floof/Pirate PR port custom layers: For tails that render behind the body + TailOversuit, // Omustation Floof/Pirate PR port custom layers: For tails that render over the body Eyes, RArm, LArm, diff --git a/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs b/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs index c4d514a6e4b..a3fcce77ca1 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs @@ -81,12 +81,16 @@ public static IEnumerable Sublayers(HumanoidVisualLayers l yield return HumanoidVisualLayers.Chest; yield return HumanoidVisualLayers.Wings; // for IPC wings port from SimpleStation yield return HumanoidVisualLayers.Tail; + yield return HumanoidVisualLayers.TailBehind; // Omustation Floof/Pirate PR port custom layers + yield return HumanoidVisualLayers.TailOversuit; // Omustation Floof/Pirate PR port custom layers // Shitmed Change Start yield return HumanoidVisualLayers.Groin; break; case HumanoidVisualLayers.Groin: yield return HumanoidVisualLayers.Groin; yield return HumanoidVisualLayers.Tail; + yield return HumanoidVisualLayers.TailBehind; // Omustation Floof/Pirate PR port custom layers + yield return HumanoidVisualLayers.TailOversuit; // Omustation Floof/Pirate PR port custom layers break; case HumanoidVisualLayers.LHand: yield return HumanoidVisualLayers.LHand; @@ -175,4 +179,4 @@ public static IEnumerable Sublayers(HumanoidVisualLayers l return null; } } -} \ No newline at end of file +} diff --git a/Content.Shared/Humanoid/Markings/MarkingColoring.cs b/Content.Shared/Humanoid/Markings/MarkingColoring.cs index ff6990f4ffc..0d28f0824f8 100644 --- a/Content.Shared/Humanoid/Markings/MarkingColoring.cs +++ b/Content.Shared/Humanoid/Markings/MarkingColoring.cs @@ -150,4 +150,4 @@ public abstract partial class LayerColoringType } return color; } -} \ No newline at end of file +} diff --git a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs index 152610a216a..1e2d47165c7 100644 --- a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs +++ b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs @@ -65,6 +65,15 @@ public sealed partial class MarkingPrototype : IPrototype public string? Shader { get; private set; } = null; /// Impstation end + ///Floof/Pirate PR port Omustation custom layers start + [DataField("layering")] + public Dictionary? Layering { get; private set; } + + [DataField("colorLinks")] + public Dictionary? ColorLinks { get; private set; } + ///Floof/Pirate PR port Omustation custom layers end + + public Marking AsMarking() { return new Marking(ID, Sprites.Count); diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index 77f8e1eaef3..e2b1809047f 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -128,6 +128,7 @@ - Chittin # Until they have a species-specific - type: Sprite # I'd prefer if these maps were better. Insert map pun here. layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -151,6 +152,7 @@ - map: [ "id" ] - map: [ "outerClothing" ] - map: [ "beltalt" ] # Omu change. + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Tail" ] # Mentioned in moth code: This needs renaming lol. - map: [ "back" ] - map: [ "neck" ] diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index de10939e99c..eede66b6586 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -262,6 +262,7 @@ components: - type: Sprite layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -284,6 +285,7 @@ - map: [ "ears" ] - map: [ "eyes" ] - map: [ "belt" ] + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "id" ] - map: [ "outerClothing" ] - map: [ "beltalt" ] # Omu change. @@ -610,6 +612,7 @@ noRot: true # TODO BODY Turn these into individual body parts? layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -637,6 +640,7 @@ - map: [ "ears" ] - map: [ "eyes" ] - map: [ "belt" ] + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "id" ] - map: [ "outerClothing" ] - map: [ "back" ] diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 35d00adec71..b8517f31dbe 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -203,6 +203,7 @@ noRot: true drawdepth: Mobs layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -232,6 +233,7 @@ - map: [ "id" ] - map: [ "outerClothing" ] - map: [ "beltalt" ] # Omu change. + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break - map: [ "back" ] - map: [ "neck" ] diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index 9ded07e868f..7ac362467c1 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -195,6 +195,7 @@ Slash: 5 # Reduce? - type: Sprite # Need to redefine the whole order to draw the tail over their gas tank layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -217,6 +218,7 @@ - map: [ "id" ] - map: [ "outerClothing" ] - map: [ "beltalt" ] # Omu + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "back" ] - map: [ "enum.HumanoidVisualLayers.Face" ] - map: [ "neck" ] @@ -291,7 +293,7 @@ 32: sprite: Mobs/Species/Vox/displacement.rsi state: shoes - outerClothing: # Goob + outerClothing: # Goob sizeMaps: 32: sprite: Mobs/Species/Vox/displacement.rsi diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/vulpkanin.yml b/Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/vulpkanin.yml index ed31c86a10b..13c6a8e7b8f 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/vulpkanin.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/vulpkanin.yml @@ -287,7 +287,19 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin, Human] + layering: + vulp_BACK: TailBehind + vulp-fade_BACK: TailBehind + vulp: TailOversuit + vulp-fade: TailOversuit + colorLinks: + vulp_BACK: vulp + vulp-fade_BACK: vulp-fade sprites: + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_BACK + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp-fade_BACK - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi @@ -298,7 +310,19 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] + layering: + vulp_BACK: TailBehind + vulp-tip_BACK: TailBehind + vulp: TailOversuit + vulp-tip: TailOversuit + colorLinks: + vulp_BACK: vulp + vulp-tip_BACK: vulp-tip sprites: + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_BACK + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp-tip_BACK - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi @@ -309,18 +333,42 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] + layering: + vulp_wag_BACK: TailBehind + vulp_wag-fade_BACK: TailBehind + vulp_wag: TailOversuit + vulp_wag-fade: TailOversuit + colorLinks: + vulp_wag_BACK: vulp_wag + vulp_wag-fade_BACK: vulp_wag-fade sprites: + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_wag_BACK + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_wag-fade_BACK - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp_wag - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: vulp_wag-tip #fade + state: vulp_wag-fade #fade - type: marking id: VulpTailWagTip bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] + layering: + vulp_wag_BACK: TailBehind + vulp_wag-tip_BACK: TailBehind + vulp_wag: TailOversuit + vulp_wag-tip: TailOversuit + colorLinks: + vulp_wag_BACK: vulp_wag + vulp_wag-tip_BACK: vulp_wag-tip sprites: + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_wag_BACK + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_wag-tip_BACK - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp_wag - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi @@ -331,7 +379,19 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] + layering: + vulp_alt_BACK: TailBehind + vulp_alt-fade_BACK: TailBehind + vulp_alt: TailOversuit + vulp_alt-fade: TailOversuit + colorLinks: + vulp_alt_BACK: vulp_alt + vulp_alt-fade_BACK: vulp_alt-fade sprites: + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_alt_BACK + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_alt-fade_BACK - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp_alt - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi @@ -342,7 +402,19 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] + layering: + vulp_alt_BACK: TailBehind + vulp_alt-tip_BACK: TailBehind + vulp_alt: TailOversuit + vulp_alt-tip: TailOversuit + colorLinks: + vulp_alt_BACK: vulp_alt + vulp_alt-tip_BACK: vulp_alt-tip sprites: + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_alt_BACK + - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp_alt-tip_BACK - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp_alt - sprite: _DV/Mobs/Customization/Vulpkanin/tail_markings.rsi diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml index 4883b94e653..79265e3b918 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml @@ -73,6 +73,7 @@ noRot: true drawdepth: Mobs layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -100,6 +101,7 @@ - map: [ "eyes" ] - map: [ "id" ] - map: [ "beltalt" ] # Omu + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "back" ] - map: [ "neck" ] - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml index 4a03562d624..d2e208a6342 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml @@ -36,6 +36,7 @@ noRot: true drawdepth: Mobs layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -71,6 +72,7 @@ - map: [ "outerClothing" ] - map: [ "eyes" ] - map: [ "beltalt" ] # Omu 120 + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "neck" ] - map: [ "back" ] - map: [ "enum.HumanoidVisualLayers.FacialHair" ] diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml index 0f47cdb2de9..8279acb55e9 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml @@ -80,6 +80,7 @@ - type: Sprite # scale: 0.9, 0.9 # Goobstation: port EE height/width sliders layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -109,6 +110,7 @@ - map: [ "belt" ] # Omu - Moved belt to render under OuterClothing to have it be similar with how the base drawdepth is. - map: [ "outerClothing" ] - map: [ "beltalt" ] # Omu + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "eyes" ] - map: [ "back" ] # Moved it to render under the neck stuff because it felt weird to see duffels be above cloaks? Dunno, this is a easy thing to change anyway. - map: [ "neck" ] diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml index cf6da253cae..1157dce46bf 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml @@ -84,6 +84,7 @@ - type: Sprite # scale: 0.8, 0.8 # Goobstation: port EE height/width sliders layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -111,7 +112,8 @@ - map: [ "outerClothing" ] - map: [ "eyes" ] - map: [ "beltalt" ] # Omu - - map: [ "back" ] + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers + - map: [ "back" ] - map: [ "neck" ] # Omu - Moved this to render above backpacks because it felt weird seeing duffels above the cloaks and mantles? Easy thing to revert anyway. - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - map: [ "enum.HumanoidVisualLayers.HeadSide" ] diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml index 96d9fa9f391..fd404218865 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml @@ -70,6 +70,7 @@ noRot: true drawdepth: Mobs layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -107,6 +108,7 @@ - map: [ "outerClothing" ] - map: [ "eyes" ] - map: [ "beltalt" ] # Omu + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "back" ] - map: [ "neck" ] # Omu - Moved this to render above backpacks because it felt weird seeing duffels above the cloaks and mantles? Easy thing to revert anyway. - map: [ "enum.HumanoidVisualLayers.Face" ] diff --git a/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml b/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml index 310099593eb..7faf2433fbe 100644 --- a/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml +++ b/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/plasmaman.yml @@ -10,6 +10,7 @@ state: full - type: Sprite layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -40,7 +41,8 @@ - map: [ "innerNeck" ] - map: [ "belt" ] # Omu - Moved belt to render under OuterClothing to have it be similar with how the base drawdepth is. - map: [ "outerClothing" ] - - map: [ "beltalt" ] # Omu + - map: [ "beltalt" ] # Omu + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "eyes" ] - map: [ "id" ] - map: [ "back" ] diff --git a/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/shadowkin.yml b/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/shadowkin.yml index 340564096a9..30daeaf9e8e 100644 --- a/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/shadowkin.yml +++ b/Resources/Prototypes/_EinsteinEngines/Entities/Mobs/Species/shadowkin.yml @@ -140,6 +140,7 @@ drawdepth: Mobs # scale: 0.85, 0.85 # Goobstation: port EE height/width sliders layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: ["enum.HumanoidVisualLayers.Groin"] - map: ["enum.HumanoidVisualLayers.Chest"] - map: ["enum.HumanoidVisualLayers.Head"] @@ -183,6 +184,7 @@ - map: ["outerClothing"] - map: ["eyes"] - map: [ "beltalt" ] # Omu + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: ["back"] - map: ["neck"] # Omu - Moved this to render above backpacks because it felt weird seeing duffels above the cloaks and mantles? Easy thing to revert anyway. - map: [ "enum.HumanoidVisualLayers.Face" ] diff --git a/Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml b/Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml index bed6fc69809..4a904cdeed7 100644 --- a/Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml +++ b/Resources/Prototypes/_Floofstation/Entities/Mobs/Species/resomi.yml @@ -244,6 +244,7 @@ - 7,1,7,0 - type: Sprite # goob - in game visuals layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -270,6 +271,7 @@ - map: [ "ears" ] - map: [ "outerClothing" ] - map: [ "beltalt" ] # Omu + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "eyes" ] - map: [ "id" ] - map: [ "back" ] @@ -373,6 +375,7 @@ state: belt - type: Sprite # goob - makes character setup look consistent with in-game visuals layers: + - map: [ "enum.HumanoidVisualLayers.TailBehind" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Groin" ] - map: [ "enum.HumanoidVisualLayers.Head" ] @@ -402,6 +405,7 @@ - map: [ "id" ] - map: [ "back" ] - map: [ "neck" ] + - map: [ "enum.HumanoidVisualLayers.TailOversuit" ] # Omustation Floof/Pirate PR port custom layers - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - map: [ "maskalt" ] # gooblayer diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/corgi.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/corgi.png new file mode 100644 index 00000000000..fc9cb1c8917 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/corgi.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/dalmatian.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/dalmatian.png new file mode 100644 index 00000000000..74d7e7cf9a2 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/dalmatian.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json index b72a79ef976..84382d72d83 100644 --- a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json +++ b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json @@ -7,41 +7,80 @@ { "name": "vulp", "directions": 4 + }, + { + "name": "vulp_BACK", + "directions": 4 }, { "name": "vulp-tip", "directions": 4 }, + { + "name": "vulp-tip_BACK", + "directions": 4 + }, { "name": "vulp-fade", "directions": 4 + }, + { + "name": "vulp-fade_BACK", + "directions": 4 }, { "name": "vulp_alt", "directions": 4 + }, + { + "name": "vulp_alt_BACK", + "directions": 4 }, { "name": "vulp_alt-fade", "directions": 4 + }, + { + "name": "vulp_alt-fade_BACK", + "directions": 4 }, { "name": "vulp_alt-tip", "directions": 4 + }, + { + "name": "vulp_alt-tip_BACK", + "directions": 4 }, { "name": "vulp_wag", "directions": 4, "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]] + }, + { + "name": "vulp_wag_BACK", + "directions": 4, + "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]] }, { "name": "vulp_wag-fade", "directions": 4, "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]] + }, + { + "name": "vulp_wag-fade_BACK", + "directions": 4, + "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]] }, { "name": "vulp_wag-tip", "directions": 4, "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]] + }, + { + "name": "vulp_wag-tip_BACK", + "directions": 4, + "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]] }, { "name": "long", diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade.png index ac6c545181b..08c7a535e6a 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade_BACK.png new file mode 100644 index 00000000000..308585e7e35 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-tip.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-tip.png index cc22eaf1faf..2ba04af8f44 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-tip.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-tip.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-tip_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-tip_BACK.png new file mode 100644 index 00000000000..7c7b3c6f30c Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-tip_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp.png index 181ba53a89c..3d4ee5633ac 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_BACK.png new file mode 100644 index 00000000000..78081035144 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-fade.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-fade.png index fd89f9c60b0..9a8d6284761 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-fade.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-fade.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-fade_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-fade_BACK.png new file mode 100644 index 00000000000..2e0bb858e3f Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-fade_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-tip.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-tip.png index 345ee3d8dbd..118124af6f8 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-tip.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-tip.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-tip_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-tip_BACK.png new file mode 100644 index 00000000000..7c7b3c6f30c Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt-tip_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt.png index af18dfbec59..70794cbd773 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt_BACK.png new file mode 100644 index 00000000000..78081035144 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_alt_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-fade.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-fade.png index e2893062e37..1d74f89d94a 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-fade.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-fade.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-fade_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-fade_BACK.png new file mode 100644 index 00000000000..d7903946122 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-fade_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-tip.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-tip.png index 371d20fd91b..2a4c8548421 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-tip.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-tip.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-tip_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-tip_BACK.png new file mode 100644 index 00000000000..72729d22cb3 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag-tip_BACK.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag.png index 25aee8a6ce2..ba7eba3248c 100644 Binary files a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag.png and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag_BACK.png b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag_BACK.png new file mode 100644 index 00000000000..29745e7bcb4 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp_wag_BACK.png differ