Browse Source

Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	MafiaTelegramBot/DataBase/Entity/OpenedRolesEntity.cs
Tigran 4 years ago
parent
commit
8176e68b51

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

@@ -79,6 +79,16 @@ namespace MafiaTelegramBot.DataBase.Entity
             Detective = true;
         }
 
+        public void OpenDame()
+        {
+            Dame = true;
+        }
+
+        public void OpenElder()
+        {
+            Elder = true;
+        }
+
         public void OpenParasite()
         {
             Parasite = true;

+ 2 - 0
MafiaTelegramBot/Game/GameRoles/HookerRole.cs

@@ -45,6 +45,8 @@ namespace MafiaTelegramBot.Game.GameRoles
 
                 if (Room.Players.ContainsKey(NightTargetId))
                     Room.Players[NightTargetId].CanBeBlockedNight = false;
+                if (Room.Players[NightTargetId].CurrentRole.RoleKey == Roles.Don) 
+                    Player.DameRoleAchievementEvent();
             }
         }
 

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

@@ -327,8 +327,13 @@ namespace MafiaTelegramBot.Game.GameRooms
                                 await VoteUpList[0].CurrentRole.Dispatch();
                                 break;
                             case > 1:
+                                var copyVoteUpList = VoteUpList.ToList();
                                 await DefencePhase(VoteUpList);
                                 VoteUpList = await CalculateCandidates();
+                                var alivers = copyVoteUpList.Except(VoteUpList).ToList();
+                                foreach (var alive in alivers)
+                                    alive.ElderRoleAchievementEvent();   
+                                
                                 switch (VoteUpList.Count)
                                 {
                                     case 0:
@@ -339,6 +344,8 @@ namespace MafiaTelegramBot.Game.GameRooms
                                         break;
                                     default:
                                         await PlayersCh.Send(strings.villagers_could_not_decide);
+                                        foreach (var alive in VoteUpList) 
+                                            alive.ElderRoleAchievementEvent();
                                         break;
                                 }
                                 break;

+ 37 - 1
MafiaTelegramBot/Game/Player.cs

@@ -229,8 +229,44 @@ namespace MafiaTelegramBot.Game
                 });
             }
         }
-        
 
+        public void DameRoleAchievementEvent()
+        {
+            Task.Run(async () =>
+            {
+                if (!OpenedRoles.Dame)
+                {
+                    Achievements.HaveSexWithDon++;
+                    if(Achievements.HaveSexWithDon == 5)
+                    {
+                        await Bot.SendWithMarkdown2(ChatId,
+                            $"{strings.congrats} {roles.Dame}! {strings.you_can_use}");
+                        await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Dame.ToString()]);
+                        OpenedRoles.OpenDame();
+                    }
+                } 
+
+            });
+
+        }
+
+        public void ElderRoleAchievementEvent()
+        {
+            Task.Run(async() =>
+            {
+                if (!OpenedRoles.Elder)
+                {
+                    Achievements.NotDispatchedOnSecondStage++;
+                    if(Achievements.NotDispatchedOnSecondStage == 2)
+                    {
+                        await Bot.SendWithMarkdown2(ChatId,
+                            $"{strings.congrats} {roles.Elder}! {strings.you_can_use}");
+                        await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Elder.ToString()]);
+                        OpenedRoles.OpenElder();
+                    }
+                } 
+            });
+        }
         public void LawyerRoleAchievementEvent()
         {
             if (!OpenedRoles.Lawyer)