]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Adds validation bool for setting humanoid skin color (#15360)
authorFlipp Syder <76629141+vulppine@users.noreply.github.com>
Sun, 23 Apr 2023 09:16:59 +0000 (02:16 -0700)
committerGitHub <noreply@github.com>
Sun, 23 Apr 2023 09:16:59 +0000 (19:16 +1000)
Content.Client/Humanoid/HumanoidAppearanceSystem.cs
Content.Server/Zombies/ZombifyOnDeathSystem.cs
Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs

index cf37d730e5b1e7d47deb977854a8b422f1c20efd..141aa34ab7b04048f04ea47ddd829ce23ebd8dcb 100644 (file)
@@ -164,7 +164,7 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
             ? profile.Appearance.SkinColor.WithAlpha(hairAlpha) : profile.Appearance.HairColor;
         var hair = new Marking(profile.Appearance.HairStyleId,
             new[] { hairColor });
-    
+
         var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, out var facialHairAlpha, _prototypeManager)
             ? profile.Appearance.SkinColor.WithAlpha(facialHairAlpha) : profile.Appearance.FacialHairColor;
         var facialHair = new Marking(profile.Appearance.FacialHairStyleId,
@@ -178,7 +178,7 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
         {
             markings.AddBack(MarkingCategories.FacialHair, facialHair);
         }
-        
+
         // Finally adding marking with forced colors
         foreach (var (marking, prototype) in markingFColored)
         {
@@ -190,10 +190,10 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
             );
             markings.AddBack(prototype.MarkingCategory, new Marking(marking.MarkingId, markingColors));
         }
-        
+
         markings.EnsureSpecies(profile.Species, profile.Appearance.SkinColor, _markingManager, _prototypeManager);
         markings.EnsureDefault(
-            profile.Appearance.SkinColor, 
+            profile.Appearance.SkinColor,
             profile.Appearance.EyeColor,
             _markingManager);
 
@@ -318,13 +318,13 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
             }
 
             sprite.LayerSetVisible(layerId, visible);
-            
+
             if (!visible || setting == null) // this is kinda implied
             {
                 continue;
             }
 
-            if (colors != null) 
+            if (colors != null)
             {
                 sprite.LayerSetColor(layerId, colors[j]);
             }
@@ -335,15 +335,12 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
         }
     }
 
-    public override void SetSkinColor(EntityUid uid, Color skinColor, bool sync = true, HumanoidAppearanceComponent? humanoid = null)
+    public override void SetSkinColor(EntityUid uid, Color skinColor, bool sync = true, bool verify = true, HumanoidAppearanceComponent? humanoid = null)
     {
         if (!Resolve(uid, ref humanoid) || humanoid.SkinColor == skinColor)
             return;
 
-        humanoid.SkinColor = skinColor;
-
-        if (sync)
-            Dirty(humanoid);
+        base.SetSkinColor(uid, skinColor, false, verify, humanoid);
 
         if (!TryComp(uid, out SpriteComponent? sprite))
             return;
index ef7203eba627bb5986074ca7a25695cb1d2f3527..6ea1a257fff8de91bd7d5bfebdf5479d860d46f5 100644 (file)
@@ -145,7 +145,7 @@ namespace Content.Server.Zombies
                 zombiecomp.BeforeZombifiedSkinColor = huApComp.SkinColor;
                 zombiecomp.BeforeZombifiedCustomBaseLayers = new(huApComp.CustomBaseLayers);
 
-                _sharedHuApp.SetSkinColor(target, zombiecomp.SkinColor, humanoid: huApComp);
+                _sharedHuApp.SetSkinColor(target, zombiecomp.SkinColor, verify: false, humanoid: huApComp);
                 _sharedHuApp.SetBaseLayerColor(target, HumanoidVisualLayers.Eyes, zombiecomp.EyeColor, humanoid: huApComp);
 
                 // this might not resync on clone?
index 0121e5adad8f68cfcfeb7d17207258abff249aeb..31bcbb56dd951ac4788e424d82b9d3db25886914 100644 (file)
@@ -144,8 +144,9 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem
     /// <param name="uid">The humanoid mob's UID.</param>
     /// <param name="skinColor">Skin color to set on the humanoid mob.</param>
     /// <param name="sync">Whether to synchronize this to the humanoid mob, or not.</param>
+    /// <param name="verify">Whether to verify the skin color can be set on this humanoid or not</param>
     /// <param name="humanoid">Humanoid component of the entity</param>
-    public virtual void SetSkinColor(EntityUid uid, Color skinColor, bool sync = true, HumanoidAppearanceComponent? humanoid = null)
+    public virtual void SetSkinColor(EntityUid uid, Color skinColor, bool sync = true, bool verify = true, HumanoidAppearanceComponent? humanoid = null)
     {
         if (!Resolve(uid, ref humanoid))
             return;
@@ -155,7 +156,7 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem
             return;
         }
 
-        if (!SkinColor.VerifySkinColor(species.SkinColoration, skinColor))
+        if (verify && !SkinColor.VerifySkinColor(species.SkinColoration, skinColor))
         {
             skinColor = SkinColor.ValidSkinTone(species.SkinColoration, skinColor);
         }