diff --git a/Content.Client/Body/VisualBodySystem.cs b/Content.Client/Body/VisualBodySystem.cs index fba936ee58a..c1292d4bcc3 100644 --- a/Content.Client/Body/VisualBodySystem.cs +++ b/Content.Client/Body/VisualBodySystem.cs @@ -199,6 +199,15 @@ private void ApplyMarkings(Entity ent, EntityUid t _sprite.LayerSetColor(target, layerId, marking.MarkingColors[i]); else _sprite.LayerSetColor(target, layerId, Color.White); + + // MACRO START - marking layer shaders + if (proto.Shaders is not null && + proto.Shaders.TryGetValue(rsi.RsiState, out var shader)) + { + EnsureComp(target, out var spriteComp); // why is this method in the component????? + spriteComp.LayerSetShader(index + i + 1, shader); + } + // MACRO END } applied.Add(marking); diff --git a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs index 095f62a6f45..b5da92f784d 100644 --- a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs +++ b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs @@ -36,10 +36,13 @@ public sealed partial class MarkingPrototype : IPrototype [DataField("sprites", required: true)] public List Sprites { get; private set; } = default!; - // impstation edit - allow markings to support shaders - [DataField("shader")] - public string? Shader { get; private set; } = null; - // end impstation edit + // MACRO ADDITION + /// + /// Optional dictionary allowing assignment of shaders to sprite layers in a marking. + /// This implementation is very messy but unfortunately Robust doesn't like shaders in SpriteSpecifiers. + /// + [DataField] + public Dictionary? Shaders { get; private set; } public Marking AsMarking() { diff --git a/Resources/Locale/en-US/_starcup/markings/humanoid.ftl b/Resources/Locale/en-US/_starcup/markings/humanoid.ftl new file mode 100644 index 00000000000..f56fb74a44e --- /dev/null +++ b/Resources/Locale/en-US/_starcup/markings/humanoid.ftl @@ -0,0 +1,12 @@ +# Eyes +marking-EyesGlowing = Eyes (Glowing) +marking-EyesGlowing-eyes = Eyes + +marking-TattooEyeLeftGlowing = Left Eye (Glowing) +marking-TattooEyeLeftGlowing-tattoo_eye_l = Left Eye + +marking-TattooEyeRightGlowing = Right Eye (Glowing) +marking-TattooEyeRightGlowing-tattoo_eye_r = Right Eye + +marking-MakeupBlushGlowing = Blush (Glowing) +marking-MakeupBlushGLowing-blush = Blush diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/diona.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/diona.yml index c7a2aeaedf3..52f5e6d1596 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/diona.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/diona.yml @@ -7,7 +7,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/Diona/chest.rsi state: firefly - shader: unshaded + shaders: + firefly: unshaded - type: marking id: DionaLivingNymph @@ -32,7 +33,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/Diona/head.rsi state: bigfirefly - shader: unshaded + shaders: + bigfirefly: unshaded - type: marking id: DionaPollenDust @@ -51,4 +53,5 @@ sprites: - sprite: _Impstation/Mobs/Customization/Diona/headtop.rsi state: moonbloom - shader: unshaded + shaders: + moonbloom: unshaded diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/moth.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/moth.yml index ae77354b748..d3974de0dd1 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/moth.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/moth.yml @@ -441,7 +441,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/Moth/headtop.rsi state: glowantenna - shader: unshaded + shaders: + glowantenna: unshaded # Tail @@ -476,15 +477,10 @@ sprites: - sprite: _Impstation/Mobs/Customization/Moth/tail.rsi state: firefly2 - -- type: marking - id: MothFireflyOverlay - bodyPart: Tail - groupWhitelist: [ Moth ] - sprites: - sprite: _Impstation/Mobs/Customization/Moth/tail.rsi state: firefly1 - shader: unshaded + shaders: + firefly1: unshaded - type: marking id: MothGlasswing diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/slimeperson.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/slimeperson.yml index 585aed0ca17..c8733c61eda 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/slimeperson.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/slimeperson.yml @@ -54,7 +54,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/SlimePerson/chest.rsi state: core - shader: unshaded + shaders: + core: unshaded - type: marking id: SlimeLungs @@ -77,7 +78,10 @@ state: fadingstars2 - sprite: _Impstation/Mobs/Customization/SlimePerson/head.rsi state: fadingstars3 - shader: unshaded + shaders: + fadingstars1: unshaded + fadingstars2: unshaded + fadingstars3: unshaded - type: marking id: fizz @@ -152,7 +156,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/SlimePerson/eyes.rsi state: glow - shader: unshaded + shaders: + glow: unshaded - type: marking id: SlimeEyesDroopy @@ -179,7 +184,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/SlimePerson/eyes.rsi state: droopyglow - shader: unshaded + shaders: + droopyglow: unshaded - type: marking id: SlimeEyesCyclops @@ -206,7 +212,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/SlimePerson/eyes.rsi state: cyclopsglow - shader: unshaded + shaders: + cyclopsglow: unshaded # RArm diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/vox.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/vox.yml index 665e9525a4f..8d45bb3d680 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/vox.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/vox.yml @@ -565,7 +565,8 @@ sprites: - sprite: _Impstation/Mobs/Customization/Vox/tail.rsi state: lantern - shader: unshaded + shaders: + lantern: unshaded - type: marking id: VoxTailSmallPlume diff --git a/Resources/Prototypes/_starcup/Entities/Mobs/Customization/Markings/humanoid.yml b/Resources/Prototypes/_starcup/Entities/Mobs/Customization/Markings/humanoid.yml new file mode 100644 index 00000000000..0867f5401c8 --- /dev/null +++ b/Resources/Prototypes/_starcup/Entities/Mobs/Customization/Markings/humanoid.yml @@ -0,0 +1,59 @@ +# Eyes +- type: marking + id: EyesGlowing + bodyPart: Eyes + groupWhitelist: [Human, Oni, Rodentia, Felinid, Vulpkanin, Reptilian, Harpy] + sprites: + - sprite: Mobs/Customization/eyes.rsi + state: eyes + coloring: + default: + type: + !type:EyeColoring + shaders: + eyes: unshaded + +- type: marking + id: TattooEyeRightGlowing + bodyPart: Eyes + groupWhitelist: [Human, Oni, Rodentia, Felinid, Vulpkanin, Reptilian, Harpy] + coloring: + default: + type: + !type:EyeColoring + negative: true + sprites: + - sprite: Mobs/Customization/tattoos.rsi + state: tattoo_eye_r + shaders: + tattoo_eye_r: unshaded + +- type: marking + id: TattooEyeLeftGlowing + bodyPart: Eyes + groupWhitelist: [Human, Oni, Rodentia, Felinid, Vulpkanin, Reptilian, Harpy] + coloring: + default: + type: + !type:EyeColoring + negative: true + sprites: + - sprite: Mobs/Customization/tattoos.rsi + state: tattoo_eye_l + shaders: + tattoo_eye_l: unshaded + +- type: marking + id: MakeupBlushGlowing + bodyPart: Head + groupWhitelist: [Human, Oni, Rodentia, Felinid, Vulpkanin, Reptilian, Slime, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#d39394" + sprites: + - sprite: _DV/Mobs/Customization/makeup.rsi + state: blush + shaders: + blush: unshaded