Cleanup: Resolve ForceMakeAntag warnings (#46151)

Resolve ForceMakeAntag warnings
This commit is contained in:
Whatstone 2026-10-03 22:57:47 +00:00 • committed by GitHub
parent 081e2582dc
commit 0569e2361a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -18,26 +18,38 @@ namespace Content.Server.Administration.Systems;
public sealed partial class AdminVerbSystem
{
[Dependency] private AntagSelectionSystem _antag = default!;
[Dependency] private ZombieSystem _zombie = default!;
[Dependency] private ServerGameTicker _gameTicker = default!;
[Dependency] private AntagSelectionSystem _antag = default!;
[Dependency] private OutfitSystem _outfit = default!;
[Dependency] private ZombieSystem _zombie = default!;
private static readonly EntProtoId DefaultTraitorRule = "Traitor";
private static readonly EntProtoId DefaultInitialInfectedRule = "Zombie";
private static readonly EntProtoId DefaultNukeOpRule = "LoneOpsSpawn";
private static readonly EntProtoId DefaultRevsRule = "Revolutionary";
private static readonly EntProtoId DefaultThiefRule = "Thief";
private static readonly EntProtoId DefaultChangelingRule = "Changeling";
private static readonly EntProtoId ParadoxCloneRuleId = "ParadoxCloneSpawn";
private static readonly EntProtoId DefaultWizardRule = "Wizard";
private static readonly EntProtoId DefaultNinjaRule = "NinjaSpawn";
[Dependency] private EntityQuery<ActorComponent> _actorQuery;
[Dependency] private EntityQuery<HumanoidProfileComponent> _humanoidQuery;
[Dependency] private EntityQuery<MindContainerComponent> _mindContainerQuery;
private static readonly EntProtoId TraitorRule = "Traitor";
private static readonly ProtoId<AntagSpecifierPrototype> TraitorSpec = "Traitor";
private static readonly EntProtoId InitialInfectedRule = "Zombie";
private static readonly ProtoId<AntagSpecifierPrototype> InitialInfectedSpec = "InitialInfected";
private static readonly EntProtoId LoneOpRule = "LoneOpsSpawn";
private static readonly ProtoId<AntagSpecifierPrototype> LoneOpSpec = "LoneOp";
private static readonly EntProtoId RevsRule = "Revolutionary";
private static readonly ProtoId<AntagSpecifierPrototype> RevsSpec = "HeadRev";
private static readonly EntProtoId ThiefRule = "Thief";
private static readonly ProtoId<AntagSpecifierPrototype> ThiefSpec = "Thief";
private static readonly EntProtoId ChangelingRule = "Changeling";
private static readonly ProtoId<AntagSpecifierPrototype> ChangelingSpec = "Changeling";
private static readonly EntProtoId ParadoxCloneRule = "ParadoxCloneSpawn";
private static readonly EntProtoId WizardRule = "Wizard";
private static readonly ProtoId<AntagSpecifierPrototype> WizardSpec = "Wizard";
private static readonly EntProtoId NinjaRule = "NinjaSpawn";
private static readonly ProtoId<AntagSpecifierPrototype> NinjaSpec = "SpaceNinja";
private static readonly ProtoId<StartingGearPrototype> PirateGearId = "PirateGear";
// All antag verbs have names so invokeverb works.
private void AddAntagVerbs(GetVerbsEvent<Verb> args)
{
if (!TryComp<ActorComponent>(args.User, out var actor))
if (!_actorQuery.TryComp(args.User, out var actor))
return;
var player = actor.PlayerSession;
@ -45,7 +57,7 @@ public sealed partial class AdminVerbSystem
if (!_adminManager.HasAdminFlag(player, AdminFlags.Fun))
return;
if (!HasComp<MindContainerComponent>(args.Target) || !TryComp<ActorComponent>(args.Target, out var targetActor))
if (!_mindContainerQuery.HasComp(args.Target) || !_actorQuery.TryComp(args.Target, out var targetActor))
return;
var targetPlayer = targetActor.PlayerSession;
@ -58,7 +70,7 @@ public sealed partial class AdminVerbSystem
Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/job_icons.rsi"), "Syndicate"),
Act = () =>
{
_antag.ForceMakeAntag<TraitorRuleComponent>(targetPlayer, DefaultTraitorRule);
_antag.ForceMakeAntag<TraitorRuleComponent>(targetPlayer, TraitorRule, TraitorSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", traitorName, Loc.GetString("admin-verb-make-traitor")),
@ -73,7 +85,7 @@ public sealed partial class AdminVerbSystem
Icon = new SpriteSpecifier.Rsi(new("/Textures/Interface/Misc/job_icons.rsi"), "InitialInfected"),
Act = () =>
{
_antag.ForceMakeAntag<ZombieRuleComponent>(targetPlayer, DefaultInitialInfectedRule);
_antag.ForceMakeAntag<ZombieRuleComponent>(targetPlayer, InitialInfectedRule, InitialInfectedSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", initialInfectedName, Loc.GetString("admin-verb-make-initial-infected")),
@ -103,7 +115,7 @@ public sealed partial class AdminVerbSystem
Icon = new SpriteSpecifier.Rsi(new("/Textures/Clothing/Head/Hardsuits/syndicate.rsi"), "icon"),
Act = () =>
{
_antag.ForceMakeAntag<NukeopsRuleComponent>(targetPlayer, DefaultNukeOpRule);
_antag.ForceMakeAntag<NukeopsRuleComponent>(targetPlayer, LoneOpRule, LoneOpSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", nukeOpName, Loc.GetString("admin-verb-make-nuclear-operative")),
@ -134,7 +146,7 @@ public sealed partial class AdminVerbSystem
Icon = new SpriteSpecifier.Rsi(new("/Textures/Interface/Misc/job_icons.rsi"), "HeadRevolutionary"),
Act = () =>
{
_antag.ForceMakeAntag<RevolutionaryRuleComponent>(targetPlayer, DefaultRevsRule);
_antag.ForceMakeAntag<RevolutionaryRuleComponent>(targetPlayer, RevsRule, RevsSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", headRevName, Loc.GetString("admin-verb-make-head-rev")),
@ -149,7 +161,7 @@ public sealed partial class AdminVerbSystem
Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Clothing/Hands/Gloves/Color/black.rsi"), "icon"),
Act = () =>
{
_antag.ForceMakeAntag<ThiefRuleComponent>(targetPlayer, DefaultThiefRule);
_antag.ForceMakeAntag<ThiefRuleComponent>(targetPlayer, ThiefRule, ThiefSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", thiefName, Loc.GetString("admin-verb-make-thief")),
@ -164,34 +176,40 @@ public sealed partial class AdminVerbSystem
Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Objects/Weapons/Melee/armblade.rsi"), "icon"),
Act = () =>
{
_antag.ForceMakeAntag<ChangelingRuleComponent>(targetPlayer, DefaultChangelingRule);
_antag.ForceMakeAntag<ChangelingRuleComponent>(targetPlayer, ChangelingRule, ChangelingSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", changelingName, Loc.GetString("admin-verb-make-changeling")),
};
args.Verbs.Add(changeling);
var paradoxCloneName = Loc.GetString("admin-verb-text-make-paradox-clone");
Verb paradox = new()
// only humanoids can be cloned
if (_humanoidQuery.HasComp(args.Target))
{
Text = paradoxCloneName,
Category = VerbCategory.Antag,
Icon = new SpriteSpecifier.Rsi(new("/Textures/Interface/Misc/job_icons.rsi"), "ParadoxClone"),
Act = () =>
var paradoxCloneName = Loc.GetString("admin-verb-text-make-paradox-clone");
Verb paradox = new()
{
if (_gameTicker.AddGameRule(ParadoxCloneRuleId) is not { } ruleEnt)
return;
Text = paradoxCloneName,
Category = VerbCategory.Antag,
Icon = new SpriteSpecifier.Rsi(new("/Textures/Interface/Misc/job_icons.rsi"), "ParadoxClone"),
Act = () =>
{
if (_gameTicker.AddGameRule(ParadoxCloneRule) is not { } ruleEnt)
return;
if (!TryComp<ParadoxCloneRuleComponent>(ruleEnt, out var paradoxCloneRuleComp))
return;
if (!TryComp<ParadoxCloneRuleComponent>(ruleEnt, out var paradoxCloneRuleComp))
return;
paradoxCloneRuleComp.OriginalBody = args.Target; // override the target player
paradoxCloneRuleComp.OriginalBody = args.Target; // override the target player
_gameTicker.StartGameRule(ruleEnt.AsNullable());
},
Impact = LogImpact.High,
Message = string.Join(": ", paradoxCloneName, Loc.GetString("admin-verb-make-paradox-clone")),
};
_gameTicker.StartGameRule(ruleEnt.AsNullable());
},
Impact = LogImpact.High,
Message = string.Join(": ", paradoxCloneName, Loc.GetString("admin-verb-make-paradox-clone")),
};
args.Verbs.Add(paradox);
}
var wizardName = Loc.GetString("admin-verb-text-make-wizard");
Verb wizard = new()
@ -202,7 +220,7 @@ public sealed partial class AdminVerbSystem
Act = () =>
{
// Wizard has no rule components as of writing, but I gotta put something here to satisfy the machine so just make it wizard mind rule :)
_antag.ForceMakeAntag<WizardRoleComponent>(targetPlayer, DefaultWizardRule);
_antag.ForceMakeAntag<WizardRoleComponent>(targetPlayer, WizardRule, WizardSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", wizardName, Loc.GetString("admin-verb-make-wizard")),
@ -217,14 +235,11 @@ public sealed partial class AdminVerbSystem
Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Weapons/Melee/energykatana.rsi"), "icon"),
Act = () =>
{
_antag.ForceMakeAntag<NinjaRoleComponent>(targetPlayer, DefaultNinjaRule);
_antag.ForceMakeAntag<NinjaRoleComponent>(targetPlayer, NinjaRule, NinjaSpec);
},
Impact = LogImpact.High,
Message = string.Join(": ", ninjaName, Loc.GetString("admin-verb-make-space-ninja")),
};
args.Verbs.Add(ninja);
if (HasComp<HumanoidProfileComponent>(args.Target)) // only humanoids can be cloned
args.Verbs.Add(paradox);
}
}