|
@@ -217,7 +217,8 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
{
|
|
{
|
|
await Task.Run( async () =>
|
|
await Task.Run( async () =>
|
|
{
|
|
{
|
|
- foreach (var contender in contenders) await contender.CurrentRole.DefenceAction();
|
|
|
|
|
|
+ var contendersCopy = contenders.ToList();
|
|
|
|
+ foreach (var contender in contendersCopy) await contender.CurrentRole.DefenceAction();
|
|
var votersPlayers = Players.Values.Where(p => p.IsAlive).ToArray();
|
|
var votersPlayers = Players.Values.Where(p => p.IsAlive).ToArray();
|
|
Timer votingTimer = new() {Interval = 10 * 1000, AutoReset = false};
|
|
Timer votingTimer = new() {Interval = 10 * 1000, AutoReset = false};
|
|
var resetEvent = new ManualResetEvent(false);
|
|
var resetEvent = new ManualResetEvent(false);
|
|
@@ -296,7 +297,8 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
private async Task<List<Player>> CalculateCandidates()
|
|
private async Task<List<Player>> CalculateCandidates()
|
|
{
|
|
{
|
|
var message = strings.results_of_voting;
|
|
var message = strings.results_of_voting;
|
|
- foreach (var (playerId, targetId) in VoteKillList.Where(item => item.Value != 0))
|
|
|
|
|
|
+ var voteKillCopy = VoteKillList.ToDictionary(e => e.Key, e => e.Value);
|
|
|
|
+ foreach (var (playerId, targetId) in voteKillCopy.Where(item => item.Value != 0))
|
|
{
|
|
{
|
|
var player = Players.GetIfContains(playerId);
|
|
var player = Players.GetIfContains(playerId);
|
|
var target = Players.GetIfContains(targetId);
|
|
var target = Players.GetIfContains(targetId);
|