fixes 2
This commit is contained in:
24
GameLogic.cs
24
GameLogic.cs
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user