|
@@ -27,7 +27,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task FirstDay()
|
|
|
{
|
|
|
- _isDay = true;
|
|
|
+ IsDay = true;
|
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Day"]);
|
|
|
await PlayersCh.Send(strings.first_day_message);
|
|
|
await Task.Run(async() =>
|
|
@@ -49,7 +49,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task FirstNight()
|
|
|
{
|
|
|
- _isDay = false;
|
|
|
+ IsDay = false;
|
|
|
await Task.Run(async() =>
|
|
|
{
|
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
|
|
@@ -106,7 +106,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task DayPhase()
|
|
|
{
|
|
|
- _isDay = true;
|
|
|
+ IsDay = true;
|
|
|
var turnsCount = _turnOrder.Count;
|
|
|
Player firstPlayer = null;
|
|
|
for (var i = 0; i < turnsCount; ++i)
|
|
@@ -126,7 +126,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task NightPhase()
|
|
|
{
|
|
|
- _isDay = false;
|
|
|
+ IsDay = false;
|
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
|
|
|
await PlayersCh.Send(strings.city_falls_asleep);
|
|
|
await Task.Run(async () =>
|
|
@@ -147,7 +147,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
{
|
|
|
await Task.Run(async () =>
|
|
|
{
|
|
|
- long killedPlayerId = -1;
|
|
|
+ var beforeKill = Players.Values.ToDictionary(p=>p.Id,p=>p.IsAlive);
|
|
|
var mafiaNotAgree = "";
|
|
|
foreach (var (role, players) in PlayersRole)
|
|
|
{
|
|
@@ -159,15 +159,14 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
.ToList();
|
|
|
var max = votes.Max(item => item.count);
|
|
|
var maxCount = votes.Count(item => item.count == max);
|
|
|
- if (maxCount > 1)
|
|
|
+ if (maxCount != 1)
|
|
|
{
|
|
|
mafiaNotAgree = $"\n{strings.mafia_not_agree}";
|
|
|
continue;
|
|
|
}
|
|
|
var selected = votes.First(item => item.count == max);
|
|
|
if (selected.id == -1) continue;
|
|
|
- killedPlayerId = selected.id;
|
|
|
- await Players[killedPlayerId].Kill();
|
|
|
+ await Players[selected.id].CurrentRole.Kill();
|
|
|
foreach (var mafia in players) await mafia.CurrentRole.ApplyNightActionResult();
|
|
|
}
|
|
|
else if (players.Count == 1)
|
|
@@ -177,9 +176,13 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
await player.CurrentRole.ApplyNightActionResult();
|
|
|
}
|
|
|
}
|
|
|
+ var afterKill = Players.Values.ToDictionary(p=>p.Id,p=>p.IsAlive);
|
|
|
var message = strings.city_wakes_up;
|
|
|
- if (killedPlayerId != -1 && !Players[killedPlayerId].IsAlive) message += $"{strings.at_this_night} {Players[killedPlayerId].NickName}";
|
|
|
- else message += strings.everyone_survived;
|
|
|
+ if(afterKill.IsEquals(beforeKill)) message += strings.everyone_survived;
|
|
|
+ else foreach (var (id, alive) in beforeKill)
|
|
|
+ if(afterKill[id] != alive) message += alive
|
|
|
+ ? $"{Players[id].NickName} {strings.will_be_ressurected}"
|
|
|
+ : $"{Players[id].NickName} {strings.will_be_killed}";
|
|
|
message += mafiaNotAgree;
|
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Day"]);
|
|
|
await PlayersCh.Send(message);
|
|
@@ -271,7 +274,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
}
|
|
|
await PlayersCh.Send(rolesMessage);
|
|
|
IsRunning = false;
|
|
|
- _isDay = false;
|
|
|
+ IsDay = false;
|
|
|
_turnOrder.Clear();
|
|
|
Settings.Clear();
|
|
|
foreach (var (_, list) in PlayersRole) list.Clear();
|