using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
+using Content.Server.Administration.Systems;
using Content.Server.Database;
using Content.Server.GameTicking;
using Content.Shared.Administration.Logs;
Players = new List<AdminLogPlayer>(players.Count)
};
+ var adminLog = false;
+ var adminSys = _entityManager.SystemOrNull<AdminSystem>();
+ var logMessage = message;
+
foreach (var id in players)
{
var player = new AdminLogPlayer
};
log.Players.Add(player);
+
+ if (adminSys != null)
+ {
+ var cachedInfo = adminSys.GetCachedPlayerInfo(new NetUserId(id));
+ if (cachedInfo != null && cachedInfo.Antag)
+ {
+ logMessage += " [ANTAG: " + cachedInfo.CharacterName + "]";
+ }
+ }
+
+ if (adminLog)
+ continue;
+
if (impact == LogImpact.Extreme) // Always chat-notify Extreme logs
- _chat.SendAdminAlert(message);
+ adminLog = true;
if (impact == LogImpact.High) // Only chat-notify High logs if the player is below a threshold playtime
{
if (playtimes.TryGetValue(PlayTimeTrackingShared.TrackerOverall, out var overallTime) &&
overallTime <= TimeSpan.FromHours(_highImpactLogPlaytime))
{
- _chat.SendAdminAlert(message);
+ adminLog = true;
}
}
}
}
+ if (adminLog)
+ _chat.SendAdminAlert(logMessage);
+
if (preRound)
{
_preRoundLogQueue.Enqueue(log);