0
0

3 کامیت‌ها 8176e68b51 ... 5636f5e4a0

نویسنده SHA1 پیام تاریخ
  zelpold 5636f5e4a0 werewolf opening part two 4 سال پیش
  zelpold 958d5d50f3 Merge branch 'develop' of https://gogs.veloe.link/Veloe/MafiaTelegramBot into develop 4 سال پیش
  zelpold efed94c595 werewolf opening role 4 سال پیش

+ 5 - 0
MafiaTelegramBot/DataBase/Entity/OpenedRolesEntity.cs

@@ -89,6 +89,11 @@ namespace MafiaTelegramBot.DataBase.Entity
             Elder = true;
         }
 
+        public void OpenWerewolf()
+        {
+            Werewolf = true;
+        }
+
         public void OpenParasite()
         {
             Parasite = true;

+ 12 - 0
MafiaTelegramBot/Game/GameRooms/GameRoom.GameProcess.cs

@@ -522,6 +522,12 @@ namespace MafiaTelegramBot.Game.GameRooms
                                 player.ParasiteRoleAchievementEvent(villagerTeam.ToList());
                             }
                             else player.ResetParasiteProgress();
+                            if (player.CurrentRole.RoleKey == Roles.Werewolf)
+                            {
+                                if (player.CurrentRole.ColorRole == 1)
+                                    player.WerewolfRoleAchievementEvent(1);
+                                else player.WerewolfRoleAchievementEvent(2, true);
+                            }
                         }
                         else
                         {
@@ -531,6 +537,12 @@ namespace MafiaTelegramBot.Game.GameRooms
                                 player.ParasiteRoleAchievementEvent(mafiaTeam.ToList());
                             }
                             else player.ResetParasiteProgress();
+                            if (player.CurrentRole.RoleKey == Roles.Werewolf)
+                            {
+                                if (player.CurrentRole.ColorRole == 2)
+                                    player.WerewolfRoleAchievementEvent(2);
+                                else player.WerewolfRoleAchievementEvent(1, true);
+                            }
                         }
 
                         if (player.CurrentRole.ColorRole == 3)

+ 1 - 0
MafiaTelegramBot/Game/GameRooms/GameRoom.Structure.cs

@@ -83,6 +83,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                     && PlayersRole[Roles.Parasite].Count == 1
                     && ((ParasiteRole) PlayersRole[Roles.Parasite][0].CurrentRole).ParentId == player.Id)
                     await PlayersRole[Roles.Parasite][0].CurrentRole.Kill();
+                if (player.CurrentRole.RoleKey==Roles.Werewolf) player.WerewolfRoleAchievementEvent(0,true);
             }
             player.ResetState();
         }

+ 29 - 1
MafiaTelegramBot/Game/Player.cs

@@ -75,7 +75,6 @@ namespace MafiaTelegramBot.Game
         {
             try
             {
-                await MafiaDataBase.GetInstance().SaveChangesAsync();
                 UserDao.ActiveUsers.Remove(Id);
                 _activeTime.Dispose();
             }
@@ -285,8 +284,37 @@ namespace MafiaTelegramBot.Game
             } 
         }
 
+        public void WerewolfRoleAchievementEvent(int color, bool reset = false)
+        {
+            if (!OpenedRoles.Werewolf)
+            {
+                Task.Run(async () =>
+                {
+
+                    if (reset)
+                    {
+                        Achievements.PreviousGameWinColor = 0;
+                    }
+                    else if ((Achievements.PreviousGameWinColor == 1 && color == 2)
+                             || (Achievements.PreviousGameWinColor == 2 && color == 1))
+                    {
+                        await Bot.SendWithMarkdown2(ChatId,
+                            $"{strings.congrats} {roles.Werewolf}! {strings.you_can_use}");
+                        await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Werewolf.ToString()]);
+                        OpenedRoles.OpenWerewolf();
+                    }
+                    else
+                    {
+                        Achievements.PreviousGameWinColor = color;
+                    }
+
+                });
+            }
+        }
+        
         public void ParasiteRoleAchievementEvent(List<long> team)
         {
+            
             if (!OpenedRoles.Parasite)
             {
                 Task.Run(async() =>