Tigran vor 4 Jahren
Ursprung
Commit
0f9c370ab6

+ 3 - 3
MafiaTelegramBot/CustomCollections/Extensions/ListExtension.cs

@@ -22,11 +22,11 @@ namespace MafiaTelegramBot.CustomCollections.Extensions
             return new(list);
         }
 
-        public static int AddUnique<T>(this List<T> list, T item)
+        public static bool AddUnique<T>(this List<T> list, T item)
         {
-            if (list.Contains(item)) return 0;
+            if (list.Contains(item)) return false;
             list.Add(item);
-            return 1;
+            return true;
         }
     }
 }

+ 22 - 11
MafiaTelegramBot/Game/GameRooms/GameRoom.GameProcess.cs

@@ -289,18 +289,29 @@ namespace MafiaTelegramBot.Game.GameRooms
             else
             {
                 var target = Players[targetId];
-                VoteUpList.Add(target);
-                if (toKill) VoteKillList.Add(playerId, targetId);
-                if (playerId != targetId)
+                if (!toKill)
                 {
-                    if (!toKill) await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.put_up_vote_to} {target.NickName}");
-                    await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
-                }
-                else
-                {
-                    if (!toKill) await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.vote_to_self}");
-                    await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
+                    if (VoteUpList.AddUnique(target))
+                    {
+                        if (playerId != targetId)
+                        {
+                            await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.put_up_vote_to} {target.NickName}");
+                            await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
+                        }
+                        else
+                        {
+                            await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.vote_to_self}");
+                            await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
+                        }
+                    }
                 } 
+                else if (VoteKillList.AddUniqueByKey(playerId, targetId))
+                {
+                    if (playerId != targetId)
+                        await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
+                    else
+                        await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
+                }
             }
         }
 
@@ -328,7 +339,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                     await PlayersCh.SendSticker(Stickers.Sticker["MafiaWins"]);
                 }
                 
-                if (PlayersRole.ContainsKey(Roles.Fool)) await PlayersRole[Roles.Fool][0].CurrentRole.IsWon();
+                if (PlayersRole.ContainsKey(Roles.Fool) && PlayersRole[Roles.Fool].Count == 1) await PlayersRole[Roles.Fool][0].CurrentRole.IsWon();
                 var rolesMessage = strings.in_this_game_roles;
                 var sortedPLayers = Players.Values.ToList();
                 sortedPLayers.Sort((x, y) => x.TurnOrder - y.TurnOrder);