Vulpkanin Admin Smite (#40360)

* Cheeborger

* Vulp smite

* validate those ProtoIds

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
This commit is contained in:
Princess Cheeseballs
2025-09-21 23:22:25 -07:00
committed by GitHub
parent c70d2cfb9f
commit c7f5545a46
4 changed files with 32 additions and 3 deletions

View 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()
{

View 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))

View 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!

View 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