3 Commits b4bc3d2f84 ... eb52e6c061

Author SHA1 Message Date
  zelpold eb52e6c061 detective open role 4 years ago
  zelpold 60eb27f1b5 Merge branch 'develop' of https://gogs.veloe.link/Veloe/MafiaTelegramBot into develop 4 years ago
  zelpold 294de3c5e0 journalist opening role 4 years ago

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

@@ -64,9 +64,19 @@ namespace MafiaTelegramBot.DataBase.Entity
             Fool = true;
         }
 
+        public void OpenJournalist()
+        {
+            Journalist = true;
+        }
+
         public void OpenLawyer()
         {
             Lawyer = true;
         }
+
+        public void OpenDetective()
+        {
+            Detective = true;
+        }
     }
 }

+ 5 - 0
MafiaTelegramBot/Game/GameRoles/CopRole.cs

@@ -12,6 +12,9 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         private int _color = 1;
 
+        public int CountBlack = 0;
+        public int CountRed = 0;
+
         public override int ColorRole
         {
             get => _color; 
@@ -43,6 +46,8 @@ namespace MafiaTelegramBot.Game.GameRoles
                         : Room.Players[NightTargetId].GetRole() is Roles.Werewolf && ((WerewolfRole) Room.Players[NightTargetId].CurrentRole).IsMafia
                             ? roles.Mafia
                             : roles.Villager;
+                    if (Room.Players[NightTargetId].CurrentRole.ColorRole == 1) CountRed++;
+                    if (Room.Players[NightTargetId].CurrentRole.ColorRole == 2) CountBlack++;
                     if (KnownRoles.ContainsKey(NightTargetId)) KnownRoles[NightTargetId] = role;
                     else KnownRoles.Add(Room.Players[NightTargetId].Id, role);
                     await Room.PlayersCh.EditTo(Player.Id, MessageId,

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

@@ -520,6 +520,14 @@ namespace MafiaTelegramBot.Game.GameRooms
                                 UpdateWins(player);
                         }
                         player.ResetState();
+                        if (player.CurrentRole.RoleKey == Roles.Cop)
+                        {
+                            if (((CopRole) PlayersRole[Roles.Cop][0].CurrentRole).CountRed ==
+                                ((CopRole) PlayersRole[Roles.Cop][0].CurrentRole).CountBlack) player.JournalistAchievementEvent();
+                            if (((CopRole) PlayersRole[Roles.Cop][0].CurrentRole).CountRed == 0 &&
+                                ((CopRole) PlayersRole[Roles.Cop][0].CurrentRole).CountBlack != 0) player.DetectiveAchievementEvent();
+
+                        }
                     }
                     UserDao.DataBase.Statistics.UpdateRange(statsList);
                     UserDao.DataBase.OpenedRoles.UpdateRange(openRolesList);

+ 33 - 0
MafiaTelegramBot/Game/Player.cs

@@ -193,6 +193,39 @@ namespace MafiaTelegramBot.Game
             });
         }
 
+        public void JournalistAchievementEvent()
+        {
+            Task.Run(async() =>
+            {
+                if (!OpenedRoles.Journalist)
+                {
+                    await Bot.SendWithMarkdown2(ChatId,
+                        $"{strings.congrats} {roles.Journalist}! {strings.you_can_use}");
+                    await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Journalist.ToString()]);
+                    OpenedRoles.OpenJournalist();
+                }
+            });
+        }
+
+        public void DetectiveAchievementEvent() 
+        {
+            Task.Run(async() =>
+            {
+                if (!OpenedRoles.Detective)
+                {
+                    Achievements.GamesWhereCopCheckOnlyMafia++;
+                    if (Achievements.GamesWhereCopCheckOnlyMafia == 3)
+                    {
+                        await Bot.SendWithMarkdown2(ChatId,
+                            $"{strings.congrats} {roles.Detective}! {strings.you_can_use}");
+                        await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Detective.ToString()]);
+                        OpenedRoles.OpenDetective();
+                    }
+                }
+            });
+        }
+        
+
         public void LawyerRoleAchievementEvent()
         {
             Task.Run(async() =>