Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of InfernoRU v1.0.8
InfernoTranslationMod.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using Inferno; using Microsoft.CodeAnalysis; using On.RoR2; using R2API; using RoR2; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("InfernoTranslationMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("InfernoTranslationMod")] [assembly: AssemblyTitle("InfernoTranslationMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace InfernoTranslationMod { [BepInPlugin("Lecarde17.InfernoRU", "InfernoRU", "1.0.8")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { [CompilerGenerated] private static class <>O { public static hook_GetLocalizedStringByToken <0>__Language_GetLocalizedStringByToken; } public const string PluginGUID = "Lecarde17.InfernoRU"; public static ManualLogSource modLogger; public const string PluginAuthor = "Lecarde17"; public const string PluginName = "InfernoRU"; public const string PluginVersion = "1.0.8"; public void Awake() { //IL_0514: Unknown result type (might be due to invalid IL or missing references) //IL_0519: Unknown result type (might be due to invalid IL or missing references) //IL_051f: Expected O, but got Unknown modLogger = ((BaseUnityPlugin)this).Logger; LanguageAPI.Add("INFERNO_NAME", "Геенна", "RU"); LanguageAPI.Add("INFERNO_DESCRIPTION", "Только для опытных игроков. Каждый шаг требует сосредоточенности и сноровки. Вы будете уничтожены.<style=cStack>\n\n>Регенерация здоровья игрока: <style=cDeath>-40%</style> \n" + ((Main.Scaling.Value <= 0f) ? ">Сложность: <style=cDeath>0%</style>\n" : ((Main.Scaling.Value == 100f) ? "" : ((object)((Main.Scaling.Value < 100f) ? (">Сложность: <style=cIsHealing>" + (Main.Scaling.Value - 100f) + "% + Бесконечно</style>\n") : (">Сложность: <style=cDeath>+" + (Main.Scaling.Value - 100f) + "% + Бесконечно</style>\n"), "RU"))))?.ToString() + ((Main.LevelAttackSpeed.Value > 0f || Main.LevelMoveSpeed.Value > 0f || Main.LevelRegen.Value > 0f) ? ">Характеристики врагов: <style=cDeath>Постоянно растут</style>\n" : "", "RU").ToString() + ((Main.ProjectileSpeed.Value > 1f) ? (">Скорость вражеских снарядов: <style=cDeath>+" + (Main.ProjectileSpeed.Value - 1f) * 100f + "%</style>\n") : "", "RU").ToString() + (Main.EnableCDirector.Value ? ">Постановщик сражений: <style=cDeath>Хитрый и находчивый</style>\n" : "", "RU").ToString() + ((Main.LevelDiffBoost.Value > 0f) ? ">Начальная сложность: <style=cDeath>Увеличенная</style>\n" : "", "RU").ToString() + ((Main.EnableSkills.Value || Main.EnableStats.Value) ? ">Способности врагов: <style=cDeath>Улучшенные</style>\n" : "", "RU").ToString() + (Main.EnableAI.Value ? (">Вражеский ИИ: <style=cDeath>Обновлённый" + ((Main.AIScaling.Value > 0f) ? " + Развивающийся</style>\n" : "</style>\n")) : "", "RU").ToString() + (((float)Main.MonsterLimit.Value == 40f) ? "" : (((float)Main.MonsterLimit.Value < 40f) ? (">Предел количества врагов: <style=cIsHealing>" + ((float)Main.MonsterLimit.Value - 40f) / 40f * 100f + "%</style>") : (">Предел количества врагов: <style=cDeath>+" + ((float)Main.MonsterLimit.Value - 40f) / 40f * 100f + "%</style>\n")), "RU").ToString() + ((Main.AllyPermanentDamage.Value > 0f) ? ">Союзники получают <style=cDeath>неизгладимый урон</style>\n" : "") + "</style>", "RU"); LanguageAPI.Add("ACHIEVEMENT_COMMANDOCLEARGAMEINFERNO_NAME", "Коммандо: <style=cDeath>выживание</style>", "RU"); LanguageAPI.Add("ACHIEVEMENT_COMMANDOCLEARGAMEINFERNO_DESCRIPTION", "Играя за Коммандо, пройдите игру или уничтожьтесь на уровне сложности <style=cDeath>«Геенна»</style>.", "RU"); LanguageAPI.Add("ACHIEVEMENT_BANDIT2CLEARGAMEINFERNO_NAME", "Бандит: <style=cDeath>выживание</style>", "RU"); LanguageAPI.Add("ACHIEVEMENT_BANDIT2CLEARGAMEINFERNO_DESCRIPTION", "Играя за Бандита, пройдите игру или уничтожьтесь на уровне сложности <style=cDeath>«Геенна»</style>.", "RU"); LanguageAPI.Add("ACHIEVEMENT_CAPTAINCLEARGAMEINFERNO_NAME", "Капитан: <style=cDeath>выживание</style>", "RU"); LanguageAPI.Add("ACHIEVEMENT_CAPTAINCLEARGAMEINFERNO_DESCRIPTION", "Играя за Капитана, пройдите игру или уничтожьтесь на уровне сложности <style=cDeath>«Геенна»</style>.", "RU"); LanguageAPI.Add("ACHIEVEMENT_ARTIFICERCLEARGAMEINFERNO_NAME", "Изобретатель: <style=cDeath>выживание</style>", "RU"); LanguageAPI.Add("ACHIEVEMENT_ARTIFICERCLEARGAMEINFERNO_DESCRIPTION", "Играя за Изобретателя, пройдите игру или уничтожьтесь на уровне сложности <style=cDeath>«Геенна»</style>.", "RU"); LanguageAPI.Add("ACHIEVEMENT_MERCENARYCLEARGAMEINFERNO_NAME", "Наёмник: <style=cDeath>выживание</style>", "RU"); LanguageAPI.Add("ACHIEVEMENT_MERCENARYCLEARGAMEINFERNO_DESCRIPTION", "Играя за Наёмника, пройдите игру или уничтожьтесь на уровне сложности <style=cDeath>«Геенна»</style>.", "RU"); LanguageAPI.Add("ACHIEVEMENT_RAILGUNNERCLEARGAMEINFERNO_NAME", "Рельсотронщица: <style=cDeath>выживание</style>", "RU"); LanguageAPI.Add("ACHIEVEMENT_RAILGUNNERCLEARGAMEINFERNO_DESCRIPTION", "Играя за Рельсотронщицу, пройдите игру или уничтожьтесь на уровне сложности <style=cDeath>«Геенна»</style>.", "RU"); LanguageAPI.Add("DOTFLARE_SKIN_BCAPTAIN_NAME", "<style=cDeath>Еинеледжов</style>", "RU"); LanguageAPI.Add("DOTFLARE_SKIN_CARTI_NAME", "<style=cDeath>Кристаллический</style>", "RU"); LanguageAPI.Add("DOTFLARE_SKIN_DBANDIT_NAME", "<style=cDeath>Дэдшот</style>", "RU"); LanguageAPI.Add("DOTFLARE_SKIN_HMERC_NAME", "<style=cDeath>Безголовый</style>", "RU"); LanguageAPI.Add("DOTFLARE_SKIN_MMANDO_NAME", "<style=cDeath>Заросший</style>", "RU"); LanguageAPI.Add("DOTFLARE_SKIN_PGUNNER_NAME", "<style=cDeath>Погребённая</style>", "RU"); object obj = <>O.<0>__Language_GetLocalizedStringByToken; if (obj == null) { hook_GetLocalizedStringByToken val = Language_GetLocalizedStringByToken; <>O.<0>__Language_GetLocalizedStringByToken = val; obj = (object)val; } Language.GetLocalizedStringByToken += (hook_GetLocalizedStringByToken)obj; } private static string Language_GetLocalizedStringByToken(orig_GetLocalizedStringByToken orig, Language self, string token) { if (self.name == "RU" || self.name == "ru") { if (token == "INFERNO_DESCRIPTION") { return "Только для опытных игроков. Каждый шаг требует сосредоточенности и сноровки. Вы будете уничтожены.<style=cStack>\n\n>Регенерация здоровья игрока: <style=cDeath>-40%</style> \n" + ((Main.Scaling.Value <= 0f) ? ">Сложность: <style=cDeath>0%</style>\n" : ((Main.Scaling.Value == 100f) ? "" : ((Main.Scaling.Value < 100f) ? (">Сложность: <style=cIsHealing>" + (Main.Scaling.Value - 100f) + "% + Бесконечно</style>\n") : (">Сложность: <style=cDeath>+" + (Main.Scaling.Value - 100f) + "% + Бесконечно</style>\n")))) + ((Main.LevelAttackSpeed.Value > 0f || Main.LevelMoveSpeed.Value > 0f || Main.LevelRegen.Value > 0f) ? ">Характеристики врагов: <style=cDeath>Постоянно растут</style>\n" : "") + ((Main.ProjectileSpeed.Value > 1f) ? (">Скорость вражеских снарядов: <style=cDeath>+" + (Main.ProjectileSpeed.Value - 1f) * 100f + "%</style>\n") : "") + (Main.EnableCDirector.Value ? ">Постановщик сражений: <style=cDeath>Хитрый и находчивый</style>\n" : "") + ((Main.LevelDiffBoost.Value > 0f) ? ">Начальная сложность: <style=cDeath>Увеличенная</style>\n" : "") + ((Main.EnableSkills.Value || Main.EnableStats.Value) ? ">Способности врагов: <style=cDeath>Улучшенные</style>\n" : "") + (Main.EnableAI.Value ? (">Вражеский ИИ: <style=cDeath>Обновлённый" + ((Main.AIScaling.Value > 0f) ? " + Развивающийся</style>\n" : "</style>\n")) : "") + (((float)Main.MonsterLimit.Value == 40f) ? "" : (((float)Main.MonsterLimit.Value < 40f) ? (">Предел количества врагов: <style=cIsHealing>" + ((float)Main.MonsterLimit.Value - 40f) / 40f * 100f + "%</style>") : (">Предел количества врагов: <style=cDeath>+" + ((float)Main.MonsterLimit.Value - 40f) / 40f * 100f + "%</style>\n"))) + ((Main.AllyPermanentDamage.Value > 0f) ? ">Союзники получают <style=cDeath>неизгладимый урон</style>\n" : "") + "</style>"; } if (Main.InfernalEclipse.Value) { switch (token) { case "TITLE_ECLIPSE": return "<style=cDeath>Геенническое Затмение</style>"; case "ECLIPSE_GAMEMODE_NAME": return "<style=cDeath>Геенническое Затмение</style>"; case "TITLE_EXTRAGAMEMODE_DESC": return "Сыграйте в другие режимы игры Risk of Rain 2, например «Призматические испытания» и <style=cDeath>«Геенническое Затмение»</style>."; case "ECLIPSE_GAMEMODE_DESCRIPTION": return "<style=cIsUtility>«Геенническое Затмение»</style>\u00a0— это режим игры, добавляющий складывающиеся модификаторы испытаний к вашей попытке. Каждый раз, когда вы <style=cIsUtility>проходите игру</style>, ваш уровень Гееннического Затмения при игре за данного выжившего <style=cIsUtility>повышается навсегда</style>. Уровень может повышаться до <style=cIsUtility>8</style> раз."; case "ECLIPSE_GAMEMODE_START": return "Start <style=cDeath>Геенническое Затмение</style>"; case "ECLIPSE_1_NAME": return "<style=cDeath>Геенническое Затмение (1)</style>"; case "ECLIPSE_2_NAME": return "<style=cDeath>Геенническое Затмение (2)</style>"; case "ECLIPSE_3_NAME": return "<style=cDeath>Геенническое Затмение (3)</style>"; case "ECLIPSE_4_NAME": return "<style=cDeath>Геенническое Затмение (4)</style>"; case "ECLIPSE_5_NAME": return "<style=cDeath>Геенническое Затмение (5)</style>"; case "ECLIPSE_6_NAME": return "<style=cDeath>Геенническое Затмение (6)</style>"; case "ECLIPSE_7_NAME": return "<style=cDeath>Геенническое Затмение (7)</style>"; case "ECLIPSE_8_NAME": return "<style=cDeath>Геенническое Затмение (8)</style>"; case "ECLIPSE_9_NAME": return "<style=cDeath>Геенническое Затмение (9)</style>"; case "ECLIPSE_10_NAME": return "<style=cDeath>Геенническое Затмение (10)</style>"; case "ECLIPSE_11_NAME": return "<style=cDeath>Геенническое Затмение (11)</style>"; case "ECLIPSE_12_NAME": return "<style=cDeath>Геенническое Затмение (12)</style>"; case "ECLIPSE_13_NAME": return "<style=cDeath>Геенническое Затмение (13)</style>"; case "ECLIPSE_14_NAME": return "<style=cDeath>Геенническое Затмение (14)</style>"; case "ECLIPSE_15_NAME": return "<style=cDeath>Геенническое Затмение (15)</style>"; case "ECLIPSE_16_NAME": return "<style=cDeath>Геенническое Затмение (16)</style>"; } } } return orig.Invoke(self, token); } } }