using Content.Server.Administration; using Content.Shared.Administration; using JetBrains.Annotations; using Robust.Shared.Console; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using System.Linq; namespace Content.Server.Nuke.Commands { [UsedImplicitly] [AdminCommand(AdminFlags.Fun)] public class ToggleNukeCommand : IConsoleCommand { public string Command => "nukearm"; public string Description => "Toggle nuclear bomb timer. You can set timer directly. Uid is optional."; public string Help => "nukearm "; public void Execute(IConsoleShell shell, string argStr, string[] args) { EntityUid bombUid; NukeComponent? bomb = null; if (args.Length >= 2) { if (!EntityUid.TryParse(args[1], out bombUid)) { shell.WriteError(Loc.GetString("shell-entity-uid-must-be-number")); return; } } else { var entManager = IoCManager.Resolve(); var bombs = entManager.EntityQuery(); bomb = bombs.FirstOrDefault(); if (bomb == null) { shell.WriteError("Can't find any entity with a NukeComponent"); return; } bombUid = bomb.OwnerUid; } var nukeSys = EntitySystem.Get(); if (args.Length >= 1) { if (!float.TryParse(args[0], out var timer)) { shell.WriteError("shell-argument-must-be-number"); return; } nukeSys.SetRemainingTime(bombUid, timer, bomb); } nukeSys.ToggleBomb(bombUid, bomb); } } }