Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ValheimSeasonsRussianLocalization v1.6.0
BepInEx\plugins\ValheimSeasonsRussian.dll
Decompiled a week agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ValheimSeasonsRussian")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ValheimSeasonsRussian")] [assembly: AssemblyTitle("ValheimSeasonsRussian")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 ValheimSeasonsRussian { [BepInPlugin("ru.valheimseasons.localization", "ValheimSeasons Russian Localization", "1.6.0")] public sealed class LocalizationPlugin : BaseUnityPlugin { private Harmony _harmony; private static readonly Dictionary<string, string> Translations = new Dictionary<string, string> { ["1 - Geral (servidor)"] = "1 - Основное (сервер)", ["2 - Visual (cada jogador)"] = "2 - Визуальные настройки (каждый игрок)", ["3 - Frio e calor (servidor)"] = "3 - Холод и жара (сервер)", ["4 - Gelo no mar (servidor)"] = "4 - Лёд на море (сервер)", ["5 - Alcateias (servidor)"] = "5 - Волчьи стаи (сервер)", ["6 - Plantas e colheita (servidor)"] = "6 - Растения и урожай (сервер)", ["7 - Animais e criaturas (servidor)"] = "7 - Животные и существа (сервер)", ["8 - Comerciantes (servidor)"] = "8 - Торговцы (сервер)", ["9 - Outros (cada jogador)"] = "9 - Прочее (каждый игрок)", ["10 - Furacões (servidor)"] = "10 - Ураганы (сервер)", ["Dias in-game que cada estação dura"] = "Количество игровых дней в каждом сезоне", ["Desloca o ciclo (ex: DaysPerSeason*3 = mundo começa no inverno)"] = "Смещение сезонного цикла (например, DaysPerSeason*3 — мир начинается зимой)", ["Inverno: frio em todos os biomas com estação (fogueira, abrigo e roupa de frio resolvem)"] = "Зима: холод во всех биомах с сезонной сменой. Костёр, укрытие и тёплая одежда помогают согреться", ["Clima muda conforme a estação (neve no inverno, mais chuva no outono...)"] = "Погода меняется в зависимости от сезона: снег зимой, больше дождей осенью и т. д.", ["Últimos dias de cada estação em que o clima e o chão vão puxando pra próxima (camadas). 0 = troca seca"] = "Количество последних дней сезона, в течение которых погода и поверхность постепенно меняются к следующему сезону. 0 = мгновенная смена", ["Em quantas etapas a transição é dividida (espalhadas pelos TransitionDays)"] = "На сколько этапов разделён переход между сезонами в течение TransitionDays", ["Etapa em que grama, plantinhas e musgo terminam de virar pra próxima estação (com SmoothTransition vão virando aos poucos desde a etapa 1; indo pro inverno ou saindo dele a neve vem umas etapas atrasada)"] = "Этап завершения смены внешнего вида травы, мелких растений и мха. При плавном переходе изменения начинаются с первого этапа. При наступлении зимы и после неё снег появляется с задержкой в несколько этапов", ["Etapa em que os arbustos terminam de virar (começam depois da grama). As árvores vão virando a transição toda e completam quando a estação começa"] = "Этап завершения смены внешнего вида кустарников. Они начинают меняться после травы. Деревья меняются на протяжении всего перехода и завершают его к началу нового сезона", ["Cada etapa da vegetação espera a próxima noite do jogo pra aplicar (menos visível). Pular tempo (dormir) aplica na hora"] = "Каждый этап изменения растительности применяется следующей игровой ночью, чтобы переход был менее заметен. Сон немедленно применяет изменения", ["Inverno: placas de gelo boiando no mar, lagos e rios (dá pra andar em cima). A água continua normal. Fora: Ashlands e Deep North. Barcos atravessam as placas."] = "Зима: льдины появляются в море, озёрах и реках; по ним можно ходить. Вода остаётся обычной. Не затрагивает Пепельные земли и Крайний Север. Лодки могут проходить сквозь льдины", ["Buff/debuff da estação nos jogadores"] = "Сезонные положительные и отрицательные эффекты для игроков", ["Primavera: multiplicador do tempo de crescimento do que não está no calendário de cultivo (mudas de árvore etc.). Menor = cresce mais rápido"] = "Весна: множитель времени роста растений, не включённых в календарь выращивания, например саженцев деревьев. Чем меньше значение, тем быстрее рост", ["Verão: mesmo multiplicador (1 = normal)"] = "Лето: множитель времени роста (1 = обычная скорость)", ["Outono: mesmo multiplicador"] = "Осень: множитель времени роста", ["Inverno: mesmo multiplicador (com o calendário de cultivo ligado, nada cresce no inverno de qualquer jeito)"] = "Зима: множитель времени роста. При включённом календаре выращивания зимой рост всё равно останавливается", ["Materiais (nome exato, separados por vírgula) que recebem a pintura sazonal"] = "Точные названия материалов, получающих сезонную окраску. Перечисляйте через запятую", ["Padrões com * (sem diferenciar maiúscula): qualquer material de VEGETAÇÃO/GRAMA cujo nome bata também é pintado. Pega a vegetação do pântano sem precisar listar um por um. Pedra/construção nunca entra."] = "Шаблоны с * без учёта регистра: подходящие материалы растительности и травы также получают сезонную окраску. Позволяет охватить растительность болот без перечисления каждого материала. Камни и постройки не затрагиваются", ["Outono/Inverno: o musgo verde-limão pintado nos penhascos da Mistlands vira dourado/neve (só o verde, a rocha não muda)"] = "Осень и зима: ярко-зелёный мох на скалах Туманных земель становится золотистым осенью и заснеженным зимой. Меняется только мох, скалы не затрагиваются", ["Outono/Inverno: QUALQUER vegetação (shader de vegetação) que não esteja nas listas também muda — arbustos da Planície, plantinhas soltas etc. ficam brancas no inverno e douradas no outono."] = "Осень и зима: меняется также любая растительность, не указанная в списках и использующая шейдер растительности. Кустарники Равнин и отдельные растения становятся белыми зимой и золотистыми осенью", ["Pântano: névoa/ambiente muda de tom por estação (primavera verde, outono âmbar). Inverno não muda."] = "Болота: оттенок тумана и окружения меняется в зависимости от сезона. Весной преобладают зелёные тона, осенью — янтарные. Зимой изменений нет", ["Quanto de neve nas folhas/grama"] = "Количество снега на листьях и траве", ["Cor da neve"] = "Цвет снега", ["Quanto o verde vira laranja/vermelho no outono"] = "Интенсивность перехода зелёной растительности в оранжевые и красные тона осенью", ["Outono: quanto os pinheiros da Floresta Negra ficam amarelados"] = "Осень: степень пожелтения сосен в Чёрном лесу", ["Inverno: árvores (abeto, pinheiro, faia, bétula, carvalho) e arbustos perdem as folhas; tronco e galho ficam com a cor vanilla"] = "Зима: ели, сосны, буки, берёзы, дубы и кустарники теряют листву. Стволы и ветви сохраняют исходные цвета игры", ["Verão: quanto as folhas das árvores ficam mais escuras"] = "Лето: степень затемнения листвы деревьев", ["Verão: pontas da grama puxando pro dourado (0 = desliga)"] = "Лето: золотистый оттенок кончиков травы. 0 = отключено", ["Verão: tufos de flor amarelos/laranja no chão (mesmos biomas e quantidade da primavera)"] = "Лето: жёлтые и оранжевые цветочные заросли на земле. Биомы и количество такие же, как весной", ["Verão: pólen e sementinhas flutuando de dia, vaga-lumes à noite"] = "Лето: днём в воздухе летают пыльца и семена, ночью появляются светлячки", ["Biomas com as partículas no verão: Meadows, BlackForest, Swamp, Mistlands, Plains"] = "Биомы с летними частицами: Луга, Чёрный лес, Болота, Туманные земли, Равнины", ["Primavera: grupos de borboletas em volta do jogador de dia (0 = desliga)"] = "Весна: группы бабочек летают вокруг игрока днём. 0 = отключено", ["Biomas com borboletas na primavera: Meadows, BlackForest, Swamp, Mistlands, Plains"] = "Биомы с весенними бабочками: Луга, Чёрный лес, Болота, Туманные земли, Равнины", ["Verão: grupos de borboletas em volta do jogador de dia, nos biomas das partículas (0 = desliga)"] = "Лето: группы бабочек летают вокруг игрока днём в биомах, где появляются частицы. 0 = отключено", ["Verão no Pântano: libélulas e mosquitinhos na água, bruma rasteira de manhã e no fim da tarde, vaga-lumes em dobro à noite e musgo verde-vivo"] = "Лето на Болотах: стрекозы и мошки над водой, низкий туман утром и вечером, вдвое больше светлячков ночью и ярко-зелёный мох", ["Verão na Planície: rajadas e redemoinhos de poeira no vento e névoa dourada de calor no horizonte"] = "Лето на Равнинах: порывы ветра и вихри пыли, золотистая дымка жары на горизонте", ["Verão na Mistlands: névoa mais rala de dia, esporos brilhantes, vaga-lumes azuis à noite, mariposas no lugar das borboletas, gafanhotos e mosquitinhos na água"] = "Лето в Туманных землях: днём туман становится реже, появляются светящиеся споры, ночью — синие светлячки, вместо бабочек летают мотыльки, над водой появляются кузнечики и мошки", ["Inverno: cristais de gelo brilhando, neve caindo dos galhos, corvos, névoa gelada no Pântano e cristais na Mistlands"] = "Зима: сверкающие кристаллы льда, снег, осыпающийся с ветвей, вороны, морозный туман на Болотах и кристаллы в Туманных землях", ["Inverno: bafo de frio do próprio jogo saindo da boca dos jogadores ao ar livre (mesmo aquecidos)"] = "Зима: на улице изо рта игроков идёт пар, как в оригинальной игре, даже если они согреты", ["Inverno: aurora boreal no céu em noite limpa"] = "Зима: северное сияние в ясные ночи", ["Transição suave: a cada etapa da transição as folhas, arbustos e grama vão virando aos poucos, em manchas (umas folhas já amarelas, outras ainda verdes; a neve chegando aos poucos). Off = troca de uma vez, como antes"] = "Плавный переход: листья, кустарники и трава меняют цвет постепенно, пятнами. Одни листья уже жёлтые, другие ещё зелёные; снег также появляется постепенно. Выключено = мгновенная смена, как раньше", ["Transição suave dos efeitos: no fim de cada estação os efeitos dela vão rareando e os da próxima já começam a aparecer (folha caindo no fim do verão, floco de neve no fim do outono, aurora fraquinha...)"] = "Плавная смена эффектов: в конце сезона его эффекты постепенно исчезают, а эффекты следующего начинают появляться. Например, листья опадают в конце лета, снежинки появляются в конце осени, а северное сияние сначала едва заметно", ["Inverno: a grama, flor e samambaia do chão somem (ficou tudo debaixo da neve)"] = "Зима: трава, цветы и папоротники на земле исчезают под снегом", ["Outono: folhas caindo, rajadas de folha seca, neblina de manhã, bandos migrando e os bichos de cada bioma"] = "Осень: опадающие листья, порывы сухой листвы, утренний туман, перелётные стаи и характерные животные каждого биома", ["Outono: grupos de folhas caindo em volta do jogador (0 = desliga)"] = "Осень: группы опадающих листьев вокруг игрока. 0 = отключено", ["Outono: tufos de flor vermelhos no chão (mesmos biomas e quantidade da primavera)"] = "Осень: красные цветочные заросли на земле. Биомы и количество такие же, как весной", ["Outono: de vez em quando um bando de pássaros em V cruza o céu indo pro sul"] = "Осень: время от времени стая птиц летит на юг клином V", ["Outono: pontas da grama laranja/vermelhas e manchas marrons (0 = desliga)"] = "Осень: оранжевые и красные кончики травы и коричневые пятна. 0 = отключено", ["Primavera na Mistlands: libélulas de dia (de preferência perto da água)"] = "Весна в Туманных землях: стрекозы днём, преимущественно возле воды", ["Verão na Planície: quanto o capim fica dourado/palha (0 = só um pouco mais seco, como antes)"] = "Лето на Равнинах: интенсивность золотистого, соломенного оттенка травы. 0 = трава лишь немного суше, как раньше", ["Verão: céu mais limpo (bem menos chuva e névoa mais fina). Não mexe na cor da luz"] = "Лето: более ясное небо, значительно меньше дождей и более лёгкий туман. Не меняет цвет освещения", ["Primavera: flores nas árvores de folha, arbustos e grama"] = "Весна: цветы появляются на лиственных деревьях, кустарниках и траве", ["Quantidade de flores na primavera"] = "Количество цветов весной", ["Primavera: cachos de flor carmim/magenta nas pontas dos galhos das árvores e arbustos. 0 = sem"] = "Весна: малиновые и пурпурные соцветия на концах ветвей деревьев и кустарников. 0 = отключено", ["Resolução máxima das texturas geradas"] = "Максимальное разрешение создаваемых текстур", ["Salva as texturas geradas em config/ValheimSeasons/cache"] = "Сохраняет созданные текстуры в config/ValheimSeasons/cache", ["Inverno: musgo das pedras vira neve"] = "Зима: мох на камнях покрывается снегом", ["Inverno: chão nevado | Outono: Meadows dourado"] = "Зима: заснеженная земля. Осень: золотистые Луга", ["Quantos ms por frame o mod pode usar trocando texturas/terreno (menor = mais suave, troca mais devagar)"] = "Сколько миллисекунд на кадр мод может тратить на смену текстур и ландшафта. Меньше = плавнее, но медленнее", ["Primavera: os tufos de flor da Planície também aparecem no chão dos biomas da lista"] = "Весна: цветочные заросли с Равнин также появляются на земле в перечисленных биомах", ["Biomas que ganham os tufos de flor na primavera (a Planície já tem): Meadows, BlackForest, Swamp, Mistlands"] = "Биомы, в которых весной появляются цветочные заросли. На Равнинах они есть изначально: Луга, Чёрный лес, Болота, Туманные земли", ["Quantidade de tufos de flor na primavera (1 = igual à Planície vanilla). Vale pra Planície também"] = "Количество цветочных зарослей весной. 1 = как на исходных Равнинах. Настройка действует и на Равнины", ["Primavera: vaga-lumes em volta do jogador nos biomas da lista"] = "Весна: светлячки вокруг игрока в перечисленных биомах", ["Quantos grupos de vaga-lumes em volta do jogador"] = "Количество групп светлячков вокруг игрока", ["Biomas com as partículas na primavera: Meadows, BlackForest, Swamp, Mistlands, Plains"] = "Биомы с весенними частицами: Луга, Чёрный лес, Болота, Туманные земли, Равнины", ["Material do jogo usado no gelo do inverno (padrão: 'ice', o do oceano congelado do Deep North). Descubra outros com 'estacao material'. 'gerado' = gelo desenhado pelo mod"] = "Материал игры для зимнего льда. По умолчанию — 'ice', используемый на замёрзшем океане Крайнего Севера. Другие материалы можно найти командой 'estacao material'. 'gerado' = лёд, создаваемый модом", ["Mensagem na tela quando a estação muda"] = "Показывать сообщение на экране при смене сезона", ["Loga os materiais pintados e todos com textura (pra montar a lista)"] = "Записывать в журнал материалы с сезонной окраской и все материалы с текстурами для составления списка", ["TESTE (só no seu cliente, precisa do devcommands ligado): cada aperto troca Primavera > Verão > Outono > Inverno > desliga. Vazio = desativado"] = "ТЕСТ (только на вашем клиенте; требуется devcommands): каждое нажатие переключает Весну → Лето → Осень → Зиму → выключено. Пусто = отключено", ["Inverno: alcateias de lobos aparecem à noite pelo mapa (usa o sistema de spawn do próprio jogo; menos Montanha/Ashlands/Deep North)"] = "Зима: ночью по миру появляются стаи волков, используя стандартную систему появления существ игры. Не затрагивает Горы, Пепельные земли и Крайний Север", ["Chance (0 a 1) de cada área carregada tentar soltar um bando, a cada WolfCheckSeconds"] = "Вероятность от 0 до 1, что каждая загруженная область попытается создать стаю через интервал WolfCheckSeconds", ["Intervalo do spawn das alcateias, em segundos (mínimo 30)"] = "Интервал появления волчьих стай в секундах. Минимум 30", ["Lobos por alcateia (mínimo)"] = "Минимальное количество волков в стае", ["Lobos por alcateia (máximo) — também é o limite de lobos de inverno por área"] = "Максимальное количество волков в стае. Также ограничивает количество зимних волков в одной области", ["Estrelas máximas dos lobos (0, 1 ou 2)"] = "Максимальное количество звёзд у волков: 0, 1 или 2", ["Global key que libera as alcateias do inverno (padrão: defeated_bonemass = depois de matar o Bonemass). Vazio = desde o começo. Várias separadas por vírgula = precisa de todas. Ex.: defeated_eikthyr, defeated_gdking, defeated_bonemass, defeated_dragon"] = "Глобальные ключи, разрешающие появление зимних стай. По умолчанию defeated_bonemass — после убийства Массы Костей. Пусто = с самого начала. Несколько ключей через запятую означают, что должны быть выполнены все условия. Например: defeated_eikthyr, defeated_gdking, defeated_bonemass, defeated_dragon", ["Alcateias também de dia"] = "Разрешить появление волчьих стай днём", ["Inverno: sem roupa de frio e longe do calor você congela (igual montanha). Tocha, fogueira e comida quente salvam"] = "Зима: без тёплой одежды и вдали от источников тепла игрок замерзает, как в горах. Факел, костёр и горячая еда помогают согреться", ["Congela o dia todo. false = só à noite (de dia fica só com frio)"] = "Замерзание в течение всего дня. false = только ночью; днём действует обычный эффект холода", ["Dano EXTRA (além do congelamento vanilla) a cada 3s congelando. Para em 10% da vida"] = "Дополнительный урон помимо стандартного эффекта замерзания каждые 3 секунды. Прекращается при 10% здоровья", ["Inverno: comer comida quente deixa você aquecido (sem frio/congelamento)"] = "Зима: горячая еда согревает игрока и защищает от холода и замерзания", ["Minutos do efeito Aquecido"] = "Длительность эффекта согревания в минутах", ["Partes do nome das comidas quentes (separadas por vírgula)"] = "Фрагменты названий горячей еды, перечисленные через запятую", ["Inverno: não dá pra colher planta selvagem (frutinhas, cogumelos, cardo, sementes...) e nada renasce. Tudo volta ao normal na primavera"] = "Зима: нельзя собирать дикорастущие растения — ягоды, грибы, чертополох, семена и другие. Растения не возрождаются. Весной всё возвращается в норму", ["Frutinhas/cogumelos selvagens que ficam SEM FRUTO no inverno (partes do nome, separadas por vírgula)"] = "Дикорастущие ягоды и грибы, которые не дают урожая зимой. Указывайте фрагменты названий через запятую", ["Outras plantas SELVAGENS que não dá pra colher no inverno (cardo, dente-de-leão, sementes, cevada/linho selvagens...). Plantações do jogador já maduras colhem normal. Pedras, galhos e minérios nunca são afetados"] = "Другие дикорастущие растения, которые нельзя собирать зимой: чертополох, одуванчики, семена, дикий ячмень и лён. Созревшие посевы игрока собираются как обычно. Камни, ветки и руды не затрагиваются", ["Calendário de cultivo: cada plantação cresce melhor nas suas estações. No inverno nada cresce (plantações e mudas de árvore congelam até a primavera) e não dá pra plantar; o que já estava maduro dá pra colher"] = "Календарь выращивания: каждый вид растений лучше растёт в подходящие сезоны. Зимой рост останавливается, посевы и саженцы деревьев замерзают до весны, а сажать нельзя. Уже созревший урожай можно собрать", ["Plantação:estações boas (spring/summer/fall/winter, junte com +)"] = "Посев:подходящие сезоны (spring/summer/fall/winter; несколько сезонов объединяются через +)", ["Multiplicador do tempo de crescimento na estação boa (menor = mais rápido)"] = "Множитель времени роста в подходящий сезон. Чем меньше значение, тем быстрее рост", ["Multiplicador do tempo de crescimento fora de época"] = "Множитель времени роста вне подходящего сезона", ["Plantou nos primeiros X dias da primavera = bônus"] = "Посадка в первые X дней весны даёт бонус", ["Multiplicador do tempo de quem plantou no começo da primavera (menor = mais rápido)"] = "Множитель времени роста для растений, посаженных в начале весны. Чем меньше значение, тем быстрее рост", ["Tocha na mão esquenta igual fogueira"] = "Факел в руке согревает так же, как костёр", ["No inverno a tocha gasta X vezes mais rápido"] = "Зимой факел расходуется в X раз быстрее", ["Perto da lava conta como fogueira: aquece e seca quem está molhado (não dá Descansado)"] = "Рядом с лавой игрок согревается и высыхает, как у костра. Эффект «Отдохнувший» не предоставляется", ["Distância (m) da lava pra contar como fogueira"] = "Расстояние до лавы в метрах, в пределах которого она считается источником тепла", ["Quais placas de gelo usar: auto = as do mar do Deep North do próprio jogo | partes do nome dos prefabs, separadas por vírgula | gerado = placa desenhada pelo mod"] = "Какие льдины использовать: auto = стандартные льдины Крайнего Севера; можно указать фрагменты имён prefab через запятую; gerado = льдины, создаваемые модом", ["Inverno: quantidade de placas de gelo boiando no mar, lagos e rios (0 = nenhuma, 1 = normal, 2 = o dobro)"] = "Зима: количество льдин в морях, озёрах и реках. 0 = нет, 1 = обычное количество, 2 = вдвое больше", ["Inverno: se molhar não dá o debuff Molhado, e sim Gelado (lentidão). Montanha/Ashlands/Deep North ficam com o vanilla"] = "Зима: намокание накладывает эффект «Промёрзший», замедляющий движение, вместо эффекта «Мокрый». В Горах, Пепельных землях и на Крайнем Севере действуют стандартные правила игры", ["Quantos minutos o Gelado dura depois de sair da água"] = "Сколько минут длится эффект «Промёрзший» после выхода из воды", ["Velocidade com Gelado (0.8 = 20% mais lento, 1 = sem lentidão)"] = "Скорость передвижения с эффектом «Промёрзший»: 0.8 = на 20% медленнее, 1 = без замедления", ["Verão nas Planícies: se molhar não dá o debuff Molhado, e sim o buff Refrescante (protege do calor)"] = "Летом на Равнинах намокание даёт эффект «Освежение», защищающий от жары, вместо эффекта «Мокрый»", ["Quantos minutos o Refrescante dura depois de sair da água/chuva"] = "Сколько минут длится эффект «Освежение» после выхода из воды или окончания дождя", ["Regeneração de stamina com Refrescante (1.15 = +15%)"] = "Восстановление выносливости с эффектом «Освежение»: 1.15 = +15%", ["Em quais fases do verão o Calor aparece: 1 Ascensão, 2 Expansão, 3 Auge, 4 Declínio (separadas por vírgula). Padrão: 3 = só no auge do verão"] = "В каких фазах лета действует жара: 1 — Подъём, 2 — Развитие, 3 — Пик, 4 — Угасание. Перечисляйте через запятую. По умолчанию 3 = только в разгар лета", ["Verão: nas Planícies de dia, sem estar molhado ou na sombra, a stamina rende menos"] = "Летом на Равнинах днём выносливость расходуется менее эффективно, если игрок сухой и находится не в тени", ["Outono: itens extras ao colher plantações"] = "Осень: дополнительные предметы при сборе урожая", ["Partes do nome das plantações que ganham o bônus"] = "Фрагменты названий растений, на которые распространяется бонус", ["Primavera: animais domesticados têm filhotes X vezes mais rápido"] = "Весна: прирученные животные производят потомство в X раз быстрее", ["Igual ao PickableRegrow, só que pros cogumelos (padrão: voltam rápido no outono): primavera,verão,outono,inverno"] = "То же, что PickableRegrow, но для грибов. По умолчанию они быстро восстанавливаются осенью. Значения для весны, лета, осени и зимы", ["Multiplicador do TEMPO pra frutinha/planta colhível voltar a nascer (cogumelos usam o MushroomRegrow) (menor = volta mais rápido, dá pra pegar mais vezes): primavera,verão,outono,inverno"] = "Множитель времени возрождения ягод и собираемых растений. Для грибов используется MushroomRegrow. Чем меньше значение, тем быстрее растения восстанавливаются и тем чаще их можно собирать. Значения для весны, лета, осени и зимы", ["Multiplicador do tempo pra colmeia fazer mel: primavera,verão,outono,inverno"] = "Множитель времени производства мёда в ульях для весны, лета, осени и зимы", ["Inverno: a colmeia não faz mel e não dá pra colher (as abelhas hibernam)"] = "Зима: ульи не производят мёд, собирать его нельзя — пчёлы впадают в спячку", ["Spawns na primavera: Prefab:multiplicador (aceita *)"] = "Появление существ весной: Prefab:множитель. Поддерживается символ *", ["Spawns no verão"] = "Появление существ летом", ["Spawns no outono"] = "Появление существ осенью", ["Spawns no inverno"] = "Появление существ зимой", ["Outono: animais domesticados (ex.: javali, lobo, Lox) dropam X vezes mais ao morrer, independente das estrelas. 2 = dobro, 1 = desliga"] = "Осень: прирученные животные, например кабаны, волки и локс, при смерти оставляют в X раз больше добычи независимо от количества звёзд. 2 = вдвое больше, 1 = отключено", ["Criaturas ficam mais fortes/fracas conforme a estação (bosses, domesticados e Montanha/Ashlands/Deep North ficam de fora)"] = "Существа становятся сильнее или слабее в зависимости от сезона. Боссы, прирученные существа, а также существа Гор, Пепельных земель и Крайнего Севера не затрагиваются", ["Criaturas na primavera. Prefab:efeitos separados por espaço. dano1.2 = +20% dano | vel0.85 = 15% mais lenta | vida1.1 = aguenta +10% | spawn1.5 = +50% spawn | dia = só de dia. Parte do nome vale (Seeker pega SeekerBrood); o mais específico ganha"] = "Существа весной. Формат Prefab:эффекты, разделённые пробелами. dano1.2 = +20% урона; vel0.85 = на 15% медленнее; vida1.1 = +10% здоровья; spawn1.5 = +50% появления; dia = только днём. Допускается фрагмент имени: Seeker также затронет SeekerBrood. Более точное совпадение имеет приоритет", ["Criaturas no verão (mesmo formato)"] = "Существа летом. Используется тот же формат", ["Criaturas no outono (mesmo formato)"] = "Существа осенью. Используется тот же формат", ["Criaturas no inverno (mesmo formato)"] = "Существа зимой. Используется тот же формат", ["Como o jogador vê a próxima troca de estação (ícone, dica do ícone e mensagens): horas = tempo de VIDA REAL que falta (ex.: 2h 30min; dormir adianta) | dias = dias do jogo que faltam | imersivo = só o nome e a frase da fase (Despertar, Colheita, Silêncio...), 4 fases por estação, sem prazo. Com devcommands ligado, o comando 'estacao' sempre mostra o tempo real"] = "Как отображается время до следующего сезона: horas = оставшееся реальное время (например, 2 ч 30 мин; сон ускоряет смену); dias = оставшиеся игровые дни; imersivo = только название и фраза текущей фазы (Пробуждение, Урожай, Безмолвие и т. п.), четыре фазы на сезон без указания срока. При включённых devcommands команда 'estacao' всегда показывает реальное время", ["Comerciantes (Haldor, Hildir e a Bruxa) mudam preço e estoque conforme a estação"] = "Торговцы (Хальдор, Хильдир и Ведьма) меняют цены и ассортимент в зависимости от сезона", ["Comerciantes ganham falas da estação (ex.: Haldor reclamando dos preços no inverno)"] = "У торговцев появляются сезонные реплики, например жалобы Хальдора на зимние цены", ["Preço nos comerciantes na primavera: item:multiplicador (nome do prefab, aceita *). 0 = sem estoque. Ex.: honey:2 = mel pelo dobro"] = "Цены у торговцев весной: предмет:множитель (имя prefab; поддерживается *). 0 = отсутствует в продаже. Например, honey:2 = мёд по двойной цене", ["Preço nos comerciantes no verão (mesmo formato)"] = "Цены у торговцев летом. Используется тот же формат", ["Preço nos comerciantes no outono (mesmo formato)"] = "Цены у торговцев осенью. Используется тот же формат", ["Preço nos comerciantes no inverno (mesmo formato). Vale também pros itens extras da estação"] = "Цены у торговцев зимой. Используется тот же формат и применяется к дополнительным сезонным товарам", ["Itens extras à venda na primavera: Comerciante:Item=preço xQuantidade @globalkey (quantidade e key são opcionais). Comerciante: Haldor, Hildir ou BogWitch. Ex.: Haldor:Honey=20x5"] = "Дополнительные товары весной: Торговец:Предмет=цена xКоличество @globalkey. Количество и ключ необязательны. Торговец: Haldor, Hildir или BogWitch. Например: Haldor:Honey=20x5", ["Itens extras à venda no verão (mesmo formato)"] = "Дополнительные товары летом. Используется тот же формат", ["Itens extras à venda no outono (mesmo formato)"] = "Дополнительные товары осенью. Используется тот же формат", ["Itens extras à venda no inverno (mesmo formato). O preço final passa pelo TraderPriceWinter (mel 20 x2 = 40)"] = "Дополнительные товары зимой. Итоговая цена рассчитывается с учётом TraderPriceWinter. Например, мёд за 20 при множителе x2 стоит 40", ["Furacões viajando pelo oceano (longe da costa, fora do mar das Ashlands/Deep North). Puxam os barcos pro centro (dá pra fugir com vela cheia) e no miolo batem no barco e em quem está a bordo. Todo mundo vê o mesmo furacão no mesmo lugar"] = "Ураганы перемещаются по океану вдали от побережья и морей Пепельных земель и Крайнего Севера. Они тянут лодки к центру; при полном парусе можно попытаться уйти. В центре ураган повреждает судно и наносит урон находящимся на борту. Все игроки видят один и тот же ураган в одном месте", ["Quantos furacões ao mesmo tempo no oceano do mundo, bem longe um do outro: primavera,verão,outono,inverno (0 = nenhum)"] = "Количество одновременно существующих ураганов в океане. Они находятся далеко друг от друга. Значения для весны, лета, осени и зимы. 0 = нет ураганов", ["Quanto dura cada furacão, em minutos (depois some e outro nasce em outro lugar)"] = "Продолжительность каждого урагана в минутах. После исчезновения новый ураган появляется в другом месте", ["Força do puxão no centro (m/s²). Vela cheia escapa até uns 3; mais que isso fica difícil de fugir"] = "Сила притяжения к центру урагана в м/с². При значении около 3 можно уйти под полными парусами; при большей силе это сложнее", ["Dano no barco a cada 2s no miolo do furacão (um Karve aguenta uns 30s com 35)"] = "Урон судну каждые 2 секунды в центре урагана. Караве выдерживает около 30 секунд при значении 35", ["Dano em quem está no miolo do furacão (no barco ou nadando), a cada 2s"] = "Урон игроку в центре урагана — на судне или в воде — каждые 2 секунды", ["Perto de um furacão o céu vira tempestade (só pra quem está perto dele)"] = "Рядом с ураганом небо становится штормовым. Эффект виден только игрокам поблизости", ["Eventos/invasões que só acontecem em certas estações. evento:estação+estação (ex: wolves:winter, army_eikthyr:spring+summer)"] = "События и вторжения, происходящие только в определённые сезоны. Формат: событие:сезон+сезон. Например: wolves:winter, army_eikthyr:spring+summer", ["Carga máxima +"] = "Максимальный переносимый вес +", ["Carga maxima +"] = "Максимальный переносимый вес +", ["Estação:"] = "Сезон:", ["Estação: "] = "Сезон: ", ["Estacao: "] = "Сезон: ", ["Estação travada pelo admin"] = "Сезон зафиксирован администратором", ["Estacao travada pelo admin"] = "Сезон зафиксирован администратором", ["Vida regenera +"] = "Восстановление здоровья +", ["Vida regenera -"] = "Восстановление здоровья −", ["Stamina regenera +"] = "Восстановление выносливости +", ["Stamina regenera -"] = "Восстановление выносливости −", ["Proxima estacao em ~"] = "До следующего сезона примерно ", ["Proxima estacao em "] = "До следующего сезона ", ["Próxima estação em ~"] = "До следующего сезона примерно ", ["Próxima estação em "] = "До следующего сезона ", [" (tempo real; dormir adianta)"] = " (реального времени; сон ускоряет смену сезона)", [" pra proxima estacao (tempo real)"] = " до следующего сезона (реального времени)", [" pra próxima estação (tempo real)"] = " до следующего сезона (реального времени)", [" restante"] = " осталось", [" restantes"] = " осталось", [" dias"] = " дн.", [" dia"] = " дн.", [" (travada pelo admin)"] = " (зафиксирован администратором)", [" | transicao pra "] = " | переход к сезону ", [" | transição pra "] = " | переход к сезону ", ["etapa "] = "этап ", ["Fora de época: cresce devagar"] = "Вне сезона: растёт медленно", ["Fora de epoca: cresce devagar"] = "Вне сезона: растёт медленно", ["Estação boa: cresce mais rápido"] = "Подходящий сезон: растёт быстрее", ["Estacao boa: cresce mais rapido"] = "Подходящий сезон: растёт быстрее", ["Congelada: nada cresce no inverno (volta na primavera)"] = "Замёрзло: зимой ничего не растёт (рост возобновится весной)", ["A terra desperta."] = "Земля пробуждается.", ["Dias quentes e longos."] = "Тёплые и долгие дни.", ["Tempo de colheita."] = "Время урожая.", ["O frio castiga."] = "Холод суров.", ["<color=#9fd3ff>[Estações]</color> "] = "<color=#9fd3ff>[Сезоны]</color> ", ["Teste desligado — "] = "Тест выключен — ", ["[TESTE] sem transição"] = "[ТЕСТ] без перехода", ["[TESTE] "] = "[ТЕСТ] ", ["[TESTE]"] = "[ТЕСТ]", ["Modo teste das estações: ative o devcommands primeiro (F5 → devcommands)."] = "Режим тестирования сезонов: сначала включите devcommands (F5 → devcommands).", ["Estacoes: sem informacao do servidor (o servidor tem o mod?)"] = "Сезоны: нет данных от сервера (установлен ли мод на сервере?)", ["Estacoes: sem informação do servidor (o servidor tem o mod?)"] = "Сезоны: нет данных от сервера (установлен ли мод на сервере?)", ["Despertar"] = "Пробуждение", ["Florescer"] = "Цветение", ["Renovacao"] = "Обновление", ["Renovação"] = "Обновление", ["Plenitude"] = "Расцвет", ["Ascensao"] = "Подъём", ["Ascensão"] = "Подъём", ["Expansao"] = "Развитие", ["Expansão"] = "Развитие", ["Auge"] = "Пик", ["Declinio"] = "Угасание", ["Declínio"] = "Угасание", ["Mudanca"] = "Перемены", ["Mudança"] = "Перемены", ["Colheita"] = "Урожай", ["Despedida"] = "Прощание", ["Crepusculo"] = "Сумерки", ["Crepúsculo"] = "Сумерки", ["Silencio"] = "Безмолвие", ["Silêncio"] = "Безмолвие", ["Resistencia"] = "Стойкость", ["Resistência"] = "Стойкость", ["Renascimento"] = "Возрождение", ["Primavera"] = "Весна", ["Verao"] = "Лето", ["Verão"] = "Лето", ["Outono"] = "Осень", ["Inverno"] = "Зима", ["Estação"] = "Сезон", ["A terra desperta apos o longo silencio."] = "Земля пробуждается после долгого безмолвия.", ["A terra desperta após o longo silêncio."] = "Земля пробуждается после долгого безмолвия.", ["A vida retorna e os campos ganham novas cores."] = "Жизнь возвращается, и поля расцветают новыми красками.", ["O velho da espaco para aquilo que esta por vir."] = "Старое уступает место тому, что должно прийти.", ["O velho dá espaço para aquilo que está por vir."] = "Старое уступает место тому, что должно прийти.", ["A natureza encontra seu equilibrio e se prepara para o verao."] = "Природа обретает равновесие и готовится к лету.", ["A natureza encontra seu equilíbrio e se prepara para o verão."] = "Природа обретает равновесие и готовится к лету.", ["O sol se ergue e traz forca a terra."] = "Солнце поднимается, наполняя землю силой.", ["O sol se ergue e traz força à terra."] = "Солнце поднимается, наполняя землю силой.", ["As florestas crescem e a vida prospera."] = "Леса растут, и жизнь процветает.", ["O mundo alcanca seu momento de maior abundancia."] = "Мир достигает пика своего изобилия.", ["O mundo alcança seu momento de maior abundância."] = "Мир достигает пика своего изобилия.", ["O calor comeca a partir, anunciando a mudanca."] = "Жара отступает, предвещая перемены.", ["O calor começa a partir, anunciando a mudança."] = "Жара отступает, предвещая перемены.", ["As folhas mudam e a natureza comeca a se recolher."] = "Листья меняют цвет, и природа готовится к покою.", ["As folhas mudam e a natureza começa a se recolher."] = "Листья меняют цвет, и природа готовится к покою.", ["Chega o momento de reunir aquilo que foi cultivado."] = "Наступает время собирать выращенное.", ["As ultimas folhas caem diante do vento frio."] = "Последние листья опадают под порывами холодного ветра.", ["As últimas folhas caem diante do vento frio."] = "Последние листья опадают под порывами холодного ветра.", ["A luz diminui enquanto o inverno se aproxima."] = "Световой день сокращается, приближается зима.", ["A neve cobre a terra e o mundo adormece."] = "Снег укрывает землю, и мир засыпает.", ["Apenas os mais fortes enfrentam o frio."] = "Лишь самые стойкие способны противостоять холоду.", ["A noite se torna longa e o frio alcanca seu auge."] = "Ночи становятся длиннее, а холод достигает пика.", ["A noite se torna longa e o frio alcança seu auge."] = "Ночи становятся длиннее, а холод достигает пика.", ["O gelo comeca a ceder, anunciando um novo ciclo."] = "Лёд начинает отступать, возвещая о новом цикле.", ["O gelo começa a ceder, anunciando um novo ciclo."] = "Лёд начинает отступать, возвещая о новом цикле.", ["O Verão aquece os campos"] = "Лето согревает поля", ["O Outono pinta as florestas"] = "Осень раскрашивает леса", ["O Inverno cobre o mundo de neve"] = "Зима укрывает мир снегом", ["A Primavera desperta a terra"] = "Весна пробуждает землю", ["O ar esfria... o inverno se aproxima"] = "Воздух остывает... приближается зима", ["A neve comeca a derreter"] = "Снег начинает таять", ["Os dias ficam mais quentes"] = "Дни становятся теплее", ["O vento muda... o outono se aproxima"] = "Ветер меняется... приближается осень" }; private static readonly KeyValuePair<string, string>[] SortedTranslations = Translations.OrderByDescending((KeyValuePair<string, string> pair) => pair.Key.Length).ToArray(); private void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown _harmony = new Harmony("ru.valheimseasons.localization"); int count = 0; PatchStringMethod("ValheimSeasons.SE_Season", "GetIconText", ref count); PatchStringMethod("ConfigurationManager.SettingEntryBase", "get_Category", ref count); PatchStringMethod("ConfigurationManager.SettingEntryBase", "get_Description", ref count); PatchStringMethod("ValheimSeasons.SE_Season", "GetTooltipString", ref count); PatchStringMethod("ValheimSeasons.SeasonText", "Name", ref count); PatchStringMethod("ValheimSeasons.SeasonText", "Arrival", ref count); PatchStringMethod("ValheimSeasons.SeasonClock", "PhaseName", ref count); PatchStringMethod("ValheimSeasons.SeasonClock", "PhaseLine", ref count); PatchStringMethod("ValheimSeasons.SeasonClock", "IconText", ref count); PatchStringMethod("ValheimSeasons.SeasonClock", "TooltipLine", ref count); PatchStringMethod("ValheimSeasons.SeasonClock", "Remaining", ref count); PatchStringMethod("ValheimSeasons.SeasonTooltip", "Build", ref count); PatchStringMethod("ValheimSeasons.SeasonPhase", "Arrival", ref count); PatchStringMethod("ValheimSeasons.SeasonClient", "Describe", ref count); PatchStringArguments("Character", "Message", ref count); PatchStringArguments("Console", "Print", ref count); PatchStringArguments("MessageHud", "ShowMessage", ref count); InstallSpecialPatches(ref count); ((BaseUnityPlugin)this).Logger.LogInfo((object)("Русификатор запущен. Установлено патчей: " + count)); } private void PatchStringMethod(string typeName, string methodName, ref int count) { //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown try { Type type = AccessTools.TypeByName(typeName); if (type == null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Тип не найден: " + typeName)); return; } MethodInfo[] array = (from m in AccessTools.GetDeclaredMethods(type) where m.Name == methodName && m.ReturnType == typeof(string) select m).ToArray(); if (array.Length == 0) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Строковый метод не найден: " + typeName + "." + methodName)); return; } MethodInfo[] array2 = array; foreach (MethodInfo methodInfo in array2) { _harmony.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(typeof(LocalizationPlugin).GetMethod("TranslateResult", BindingFlags.Static | BindingFlags.NonPublic)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); count++; ((BaseUnityPlugin)this).Logger.LogInfo((object)("Патч установлен: " + typeName + "." + methodName)); } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("шибка патча " + typeName + "." + methodName + ": " + ex)); } } private void PatchStringArguments(string typeName, string methodName, ref int count) { //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected O, but got Unknown try { Type type = AccessTools.TypeByName(typeName); if (type == null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Тип не найден: " + typeName)); return; } MethodInfo[] array = (from m in AccessTools.GetDeclaredMethods(type) where m.Name == methodName && m.GetParameters().Any((ParameterInfo p) => p.ParameterType == typeof(string)) select m).ToArray(); MethodInfo[] array2 = array; foreach (MethodInfo methodInfo in array2) { _harmony.Patch((MethodBase)methodInfo, new HarmonyMethod(typeof(LocalizationPlugin).GetMethod("TranslateStringArguments", BindingFlags.Static | BindingFlags.NonPublic)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); count++; ((BaseUnityPlugin)this).Logger.LogInfo((object)("Патч аргументов установлен: " + typeName + "." + methodName)); } if (array.Length == 0) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Метод со строковым аргументом не найден: " + typeName + "." + methodName)); } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Ошибка патча аргументов " + typeName + "." + methodName + ": " + ex)); } } private static void TranslateStringArguments(object[] __args) { if (__args == null) { return; } for (int i = 0; i < __args.Length; i++) { string text = __args[i] as string; if (text != null && !string.IsNullOrEmpty(text)) { KeyValuePair<string, string>[] sortedTranslations = SortedTranslations; for (int j = 0; j < sortedTranslations.Length; j++) { KeyValuePair<string, string> keyValuePair = sortedTranslations[j]; text = text.Replace(keyValuePair.Key, keyValuePair.Value); } __args[i] = text; } } } private static void TranslateResult(ref string __result) { if (!string.IsNullOrEmpty(__result)) { __result = TranslateText(__result); } } private void InstallSpecialPatches(ref int count) { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown PatchStringMethod("ValheimSeasons.CropCalendar", "Hover", ref count); try { Type type = AccessTools.TypeByName("ValheimSeasons.SeasonEffects"); MethodInfo methodInfo = ((type == null) ? null : AccessTools.Method(type, "Make", (Type[])null, (Type[])null)); if (methodInfo == null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Не найден метод ValheimSeasons.SeasonEffects.Make"); } else { _harmony.Patch((MethodBase)methodInfo, new HarmonyMethod(typeof(LocalizationPlugin).GetMethod("TranslateSeasonEffect", BindingFlags.Static | BindingFlags.NonPublic)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); count++; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Патч сезонных эффектов установлен."); } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Ошибка патча сезонных эффектов: " + ex)); } PatchTranspiler("ValheimSeasons.SeasonClient", "SetTest", ref count); PatchTranspiler("ValheimSeasons.SeasonClient", "SetTestLayer", ref count); } private void PatchTranspiler(string typeName, string methodName, ref int count) { //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown try { Type type = AccessTools.TypeByName(typeName); MethodInfo methodInfo = ((type == null) ? null : AccessTools.Method(type, methodName, (Type[])null, (Type[])null)); if (methodInfo == null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Не найден метод для перевода строк: " + typeName + "." + methodName)); return; } _harmony.Patch((MethodBase)methodInfo, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(typeof(LocalizationPlugin).GetMethod("TranslateSeasonTestStrings", BindingFlags.Static | BindingFlags.NonPublic)), (HarmonyMethod)null, (HarmonyMethod)null); count++; ((BaseUnityPlugin)this).Logger.LogInfo((object)("Транспилер перевода установлен: " + typeName + "." + methodName)); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Ошибка транспилера " + typeName + "." + methodName + ": " + ex)); } } private static void TranslateSeasonEffect(ref string title, ref string tooltip) { title = TranslateText(title); tooltip = TranslateText(tooltip); } private static IEnumerable<CodeInstruction> TranslateSeasonTestStrings(IEnumerable<CodeInstruction> instructions) { foreach (CodeInstruction instruction in instructions) { if (instruction.opcode == OpCodes.Ldstr && instruction.operand is string text) { instruction.operand = TranslateText(text); } yield return instruction; } } private static string TranslateText(string text) { if (string.IsNullOrEmpty(text)) { return text; } KeyValuePair<string, string>[] sortedTranslations = SortedTranslations; for (int i = 0; i < sortedTranslations.Length; i++) { KeyValuePair<string, string> keyValuePair = sortedTranslations[i]; text = text.Replace(keyValuePair.Key, keyValuePair.Value); } return text; } private void OnDestroy() { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } } }