Browse Source

Merge branch 'develop' of https://gogs.veloe.link/Veloe/MafiaTelegramBot into develop

zelpold 4 years ago
parent
commit
6d6c0cb3c9

+ 13 - 10
MafiaTelegramBot/Game/GameRoles/BodyguardRole.cs

@@ -19,17 +19,20 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task ApplyNightActionResult()
         {
-            if (NightTargetId == -1)
+            if (NightTargetId != -2)
             {
-                NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
-                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
-            }
-            var target = Room.Players[NightTargetId];
-            NightTargetId = -1;
-            if (!target.IsAlive)
-            {
-                target.IsAlive = true;
-                Player.IsAlive = false;
+                if (NightTargetId == -1)
+                {
+                    NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
+                    await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                }
+                var target = Room.Players[NightTargetId];
+                NightTargetId = -1;
+                if (!target.IsAlive)
+                {
+                    target.IsAlive = true;
+                    Player.IsAlive = false;
+                }
             }
         }
         public override async Task SetNightTarget(long userId) 

+ 16 - 10
MafiaTelegramBot/Game/GameRoles/CopRole.cs

@@ -19,18 +19,24 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task ApplyNightActionResult()
         {
-            if (NightTargetId == -1)
+            if (NightTargetId != -2)
             {
-                NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
-                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                if (NightTargetId == -1)
+                {
+                    NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
+                    await Room.PlayersCh.EditTo(Player.Id, MessageId,
+                        $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                }
+
+                var user = Room.Players[NightTargetId];
+                NightTargetId = -1;
+                KnownRoles.Add(user);
+                var role = user.GetRole() is Roles.Don or Roles.Mafia
+                    ? roles.Mafia
+                    : roles.Villager;
+                await Room.PlayersCh.EditTo(Player.Id, MessageId,
+                    $"{strings.role_of_your_target} {user.NickName} - {role}");
             }
-            var user = Room.Players[NightTargetId];
-            NightTargetId = -1;
-            KnownRoles.Add(user);
-            var role = user.GetRole() is Roles.Don or Roles.Mafia
-                ? roles.Mafia
-                : roles.Villager;
-            await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.role_of_your_target} {user.NickName} - {role}");
         }
 
         public override async Task SetNightTarget(long userId)

+ 11 - 7
MafiaTelegramBot/Game/GameRoles/DoctorRole.cs

@@ -18,15 +18,19 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task ApplyNightActionResult()
         {
-            if (NightTargetId == -1)
+            if (NightTargetId != -2)
             {
-                NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
-                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                if (NightTargetId == -1)
+                {
+                    NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
+                    await Room.PlayersCh.EditTo(Player.Id, MessageId,
+                        $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                }
+                var target = Room.Players[NightTargetId];
+                target.CanBeHealed = false;
+                NightTargetId = -1;
+                if (!target.IsAlive) target.IsAlive = true;
             }
-            var target = Room.Players[NightTargetId];
-            target.CanBeHealed = false;
-            NightTargetId = -1;
-            if (!target.IsAlive) target.IsAlive = true;
         }
 
         public override async Task SetNightTarget(long userId)

+ 17 - 12
MafiaTelegramBot/Game/GameRoles/DonRole.cs

@@ -28,20 +28,25 @@ namespace MafiaTelegramBot.Game.GameRoles
         public override async Task ApplyNightActionResult()
         {
             Player.IsSpeaker = false;
-            if (MafiaTargetId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
-            else MafiaTargetId = -1;
-            if (NightTargetId == -1)
+            if (NightTargetId != -2 && MafiaTargetId != -2)
             {
-                NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
-                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                if (MafiaTargetId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
+                else MafiaTargetId = -1;
+                if (NightTargetId == -1)
+                {
+                    NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
+                    await Room.PlayersCh.EditTo(Player.Id, MessageId,
+                        $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                }
+                var user = Room.Players[NightTargetId];
+                NightTargetId = -1;
+                KnownRoles.Add(user);
+                var role = user.GetRole() is Roles.Cop
+                    ? roles.Cop
+                    : roles.Villager;
+                await Room.PlayersCh.EditTo(Player.Id, MessageId,
+                    $"{strings.role_of_your_target} {user.NickName} - {role}");
             }
-            var user = Room.Players[NightTargetId];
-            NightTargetId = -1;
-            KnownRoles.Add(user);
-            var role = user.GetRole() is Roles.Cop
-                ? roles.Cop
-                : roles.Villager;
-            await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.role_of_your_target} {user.NickName} - {role}");
         }
 
         public override async Task SetNightTarget(long userId)

+ 5 - 2
MafiaTelegramBot/Game/GameRoles/MafiaRole.cs

@@ -22,8 +22,11 @@ namespace MafiaTelegramBot.Game.GameRoles
         public override async Task ApplyNightActionResult()
         {
             Player.IsSpeaker = false;
-            if (MafiaTargetId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
-            else MafiaTargetId = -1;
+            if (MafiaTargetId != -2)
+            {
+                if (MafiaTargetId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
+                else MafiaTargetId = -1;
+            }
         }
 
         public override async Task SetMafiaTarget(long userId)

+ 2 - 3
MafiaTelegramBot/Game/GameRooms/GameRoom.GameProcess.cs

@@ -166,7 +166,7 @@ namespace MafiaTelegramBot.Game.GameRooms
             {
                 var beforeKill = Players.Values.ToDictionary(p=>p.Id,p=>p.IsAlive);
                 var mafiaNotAgree = "";
-                var votes = Players.Values.Where(p=> p.IsAlive && p.CurrentRole.MafiaTargetId != -1)
+                var votes = Players.Values.Where(p=> p.IsAlive && p.CurrentRole.MafiaTargetId != -1 && p.CurrentRole.MafiaTargetId != -2)
                     .GroupBy(p => p.CurrentRole.MafiaTargetId)
                     .Select(item => new {id = item.Key, count = item.Count()})
                     .ToList();
@@ -175,8 +175,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                     var max = votes.Max(item => item.count);
                     var maxObjects = votes.Where(item => item.count == max).ToList();
                     if(maxObjects.Count == 1) await Players[maxObjects[0].id].CurrentRole.Kill();
-                }
-                    
+                }   
                 foreach (var (role, players) in PlayersRole)
                 {
                     if (role is Roles.Mafia)

+ 2 - 4
MafiaTelegramBot/Game/GameRooms/GameRoom.Role.cs

@@ -4,9 +4,7 @@ using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
 using MafiaTelegramBot.Game.GameRoles;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
-using Telegram.Bot.Types;
 using Timer = System.Timers.Timer;
 
 namespace MafiaTelegramBot.Game.GameRooms
@@ -36,13 +34,13 @@ namespace MafiaTelegramBot.Game.GameRooms
                 if (MessageId != -1)
                 {
                     await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.activity_blocked);
-                    NightTargetId = -1;
+                    NightTargetId = -2;
                 }
                 if (MafiaMessageId != -1)
                 {
                     Player.IsSpeaker = false;
                     await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.activity_blocked);
-                    MafiaTargetId = -1;
+                    MafiaTargetId = -2;
                 }
                 await Room.PlayersCh.SendTo(Player.ChatId, message);
             }