diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index 78f98351fe..d9b019129d 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -21,7 +21,6 @@ using Robust.Shared.Interfaces.Configuration; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Map; using Robust.Shared.Interfaces.Network; -using Robust.Shared.Interfaces.Reflection; using Robust.Shared.Interfaces.Timing; using Robust.Shared.IoC; using Robust.Shared.Log; @@ -569,23 +568,38 @@ namespace Content.Server.GameTicking { public string Command => "respawn"; public string Description => "Respawns a player, kicking them back to the lobby."; - public string Help => "respawn "; + public string Help => "respawn [player]"; public void Execute(IConsoleShell shell, IPlayerSession player, string[] args) { - if (args.Length != 1) + if (args.Length > 1) { - shell.SendText(player, "Must provide exactly one argument."); + shell.SendText(player, "Must provide <= 1 argument."); return; } var playerMgr = IoCManager.Resolve(); var ticker = IoCManager.Resolve(); - var arg = new NetSessionId(args[0]); - if (!playerMgr.TryGetSessionById(arg, out var targetPlayer)) + NetSessionId sessionId; + if (args.Length == 0) { - if (!playerMgr.TryGetPlayerData(arg, out var data)) + if (player == null) + { + shell.SendText((IPlayerSession)null, "If not a player, an argument must be given."); + return; + } + + sessionId = player.SessionId; + } + else + { + sessionId = new NetSessionId(args[0]); + } + + if (!playerMgr.TryGetSessionById(sessionId, out var targetPlayer)) + { + if (!playerMgr.TryGetPlayerData(sessionId, out var data)) { shell.SendText(player, "Unknown player"); return;