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 Vanessa
parent 6d48ed086e
commit 0736809107
4 changed files with 32 additions and 3 deletions

View File

@ -39,6 +39,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;
@ -61,6 +62,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!;
@ -707,13 +711,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

@ -274,7 +274,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

@ -37,6 +37,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
@ -87,6 +88,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