Browse Source

Elder opening role

zelpold 4 years ago
parent
commit
c143357405

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

@@ -83,5 +83,10 @@ namespace MafiaTelegramBot.DataBase.Entity
         {
             Dame = true;
         }
+
+        public void OpenElder()
+        {
+            Elder = true;
+        }
     }
 }

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

@@ -326,8 +326,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:
@@ -338,6 +343,8 @@ namespace MafiaTelegramBot.Game.GameRooms
                                         break;
                                     default:
                                         await PlayersCh.Send(strings.villagers_could_not_decide);
+                                        foreach (var alive in VoteUpList) 
+                                            alive.ElderRoleAchievementEvent();
                                         break;
                                 }
                                 break;

+ 17 - 0
MafiaTelegramBot/Game/Player.cs

@@ -245,6 +245,23 @@ namespace MafiaTelegramBot.Game
 
         }
 
+        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()
         {
             Task.Run(async() =>