diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
index 993de90ffe..c5d3c74782 100644
--- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs
+++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs
@@ -89,6 +89,7 @@ namespace Content.Server.GameTicking
readyPlayers = _playersInLobby.Keys.ToList();
}
+ _roundStartDateTime = DateTime.UtcNow;
RunLevel = GameRunLevel.InRound;
RoundLengthMetric.Set(0);
diff --git a/Content.Server/GameTicking/GameTicker.StatusShell.cs b/Content.Server/GameTicking/GameTicker.StatusShell.cs
index bf2d359807..0ea712d4e8 100644
--- a/Content.Server/GameTicking/GameTicker.StatusShell.cs
+++ b/Content.Server/GameTicking/GameTicker.StatusShell.cs
@@ -1,6 +1,8 @@
+using System;
using Newtonsoft.Json.Linq;
using Robust.Server.ServerStatus;
using Robust.Shared.IoC;
+using Robust.Shared.ViewVariables;
namespace Content.Server.GameTicking
{
@@ -11,6 +13,12 @@ namespace Content.Server.GameTicking
///
private readonly object _statusShellLock = new();
+ ///
+ /// Round start time in UTC, for status shell purposes.
+ ///
+ [ViewVariables]
+ private DateTime _roundStartDateTime;
+
private void InitializeStatusShell()
{
IoCManager.Resolve().OnStatusRequest += GetStatusResponse;
@@ -26,7 +34,7 @@ namespace Content.Server.GameTicking
jObject["run_level"] = (int) _runLevel;
if (_runLevel >= GameRunLevel.InRound)
{
- jObject["round_start_time"] = _roundStartTime.ToString("o");
+ jObject["round_start_time"] = _roundStartDateTime.ToString("o");
}
}
}