浏览代码

Add night phase logic, realize doctor role and mafia killing logic

Tigran 4 年之前
父节点
当前提交
6a3c471c08

+ 2 - 2
MafiaTelegramBot.sln.DotSettings.user

@@ -1,12 +1,12 @@
 <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=MafiaTelegramBot_002Fappsettings/@EntryIndexedValue">True</s:Boolean>
 	
-	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=MafiaTelegramBot_002FResources_002Fkeyboard/@EntryIndexedValue">True</s:Boolean>
+	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=MafiaTelegramBot_002FResources_002Fkeyboard/@EntryIndexedValue">False</s:Boolean>
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=MafiaTelegramBot_002FResources_002Froles/@EntryIndexedValue">False</s:Boolean>
 	
 	
 	
-	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=MafiaTelegramBot_002FResources_002Fstrings/@EntryIndexedValue">False</s:Boolean>
+	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=MafiaTelegramBot_002FResources_002Fstrings/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=MafiaTelegramBot_002Fstrings/@EntryIndexedValue">True</s:Boolean>
 	
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/Initialized/@EntryValue">True</s:Boolean>

+ 24 - 17
MafiaTelegramBot/Game/GameRoles/DoctorRole.cs

@@ -10,43 +10,50 @@ namespace MafiaTelegramBot.Game.GameRoles
     public class DoctorRole : GameRoom.Role
     {
         public override Roles RoleKey => Roles.Doctor;
-
+        private bool _haveTargets = true;
         public override async Task NightAction()
         {
-            var targets = Room.Players.Values.Where(p => p.IsAlive).ToList();
-            var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_heal, 
+            NightTargetId = -1;
+            var targets = Room.Players.Values.Where(p => p.IsAlive && p.CanBeHealed).ToList();
+            Message message = null;
+            if (targets.Count == 0)
+            {
+                message = await Bot.SendWithMarkdown2(Player.ChatId, strings.nothing_to_heal);
+                _haveTargets = false;
+            }
+            else message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_heal, 
                 Keyboard.NightChooseTargetKeyboard(targets, Player.Id));
             MessageId = message.MessageId;
         }
 
         public override async Task ApplyNightActionResult()
         {
-            if (NightTargetId == -1)
+            if (NightTargetId == -1 && _haveTargets)
                 await Bot.Get().EditMessageTextAsync(Player.ChatId, MessageId, strings.you_have_not_choosen_target);
             else
             {
-                var user = Room.Players[NightTargetId];
-                var isTargetSaved = true; //TODO when doctor heals mafia target
-                if(isTargetSaved)
-                    await Bot.Get().EditMessageTextAsync(Player.ChatId, MessageId, $"{strings.you_save_the_target} {user.NickName}");
+                var target = Room.Players[NightTargetId];
+                if (!target.IsAlive)
+                {
+                    target.IsAlive = true;
+                    target.CanBeHealed = false;
+                    await Bot.SendWithMarkdown2(Player.ChatId, $"{strings.you_save_player} {target.NickName}");
+                    await Bot.SendWithMarkdown2(target.ChatId, strings.doctor_save_you);
+                }
             }
         }
 
         public override Task CancelNightActionResult(string message)
         {
-            //TODO why action canceled
             return Task.CompletedTask;
         }
 
-        public override Task<Message> SetNightTarget(long userId)
+        public override async Task<Message> SetNightTarget(long userId)
         {
-            var canHeal = true; //TODO why doctor cant heal
-            if (canHeal)
-            {
-                NightTargetId = userId;
-                return Bot.Get().EditMessageTextAsync(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
-            }
-            return Bot.SendWithMarkdown2(Player.ChatId, strings.you_cant_heal_this_target);
+            NightTargetId = userId;
+            var target = Room.Players[userId];
+            await Bot.SendWithMarkdown2(target.ChatId, strings.doctor_heals_you);
+            return await Bot.Get().EditMessageTextAsync(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
         }
 
         public DoctorRole(GameRoom room, Player player) : base(room, player) { }

+ 1 - 4
MafiaTelegramBot/Game/GameRoles/MafiaRole.cs

@@ -20,10 +20,7 @@ namespace MafiaTelegramBot.Game.GameRoles
             MessageId = message.MessageId;
         }
 
-        public override async Task ApplyNightActionResult()
-        {
-            
-        }
+        public override Task ApplyNightActionResult() { return Task.CompletedTask; }
 
         public override Task CancelNightActionResult(string message)
         {

+ 1 - 0
MafiaTelegramBot/Game/GameRoles/WerewolfRole.cs

@@ -8,6 +8,7 @@ namespace MafiaTelegramBot.Game.GameRoles
     public class WerewolfRole : GameRoom.Role
     {
         public override Roles RoleKey => Roles.Werewolf;
+        public bool IsMafia = false;
         public override Task NightAction() { return Task.CompletedTask; }
         public override Task ApplyNightActionResult() { return Task.CompletedTask; }
         public override Task CancelNightActionResult(string message) { return Task.CompletedTask; }

+ 1 - 1
MafiaTelegramBot/Game/GameRooms/ExtendedGameRoom.cs

@@ -22,8 +22,8 @@ namespace MafiaTelegramBot.Game.GameRooms
             [Roles.Bodyguard] = new List<Player>(),
             [Roles.Doctor] = new List<Player>(),
             [Roles.Necromancer] = new List<Player>(),
-            //passive roles
             [Roles.Werewolf] = new List<Player>(),
+            //passive roles
             [Roles.Elder] = new List<Player>(),
             [Roles.Fool] = new List<Player>(),
             [Roles.Villager] = new List<Player>(),

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

@@ -1,3 +1,4 @@
+using System;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
@@ -44,13 +45,13 @@ namespace MafiaTelegramBot.Game.GameRooms
                 }
                 _turnOrder.Enqueue(firstPlayer);
             });
-            IsFirstCycle = false;
             await PlayersCh.Send(strings.city_falls_asleep);
         }
 
         private async Task FirstNight()
         {
             IsFirstCycle = true;
+            IsDay = false;
             await Task.Run(async() =>
             {
                 await PlayersCh.Send(strings.city_falls_asleep);
@@ -81,6 +82,7 @@ namespace MafiaTelegramBot.Game.GameRooms
 
         private async Task GameCycle()
         {
+            IsFirstCycle = false;
             await Task.Run(async () =>
             {
                 var alivePlayers = Players.Values.Where(p => p.IsAlive).ToList();
@@ -88,25 +90,32 @@ namespace MafiaTelegramBot.Game.GameRooms
                 var gameNotEnded = alivePlayers.Count > 2 * aliveMafia.Count && aliveMafia.Count > 0;
                 while (gameNotEnded)
                 {
-                    IsDay = false;
                     await NightPhase();
                     await SummingUpPhase();
-                    IsDay = true;
+                    alivePlayers = Players.Values.Where(p => p.IsAlive).ToList();
+                    aliveMafia = alivePlayers.Where(p => p.GetRole() is Roles.Don or Roles.Mafia).ToList();
+                    gameNotEnded = alivePlayers.Count > 2 * aliveMafia.Count && aliveMafia.Count > 0;
+                    if (!gameNotEnded) break;
                     await DayPhase();
                     await DefencePhase();
                     await DispatchPhase();
+                    alivePlayers = Players.Values.Where(p => p.IsAlive).ToList();
+                    aliveMafia = alivePlayers.Where(p => p.GetRole() is Roles.Don or Roles.Mafia).ToList();
+                    gameNotEnded = alivePlayers.Count > 2 * aliveMafia.Count && aliveMafia.Count > 0;
+                    if (!gameNotEnded) break;
                 }
             });
         }
 
         private async Task DayPhase()
         {
+            IsDay = true;
             var turnsCount = _turnOrder.Count;
             Player firstPlayer = null;
             for (var i = 0; i < turnsCount; ++i)
             {
                 var player = _turnOrder.Dequeue();
-                if(!player.IsPlaying) continue;
+                if(!player.IsPlaying || !player.IsAlive) continue;
                 if (firstPlayer == null) player.IsFirst = true;
                 await player.CurrentRole.DayAction();
                 if (player.IsFirst) firstPlayer = player;
@@ -118,6 +127,8 @@ namespace MafiaTelegramBot.Game.GameRooms
 
         private async Task NightPhase()
         {
+            IsDay = false;
+            await PlayersCh.Send(strings.city_falls_asleep);
             await Task.Run(async () =>
             {
                 var resetEvent = new ManualResetEvent(false);
@@ -136,11 +147,34 @@ namespace MafiaTelegramBot.Game.GameRooms
         {
             await Task.Run(async () =>
             {
-                //TODO order of applying with priorities
-                foreach (var player in Players.Values.Where(p=>p.IsAlive))
+                Player killedPlayer = null;
+                foreach (var (role, players) in PlayersRole)
                 {
-                    await player.CurrentRole.ApplyNightActionResult();
+                    Console.WriteLine(role.ToString());
+                    if (players.Count == 1)
+                    {
+                        var player = players[0];
+                        if (role != Roles.Doctor) player.CanBeHealed = true;
+                        if (player.IsAlive) await player.CurrentRole.ApplyNightActionResult();
+                    }
+                    else if (role is Roles.Mafia)
+                    {
+                        var votes = players
+                            .GroupBy(player => player.CurrentRole.GetNightTarget())
+                            .Select(item => new {id = item.Key, count = item.Count()})
+                            .ToList();
+                        if (votes.Count == players.Count) continue;
+                        var max = votes.Max(item => item.count);
+                        var maxCount = votes.Count(item => item.count == max);
+                        if (maxCount != 1) continue;
+                        var selected = votes.First(item => item.count == max);
+                        if (selected.id != -1) killedPlayer = Players[selected.id];
+                    }
                 }
+                var message = strings.city_wakes_up;
+                if (killedPlayer is {IsAlive: false}) message += $"{strings.at_this_night} {killedPlayer.NickName}";
+                else message += strings.everyone_survived;
+                await PlayersCh.Send(message);
             });
         }
 

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

@@ -25,7 +25,11 @@ namespace MafiaTelegramBot.Game.GameRooms
                 var player = _room.Players[userId];
                 if (text == keyboard.look_players_list) await LookPlayers(player);
                 else if (text == keyboard.leave) await Leave(player);
-                else if (text == keyboard.end_turn) player.CurrentRole.DayActionComplete.Set();
+                else if (text == keyboard.end_turn)
+                {
+                    if (_room.IsDay && player.IsSpeaker) player.CurrentRole.DayActionComplete.Set();
+                    else await Bot.SendWithMarkdown2(player.ChatId, strings.now_is_not_your_turn);
+                }
                 else
                 {
                     if (!player.IsAlive) await Bot.SendWithMarkdown2(player.ChatId, strings.you_now_died);
@@ -36,7 +40,6 @@ namespace MafiaTelegramBot.Game.GameRooms
 
             private async Task ForwardMessage(Player player, string message)
             {
-                
                 if (_room.IsDay)
                 {
                     if (player.IsSpeaker)

+ 5 - 0
MafiaTelegramBot/Game/GameRooms/GameRoom.Role.cs

@@ -33,6 +33,11 @@ namespace MafiaTelegramBot.Game.GameRooms
                 Player = player;
             }
 
+            public long GetNightTarget()
+            {
+                return NightTargetId;
+            }
+
             public async Task DayAction()
             {
                 await Room.PlayersCh.SendExcept(Player.Id, $"{strings.now_turn} {Player.NickName}");

+ 13 - 2
MafiaTelegramBot/Game/Player.cs

@@ -7,6 +7,7 @@ using MafiaTelegramBot.CustomCollections;
 using MafiaTelegramBot.DataBase.Entity;
 using MafiaTelegramBot.DataBase.EntityDao;
 using MafiaTelegramBot.Game.GameRoles;
+using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 using Microsoft.EntityFrameworkCore;
 using Newtonsoft.Json;
@@ -21,8 +22,10 @@ namespace MafiaTelegramBot.Game
         public bool IsAlive = true;
         public bool IsSpeaker = false;
         public bool IsPlaying = false;
-        public bool IsVoting = false;
         public bool IsFirst = false;
+        public bool CanBeHealed = true;
+        public bool CanBeBlockedNight = true;
+        public bool CanBeBlockedDay = true;
 
         public readonly StatisticsList Statistics = new();
 
@@ -37,6 +40,12 @@ namespace MafiaTelegramBot.Game
             return true;
         }
         
+        public async Task BlockDay()
+        {
+            CanBeBlockedDay = false;
+            await Bot.SendWithMarkdown2(ChatId, strings.dame_block_you);
+        }
+        
         public static Player FromUserEntity(UserEntity b)
         {
             var serialized = JsonConvert.SerializeObject(b);
@@ -89,8 +98,10 @@ namespace MafiaTelegramBot.Game
             IsAlive = true;
             IsSpeaker = false;
             IsPlaying = false;
-            IsVoting = false;
             IsFirst = false;
+            CanBeHealed = true;
+            CanBeBlockedDay = true;
+            CanBeBlockedNight = true;
         }
     }
 }

+ 244 - 502
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,876 +45,633 @@ 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 alive {
+        internal static string games_count {
             get {
-                return ResourceManager.GetString("alive", resourceCulture);
+                return ResourceManager.GetString("games_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Игра начинается....
-        /// </summary>
-        internal static string bot_starting_game {
+        internal static string wins_count {
             get {
-                return ResourceManager.GetString("bot_starting_game", resourceCulture);
+                return ResourceManager.GetString("wins_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сменить имя.
-        /// </summary>
-        internal static string change_name {
+        internal static string winrate {
             get {
-                return ResourceManager.GetString("change_name", resourceCulture);
+                return ResourceManager.GetString("winrate", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите режим игры.
-        /// </summary>
-        internal static string choose_game_type {
+        internal static string shop {
             get {
-                return ResourceManager.GetString("choose_game_type", resourceCulture);
+                return ResourceManager.GetString("shop", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите игрока для проверки роли.
-        /// </summary>
-        internal static string choose_player_to_check_role {
+        internal static string my_roles {
             get {
-                return ResourceManager.GetString("choose_player_to_check_role", resourceCulture);
+                return ResourceManager.GetString("my_roles", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите игрока для лечения.
-        /// </summary>
-        internal static string choose_player_to_heal {
+        internal static string settings {
             get {
-                return ResourceManager.GetString("choose_player_to_heal", resourceCulture);
+                return ResourceManager.GetString("settings", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите цель, роль которой хотите узнать.
-        /// </summary>
-        internal static string choose_target_to_known_role {
+        internal static string your_name {
             get {
-                return ResourceManager.GetString("choose_target_to_known_role", resourceCulture);
+                return ResourceManager.GetString("your_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Выберите тип комнаты.
-        /// </summary>
-        internal static string choose_type_room {
+        internal static string change_name {
             get {
-                return ResourceManager.GetString("choose_type_room", resourceCulture);
+                return ResourceManager.GetString("change_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Город засыпает.
-        /// </summary>
-        internal static string city_falls_asleep {
+        internal static string enter_your_name {
             get {
-                return ResourceManager.GetString("city_falls_asleep", resourceCulture);
+                return ResourceManager.GetString("enter_your_name", resourceCulture);
+            }
+        }
+        
+        internal static string name_updated {
+            get {
+                return ResourceManager.GetString("name_updated", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Команда не найдена.
-        /// </summary>
         internal static string command_not_found {
             get {
                 return ResourceManager.GetString("command_not_found", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to подключился к игре.
-        /// </summary>
-        internal static string connected_to_game {
+        internal static string settings_room {
             get {
-                return ResourceManager.GetString("connected_to_game", resourceCulture);
+                return ResourceManager.GetString("settings_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to никого не выставил на голосование.
-        /// </summary>
-        internal static string didnt_put_anyone {
+        internal static string choose_game_type {
             get {
-                return ResourceManager.GetString("didnt_put_anyone", resourceCulture);
+                return ResourceManager.GetString("choose_game_type", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to мертвый.
-        /// </summary>
-        internal static string died {
+        internal static string enter_room_name {
             get {
-                return ResourceManager.GetString("died", resourceCulture);
+                return ResourceManager.GetString("enter_room_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Отключить.
-        /// </summary>
-        internal static string disable {
+        internal static string room_with_name {
             get {
-                return ResourceManager.GetString("disable", resourceCulture);
+                return ResourceManager.GetString("room_with_name", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to отключен.
-        /// </summary>
-        internal static string disabled {
+        internal static string was_created {
             get {
-                return ResourceManager.GetString("disabled", resourceCulture);
+                return ResourceManager.GetString("was_created", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Включить.
-        /// </summary>
-        internal static string enable {
+        internal static string unexpected_error {
             get {
-                return ResourceManager.GetString("enable", resourceCulture);
+                return ResourceManager.GetString("unexpected_error", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to включен.
-        /// </summary>
-        internal static string enabled {
+        internal static string game_already_exists {
             get {
-                return ResourceManager.GetString("enabled", resourceCulture);
+                return ResourceManager.GetString("game_already_exists", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Введите код от комнаты.
-        /// </summary>
-        internal static string enter_private_code {
+        internal static string leave_from_game {
             get {
-                return ResourceManager.GetString("enter_private_code", resourceCulture);
+                return ResourceManager.GetString("leave_from_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Введите название комнаты.
-        /// </summary>
-        internal static string enter_room_name {
+        internal static string user_not_in_game {
             get {
-                return ResourceManager.GetString("enter_room_name", resourceCulture);
+                return ResourceManager.GetString("user_not_in_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Введите ваше имя.
-        /// </summary>
-        internal static string enter_your_name {
+        internal static string standart {
             get {
-                return ResourceManager.GetString("enter_your_name", resourceCulture);
+                return ResourceManager.GetString("standart", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Расширенный.
-        /// </summary>
         internal static string extended {
             get {
                 return ResourceManager.GetString("extended", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Пока мирные жители спали, в городе завелась мафия. Город собрался на главной площади и жители решают, кто среди них предатель..
-        /// </summary>
-        internal static string first_day_message {
+        internal static string secret_key_is {
             get {
-                return ResourceManager.GetString("first_day_message", resourceCulture);
+                return ResourceManager.GetString("secret_key_is", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната с таким именем уже существует.
-        /// </summary>
-        internal static string game_already_exists {
+        internal static string choose_type_room {
             get {
-                return ResourceManager.GetString("game_already_exists", resourceCulture);
+                return ResourceManager.GetString("choose_type_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Игра уже запущена.
-        /// </summary>
-        internal static string game_already_running {
+        internal static string enter_private_code {
             get {
-                return ResourceManager.GetString("game_already_running", resourceCulture);
+                return ResourceManager.GetString("enter_private_code", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Процесс подготовки комнаты начался.
-        /// </summary>
-        internal static string game_process_started {
+        internal static string room_is_filled {
             get {
-                return ResourceManager.GetString("game_process_started", resourceCulture);
+                return ResourceManager.GetString("room_is_filled", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Число игр:.
-        /// </summary>
-        internal static string games_count {
+        internal static string user_already_in_game {
             get {
-                return ResourceManager.GetString("games_count", resourceCulture);
+                return ResourceManager.GetString("user_already_in_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Исключить.
-        /// </summary>
-        internal static string kick {
+        internal static string successful_entry_into_room {
             get {
-                return ResourceManager.GetString("kick", resourceCulture);
+                return ResourceManager.GetString("successful_entry_into_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Исключить пользователя.
-        /// </summary>
-        internal static string kick_user {
+        internal static string users_list {
             get {
-                return ResourceManager.GetString("kick_user", resourceCulture);
+                return ResourceManager.GetString("users_list", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to покинул игру.
-        /// </summary>
-        internal static string leave_from_game {
+        internal static string users_list_empty {
             get {
-                return ResourceManager.GetString("leave_from_game", resourceCulture);
+                return ResourceManager.GetString("users_list_empty", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ссылка для подключения к комнате.
-        /// </summary>
-        internal static string link {
+        internal static string max_capacity_message {
             get {
-                return ResourceManager.GetString("link", resourceCulture);
+                return ResourceManager.GetString("max_capacity_message", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to В первую ночь мафия получает список соучастников..
-        /// </summary>
-        internal static string mafia_get_mail {
+        internal static string prefer_leave_from_room {
             get {
-                return ResourceManager.GetString("mafia_get_mail", resourceCulture);
+                return ResourceManager.GetString("prefer_leave_from_room", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Максимальное кол-во игроков.
-        /// </summary>
-        internal static string max_capacity_message {
+        internal static string room_does_not_exists {
             get {
-                return ResourceManager.GetString("max_capacity_message", resourceCulture);
+                return ResourceManager.GetString("room_does_not_exists", resourceCulture);
+            }
+        }
+        
+        internal static string public_rooms_are_not_exist {
+            get {
+                return ResourceManager.GetString("public_rooms_are_not_exist", resourceCulture);
+            }
+        }
+        
+        internal static string rooms {
+            get {
+                return ResourceManager.GetString("rooms", resourceCulture);
+            }
+        }
+        
+        internal static string too_many_players {
+            get {
+                return ResourceManager.GetString("too_many_players", resourceCulture);
+            }
+        }
+        
+        internal static string too_few_players {
+            get {
+                return ResourceManager.GetString("too_few_players", resourceCulture);
+            }
+        }
+        
+        internal static string game_already_running {
+            get {
+                return ResourceManager.GetString("game_already_running", resourceCulture);
+            }
+        }
+        
+        internal static string minimum_players_count {
+            get {
+                return ResourceManager.GetString("minimum_players_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Максимум - 16 игроков.
-        /// </summary>
         internal static string maximum_players_count {
             get {
                 return ResourceManager.GetString("maximum_players_count", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Максимум был установлен на.
-        /// </summary>
         internal static string maximum_was_set_to {
             get {
                 return ResourceManager.GetString("maximum_was_set_to", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Минимум - 6 игроков.
-        /// </summary>
-        internal static string minimum_players_count {
+        internal static string players {
             get {
-                return ResourceManager.GetString("minimum_players_count", resourceCulture);
+                return ResourceManager.GetString("players", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Мои роли.
-        /// </summary>
-        internal static string my_roles {
+        internal static string kick {
             get {
-                return ResourceManager.GetString("my_roles", resourceCulture);
+                return ResourceManager.GetString("kick", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Имя было обновлено на.
-        /// </summary>
-        internal static string name_updated {
+        internal static string kick_user {
             get {
-                return ResourceManager.GetString("name_updated", resourceCulture);
+                return ResourceManager.GetString("kick_user", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Данная команда не поддерживается во время игры.
-        /// </summary>
-        internal static string not_supported_in_game {
+        internal static string you_were_kicked {
             get {
-                return ResourceManager.GetString("not_supported_in_game", resourceCulture);
+                return ResourceManager.GetString("you_were_kicked", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сейчас не ваш ход.
-        /// </summary>
-        internal static string now_is_not_your_turn {
+        internal static string room_dissolved {
             get {
-                return ResourceManager.GetString("now_is_not_your_turn", resourceCulture);
+                return ResourceManager.GetString("room_dissolved", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сейчас ходит.
-        /// </summary>
-        internal static string now_turn {
+        internal static string timer {
             get {
-                return ResourceManager.GetString("now_turn", resourceCulture);
+                return ResourceManager.GetString("timer", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to игроков.
-        /// </summary>
-        internal static string players {
+        internal static string enabled {
             get {
-                return ResourceManager.GetString("players", resourceCulture);
+                return ResourceManager.GetString("enabled", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Список игроков.
-        /// </summary>
-        internal static string players_list {
+        internal static string disabled {
             get {
-                return ResourceManager.GetString("players_list", resourceCulture);
+                return ResourceManager.GetString("disabled", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Сначала покиньте комнату.
-        /// </summary>
-        internal static string prefer_leave_from_room {
+        internal static string enable {
             get {
-                return ResourceManager.GetString("prefer_leave_from_room", resourceCulture);
+                return ResourceManager.GetString("enable", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Нет свободных публичных комнат.
-        /// </summary>
-        internal static string public_rooms_are_not_exist {
+        internal static string disable {
             get {
-                return ResourceManager.GetString("public_rooms_are_not_exist", resourceCulture);
+                return ResourceManager.GetString("disable", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Кого вы хотите выставить на голосование?.
-        /// </summary>
-        internal static string put_up_vote {
+        internal static string _public {
             get {
-                return ResourceManager.GetString("put_up_vote", resourceCulture);
+                return ResourceManager.GetString("public", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Роль игрока.
-        /// </summary>
-        internal static string role_of_your_target {
+        internal static string _private {
             get {
-                return ResourceManager.GetString("role_of_your_target", resourceCulture);
+                return ResourceManager.GetString("private", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната распущена.
-        /// </summary>
-        internal static string room_dissolved {
+        internal static string bot_starting_game {
             get {
-                return ResourceManager.GetString("room_dissolved", resourceCulture);
+                return ResourceManager.GetString("bot_starting_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната не существует.
-        /// </summary>
-        internal static string room_does_not_exists {
+        internal static string game_process_started {
             get {
-                return ResourceManager.GetString("room_does_not_exists", resourceCulture);
+                return ResourceManager.GetString("game_process_started", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната заполнена.
-        /// </summary>
-        internal static string room_is_filled {
+        internal static string connected_to_game {
             get {
-                return ResourceManager.GetString("room_is_filled", resourceCulture);
+                return ResourceManager.GetString("connected_to_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to владелец комнаты.
-        /// </summary>
-        internal static string room_owner {
+        internal static string your_turn_order {
             get {
-                return ResourceManager.GetString("room_owner", resourceCulture);
+                return ResourceManager.GetString("your_turn_order", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комната с именем.
-        /// </summary>
-        internal static string room_with_name {
+        internal static string your_role {
             get {
-                return ResourceManager.GetString("room_with_name", resourceCulture);
+                return ResourceManager.GetString("your_role", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Комнаты.
-        /// </summary>
-        internal static string rooms {
+        internal static string thanks_for_game {
             get {
-                return ResourceManager.GetString("rooms", resourceCulture);
+                return ResourceManager.GetString("thanks_for_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Секретный код для подключения к комнате.
-        /// </summary>
-        internal static string secret_key_is {
+        internal static string link {
             get {
-                return ResourceManager.GetString("secret_key_is", resourceCulture);
+                return ResourceManager.GetString("link", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Настройки.
-        /// </summary>
-        internal static string settings {
+        internal static string you_leave_from_game {
             get {
-                return ResourceManager.GetString("settings", resourceCulture);
+                return ResourceManager.GetString("you_leave_from_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Задайте настройки комнаты.
-        /// </summary>
-        internal static string settings_room {
+        internal static string your_teammates {
             get {
-                return ResourceManager.GetString("settings_room", resourceCulture);
+                return ResourceManager.GetString("your_teammates", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Магазин.
-        /// </summary>
-        internal static string shop {
+        internal static string first_day_message {
             get {
-                return ResourceManager.GetString("shop", resourceCulture);
+                return ResourceManager.GetString("first_day_message", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Пропустить.
-        /// </summary>
-        internal static string skip {
+        internal static string city_falls_asleep {
             get {
-                return ResourceManager.GetString("skip", resourceCulture);
+                return ResourceManager.GetString("city_falls_asleep", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Стандартный.
-        /// </summary>
-        internal static string standart {
+        internal static string now_turn {
             get {
-                return ResourceManager.GetString("standart", resourceCulture);
+                return ResourceManager.GetString("now_turn", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Что вы хотите сделать?.
-        /// </summary>
-        internal static string start_message {
+        internal static string your_turn_ended {
             get {
-                return ResourceManager.GetString("start_message", resourceCulture);
+                return ResourceManager.GetString("your_turn_ended", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Статистика для.
-        /// </summary>
-        internal static string statistics_for {
+        internal static string now_is_not_your_turn {
             get {
-                return ResourceManager.GetString("statistics_for", resourceCulture);
+                return ResourceManager.GetString("now_is_not_your_turn", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы были добавлены в комнату.
-        /// </summary>
-        internal static string successful_entry_into_room {
+        internal static string your_turn {
             get {
-                return ResourceManager.GetString("successful_entry_into_room", resourceCulture);
+                return ResourceManager.GetString("your_turn", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Игра окончена, спасибо за игру!.
-        /// </summary>
-        internal static string thanks_for_game {
+        internal static string players_list {
             get {
-                return ResourceManager.GetString("thanks_for_game", resourceCulture);
+                return ResourceManager.GetString("players_list", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Таймер.
-        /// </summary>
-        internal static string timer {
+        internal static string you_now_died {
             get {
-                return ResourceManager.GetString("timer", resourceCulture);
+                return ResourceManager.GetString("you_now_died", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Недостаточно игроков для старта игры.
-        /// </summary>
-        internal static string too_few_players {
+        internal static string villagers_are_sleep {
             get {
-                return ResourceManager.GetString("too_few_players", resourceCulture);
+                return ResourceManager.GetString("villagers_are_sleep", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Количество игроков превышает максимальное.
-        /// </summary>
-        internal static string too_many_players {
+        internal static string mafia_get_mail {
             get {
-                return ResourceManager.GetString("too_many_players", resourceCulture);
+                return ResourceManager.GetString("mafia_get_mail", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Произошла неожиданная ошибка... Попробуйте ещё раз..
-        /// </summary>
-        internal static string unexpected_error {
+        internal static string alive {
             get {
-                return ResourceManager.GetString("unexpected_error", resourceCulture);
+                return ResourceManager.GetString("alive", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы уже находитесь в игре.
-        /// </summary>
-        internal static string user_already_in_game {
+        internal static string died {
             get {
-                return ResourceManager.GetString("user_already_in_game", resourceCulture);
+                return ResourceManager.GetString("died", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Иначе вы будете выставлены на голосование.
-        /// </summary>
-        internal static string user_not_choose {
+        internal static string room_owner {
             get {
-                return ResourceManager.GetString("user_not_choose", resourceCulture);
+                return ResourceManager.GetString("room_owner", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы не находитесь сейчас в игре.
-        /// </summary>
-        internal static string user_not_in_game {
+        internal static string put_up_vote {
             get {
-                return ResourceManager.GetString("user_not_in_game", resourceCulture);
+                return ResourceManager.GetString("put_up_vote", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Участники в комнате.
-        /// </summary>
-        internal static string users_list {
+        internal static string didnt_put_anyone {
             get {
-                return ResourceManager.GetString("users_list", resourceCulture);
+                return ResourceManager.GetString("didnt_put_anyone", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to В комнате нет игроков, кроме Вас.
-        /// </summary>
-        internal static string users_list_empty {
+        internal static string skip {
             get {
-                return ResourceManager.GetString("users_list_empty", resourceCulture);
+                return ResourceManager.GetString("skip", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Жители ночью спят, а не разговаривают!.
-        /// </summary>
-        internal static string villagers_are_sleep {
+        internal static string you_have_one_minute {
             get {
-                return ResourceManager.GetString("villagers_are_sleep", resourceCulture);
+                return ResourceManager.GetString("you_have_one_minute", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to выставил.
-        /// </summary>
-        internal static string vote_to {
+        internal static string user_not_choose {
             get {
-                return ResourceManager.GetString("vote_to", resourceCulture);
+                return ResourceManager.GetString("user_not_choose", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to выставил самого себя..
-        /// </summary>
-        internal static string vote_to_self {
+        internal static string not_supported_in_game {
             get {
-                return ResourceManager.GetString("vote_to_self", resourceCulture);
+                return ResourceManager.GetString("not_supported_in_game", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to была создана.
-        /// </summary>
-        internal static string was_created {
+        internal static string you_skip_vote {
             get {
-                return ResourceManager.GetString("was_created", resourceCulture);
+                return ResourceManager.GetString("you_skip_vote", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Винрейт:.
-        /// </summary>
-        internal static string winrate {
+        internal static string you_vote_player {
             get {
-                return ResourceManager.GetString("winrate", resourceCulture);
+                return ResourceManager.GetString("you_vote_player", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Число побед:.
-        /// </summary>
-        internal static string wins_count {
+        internal static string vote_to {
             get {
-                return ResourceManager.GetString("wins_count", resourceCulture);
+                return ResourceManager.GetString("vote_to", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы не можете вылечить данную цель.
-        /// </summary>
-        internal static string you_cant_heal_this_target {
+        internal static string vote_to_self {
             get {
-                return ResourceManager.GetString("you_cant_heal_this_target", resourceCulture);
+                return ResourceManager.GetString("vote_to_self", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы выбрали игрока.
-        /// </summary>
-        internal static string you_choose_target {
+        internal static string you_vote_to_self {
             get {
-                return ResourceManager.GetString("you_choose_target", resourceCulture);
+                return ResourceManager.GetString("you_vote_to_self", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы не выбрали цель.
-        /// </summary>
-        internal static string you_have_not_choosen_target {
+        internal static string choose_target_to_known_role {
             get {
-                return ResourceManager.GetString("you_have_not_choosen_target", resourceCulture);
+                return ResourceManager.GetString("choose_target_to_known_role", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to У вас есть десять секунд, чтобы выставить игрока на голосование.
-        /// </summary>
-        internal static string you_have_one_minute {
+        internal static string choose_player_to_check_role {
             get {
-                return ResourceManager.GetString("you_have_one_minute", resourceCulture);
+                return ResourceManager.GetString("choose_player_to_check_role", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы покинули игру.
-        /// </summary>
-        internal static string you_leave_from_game {
+        internal static string you_have_not_choosen_target {
             get {
-                return ResourceManager.GetString("you_leave_from_game", resourceCulture);
+                return ResourceManager.GetString("you_have_not_choosen_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы мертвы и не можете говорить!.
-        /// </summary>
-        internal static string you_now_died {
+        internal static string you_choose_target {
             get {
-                return ResourceManager.GetString("you_now_died", resourceCulture);
+                return ResourceManager.GetString("you_choose_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы спасли игрока.
-        /// </summary>
-        internal static string you_save_the_target {
+        internal static string role_of_your_target {
             get {
-                return ResourceManager.GetString("you_save_the_target", resourceCulture);
+                return ResourceManager.GetString("role_of_your_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы пропустили голосование.
-        /// </summary>
-        internal static string you_skip_vote {
+        internal static string choose_player_to_heal {
             get {
-                return ResourceManager.GetString("you_skip_vote", resourceCulture);
+                return ResourceManager.GetString("choose_player_to_heal", resourceCulture);
+            }
+        }
+        
+        internal static string you_cant_heal_this_target {
+            get {
+                return ResourceManager.GetString("you_cant_heal_this_target", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to У Вас есть минута, чтобы что-то сказать.
-        /// </summary>
         internal static string you_turn_say {
             get {
                 return ResourceManager.GetString("you_turn_say", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы выставили игрока.
-        /// </summary>
-        internal static string you_vote_player {
+        internal static string doctor_heals_you {
             get {
-                return ResourceManager.GetString("you_vote_player", resourceCulture);
+                return ResourceManager.GetString("doctor_heals_you", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы выставили самого себя.
-        /// </summary>
-        internal static string you_vote_to_self {
+        internal static string dame_block_you {
             get {
-                return ResourceManager.GetString("you_vote_to_self", resourceCulture);
+                return ResourceManager.GetString("dame_block_you", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы были исключены.
-        /// </summary>
-        internal static string you_were_kicked {
+        internal static string hooker_block_you {
             get {
-                return ResourceManager.GetString("you_were_kicked", resourceCulture);
+                return ResourceManager.GetString("hooker_block_you", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваше имя:.
-        /// </summary>
-        internal static string your_name {
+        internal static string you_save_player {
             get {
-                return ResourceManager.GetString("your_name", resourceCulture);
+                return ResourceManager.GetString("you_save_player", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваша роль.
-        /// </summary>
-        internal static string your_role {
+        internal static string nothing_to_heal {
             get {
-                return ResourceManager.GetString("your_role", resourceCulture);
+                return ResourceManager.GetString("nothing_to_heal", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваши напарники:.
-        /// </summary>
-        internal static string your_teammates {
+        internal static string doctor_save_you {
             get {
-                return ResourceManager.GetString("your_teammates", resourceCulture);
+                return ResourceManager.GetString("doctor_save_you", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваш ход.
-        /// </summary>
-        internal static string your_turn {
+        internal static string at_this_night {
             get {
-                return ResourceManager.GetString("your_turn", resourceCulture);
+                return ResourceManager.GetString("at_this_night", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Ваш ход закончился.
-        /// </summary>
-        internal static string your_turn_ended {
+        internal static string city_wakes_up {
             get {
-                return ResourceManager.GetString("your_turn_ended", resourceCulture);
+                return ResourceManager.GetString("city_wakes_up", resourceCulture);
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Вы ходите под номером.
-        /// </summary>
-        internal static string your_turn_order {
+        internal static string everyone_survived {
             get {
-                return ResourceManager.GetString("your_turn_order", resourceCulture);
+                return ResourceManager.GetString("everyone_survived", resourceCulture);
             }
         }
     }

+ 27 - 3
MafiaTelegramBot/Resources/strings.resx

@@ -303,10 +303,34 @@
     <data name="you_cant_heal_this_target" xml:space="preserve">
         <value>Вы не можете вылечить данную цель</value>
     </data>
-    <data name="you_save_the_target" xml:space="preserve">
-        <value>Вы спасли игрока</value>
-    </data>
     <data name="you_turn_say" xml:space="preserve">
         <value>У Вас есть минута, чтобы что-то сказать</value>
     </data>
+    <data name="doctor_heals_you" xml:space="preserve">
+        <value>Доктор вылечил вас</value>
+    </data>
+    <data name="dame_block_you" xml:space="preserve">
+        <value>Дама заблокировала вас. Вы не сможете разговаривать и голосовать в этот день.</value>
+    </data>
+    <data name="hooker_block_you" xml:space="preserve">
+        <value>Проститутка переспала с вами. Ваши действия этой ночью ограничены.</value>
+    </data>
+    <data name="you_save_player" xml:space="preserve">
+        <value>Вы спасли игрока</value>
+    </data>
+    <data name="nothing_to_heal" xml:space="preserve">
+        <value>Вам некого лечить этой ночью</value>
+    </data>
+    <data name="doctor_save_you" xml:space="preserve">
+        <value>Доктор спас вас от смерти</value>
+    </data>
+    <data name="at_this_night" xml:space="preserve">
+        <value>Этой ночью был убит</value>
+    </data>
+    <data name="city_wakes_up" xml:space="preserve">
+        <value>Город просыпается и обнаруживает, что... </value>
+    </data>
+    <data name="everyone_survived" xml:space="preserve">
+        <value>все игроки остались в живых!</value>
+    </data>
 </root>