|
@@ -1,4 +1,3 @@
|
|
-using System;
|
|
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading;
|
|
@@ -115,11 +114,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
private bool GameNotEnded()
|
|
private bool GameNotEnded()
|
|
{
|
|
{
|
|
var playersCount = Players.Values.Count(p => p.IsAlive);
|
|
var playersCount = Players.Values.Count(p => p.IsAlive);
|
|
- var mafiaCount =
|
|
|
|
- Players.Values.Count(p => p.IsAlive && p.GetRole() is Roles.Don or Roles.Mafia or Roles.Dame);
|
|
|
|
- if (PlayersRole.ContainsKey(Roles.Werewolf)
|
|
|
|
- && PlayersRole[Roles.Werewolf].Count == 1 && PlayersRole[Roles.Werewolf][0].IsAlive
|
|
|
|
- && ((WerewolfRole)PlayersRole[Roles.Werewolf][0].CurrentRole).IsMafia) mafiaCount++;
|
|
|
|
|
|
+ var mafiaCount = Players.Values.Count(p => p.IsAlive && p.CurrentRole.ColorRole is 2);
|
|
var villagersCount = playersCount - mafiaCount;
|
|
var villagersCount = playersCount - mafiaCount;
|
|
return villagersCount > mafiaCount && mafiaCount > 0;
|
|
return villagersCount > mafiaCount && mafiaCount > 0;
|
|
}
|
|
}
|
|
@@ -142,25 +137,23 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
discussionEnded.WaitOne();
|
|
discussionEnded.WaitOne();
|
|
|
|
|
|
var turnsCount = _turnOrder.Count;
|
|
var turnsCount = _turnOrder.Count;
|
|
- Player toEndQueue = null;
|
|
|
|
for (var i = 0; i < turnsCount; ++i)
|
|
for (var i = 0; i < turnsCount; ++i)
|
|
{
|
|
{
|
|
var player = _turnOrder.Dequeue();
|
|
var player = _turnOrder.Dequeue();
|
|
if (!Players.ContainsKey(player.Id)) continue;
|
|
if (!Players.ContainsKey(player.Id)) continue;
|
|
- if (!player.IsBlocked && player.IsAlive && Owner != null)
|
|
|
|
|
|
+ if (!player.IsBlocked && player.IsAlive)
|
|
{
|
|
{
|
|
await PlayersMessageChannel.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
|
|
await PlayersMessageChannel.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
|
|
- if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);
|
|
|
|
- await player.CurrentRole.SpeakAction(Constants.DAY_SPEAK_INTERVAL);
|
|
|
|
|
|
+ if (Owner != null)
|
|
|
|
+ {
|
|
|
|
+ if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);
|
|
|
|
+ await player.CurrentRole.SpeakAction(Constants.DAY_SPEAK_INTERVAL);
|
|
|
|
+ }
|
|
if (Players.ContainsKey(player.Id)) await player.CurrentRole.VotingAction(VoteUpList.Count == 0);
|
|
if (Players.ContainsKey(player.Id)) await player.CurrentRole.VotingAction(VoteUpList.Count == 0);
|
|
}
|
|
}
|
|
- else if (Owner == null) await player.CurrentRole.VotingAction(VoteUpList.Count == 0);
|
|
|
|
-
|
|
|
|
- if (toEndQueue != null) _turnOrder.Enqueue(player);
|
|
|
|
- else toEndQueue = player;
|
|
|
|
|
|
+ _turnOrder.Enqueue(player);
|
|
}
|
|
}
|
|
-
|
|
|
|
- _turnOrder.Enqueue(toEndQueue);
|
|
|
|
|
|
+ _turnOrder.Enqueue(_turnOrder.Dequeue());
|
|
}
|
|
}
|
|
|
|
|
|
private async Task NightPhase()
|
|
private async Task NightPhase()
|