This commit is contained in:
Bandwidth
2026-04-26 18:33:24 +02:00
parent e9c85ac8d3
commit 796ba0906d
5 changed files with 651 additions and 40 deletions

View File

@@ -352,17 +352,27 @@ public class GameLogic
var aliveCrew = players.Values.Count(p => p.State == PlayerState.Alive && p.Role == PlayerRole.Crew);
var aliveImpostors = players.Values.Count(p => p.State == PlayerState.Alive && p.Role == PlayerRole.Impostor);
// Impostoři vyhráli - mají většinu nebo rovnost
if (aliveImpostors >= aliveCrew && aliveCrew > 0)
{
return (true, "Impostor", "Impostoři mají převahu");
}
// Všichni impostoři mrtví
// Všichni impostoři mrtví -> crew vyhrál (kontrolujeme nejdřív, ošetří
// i edge case 0 impostorů + 0 crew - vrátí "crew vyhrál" místo aby
// padlo dál do impostor-win větve)
if (aliveImpostors == 0)
{
return (true, "Crew", "Všichni impostoři eliminováni");
}
// Žádní crewmati naživu -> impostoři vyhráli (kritický fix: P9 -
// při ejekci posledního crewmate stará podmínka `aliveCrew > 0`
// shodila tuto větev a hra pokračovala s 0 crew naživu).
if (aliveCrew == 0)
{
return (true, "Impostor", "Všichni crewmati eliminováni");
}
// Impostoři vyhráli - mají většinu nebo rovnost (oba > 0)
if (aliveImpostors >= aliveCrew)
{
return (true, "Impostor", "Impostoři mají převahu");
}
// Všechny tasky hotové (počítáme pouze crew tasky)
var crewPlayers = players.Values.Where(p => p.Role == PlayerRole.Crew).ToList();