]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Vulpkanin Admin Smite (#40360)
authorPrincess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>
Mon, 22 Sep 2025 06:22:25 +0000 (23:22 -0700)
committerGitHub <noreply@github.com>
Mon, 22 Sep 2025 06:22:25 +0000 (23:22 -0700)
* Cheeborger

* Vulp smite

* validate those ProtoIds

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs
Content.Server/Polymorph/Systems/PolymorphSystem.cs
Resources/Locale/en-US/administration/smites.ftl
Resources/Prototypes/Polymorphs/admin.yml

index e5c4d9100f81d0fa97eb5be598d232dc610d2039..79c616322ae4931ce823e3a12915d8fc80e2233b 100644 (file)
@@ -38,6 +38,7 @@ using Content.Shared.Mobs.Systems;
 using Content.Shared.Movement.Components;
 using Content.Shared.Movement.Systems;
 using Content.Shared.Nutrition.Components;
+using Content.Shared.Polymorph;
 using Content.Shared.Popups;
 using Content.Shared.Silicons.Laws;
 using Content.Shared.Silicons.Laws.Components;
@@ -60,6 +61,9 @@ namespace Content.Server.Administration.Systems;
 
 public sealed partial class AdminVerbSystem
 {
+    private readonly ProtoId<PolymorphPrototype> LizardSmite = "AdminLizardSmite";
+    private readonly ProtoId<PolymorphPrototype> VulpkaninSmite = "AdminVulpSmite";
+  
     [Dependency] private readonly SharedActionsSystem _actions = default!;
     [Dependency] private readonly IRobustRandom _random = default!;
     [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!;
@@ -706,13 +710,28 @@ public sealed partial class AdminVerbSystem
             Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Fun/Plushies/lizard.rsi"), "icon"),
             Act = () =>
             {
-                _polymorphSystem.PolymorphEntity(args.Target, "AdminLizardSmite");
+                _polymorphSystem.PolymorphEntity(args.Target, LizardSmite);
             },
             Impact = LogImpact.Extreme,
             Message = string.Join(": ", reptilianName, Loc.GetString("admin-smite-reptilian-species-swap-description"))
         };
         args.Verbs.Add(reptilian);
 
+        var vulpName = Loc.GetString("admin-smite-vulpkanin-species-swap-name").ToLowerInvariant();
+        Verb vulp = new()
+        {
+            Text = vulpName,
+            Category = VerbCategory.Smite,
+            Icon = new SpriteSpecifier.Rsi(new ("/Textures/Objects/Fun/Balls/tennisball.rsi"), "icon"),
+            Act = () =>
+            {
+                _polymorphSystem.PolymorphEntity(args.Target, VulpkaninSmite);
+            },
+            Impact = LogImpact.Extreme,
+            Message = string.Join(": ", vulpName, Loc.GetString("admin-smite-vulpkanin-species-swap-description"))
+        };
+        args.Verbs.Add(vulp);
+
         var lockerName = Loc.GetString("admin-smite-locker-stuff-name").ToLowerInvariant();
         Verb locker = new()
         {
index 9547bc1ea52c7901d2bd07f04b5ac2590ac11e7e..db7fb6a92f3c833b820669b7bd32b44f766c62ab 100644 (file)
@@ -261,7 +261,7 @@ public sealed partial class PolymorphSystem : EntitySystem
 
         if (configuration.TransferHumanoidAppearance)
         {
-            _humanoid.CloneAppearance(child, uid);
+            _humanoid.CloneAppearance(uid, child);
         }
 
         if (_mindSystem.TryGetMind(uid, out var mindId, out var mind))
index b5a17e4f1c4c975027b133979535ca4b4b001fac..794077a484ffa8f64cba8311c286f189b394409a 100644 (file)
@@ -36,6 +36,7 @@ admin-smite-buffering-name = Buffering
 admin-smite-become-instrument-name = Become Instrument
 admin-smite-remove-gravity-name = Remove Gravity
 admin-smite-reptilian-species-swap-name = Become Reptilian
+admin-smite-vulpkanin-species-swap-name = Become Vulpkanin
 admin-smite-locker-stuff-name = Locker Stuff
 admin-smite-headstand-name = Headstand
 admin-smite-become-mouse-name = Become Mouse
@@ -86,6 +87,7 @@ admin-smite-buffering-description = Causes the target to randomly start bufferin
 admin-smite-become-instrument-description = It turns them into a supersynth. Really. That's all it does.
 admin-smite-remove-gravity-description = Grants them anti-gravity.
 admin-smite-reptilian-species-swap-description = It changes their species to Reptilian. Useful for people who were being space racist.
+admin-smite-vulpkanin-species-swap-description = It changes their species to Vulpkanin. Useful for people who were being space racist.
 admin-smite-locker-stuff-description = Stuffs them in a (welded) locker.
 admin-smite-headstand-description = Vertically flips their sprite.
 admin-smite-become-mouse-description = They become a mouse. Squeak!
index 3739175c8aa6e49ca97d9a1661154ec74a847eb7..606147ce9c0b7221c1440db5460f3cd238a8e87a 100644 (file)
@@ -4,7 +4,15 @@
     entity: MobReptilian
     forced: true
     transferName: true
-    transferHumanoidAppearance: true
+    inventory: Transfer
+    ignoreAllowRepeatedMorphs: true
+
+- type: polymorph
+  id: AdminVulpSmite
+  configuration:
+    entity: MobVulpkanin
+    forced: true
+    transferName: true
     inventory: Transfer
     ignoreAllowRepeatedMorphs: true