Преглед изворни кода

Safety player leave from game

Tigran пре 4 година
родитељ
комит
41f9b9292c

+ 5 - 15
MafiaTelegramBot/Controllers/RoomController.cs

@@ -66,21 +66,11 @@ namespace MafiaTelegramBot.Controllers
                 var roomName = player.GetRoomName();
                 var roomKey = RoomEncrypter.GetCode(roomName);
                 if (!await player.RemoveGame()) return ResultCode.UserNotInGame;
-                player.IsPlaying = false;
-                player.IsSpeaker = false;
-                player.IsAlive = true;
-                player.CurrentRole = new NoneRole();
-                player.TurnOrder = -1;
-                OpenedGames[roomKey].Players.Remove(player.Id);
-                if (OpenedGames[roomKey].Players.Count <= Constants.PLAYER_DISABLE_TIMER)
-                    OpenedGames[roomKey].StartTimer();
-                
-                UserDao.GetPlayerById(player.Id).Result.StartTimer();
-                
-                var message = OpenedGames[roomKey].Owner.Id == player.Id
-                    ? $"{player.NickName} ({strings.room_owner}) {strings.leave_from_game}"
-                    : $"{player.NickName} {strings.leave_from_game}";
-                await OpenedGames[roomKey].PlayersCh.SendExcept(player.Id, message);
+                await OpenedGames[roomKey].Leave(player);
+                if (!OpenedGames[roomKey].IsRunning &&
+                    OpenedGames[roomKey].Players.Count <= Constants.PLAYER_DISABLE_TIMER)
+                    await OpenedGames[roomKey].StartTimer();
+                await UserDao.GetPlayerById(player.Id).Result.StartTimer();
                 if (OpenedGames[roomKey].Players.Count >= 0) return ResultCode.CodeOk;
                 RoomEncrypter.RemoveCode(roomName);
                 OpenedGames.Remove(roomKey);

+ 6 - 0
MafiaTelegramBot/CustomCollections/Extensions/DictionaryExtension.cs

@@ -1,3 +1,4 @@
+#nullable enable
 using System.Collections.Generic;
 
 namespace MafiaTelegramBot.CustomCollections.Extensions
@@ -21,5 +22,10 @@ namespace MafiaTelegramBot.CustomCollections.Extensions
             dictionary.Add(k, v);
             return true;
         }
+
+        public static TV? GetIfContains<TK, TV>(this Dictionary<TK, TV> dictionary, TK k)
+        {
+            return dictionary.ContainsKey(k) ? dictionary[k] : default;
+        }
     }
 }

+ 6 - 0
MafiaTelegramBot/CustomCollections/Extensions/ListExtension.cs

@@ -1,3 +1,4 @@
+#nullable enable
 using System.Collections.Generic;
 using System.Runtime.CompilerServices;
 
@@ -28,5 +29,10 @@ namespace MafiaTelegramBot.CustomCollections.Extensions
             list.Add(item);
             return true;
         }
+
+        public static T? GetIfContains<T>(this List<T> list, int index)
+        {
+            return list.Count < index ? list[index] : default;
+        }
     }
 }

+ 112 - 57
MafiaTelegramBot/Game/GameRooms/GameRoom.GameProcess.cs

@@ -132,7 +132,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                 await PlayersCh.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
                 if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);
                 await player.CurrentRole.SpeakAction();
-                await player.CurrentRole.VotingAction();
+                if (Players.ContainsKey(player.Id)) await player.CurrentRole.VotingAction();
                 if (player.IsFirst) firstPlayer = player;
                 else _turnOrder.Enqueue(player);
             }
@@ -173,7 +173,12 @@ namespace MafiaTelegramBot.Game.GameRooms
                 else {
                     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();
+                    if(maxObjects.Count == 1)
+                    {
+                        var currentRole = Players.GetIfContains(maxObjects[0].id)?.CurrentRole;
+                        if (currentRole != null)
+                            await currentRole.Kill();
+                    }
                 }   
                 foreach (var (role, players) in PlayersRole)
                 {
@@ -181,19 +186,25 @@ namespace MafiaTelegramBot.Game.GameRooms
                         foreach (var mafia in players) await mafia.CurrentRole.ApplyNightActionResult();
                     else if (players.Count == 1)
                     {
-                        var player = players[0];
-                        if (role != Roles.Doctor) player.CanBeHealed = true;
-                        await player.CurrentRole.ApplyNightActionResult();
+                        var player = players.GetIfContains(0);
+                        if (role != Roles.Doctor)
+                            if (player != null)
+                                player.CanBeHealed = true;
+                        if (player?.CurrentRole != null) await player.CurrentRole.ApplyNightActionResult();
                     }
                 }
                 var afterKill = Players.Values.ToDictionary(p=>p.Id,p=>p.IsAlive);
                 var message = strings.city_wakes_up;
                 if(afterKill.IsEquals(beforeKill)) message += strings.everyone_survived;
                 else foreach (var (id, alive) in afterKill)
-                        if(beforeKill[id] != alive) {
-                            message += alive
-                            ? $"\n{Players[id].NickName} {strings.will_be_ressurected}"
-                            : $"\n{Players[id].NickName} {strings.will_be_killed}";
+                        if(beforeKill[id] != alive)
+                        {
+                            var player = Players.GetIfContains(id);
+                            message += player != null
+                            ? alive
+                                ? $"\n{player.NickName} {strings.will_be_ressurected}"
+                                : $"\n{player.NickName} {strings.will_be_killed}"
+                            : "";
                             await PlayersCh.SendTo(id, alive ? strings.you_will_be_ressurected : strings.you_will_be_killed);
                         }
                 message += '\n' + mafiaNotAgree;
@@ -229,25 +240,52 @@ namespace MafiaTelegramBot.Game.GameRooms
         {
             await Task.Run(async () =>
             {
-                if (VoteUpList.Count == 1) await VoteUpList[0].CurrentRole.Dispatch();
-                else
+                switch (VoteUpList.Count)
                 {
-                    await DefencePhase(VoteUpList);
-                    var contenders = await CalculateCandidates();
-                    switch (contenders.Count)
+                    case 0:
+                        await PlayersCh.Send(strings.nothing_up_to_vote);
+                        break;
+                    case 1:
+                    {
+                        var player = VoteUpList.GetIfContains(0);
+                        if(player != null ) await player.CurrentRole.Dispatch();
+                        break;
+                    }
+                    default:
                     {
-                        case 1:
-                            await contenders[0].CurrentRole.Dispatch();
-                            break;
-                        case > 1:
-                            await DefencePhase(contenders);
-                            contenders = await CalculateCandidates();
-                            if (contenders.Count == 1) await contenders[0].CurrentRole.Dispatch();
-                            else await PlayersCh.Send(strings.villagers_could_not_decide);
-                            break;
-                        default:
-                            await PlayersCh.Send(strings.villagers_could_not_decide);
-                            break;
+                        await DefencePhase(VoteUpList);
+                        var contenders = await CalculateCandidates();
+                        switch (contenders.Count)
+                        {
+                            case 0:
+                                await PlayersCh.Send(strings.nothing_up_to_dispatch);
+                                break;
+                            case 1:
+                                var player = VoteUpList.GetIfContains(0);
+                                if(player != null ) await player.CurrentRole.Dispatch();
+                                break;
+                            case > 1:
+                                await DefencePhase(contenders);
+                                contenders = await CalculateCandidates();
+                                switch (contenders.Count)
+                                {
+                                    case 0:
+                                        await PlayersCh.Send(strings.nothing_up_to_dispatch);
+                                        break;
+                                    case 1:
+                                        var contender = VoteUpList.GetIfContains(0);
+                                        if(contender != null ) await contender.CurrentRole.Dispatch();
+                                        break;
+                                    default:
+                                        await PlayersCh.Send(strings.villagers_could_not_decide);
+                                        break;
+                                }
+                                break;
+                            default:
+                                await PlayersCh.Send(strings.villagers_could_not_decide);
+                                break;
+                        }
+                        break;
                     }
                 }
                 VoteUpList.Clear();
@@ -259,8 +297,13 @@ namespace MafiaTelegramBot.Game.GameRooms
         {
             var message = strings.results_of_voting;
             foreach (var (playerId, targetId) in VoteKillList.Where(item => item.Value != 0))
-                message += $"\n({Players[playerId].TurnOrder}) {Players[playerId].NickName} {strings.vote_to} " +
-                           $"({Players[targetId].TurnOrder}) {Players[targetId].NickName}";
+            {
+                var player = Players.GetIfContains(playerId);
+                var target = Players.GetIfContains(targetId);
+                message += player != null && target != null
+                    ? $"\n({player.TurnOrder}) {player.NickName} {strings.vote_to} " +
+                           $"({target.TurnOrder}) {target.NickName}" : "";
+            }
             if (message == strings.results_of_voting) message = strings.no_one_voted;
             await PlayersCh.Send(message);
             
@@ -272,7 +315,7 @@ namespace MafiaTelegramBot.Game.GameRooms
             if (votes.Count == 0) return result;
             var max = votes.Max(item => item.count);
             var maxObjects = votes.Where(item => item.count == max);
-            result.AddRange(maxObjects.Select(obj => Players[obj.id]));
+            result.AddRange(maxObjects.Select(obj => Players.GetIfContains(obj.id)).Where(player => player != null));
             VoteUpList.Clear();
             VoteKillList.Clear();
             return result.ToList();
@@ -280,38 +323,44 @@ namespace MafiaTelegramBot.Game.GameRooms
 
         private async Task PutUpVote(long playerId, long targetId, int messageId, bool toKill = false)
         {
-            var player = Players[playerId];
-            if (targetId == 0 && VoteKillList.AddUniqueByKey(playerId, targetId))
-            {
-                if (!toKill) await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.skip_vote}");
-                await PlayersCh.EditTo(player.Id, messageId, strings.you_skip_vote);
-            }
-            else
+            var player = Players.GetIfContains(playerId);
+            if (player != null)
             {
-                var target = Players[targetId];
-                if (!toKill)
+                if (targetId == 0 && VoteKillList.AddUniqueByKey(playerId, targetId))
                 {
-                    if (VoteUpList.AddUnique(target))
+                    if (!toKill) await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.skip_vote}");
+                    await PlayersCh.EditTo(player.Id, messageId, strings.you_skip_vote);
+                }
+                else
+                {
+                    var target = Players.GetIfContains(targetId);
+                    if (target != null)
                     {
-                        if (playerId != targetId)
+                        if (!toKill)
                         {
-                            await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.put_up_vote_to} {target.NickName}");
-                            await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
-                        }
-                        else
+                            if (VoteUpList.AddUnique(target))
+                            {
+                                if (playerId != targetId)
+                                {
+                                    await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.put_up_vote_to} {target.NickName}");
+                                    await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
+                                }
+                                else
+                                {
+                                    await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.vote_to_self}");
+                                    await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
+                                }
+                            }
+                        } 
+                        else if (VoteKillList.AddUniqueByKey(playerId, targetId))
                         {
-                            await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.vote_to_self}");
-                            await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
+                            if (playerId != targetId)
+                                await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
+                            else
+                                await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
                         }
                     }
-                } 
-                else if (VoteKillList.AddUniqueByKey(playerId, targetId))
-                {
-                    if (playerId != targetId)
-                        await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
-                    else
-                        await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
-                }
+                }   
             }
         }
 
@@ -324,7 +373,9 @@ namespace MafiaTelegramBot.Game.GameRooms
                 foreach (var (_, value) in PlayersRole)
                 {
                     if (value.Count != 1) continue;
-                    var yellowResult = await value[0].CurrentRole.IsWon();
+                    var yellowPlayer = value.GetIfContains(0);
+                    if (yellowPlayer == null) continue;
+                    var yellowResult = await yellowPlayer.CurrentRole.IsWon();
                     if (yellowResult != "") additionalResult += "\n" + yellowResult;
                 }
 
@@ -338,8 +389,12 @@ namespace MafiaTelegramBot.Game.GameRooms
                     await PlayersCh.Send(strings.mafia_won + additionalResult, exceptDied: false);
                     await PlayersCh.SendSticker(Stickers.Sticker["MafiaWins"]);
                 }
-                
-                if (PlayersRole.ContainsKey(Roles.Fool) && PlayersRole[Roles.Fool].Count == 1) await PlayersRole[Roles.Fool][0].CurrentRole.IsWon();
+
+                if (PlayersRole.ContainsKey(Roles.Fool) && PlayersRole[Roles.Fool].Count == 1)
+                {
+                    var player = PlayersRole[Roles.Fool].GetIfContains(0);
+                    if(player != null) await player.CurrentRole.IsWon();
+                }
                 var rolesMessage = strings.in_this_game_roles;
                 var sortedPLayers = Players.Values.ToList();
                 sortedPLayers.Sort((x, y) => x.TurnOrder - y.TurnOrder);

+ 5 - 2
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageChannels.cs

@@ -1,5 +1,6 @@
 using System.Linq;
 using System.Threading.Tasks;
+using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 using Telegram.Bot.Types;
@@ -29,13 +30,15 @@ namespace MafiaTelegramBot.Game.GameRooms
         {
             public async Task<Message> SendTo(long userId, string message, IReplyMarkup replyMarkup = null)
             {
-                if(Room.Players.ContainsKey(userId)) return await Bot.SendWithMarkdown2(Room.Players[userId].ChatId, message, replyMarkup);
+                var player = Room.Players.GetIfContains(userId);
+                if(player != null) return await Bot.SendWithMarkdown2(player.ChatId, message, replyMarkup);
                 return new Message();
             }
             
             public async Task EditTo(long userId, int messageId, string message, InlineKeyboardMarkup replyMarkup = null)
             {
-                if(Room.Players.ContainsKey(userId)) await Bot.EditMessageAsync(Room.Players[userId].ChatId, messageId, message, replyMarkup);
+                var player = Room.Players.GetIfContains(userId);
+                if(player != null) await Bot.EditMessageAsync(player.ChatId, messageId, message, replyMarkup);
             }
             
             public override async Task Send(string message, IReplyMarkup replyMarkup = null,

+ 3 - 1
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageHandler.cs

@@ -1,6 +1,7 @@
 using System.Linq;
 using System.Threading.Tasks;
 using MafiaTelegramBot.Controllers;
+using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 using Telegram.Bot.Types;
@@ -22,7 +23,8 @@ namespace MafiaTelegramBot.Game.GameRooms
             {
                 var text = update.Message.Text;
                 var userId = update.Message.From.Id;
-                var player = _room.Players[userId];
+                var player = _room.Players.GetIfContains(userId);
+                if (player == null) return new Message();
                 if (text == keyboard.look_players_list) await LookPlayers(player);
                 else if (text == keyboard.leave) await Leave(player);
                 else if (text == keyboard.end_turn)

+ 23 - 3
MafiaTelegramBot/Game/GameRooms/GameRoom.Structure.cs

@@ -2,6 +2,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using System.Timers;
+using MafiaTelegramBot.Game.GameRoles;
 using MafiaTelegramBot.Resources;
 
 namespace MafiaTelegramBot.Game.GameRooms
@@ -18,8 +19,6 @@ namespace MafiaTelegramBot.Game.GameRooms
         public string RoomName { get; init; } = "NoNameRoom";
         public Player Owner { get; init; } = new();
 
-        private int _largeVote; //большее из количеств голосов за игроков 
-
         private Timer WaitingPlayers;
         
         public readonly List<Player> VoteUpList = new();
@@ -58,7 +57,28 @@ namespace MafiaTelegramBot.Game.GameRooms
 
         public bool IsFilled()
         {
-            return Players.Count == MaxPlayers;
+            return Players.Count >= MaxPlayers;
+        }
+
+        public async Task Leave(Player player)
+        {
+            Players.Remove(player.Id);
+            var message = Owner.Id == player.Id
+                ? $"{player.NickName} ({strings.room_owner}) {strings.leave_from_game}"
+                : $"{player.NickName} {strings.leave_from_game}";
+            await PlayersCh.Send(message);
+            if (IsRunning)
+            {
+                if (IsDay && player.IsSpeaker) player.CurrentRole.TalkingActionComplete.Set();
+                if (IsDay && !player.IsSpeaker) player.CurrentRole.VoteActionComplete.Set();
+                VoteUpList.RemoveAll(p=> p.Id == player.Id);
+                VoteKillList.Remove(player.Id);
+                var voteKillCopy = VoteKillList;
+                foreach (var (k, v) in voteKillCopy)
+                    if (v == player.Id) VoteKillList.Remove(k);
+                PlayersRole[player.CurrentRole.RoleKey].Remove(player);
+            }
+            player.ResetState();
         }
     }
 }

+ 296 - 716
MafiaTelegramBot/Resources/strings.Designer.cs

@@ -1,7 +1,6 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -12,46 +11,32 @@ namespace MafiaTelegramBot {
     using System;
     
     
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class strings {
         
-        private static global::System.Resources.ResourceManager resourceMan;
+        private static System.Resources.ResourceManager resourceMan;
         
-        private static global::System.Globalization.CultureInfo resourceCulture;
+        private static System.Globalization.CultureInfo resourceCulture;
         
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
         internal strings() {
         }
         
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static System.Resources.ResourceManager ResourceManager {
             get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MafiaTelegramBot.Resources.strings", typeof(strings).Assembly);
+                if (object.Equals(null, resourceMan)) {
+                    System.Resources.ResourceManager temp = new System.Resources.ResourceManager("MafiaTelegramBot.Resources.strings", typeof(strings).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
             }
         }
         
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static System.Globalization.CultureInfo Culture {
             get {
                 return resourceCulture;
             }
@@ -60,1254 +45,849 @@ namespace MafiaTelegramBot {
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Приватная.
-        /// </summary>
-        internal static string _private {
+        internal static string start_message {
             get {
-                return ResourceManager.GetString("private", resourceCulture);
+                return ResourceManager.GetString("start_message", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Публичная.
-        /// </summary>
-        internal static string _public {
+        internal static string statistics_for {
             get {
-                return ResourceManager.GetString("public", resourceCulture);
+                return ResourceManager.GetString("statistics_for", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Действие заблокировано.
-        /// </summary>
-        internal static string activity_blocked {
+        internal static string games_count {
             get {
-                return ResourceManager.GetString("activity_blocked", resourceCulture);
+                return ResourceManager.GetString("games_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to живой.
-        /// </summary>
-        internal static string alive {
+        internal static string wins_count {
             get {
-                return ResourceManager.GetString("alive", resourceCulture);
+                return ResourceManager.GetString("wins_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Автоматически была выбрана цель:.
-        /// </summary>
-        internal static string automatically_choosed_target {
+        internal static string winrate {
             get {
-                return ResourceManager.GetString("automatically_choosed_target", resourceCulture);
+                return ResourceManager.GetString("winrate", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Игра начинается....
-        /// </summary>
-        internal static string bot_starting_game {
+        internal static string shop {
             get {
-                return ResourceManager.GetString("bot_starting_game", resourceCulture);
+                return ResourceManager.GetString("shop", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to но он оказался старейшийной.
-        /// </summary>
-        internal static string but_he_is_elder {
+        internal static string my_roles {
             get {
-                return ResourceManager.GetString("but_he_is_elder", resourceCulture);
+                return ResourceManager.GetString("my_roles", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сменить имя.
-        /// </summary>
-        internal static string change_name {
+        internal static string settings {
             get {
-                return ResourceManager.GetString("change_name", resourceCulture);
+                return ResourceManager.GetString("settings", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Изменить рассадку.
-        /// </summary>
-        internal static string change_roles {
+        internal static string your_name {
             get {
-                return ResourceManager.GetString("change_roles", resourceCulture);
+                return ResourceManager.GetString("your_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите режим игры.
-        /// </summary>
-        internal static string choose_game_type {
+        internal static string change_name {
             get {
-                return ResourceManager.GetString("choose_game_type", resourceCulture);
+                return ResourceManager.GetString("change_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите цель для блокировки.
-        /// </summary>
-        internal static string choose_player_to_block_night {
+        internal static string enter_your_name {
             get {
-                return ResourceManager.GetString("choose_player_to_block_night", resourceCulture);
+                return ResourceManager.GetString("enter_your_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите игрока для проверки роли.
-        /// </summary>
-        internal static string choose_player_to_check_role {
+        internal static string name_updated {
             get {
-                return ResourceManager.GetString("choose_player_to_check_role", resourceCulture);
+                return ResourceManager.GetString("name_updated", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите игрока для лечения.
-        /// </summary>
-        internal static string choose_player_to_heal {
+        internal static string command_not_found {
             get {
-                return ResourceManager.GetString("choose_player_to_heal", resourceCulture);
+                return ResourceManager.GetString("command_not_found", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите свою жертву.
-        /// </summary>
-        internal static string choose_player_to_kill {
+        internal static string settings_room {
             get {
-                return ResourceManager.GetString("choose_player_to_kill", resourceCulture);
+                return ResourceManager.GetString("settings_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите цель для защиты.
-        /// </summary>
-        internal static string choose_target_to_protect {
+        internal static string choose_game_type {
             get {
-                return ResourceManager.GetString("choose_target_to_protect", resourceCulture);
+                return ResourceManager.GetString("choose_game_type", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите тип комнаты.
-        /// </summary>
-        internal static string choose_type_room {
+        internal static string enter_room_name {
             get {
-                return ResourceManager.GetString("choose_type_room", resourceCulture);
+                return ResourceManager.GetString("enter_room_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Город засыпает.
-        /// </summary>
-        internal static string city_falls_asleep {
+        internal static string room_with_name {
             get {
-                return ResourceManager.GetString("city_falls_asleep", resourceCulture);
+                return ResourceManager.GetString("room_with_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Город просыпается и обнаруживает, что... .
-        /// </summary>
-        internal static string city_wakes_up {
+        internal static string was_created {
             get {
-                return ResourceManager.GetString("city_wakes_up", resourceCulture);
+                return ResourceManager.GetString("was_created", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Команда не найдена.
-        /// </summary>
-        internal static string command_not_found {
+        internal static string unexpected_error {
             get {
-                return ResourceManager.GetString("command_not_found", resourceCulture);
+                return ResourceManager.GetString("unexpected_error", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to подключился к игре.
-        /// </summary>
-        internal static string connected_to_game {
+        internal static string game_already_exists {
             get {
-                return ResourceManager.GetString("connected_to_game", resourceCulture);
+                return ResourceManager.GetString("game_already_exists", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Запустить игру или настроить рассадку?.
-        /// </summary>
-        internal static string continue_question {
+        internal static string leave_from_game {
             get {
-                return ResourceManager.GetString("continue_question", resourceCulture);
+                return ResourceManager.GetString("leave_from_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Текущая рассадка в комнате:.
-        /// </summary>
-        internal static string current_enabled_roles {
+        internal static string user_not_in_game {
             get {
-                return ResourceManager.GetString("current_enabled_roles", resourceCulture);
+                return ResourceManager.GetString("user_not_in_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Дама заблокировала вас. Вы не сможете разговаривать и голосовать в этот день..
-        /// </summary>
-        internal static string dame_block_you {
+        internal static string standart {
             get {
-                return ResourceManager.GetString("dame_block_you", resourceCulture);
+                return ResourceManager.GetString("standart", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Дневное обсуждение окончено.
-        /// </summary>
-        internal static string day_discussion_ended {
+        internal static string extended {
             get {
-                return ResourceManager.GetString("day_discussion_ended", resourceCulture);
+                return ResourceManager.GetString("extended", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to мертвый.
-        /// </summary>
-        internal static string died {
+        internal static string secret_key_is {
             get {
-                return ResourceManager.GetString("died", resourceCulture);
+                return ResourceManager.GetString("secret_key_is", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to отключен.
-        /// </summary>
-        internal static string disabled {
+        internal static string choose_type_room {
             get {
-                return ResourceManager.GetString("disabled", resourceCulture);
+                return ResourceManager.GetString("choose_type_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Время обсуждения! У всех игроков есть минута, чтобы что-то сказать..
-        /// </summary>
-        internal static string disscution_time {
+        internal static string enter_private_code {
             get {
-                return ResourceManager.GetString("disscution_time", resourceCulture);
+                return ResourceManager.GetString("enter_private_code", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Если не наберется минимальное количество игроков, комната будет распущена через 2 минуты!.
-        /// </summary>
-        internal static string dissolve_warning {
+        internal static string room_is_filled {
             get {
-                return ResourceManager.GetString("dissolve_warning", resourceCulture);
+                return ResourceManager.GetString("room_is_filled", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to включен.
-        /// </summary>
-        internal static string enabled {
+        internal static string user_already_in_game {
             get {
-                return ResourceManager.GetString("enabled", resourceCulture);
+                return ResourceManager.GetString("user_already_in_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Введите код от комнаты.
-        /// </summary>
-        internal static string enter_private_code {
+        internal static string successful_entry_into_room {
             get {
-                return ResourceManager.GetString("enter_private_code", resourceCulture);
+                return ResourceManager.GetString("successful_entry_into_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Введите название комнаты.
-        /// </summary>
-        internal static string enter_room_name {
+        internal static string users_list {
             get {
-                return ResourceManager.GetString("enter_room_name", resourceCulture);
+                return ResourceManager.GetString("users_list", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Введите ваше имя.
-        /// </summary>
-        internal static string enter_your_name {
+        internal static string users_list_empty {
             get {
-                return ResourceManager.GetString("enter_your_name", resourceCulture);
+                return ResourceManager.GetString("users_list_empty", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to все игроки остались в живых!.
-        /// </summary>
-        internal static string everyone_survived {
+        internal static string max_capacity_message {
             get {
-                return ResourceManager.GetString("everyone_survived", resourceCulture);
+                return ResourceManager.GetString("max_capacity_message", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Расширенный.
-        /// </summary>
-        internal static string extended {
+        internal static string prefer_leave_from_room {
             get {
-                return ResourceManager.GetString("extended", resourceCulture);
+                return ResourceManager.GetString("prefer_leave_from_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Пока мирные жители спали, в городе завелась мафия. Город собрался на главной площади и жители решают, кто среди них предатель..
-        /// </summary>
-        internal static string first_day_message {
+        internal static string room_does_not_exists {
             get {
-                return ResourceManager.GetString("first_day_message", resourceCulture);
+                return ResourceManager.GetString("room_does_not_exists", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната с таким именем уже существует.
-        /// </summary>
-        internal static string game_already_exists {
+        internal static string public_rooms_are_not_exist {
             get {
-                return ResourceManager.GetString("game_already_exists", resourceCulture);
+                return ResourceManager.GetString("public_rooms_are_not_exist", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Игра уже запущена.
-        /// </summary>
-        internal static string game_already_running {
+        internal static string rooms {
             get {
-                return ResourceManager.GetString("game_already_running", resourceCulture);
+                return ResourceManager.GetString("rooms", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Процесс подготовки комнаты начался.
-        /// </summary>
-        internal static string game_process_started {
+        internal static string too_many_players {
             get {
-                return ResourceManager.GetString("game_process_started", resourceCulture);
+                return ResourceManager.GetString("too_many_players", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Число игр:.
-        /// </summary>
-        internal static string games_count {
+        internal static string too_few_players {
             get {
-                return ResourceManager.GetString("games_count", resourceCulture);
+                return ResourceManager.GetString("too_few_players", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Проститутка переспала с вами. Ваши действия этой ночью ограничены..
-        /// </summary>
-        internal static string hooker_block_you {
+        internal static string game_already_running {
             get {
-                return ResourceManager.GetString("hooker_block_you", resourceCulture);
+                return ResourceManager.GetString("game_already_running", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to В этой игре участвовали:.
-        /// </summary>
-        internal static string in_this_game_roles {
+        internal static string minimum_players_count {
             get {
-                return ResourceManager.GetString("in_this_game_roles", resourceCulture);
+                return ResourceManager.GetString("minimum_players_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to В этой игре имеются следующие роли:.
-        /// </summary>
-        internal static string in_this_game_we_have {
+        internal static string maximum_players_count {
             get {
-                return ResourceManager.GetString("in_this_game_we_have", resourceCulture);
+                return ResourceManager.GetString("maximum_players_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to выдается посмертная минута..
-        /// </summary>
-        internal static string issued_posthumous_minute {
+        internal static string maximum_was_set_to {
             get {
-                return ResourceManager.GetString("issued_posthumous_minute", resourceCulture);
+                return ResourceManager.GetString("maximum_was_set_to", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Исключить.
-        /// </summary>
-        internal static string kick {
+        internal static string players {
             get {
-                return ResourceManager.GetString("kick", resourceCulture);
+                return ResourceManager.GetString("players", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Исключить пользователя.
-        /// </summary>
-        internal static string kick_user {
+        internal static string kick {
             get {
-                return ResourceManager.GetString("kick_user", resourceCulture);
+                return ResourceManager.GetString("kick", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to покинул игру.
-        /// </summary>
-        internal static string leave_from_game {
+        internal static string kick_user {
             get {
-                return ResourceManager.GetString("leave_from_game", resourceCulture);
+                return ResourceManager.GetString("kick_user", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ссылка для подключения к комнате.
-        /// </summary>
-        internal static string link {
+        internal static string you_were_kicked {
             get {
-                return ResourceManager.GetString("link", resourceCulture);
+                return ResourceManager.GetString("you_were_kicked", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Мафия не смогла выбрать жертву.
-        /// </summary>
-        internal static string mafia_not_kill_message {
+        internal static string room_dissolved {
             get {
-                return ResourceManager.GetString("mafia_not_kill_message", resourceCulture);
+                return ResourceManager.GetString("room_dissolved", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ура! Победила мафия....
-        /// </summary>
-        internal static string mafia_won {
+        internal static string timer {
             get {
-                return ResourceManager.GetString("mafia_won", resourceCulture);
+                return ResourceManager.GetString("timer", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Максимальное кол-во игроков.
-        /// </summary>
-        internal static string max_capacity_message {
+        internal static string enabled {
             get {
-                return ResourceManager.GetString("max_capacity_message", resourceCulture);
+                return ResourceManager.GetString("enabled", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Максимум - 16 игроков.
-        /// </summary>
-        internal static string maximum_players_count {
+        internal static string disabled {
             get {
-                return ResourceManager.GetString("maximum_players_count", resourceCulture);
+                return ResourceManager.GetString("disabled", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Максимум был установлен на.
-        /// </summary>
-        internal static string maximum_was_set_to {
+        internal static string _public {
             get {
-                return ResourceManager.GetString("maximum_was_set_to", resourceCulture);
+                return ResourceManager.GetString("public", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Минимум - 6 игроков.
-        /// </summary>
-        internal static string minimum_players_count {
+        internal static string _private {
             get {
-                return ResourceManager.GetString("minimum_players_count", resourceCulture);
+                return ResourceManager.GetString("private", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Мои роли.
-        /// </summary>
-        internal static string my_roles {
+        internal static string bot_starting_game {
             get {
-                return ResourceManager.GetString("my_roles", resourceCulture);
+                return ResourceManager.GetString("bot_starting_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Имя было обновлено на.
-        /// </summary>
-        internal static string name_updated {
+        internal static string game_process_started {
             get {
-                return ResourceManager.GetString("name_updated", resourceCulture);
+                return ResourceManager.GetString("game_process_started", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Никто ни за кого не проголосовал.
-        /// </summary>
-        internal static string no_one_voted {
+        internal static string connected_to_game {
             get {
-                return ResourceManager.GetString("no_one_voted", resourceCulture);
+                return ResourceManager.GetString("connected_to_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Данная команда не поддерживается во время игры.
-        /// </summary>
-        internal static string not_supported_in_game {
+        internal static string your_turn_order {
             get {
-                return ResourceManager.GetString("not_supported_in_game", resourceCulture);
+                return ResourceManager.GetString("your_turn_order", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вам некого лечить этой ночью.
-        /// </summary>
-        internal static string nothing_to_heal {
+        internal static string your_role {
             get {
-                return ResourceManager.GetString("nothing_to_heal", resourceCulture);
+                return ResourceManager.GetString("your_role", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сейчас оправдывается.
-        /// </summary>
-        internal static string now_defence {
+        internal static string thanks_for_game {
             get {
-                return ResourceManager.GetString("now_defence", resourceCulture);
+                return ResourceManager.GetString("thanks_for_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сейчас не ваш ход.
-        /// </summary>
-        internal static string now_is_not_your_turn {
+        internal static string link {
             get {
-                return ResourceManager.GetString("now_is_not_your_turn", resourceCulture);
+                return ResourceManager.GetString("link", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сейчас ходит.
-        /// </summary>
-        internal static string now_turn {
+        internal static string you_leave_from_game {
             get {
-                return ResourceManager.GetString("now_turn", resourceCulture);
+                return ResourceManager.GetString("you_leave_from_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сейчас вы не можете разговаривать.
-        /// </summary>
-        internal static string now_you_cant_speak {
+        internal static string your_teammates {
             get {
-                return ResourceManager.GetString("now_you_cant_speak", resourceCulture);
+                return ResourceManager.GetString("your_teammates", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to но у него есть алиби.
-        /// </summary>
-        internal static string player_not_died_he_has_alibi {
+        internal static string first_day_message {
             get {
-                return ResourceManager.GetString("player_not_died_he_has_alibi", resourceCulture);
+                return ResourceManager.GetString("first_day_message", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to игроков.
-        /// </summary>
-        internal static string players {
+        internal static string city_falls_asleep {
             get {
-                return ResourceManager.GetString("players", resourceCulture);
+                return ResourceManager.GetString("city_falls_asleep", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Количество игроков.
-        /// </summary>
-        internal static string players_count {
+        internal static string now_turn {
             get {
-                return ResourceManager.GetString("players_count", resourceCulture);
+                return ResourceManager.GetString("now_turn", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Список игроков.
-        /// </summary>
-        internal static string players_list {
+        internal static string your_turn_ended {
             get {
-                return ResourceManager.GetString("players_list", resourceCulture);
+                return ResourceManager.GetString("your_turn_ended", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Количество игроков не равно количеству ролей.
-        /// </summary>
-        internal static string players_not_equal_roles {
+        internal static string now_is_not_your_turn {
             get {
-                return ResourceManager.GetString("players_not_equal_roles", resourceCulture);
+                return ResourceManager.GetString("now_is_not_your_turn", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сначала покиньте комнату.
-        /// </summary>
-        internal static string prefer_leave_from_room {
+        internal static string your_turn {
             get {
-                return ResourceManager.GetString("prefer_leave_from_room", resourceCulture);
+                return ResourceManager.GetString("your_turn", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Нет свободных публичных комнат.
-        /// </summary>
-        internal static string public_rooms_are_not_exist {
+        internal static string players_list {
             get {
-                return ResourceManager.GetString("public_rooms_are_not_exist", resourceCulture);
+                return ResourceManager.GetString("players_list", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Кого вы хотите выставить на голосование?.
-        /// </summary>
-        internal static string put_up_vote {
+        internal static string you_now_died {
             get {
-                return ResourceManager.GetString("put_up_vote", resourceCulture);
+                return ResourceManager.GetString("you_now_died", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to выставил на голосование игрока.
-        /// </summary>
-        internal static string put_up_vote_to {
+        internal static string alive {
             get {
-                return ResourceManager.GetString("put_up_vote_to", resourceCulture);
+                return ResourceManager.GetString("alive", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Итоги голосования:.
-        /// </summary>
-        internal static string results_of_voting {
+        internal static string died {
             get {
-                return ResourceManager.GetString("results_of_voting", resourceCulture);
+                return ResourceManager.GetString("died", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Роль игрока.
-        /// </summary>
-        internal static string role_of_your_target {
+        internal static string room_owner {
             get {
-                return ResourceManager.GetString("role_of_your_target", resourceCulture);
+                return ResourceManager.GetString("room_owner", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната распущена.
-        /// </summary>
-        internal static string room_dissolved {
+        internal static string put_up_vote {
             get {
-                return ResourceManager.GetString("room_dissolved", resourceCulture);
+                return ResourceManager.GetString("put_up_vote", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната не существует.
-        /// </summary>
-        internal static string room_does_not_exists {
+        internal static string skip_vote {
             get {
-                return ResourceManager.GetString("room_does_not_exists", resourceCulture);
+                return ResourceManager.GetString("skip_vote", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната заполнена.
-        /// </summary>
-        internal static string room_is_filled {
+        internal static string skip {
             get {
-                return ResourceManager.GetString("room_is_filled", resourceCulture);
+                return ResourceManager.GetString("skip", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to владелец комнаты.
-        /// </summary>
-        internal static string room_owner {
+        internal static string user_not_choose {
             get {
-                return ResourceManager.GetString("room_owner", resourceCulture);
+                return ResourceManager.GetString("user_not_choose", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната с именем.
-        /// </summary>
-        internal static string room_with_name {
+        internal static string not_supported_in_game {
             get {
-                return ResourceManager.GetString("room_with_name", resourceCulture);
+                return ResourceManager.GetString("not_supported_in_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комнаты.
-        /// </summary>
-        internal static string rooms {
+        internal static string you_skip_vote {
             get {
-                return ResourceManager.GetString("rooms", resourceCulture);
+                return ResourceManager.GetString("you_skip_vote", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Запустить игру.
-        /// </summary>
-        internal static string run_game {
+        internal static string you_vote_player {
             get {
-                return ResourceManager.GetString("run_game", resourceCulture);
+                return ResourceManager.GetString("you_vote_player", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Секретный код для подключения к комнате.
-        /// </summary>
-        internal static string secret_key_is {
+        internal static string put_up_vote_to {
             get {
-                return ResourceManager.GetString("secret_key_is", resourceCulture);
+                return ResourceManager.GetString("put_up_vote_to", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Настройки.
-        /// </summary>
-        internal static string settings {
+        internal static string vote_to_self {
             get {
-                return ResourceManager.GetString("settings", resourceCulture);
+                return ResourceManager.GetString("vote_to_self", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Задайте настройки комнаты.
-        /// </summary>
-        internal static string settings_room {
+        internal static string you_vote_to_self {
             get {
-                return ResourceManager.GetString("settings_room", resourceCulture);
+                return ResourceManager.GetString("you_vote_to_self", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Магазин.
-        /// </summary>
-        internal static string shop {
+        internal static string choose_player_to_check_role {
             get {
-                return ResourceManager.GetString("shop", resourceCulture);
+                return ResourceManager.GetString("choose_player_to_check_role", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Пропустить.
-        /// </summary>
-        internal static string skip {
+        internal static string you_have_not_choosen_target {
             get {
-                return ResourceManager.GetString("skip", resourceCulture);
+                return ResourceManager.GetString("you_have_not_choosen_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to пропустил голосование.
-        /// </summary>
-        internal static string skip_vote {
+        internal static string you_choose_target {
             get {
-                return ResourceManager.GetString("skip_vote", resourceCulture);
+                return ResourceManager.GetString("you_choose_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Стандартный.
-        /// </summary>
-        internal static string standart {
+        internal static string role_of_your_target {
             get {
-                return ResourceManager.GetString("standart", resourceCulture);
+                return ResourceManager.GetString("role_of_your_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Что вы хотите сделать?.
-        /// </summary>
-        internal static string start_message {
+        internal static string choose_player_to_heal {
             get {
-                return ResourceManager.GetString("start_message", resourceCulture);
+                return ResourceManager.GetString("choose_player_to_heal", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Статистика для.
-        /// </summary>
-        internal static string statistics_for {
+        internal static string you_turn_say {
             get {
-                return ResourceManager.GetString("statistics_for", resourceCulture);
+                return ResourceManager.GetString("you_turn_say", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы были добавлены в комнату.
-        /// </summary>
-        internal static string successful_entry_into_room {
+        internal static string dame_block_you {
             get {
-                return ResourceManager.GetString("successful_entry_into_room", resourceCulture);
+                return ResourceManager.GetString("dame_block_you", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Игра окончена, спасибо за игру!.
-        /// </summary>
-        internal static string thanks_for_game {
+        internal static string hooker_block_you {
             get {
-                return ResourceManager.GetString("thanks_for_game", resourceCulture);
+                return ResourceManager.GetString("hooker_block_you", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Дурачок оказался там, где ему и следовало.
-        /// </summary>
-        internal static string the_fool_won {
+        internal static string nothing_to_heal {
             get {
-                return ResourceManager.GetString("the_fool_won", resourceCulture);
+                return ResourceManager.GetString("nothing_to_heal", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Время вышло.
-        /// </summary>
-        internal static string time_out {
+        internal static string city_wakes_up {
             get {
-                return ResourceManager.GetString("time_out", resourceCulture);
+                return ResourceManager.GetString("city_wakes_up", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Таймер.
-        /// </summary>
-        internal static string timer {
+        internal static string everyone_survived {
             get {
-                return ResourceManager.GetString("timer", resourceCulture);
+                return ResourceManager.GetString("everyone_survived", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Игроку.
-        /// </summary>
-        internal static string to_player {
+        internal static string you_have_ten_seconds {
             get {
-                return ResourceManager.GetString("to_player", resourceCulture);
+                return ResourceManager.GetString("you_have_ten_seconds", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Недостаточно игроков для старта игры.
-        /// </summary>
-        internal static string too_few_players {
+        internal static string choose_player_to_kill {
             get {
-                return ResourceManager.GetString("too_few_players", resourceCulture);
+                return ResourceManager.GetString("choose_player_to_kill", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Количество игроков превышает максимальное.
-        /// </summary>
-        internal static string too_many_players {
+        internal static string villagers_won {
             get {
-                return ResourceManager.GetString("too_many_players", resourceCulture);
+                return ResourceManager.GetString("villagers_won", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Произошла неожиданная ошибка... Попробуйте ещё раз..
-        /// </summary>
-        internal static string unexpected_error {
+        internal static string mafia_won {
             get {
-                return ResourceManager.GetString("unexpected_error", resourceCulture);
+                return ResourceManager.GetString("mafia_won", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы уже находитесь в игре.
-        /// </summary>
-        internal static string user_already_in_game {
+        internal static string in_this_game_roles {
             get {
-                return ResourceManager.GetString("user_already_in_game", resourceCulture);
+                return ResourceManager.GetString("in_this_game_roles", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Иначе вы будете выставлены на голосование.
-        /// </summary>
-        internal static string user_not_choose {
+        internal static string now_defence {
             get {
-                return ResourceManager.GetString("user_not_choose", resourceCulture);
+                return ResourceManager.GetString("now_defence", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы не находитесь сейчас в игре.
-        /// </summary>
-        internal static string user_not_in_game {
+        internal static string time_out {
             get {
-                return ResourceManager.GetString("user_not_in_game", resourceCulture);
+                return ResourceManager.GetString("time_out", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Участники в комнате.
-        /// </summary>
-        internal static string users_list {
+        internal static string villagers_could_not_decide {
             get {
-                return ResourceManager.GetString("users_list", resourceCulture);
+                return ResourceManager.GetString("villagers_could_not_decide", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to В комнате нет игроков, кроме Вас.
-        /// </summary>
-        internal static string users_list_empty {
+        internal static string to_player {
             get {
-                return ResourceManager.GetString("users_list_empty", resourceCulture);
+                return ResourceManager.GetString("to_player", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Жители так и не смогли решить кого казнить....
-        /// </summary>
-        internal static string villagers_could_not_decide {
+        internal static string issued_posthumous_minute {
             get {
-                return ResourceManager.GetString("villagers_could_not_decide", resourceCulture);
+                return ResourceManager.GetString("issued_posthumous_minute", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Жители хотели повесить игрока.
-        /// </summary>
         internal static string villagers_want_dispatch {
             get {
                 return ResourceManager.GetString("villagers_want_dispatch", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ура! Победили мирные жители....
-        /// </summary>
-        internal static string villagers_won {
+        internal static string but_he_is_elder {
             get {
-                return ResourceManager.GetString("villagers_won", resourceCulture);
+                return ResourceManager.GetString("but_he_is_elder", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to проголосовал против.
-        /// </summary>
-        internal static string vote_to {
+        internal static string activity_blocked {
             get {
-                return ResourceManager.GetString("vote_to", resourceCulture);
+                return ResourceManager.GetString("activity_blocked", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to выставил самого себя..
-        /// </summary>
-        internal static string vote_to_self {
+        internal static string you_heal_yourself {
             get {
-                return ResourceManager.GetString("vote_to_self", resourceCulture);
+                return ResourceManager.GetString("you_heal_yourself", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to была создана.
-        /// </summary>
-        internal static string was_created {
+        internal static string change_roles {
             get {
-                return ResourceManager.GetString("was_created", resourceCulture);
+                return ResourceManager.GetString("change_roles", resourceCulture);
+            }
+        }
+        
+        internal static string players_count {
+            get {
+                return ResourceManager.GetString("players_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Что вы хотите настроить?.
-        /// </summary>
         internal static string what_settings {
             get {
                 return ResourceManager.GetString("what_settings", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to был убит.
-        /// </summary>
-        internal static string will_be_killed {
+        internal static string current_enabled_roles {
             get {
-                return ResourceManager.GetString("will_be_killed", resourceCulture);
+                return ResourceManager.GetString("current_enabled_roles", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to был воскрешен.
-        /// </summary>
-        internal static string will_be_ressurected {
+        internal static string choose_player_to_block_night {
             get {
-                return ResourceManager.GetString("will_be_ressurected", resourceCulture);
+                return ResourceManager.GetString("choose_player_to_block_night", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Винрейт:.
-        /// </summary>
-        internal static string winrate {
+        internal static string you_blocked {
             get {
-                return ResourceManager.GetString("winrate", resourceCulture);
+                return ResourceManager.GetString("you_blocked", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Число побед:.
-        /// </summary>
-        internal static string wins_count {
+        internal static string now_you_cant_speak {
             get {
-                return ResourceManager.GetString("wins_count", resourceCulture);
+                return ResourceManager.GetString("now_you_cant_speak", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы.
-        /// </summary>
-        internal static string you {
+        internal static string will_be_ressurected {
             get {
-                return ResourceManager.GetString("you", resourceCulture);
+                return ResourceManager.GetString("will_be_ressurected", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы заблокированы.
-        /// </summary>
-        internal static string you_blocked {
+        internal static string will_be_killed {
             get {
-                return ResourceManager.GetString("you_blocked", resourceCulture);
+                return ResourceManager.GetString("will_be_killed", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы выбрали игрока.
-        /// </summary>
-        internal static string you_choose_target {
+        internal static string choose_target_to_protect {
             get {
-                return ResourceManager.GetString("you_choose_target", resourceCulture);
+                return ResourceManager.GetString("choose_target_to_protect", resourceCulture);
+            }
+        }
+        
+        internal static string players_not_equal_roles {
+            get {
+                return ResourceManager.GetString("players_not_equal_roles", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to У вас есть 90 секунд на оправдание.
-        /// </summary>
         internal static string you_have_eigty_seconds_to_defence {
             get {
                 return ResourceManager.GetString("you_have_eigty_seconds_to_defence", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы не выбрали цель.
-        /// </summary>
-        internal static string you_have_not_choosen_target {
+        internal static string player_not_died_he_has_alibi {
             get {
-                return ResourceManager.GetString("you_have_not_choosen_target", resourceCulture);
+                return ResourceManager.GetString("player_not_died_he_has_alibi", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to У вас есть десять секунд, чтобы выставить игрока на голосование.
-        /// </summary>
-        internal static string you_have_ten_seconds {
+        internal static string in_this_game_we_have {
             get {
-                return ResourceManager.GetString("you_have_ten_seconds", resourceCulture);
+                return ResourceManager.GetString("in_this_game_we_have", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to У вас есть 10 секунд, чтобы проголосовать за игрока.
-        /// </summary>
-        internal static string you_have_ten_seconds_to_vote {
+        internal static string mafia_not_kill_message {
             get {
-                return ResourceManager.GetString("you_have_ten_seconds_to_vote", resourceCulture);
+                return ResourceManager.GetString("mafia_not_kill_message", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы вылечили сами себя.
-        /// </summary>
-        internal static string you_heal_yourself {
+        internal static string you_will_be_ressurected {
             get {
-                return ResourceManager.GetString("you_heal_yourself", resourceCulture);
+                return ResourceManager.GetString("you_will_be_ressurected", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы покинули игру.
-        /// </summary>
-        internal static string you_leave_from_game {
+        internal static string you_will_be_killed {
             get {
-                return ResourceManager.GetString("you_leave_from_game", resourceCulture);
+                return ResourceManager.GetString("you_will_be_killed", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы мертвы и не можете говорить!.
-        /// </summary>
-        internal static string you_now_died {
+        internal static string vote_to {
             get {
-                return ResourceManager.GetString("you_now_died", resourceCulture);
+                return ResourceManager.GetString("vote_to", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы пропустили голосование.
-        /// </summary>
-        internal static string you_skip_vote {
+        internal static string results_of_voting {
             get {
-                return ResourceManager.GetString("you_skip_vote", resourceCulture);
+                return ResourceManager.GetString("results_of_voting", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to У Вас есть минута, чтобы что-то сказать.
-        /// </summary>
-        internal static string you_turn_say {
+        internal static string no_one_voted {
             get {
-                return ResourceManager.GetString("you_turn_say", resourceCulture);
+                return ResourceManager.GetString("no_one_voted", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы выбрали игрока.
-        /// </summary>
-        internal static string you_vote_player {
+        internal static string run_game {
             get {
-                return ResourceManager.GetString("you_vote_player", resourceCulture);
+                return ResourceManager.GetString("run_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы выставили самого себя.
-        /// </summary>
-        internal static string you_vote_to_self {
+        internal static string continue_question {
             get {
-                return ResourceManager.GetString("you_vote_to_self", resourceCulture);
+                return ResourceManager.GetString("continue_question", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы были исключены.
-        /// </summary>
-        internal static string you_were_kicked {
+        internal static string disscution_time {
             get {
-                return ResourceManager.GetString("you_were_kicked", resourceCulture);
+                return ResourceManager.GetString("disscution_time", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы будете казнены, у вас есть минута на прощание..
-        /// </summary>
-        internal static string you_will_be_dispatched {
+        internal static string you {
             get {
-                return ResourceManager.GetString("you_will_be_dispatched", resourceCulture);
+                return ResourceManager.GetString("you", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы были убиты.
-        /// </summary>
-        internal static string you_will_be_killed {
+        internal static string day_discussion_ended {
             get {
-                return ResourceManager.GetString("you_will_be_killed", resourceCulture);
+                return ResourceManager.GetString("day_discussion_ended", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы были воскрешены.
-        /// </summary>
-        internal static string you_will_be_ressurected {
+        internal static string you_will_be_dispatched {
             get {
-                return ResourceManager.GetString("you_will_be_ressurected", resourceCulture);
+                return ResourceManager.GetString("you_will_be_dispatched", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы победили.
-        /// </summary>
-        internal static string you_won {
+        internal static string you_have_ten_seconds_to_vote {
             get {
-                return ResourceManager.GetString("you_won", resourceCulture);
+                return ResourceManager.GetString("you_have_ten_seconds_to_vote", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваше имя:.
-        /// </summary>
-        internal static string your_name {
+        internal static string automatically_choosed_target {
             get {
-                return ResourceManager.GetString("your_name", resourceCulture);
+                return ResourceManager.GetString("automatically_choosed_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваша роль.
-        /// </summary>
-        internal static string your_role {
+        internal static string you_won {
             get {
-                return ResourceManager.GetString("your_role", resourceCulture);
+                return ResourceManager.GetString("you_won", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Команда мафии на эту игру:.
-        /// </summary>
-        internal static string your_teammates {
+        internal static string dissolve_warning {
             get {
-                return ResourceManager.GetString("your_teammates", resourceCulture);
+                return ResourceManager.GetString("dissolve_warning", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваш ход.
-        /// </summary>
-        internal static string your_turn {
+        internal static string the_fool_won {
             get {
-                return ResourceManager.GetString("your_turn", resourceCulture);
+                return ResourceManager.GetString("the_fool_won", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваш ход закончился.
-        /// </summary>
-        internal static string your_turn_ended {
+        internal static string nothing_up_to_vote {
             get {
-                return ResourceManager.GetString("your_turn_ended", resourceCulture);
+                return ResourceManager.GetString("nothing_up_to_vote", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы ходите под номером.
-        /// </summary>
-        internal static string your_turn_order {
+        internal static string nothing_up_to_dispatch {
             get {
-                return ResourceManager.GetString("your_turn_order", resourceCulture);
+                return ResourceManager.GetString("nothing_up_to_dispatch", resourceCulture);
             }
         }
     }

+ 6 - 0
MafiaTelegramBot/Resources/strings.resx

@@ -435,4 +435,10 @@
     <data name="the_fool_won" xml:space="preserve">
         <value>Дурачок оказался там, где ему и следовало</value>
     </data>
+    <data name="nothing_up_to_vote" xml:space="preserve">
+        <value>Никто не выставлен на голосование</value>
+    </data>
+    <data name="nothing_up_to_dispatch" xml:space="preserve">
+        <value>Некого казнить</value>
+    </data>
 </root>