|
@@ -145,41 +145,37 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- private async Task SummingUpPhase()
|
|
|
+ public async Task SummingUpPhase()
|
|
|
{
|
|
|
await Task.Run(async () =>
|
|
|
{
|
|
|
- Player killedPlayer = null;
|
|
|
+ long killedPlayerId = -1;
|
|
|
foreach (var (role, players) in PlayersRole)
|
|
|
{
|
|
|
- if (players.Count == 1)
|
|
|
- {
|
|
|
- var player = players[0];
|
|
|
- if (role != Roles.Doctor) player.CanBeHealed = true;
|
|
|
- if (player.IsAlive) await player.CurrentRole.ApplyNightActionResult();
|
|
|
- }
|
|
|
- else if (role is Roles.Mafia)
|
|
|
+ if (role is Roles.Mafia)
|
|
|
{
|
|
|
foreach (var mafia in players) mafia.IsSpeaker = false;
|
|
|
var votes = players
|
|
|
- .GroupBy(player => player.CurrentRole.GetNightTarget())
|
|
|
+ .GroupBy(p => p.CurrentRole.GetNightTarget())
|
|
|
.Select(item => new {id = item.Key, count = item.Count()})
|
|
|
.ToList();
|
|
|
- foreach (var vote in votes)
|
|
|
- {
|
|
|
- Console.WriteLine(vote.id);
|
|
|
- Console.WriteLine(vote.count);
|
|
|
- }
|
|
|
- if (votes.Count == players.Count) continue;
|
|
|
var max = votes.Max(item => item.count);
|
|
|
var maxCount = votes.Count(item => item.count == max);
|
|
|
if (maxCount != 1) continue;
|
|
|
var selected = votes.First(item => item.count == max);
|
|
|
- if (selected.id != -1) killedPlayer = Players[selected.id];
|
|
|
+ if (selected.id == -1) continue;
|
|
|
+ killedPlayerId = selected.id;
|
|
|
+ Players[killedPlayerId].IsAlive = false;
|
|
|
+ }
|
|
|
+ else if (players.Count == 1)
|
|
|
+ {
|
|
|
+ var player = players[0];
|
|
|
+ if (role != Roles.Doctor) player.CanBeHealed = true;
|
|
|
+ await player.CurrentRole.ApplyNightActionResult();
|
|
|
}
|
|
|
}
|
|
|
var message = strings.city_wakes_up;
|
|
|
- if (killedPlayer is {IsAlive: false}) message += $"{strings.at_this_night} {killedPlayer.NickName}";
|
|
|
+ if (killedPlayerId != -1 && !Players[killedPlayerId].IsAlive) message += $"{strings.at_this_night} {Players[killedPlayerId].NickName}";
|
|
|
else message += strings.everyone_survived;
|
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Day"]);
|
|
|
await PlayersCh.Send(message);
|