diff --git a/Roles/Impostor/EvilHacker.cs b/Roles/Impostor/EvilHacker.cs index ee4a89f5b..a10848fd4 100644 --- a/Roles/Impostor/EvilHacker.cs +++ b/Roles/Impostor/EvilHacker.cs @@ -119,6 +119,7 @@ public override void OnReportDeadBody(PlayerControl reporter, GameData.PlayerInf var builder = new StringBuilder(512); // 送信するメッセージを生成 + var previous = -1; foreach (var admin in admins) { var entry = admin.Value; @@ -131,6 +132,24 @@ public override void OnReportDeadBody(PlayerControl reporter, GameData.PlayerInf { builder.Append(ImpostorMark); } + // 色分けは無人をスキップしない場合のみ + if (!skipUnoccupiedRooms) + { + switch (previous, entry.TotalPlayers) + { + // 1部屋目で今の部屋が無人の場合 + case (-1, 0): + // 前の部屋が有人で今の部屋が無人の場合 + case ( > 0, 0): + // グレー + builder.Append(GrayTag); + break; + // 前の部屋が無人で今の部屋が有人の場合 + case (0, > 0): + builder.Append(ColorCloseTag); + break; + } + } // 部屋名と合計プレイヤー数を表記 builder.Append(DestroyableSingleton.Instance.GetString(entry.Room)); builder.Append(": "); @@ -142,6 +161,7 @@ public override void OnReportDeadBody(PlayerControl reporter, GameData.PlayerInf builder.Append('×').Append(entry.NumDeadBodies).Append(')'); } builder.Append('\n'); + previous = entry.TotalPlayers; } // 送信 @@ -269,6 +289,8 @@ private void Inherit() private static readonly string ImpostorMark = "★".Color(Palette.ImpostorRed); /// 相方がキルしたときに名前の下に通知を表示する長さ private static readonly TimeSpan NotifyDuration = TimeSpan.FromSeconds(10); + private const string GrayTag = ""; + private const string ColorCloseTag = ""; private readonly struct MurderNotify {