using Content.Shared.Administration; using Content.Shared.GameTicking; using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands { [AnyCommand] sealed class ObserveCommand : IConsoleCommand { public string Command => "observe"; public string Description => ""; public string Help => ""; public void Execute(IConsoleShell shell, string argStr, string[] args) { if (shell.Player is not IPlayerSession player) { return; } var ticker = EntitySystem.Get(); if (ticker.RunLevel == GameRunLevel.PreRoundLobby) { shell.WriteError("Wait until the round starts."); return; } if (ticker.PlayerGameStatuses.TryGetValue(player.UserId, out var status) && status != PlayerGameStatus.JoinedGame) { ticker.JoinAsObserver(player); } else { shell.WriteError($"{player.Name} is not in the lobby. This incident will be reported."); } } } }