diff --git a/Content.Server/Commands/GameTicking/GoLobbyCommand.cs b/Content.Server/Commands/GameTicking/GoLobbyCommand.cs new file mode 100644 index 0000000000..35d2691f00 --- /dev/null +++ b/Content.Server/Commands/GameTicking/GoLobbyCommand.cs @@ -0,0 +1,50 @@ +#nullable enable +using System; +using Content.Server.Administration; +using Content.Server.Interfaces.GameTicking; +using Content.Shared; +using Content.Shared.Administration; +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.Player; +using Robust.Shared.Interfaces.Configuration; +using Robust.Shared.IoC; +using Robust.Shared.Localization; + +namespace Content.Server.Commands.GameTicking +{ + [AdminCommand(AdminFlags.Server)] + public class GoLobbyCommand : IClientCommand + { + public string Command => "golobby"; + public string Description => "Enables the lobby and restarts the round."; + public string Help => $"Usage: {Command} / {Command} "; + public void Execute(IConsoleShell shell, IPlayerSession? player, string[] args) + { + Type? preset = null; + var presetName = string.Join(" ", args); + + var ticker = IoCManager.Resolve(); + + if (args.Length > 0) + { + if (!ticker.TryGetPreset(presetName, out preset)) + { + shell.SendText(player, $"No preset found with name {presetName}"); + return; + } + } + + var config = IoCManager.Resolve(); + config.SetCVar(CCVars.GameLobbyEnabled, true); + + ticker.RestartRound(); + + if (preset != null) + { + ticker.SetStartPreset(preset); + } + + shell.SendText(player, $"Enabling the lobby and restarting the round.{(preset == null ? "" : $"\nPreset set to {presetName}")}"); + } + } +}