]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
anomaly commands (#16179)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Sat, 6 May 2023 17:56:02 +0000 (13:56 -0400)
committerGitHub <noreply@github.com>
Sat, 6 May 2023 17:56:02 +0000 (03:56 +1000)
Content.Server/Anomaly/AnomalySystem.Commands.cs [new file with mode: 0644]
Content.Server/Anomaly/AnomalySystem.cs
Resources/Locale/en-US/anomaly/anomaly.ftl

diff --git a/Content.Server/Anomaly/AnomalySystem.Commands.cs b/Content.Server/Anomaly/AnomalySystem.Commands.cs
new file mode 100644 (file)
index 0000000..9105697
--- /dev/null
@@ -0,0 +1,59 @@
+using Content.Server.Administration;
+using Content.Shared.Administration;
+using Content.Shared.Anomaly.Components;
+using Robust.Shared.Console;
+
+namespace Content.Server.Anomaly;
+
+public sealed partial class AnomalySystem
+{
+    [Dependency] private readonly IConsoleHost _consoleHost = default!;
+
+    public void InitializeCommands()
+    {
+        _consoleHost.RegisterCommand("pulseanomaly", Loc.GetString("anomaly-command-pulse"), "pulseanomaly <uid>",
+            PulseAnomalyCommand,
+            GetAnomalyCompletion);
+
+        _consoleHost.RegisterCommand("supercriticalanomaly", Loc.GetString("anomaly-command-supercritical"), "supercriticalanomaly <uid>",
+            SupercriticalAnomalyCommand,
+            GetAnomalyCompletion);
+    }
+
+    [AdminCommand(AdminFlags.Fun)]
+    private void PulseAnomalyCommand(IConsoleShell shell, string argstr, string[] args)
+    {
+        if (args.Length != 1)
+            shell.WriteError("Argument length must be 1");
+
+        if (!EntityUid.TryParse(args[0], out var uid))
+            return;
+
+        if (!TryComp<AnomalyComponent>(uid, out var anomaly))
+            return;
+
+        DoAnomalyPulse(uid, anomaly);
+    }
+
+    [AdminCommand(AdminFlags.Fun)]
+    private void SupercriticalAnomalyCommand(IConsoleShell shell, string argstr, string[] args)
+    {
+        if (args.Length != 1)
+            shell.WriteError("Argument length must be 1");
+
+        if (!EntityUid.TryParse(args[0], out var uid))
+            return;
+
+        if (!HasComp<AnomalyComponent>(uid))
+            return;
+
+        StartSupercriticalEvent(uid);
+    }
+
+    private CompletionResult GetAnomalyCompletion(IConsoleShell shell, string[] args)
+    {
+        return args.Length != 1
+            ? CompletionResult.Empty
+            : CompletionResult.FromHintOptions(CompletionHelper.Components<AnomalyComponent>(args[0]), "<uid>");
+    }
+}
index 7b1ed087d3680179dc35822e41452f4b6881c1d8..781fe6014c3bc1d2f39b97a22be04342398c2b11 100644 (file)
@@ -1,4 +1,4 @@
-using Content.Server.Anomaly.Components;
+using Content.Server.Anomaly.Components;
 using Content.Server.Atmos.EntitySystems;
 using Content.Server.Audio;
 using Content.Server.Explosion.EntitySystems;
@@ -44,6 +44,7 @@ public sealed partial class AnomalySystem : SharedAnomalySystem
         InitializeGenerator();
         InitializeScanner();
         InitializeVessel();
+        InitializeCommands();
     }
 
     private void OnMapInit(EntityUid uid, AnomalyComponent component, MapInitEvent args)
index f93b5bb97e1f39574e2ca07fd25309bc239113cf..cff944ae22558cd72effd7c9a67ff940995d3dc7 100644 (file)
@@ -37,6 +37,8 @@ anomaly-generator-charges = {$charges ->
 }
 anomaly-generator-announcement = An anomaly has been generated!
 
+anomaly-command-pulse = Pulses a target anomaly
+anomaly-command-supercritical = Makes a target anomaly go supercritical
 
 # Flavor text on the footer
 anomaly-generator-flavor-left = Anomaly may spawn inside the operator.