From 4de2896f587d1c6dfbc221059be49801d20c445b Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Tue, 14 Dec 2021 01:19:34 +0100 Subject: [PATCH] Adds Administration verb category and AHelp verb. (#5773) * Adds Administration verb category and AHelp verb. For more convenient adminin'. * abbreviate verb category to Admin * Add explosion verb to admin category --- .../Administration/AdminVerbSystem.cs | 61 +++++++++++++------ Content.Shared/Verbs/VerbCategory.cs | 3 + .../en-US/administration/admin-verbs.ftl | 1 + Resources/Locale/en-US/verbs/verb-system.ftl | 1 + 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/Content.Server/Administration/AdminVerbSystem.cs b/Content.Server/Administration/AdminVerbSystem.cs index 038e1d2482..47a866fa31 100644 --- a/Content.Server/Administration/AdminVerbSystem.cs +++ b/Content.Server/Administration/AdminVerbSystem.cs @@ -24,6 +24,7 @@ using Content.Shared.Verbs; using Robust.Server.Console; using Robust.Server.GameObjects; using Robust.Server.Player; +using Robust.Shared.Console; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -38,6 +39,7 @@ namespace Content.Server.Administration public class AdminVerbSystem : EntitySystem { [Dependency] private readonly IConGroupController _groupController = default!; + [Dependency] private readonly IConsoleHost _console = default!; [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly EuiManager _euiManager = default!; @@ -48,11 +50,51 @@ namespace Content.Server.Administration public override void Initialize() { + SubscribeLocalEvent(AddAdminVerbs); SubscribeLocalEvent(AddDebugVerbs); SubscribeLocalEvent(Reset); SubscribeLocalEvent(OnSolutionChanged); } + private void AddAdminVerbs(GetOtherVerbsEvent args) + { + if (!EntityManager.TryGetComponent(args.User, out var actor)) + return; + + var player = actor.PlayerSession; + + // Ahelp + if (_adminManager.IsAdmin(player) && TryComp(args.Target, out ActorComponent? targetActor)) + { + Verb verb = new(); + verb.Text = Loc.GetString("ahelp-verb-get-data-text"); + verb.Category = VerbCategory.Admin; + verb.IconTexture = "/Textures/Interface/gavel.svg.192dpi.png"; + verb.Act = () => _console.RemoteExecuteCommand(player, $"openahelp \"{targetActor.PlayerSession.UserId}\"");; + verb.Impact = LogImpact.Low; + args.Verbs.Add(verb); + } + + // Atillery + if (_adminManager.HasAdminFlag(player, AdminFlags.Fun)) + { + Verb verb = new(); + verb.Text = Loc.GetString("explode-verb-get-data-text"); + verb.Category = VerbCategory.Admin; + verb.Act = () => + { + var coords = Transform(args.Target).Coordinates; + Timer.Spawn(_gameTiming.TickPeriod, () => _explosions.SpawnExplosion(coords, 0, 1, 2, 1), CancellationToken.None); + if (TryComp(args.Target, out SharedBodyComponent? body)) + { + body.Gib(); + } + }; + verb.Impact = LogImpact.Extreme; // if you're just outright killing a person, I guess that deserves to be extreme? + args.Verbs.Add(verb); + } + } + private void AddDebugVerbs(GetOtherVerbsEvent args) { if (!EntityManager.TryGetComponent(args.User, out var actor)) @@ -116,25 +158,6 @@ namespace Content.Server.Administration args.Verbs.Add(verb); } - // Atillery - if (_adminManager.HasAdminFlag(player, AdminFlags.Fun)) - { - Verb verb = new(); - verb.Text = Loc.GetString("explode-verb-get-data-text"); - verb.Category = VerbCategory.Debug; - verb.Act = () => - { - var coords = Transform(args.Target).Coordinates; - Timer.Spawn(_gameTiming.TickPeriod, () => _explosions.SpawnExplosion(coords, 0, 1, 2, 1), CancellationToken.None); - if (TryComp(args.Target, out SharedBodyComponent? body)) - { - body.Gib(); - } - }; - verb.Impact = LogImpact.Extreme; // if you're just outright killing a person, I guess that deserves to be extreme? - args.Verbs.Add(verb); - } - // Set clothing verb if (_groupController.CanCommand(player, "setoutfit") && EntityManager.HasComponent(args.Target)) diff --git a/Content.Shared/Verbs/VerbCategory.cs b/Content.Shared/Verbs/VerbCategory.cs index b87d0ca5ac..45ec725028 100644 --- a/Content.Shared/Verbs/VerbCategory.cs +++ b/Content.Shared/Verbs/VerbCategory.cs @@ -31,6 +31,9 @@ namespace Content.Shared.Verbs IconsOnly = iconsOnly; } + public static readonly VerbCategory Admin = + new("verb-categories-admin", "/Textures/Interface/character.svg.192dpi.png"); + public static readonly VerbCategory Debug = new("verb-categories-debug", "/Textures/Interface/VerbIcons/debug.svg.192dpi.png"); diff --git a/Resources/Locale/en-US/administration/admin-verbs.ftl b/Resources/Locale/en-US/administration/admin-verbs.ftl index 5ca0f98ad6..e717e649ed 100644 --- a/Resources/Locale/en-US/administration/admin-verbs.ftl +++ b/Resources/Locale/en-US/administration/admin-verbs.ftl @@ -1,3 +1,4 @@ delete-verb-get-data-text = Delete edit-solutions-verb-get-data-text = Edit Solutions explode-verb-get-data-text = Explode +ahelp-verb-get-data-text = Message diff --git a/Resources/Locale/en-US/verbs/verb-system.ftl b/Resources/Locale/en-US/verbs/verb-system.ftl index 5f2251e03a..9508eac7b9 100644 --- a/Resources/Locale/en-US/verbs/verb-system.ftl +++ b/Resources/Locale/en-US/verbs/verb-system.ftl @@ -9,6 +9,7 @@ verb-self-target-pronoun = Yourself # verb categories & common verbs. These appear across multiple systems, so they may as well go here. +verb-categories-admin = Admin verb-categories-debug = Debug verb-categories-eject = Eject verb-categories-insert = Insert