From 1948d20f6d24421c39b4184e5b708a62cc219cb5 Mon Sep 17 00:00:00 2001 From: Ender Wiggin Date: Mon, 13 Jun 2022 11:10:14 +0300 Subject: [PATCH 01/22] Added extension that allows to check if character can cast a cantrip --- .../Api/Extensions/RulesetCharacterExension.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs b/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs index b1bdd61df3..610c6dba79 100644 --- a/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs +++ b/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs @@ -33,6 +33,24 @@ public static bool CanUsePower(this RulesetCharacter instance, FeatureDefinition return power.GetAllSubFeaturesOfType() .All(v => v.CanUsePower(instance)); } + + public static bool CanCastCantrip( + this RulesetCharacter character, + SpellDefinition spellDefinition, + out RulesetSpellRepertoire spellRepertoire) + { + spellRepertoire = null; + foreach (var reperoire in character.spellRepertoires) + { + if (reperoire.HasKnowledgeOfSpell(spellDefinition)) + { + spellRepertoire = reperoire; + return true; + } + } + + return false; + } public static List GetAttackModesByActionType(this RulesetCharacter instance, ActionDefinitions.ActionType actionType) From 7a8b446b441d093682ff0110a68f31762faffc16 Mon Sep 17 00:00:00 2001 From: Ender Wiggin Date: Mon, 13 Jun 2022 11:12:52 +0300 Subject: [PATCH 02/22] use `CanCastCantrip` instead of `CanCastSpell` to retrieve repertoire for reaction cantrip. `CanCastSpell` considers cantrip to be not ready for wizards (maybe other repertoires too) which leads to repertoire being null and reaction cantrip mising its to-hit bonuses and potentially other effects. --- SolastaCommunityExpansion/CustomUI/ReactionRequestWarcaster.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SolastaCommunityExpansion/CustomUI/ReactionRequestWarcaster.cs b/SolastaCommunityExpansion/CustomUI/ReactionRequestWarcaster.cs index 0e0e0f70a0..7b10a5f1c4 100644 --- a/SolastaCommunityExpansion/CustomUI/ReactionRequestWarcaster.cs +++ b/SolastaCommunityExpansion/CustomUI/ReactionRequestWarcaster.cs @@ -167,7 +167,7 @@ public override void SelectSubOption(int option) var rulesService = ServiceRepository.GetService(); var rulesetCharacter = actingCharacter.RulesetCharacter; - rulesetCharacter.CanCastSpell(spell, true, out var spellRepertoire); + rulesetCharacter.CanCastCantrip(spell, out var spellRepertoire); var spellEffect = rulesService.InstantiateEffectSpell(rulesetCharacter, spellRepertoire, spell, spell.SpellLevel, false); ReactionParams.RulesetEffect = spellEffect; From fa0e3a69e2e7da50ecaa4cd8998fcbacc9298335 Mon Sep 17 00:00:00 2001 From: Ender Wiggin Date: Mon, 13 Jun 2022 11:13:25 +0300 Subject: [PATCH 03/22] removed now not needed patch --- .../CharacterActionCastSpellPatcher.cs | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 SolastaCommunityExpansion/Patches/CustomFeatures/CustomReactions/CharacterActionCastSpellPatcher.cs diff --git a/SolastaCommunityExpansion/Patches/CustomFeatures/CustomReactions/CharacterActionCastSpellPatcher.cs b/SolastaCommunityExpansion/Patches/CustomFeatures/CustomReactions/CharacterActionCastSpellPatcher.cs deleted file mode 100644 index 88c29adc2f..0000000000 --- a/SolastaCommunityExpansion/Patches/CustomFeatures/CustomReactions/CharacterActionCastSpellPatcher.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Linq; -using HarmonyLib; - -namespace SolastaCommunityExpansion.Patches.CustomFeatures.CustomReactions; - -// ensures reaction spells have the correct repertoire assigned for bonus calculation -[HarmonyPatch(typeof(CharacterActionCastSpell), "SpendMagicEffectUses")] -internal static class CharacterActionCastSpell_SpendMagicEffectUses -{ - internal static void Prefix(CharacterActionCastSpell __instance) - { - if (__instance.ActionId != ActionDefinitions.Id.CastReaction || __instance.activeSpell.spellRepertoire != null) - { - return; - } - - var spell = __instance.activeSpell.spellDefinition; - var bonus = 0; - var selectedRepertoire = new RulesetSpellRepertoire(); - var repertoires = __instance.ActingCharacter.RulesetCharacter.SpellRepertoires - .Where(x => - x.KnownSpells.Contains(spell) - || x.KnownCantrips.Contains(spell) - || x.PreparedSpells.Contains(spell)); - - foreach (var repertoire in repertoires) - { - if (repertoire.spellAttackBonus < bonus) - { - continue; - } - - bonus = repertoire.spellAttackBonus; - selectedRepertoire = repertoire; - } - - __instance.activeSpell.spellRepertoire = selectedRepertoire; - } -} From eeafbb712a30b51d3713640687f587f1820078ba Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Mon, 13 Jun 2022 15:18:11 +0200 Subject: [PATCH 04/22] Update Modui-ru.txt --- .../Translations/Modui-ru.txt | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/SolastaCommunityExpansion/Translations/Modui-ru.txt b/SolastaCommunityExpansion/Translations/Modui-ru.txt index 92262014eb..09b66ed54c 100644 --- a/SolastaCommunityExpansion/Translations/Modui-ru.txt +++ b/SolastaCommunityExpansion/Translations/Modui-ru.txt @@ -8,7 +8,7 @@ ModUi/&Advanced Дополнительно: ModUi/&AdvancedHelp . ВНИМАНИЕ: Эти настройки потребуют, чтобы у игрока был установлен этот мод. ModUi/&Adventure Приключение: ModUi/&AllItemInDm Все предметы в Создателе Подземелий -ModUi/&AllowAnyClassToWearSylvanArmor Разрешить любому классу носить лесную броню или одежду Светоносного. +ModUi/&AllowAnyClassToWearSylvanArmor Разрешить любому классу носить Лесной доспех или одежду Несущего Свет. ModUi/&AllowDruidToWearMetalArmor Разрешить Друидам носить металлические доспехи ModUi/&AllowDungeonsMaxLevel20 Разрешить подземелья с максимальным уровнем 20 [Требуется перезапуск] ModUi/&AllowGadgetsAndPropsToBePlacedAnywhere Разрешить размещение гаджетов и объектов в любом месте на карте [нажмите CTRL во время размещения, чтобы обойти любую проверку] @@ -18,7 +18,7 @@ ModUi/&AllowUnmarkedSorcerers Разрешить неотмеченных ALT выделяет гаджеты только в поле зрения группы [только в пользовательских подземельях] ModUi/&Ammunition Боеприпасы -ModUi/&Armor Броня +ModUi/&Armor Доспехи ModUi/&AutoPauseOnVictory Ставить паузу после победы в бою ModUi/&Basic Основное: ModUi/&Battle Битва: @@ -35,13 +35,13 @@ ModUi/&CraftingHelp . Нажмите кнопку, чтобы мгновенно ModUi/&Credits Благодарности ModUi/&CreditsAndDiagnostics Благодарности и диагностика ModUi/&DisableAutoEquip Отключить автоэкипировку предметов в инвентаре -ModUi/&DisableSenseDarkVisionFromAllRaces Отключить Чувство Тёмное Зрение для всех рас [Требуется перезагрузка] +ModUi/&DisableSenseDarkVisionFromAllRaces Отключить Чувство Тёмное зрение для всех рас [Требуется перезагрузка] ModUi/&DisableSenseSuperiorDarkVisionFromAllRaces Отключить Чувство Превосходное тёмное зрение для всех рас [Требуется перезагрузка] -ModUi/&DisplayAllKnownSpellsDuringLevelUp Отображение всех известных заклинаний других классов при повышении уровня +ModUi/&DisplayAllKnownSpellsDuringLevelUp Отображать все известные заклинания других классов при повышении уровня ModUi/&DontFollowCharacterInBattle Боевая камера не следует за персонажем, когда он уже на экране ModUi/&DontFollowMargin + Если только герой не за экраном или находится в пределах % от края экрана ModUi/&DungeonMaker Создатель Подземелий: -ModUi/&DungeonMakerBasicHelp . Эти настройки не потребуют от игрока установки этого мода.\n. Вы можете встроить любую переменную кампании в свои диалоги, описания и т. д.\n. CE заменит их на их значения во время игры [т.е.: Привет, {Приветствие}, герой!] +ModUi/&DungeonMakerBasicHelp . Эти настройки не потребуют от игрока установки этого мода.\n. Вы можете встроить любую переменную кампании в свои диалоги, описания и т.д.\n. CE заменит их на их значения во время игры [т.е.: Привет, {Приветствие}, герой!] ModUi/&DungeonMakerMenu Создатель Подземелий ModUi/&EmpressGarbAppearance Внешний вид Одеяния Императрицы ModUi/&EnableAdditionalFociInDungeonMaker + Добавить новые предметы фокусоровки в Создатель Подземелий @@ -50,36 +50,36 @@ ModUi/&EnableAlternateHuman Разрешить альтернативные ос ModUI/&EnableBetaContent Включить контент бета-версии [имейте в виду, что ваши сохранения или герои могут сломаться в будущем] [Требуется перезагрузка] ModUi/&EnableCancelEditOnRightMouseClick Включить отмену действия по щелчку правой кнопкой мыши ModUi/&EnableCharacterChecker Включить экран инспектора персонажа -ModUi/&EnableCharacterExport Включить экспорт персонажа по CTRL-SHIFT-(E) [только на экране проверки персонажа] +ModUi/&EnableCharacterExport Включить экспорт персонажа по CTRL-SHIFT-(E) [только на экране проверки персонажа] ModUi/&EnableCheatMenu Включить меню читов ModUi/&EnableCtrlClickBypassAttackReactionPanel При атаке с зажатой CTRL игнорировать всплывающие панели реакций ModUi/&EnableCtrlClickBypassMetamagicPanel При наложении заклинаний с зажатой CTRL игнорировать всплывающие панели метамагии Заклинателя ModUi/&EnableCtrlClickOnlySwapsMainHand При смене набора оружия с зажатой CTRL сохранять предмет во второй руке -ModUi/&EnableDungeonMakerModdedContent Включить Создатель Подземелий Pro [Требуется перезагрузка]\n\nвключает в себя плоские комнаты, размеры подземелий 150x150 и 200x200 и простое совмещение элементов из разных сред.\nу вас должна быть хотя бы одна комната на открытой местности, если вы выбираете среду на открытой местности +ModUi/&EnableDungeonMakerModdedContent Включить Создатель Подземелий Pro [Требуется перезагрузка]\n\nвключает в себя плоские комнаты, размеры подземелий 150x150 и 200x200 и простое совмещение элементов из разных сред\nу вас должна быть хотя бы одна комната на открытой местности, если вы выбираете среду на открытой местности ModUi/&EnableEpicPointsAndArray Включить эпическую систему покупки характеристик на 35 очков и набор значений [17,15,13,12,10,8] [Требуется перезагрузка] ModUi/&EnableExtraHighLevelMonsters Включить дополнительных монстров высокого уровня (Опасность 20+) для кампаний 3 и 4 тира (11+ уровня) [Требуется перезапуск] ModUi/&EnableFeatsAtEvenLevels Включить выбор бонусных особенностей (черт) на уровнях класса 2, 6, 10 и 14 ModUi/&EnableFlexibleBackgrounds Включить гибкие предыстории [выбор владений навыками и инструментами из предысторий] ModUi/&EnableFlexibleRaces Включить гибкие расы [выбирать распределение очков характеристик вместо использования стандартный расовых бонусов] -ModUi/&EnableHotkeyDebugOverlay Открывать оверлей отладки по CTRL-SHIFT-(D) -ModUi/&EnableHotkeyToggleHud Открывать худ по CTRL-SHIFT-(H), чтобы переключать видимость всех панелей пользовательского интерфейса -ModUi/&EnableHotkeyToggleIndividualHud Изменять видимость панелей пользовательского интерфейса по: CTRL-SHIFT-(C) - панель управления, CTRL-SHIFT-(L) - лог, CTRL-SHIFT-(M) - карта, CTRL-SHIFT-(P) - партия -ModUi/&EnableHotkeyZoomCamera Включить приближение камеры по CTRL-SHIFT-(Z) [полезно при создании скриншотов подземелий для публикации] +ModUi/&EnableHotkeyDebugOverlay Открывать оверлей отладки по CTRL-SHIFT-(D) +ModUi/&EnableHotkeyToggleHud Открывать худ по CTRL-SHIFT-(H), чтобы переключать видимость всех панелей пользовательского интерфейса +ModUi/&EnableHotkeyToggleIndividualHud Изменять видимость панелей пользовательского интерфейса по: CTRL-SHIFT-(C) - панель управления, CTRL-SHIFT-(L) - лог, CTRL-SHIFT-(M) - карта, CTRL-SHIFT-(P) - партия +ModUi/&EnableHotkeyZoomCamera Включить приближение камеры по CTRL-SHIFT-(Z) [полезно при создании скриншотов подземелий для публикации] ModUi/&EnableIgnoreCtrlClickOnCriticalHit + игнорировать только если не критическое попадание ModUi/&EnableInventoryFilteringAndSorting Включить фильтрацию и сортировку инвентаря ModUi/&EnableInventoryTaintNonProficientItemsRed + Выделять красным любой предмет, которым герой не владеет -ModUi/&EnableInvisibleCrownOfTheMagister Скрыть Корону Магистра в интерфейсе игры +ModUi/&EnableInvisibleCrownOfTheMagister Скрывать Корону Магистра в интерфейсе игры ModUi/&EnableLevel20 Включить уровень 20 [Требуется перезагрузка] ModUi/&EnableLogDialoguesToConsole Включить запись диалогов в игровую консоль (лог) во время повествования ModUi/&EnableMinInOutAttributes Учитывать требования к минимальным значениям характеристик ModUi/&EnableOnTheFlyTranslations Включить перевод пользовательского контента в режиме реального времени [требуется стабильное интернет-соединение для постоянной отправки данных на https://translate.googleapis.com] -ModUi/&EnableRelearnSpells Развешить выбирать заговоры или заклинания, уже изученные в других классах +ModUi/&EnableRelearnSpells Разрешить выбирать заговоры или заклинания, уже изученные в других классах ModUi/&EnableRespec Разрешить действия пересборки персонажа (RESPEC) и понижения уровня (Level Down) после отдыха ModUi/&EnablesAsiAndFeat Разрешить одновременно и увеличение значений характеристик, и выбор бонусной особенности (черты) [вместо выбора только одного] ModUi/&EnableSaveByLocation Включить сохранение по кампаниям/местоположениям ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Включить восстановление Тайного Оружия у Волшебника Тайного Бойца после короткого отдыха -ModUi/&EnableTeleportParty Включить телепортацию группы по CTRL-SHIFT-(T) [вы можете сломать задания или карты, если телепортируетесь в неразведанное место] -ModUi/&EnableTogglesToOverwriteDefaultTestParty Включить переключатели в пуле персонажей, чтобы установить игровую и тестовую группу по умолчанию. +ModUi/&EnableTeleportParty Включить телепортацию группы по CTRL-SHIFT-(T) [вы можете сломать задания или карты, если телепортируетесь в неразведанное место] +ModUi/&EnableTogglesToOverwriteDefaultTestParty Включить переключатели в пуле персонажей, чтобы устанавливать игровую и тестовую группы по умолчанию. ModUi/&EnableUnityExplorer Включить пользовательский интерфейс Unity Explorer ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Включить неограниченное Мистическое восстановление у Волшебника Мастера Заклинаний\nМожно включать только когда у способности есть доступные использования или перед созданием персонажа ModUi/&EnableUpcastConjureElementalAndFey Разрешить использовать Сотворение элементаля, Сотворение фей на больших уровнях заклинания @@ -99,11 +99,11 @@ ModUi/&Gameplay Геймплей ModUi/&GameUi Игровой интерфейс ModUi/&General Общее: ModUi/&GeneralMenu Общее -ModUi/&HideExitAndTeleporterGizmosIfNotDiscovered Скрыть визуальные эффекты выходов и телепортов, если они еще не обнаружены +ModUi/&HideExitAndTeleporterGizmosIfNotDiscovered Скрыть визуальные эффекты выходов и телепортов, если они ещё не обнаружены ModUi/&HideMonsterHitPoints Отображать здоровье монстров по шагам 25% / 50% / 75% / 100% вместо точных очков жизни ModUi/&HiderArmor Скрыть доспехи ModUi/&House Домашние правила (хоумбрю): -ModUi/&IncreaseSenseNormalVision Увеличьте дальность Sense Normal Vision, чтобы активировать дальние атаки [40 идеально подходит для того, чтобы враги не присоединялись слишком далеко]< /цвет> +ModUi/&IncreaseSenseNormalVision Увеличить дальность Чувства Нормальное зрение, чтобы позволить совершать атаки на большой дистанции [40 идеально подходит для того, чтобы враги не присоединялись к битве слишком издалека]< /цвет> ModUi/&IncreaseSenseNormalVisionHelp [Требуется перезагрузка] ModUi/&InitialChoices Начальные выборы: ModUi/&Interface Интерфейс @@ -113,7 +113,7 @@ ModUi/&ItemInDm Предметы в Создателе Подземелий ModUi/&Items Предметы: ModUi/&ItemsCraftingMerchants Предметы, изготовление и торговцы ModUi/&ItemsHelp1 У вас должен быть открыт экран проверки персонажей, чтобы добавлять предметы героям... -ModUi/&ItemsHelp2 . Нажмите +, чтобы добавить предметы в наземный контейнер на панели осмотра. +ModUi/&ItemsHelp2 . Нажмите +, чтобы добавить предметы в наземный контейнер на панели проверки. ModUi/&KeyboardMouse Клавиатура и мышь ModUi/&MakeAllMagicStaveArcaneFoci Сделать все магические посохи магическими фокусами [кроме Посоха исцеления, который является универсальным] [Требуется перезагрузка] ModUi/&MarkInvisibleTeleportersOnLevelMap + Также отмечать местоположение невидимых телепортов на карте уровня после обнаружения @@ -156,7 +156,7 @@ ModUi/&ScaleMerchantPricesCorrectly Правильно/в точности ма ModUi/&SelectAll Выбрать все ModUi/&SelectSuggested Выбрать рекомендуемые ModUi/&Services Сервисы -ModUi/&SetBeltOfDwarvenKindBeardChances Установить вероятность появления бороды при использовании Пояса гномов +ModUi/&SetBeltOfDwarvenKindBeardChances Установить вероятность появления бороды при использовании Пояса Дварфов ModUi/&ShowCraftingRecipeInDetailedTooltips Показывать рецепт изготовления в подробных всплывающих подсказках ModUi/&ShowDescriptions Показать описания ModUi/&SpellInstructions . Вы можете отдельно назначить каждое заклинание любому списку заклинаний или просто выбрать предложенный набор @@ -165,18 +165,18 @@ ModUi/&Spells Заклинания: ModUi/&SpellsMenu Заклинания ModUi/&SRD SRD: ModUi/&StockGorimStoreWithAllNonMagicalClothing Снабдить магазин Горим всей немагической одеждой [Требуется перезагрузка] -ModUi/&StockHugoStoreWithAdditionalFoci Снабдить магазин Хьюго Жезлом Опознания, Чародейским посохом, Воротник Друида, Посохом и Дубиной в качестве предметов для фокусировки +ModUi/&StockHugoStoreWithAdditionalFoci Снабдить магазин Хьюго Жезлом Опознания, Чародейским посохом, Воротником Друида, Посохом и Дубиной в качестве предметов для фокусировки ModUi/&Subclasses Подклассы ModUi/&TargetLanguage Целевой язык ModUi/&Tools Инструменты ModUi/&TotalFeatsGrantedFistLevel Всего бонусных особенностей (черт) на первом уровне ModUi/&Translate Перевести ModUi/&TranslateCancel Отменить {0} в {1} -ModUi/&TranslationEngine Механизм перевода +ModUi/&TranslationEngine Движок перевода ModUi/&Translations Переводы -ModUi/&UnleashEnemyAsNpc Разрешить выбор монстров на гаджетах NPC [зажмите CTRL при нажатии на кнопку «Выбрать» на панели гаджетов] -ModUi/&UnleashNpcAsEnemy Разрешить выбор NPC на гаджетах монстров [зажмите CTRL при нажатии на кнопку «Выбрать» на панели гаджетов] -ModUi/&UnlockAllNpcFaces Разблокировать все лица NPC +ModUi/&UnleashEnemyAsNpc Разрешить выбор монстров на гаджетах НИП [зажмите CTRL при нажатии на кнопку «Выбрать» на панели гаджетов] +ModUi/&UnleashNpcAsEnemy Разрешить выбор НИП на гаджетах монстров [зажмите CTRL при нажатии на кнопку «Выбрать» на панели гаджетов] +ModUi/&UnlockAllNpcFaces Разблокировать все лица НИП ModUi/&UnlockEyeStyles Разблокировать стили глаз ModUi/&UnlockGlowingColorsForAllMarksAndTatoos Разблокировать светящиеся цвета для всех отметин и татуировок ModUi/&UnlockGlowingEyeColors Разблокировать светящиеся цвета глаз @@ -185,7 +185,7 @@ ModUi/&UsableDevice Используемое устройство< ModUi/&UseOfficialAdvantageDisadvantageRules Использовать официальные правила преимущества/помехи ModUi/&Visuals Визуальные эффекты: ModUi/&Weapon Оружие -ModUi/&AllowCrossbowsToUseBowFeatures Разрешить арбалетам пользоваться преимуществами луков -ModUi/&RemoveConcentrationRequirementsFromAnySpell Удалите требование концентрации для любого заклинания [Требуется перезапуск] -ModUi/&OverwriteGameLanguage Перезаписать язык игры: -ModUi/&Campaigns Campaigns: \ No newline at end of file +ModUi/&AllowCrossbowsToUseBowFeatures Разрешить арбалетам получать бонусы для луков +ModUi/&RemoveConcentrationRequirementsFromAnySpell Убрать требование концентрации для любых заклинаний [Требуется перезапуск] +ModUi/&OverwriteGameLanguage Выбрать неофициально поддерживаемый язык: +ModUi/&Campaigns Кампании: From a66c571b7b468f37d073c97bbcdb1304e7b8ab50 Mon Sep 17 00:00:00 2001 From: nd Date: Mon, 13 Jun 2022 21:15:57 +0700 Subject: [PATCH 05/22] First draft of magus class --- .../Api/Extensions/GameGadgetExtensions.cs | 9 + .../Classes/Magus/Magus.cs | 284 ++++++++++++++++++ .../Classes/Magus/MagusSpellList.cs | 22 ++ .../Models/ClassesContext.cs | 4 +- .../Models/IntegrationContext.cs | 4 + .../Models/MulticlassInOutRulesContext.cs | 3 + .../Models/MulticlassPatchingContext.cs | 8 + .../Models/SharedSpellsContext.cs | 1 + .../Models/SpellsContext.cs | 1 + .../GameLocationBattleManagerPatcher.cs | 37 +++ 10 files changed, 372 insertions(+), 1 deletion(-) create mode 100644 SolastaCommunityExpansion/Classes/Magus/Magus.cs create mode 100644 SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs diff --git a/SolastaCommunityExpansion/Api/Extensions/GameGadgetExtensions.cs b/SolastaCommunityExpansion/Api/Extensions/GameGadgetExtensions.cs index 29d9694ad9..cc443bf719 100644 --- a/SolastaCommunityExpansion/Api/Extensions/GameGadgetExtensions.cs +++ b/SolastaCommunityExpansion/Api/Extensions/GameGadgetExtensions.cs @@ -97,3 +97,12 @@ public enum ExtraAttributeModifierOperation SurroundingEnemies = 8, AdditiveAtEnd = 9000 } + +public enum ExtraTurnOccurenceType +{ + StartOfTurn = RuleDefinitions.TurnOccurenceType.StartOfTurn, + EndOfTurn = RuleDefinitions.TurnOccurenceType.EndOfTurn, + EndOfTurnNoPerceptionOfSource = RuleDefinitions.TurnOccurenceType.EndOfTurnNoPerceptionOfSource, + StartOfTurnWithPerceptionOfSource = 9000, + OnMoveEnd = 9001 +} diff --git a/SolastaCommunityExpansion/Classes/Magus/Magus.cs b/SolastaCommunityExpansion/Classes/Magus/Magus.cs new file mode 100644 index 0000000000..1cd2e8f283 --- /dev/null +++ b/SolastaCommunityExpansion/Classes/Magus/Magus.cs @@ -0,0 +1,284 @@ +using System.Collections.Generic; +using SolastaCommunityExpansion.Api; +using SolastaCommunityExpansion.Api.Extensions; +using SolastaCommunityExpansion.Builders; +using SolastaCommunityExpansion.Builders.Features; +using SolastaCommunityExpansion.Models; +using SolastaCommunityExpansion.Properties; +using SolastaCommunityExpansion.Utils; +using static EquipmentDefinitions; +using static SolastaCommunityExpansion.Builders.EquipmentOptionsBuilder; + +namespace SolastaCommunityExpansion.Classes.Magus; + +public static class Magus +{ + public static CharacterClassDefinition ClassMagus { get; private set; } + + private static FeatureDefinitionProficiency FeatureDefinitionProficiencyArmor { get; set; } + + private static FeatureDefinitionProficiency FeatureDefinitionProficiencyWeapon { get; set; } + + private static FeatureDefinitionProficiency FeatureDefinitionProficiencyTool { get; set; } + + private static FeatureDefinitionProficiency FeatureDefinitionProficiencySavingThrow { get; set; } + + private static FeatureDefinitionPointPool FeatureDefinitionSkillPoints { get; set; } + + private static FeatureDefinitionCastSpell FeatureDefinitionClassMagusCastSpell { get; set; } + + public static FeatureDefinitionPower ArcaneFocus { get; private set; } + + private static void BuildEquipment(CharacterClassDefinitionBuilder classMagusBuilder) + { + classMagusBuilder + .AddEquipmentRow( + Column( + Option(DatabaseHelper.ItemDefinitions.Longbow, OptionWeaponMartialRangedChoice, 1), + Option(DatabaseHelper.ItemDefinitions.Arrow, OptionAmmoPack, 1) + ), + Column(Option(DatabaseHelper.ItemDefinitions.Rapier, OptionWeaponMartialMeleeChoice, 1))) + .AddEquipmentRow( + Column(Option(DatabaseHelper.ItemDefinitions.ScholarPack, OptionStarterPack, 1)), + Column(Option(DatabaseHelper.ItemDefinitions.DungeoneerPack, OptionStarterPack, 1))) + .AddEquipmentRow( + Column( + Option(DatabaseHelper.ItemDefinitions.Leather, OptionArmor, 1), + Option(DatabaseHelper.ItemDefinitions.ComponentPouch, OptionFocus, 1), + Option(DatabaseHelper.ItemDefinitions.Shortsword, OptionWeaponMartialMeleeChoice, 2) + )); + } + + private static void BuildProficiencies() + { + static FeatureDefinitionProficiency BuildProficiency(string name, RuleDefinitions.ProficiencyType type, + params string[] proficiencies) + { + return FeatureDefinitionProficiencyBuilder + .Create(name, DefinitionBuilder.CENamespaceGuid) + .SetGuiPresentation(Category.Feature) + .SetProficiencies(type, proficiencies) + .AddToDB(); + } + + FeatureDefinitionProficiencyArmor = + BuildProficiency("ClassMagusArmorProficiency", RuleDefinitions.ProficiencyType.Armor, + LightArmorCategory); + + FeatureDefinitionProficiencyWeapon = + BuildProficiency("ClassMagusWeaponProficiency", RuleDefinitions.ProficiencyType.Weapon, + MartialWeaponCategory); + + FeatureDefinitionProficiencyTool = + BuildProficiency("ClassMagusToolsProficiency", RuleDefinitions.ProficiencyType.Tool, + DatabaseHelper.ToolTypeDefinitions.EnchantingToolType.Name, + DatabaseHelper.ToolTypeDefinitions.ArtisanToolSmithToolsType.Name); + + FeatureDefinitionProficiencySavingThrow = + BuildProficiency("ClassMagusSavingThrowProficiency", RuleDefinitions.ProficiencyType.SavingThrow, + AttributeDefinitions.Dexterity, AttributeDefinitions.Wisdom); + + FeatureDefinitionSkillPoints = FeatureDefinitionPointPoolBuilder + .Create("ClassMagusSkillProficiency", DefinitionBuilder.CENamespaceGuid) + .SetPool(HeroDefinitions.PointsPoolType.Skill, 4) + .OnlyUniqueChoices() + .RestrictChoices( + SkillDefinitions.Acrobatics, + SkillDefinitions.Athletics, + SkillDefinitions.Persuasion, + SkillDefinitions.Arcana, + SkillDefinitions.Deception, + SkillDefinitions.History, + SkillDefinitions.Intimidation, + SkillDefinitions.Perception, + SkillDefinitions.Nature, + SkillDefinitions.Religion) + .SetGuiPresentation(Category.Feature) + .AddToDB(); + } + + private static void BuildSpells() + { + FeatureDefinitionClassMagusCastSpell = FeatureDefinitionCastSpellBuilder + .Create("ClassMagusCastSpell", DefinitionBuilder.CENamespaceGuid) + .SetSlotsRecharge(RuleDefinitions.RechargeRate.LongRest) + .SetGuiPresentation("ClassMagusSpellcasting", Category.Class) + .SetSpellCastingLevel(9) + .SetSpellKnowledge(RuleDefinitions.SpellKnowledge.Selection) + .SetSpellReadyness(RuleDefinitions.SpellReadyness.AllKnown) + .SetSpellCastingAbility(AttributeDefinitions.Intelligence) + .SetSpellPreparationCount(RuleDefinitions.SpellPreparationCount.AbilityBonusPlusHalfLevel) + .SetKnownCantrips(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + .SetSlotsPerLevel(2, FeatureDefinitionCastSpellBuilder.CasterProgression.HALF_CASTER) + .SetSpellCastingOrigin(FeatureDefinitionCastSpell.CastingOrigin.Class) + .SetSpellList(MagusSpells.MagusSpellList) + .AddToDB(); + } + + private static void BuildArcaneArt() + { + ArcaneFocus = FeatureDefinitionPowerBuilder + .Create("ClassMagusArcaneFocus", DefinitionBuilder.CENamespaceGuid) + .SetGuiPresentation(Category.Power) + .SetFixedUsesPerRecharge(20) + .SetActivationTime(RuleDefinitions.ActivationTime.OnAttackHit) + .SetRechargeRate(RuleDefinitions.RechargeRate.AtWill) + .SetUsesFixed(1) + .AddToDB(); + + var rupture = BuildRupture(ArcaneFocus); + + // lurking death + // broken courage + // menace present + // mind spike + // exile + // immunity disruption: fire, ice, acid, thunder, lighting, necro + // soul drinker: regain an arcana focus + + PowerBundleContext.RegisterPowerBundle(ArcaneFocus, true, rupture); + } + + private static FeatureDefinitionPower BuildRupture(FeatureDefinitionPower sharedPool) + { + var condition = ConditionDefinitionBuilder + .Create("ClassMagusConditionRupture", DefinitionBuilder.CENamespaceGuid) + .Configure(RuleDefinitions.DurationType.Round, 1, true) + .SetSpecialDuration(true) + .AddToDB(); + + condition.durationParameterDie = RuleDefinitions.DieType.D4; + condition.turnOccurence = (RuleDefinitions.TurnOccurenceType)ExtraTurnOccurenceType.OnMoveEnd; + condition.RecurrentEffectForms.Add(new EffectForm() + { + formType = EffectForm.EffectFormType.Damage, + damageForm = new DamageForm() + { + damageType = RuleDefinitions.DamageTypePsychic, + diceNumber = 2, + dieType = RuleDefinitions.DieType.D8, + } + }); + + return FeatureDefinitionPowerSharedPoolBuilder + .Create("ClassMagusArcaneArtRupture", DefinitionBuilder.CENamespaceGuid) + .SetGuiPresentation(Category.Subclass, "ClassMagusArcaneArtRupture") + .SetSharedPool(sharedPool) + .SetActivationTime(RuleDefinitions.ActivationTime.NoCost) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(RuleDefinitions.Side.Enemy, RuleDefinitions.RangeType.Distance, 24, RuleDefinitions.TargetType.Individuals) + .SetSavingThrowData( + true, + false, + AttributeDefinitions.Constitution, + false, + RuleDefinitions.EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Intelligence) + .SetEffectForms( + EffectFormBuilder + .Create() + .HasSavingThrow(RuleDefinitions.EffectSavingThrowType.Negates) + .SetConditionForm(condition, ConditionForm.ConditionOperation.Add) + .Build() + ) + .Build()) + .AddToDB(); + } + + private static void BuildProgression(CharacterClassDefinitionBuilder classMagusBuilder) + { + // No subclass for now + /*var subclassChoices = FeatureDefinitionSubclassChoiceBuilder + .Create("ClassWarlockSubclassChoice", DefinitionBuilder.CENamespaceGuid) + .SetGuiPresentation("ClassWarlockPatron", Category.Subclass) + .SetSubclassSuffix("Patron") + .SetFilterByDeity(false) + .SetSubclasses( + AHWarlockSubclassSoulBladePact.Build(), + DHWarlockSubclassAncientForestPatron.Build(), + DHWarlockSubclassElementalPatron.Build(), + DHWarlockSubclassMoonLitPatron.Build() + ) + .AddToDB();*/ + + classMagusBuilder + .AddFeaturesAtLevel(1, + FeatureDefinitionProficiencySavingThrow, + FeatureDefinitionProficiencyArmor, + FeatureDefinitionProficiencyWeapon, + FeatureDefinitionProficiencyTool, + FeatureDefinitionSkillPoints + ) + .AddFeaturesAtLevel(2, + FeatureDefinitionClassMagusCastSpell, + ArcaneFocus); + } + + internal static CharacterClassDefinition BuildMagusClass() + { + var warlockSpriteReference = + CustomIcons.CreateAssetReferenceSprite("Magus", Resources.Warlock, 1024, 576); + + var classMagusBuilder = CharacterClassDefinitionBuilder + .Create("ClassMagus", DefinitionBuilder.CENamespaceGuid) + .SetGuiPresentation(Category.Class, warlockSpriteReference, 1) + .AddFeatPreferences(DatabaseHelper.FeatDefinitions.PowerfulCantrip, DatabaseHelper.FeatDefinitions.FlawlessConcentration, + DatabaseHelper.FeatDefinitions.Robust) + .AddPersonality(DatabaseHelper.PersonalityFlagDefinitions.Violence, 3) + .AddPersonality(DatabaseHelper.PersonalityFlagDefinitions.Self_Preservation, 3) + .AddPersonality(DatabaseHelper.PersonalityFlagDefinitions.Normal, 3) + .AddPersonality(DatabaseHelper.PersonalityFlagDefinitions.GpSpellcaster, 5) + .AddPersonality(DatabaseHelper.PersonalityFlagDefinitions.GpExplorer, 1) + .AddSkillPreferences( + DatabaseHelper.SkillDefinitions.Acrobatics, + DatabaseHelper.SkillDefinitions.Athletics, + DatabaseHelper.SkillDefinitions.Persuasion, + DatabaseHelper.SkillDefinitions.Arcana, + DatabaseHelper.SkillDefinitions.Deception, + DatabaseHelper.SkillDefinitions.History, + DatabaseHelper.SkillDefinitions.Intimidation, + DatabaseHelper.SkillDefinitions.Perception, + DatabaseHelper.SkillDefinitions.Nature, + DatabaseHelper.SkillDefinitions.Religion) + .AddToolPreferences( + DatabaseHelper.ToolTypeDefinitions.EnchantingToolType, + DatabaseHelper.ToolTypeDefinitions.ArtisanToolSmithToolsType) + .SetAbilityScorePriorities( + AttributeDefinitions.Dexterity, + AttributeDefinitions.Constitution, + AttributeDefinitions.Intelligence, + AttributeDefinitions.Wisdom, + AttributeDefinitions.Strength, + AttributeDefinitions.Charisma) + .SetAnimationId(AnimationDefinitions.ClassAnimationId.Paladin) + .SetBattleAI(DatabaseHelper.DecisionPackageDefinitions.DefaultMeleeWithBackupRangeDecisions) + .SetHitDice(RuleDefinitions.DieType.D8) + .SetIngredientGatheringOdds(DatabaseHelper.CharacterClassDefinitions.Sorcerer.IngredientGatheringOdds) + .SetPictogram(DatabaseHelper.CharacterClassDefinitions.Wizard.ClassPictogramReference); + + BuildEquipment(classMagusBuilder); + BuildProficiencies(); + BuildSpells(); + BuildArcaneArt(); + BuildProgression(classMagusBuilder); + + ClassMagus = classMagusBuilder.AddToDB(); + + var itemlist = new List + { + DatabaseHelper.ItemDefinitions.WandOfLightningBolts, + DatabaseHelper.ItemDefinitions.StaffOfFire, + DatabaseHelper.ItemDefinitions.ArcaneShieldstaff, + DatabaseHelper.ItemDefinitions.WizardClothes_Alternate + }; + + foreach (var item in itemlist) + { + item.RequiredAttunementClasses.Add(ClassMagus); + } + + return ClassMagus; + } +} diff --git a/SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs b/SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs new file mode 100644 index 0000000000..b536239610 --- /dev/null +++ b/SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs @@ -0,0 +1,22 @@ +using SolastaCommunityExpansion.Api; +using SolastaCommunityExpansion.Builders; +using static SolastaCommunityExpansion.Api.DatabaseHelper.SpellDefinitions; +using static SolastaCommunityExpansion.Spells.AceHighSpells; +namespace SolastaCommunityExpansion.Classes.Magus; + +// keep public as CE:MC depends on it +public static class MagusSpells +{ + internal static SpellListDefinition MagusSpellList { get; } = SpellListDefinitionBuilder + .Create("MagusSpellList", DefinitionBuilder.CENamespaceGuid) + .SetGuiPresentation(Category.SpellList) + .ClearSpells() + .SetSpellsAtLevel(1, Shield, MageArmor, ExpeditiousRetreat, ProtectionFromEvilGood, + HellishRebukeSpell, PactMarkSpell) + .SetSpellsAtLevel(2, SeeInvisibility, HoldPerson, Invisibility, MistyStep, RayOfEnfeeblement, Shatter, SpiderClimb) + .SetSpellsAtLevel(3, Counterspell, DispelMagic, Fear, Fly, Slow, Haste) + .SetSpellsAtLevel(4, Banishment, Blight, DimensionDoor, GreaterInvisibility) + .SetSpellsAtLevel(5, HoldMonster, MindTwist, ConjureElemental ) + .FinalizeSpells() + .AddToDB(); +} diff --git a/SolastaCommunityExpansion/Models/ClassesContext.cs b/SolastaCommunityExpansion/Models/ClassesContext.cs index 382cf9ef41..4dd56f1551 100644 --- a/SolastaCommunityExpansion/Models/ClassesContext.cs +++ b/SolastaCommunityExpansion/Models/ClassesContext.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using SolastaCommunityExpansion.Classes.Magus; using SolastaCommunityExpansion.Classes.Monk; using SolastaCommunityExpansion.Classes.Tinkerer; using SolastaCommunityExpansion.Classes.Warlock; @@ -39,7 +40,8 @@ internal static void Load() LoadClass(TinkererClass.BuildTinkererClass()); LoadClass(Warlock.BuildWarlockClass()); LoadClass(Witch.Instance); - + LoadClass(Magus.BuildMagusClass()); + Classes = Classes.OrderBy(x => x.FormatTitle()).ToHashSet(); } diff --git a/SolastaCommunityExpansion/Models/IntegrationContext.cs b/SolastaCommunityExpansion/Models/IntegrationContext.cs index d21ff89920..5ba28ee33c 100644 --- a/SolastaCommunityExpansion/Models/IntegrationContext.cs +++ b/SolastaCommunityExpansion/Models/IntegrationContext.cs @@ -9,6 +9,7 @@ public static class IntegrationContext public const string CLASS_WARDEN = "ClassWarden"; public const string CLASS_WARLOCK = "ClassWarlock"; public const string CLASS_WITCH = "ClassWitch"; + public const string CLASS_MAGUS = "ClassMagus"; public const string SUBCLASS_CONARTIST = "RoguishConArtist"; public const string SUBCLASS_SPELLSHIELD = "FighterSpellShield"; @@ -25,6 +26,7 @@ public static class IntegrationContext public static CharacterClassDefinition WardenClass { get; private set; } = DummyClass; public static CharacterClassDefinition WarlockClass { get; private set; } = DummyClass; public static CharacterClassDefinition WitchClass { get; private set; } = DummyClass; + public static CharacterClassDefinition MagusClass { get; private set; } = DummyClass; public static CharacterSubclassDefinition ConArtistSubclass { get; private set; } = DummySubclass; public static CharacterSubclassDefinition SpellShieldSubclass { get; private set; } = DummySubclass; @@ -38,6 +40,7 @@ public static void LateLoad() dbCharacterClassDefinition.TryGetElement(CLASS_WARDEN, out var unofficialWarden); dbCharacterClassDefinition.TryGetElement(CLASS_WARLOCK, out var unofficialWarlock); dbCharacterClassDefinition.TryGetElement(CLASS_WITCH, out var unofficialWitch); + dbCharacterClassDefinition.TryGetElement(CLASS_MAGUS, out var unofficialMagus); dbCharacterSubclassDefinition.TryGetElement(SUBCLASS_CONARTIST, out var unofficialConArtist); dbCharacterSubclassDefinition.TryGetElement(SUBCLASS_SPELLSHIELD, out var unofficialSpellShield); @@ -48,6 +51,7 @@ public static void LateLoad() WardenClass = unofficialWarden ? unofficialWarden : DummyClass; WitchClass = unofficialWitch ? unofficialWitch : DummyClass; WarlockClass = unofficialWarlock ? unofficialWarlock : DummyClass; + MagusClass = unofficialMagus ? unofficialMagus : DummyClass; ConArtistSubclass = unofficialConArtist ? unofficialConArtist : DummySubclass; SpellShieldSubclass = unofficialSpellShield ? unofficialSpellShield : DummySubclass; } diff --git a/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs b/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs index bc25dd4846..deb3bd1994 100644 --- a/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs +++ b/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs @@ -163,6 +163,9 @@ public static bool ApproveMultiClassInOut(RulesetCharacterHero hero, CharacterCl case IntegrationContext.CLASS_TINKERER: return intelligence >= 13; + case IntegrationContext.CLASS_MAGUS: + return intelligence >= 13 && (strength >= 13 || dexterity >= 13); + default: return false; } diff --git a/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs b/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs index 2f15472506..b6ae4eb3e3 100644 --- a/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs +++ b/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs @@ -116,6 +116,14 @@ internal static void AddNonOfficialBlueprintsToFeaturesCollections() dbFeatureDefinitionProficiency.GetElement("ClassWarlockWeaponProficiency"), dbFeatureDefinitionProficiency.GetElement("ClassWarlockSavingThrowProficiency") }); + + FeaturesToExclude.Add(MagusClass, + new List + { + dbFeatureDefinitionPointPool.GetElement("ClassMagusSkillProficiency"), + dbFeatureDefinitionProficiency.GetElement("ClassMagusWeaponProficiency"), + dbFeatureDefinitionProficiency.GetElement("ClassMagusSavingThrowProficiency") + }); } // diff --git a/SolastaCommunityExpansion/Models/SharedSpellsContext.cs b/SolastaCommunityExpansion/Models/SharedSpellsContext.cs index b38c3d821f..0db89fe829 100644 --- a/SolastaCommunityExpansion/Models/SharedSpellsContext.cs +++ b/SolastaCommunityExpansion/Models/SharedSpellsContext.cs @@ -246,6 +246,7 @@ public static void Load() { ClassCasterType.Add(TinkererClass, CasterType.HalfRoundUp); ClassCasterType.Add(WitchClass, CasterType.Full); + ClassCasterType.Add(MagusClass, CasterType.Half); SubclassCasterType.Add(ConArtistSubclass, CasterType.OneThird); SubclassCasterType.Add(SpellShieldSubclass, CasterType.OneThird); RecoverySlots.Add("TinkererSpellStoringItem", TinkererClass); diff --git a/SolastaCommunityExpansion/Models/SpellsContext.cs b/SolastaCommunityExpansion/Models/SpellsContext.cs index 13c474371b..2908a3cb24 100644 --- a/SolastaCommunityExpansion/Models/SpellsContext.cs +++ b/SolastaCommunityExpansion/Models/SpellsContext.cs @@ -25,6 +25,7 @@ internal static SortedDictionary SpellLists foreach (var characterClass in dbCharacterClassDefinition) { + Main.Log($"{characterClass.Name}"); var title = characterClass.FormatTitle(); var featureDefinitionCastSpell = characterClass.FeatureUnlocks diff --git a/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs b/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs index c9683115da..e42f8b82e2 100644 --- a/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs +++ b/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using HarmonyLib; +using SolastaCommunityExpansion.Api.Extensions; using SolastaCommunityExpansion.CustomDefinitions; using TA; @@ -69,6 +70,42 @@ int3 destination [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] internal static class HandleCharacterMoveEnd { + internal static void Prefix(GameLocationCharacter mover) + { + var matchingOccurenceConditions = new List(); + foreach (KeyValuePair> item in mover.RulesetCharacter.ConditionsByCategory) + { + foreach (RulesetCondition item2 in item.Value) + { + switch (item2.endOccurence) + { + case (RuleDefinitions.TurnOccurenceType)ExtraTurnOccurenceType.OnMoveEnd: + matchingOccurenceConditions.Add(item2); + break; + } + } + } + + foreach (RulesetCondition condition in matchingOccurenceConditions) + { + mover.RulesetActor.ExecuteRecurrentForms(condition); + if (condition.HasFinished && !condition.IsDurationDefinedByEffect()) + { + mover.RulesetActor.RemoveCondition(condition); + mover.RulesetActor.ProcessConditionDurationEnded(condition); + } + else if (condition.CanSaveToCancel && condition.HasSaveOverride) + { + mover.RulesetActor.SaveToCancelCondition(condition); + } + else + { + mover.RulesetActor.ConditionOccurenceReached?.Invoke(mover.RulesetActor, condition); + } + } + } + + internal static IEnumerator Postfix( IEnumerator __result, GameLocationBattleManager __instance, From 5b7422992d0ee88ae11ffec28ac2c995ed684fa7 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 13:48:07 -0700 Subject: [PATCH 06/22] rider clean up after last mergers --- .../Extensions/RulesetCharacterExension.cs | 2 +- .../Classes/Magus/Magus.cs | 39 ++++++++++--------- .../Classes/Magus/MagusSpellList.cs | 11 +++--- .../Models/ClassesContext.cs | 8 +++- .../Models/MulticlassInOutRulesContext.cs | 2 +- .../Models/MulticlassPatchingContext.cs | 2 +- .../GameLocationBattleManagerPatcher.cs | 6 +-- 7 files changed, 39 insertions(+), 31 deletions(-) diff --git a/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs b/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs index 610c6dba79..b48a63751b 100644 --- a/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs +++ b/SolastaCommunityExpansion/Api/Extensions/RulesetCharacterExension.cs @@ -33,7 +33,7 @@ public static bool CanUsePower(this RulesetCharacter instance, FeatureDefinition return power.GetAllSubFeaturesOfType() .All(v => v.CanUsePower(instance)); } - + public static bool CanCastCantrip( this RulesetCharacter character, SpellDefinition spellDefinition, diff --git a/SolastaCommunityExpansion/Classes/Magus/Magus.cs b/SolastaCommunityExpansion/Classes/Magus/Magus.cs index 1cd2e8f283..66dce35232 100644 --- a/SolastaCommunityExpansion/Classes/Magus/Magus.cs +++ b/SolastaCommunityExpansion/Classes/Magus/Magus.cs @@ -26,7 +26,7 @@ public static class Magus private static FeatureDefinitionPointPool FeatureDefinitionSkillPoints { get; set; } private static FeatureDefinitionCastSpell FeatureDefinitionClassMagusCastSpell { get; set; } - + public static FeatureDefinitionPower ArcaneFocus { get; private set; } private static void BuildEquipment(CharacterClassDefinitionBuilder classMagusBuilder) @@ -109,12 +109,13 @@ private static void BuildSpells() .SetSpellCastingAbility(AttributeDefinitions.Intelligence) .SetSpellPreparationCount(RuleDefinitions.SpellPreparationCount.AbilityBonusPlusHalfLevel) .SetKnownCantrips(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + .SetKnownSpells(0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19) .SetSlotsPerLevel(2, FeatureDefinitionCastSpellBuilder.CasterProgression.HALF_CASTER) .SetSpellCastingOrigin(FeatureDefinitionCastSpell.CastingOrigin.Class) .SetSpellList(MagusSpells.MagusSpellList) .AddToDB(); } - + private static void BuildArcaneArt() { ArcaneFocus = FeatureDefinitionPowerBuilder @@ -127,7 +128,7 @@ private static void BuildArcaneArt() .AddToDB(); var rupture = BuildRupture(ArcaneFocus); - + // lurking death // broken courage // menace present @@ -138,7 +139,7 @@ private static void BuildArcaneArt() PowerBundleContext.RegisterPowerBundle(ArcaneFocus, true, rupture); } - + private static FeatureDefinitionPower BuildRupture(FeatureDefinitionPower sharedPool) { var condition = ConditionDefinitionBuilder @@ -146,20 +147,20 @@ private static FeatureDefinitionPower BuildRupture(FeatureDefinitionPower shared .Configure(RuleDefinitions.DurationType.Round, 1, true) .SetSpecialDuration(true) .AddToDB(); - + condition.durationParameterDie = RuleDefinitions.DieType.D4; condition.turnOccurence = (RuleDefinitions.TurnOccurenceType)ExtraTurnOccurenceType.OnMoveEnd; - condition.RecurrentEffectForms.Add(new EffectForm() + condition.RecurrentEffectForms.Add(new EffectForm { formType = EffectForm.EffectFormType.Damage, - damageForm = new DamageForm() + damageForm = new DamageForm { damageType = RuleDefinitions.DamageTypePsychic, diceNumber = 2, - dieType = RuleDefinitions.DieType.D8, + dieType = RuleDefinitions.DieType.D8 } }); - + return FeatureDefinitionPowerSharedPoolBuilder .Create("ClassMagusArcaneArtRupture", DefinitionBuilder.CENamespaceGuid) .SetGuiPresentation(Category.Subclass, "ClassMagusArcaneArtRupture") @@ -168,17 +169,18 @@ private static FeatureDefinitionPower BuildRupture(FeatureDefinitionPower shared .SetEffectDescription( EffectDescriptionBuilder .Create() - .SetTargetingData(RuleDefinitions.Side.Enemy, RuleDefinitions.RangeType.Distance, 24, RuleDefinitions.TargetType.Individuals) + .SetTargetingData(RuleDefinitions.Side.Enemy, RuleDefinitions.RangeType.Distance, 24, + RuleDefinitions.TargetType.Individuals) .SetSavingThrowData( - true, + true, false, AttributeDefinitions.Constitution, - false, + false, RuleDefinitions.EffectDifficultyClassComputation.SpellCastingFeature, AttributeDefinitions.Intelligence) .SetEffectForms( EffectFormBuilder - .Create() + .Create() .HasSavingThrow(RuleDefinitions.EffectSavingThrowType.Negates) .SetConditionForm(condition, ConditionForm.ConditionOperation.Add) .Build() @@ -186,7 +188,7 @@ private static FeatureDefinitionPower BuildRupture(FeatureDefinitionPower shared .Build()) .AddToDB(); } - + private static void BuildProgression(CharacterClassDefinitionBuilder classMagusBuilder) { // No subclass for now @@ -211,7 +213,7 @@ private static void BuildProgression(CharacterClassDefinitionBuilder classMagusB FeatureDefinitionProficiencyTool, FeatureDefinitionSkillPoints ) - .AddFeaturesAtLevel(2, + .AddFeaturesAtLevel(1, FeatureDefinitionClassMagusCastSpell, ArcaneFocus); } @@ -224,7 +226,8 @@ internal static CharacterClassDefinition BuildMagusClass() var classMagusBuilder = CharacterClassDefinitionBuilder .Create("ClassMagus", DefinitionBuilder.CENamespaceGuid) .SetGuiPresentation(Category.Class, warlockSpriteReference, 1) - .AddFeatPreferences(DatabaseHelper.FeatDefinitions.PowerfulCantrip, DatabaseHelper.FeatDefinitions.FlawlessConcentration, + .AddFeatPreferences(DatabaseHelper.FeatDefinitions.PowerfulCantrip, + DatabaseHelper.FeatDefinitions.FlawlessConcentration, DatabaseHelper.FeatDefinitions.Robust) .AddPersonality(DatabaseHelper.PersonalityFlagDefinitions.Violence, 3) .AddPersonality(DatabaseHelper.PersonalityFlagDefinitions.Self_Preservation, 3) @@ -243,7 +246,7 @@ internal static CharacterClassDefinition BuildMagusClass() DatabaseHelper.SkillDefinitions.Nature, DatabaseHelper.SkillDefinitions.Religion) .AddToolPreferences( - DatabaseHelper.ToolTypeDefinitions.EnchantingToolType, + DatabaseHelper.ToolTypeDefinitions.EnchantingToolType, DatabaseHelper.ToolTypeDefinitions.ArtisanToolSmithToolsType) .SetAbilityScorePriorities( AttributeDefinitions.Dexterity, @@ -257,7 +260,7 @@ internal static CharacterClassDefinition BuildMagusClass() .SetHitDice(RuleDefinitions.DieType.D8) .SetIngredientGatheringOdds(DatabaseHelper.CharacterClassDefinitions.Sorcerer.IngredientGatheringOdds) .SetPictogram(DatabaseHelper.CharacterClassDefinitions.Wizard.ClassPictogramReference); - + BuildEquipment(classMagusBuilder); BuildProficiencies(); BuildSpells(); diff --git a/SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs b/SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs index b536239610..84ad60fc2d 100644 --- a/SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs +++ b/SolastaCommunityExpansion/Classes/Magus/MagusSpellList.cs @@ -1,7 +1,7 @@ -using SolastaCommunityExpansion.Api; -using SolastaCommunityExpansion.Builders; +using SolastaCommunityExpansion.Builders; using static SolastaCommunityExpansion.Api.DatabaseHelper.SpellDefinitions; using static SolastaCommunityExpansion.Spells.AceHighSpells; + namespace SolastaCommunityExpansion.Classes.Magus; // keep public as CE:MC depends on it @@ -11,12 +11,13 @@ public static class MagusSpells .Create("MagusSpellList", DefinitionBuilder.CENamespaceGuid) .SetGuiPresentation(Category.SpellList) .ClearSpells() - .SetSpellsAtLevel(1, Shield, MageArmor, ExpeditiousRetreat, ProtectionFromEvilGood, + .SetSpellsAtLevel(1, Shield, MageArmor, ExpeditiousRetreat, ProtectionFromEvilGood, HellishRebukeSpell, PactMarkSpell) - .SetSpellsAtLevel(2, SeeInvisibility, HoldPerson, Invisibility, MistyStep, RayOfEnfeeblement, Shatter, SpiderClimb) + .SetSpellsAtLevel(2, SeeInvisibility, HoldPerson, Invisibility, MistyStep, RayOfEnfeeblement, Shatter, + SpiderClimb) .SetSpellsAtLevel(3, Counterspell, DispelMagic, Fear, Fly, Slow, Haste) .SetSpellsAtLevel(4, Banishment, Blight, DimensionDoor, GreaterInvisibility) - .SetSpellsAtLevel(5, HoldMonster, MindTwist, ConjureElemental ) + .SetSpellsAtLevel(5, HoldMonster, MindTwist, ConjureElemental) .FinalizeSpells() .AddToDB(); } diff --git a/SolastaCommunityExpansion/Models/ClassesContext.cs b/SolastaCommunityExpansion/Models/ClassesContext.cs index 4dd56f1551..6c96bacfa7 100644 --- a/SolastaCommunityExpansion/Models/ClassesContext.cs +++ b/SolastaCommunityExpansion/Models/ClassesContext.cs @@ -40,8 +40,12 @@ internal static void Load() LoadClass(TinkererClass.BuildTinkererClass()); LoadClass(Warlock.BuildWarlockClass()); LoadClass(Witch.Instance); - LoadClass(Magus.BuildMagusClass()); - + + // + // DISABLE THIS BEFORE RELEASE (IT'S BETA) + // + // LoadClass(Magus.BuildMagusClass()); + Classes = Classes.OrderBy(x => x.FormatTitle()).ToHashSet(); } diff --git a/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs b/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs index deb3bd1994..03c1989ac8 100644 --- a/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs +++ b/SolastaCommunityExpansion/Models/MulticlassInOutRulesContext.cs @@ -165,7 +165,7 @@ public static bool ApproveMultiClassInOut(RulesetCharacterHero hero, CharacterCl case IntegrationContext.CLASS_MAGUS: return intelligence >= 13 && (strength >= 13 || dexterity >= 13); - + default: return false; } diff --git a/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs b/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs index b6ae4eb3e3..5593b119a5 100644 --- a/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs +++ b/SolastaCommunityExpansion/Models/MulticlassPatchingContext.cs @@ -116,7 +116,7 @@ internal static void AddNonOfficialBlueprintsToFeaturesCollections() dbFeatureDefinitionProficiency.GetElement("ClassWarlockWeaponProficiency"), dbFeatureDefinitionProficiency.GetElement("ClassWarlockSavingThrowProficiency") }); - + FeaturesToExclude.Add(MagusClass, new List { diff --git a/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs b/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs index e42f8b82e2..0edbc1700a 100644 --- a/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs +++ b/SolastaCommunityExpansion/Patches/Insertion/GameLocationBattleManagerPatcher.cs @@ -73,9 +73,9 @@ internal static class HandleCharacterMoveEnd internal static void Prefix(GameLocationCharacter mover) { var matchingOccurenceConditions = new List(); - foreach (KeyValuePair> item in mover.RulesetCharacter.ConditionsByCategory) + foreach (var item in mover.RulesetCharacter.ConditionsByCategory) { - foreach (RulesetCondition item2 in item.Value) + foreach (var item2 in item.Value) { switch (item2.endOccurence) { @@ -86,7 +86,7 @@ internal static void Prefix(GameLocationCharacter mover) } } - foreach (RulesetCondition condition in matchingOccurenceConditions) + foreach (var condition in matchingOccurenceConditions) { mover.RulesetActor.ExecuteRecurrentForms(condition); if (condition.HasFinished && !condition.IsDurationDefinedByEffect()) From b812cb7aefb21376a54443b239ae5fcf5336b40b Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 13:54:12 -0700 Subject: [PATCH 07/22] make some higher level spells standard on official classes --- SolastaCommunityExpansion/Spells/SRDSpells.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SolastaCommunityExpansion/Spells/SRDSpells.cs b/SolastaCommunityExpansion/Spells/SRDSpells.cs index 35178a66ed..9f314f92d3 100644 --- a/SolastaCommunityExpansion/Spells/SRDSpells.cs +++ b/SolastaCommunityExpansion/Spells/SRDSpells.cs @@ -73,7 +73,7 @@ internal static void AddToDB() internal static void Register() { - // cantrip + // cantrips RegisterSpell(EldritchBlast, 1, WarlockSpellList); // 7th level @@ -84,22 +84,22 @@ internal static void Register() // 8th level RegisterSpell(DominateMonster, 1, WarlockSpellList, SpellListWizard, SpellListSorcerer, WitchSpellList); - RegisterSpell(Feeblemind, 1, WarlockSpellList, SpellListWizard, SpellListDruid, WitchSpellList); - RegisterSpell(HolyAura, 0, SpellListCleric); + RegisterSpell(Feeblemind, 2, WarlockSpellList, SpellListDruid, SpellListWizard, WitchSpellList); + RegisterSpell(HolyAura, 1, SpellListCleric); RegisterSpell(IncendiaryCloud, 0, SpellListWizard, SpellListSorcerer); RegisterSpell(Maze, 0, SpellListWizard); RegisterSpell(MindBlank, 0, SpellListWizard, WitchSpellList); RegisterSpell(PowerWordStun, 1, WarlockSpellList, SpellListWizard, SpellListSorcerer, WitchSpellList); - RegisterSpell(SunBurst, 0, SpellListDruid, SpellListWizard, SpellListSorcerer); + RegisterSpell(SunBurst, 1, SpellListDruid, SpellListWizard, SpellListSorcerer); // 9th level - RegisterSpell(Foresight, 1, WarlockSpellList, SpellListDruid, SpellListWizard, WitchSpellList); - RegisterSpell(MassHeal, 0, SpellListCleric); + RegisterSpell(Foresight, 2, WarlockSpellList, SpellListDruid, SpellListWizard, WitchSpellList); + RegisterSpell(MassHeal, 1, SpellListCleric); RegisterSpell(MeteorSwarmSingleTarget, 0, SpellListWizard, SpellListSorcerer); - RegisterSpell(PowerWordHeal, 0, SpellListCleric); + RegisterSpell(PowerWordHeal, 1, SpellListCleric); RegisterSpell(PowerWordKill, 1, WarlockSpellList, SpellListWizard, SpellListSorcerer); RegisterSpell(TimeStop, 0, SpellListWizard, SpellListSorcerer); - RegisterSpell(Shapechange, 0, SpellListDruid, SpellListWizard); + RegisterSpell(Shapechange, 1, SpellListDruid, SpellListWizard); RegisterSpell(Weird, 1, WarlockSpellList, SpellListWizard, WitchSpellList); } From f4184861ecb5e54d59fb6e793a0515829c6ba78b Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 14:04:13 -0700 Subject: [PATCH 08/22] update diagnostics --- ...esentation-InvalidSyntaxTranslation-en.txt | 2 + ...-GuiPresentation-MissingTranslation-en.txt | 22 + .../CommunityExpansionBlueprints/Assets.txt | 25 ++ .../CharacterClassDefinition/ClassMagus.json | 238 +++++++++++ .../ClassMagusConditionRupture.json | 171 ++++++++ .../FeatFeyTeleportationCha.json | 1 + .../FeatFeyTeleportationInt.json | 1 + .../FeatFeyTeleportationWis.json | 1 + .../FeatDefinition/FeatShadowTouchedCha.json | 1 + .../FeatDefinition/FeatShadowTouchedInt.json | 1 + .../FeatDefinition/FeatShadowTouchedWis.json | 1 + ...yTeleportationAutoPrepMistyClassMagus.json | 42 ++ .../ShadowTouchedAutoPrepClassMagus.json | 44 ++ .../ClassMagusCastSpell.json | 377 ++++++++++++++++++ .../ClassMagusSkillProficiency.json | 45 +++ .../ClassMagusArcaneFocus.json | 185 +++++++++ .../ClassMagusArcaneArtRupture.json | 329 +++++++++++++++ .../ClassMagusArmorProficiency.json | 35 ++ .../ClassMagusSavingThrowProficiency.json | 36 ++ .../ClassMagusToolsProficiency.json | 36 ++ .../ClassMagusWeaponProficiency.json | 35 ++ .../SpellClassMagusArcaneArtRupture.json | 182 +++++++++ .../SpellClassMagusArcaneFocus.json | 184 +++++++++ .../SpellListDefinition/MagusSpellList.json | 115 ++++++ 24 files changed, 2109 insertions(+) create mode 100644 Diagnostics/CommunityExpansionBlueprints/CharacterClassDefinition/ClassMagus.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/ConditionDefinition/ClassMagusConditionRupture.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/FeyTeleportationAutoPrepMistyClassMagus.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/ShadowTouchedAutoPrepClassMagus.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionCastSpell/ClassMagusCastSpell.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPointPool/ClassMagusSkillProficiency.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPower/ClassMagusArcaneFocus.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPowerSharedPool/ClassMagusArcaneArtRupture.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusArmorProficiency.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusSavingThrowProficiency.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusToolsProficiency.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusWeaponProficiency.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneArtRupture.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneFocus.json create mode 100644 Diagnostics/CommunityExpansionBlueprints/SpellListDefinition/MagusSpellList.json diff --git a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt index 1b77a96f2e..b3b6326716 100644 --- a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt +++ b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt @@ -1,3 +1,4 @@ +ClassMagusArcaneArtRupture Description='ClassMagusArcaneArtRupture'. DH_ElementalForm_Air Title='Air Plane'. DH_ElementalForm_Air Description='When channeling the Air Plane, you gain Resistance to Thunder damage and apply Proficiency Bonus as damage of the same type to first hit each round.'. DH_ElementalForm_AirAdditionalDamage Title='Elemental Damage: Air Plane'. @@ -60,6 +61,7 @@ EldritchInvocationMageArmor Description='Cast Mage Armor at will.'. EldritchInvocationMageArmorRemover Description='Cast Mage Armor at will.'. EldritchInvocationSlow Description='Cast Slow once until long rest.'. EldritchInvocationSlowRemover Description='Cast Slow once until long rest.'. +SpellClassMagusArcaneArtRupture Description='ClassMagusArcaneArtRupture'. SpellDH_ElementalForm_Air Title='Air Plane'. SpellDH_ElementalForm_Air Description='When channeling the Air Plane, you gain Resistance to Thunder damage and apply Proficiency Bonus as damage of the same type to first hit each round.'. SpellDH_ElementalForm_Earth Title='Earth Plane'. diff --git a/Diagnostics/CE-Definitions-GuiPresentation-MissingTranslation-en.txt b/Diagnostics/CE-Definitions-GuiPresentation-MissingTranslation-en.txt index c98af46afb..2dc9edfbb8 100644 --- a/Diagnostics/CE-Definitions-GuiPresentation-MissingTranslation-en.txt +++ b/Diagnostics/CE-Definitions-GuiPresentation-MissingTranslation-en.txt @@ -1,3 +1,20 @@ +ClassMagus Title='Class/&ClassMagusTitle'. +ClassMagus Description='Class/&ClassMagusDescription'. +ClassMagusArcaneArtRupture Title='Subclass/&ClassMagusArcaneArtRuptureTitle'. +ClassMagusArcaneFocus Title='Power/&ClassMagusArcaneFocusTitle'. +ClassMagusArcaneFocus Description='Power/&ClassMagusArcaneFocusDescription'. +ClassMagusArmorProficiency Title='Feature/&ClassMagusArmorProficiencyTitle'. +ClassMagusArmorProficiency Description='Feature/&ClassMagusArmorProficiencyDescription'. +ClassMagusCastSpell Title='Class/&ClassMagusSpellcastingTitle'. +ClassMagusCastSpell Description='Class/&ClassMagusSpellcastingDescription'. +ClassMagusSavingThrowProficiency Title='Feature/&ClassMagusSavingThrowProficiencyTitle'. +ClassMagusSavingThrowProficiency Description='Feature/&ClassMagusSavingThrowProficiencyDescription'. +ClassMagusSkillProficiency Title='Feature/&ClassMagusSkillProficiencyTitle'. +ClassMagusSkillProficiency Description='Feature/&ClassMagusSkillProficiencyDescription'. +ClassMagusToolsProficiency Title='Feature/&ClassMagusToolsProficiencyTitle'. +ClassMagusToolsProficiency Description='Feature/&ClassMagusToolsProficiencyDescription'. +ClassMagusWeaponProficiency Title='Feature/&ClassMagusWeaponProficiencyTitle'. +ClassMagusWeaponProficiency Description='Feature/&ClassMagusWeaponProficiencyDescription'. CraftingManualRecipeEnchantCEHalberd+1 Description='Item/&CraftingManualRecipeEnchantCEHalberd+1Description'. CraftingManualRecipeEnchantCEHalberd+2 Description='Item/&CraftingManualRecipeEnchantCEHalberd+2Description'. CraftingManualRecipeEnchantCEHalberdLightning Description='Item/&CraftingManualRecipeEnchantCEHalberdLightningDescription'. @@ -18,6 +35,11 @@ DHFeeblemindSpellActionAffinity Title='ActionAffinity/&DHFeeblemindSpellTitle'. FeatureSetGreenWitchMagic Title='Subclass/&GreenWitchMagic'. FeatureSetRedWitchMagic Title='Subclass/&RedWitchMagic'. FeatureSetWhiteWitchMagic Title='Subclass/&WhiteWitchMagic'. +MagusSpellList Title='SpellList/&MagusSpellListTitle'. +MagusSpellList Description='SpellList/&MagusSpellListDescription'. +SpellClassMagusArcaneArtRupture Title='Subclass/&ClassMagusArcaneArtRuptureTitle'. +SpellClassMagusArcaneFocus Title='Power/&ClassMagusArcaneFocusTitle'. +SpellClassMagusArcaneFocus Description='Power/&ClassMagusArcaneFocusDescription'. SpendPowerBundle Title='Reaction/&SpendPowerBundleTitle'. SpendPowerBundle Description='Reaction/&SpendPowerBundleDescription'. WardenArmorProficiencyMulticlass Title='Feature/&WardenArmorProficiencyTitle'. diff --git a/Diagnostics/CommunityExpansionBlueprints/Assets.txt b/Diagnostics/CommunityExpansionBlueprints/Assets.txt index 6b9b504a6b..5fc55bb193 100644 --- a/Diagnostics/CommunityExpansionBlueprints/Assets.txt +++ b/Diagnostics/CommunityExpansionBlueprints/Assets.txt @@ -286,6 +286,7 @@ Traps~Town~MOD BlueprintCategory BlueprintCategory 3bb25366-e510-5140-b641-e7278 Traps~TownInterior~MOD BlueprintCategory BlueprintCategory 23d7d0b8-6c2a-5452-af2d-2118e85b6e0c Traps~ValleyPalace~MOD BlueprintCategory BlueprintCategory e72353f4-bde6-5f2c-9dea-2ae1065782a6 Traps~WoodLand~MOD BlueprintCategory BlueprintCategory b0da8bad-0ce2-5db0-adb6-32a37b6258b7 +ClassMagus CharacterClassDefinition CharacterClassDefinition 97ded64b-8357-596a-aba0-9c74550e9416 ClassMonk CharacterClassDefinition CharacterClassDefinition b843a539-0063-5b6d-9db9-862800add5aa ClassTinkerer CharacterClassDefinition CharacterClassDefinition 0bd993c5-be32-535c-96b5-70db46ed2ca8 ClassWarlock CharacterClassDefinition CharacterClassDefinition 22677dd9-ffe8-58ad-8dd2-bacb9dd9da2e @@ -341,6 +342,7 @@ ArtificerInfusedConditionMindSharpener ConditionDefinition ConditionDefinition d ArtificerInfusedFocus ConditionDefinition ConditionDefinition 85e4f946-f5c3-544e-aa7a-d003cac5c338 ArtificerInfusionArmorMagicalStrengthCondition ConditionDefinition ConditionDefinition 642970f4-1918-5a54-b575-a103ce59065a BarkWard ConditionDefinition ConditionDefinition 2d27674c-26d3-5d01-b35b-8595f0f7eb52 +ClassMagusConditionRupture ConditionDefinition ConditionDefinition 1a49e40d-10b1-5a8e-8a42-2483f8702bc5 ClassMonkAttackedWithMonkWeapon ConditionDefinition ConditionDefinition 48bf2461-f0ae-5181-8538-938f975f05e6 ClassMonkClimbingCondition ConditionDefinition ConditionDefinition c6981d91-7259-521f-9269-341a74942a3b ClassMonkEmptyBodyCondition ConditionDefinition ConditionDefinition fd501d2c-0599-5550-92fc-c7f264fe24b1 @@ -701,6 +703,14 @@ CastSpellSpellShield FeatureDefinitionCastSpell FeatureDefinition 09aac17f-37c6- CastSpellTinkerer FeatureDefinitionCastSpell FeatureDefinition 67ded021-18e4-5ebf-a396-449314a731ef CastSpellWitch FeatureDefinitionCastSpell FeatureDefinition 73c40446-6b19-5203-9a7d-31c3926289b6 ChefTreatEatPower FeatureDefinitionPower FeatureDefinition 31ea87c9-f446-59ba-a422-6855c1b372bf +ClassMagusArcaneArtRupture SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool FeatureDefinition 2e65dba9-ac84-5d81-9076-addc04f8fd39 +ClassMagusArcaneFocus FeatureDefinitionPower FeatureDefinition a2a464b9-5934-5289-b006-bf9875daf8a2 +ClassMagusArmorProficiency FeatureDefinitionProficiency FeatureDefinition 4a37789c-ddbb-5bd5-8a11-ea8bb77c2d38 +ClassMagusCastSpell FeatureDefinitionCastSpell FeatureDefinition b4059dd2-0805-5bf2-a699-f0e341d95621 +ClassMagusSavingThrowProficiency FeatureDefinitionProficiency FeatureDefinition aca38866-ae80-54f1-b64a-5ab6471acfab +ClassMagusSkillProficiency FeatureDefinitionPointPool FeatureDefinition 8e96e965-8fe8-5958-9296-4fbcd0a2ff85 +ClassMagusToolsProficiency FeatureDefinitionProficiency FeatureDefinition 605322f6-b75e-50e1-a079-28a1b704a448 +ClassMagusWeaponProficiency FeatureDefinitionProficiency FeatureDefinition ec723019-70ac-50d1-ad24-c3ea1a9704f6 ClassMonkDeflectMissile FeatureDefinitionActionAffinity FeatureDefinition f8b37f2b-7bd0-5b31-8eed-28ac0b7370e0 ClassMonkDiamondSoul FeatureDefinitionProficiency FeatureDefinition c4fb60a3-74a2-574b-be2c-c4c054dff8f6 ClassMonkDiamondSoulPower SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool FeatureDefinition 46e42723-e78c-5863-9e81-ac24bb193036 @@ -989,6 +999,7 @@ FeatureSetWhiteWitchMagic FeatureDefinitionFeatureSet FeatureDefinition 13e52ca9 FeatureSetWitchFamiliar FeatureDefinitionFeatureSet FeatureDefinition d80020a5-f150-567a-948c-40bf8969233a FeatWisIncrement FeatureDefinitionAttributeModifier FeatureDefinition 1794c14b-322c-560a-a025-d3e34d2cd58b FeyTeleportationAutoPrepMistyBarbarian FeatureDefinitionAutoPreparedSpells FeatureDefinition 8a5682f7-8563-52f3-936b-138645322366 +FeyTeleportationAutoPrepMistyClassMagus FeatureDefinitionAutoPreparedSpells FeatureDefinition 454a48eb-5d8f-53c0-8d03-39dd1ff81be4 FeyTeleportationAutoPrepMistyClassMonk FeatureDefinitionAutoPreparedSpells FeatureDefinition 061e2ddc-5378-5ef5-8af4-6e33e5cd7454 FeyTeleportationAutoPrepMistyClassTinkerer FeatureDefinitionAutoPreparedSpells FeatureDefinition 5902baac-de33-5c7d-ac6d-0c07a57b56f2 FeyTeleportationAutoPrepMistyClassWarlock FeatureDefinitionAutoPreparedSpells FeatureDefinition 66d409a0-4428-5b16-9f5a-31ee2b0ba874 @@ -1251,6 +1262,7 @@ SelfRepair FeatureDefinitionPower FeatureDefinition 68db5cab-6fc9-4795-88a6-f89d SellswordBackgroundSuggestedSkills FeatureDefinition FeatureDefinition da5df8c6-7744-568f-8b4a-7d2b0b19914c SentinelModePower SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool FeatureDefinition 410768a3-757f-48ee-8a2f-bffd963c0a5b ShadowTouchedAutoPrepBarbarian FeatureDefinitionAutoPreparedSpells FeatureDefinition b7acf706-9bbc-514b-b378-4bb805007d32 +ShadowTouchedAutoPrepClassMagus FeatureDefinitionAutoPreparedSpells FeatureDefinition d414ad28-8590-53fc-b60c-d33aec37bc5e ShadowTouchedAutoPrepClassMonk FeatureDefinitionAutoPreparedSpells FeatureDefinition 2d39917b-321c-58e9-a0ca-54bd41cfff1e ShadowTouchedAutoPrepClassTinkerer FeatureDefinitionAutoPreparedSpells FeatureDefinition 9b04bd07-5abe-5c39-b0e6-1e05b39afcb4 ShadowTouchedAutoPrepClassWarlock FeatureDefinitionAutoPreparedSpells FeatureDefinition 3b45beb6-dc7e-5e0e-81eb-ff6bdaeb5439 @@ -1561,6 +1573,7 @@ ArtilleryConstructLevel03AutopreparedSpells FeatureDefinitionAutoPreparedSpells ArtilleryConstructLevel09AutopreparedSpells FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells ecbbbfe6-4ff6-5c55-b9da-919b09896938 ArtilleryConstructLevel15AutopreparedSpells FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 841d72b7-2570-56d1-acfd-77fa34d2e4db FeyTeleportationAutoPrepMistyBarbarian FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 8a5682f7-8563-52f3-936b-138645322366 +FeyTeleportationAutoPrepMistyClassMagus FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 454a48eb-5d8f-53c0-8d03-39dd1ff81be4 FeyTeleportationAutoPrepMistyClassMonk FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 061e2ddc-5378-5ef5-8af4-6e33e5cd7454 FeyTeleportationAutoPrepMistyClassTinkerer FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 5902baac-de33-5c7d-ac6d-0c07a57b56f2 FeyTeleportationAutoPrepMistyClassWarlock FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 66d409a0-4428-5b16-9f5a-31ee2b0ba874 @@ -1579,6 +1592,7 @@ ProtectorConstructLevel15AutopreparedSpells FeatureDefinitionAutoPreparedSpells ProtectorConstructLevel3AutopreparedSpells FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 25403813-58eb-47f4-b5ee-b7956cc02ccf RedMagicAutoPreparedSpell FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 41cdb2c0-03d4-502c-b871-af662358b341 ShadowTouchedAutoPrepBarbarian FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells b7acf706-9bbc-514b-b378-4bb805007d32 +ShadowTouchedAutoPrepClassMagus FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells d414ad28-8590-53fc-b60c-d33aec37bc5e ShadowTouchedAutoPrepClassMonk FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 2d39917b-321c-58e9-a0ca-54bd41cfff1e ShadowTouchedAutoPrepClassTinkerer FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 9b04bd07-5abe-5c39-b0e6-1e05b39afcb4 ShadowTouchedAutoPrepClassWarlock FeatureDefinitionAutoPreparedSpells FeatureDefinitionAutoPreparedSpells 3b45beb6-dc7e-5e0e-81eb-ff6bdaeb5439 @@ -1618,6 +1632,7 @@ CastSpellConArtist FeatureDefinitionCastSpell FeatureDefinitionCastSpell 20a1a15 CastSpellSpellShield FeatureDefinitionCastSpell FeatureDefinitionCastSpell 09aac17f-37c6-5456-adf1-6578251f8359 CastSpellTinkerer FeatureDefinitionCastSpell FeatureDefinitionCastSpell 67ded021-18e4-5ebf-a396-449314a731ef CastSpellWitch FeatureDefinitionCastSpell FeatureDefinitionCastSpell 73c40446-6b19-5203-9a7d-31c3926289b6 +ClassMagusCastSpell FeatureDefinitionCastSpell FeatureDefinitionCastSpell b4059dd2-0805-5bf2-a699-f0e341d95621 ClassWarlockCastSpell FeatureDefinitionCastSpell FeatureDefinitionCastSpell c6e9a37e-2888-5cfb-95ff-3e65c3a96c6b DH_Custom_CastSpell_ArchMage FeatureDefinitionCastSpell FeatureDefinitionCastSpell 2bfc6eae-908f-52dc-8255-0e2a53a436bf DH_Custom_CastSpell_GuardianNaga FeatureDefinitionCastSpell FeatureDefinitionCastSpell 22c4c5ba-3416-5750-8670-092083e95415 @@ -1755,6 +1770,7 @@ BackgroundSkillSelect2 FeatureDefinitionPointPool FeatureDefinitionPointPool 77d BackgroundSkillSelect3 FeatureDefinitionPointPool FeatureDefinitionPointPool e6f2ed65-a44e-4314-b38c-393abb4ad900 BackgroundToolSelect FeatureDefinitionPointPool FeatureDefinitionPointPool 989ddb03-b915-42cc-9612-bc8be96b7476 BackgroundToolSelect2 FeatureDefinitionPointPool FeatureDefinitionPointPool 07d30e58-eddc-43eb-a24c-71f107b8d76a +ClassMagusSkillProficiency FeatureDefinitionPointPool FeatureDefinitionPointPool 8e96e965-8fe8-5958-9296-4fbcd0a2ff85 ClassMonkSkillProficiency FeatureDefinitionPointPool FeatureDefinitionPointPool 532783fa-78b3-54ae-8a87-5083d6776a31 ClassWarlockSkillProficiency FeatureDefinitionPointPool FeatureDefinitionPointPool fe4e8e1f-0358-5bb4-801d-88c9eb21e495 DHPactOfTheTomeBonusCantrips FeatureDefinitionPointPool FeatureDefinitionPointPool 862cdcdd-3f35-5a3f-bc93-870c70fa15af @@ -1841,6 +1857,8 @@ CancelElixirResilience FeatureDefinitionPower FeatureDefinitionPower 4de693d2-f1 CancelElixirSwiftness FeatureDefinitionPower FeatureDefinitionPower 86888f66-c8b2-49db-910a-bde389dd69df CancelFlyingConditionArtificialServant FeatureDefinitionPower FeatureDefinitionPower 15bff3c5-632e-451f-8c46-1511ed4cf805 ChefTreatEatPower FeatureDefinitionPower FeatureDefinitionPower 31ea87c9-f446-59ba-a422-6855c1b372bf +ClassMagusArcaneArtRupture SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool FeatureDefinitionPower 2e65dba9-ac84-5d81-9076-addc04f8fd39 +ClassMagusArcaneFocus FeatureDefinitionPower FeatureDefinitionPower a2a464b9-5934-5289-b006-bf9875daf8a2 ClassMonkDiamondSoulPower SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool FeatureDefinitionPower 46e42723-e78c-5863-9e81-ac24bb193036 ClassMonkEmptyBody SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool FeatureDefinitionPower 8ad1c0d2-55f9-5f6d-9d5d-d95e4a3d4f08 ClassMonkFlurryOfBlows SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool FeatureDefinitionPower b860cc3a-edcd-565b-b8cb-77d6155e4bdf @@ -2094,6 +2112,10 @@ ZSPowerPaladinAuraOfProtection18 FeatureDefinitionPower FeatureDefinitionPower 1 ZSPowerPaladinCleansingTouch FeatureDefinitionPower FeatureDefinitionPower 71861ca1-61ed-4344-bb26-ef21232adddd ZSSorcerousRestoration FeatureDefinitionPower FeatureDefinitionPower a524f8eb-8d30-4614-819d-a8f7df84f73e BarbarianArmorProficiencyMulticlass FeatureDefinitionProficiency FeatureDefinitionProficiency 86558227b0cd4771b42978a60dc610db +ClassMagusArmorProficiency FeatureDefinitionProficiency FeatureDefinitionProficiency 4a37789c-ddbb-5bd5-8a11-ea8bb77c2d38 +ClassMagusSavingThrowProficiency FeatureDefinitionProficiency FeatureDefinitionProficiency aca38866-ae80-54f1-b64a-5ab6471acfab +ClassMagusToolsProficiency FeatureDefinitionProficiency FeatureDefinitionProficiency 605322f6-b75e-50e1-a079-28a1b704a448 +ClassMagusWeaponProficiency FeatureDefinitionProficiency FeatureDefinitionProficiency ec723019-70ac-50d1-ad24-c3ea1a9704f6 ClassMonkDiamondSoul FeatureDefinitionProficiency FeatureDefinitionProficiency c4fb60a3-74a2-574b-be2c-c4c054dff8f6 ClassMonkSavingThrowProficiency FeatureDefinitionProficiency FeatureDefinitionProficiency ec3627f4-5cc8-53e4-bf70-13403ab1ddce ClassMonkWeaponProficiency FeatureDefinitionProficiency FeatureDefinitionProficiency 40d8ad91-9775-5891-87c4-ed9141633730 @@ -5339,6 +5361,8 @@ SpellAncientForestHerbalBrewDamageAffinityPoisonResistancePower SpellDefinition SpellAncientForestHerbalBrewDamageAffinityRadiantResistancePower SpellDefinition SpellDefinition 13d1b48f-4572-5e5c-b4f0-858655739297 SpellAncientForestHerbalBrewHealingPower SpellDefinition SpellDefinition 90c1ddae-a7ba-5db3-b282-af0244e72a80 SpellAncientForestHerbalBrewToxifyingPower SpellDefinition SpellDefinition de346781-91d3-50ae-a8e9-baba63fbaafe +SpellClassMagusArcaneArtRupture SpellDefinition SpellDefinition 860a27fd-dc63-5c22-9242-59e002a628b6 +SpellClassMagusArcaneFocus SpellDefinition SpellDefinition 0c0d1d90-fb28-58ba-851c-e7a394d75573 SpellClassMonkOpenHandDistract SpellDefinition SpellDefinition b791cb32-6989-5275-83e0-cd0917f7464a SpellClassMonkOpenHandProne SpellDefinition SpellDefinition f14fdb02-b1a9-5833-9633-148882dbdc59 SpellClassMonkOpenHandPush SpellDefinition SpellDefinition dcf8027a-c7fe-5293-9789-6b7e8a35ef9c @@ -5394,6 +5418,7 @@ DHPactOfTheTomeSpellList SpellListDefinition SpellListDefinition 297fb15a-6b35-5 ElementalistSpellsList SpellListDefinition SpellListDefinition bf646de5-3d7b-53e5-93d4-4e70bd24501b GuardianNaga_Spelllist SpellListDefinition SpellListDefinition 773d2cbf-c21f-5ef8-8f40-d9a9dc2e88a7 Lich_Spelllist SpellListDefinition SpellListDefinition 5b9c4eaf-d258-581c-a8e9-2d89dd643b1a +MagusSpellList SpellListDefinition SpellListDefinition c84df18b-9ce4-5867-9824-c85c7e686da1 MoonLitExpandedSpelllist SpellListDefinition SpellListDefinition b3725667-e904-5e98-bb01-d5580c15dab3 NaturalIllusionistSpellList SpellListDefinition SpellListDefinition ead60aeb-3a72-4296-af36-2e14b110bb0b RiftWalkerSpellsList SpellListDefinition SpellListDefinition 02613d95-7568-5413-be6b-6ce96eeb153c diff --git a/Diagnostics/CommunityExpansionBlueprints/CharacterClassDefinition/ClassMagus.json b/Diagnostics/CommunityExpansionBlueprints/CharacterClassDefinition/ClassMagus.json new file mode 100644 index 0000000000..a2ea496f1d --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/CharacterClassDefinition/ClassMagus.json @@ -0,0 +1,238 @@ +{ + "$type": "CharacterClassDefinition, Assembly-CSharp", + "equipmentRows": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentRow, Assembly-CSharp", + "equipmentColumns": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentColumn, Assembly-CSharp", + "equipmentOptions": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "WeaponMartialRangedChoice", + "itemReference": "Definition:Longbow:8e188e12f1f0daa40a78a6cd72b030e4", + "defaultChoice": "", + "number": 1 + }, + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "AmmoPack", + "itemReference": "Definition:Arrow:0b2e8c437ac65034b8055735aa5da873", + "defaultChoice": "", + "number": 1 + } + ] + }, + { + "$type": "CharacterClassDefinition+HeroEquipmentColumn, Assembly-CSharp", + "equipmentOptions": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "WeaponMartialMeleeChoice", + "itemReference": "Definition:Rapier:ed13ff01b4757f148b8d5d23840cf4b8", + "defaultChoice": "", + "number": 1 + } + ] + } + ], + "defaultColumn": 0 + }, + { + "$type": "CharacterClassDefinition+HeroEquipmentRow, Assembly-CSharp", + "equipmentColumns": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentColumn, Assembly-CSharp", + "equipmentOptions": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "StarterPack", + "itemReference": "Definition:ScholarPack:703d461b7ed1eea49b9df30e1a178707", + "defaultChoice": "", + "number": 1 + } + ] + }, + { + "$type": "CharacterClassDefinition+HeroEquipmentColumn, Assembly-CSharp", + "equipmentOptions": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "StarterPack", + "itemReference": "Definition:DungeoneerPack:6286cf8295c47af42bca166999993f2b", + "defaultChoice": "", + "number": 1 + } + ] + } + ], + "defaultColumn": 0 + }, + { + "$type": "CharacterClassDefinition+HeroEquipmentRow, Assembly-CSharp", + "equipmentColumns": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentColumn, Assembly-CSharp", + "equipmentOptions": [ + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "Armor", + "itemReference": "Definition:Leather:3eb1973bc4b1dac46b8814ab902e523a", + "defaultChoice": "", + "number": 1 + }, + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "Focus", + "itemReference": "Definition:ComponentPouch:792f520ab845d5e4e99248603ab0ffd8", + "defaultChoice": "", + "number": 1 + }, + { + "$type": "CharacterClassDefinition+HeroEquipmentOption, Assembly-CSharp", + "optionType": "WeaponMartialMeleeChoice", + "itemReference": "Definition:Shortsword:5d0f8d61d53786448920cad0485b77b7", + "defaultChoice": "", + "number": 2 + } + ] + } + ], + "defaultColumn": 0 + } + ], + "hitDice": "D8", + "requiresDeity": false, + "abilityScoresPriority": [ + "Dexterity", + "Constitution", + "Intelligence", + "Wisdom", + "Strength", + "Charisma" + ], + "featureUnlocks": [ + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ClassMagusCastSpell:b4059dd2-0805-5bf2-a699-f0e341d95621", + "level": 1 + }, + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ClassMagusArmorProficiency:4a37789c-ddbb-5bd5-8a11-ea8bb77c2d38", + "level": 1 + }, + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ClassMagusSavingThrowProficiency:aca38866-ae80-54f1-b64a-5ab6471acfab", + "level": 1 + }, + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ClassMagusSkillProficiency:8e96e965-8fe8-5958-9296-4fbcd0a2ff85", + "level": 1 + }, + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ClassMagusToolsProficiency:605322f6-b75e-50e1-a079-28a1b704a448", + "level": 1 + }, + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ClassMagusWeaponProficiency:ec723019-70ac-50d1-ad24-c3ea1a9704f6", + "level": 1 + }, + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ClassMagusArcaneFocus:a2a464b9-5934-5289-b006-bf9875daf8a2", + "level": 1 + } + ], + "personalityFlagOccurences": [ + { + "$type": "PersonalityFlagOccurence, Assembly-CSharp", + "weight": 1, + "personalityFlag": "GpExplorer" + }, + { + "$type": "PersonalityFlagOccurence, Assembly-CSharp", + "weight": 5, + "personalityFlag": "GpSpellcaster" + }, + { + "$type": "PersonalityFlagOccurence, Assembly-CSharp", + "weight": 3, + "personalityFlag": "Normal" + }, + { + "$type": "PersonalityFlagOccurence, Assembly-CSharp", + "weight": 3, + "personalityFlag": "Self-Preservation" + }, + { + "$type": "PersonalityFlagOccurence, Assembly-CSharp", + "weight": 3, + "personalityFlag": "Violence" + } + ], + "skillAutolearnPreference": [ + "Acrobatics", + "Arcana", + "Athletics", + "Deception", + "History", + "Intimidation", + "Nature", + "Perception", + "Persuasion", + "Religion" + ], + "toolAutolearnPreference": [ + "ArtisanToolSmithToolsType", + "EnchantingToolType" + ], + "expertiseAutolearnPreference": [], + "featAutolearnPreference": [ + "FlawlessConcentration", + "PowerfulCantrip", + "Robust" + ], + "metamagicAutolearnPreference": [], + "ingredientGatheringOdds": 2, + "classPictogramReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "9bf940be035c7c64eb6ee577a4e9efef", + "m_SubObjectName": "Class_wizard", + "m_SubObjectType": "" + }, + "defaultBattleDecisions": "Definition:DefaultMeleeWithBackupRangeDecisions:36bb3688d84582249bf0f1c85064ad10", + "classAnimationId": "Paladin", + "vocalSpellSemeClass": "None", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Class/&ClassMagusTitle", + "description": "Class/&ClassMagusDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "7f5f4272948458f18f18f54d334fa8c0", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 1, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "97ded64b-8357-596a-aba0-9c74550e9416", + "contentPack": 9999, + "name": "ClassMagus" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/ConditionDefinition/ClassMagusConditionRupture.json b/Diagnostics/CommunityExpansionBlueprints/ConditionDefinition/ClassMagusConditionRupture.json new file mode 100644 index 0000000000..b5ea945bef --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/ConditionDefinition/ClassMagusConditionRupture.json @@ -0,0 +1,171 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [], + "allowMultipleInstances": false, + "silentWhenAdded": true, + "silentWhenRemoved": true, + "terminateWhenRemoved": false, + "specialDuration": true, + "durationType": "Round", + "durationParameterDie": "D4", + "durationParameter": 1, + "turnOccurence": 9001, + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionDamageThreshold": 0, + "conditionTags": [], + "recurrentEffectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "createdByCharacter": false, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 2, + "dieType": "D8", + "versatileDieType": "D10", + "bonusDamage": 0, + "damageType": "DamagePsychic", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageType": "", + "additionalDamageQuantity": "AbilityBonus", + "additionalDamageDieType": "D1", + "additionalDamageDieNumber": 1, + "additionalConditionWhenHit": false, + "additionalCondition": null, + "additionalConditionDurationType": "Round", + "additionalConditionDurationParameter": 1, + "additionalConditionTurnOccurenceType": "StartOfTurn", + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "acidParticleParameters": null, + "coldParticleParameters": null, + "fireParticleParameters": null, + "lightningParticleParameters": null, + "poisonParticleParameters": null, + "overrideCharacterShaderColors": false, + "firstCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "secondCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "timeToWaitBeforeApplyingShader": 0.5, + "timeToWaitBeforeRemovingShader": 0.5, + "possessive": false, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "forceBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "followSourcePosition": false, + "disolveCharacterOnDeath": false, + "disolveParameters": { + "$type": "GraphicsCharacterDefinitions+DisolveParameters, Assembly-CSharp", + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "colorWidth": 0.0, + "noiseScale": 5.0, + "hueScale": 0.0, + "vertexOffset": 0.0, + "curve": { + "$type": "UnityEngine.AnimationCurve, UnityEngine.CoreModule" + }, + "startAfterDeathAnimation": false, + "duration": 0.0 + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": null, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "1a49e40d-10b1-5a8e-8a42-2483f8702bc5", + "contentPack": 9999, + "name": "ClassMagusConditionRupture" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationCha.json b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationCha.json index eedfd9ec2b..fd168e653e 100644 --- a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationCha.json +++ b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationCha.json @@ -12,6 +12,7 @@ "features": [ "Definition:FeatChaIncrement:e34d5fec-6431-5d65-b40b-25944621de35", "Definition:FeyTeleportationAutoPrepMistyBarbarian:8a5682f7-8563-52f3-936b-138645322366", + "Definition:FeyTeleportationAutoPrepMistyClassMagus:454a48eb-5d8f-53c0-8d03-39dd1ff81be4", "Definition:FeyTeleportationAutoPrepMistyClassMonk:061e2ddc-5378-5ef5-8af4-6e33e5cd7454", "Definition:FeyTeleportationAutoPrepMistyClassTinkerer:5902baac-de33-5c7d-ac6d-0c07a57b56f2", "Definition:FeyTeleportationAutoPrepMistyClassWarlock:66d409a0-4428-5b16-9f5a-31ee2b0ba874", diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationInt.json b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationInt.json index b54bc7fa41..e343518c08 100644 --- a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationInt.json +++ b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationInt.json @@ -12,6 +12,7 @@ "features": [ "Definition:FeatIntIncrement:d2209a77-7ae2-5e9f-a7b1-5c7eab76e9cf", "Definition:FeyTeleportationAutoPrepMistyBarbarian:8a5682f7-8563-52f3-936b-138645322366", + "Definition:FeyTeleportationAutoPrepMistyClassMagus:454a48eb-5d8f-53c0-8d03-39dd1ff81be4", "Definition:FeyTeleportationAutoPrepMistyClassMonk:061e2ddc-5378-5ef5-8af4-6e33e5cd7454", "Definition:FeyTeleportationAutoPrepMistyClassTinkerer:5902baac-de33-5c7d-ac6d-0c07a57b56f2", "Definition:FeyTeleportationAutoPrepMistyClassWarlock:66d409a0-4428-5b16-9f5a-31ee2b0ba874", diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationWis.json b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationWis.json index 09b0b4322f..dfbd5a99b2 100644 --- a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationWis.json +++ b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatFeyTeleportationWis.json @@ -12,6 +12,7 @@ "features": [ "Definition:FeatWisIncrement:1794c14b-322c-560a-a025-d3e34d2cd58b", "Definition:FeyTeleportationAutoPrepMistyBarbarian:8a5682f7-8563-52f3-936b-138645322366", + "Definition:FeyTeleportationAutoPrepMistyClassMagus:454a48eb-5d8f-53c0-8d03-39dd1ff81be4", "Definition:FeyTeleportationAutoPrepMistyClassMonk:061e2ddc-5378-5ef5-8af4-6e33e5cd7454", "Definition:FeyTeleportationAutoPrepMistyClassTinkerer:5902baac-de33-5c7d-ac6d-0c07a57b56f2", "Definition:FeyTeleportationAutoPrepMistyClassWarlock:66d409a0-4428-5b16-9f5a-31ee2b0ba874", diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedCha.json b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedCha.json index 36706e3293..4c95922026 100644 --- a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedCha.json +++ b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedCha.json @@ -15,6 +15,7 @@ "Definition:PowerInflictWoundsChaFromFeat:141634ae-5a67-5357-842c-45155504bea5", "Definition:PowerInvisibilityFromFeat:b0baf5f2-42f4-554a-b807-3cf4be82af25", "Definition:ShadowTouchedAutoPrepBarbarian:b7acf706-9bbc-514b-b378-4bb805007d32", + "Definition:ShadowTouchedAutoPrepClassMagus:d414ad28-8590-53fc-b60c-d33aec37bc5e", "Definition:ShadowTouchedAutoPrepClassMonk:2d39917b-321c-58e9-a0ca-54bd41cfff1e", "Definition:ShadowTouchedAutoPrepClassTinkerer:9b04bd07-5abe-5c39-b0e6-1e05b39afcb4", "Definition:ShadowTouchedAutoPrepClassWarlock:3b45beb6-dc7e-5e0e-81eb-ff6bdaeb5439", diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedInt.json b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedInt.json index 79372773db..a23eff495c 100644 --- a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedInt.json +++ b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedInt.json @@ -15,6 +15,7 @@ "Definition:PowerInflictWoundsIntFromFeat:941b6863-b1f6-5cea-8fe3-3bf8eedf3451", "Definition:PowerInvisibilityFromFeat:b0baf5f2-42f4-554a-b807-3cf4be82af25", "Definition:ShadowTouchedAutoPrepBarbarian:b7acf706-9bbc-514b-b378-4bb805007d32", + "Definition:ShadowTouchedAutoPrepClassMagus:d414ad28-8590-53fc-b60c-d33aec37bc5e", "Definition:ShadowTouchedAutoPrepClassMonk:2d39917b-321c-58e9-a0ca-54bd41cfff1e", "Definition:ShadowTouchedAutoPrepClassTinkerer:9b04bd07-5abe-5c39-b0e6-1e05b39afcb4", "Definition:ShadowTouchedAutoPrepClassWarlock:3b45beb6-dc7e-5e0e-81eb-ff6bdaeb5439", diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedWis.json b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedWis.json index d5bf79040c..2f6dc124b2 100644 --- a/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedWis.json +++ b/Diagnostics/CommunityExpansionBlueprints/FeatDefinition/FeatShadowTouchedWis.json @@ -15,6 +15,7 @@ "Definition:PowerInflictWoundsWisFromFeat:f454baf0-d76e-50c0-beee-083d87d0853b", "Definition:PowerInvisibilityFromFeat:b0baf5f2-42f4-554a-b807-3cf4be82af25", "Definition:ShadowTouchedAutoPrepBarbarian:b7acf706-9bbc-514b-b378-4bb805007d32", + "Definition:ShadowTouchedAutoPrepClassMagus:d414ad28-8590-53fc-b60c-d33aec37bc5e", "Definition:ShadowTouchedAutoPrepClassMonk:2d39917b-321c-58e9-a0ca-54bd41cfff1e", "Definition:ShadowTouchedAutoPrepClassTinkerer:9b04bd07-5abe-5c39-b0e6-1e05b39afcb4", "Definition:ShadowTouchedAutoPrepClassWarlock:3b45beb6-dc7e-5e0e-81eb-ff6bdaeb5439", diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/FeyTeleportationAutoPrepMistyClassMagus.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/FeyTeleportationAutoPrepMistyClassMagus.json new file mode 100644 index 0000000000..6f92a55e71 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/FeyTeleportationAutoPrepMistyClassMagus.json @@ -0,0 +1,42 @@ +{ + "$type": "FeatureDefinitionAutoPreparedSpells, Assembly-CSharp", + "autopreparedTag": "FeyTeleport", + "autoPreparedSpellsGroups": [ + { + "$type": "FeatureDefinitionAutoPreparedSpells+AutoPreparedSpellsGroup, Assembly-CSharp", + "classLevel": 0, + "spellsList": [ + "Definition:MistyStep:f4619f117544fe148aae6952202da5e3" + ] + } + ], + "spellcastingClass": "Definition:ClassMagus:97ded64b-8357-596a-aba0-9c74550e9416", + "affinityRace": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feat/&PowerMistyStepFromFeatTitle", + "description": "Feat/&PowerMistyStepFromFeatDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "454a48eb-5d8f-53c0-8d03-39dd1ff81be4", + "contentPack": 9999, + "name": "FeyTeleportationAutoPrepMistyClassMagus" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/ShadowTouchedAutoPrepClassMagus.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/ShadowTouchedAutoPrepClassMagus.json new file mode 100644 index 0000000000..b01cf0ae55 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionAutoPreparedSpells/ShadowTouchedAutoPrepClassMagus.json @@ -0,0 +1,44 @@ +{ + "$type": "FeatureDefinitionAutoPreparedSpells, Assembly-CSharp", + "autopreparedTag": "ShadowTouched", + "autoPreparedSpellsGroups": [ + { + "$type": "FeatureDefinitionAutoPreparedSpells+AutoPreparedSpellsGroup, Assembly-CSharp", + "classLevel": 0, + "spellsList": [ + "Definition:Invisibility:191eaa38bdc35ea429f843cc00e7e559", + "Definition:FalseLife:97d70ac4c94f31540aa7b7e1555b7a49", + "Definition:InflictWounds:473bbe804543d0f4ebe68ba6db675a49" + ] + } + ], + "spellcastingClass": "Definition:ClassMagus:97ded64b-8357-596a-aba0-9c74550e9416", + "affinityRace": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feat/&PowerShadowTouchedFromFeatTitle", + "description": "Feat/&PowerShadowTouchedFromFeatDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "d414ad28-8590-53fc-b60c-d33aec37bc5e", + "contentPack": 9999, + "name": "ShadowTouchedAutoPrepClassMagus" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionCastSpell/ClassMagusCastSpell.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionCastSpell/ClassMagusCastSpell.json new file mode 100644 index 0000000000..bf3eb9a940 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionCastSpell/ClassMagusCastSpell.json @@ -0,0 +1,377 @@ +{ + "$type": "FeatureDefinitionCastSpell, Assembly-CSharp", + "spellCastingOrigin": "Class", + "spellcastingAbility": "Intelligence", + "spellcastingParametersComputation": "Dynamic", + "staticDCValue": 10, + "staticToHitValue": 4, + "spellListDefinition": "Definition:MagusSpellList:c84df18b-9ce4-5867-9824-c85c7e686da1", + "restrictedSchools": [], + "spellKnowledge": "Selection", + "spellReadyness": "AllKnown", + "spellPreparationCount": "AbilityBonusPlusHalfLevel", + "slotsRecharge": "LongRest", + "spellCastingLevel": 9, + "knownCantrips": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "knownSpells": [ + 0, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 0, + 0 + ], + "scribedSpells": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "replacedSpells": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "slotsPerLevels": [ + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 1, + "slots": [ + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 2, + "slots": [ + 2, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 3, + "slots": [ + 2, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 4, + "slots": [ + 3, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 5, + "slots": [ + 3, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 6, + "slots": [ + 4, + 2, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 7, + "slots": [ + 4, + 2, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 8, + "slots": [ + 4, + 3, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 9, + "slots": [ + 4, + 3, + 0, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 10, + "slots": [ + 4, + 3, + 2, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 11, + "slots": [ + 4, + 3, + 2, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 12, + "slots": [ + 4, + 3, + 3, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 13, + "slots": [ + 4, + 3, + 3, + 0, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 14, + "slots": [ + 4, + 3, + 3, + 1, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 15, + "slots": [ + 4, + 3, + 3, + 1, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 16, + "slots": [ + 4, + 3, + 3, + 2, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 17, + "slots": [ + 4, + 3, + 3, + 2, + 0, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 18, + "slots": [ + 4, + 3, + 3, + 3, + 1, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 19, + "slots": [ + 4, + 3, + 3, + 3, + 1, + 0 + ] + }, + { + "$type": "FeatureDefinitionCastSpell+SlotsByLevelDuplet, Assembly-CSharp", + "level": 20, + "slots": [ + 4, + 3, + 3, + 3, + 2, + 0 + ] + } + ], + "focusType": "Arcane", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Class/&ClassMagusSpellcastingTitle", + "description": "Class/&ClassMagusSpellcastingDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "b4059dd2-0805-5bf2-a699-f0e341d95621", + "contentPack": 9999, + "name": "ClassMagusCastSpell" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPointPool/ClassMagusSkillProficiency.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPointPool/ClassMagusSkillProficiency.json new file mode 100644 index 0000000000..01343b6e65 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPointPool/ClassMagusSkillProficiency.json @@ -0,0 +1,45 @@ +{ + "$type": "FeatureDefinitionPointPool, Assembly-CSharp", + "poolType": "Skill", + "poolAmount": 4, + "restrictedChoices": [ + "Acrobatics", + "Arcana", + "Athletics", + "Deception", + "History", + "Intimidation", + "Nature", + "Perception", + "Persuasion", + "Religion" + ], + "uniqueChoices": true, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feature/&ClassMagusSkillProficiencyTitle", + "description": "Feature/&ClassMagusSkillProficiencyDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "8e96e965-8fe8-5958-9296-4fbcd0a2ff85", + "contentPack": 9999, + "name": "ClassMagusSkillProficiency" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPower/ClassMagusArcaneFocus.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPower/ClassMagusArcaneFocus.json new file mode 100644 index 0000000000..6f6f6a14eb --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPower/ClassMagusArcaneFocus.json @@ -0,0 +1,185 @@ +{ + "$type": "FeatureDefinitionPower, Assembly-CSharp", + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Self", + "rangeParameter": 0, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Self", + "itemSelectionType": "Equiped", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "targetFilteringMethod": "AllCharacterAndGadgets", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "hasShoveRoll": false, + "createdByCharacter": false, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": null, + "casterSelfParticleReference": null, + "casterQuickSpellParticleReference": null, + "targetParticleReference": null, + "effectParticleReference": null, + "effectSubTargetParticleReference": null, + "zoneParticleReference": null, + "beforeImpactParticleReference": null, + "impactParticleReference": null, + "activeEffectImpactParticleReference": null, + "activeEffectCellStartParticleReference": null, + "activeEffectCellParticleReference": null, + "activeEffectCellEndParticleReference": null, + "activeEffectSurfaceStartParticleReference": null, + "activeEffectSurfaceParticleReference": null, + "activeEffectSurfaceEndParticleReference": null, + "emissiveBorderCellStartParticleReference": null, + "emissiveBorderCellParticleReference": null, + "emissiveBorderCellEndParticleReference": null, + "emissiveBorderSurfaceStartParticleReference": null, + "emissiveBorderSurfaceParticleReference": null, + "emissiveBorderSurfaceEndParticleReference": null, + "conditionStartParticleReference": null, + "conditionParticleReference": null, + "conditionEndParticleReference": null, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0" + }, + "delegatedToAction": false, + "surrogateToSpell": null, + "triggeredBySpecialMove": false, + "activationTime": "OnAttackHit", + "reactionContext": "None", + "reactionName": "", + "hasCastingFailure": false, + "castingSuccessComputation": "CasterLevel", + "canUseInDialog": false, + "disableIfConditionIsOwned": null, + "rechargeRate": "AtWill", + "costPerUse": 1, + "spellcastingFeature": null, + "usesDetermination": "Fixed", + "abilityScoreDetermination": "Explicit", + "usesAbilityScoreName": "Charisma", + "fixedUsesPerRecharge": 1, + "abilityScore": "Intelligence", + "attackHitComputation": "AbilityScore", + "fixedAttackHit": 0, + "abilityScoreBonusToAttack": false, + "proficiencyBonusToAttack": false, + "uniqueInstance": false, + "showCasting": true, + "shortTitleOverride": "", + "overriddenPower": null, + "includeBaseDescription": false, + "magical": true, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Power/&ClassMagusArcaneFocusTitle", + "description": "Power/&ClassMagusArcaneFocusDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "a2a464b9-5934-5289-b006-bf9875daf8a2", + "contentPack": 9999, + "name": "ClassMagusArcaneFocus" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPowerSharedPool/ClassMagusArcaneArtRupture.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPowerSharedPool/ClassMagusArcaneArtRupture.json new file mode 100644 index 0000000000..8d2d32e6a8 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionPowerSharedPool/ClassMagusArcaneArtRupture.json @@ -0,0 +1,329 @@ +{ + "$type": "SolastaCommunityExpansion.CustomDefinitions.FeatureDefinitionPowerSharedPool, SolastaCommunityExpansion", + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 24, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Individuals", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 1, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "targetFilteringMethod": "AllCharacterAndGadgets", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": false, + "grantedConditionOnSave": null, + "hasShoveRoll": false, + "createdByCharacter": false, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Intelligence", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Condition", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "createdByCharacter": false, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ClassMagusConditionRupture", + "conditionDefinition": "Definition:ClassMagusConditionRupture:1a49e40d-10b1-5a8e-8a42-2483f8702bc5", + "operation": "Add", + "conditionsList": [ + "Definition:ClassMagusConditionRupture:1a49e40d-10b1-5a8e-8a42-2483f8702bc5" + ], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterSelfParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterQuickSpellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "targetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectSubTargetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "zoneParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": null, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": null, + "activeEffectCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0" + }, + "delegatedToAction": false, + "surrogateToSpell": null, + "triggeredBySpecialMove": false, + "activationTime": "NoCost", + "reactionContext": "None", + "reactionName": "", + "hasCastingFailure": false, + "castingSuccessComputation": "CasterLevel", + "canUseInDialog": false, + "disableIfConditionIsOwned": null, + "rechargeRate": "AtWill", + "costPerUse": 1, + "spellcastingFeature": null, + "usesDetermination": "Fixed", + "abilityScoreDetermination": "Explicit", + "usesAbilityScoreName": "Charisma", + "fixedUsesPerRecharge": 1, + "abilityScore": "Intelligence", + "attackHitComputation": "AbilityScore", + "fixedAttackHit": 0, + "abilityScoreBonusToAttack": false, + "proficiencyBonusToAttack": false, + "uniqueInstance": false, + "showCasting": true, + "shortTitleOverride": "", + "overriddenPower": null, + "includeBaseDescription": false, + "magical": true, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Subclass/&ClassMagusArcaneArtRuptureTitle", + "description": "ClassMagusArcaneArtRupture", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "2e65dba9-ac84-5d81-9076-addc04f8fd39", + "contentPack": 9999, + "name": "ClassMagusArcaneArtRupture" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusArmorProficiency.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusArmorProficiency.json new file mode 100644 index 0000000000..b9fd1f1b00 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusArmorProficiency.json @@ -0,0 +1,35 @@ +{ + "$type": "FeatureDefinitionProficiency, Assembly-CSharp", + "proficiencyType": "Armor", + "proficiencies": [ + "LightArmorCategory" + ], + "forbiddenItemTags": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feature/&ClassMagusArmorProficiencyTitle", + "description": "Feature/&ClassMagusArmorProficiencyDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "4a37789c-ddbb-5bd5-8a11-ea8bb77c2d38", + "contentPack": 9999, + "name": "ClassMagusArmorProficiency" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusSavingThrowProficiency.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusSavingThrowProficiency.json new file mode 100644 index 0000000000..6656b5611a --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusSavingThrowProficiency.json @@ -0,0 +1,36 @@ +{ + "$type": "FeatureDefinitionProficiency, Assembly-CSharp", + "proficiencyType": "SavingThrow", + "proficiencies": [ + "Dexterity", + "Wisdom" + ], + "forbiddenItemTags": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feature/&ClassMagusSavingThrowProficiencyTitle", + "description": "Feature/&ClassMagusSavingThrowProficiencyDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "aca38866-ae80-54f1-b64a-5ab6471acfab", + "contentPack": 9999, + "name": "ClassMagusSavingThrowProficiency" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusToolsProficiency.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusToolsProficiency.json new file mode 100644 index 0000000000..a5919191e0 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusToolsProficiency.json @@ -0,0 +1,36 @@ +{ + "$type": "FeatureDefinitionProficiency, Assembly-CSharp", + "proficiencyType": "Tool", + "proficiencies": [ + "ArtisanToolSmithToolsType", + "EnchantingToolType" + ], + "forbiddenItemTags": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feature/&ClassMagusToolsProficiencyTitle", + "description": "Feature/&ClassMagusToolsProficiencyDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "605322f6-b75e-50e1-a079-28a1b704a448", + "contentPack": 9999, + "name": "ClassMagusToolsProficiency" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusWeaponProficiency.json b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusWeaponProficiency.json new file mode 100644 index 0000000000..2cbe54c1a8 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/FeatureDefinitionProficiency/ClassMagusWeaponProficiency.json @@ -0,0 +1,35 @@ +{ + "$type": "FeatureDefinitionProficiency, Assembly-CSharp", + "proficiencyType": "Weapon", + "proficiencies": [ + "MartialWeaponCategory" + ], + "forbiddenItemTags": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Feature/&ClassMagusWeaponProficiencyTitle", + "description": "Feature/&ClassMagusWeaponProficiencyDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "ec723019-70ac-50d1-ad24-c3ea1a9704f6", + "contentPack": 9999, + "name": "ClassMagusWeaponProficiency" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneArtRupture.json b/Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneArtRupture.json new file mode 100644 index 0000000000..6d1a32cc29 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneArtRupture.json @@ -0,0 +1,182 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "implemented": true, + "schoolOfMagic": "SchoolEvocation", + "spellLevel": 0, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "ritualCastingTime": "Action", + "requiresConcentration": false, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Self", + "rangeParameter": 0, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Self", + "itemSelectionType": "Equiped", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "targetFilteringMethod": "AllCharacterAndGadgets", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "hasShoveRoll": false, + "createdByCharacter": false, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": null, + "casterSelfParticleReference": null, + "casterQuickSpellParticleReference": null, + "targetParticleReference": null, + "effectParticleReference": null, + "effectSubTargetParticleReference": null, + "zoneParticleReference": null, + "beforeImpactParticleReference": null, + "impactParticleReference": null, + "activeEffectImpactParticleReference": null, + "activeEffectCellStartParticleReference": null, + "activeEffectCellParticleReference": null, + "activeEffectCellEndParticleReference": null, + "activeEffectSurfaceStartParticleReference": null, + "activeEffectSurfaceParticleReference": null, + "activeEffectSurfaceEndParticleReference": null, + "emissiveBorderCellStartParticleReference": null, + "emissiveBorderCellParticleReference": null, + "emissiveBorderCellEndParticleReference": null, + "emissiveBorderSurfaceStartParticleReference": null, + "emissiveBorderSurfaceParticleReference": null, + "emissiveBorderSurfaceEndParticleReference": null, + "conditionStartParticleReference": null, + "conditionParticleReference": null, + "conditionEndParticleReference": null, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0" + }, + "aiParameters": { + "$type": "SpellAIParameters, Assembly-CSharp", + "learnPriority": "Low", + "preparePriority": "Low" + }, + "concentrationAction": "None", + "verboseComponent": true, + "somaticComponent": true, + "materialComponentType": "Mundane", + "specificMaterialComponentTag": "Diamond", + "specificMaterialComponentCostGp": 100, + "specificMaterialComponentConsumed": true, + "terminateOnItemUnequip": false, + "displayConditionDuration": false, + "vocalSpellSemeType": "None", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Subclass/&ClassMagusArcaneArtRuptureTitle", + "description": "ClassMagusArcaneArtRupture", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "860a27fd-dc63-5c22-9242-59e002a628b6", + "contentPack": 9999, + "name": "SpellClassMagusArcaneArtRupture" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneFocus.json b/Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneFocus.json new file mode 100644 index 0000000000..20eb1bf9b4 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/SpellDefinition/SpellClassMagusArcaneFocus.json @@ -0,0 +1,184 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [ + "Definition:SpellClassMagusArcaneArtRupture:860a27fd-dc63-5c22-9242-59e002a628b6" + ], + "implemented": true, + "schoolOfMagic": "SchoolEvocation", + "spellLevel": 0, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "ritualCastingTime": "Action", + "requiresConcentration": false, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Self", + "rangeParameter": 0, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Self", + "itemSelectionType": "Equiped", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "targetFilteringMethod": "AllCharacterAndGadgets", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "hasShoveRoll": false, + "createdByCharacter": false, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": null, + "casterSelfParticleReference": null, + "casterQuickSpellParticleReference": null, + "targetParticleReference": null, + "effectParticleReference": null, + "effectSubTargetParticleReference": null, + "zoneParticleReference": null, + "beforeImpactParticleReference": null, + "impactParticleReference": null, + "activeEffectImpactParticleReference": null, + "activeEffectCellStartParticleReference": null, + "activeEffectCellParticleReference": null, + "activeEffectCellEndParticleReference": null, + "activeEffectSurfaceStartParticleReference": null, + "activeEffectSurfaceParticleReference": null, + "activeEffectSurfaceEndParticleReference": null, + "emissiveBorderCellStartParticleReference": null, + "emissiveBorderCellParticleReference": null, + "emissiveBorderCellEndParticleReference": null, + "emissiveBorderSurfaceStartParticleReference": null, + "emissiveBorderSurfaceParticleReference": null, + "emissiveBorderSurfaceEndParticleReference": null, + "conditionStartParticleReference": null, + "conditionParticleReference": null, + "conditionEndParticleReference": null, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0" + }, + "aiParameters": { + "$type": "SpellAIParameters, Assembly-CSharp", + "learnPriority": "Low", + "preparePriority": "Low" + }, + "concentrationAction": "None", + "verboseComponent": true, + "somaticComponent": true, + "materialComponentType": "Mundane", + "specificMaterialComponentTag": "Diamond", + "specificMaterialComponentCostGp": 100, + "specificMaterialComponentConsumed": true, + "terminateOnItemUnequip": false, + "displayConditionDuration": false, + "vocalSpellSemeType": "None", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Power/&ClassMagusArcaneFocusTitle", + "description": "Power/&ClassMagusArcaneFocusDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "0c0d1d90-fb28-58ba-851c-e7a394d75573", + "contentPack": 9999, + "name": "SpellClassMagusArcaneFocus" +} \ No newline at end of file diff --git a/Diagnostics/CommunityExpansionBlueprints/SpellListDefinition/MagusSpellList.json b/Diagnostics/CommunityExpansionBlueprints/SpellListDefinition/MagusSpellList.json new file mode 100644 index 0000000000..c610e0e723 --- /dev/null +++ b/Diagnostics/CommunityExpansionBlueprints/SpellListDefinition/MagusSpellList.json @@ -0,0 +1,115 @@ +{ + "$type": "SpellListDefinition, Assembly-CSharp", + "hasCantrips": false, + "maxSpellLevel": 5, + "spellsByLevel": [ + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 0, + "spells": [] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 1, + "spells": [ + "Definition:AHHellishRebuke:e34502d5-2d88-5668-8e62-e5b9983667d6", + "Definition:AHPactMarkSpell:e59222d7-222b-571c-86df-47fff2c85cd9", + "Definition:ExpeditiousRetreat:3713ff85f9f53f2459ae8d7a976a24b8", + "Definition:MageArmor:4772a21b455a76149adcc38d58267a10", + "Definition:ProtectionFromEvilGood:b8a59d1a01529b04893e0c440cecee39", + "Definition:Shield:f69bd9c9375fc074a90043c42f9868fe" + ] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 2, + "spells": [ + "Definition:HoldPerson:cbc582b44f08e7f4b8ea69077471bc64", + "Definition:Invisibility:191eaa38bdc35ea429f843cc00e7e559", + "Definition:MistyStep:f4619f117544fe148aae6952202da5e3", + "Definition:RayOfEnfeeblement:b617f68e7f041b74bb018ce5bf9a1c5c", + "Definition:SeeInvisibility:10c15ca8321632e42825254149dfb885", + "Definition:Shatter:acb96b651384a47428da7c0c32ab359e", + "Definition:SpiderClimb:1ba4092482a450c4da60e17cbe4577df" + ] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 3, + "spells": [ + "Definition:Counterspell:699759f98dacad84fb2d7323e0788179", + "Definition:DispelMagic:296e789b353c0324b804bee2c16a419a", + "Definition:Fear:cff391ef9dd8106448ed464270dcc9c4", + "Definition:Fly:6c13f5461f5047645a8c165cc0f43f83", + "Definition:Haste:134efafc59c7c58438b711271fb2c785", + "Definition:Slow:ee93dd5046aabe14e90ba99da310fbb4" + ] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 4, + "spells": [ + "Definition:Banishment:5f6a4b43068dbdc448632b9d43022eb8", + "Definition:Blight:bd131ed580e31734abb8189ab7e17a10", + "Definition:DimensionDoor:c85120485a4cc914eb81b7b75e9e7bbc", + "Definition:GreaterInvisibility:463d00efd5590394ab707875f866dfe7" + ] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 5, + "spells": [ + "Definition:ConjureElemental:7b1c584f8e18f6a4194eba7bc80d3643", + "Definition:HoldMonster:1c8a63324f25814408ca250ba5ec2d16", + "Definition:MindTwist:88c5c5e07eb13684998c75c11492fdd5" + ] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 6, + "spells": [] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 7, + "spells": [] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 8, + "spells": [] + }, + { + "$type": "SpellListDefinition+SpellsByLevelDuplet, Assembly-CSharp", + "level": 9, + "spells": [] + } + ], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "SpellList/&MagusSpellListTitle", + "description": "SpellList/&MagusSpellListDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "c84df18b-9ce4-5867-9824-c85c7e686da1", + "contentPack": 9999, + "name": "MagusSpellList" +} \ No newline at end of file From b50bbb07a7f07660bf6385f5a0d5713eabdbe15c Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 14:04:38 -0700 Subject: [PATCH 09/22] update version / changelog --- Diagnostics/NexusDescription.txt | 23 ++++++++++++----------- SolastaCommunityExpansion/Changelog.txt | 4 +++- SolastaCommunityExpansion/Info.json | 2 +- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Diagnostics/NexusDescription.txt b/Diagnostics/NexusDescription.txt index 7d92144dba..aad9d4ee51 100644 --- a/Diagnostics/NexusDescription.txt +++ b/Diagnostics/NexusDescription.txt @@ -7,30 +7,30 @@ This is a collection of work from the Solasta modding community. It includes mul [list] -[*][b]AceHigh[/b]: SoulBlade subclass, Tactician subclass, Power Attack and Reckless Fury feats, no identification -[*][b]Bazou[/b]: Witch class, Fighting Styles +[*][b]AceHigh[/b]: SoulBlade subclass, Tactician subclass, feats, no identification +[*][b]Bazou[/b]: Witch class, fighting styles [*][b]Boofat[/b]: alwaysAlt [*][b]Burtsev-Alexey[/b]: deep copy algorithm [*][b]ChrisJohnDigital[/b]: Tinkerer class, crafting, faction relations, feats, fighting styles, items, subclasses, progression [*][b]Dreadmaker[/b]: Forest Guardian subclass -[*][b]DubhHerder[/b]: 7th, 8th and 9th level spells, Crafty Feats migration, bug models replacement, additional high level monsters, Warlock class and subclasses -[*][b]ElAntonious[/b]: Arcanist subclass, Torchbearer and Dual Flurry feats +[*][b]DubhHerder[/b]: high level spells, feats migration, bug models replacement, high level monsters, Warlock class and subclasses +[*][b]ElAntonious[/b]: Arcanist subclass, feats [*][b]Esker[/b]: Warlock class design, quality assurance -[*][b]Holic75[/b]: SolastaModHelpers and SolastaExtraContent +[*][b]Holic75[/b]: SolastaModHelpers, SolastaExtraContent [*][b]ImpPhil[/b]: adv/dis rules, conjurations control, auto-equip, monster's health, pause UI, sorting, stocks prices, no attunement, xp scaling, character export, save by location, combat camera, diagnostics, custom icons, refactor, screen map [*][b]Lyraele[/b]: Warlock class design, quality assurance [*][b]Narria[/b]: modKit creator, developer -[*][b]Nd[/b]: Marshal subclass, Opportunist subclass +[*][b]Nd[/b]: Marshal and Opportunist subclasses [*][b]Nyowwww[/b]: Chinese translations [*][b]PraiseThyBus[/b]: quality assurance [*][b]RedOrca[/b]: Path of the Light subclass, Indomitable Might -[*][b]SilverGriffon[/b]: PickPocket, lore friendly names, crafty feats, face unlocks, sylvan armor unlock, empress garb skins, arcane foci items, belt of dwarvenkin, merchants, spells +[*][b]SilverGriffon[/b]: PickPocket, lore friendly names, feats, face unlocks, sylvan armor unlock, empress garb skins, arcane foci items, belt of dwarvenkin, merchants, spells [*][b]Sinai-dev[/b]: Unity Explorer UI standalone [*][b]Spacehamster[/b]: dataminer -[*][b]TPABOBAP[/b]: Monk class and subclasses, Warlock improvements, Tinkerer improvements, Level Up improvements, Feats, Spells, infrastructure patches, Holic75's code integration +[*][b]TPABOBAP[/b]: Monk class and subclasses, Warlock improvements, Tinkerer improvements, custom level up, feats, spells, infrastructure patches, Holic75's code integration [*][b]View619[/b]: Darkvision, Superior Dark Vision -[*][b]Vylantze[/b]: English terms review -[*][b]Zappastuff[/b]: repository maintenance, translations, multiclass, level 20, respec, level down, default party, encounters, dungeon maker pro, party size, screen gadgets highlights, inventory sorting, epic points, teleport, mod UI, diagnostics, feats, pact magic, Infrastructure and QoL patches, Holic75's code integration +[*][b]Vylantze[/b]: English terms review, tweaks +[*][b]Zappastuff[/b]: repository maintenance, translations, multiclass, level 20, respec, level down, default party, encounters, dungeon maker pro, party size, screen gadgets highlights, inventory sorting, epic points, teleport, mod UI, diagnostics, feats, pact magic, infrastructure patches, Holic75's code integration [/list] [size=4][b]How to Install - Windows[/b][/size] @@ -117,6 +117,7 @@ All settings start disabled by default. On first start the mod will display an w [list=1] +[*][b]Class/&ClassMagusTitle[/b]: Class/&ClassMagusDescription [*][b]Monk[/b]: Monks are united in their ability to magically harness the energy that flows in their bodies. Whether channeled as a striking display of combat prowess or a subtler focus of defensive ability and speed, this energy infuses all that a Monk does. [*][b]Tinkerer[/b]: Tinkerers are inventors, alchemists, and more. They bridge the space between magic and technology. [*][b]Warlock[/b]: Warlocks are seekers of the knowledge that lies hidden in the fabric of the multiverse. Through pacts made with mysterious beings of supernatural power, warlocks unlock magical effects both subtle and spectacular. @@ -339,7 +340,7 @@ The cloud moves 10 feet directly away from you in a direction that you choose at [*][b]Power Word Stun[/b]: You speak a word of power that can overwhelm the mind of one creature you can see within range, leaving it dumbfounded. If the target has 150 hit points or fewer, it is stunned. Otherwise, the spell has no effect. [*][b]Sunburst[/b]: Brilliant sunlight flashes in a 60-foot radius centered on a point you choose within range. Each creature in that light must make a Constitution saving throw. On a failed save, a creature takes 12d6 radiant damage and is blinded for 1 minute. On a successful save, it takes half as much damage and isn't blinded by this spell. Undead and oozes have disadvantage on this saving throw.A creature blinded by this spell makes another Constitution saving throw at the end of each of its turns. On a successful save, it is no longer blinded.This spell dispels any darkness in its area that was created by a spell. [*][b]Foresight[/b]: You touch a willing creature and bestow a limited ability to see into the immediate future. For the duration, the target can't be surprised and has advantage on attack rolls, ability checks, and saving throws. Additionally, other creatures have disadvantage on attack rolls against the target for the duration. -[*][b]Mass Heal[/b]: A flood of healing energy flows from you into injured creatures around you. You restore up to 120 hit points, divided as you choose among 6 creatures that you can see within range. Creatures healed by this spell are also cured of all diseases and any effect making them blinded or deafened. This spell has no effect on undead or constructs. +[*][b]Mass Heal[/b]: A flood of healing energy flows from you into injured creatures around you. You restore 120 hit points each to 6 creatures that you can see within range. Creatures healed by this spell are also cured of all diseases and any effect making them blinded or deafened. This spell has no effect on undead or constructs. [*][b]Meteor Swarm (Single Target)[/b]: Blazing orbs of fire plummet to the ground at a single point you can see within range. Each creature in a 40-foot-radius sphere centered on the point you choose must make a Dexterity saving throw. The sphere spreads around corners. A creature takes 20d6 fire damage and 20d6 bludgeoning damage on a failed save, or half as much damage on a successful one. A creature in the area of more than one fiery burst is affected only once. [*][b]Power Word Heal[/b]: A wave of healing energy washes over the creature you touch. The target regains all its hit points. If the creature is charmed, frightened, paralyzed, or stunned, the condition ends. If the creature is prone, it can use its reaction to stand up. This spell has no effect on undead or constructs. [*][b]Power Word Kill[/b]: You utter a word of power that can compel one creature you can see within range to die instantly. If the creature you choose has 100 hit points or fewer, it dies. Otherwise, the spell has no effect. diff --git a/SolastaCommunityExpansion/Changelog.txt b/SolastaCommunityExpansion/Changelog.txt index 0bb9450e5c..5d3390b4bf 100644 --- a/SolastaCommunityExpansion/Changelog.txt +++ b/SolastaCommunityExpansion/Changelog.txt @@ -1,6 +1,8 @@ CHANGES: -- Fix War Caster feat not applying caster bonuses +- Make some higher level spells standard on official classes +- Merge alpha Magus class codebase +- Rework War Caster feat not applying bonuses PATRONS: diff --git a/SolastaCommunityExpansion/Info.json b/SolastaCommunityExpansion/Info.json index c4d78b66af..1870ebcaf5 100644 --- a/SolastaCommunityExpansion/Info.json +++ b/SolastaCommunityExpansion/Info.json @@ -2,7 +2,7 @@ "Id": "SolastaCommunityExpansion", "DisplayName": "Community Expansion II", "Author": "SolastaMods", - "Version": "1.3.57.2E", + "Version": "1.3.57.2F", "GameVersion": "1.3.57", "ManagerVersion": "0.23.4", "AssemblyName": "SolastaCommunityExpansion.dll", From d36db9ee19d53768f0847b8486e61f1d1ec1f7de Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 14:10:28 -0700 Subject: [PATCH 10/22] update MoonLit > Moonlit / SoulBlade > Soulblade --- .../Translations/Translations-de.txt | 4 ++-- .../Translations/Translations-en.txt | 8 ++++---- .../Translations/Translations-fr.txt | 2 +- .../Translations/Translations-pt-br.txt | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/SolastaCommunityExpansion/Translations/Translations-de.txt b/SolastaCommunityExpansion/Translations/Translations-de.txt index 5bc8ccbba9..62d28879c3 100644 --- a/SolastaCommunityExpansion/Translations/Translations-de.txt +++ b/SolastaCommunityExpansion/Translations/Translations-de.txt @@ -1775,7 +1775,7 @@ Stage/&SubclassSelectionStageSpecialistTitle Spezialisierung auswählen Subclass/&AbilityAffinityRogueConArtistDescription Vorteil bei Fähigkeitsprüfungen mit Überzeugung, Täuschung, Leistung und Fingerfertigkeit. Subclass/&AbilityAffinityRogueConArtistTitle Manipulativ Subclass/&AHWarlockSubclassSoulBladePactDescription Du hast einen Handel mit einer empfindungsfähigen Waffe abgeschlossen, die du im Gegenzug für Macht mit Seelen fütterst. -Subclass/&AHWarlockSubclassSoulBladePactTitle SoulBlade-Pakt +Subclass/&AHWarlockSubclassSoulBladePactTitle Soulblade-Pakt Subclass/&ArcaneFighterAdditionalActionDescription Du kannst einen Zauber wirken, nachdem du einen Feind mit deinen Waffenangriffen besiegt hast. Subclass/&ArcaneFighterAdditionalActionTitle Zauberkampf Subclass/&ArcaneFighterBonusWeaponDamageDescription Einmal pro Runde verursachen deine Waffenangriffe 1W8 zusätzlichen Schaden. @@ -2042,7 +2042,7 @@ Subclass/&TraditionSpellMasterTitle Zaubermeister Subclass/&WarlockAncientForestDescription Du hast eine Beziehung zu einer mächtigen Naturentität geschmiedet: Uralte Dryaden, Erzdruiden, Manifestationen der Feywild, die in die materielle Ebene eindringen, Vergessene Götter aus einem Urzeitalter. Ihr Gönner möchte vielleicht, dass Sie die Natur schützen, in ferne Länder reisen, die er nicht kann, oder er hat vielleicht ein anderes Motiv, das kurzlebigen Sterblichen unergründlich erscheint. Subclass/&WarlockAncientForestTitle Urwaldpakt Subclass/&WarlockMoonLitDescription Ihr Patron ist ein Geist des Mondes, ein Wesen, das die zyklische Natur von Licht und Dunkelheit verkörpert. Diese Geister versuchen, die Macht des Mondes über dem Nachthimmel aufrechtzuerhalten, während sie profane Mächte, die die Dunkelheit heimsuchen, in Schach halten und ihre Hexenmeister damit beauftragen, indem sie ihnen das Kommando über die Mächte des Mondes und seine Auswirkungen verleihen. -Subclass/&WarlockMoonLitTitle MoonLit-Pakt +Subclass/&WarlockMoonLitTitle Moonlit-Pakt Subclass/&WarlockToadKingDescription Fey, Dämon oder Verirrung, verursacht durch die Katastrophe, die wahre Natur des Krötenkönigs ist nicht bekannt, aber es ist bekannt, dass der Krötenkönig ein großes Gebiet von Sümpfen und Sümpfen in den Badlands beherrscht und denen, die bereit sind zu dienen, Macht verleiht. Subclass/&WarlockToadKingTitle Pakt des Krötenkönigs Subclass/&WarlockUrPriestDescription Während die überwiegende Mehrheit der göttlichen Zauberkundigen ihre Kräfte von einer Gottheit bezieht, gibt es diejenigen, die die Götter verachten. Diejenigen, die sich selbst Urpriester nennen, haben gelernt, die göttlichen Energien abzuschöpfen, die die Götter ihren göttlichen Zauberkundigen gewährt haben, und sie für ihre eigenen Bedürfnisse zu nutzen, ohne auch nur ein Lippenbekenntnis zu irgendeinem Gott abzugeben. Als Urpriester unterscheiden Sie sich von den meisten Hexenmeistern, denn es fehlt Ihnen ein Gönner, der Ihnen Ihre Macht verleiht. Eldritch Invocations, die Sie entdecken, sind verzerrte Formen der Magie, die die Götter ihren Gönnern gewähren könnten, während Pact Boons wahrscheinlich göttliche Artefakte sind, die Sie stehlen konnten. diff --git a/SolastaCommunityExpansion/Translations/Translations-en.txt b/SolastaCommunityExpansion/Translations/Translations-en.txt index d5ab2cf295..d5912cf29c 100644 --- a/SolastaCommunityExpansion/Translations/Translations-en.txt +++ b/SolastaCommunityExpansion/Translations/Translations-en.txt @@ -1063,9 +1063,9 @@ Feature/&MagicAffinityRangerArcanistDescription You are proficient at casting sp Feature/&MagicAffinityRangerArcanistTitle Arcane Combat Training Feature/&MiretheMindTitle Mire the Mind Feature/&MoonLitDarknessImmunityDescription You are Immune to the Darkness condition. -Feature/&MoonLitDarknessImmunityTitle MoonLit Darkness +Feature/&MoonLitDarknessImmunityTitle Moonlit Darkness Feature/&MoonLitExpandedSpelllistAfinityDescription You choose from an expanded list of spells when you learn a Warlock spell. The following spells are added to the Warlock spell list for you: {0}\n\n -Feature/&MoonLitExpandedSpelllistAfinityTitle MoonLit Spells +Feature/&MoonLitExpandedSpelllistAfinityTitle Moonlit Spells Feature/&MoonLitLightAffinityDescription If you start your turn in natural darkness, you become invisibility. Moving, attacking or using any power or spell that does not only target yourself breaks the invisibility. Feature/&MoonLitLightAffinityStrongDescription Umbral Cloak now works in dim light and magical darkness. Feature/&MoonLitLightAffinityStrongTitle Improved Umbral Cloak @@ -1775,7 +1775,7 @@ Stage/&SubclassSelectionStageSpecialistTitle Select Specialization Subclass/&AbilityAffinityRogueConArtistDescription Advantage on ability checks using Persuasion, Deception, Performance, and Sleight of Hand. Subclass/&AbilityAffinityRogueConArtistTitle Manipulative Subclass/&AHWarlockSubclassSoulBladePactDescription You have struck a bargain with a sentient weapon that you feed souls to in return for power. -Subclass/&AHWarlockSubclassSoulBladePactTitle SoulBlade Pact +Subclass/&AHWarlockSubclassSoulBladePactTitle Soulblade Pact Subclass/&ArcaneFighterAdditionalActionDescription You can cast a spell after defeating an enemy with your weapon attacks. Subclass/&ArcaneFighterAdditionalActionTitle Spell Fighting Subclass/&ArcaneFighterBonusWeaponDamageDescription Once per turn, your weapon attacks deal an extra 1d8 damage. @@ -2042,7 +2042,7 @@ Subclass/&TraditionSpellMasterTitle Spell Master Subclass/&WarlockAncientForestDescription You have forged a relationship with a powerful nature entity: Ancient Dryads, Archdruids, Manifestations of the Feywild bleeding into the material plane, Forgotten gods from a primal age. Your patron may wish for you to protect the natural world, travel to far off lands that it cannot, or it may have another motive that seems inscrutable to short-lived mortals. Subclass/&WarlockAncientForestTitle Ancient Forest Pact Subclass/&WarlockMoonLitDescription Your patron is a spirit of the moon, an entity that embodies the cyclical nature of light and darkness. These spirits seek to maintain the power of the moon over the night sky while keeping profane powers that stalk the darkness at bay and task their warlocks with the same, granting them command over the powers of the moon and its effects. -Subclass/&WarlockMoonLitTitle MoonLit Pact +Subclass/&WarlockMoonLitTitle Moonlit Pact Subclass/&WarlockToadKingDescription Fey, demon or aberration caused by the Cataclysm, the true nature of the Toad King is not known, but it is known that the Toad King rules a large area of swamps and marshes within the Badlands and offers power to those willing to serve. Subclass/&WarlockToadKingTitle Toad King Pact Subclass/&WarlockUrPriestDescription While the vast majority of divine spellcasters gain their powers from a deity, there are those who despise the gods. Those who call themselves Ur-priests have learned to siphon off the divine energies granted by gods to their divine spellcasters, using it for their own needs without giving even lip-service to any god. As an Ur-priest, you differ from most warlocks, lacking a patron who grants you your power. Eldritch Invocations you uncover are warped forms of magic the gods might grant their patrons, while Pact Boons are likely divine artefacts you have managed to steal. diff --git a/SolastaCommunityExpansion/Translations/Translations-fr.txt b/SolastaCommunityExpansion/Translations/Translations-fr.txt index 1178950ea4..1a98f0f3e3 100644 --- a/SolastaCommunityExpansion/Translations/Translations-fr.txt +++ b/SolastaCommunityExpansion/Translations/Translations-fr.txt @@ -1775,7 +1775,7 @@ Stage/&SubclassSelectionStageSpecialistTitle Sélectionnez la spécialisation Subclass/&AbilityAffinityRogueConArtistDescription Avantage aux tests de capacité utilisant Persuasion, Tromperie, Performance et Tour de passe-passe. Subclass/&AbilityAffinityRogueConArtistTitle Manipulateur Subclass/&AHWarlockSubclassSoulBladePactDescription Vous avez conclu un marché avec une arme sensible que vous nourrissez des âmes en échange de pouvoir. -Subclass/&AHWarlockSubclassSoulBladePactTitle Pacte SoulBlade +Subclass/&AHWarlockSubclassSoulBladePactTitle Pacte Soulblade Subclass/&ArcaneFighterAdditionalActionDescription Vous pouvez lancer un sort après avoir vaincu un ennemi avec vos attaques avec une arme. Subclass/&ArcaneFighterAdditionalActionTitle Combat de sorts Subclass/&ArcaneFighterBonusWeaponDamageDescription Une fois par tour, vos attaques avec une arme infligent 1d8 dégâts supplémentaires. diff --git a/SolastaCommunityExpansion/Translations/Translations-pt-br.txt b/SolastaCommunityExpansion/Translations/Translations-pt-br.txt index 7b02a294d0..402aad0e92 100644 --- a/SolastaCommunityExpansion/Translations/Translations-pt-br.txt +++ b/SolastaCommunityExpansion/Translations/Translations-pt-br.txt @@ -1775,7 +1775,7 @@ Stage/&SubclassSelectionStageSpecialistTitle Selecionar especialização Subclass/&AbilityAffinityRogueConArtistDescription Vantagem em testes de habilidade usando Persuasão, Enganação, Performance e Prestidigitação. Subclass/&AbilityAffinityRogueConArtistTitle Manipulativo Subclass/&AHWarlockSubclassSoulBladePactDescription Você fez uma barganha com uma arma senciente com a qual você alimenta almas em troca de poder. -Subclass/&AHWarlockSubclassSoulBladePactTitle Pacto SoulBlade +Subclass/&AHWarlockSubclassSoulBladePactTitle Pacto Soulblade Subclass/&ArcaneFighterAdditionalActionDescription Você pode lançar um feitiço depois de derrotar um inimigo com seus ataques de arma. Subclass/&ArcaneFighterAdditionalActionTitle Combate a Feitiços Subclass/&ArcaneFighterBonusWeaponDamageDescription Uma vez por turno, seus ataques com arma causam 1d8 de dano extra. @@ -2042,7 +2042,7 @@ Subclass/&TraditionSpellMasterTitle Mestre de Feitiços Subclass/&WarlockAncientForestDescription Você forjou um relacionamento com uma poderosa entidade da natureza: Dríades Antigas, Arquidruidas, Manifestações da Faéria sangrando no plano material, deuses esquecidos de uma era primitiva. Seu patrono pode desejar que você proteja o mundo natural, viaje para terras distantes que ele não pode, ou pode ter outro motivo que parece inescrutável para mortais de vida curta. Subclass/&WarlockAncientForestTitle Pacto da Floresta Antiga Subclass/&WarlockMoonLitDescription Seu patrono é um espírito da lua, uma entidade que incorpora a natureza cíclica da luz e da escuridão. Esses espíritos procuram manter o poder da lua sobre o céu noturno enquanto mantêm os poderes profanos que perseguem a escuridão à distância e encarregam seus feiticeiros do mesmo, concedendo-lhes o comando sobre os poderes da lua e seus efeitos. -Subclass/&WarlockMoonLitTitle Pacto MoonLit +Subclass/&WarlockMoonLitTitle Pacto Moonlit Subclass/&WarlockToadKingDescription Fey, demônio ou aberração causada pelo Cataclismo, a verdadeira natureza do Toad King não é conhecida, mas sabe-se que o Toad King governa uma grande área de pântanos e pântanos dentro das Badlands e oferece poder para aqueles dispostos a servir. Subclass/&WarlockToadKingTitle Pacto Rei Sapo Subclass/&WarlockUrPriestDescription Enquanto a grande maioria dos conjuradores divinos obtêm seus poderes de uma divindade, há aqueles que desprezam os deuses. Aqueles que se chamam Ur-sacerdotes aprenderam a sugar as energias divinas concedidas pelos deuses aos seus conjuradores divinos, usando-as para suas próprias necessidades sem dar nem mesmo palavrões a nenhum deus. Como um Ur-sacerdote, você difere da maioria dos feiticeiros, sem um patrono que lhe conceda seu poder. Invocações sobrenaturais que você descobre são formas distorcidas de magia que os deuses podem conceder a seus patronos, enquanto as Dádivas do Pacto são provavelmente artefatos divinos que você conseguiu roubar. From 754a480bbebaf68e85240cb7e7bb5f9a63635979 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:18:53 -0700 Subject: [PATCH 11/22] delete SolastaMulticlass.dll if found in mod folder --- SolastaCommunityExpansion/Main.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/SolastaCommunityExpansion/Main.cs b/SolastaCommunityExpansion/Main.cs index 63ac8ef2a1..6f1111ff79 100644 --- a/SolastaCommunityExpansion/Main.cs +++ b/SolastaCommunityExpansion/Main.cs @@ -73,6 +73,15 @@ internal static bool Load(UnityModManager.ModEntry modEntry) Translations.LoadTranslations("Game"); } + // Users still have SolastaMulticlass.dll + var multiclassFilename = Path.Combine(MOD_FOLDER, "SolastaMulticlass.dll"); + + if (File.Exists(multiclassFilename)) + { + File.Delete(multiclassFilename); + } + + // side cars allow us to load any other DLL outside CE LoadSidecars(assembly.GetName().Name); } catch (Exception ex) From 432bac46e2b025876f4395cd277a5889ed84c9f0 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:19:46 -0700 Subject: [PATCH 12/22] update changelog --- SolastaCommunityExpansion/Changelog.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/SolastaCommunityExpansion/Changelog.txt b/SolastaCommunityExpansion/Changelog.txt index 5d3390b4bf..68af16cc57 100644 --- a/SolastaCommunityExpansion/Changelog.txt +++ b/SolastaCommunityExpansion/Changelog.txt @@ -1,7 +1,6 @@ CHANGES: - Make some higher level spells standard on official classes -- Merge alpha Magus class codebase - Rework War Caster feat not applying bonuses PATRONS: From 3c49cb8a67140323f18d7191b4725595356a0eb6 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:29:05 -0700 Subject: [PATCH 13/22] add Wiki button to Credits Display --- .../Displays/CreditsDisplay.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/SolastaCommunityExpansion/Displays/CreditsDisplay.cs b/SolastaCommunityExpansion/Displays/CreditsDisplay.cs index 6e9aef3ba9..b52abba31f 100644 --- a/SolastaCommunityExpansion/Displays/CreditsDisplay.cs +++ b/SolastaCommunityExpansion/Displays/CreditsDisplay.cs @@ -110,15 +110,21 @@ internal static void DisplayCredits() using (UI.HorizontalScope()) { - UI.ActionButton("Donations".bold().orange(), () => + UI.ActionButton("Donations".bold().yellow(), () => { OpenUrl( "https://www.paypal.com/donate/?business=JG4FX47DNHQAG&item_name=Support+Solasta+Community+Expansion"); - }, UI.Width(120)); + }, UI.Width(150)); + + UI.ActionButton("Wiki".bold().yellow(), () => + { + OpenUrl( + "https://github.com/SolastaMods/SolastaCommunityExpansion/wiki"); + }, UI.Width(150)); if (IsUnityExplorerInstalled) { - UI.ActionButton(Gui.Localize("ModUi/&EnableUnityExplorer"), () => + UI.ActionButton("Unity Explorer UI".bold().yellow(), () => { if (!IsUnityExplorerEnabled) { @@ -132,7 +138,7 @@ internal static void DisplayCredits() { } } - }, UI.AutoWidth()); + }, UI.Width(150)); } } @@ -162,7 +168,7 @@ internal static void DisplayCredits() { using (UI.HorizontalScope()) { - UI.Label(kvp.Key.orange(), UI.Width(120)); + UI.Label(kvp.Key.orange(), UI.Width(150)); UI.Label(kvp.Value, UI.Width(600)); } } From 536d4c899241fc4b2026a2f2330809be70b50cae Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:29:26 -0700 Subject: [PATCH 14/22] remove deprecated term --- SolastaCommunityExpansion/Translations/Modui-de.txt | 1 - SolastaCommunityExpansion/Translations/Modui-en.txt | 1 - SolastaCommunityExpansion/Translations/Modui-es.txt | 1 - SolastaCommunityExpansion/Translations/Modui-fr.txt | 1 - SolastaCommunityExpansion/Translations/Modui-it.txt | 1 - SolastaCommunityExpansion/Translations/Modui-pt-br.txt | 1 - SolastaCommunityExpansion/Translations/Modui-ru.txt | 1 - SolastaCommunityExpansion/Translations/Modui-zh-CN.txt | 1 - 8 files changed, 8 deletions(-) diff --git a/SolastaCommunityExpansion/Translations/Modui-de.txt b/SolastaCommunityExpansion/Translations/Modui-de.txt index 772b8f5d8f..7e3a18d7a1 100644 --- a/SolastaCommunityExpansion/Translations/Modui-de.txt +++ b/SolastaCommunityExpansion/Translations/Modui-de.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation Speichern nach Kampagnen/Standorten aktivieren ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Aktiviere die kurze Erholungsaufladung der Arkanen Waffe auf dem Magier-Arkankämpfer ModUi/&EnableTeleportParty Aktivieren Sie CTRL-SHIFT-(T)eleport party [Sie könnten Quests oder Karten brechen, wenn Sie sich an einen unentdeckten Ort teleportieren] ModUi/&EnableTogglesToOverwriteDefaultTestParty Aktivieren Sie Umschalter im Charakterpool, um Ihre Standardspiel- und Testgruppe festzulegen -ModUi/&EnableUnityExplorer Aktivieren Sie die Unity Explorer-Benutzeroberfläche ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Aktiviere unbegrenzte Arkane Wiederherstellung auf Magier-Zaubermeister\nMuss aktiviert werden, wenn die Fähigkeit nutzbar ist oder vor der Charaktererstellung ModUi/&EnableUpcastConjureElementalAndFey Upcast von Elementar beschwören, Feen beschwören aktivieren ModUi/&Encounters Begegnungen diff --git a/SolastaCommunityExpansion/Translations/Modui-en.txt b/SolastaCommunityExpansion/Translations/Modui-en.txt index 6fe17714a2..33da820262 100644 --- a/SolastaCommunityExpansion/Translations/Modui-en.txt +++ b/SolastaCommunityExpansion/Translations/Modui-en.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation Enable save by campaigns / locations ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Enable short rest recharge of Arcane Weapon on Wizard Arcane Fighter ModUi/&EnableTeleportParty Enable CTRL-SHIFT-(T)eleport party [you might break quests or maps if you teleport to an undiscovered place] ModUi/&EnableTogglesToOverwriteDefaultTestParty Enable toggles on character pool to set your default play and test party -ModUi/&EnableUnityExplorer Enable the Unity Explorer UI ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Enable unlimited Arcane Recovery on Wizard Spell Master\nMust be enabled when the ability has available uses or before character creation ModUi/&EnableUpcastConjureElementalAndFey Enable upcast of Conjure Elemental, Conjure Fey ModUi/&Encounters Encounters diff --git a/SolastaCommunityExpansion/Translations/Modui-es.txt b/SolastaCommunityExpansion/Translations/Modui-es.txt index 3e1c7b467b..23399d5315 100644 --- a/SolastaCommunityExpansion/Translations/Modui-es.txt +++ b/SolastaCommunityExpansion/Translations/Modui-es.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation Habilitar el guardado por campañas / localizaciones ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Habilitar recarga de descanso corto de Arma Arcana en Mago Luchador Arcano ModUi/&EnableTeleportParty Habilitar CTRL-SHIFT-(T)eleport party [podrías romper misiones o mapas si te teletransportas a un lugar desconocido] ModUi/&EnableTogglesToOverwriteDefaultTestParty Habilita los toggles en el pool de personajes para establecer tu party de juego y de prueba por defecto -ModUi/&EnableUnityExplorer Habilitar la interfaz de usuario del Explorador de la Unidad ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Habilitar Recuperación de Arcanos ilimitada en Mago Maestro de Hechizos\nDebe habilitarse cuando la habilidad tiene usos disponibles o antes de la creación del personaje ModUi/&EnableUpcastConjureElementalAndFey Habilita el upcast de Conjurar Elemental, Conjurar Fey ModUi/&Encounters Encuentros diff --git a/SolastaCommunityExpansion/Translations/Modui-fr.txt b/SolastaCommunityExpansion/Translations/Modui-fr.txt index 492f1d1ed0..177bc56433 100644 --- a/SolastaCommunityExpansion/Translations/Modui-fr.txt +++ b/SolastaCommunityExpansion/Translations/Modui-fr.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation Activer l'enregistrement par campagnes/emplacements ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Activer la recharge de repos court de Arcane Weapon sur Wizard Arcane Fighter ModUi/&EnableTeleportParty Activer CTRL-SHIFT-(T)eleport party [vous pourriez casser des quêtes ou des cartes si vous vous téléportez vers un lieu inconnu] ModUi/&EnableTogglesToOverwriteDefaultTestParty Activez les bascules sur le groupe de personnages pour définir votre partie de jeu et de test par défaut -ModUi/&EnableUnityExplorer Activer l'interface utilisateur Unity Explorer ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Activez la récupération arcanique illimitée sur Wizard Spell Master\nDoit être activé lorsque la capacité a des utilisations disponibles ou avant la création du personnage ModUi/&EnableUpcastConjureElementalAndFey Activer l'upcast de Conjure Elemental, Conjure Fey ModUi/&Encounters Rencontres diff --git a/SolastaCommunityExpansion/Translations/Modui-it.txt b/SolastaCommunityExpansion/Translations/Modui-it.txt index de40df1b48..03051e8f63 100644 --- a/SolastaCommunityExpansion/Translations/Modui-it.txt +++ b/SolastaCommunityExpansion/Translations/Modui-it.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation Abilitare il salvataggio per campagne/luoghi ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Abilita la ricarica di un breve riposo di Arma Arcana su Mago Combattente Arcano ModUi/&EnableTeleportParty Abilita CTRL-SHIFT-(T)eleport party [potresti interrompere le missioni o le mappe se ti teletrasporti in un luogo sconosciuto]. ModUi/&EnableTogglesToOverwriteDefaultTestParty Abilita i toggle sul pool di personaggi per impostare il party di gioco e di prova predefinito -ModUi/&EnableUnityExplorer Abilita l'interfaccia utente di Unity Explorer ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Abilita il recupero illimitato di Arcano su Maestro degli incantesimi\nDeve essere abilitato quando l'abilità ha usi disponibili o prima della creazione del personaggio. ModUi/&EnableUpcastConjureElementalAndFey Abilita l'upcast di Invocare Elementale, Invocare Fey. ModUi/&Encounters Incontri diff --git a/SolastaCommunityExpansion/Translations/Modui-pt-br.txt b/SolastaCommunityExpansion/Translations/Modui-pt-br.txt index 78b3aa36e6..700caf3152 100644 --- a/SolastaCommunityExpansion/Translations/Modui-pt-br.txt +++ b/SolastaCommunityExpansion/Translations/Modui-pt-br.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation Ativar salvar por campanhas/locais ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Ativar recarga de descanso curto de Arma Arcane no Wizard Arcane Fighter ModUi/&EnableTeleportParty Ative CTRL-SHIFT-(T)eleport party [você pode quebrar missões ou mapas se se teletransportar para um lugar desconhecido] ModUi/&EnableTogglesToOverwriteDefaultTestParty Ative a alternância no pool de personagens para definir seu jogo padrão e grupo de teste -ModUi/&EnableUnityExplorer Ativar a interface do usuário do Unity Explorer ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Ative a Recuperação Arcana ilimitada no Assistente Mestre de Feitiços\nDeve ser ativado quando a habilidade tiver usos disponíveis ou antes da criação do personagem ModUi/&EnableUpcastConjureElementalAndFey Ativar upcast de Conjure Elemental, Conjure Fey ModUi/&Encounters Encontros diff --git a/SolastaCommunityExpansion/Translations/Modui-ru.txt b/SolastaCommunityExpansion/Translations/Modui-ru.txt index 09b66ed54c..eedca9f902 100644 --- a/SolastaCommunityExpansion/Translations/Modui-ru.txt +++ b/SolastaCommunityExpansion/Translations/Modui-ru.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation Включить сохранение по камп ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter Включить восстановление Тайного Оружия у Волшебника Тайного Бойца после короткого отдыха ModUi/&EnableTeleportParty Включить телепортацию группы по CTRL-SHIFT-(T) [вы можете сломать задания или карты, если телепортируетесь в неразведанное место] ModUi/&EnableTogglesToOverwriteDefaultTestParty Включить переключатели в пуле персонажей, чтобы устанавливать игровую и тестовую группы по умолчанию. -ModUi/&EnableUnityExplorer Включить пользовательский интерфейс Unity Explorer ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster Включить неограниченное Мистическое восстановление у Волшебника Мастера Заклинаний\nМожно включать только когда у способности есть доступные использования или перед созданием персонажа ModUi/&EnableUpcastConjureElementalAndFey Разрешить использовать Сотворение элементаля, Сотворение фей на больших уровнях заклинания ModUi/&Encounters Столкновения diff --git a/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt b/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt index c8227c34c1..97d4964a19 100644 --- a/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt +++ b/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt @@ -80,7 +80,6 @@ ModUi/&EnableSaveByLocation 启用分战役/地点存档 ModUi/&EnableShortRestRechargeOfArcaneWeaponOnWizardArcaneFighter 启用法师奥法战士子职的奥法武器能力在短休时恢复 ModUi/&EnableTeleportParty 启用CTRL-SHIFT-T传送队伍[如果你传送到一个未发现的地点,你可能会破坏任务或地图] ModUi/&EnableTogglesToOverwriteDefaultTestParty 启用角色池切换键设置你的默认的游戏/测试队伍 -ModUi/&EnableUnityExplorer 启用Unity Explorer界面 ModUi/&EnableUnlimitedArcaneRecoveryOnWizardSpellMaster 启用法师法术大师子职的深层奥术能力可无限恢复\n必须在该能力有可用次数时或在创建角色前启用 ModUi/&EnableUpcastConjureElementalAndFey 启用召唤元素,召唤精类生物的升环施法 ModUi/&Encounters 遭遇战 From f9a96478ac39ef2096c520f22d709e4f9d1d889d Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:29:39 -0700 Subject: [PATCH 15/22] update changelog --- SolastaCommunityExpansion/Changelog.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SolastaCommunityExpansion/Changelog.txt b/SolastaCommunityExpansion/Changelog.txt index 68af16cc57..aead2c6345 100644 --- a/SolastaCommunityExpansion/Changelog.txt +++ b/SolastaCommunityExpansion/Changelog.txt @@ -1,7 +1,8 @@ CHANGES: +- Add Wiki and Donations buttons under "Credits & Diagnostics" - Make some higher level spells standard on official classes -- Rework War Caster feat not applying bonuses +- Rework War Caster fix on previous version PATRONS: From cc72a08e8451d87fd7f0312ae60601932390b8d0 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:34:59 -0700 Subject: [PATCH 16/22] tweak changelog --- SolastaCommunityExpansion/Changelog.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SolastaCommunityExpansion/Changelog.txt b/SolastaCommunityExpansion/Changelog.txt index aead2c6345..188a5aad31 100644 --- a/SolastaCommunityExpansion/Changelog.txt +++ b/SolastaCommunityExpansion/Changelog.txt @@ -1,8 +1,9 @@ CHANGES: - Add Wiki and Donations buttons under "Credits & Diagnostics" -- Make some higher level spells standard on official classes -- Rework War Caster fix on previous version +- Improve Russian and Chinese translations +- Make some higher level spells standard on Clerics and Druids +- Rework War Caster fix released on previous version PATRONS: From 6013abbc4b5c6eb51797428d3d3eb89afba2795e Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:45:35 -0700 Subject: [PATCH 17/22] remove last blank line from translation files --- SolastaCommunityExpansion/Translations/Modui-ru.txt | 2 +- SolastaCommunityExpansion/Translations/Modui-zh-CN.txt | 2 +- SolastaCommunityExpansion/Translations/Monsters-de.txt | 2 +- SolastaCommunityExpansion/Translations/Monsters-fr.txt | 2 +- SolastaCommunityExpansion/Translations/Monsters-pt-br.txt | 2 +- SolastaCommunityExpansion/Translations/Monsters-ru.txt | 2 +- SolastaCommunityExpansion/Translations/Monsters-zh-cn.txt | 2 +- SolastaCommunityExpansion/Translations/Translations-de.txt | 2 +- SolastaCommunityExpansion/Translations/Translations-fr.txt | 2 +- SolastaCommunityExpansion/Translations/Translations-pt-br.txt | 2 +- SolastaCommunityExpansion/Translations/Translations-ru.txt | 2 +- SolastaCommunityExpansion/Translations/Translations-zh-cn.txt | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/SolastaCommunityExpansion/Translations/Modui-ru.txt b/SolastaCommunityExpansion/Translations/Modui-ru.txt index eedca9f902..a76bef4e35 100644 --- a/SolastaCommunityExpansion/Translations/Modui-ru.txt +++ b/SolastaCommunityExpansion/Translations/Modui-ru.txt @@ -187,4 +187,4 @@ ModUi/&Weapon Оружие ModUi/&AllowCrossbowsToUseBowFeatures Разрешить арбалетам получать бонусы для луков ModUi/&RemoveConcentrationRequirementsFromAnySpell Убрать требование концентрации для любых заклинаний [Требуется перезапуск] ModUi/&OverwriteGameLanguage Выбрать неофициально поддерживаемый язык: -ModUi/&Campaigns Кампании: +ModUi/&Campaigns Кампании: \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt b/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt index 97d4964a19..d25033d21f 100644 --- a/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt +++ b/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt @@ -187,4 +187,4 @@ ModUi/&Weapon 武器 ModUi/&AllowCrossbowsToUseBowFeatures 允许弩从与弓相关的特性中获益 ModUi/&RemoveConcentrationRequirementsFromAnySpell 移除任何法术的专注要求[需要重启游戏] ModUi/&OverwriteGameLanguage 非官方语言支持: -ModUi/&Campaigns 战役: +ModUi/&Campaigns 战役: \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Monsters-de.txt b/SolastaCommunityExpansion/Translations/Monsters-de.txt index 1f61eec179..0ece48ee4a 100644 --- a/SolastaCommunityExpansion/Translations/Monsters-de.txt +++ b/SolastaCommunityExpansion/Translations/Monsters-de.txt @@ -241,4 +241,4 @@ MonsterPower/&DHGenericLightningAttackPowerTitle Blitzschlag Spell/&DHAnimalShapesSpellDescription Wähle eine beliebige Anzahl williger Kreaturen, die du in Reichweite sehen kannst. Du verwandelst jedes Ziel in die Form einer großen oder kleineren Bestie mit einem Herausforderungswert von 4 oder niedriger. Spell/&DHAnimalShapesSpellTitle Tierische Formen Spell/&DHTimeStop_SpellDescription Du stoppst kurzzeitig den Fluss der Zeit für alle außer für dich selbst. Für andere Kreaturen vergeht keine Zeit, während Sie 1W4 + 1 Züge hintereinander machen, in denen Sie Aktionen verwenden und sich wie gewohnt bewegen können. -Spell/&DHTimeStop_SpellTitle Zeitstopp +Spell/&DHTimeStop_SpellTitle Zeitstopp \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Monsters-fr.txt b/SolastaCommunityExpansion/Translations/Monsters-fr.txt index 8b8ff4527a..0c1ce296f4 100644 --- a/SolastaCommunityExpansion/Translations/Monsters-fr.txt +++ b/SolastaCommunityExpansion/Translations/Monsters-fr.txt @@ -241,4 +241,4 @@ MonsterPower/&DHGenericLightningAttackPowerTitle Coup de foudre Spell/&DHAnimalShapesSpellDescription Choisissez n'importe quel nombre de créatures consentantes que vous pouvez voir à portée. Vous transformez chaque cible en une bête de grande taille ou plus petite avec un niveau de défi de 4 ou moins. Spell/&DHAnimalShapesSpellTitle Formes d'animaux Spell/&DHTimeStop_SpellDescription Vous arrêtez brièvement le cours du temps pour tout le monde sauf vous-même. Aucun temps ne passe pour les autres créatures, pendant que vous effectuez 1d4 + 1 tours d'affilée, durant lesquels vous pouvez utiliser des actions et vous déplacer normalement. -Spell/&DHTimeStop_SpellTitle Arrêt du temps +Spell/&DHTimeStop_SpellTitle Arrêt du temps \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Monsters-pt-br.txt b/SolastaCommunityExpansion/Translations/Monsters-pt-br.txt index 3c099e6ece..ccace2ce0a 100644 --- a/SolastaCommunityExpansion/Translations/Monsters-pt-br.txt +++ b/SolastaCommunityExpansion/Translations/Monsters-pt-br.txt @@ -241,4 +241,4 @@ MonsterPower/&DHGenericLightningAttackPowerTitle Relâmpago Spell/&DHAnimalShapesSpellDescription Escolha qualquer número de criaturas voluntárias que você possa ver dentro do alcance. Você transforma cada alvo na forma de uma besta Grande ou menor com nível de desafio 4 ou menor. Spell/&DHAnimalShapesSpellTitle Formas de animais Spell/&DHTimeStop_SpellDescription Você interrompe brevemente o fluxo do tempo para todos, menos para você. Nenhum tempo passa para outras criaturas, enquanto você realiza 1d4 + 1 turnos seguidos, durante os quais você pode usar ações e se mover normalmente. -Spell/&DHTimeStop_SpellTitle Parar o tempo +Spell/&DHTimeStop_SpellTitle Parar o tempo \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Monsters-ru.txt b/SolastaCommunityExpansion/Translations/Monsters-ru.txt index 6c60f39d0d..06b699c7ec 100644 --- a/SolastaCommunityExpansion/Translations/Monsters-ru.txt +++ b/SolastaCommunityExpansion/Translations/Monsters-ru.txt @@ -241,4 +241,4 @@ MonsterPower/&DHGenericLightningAttackPowerTitle Удар молнии Spell/&DHAnimalShapesSpellDescription Выберите любое количество желающих существ, которых вы можете видеть в пределах досягаемости. Вы превращаете каждую цель в форму Большого или меньшего зверя с рейтингом опасности 4 или ниже. Spell/&DHAnimalShapesSpellTitle Фигуры животных Spell/&DHTimeStop_SpellDescription Вы ненадолго останавливаете течение времени для всех, кроме себя. Для других существ время не проходит, в то время как вы совершаете 1d4 + 1 ход подряд, в течение которых вы можете использовать действия и двигаться как обычно. -Spell/&DHTimeStop_SpellTitle Остановка времени +Spell/&DHTimeStop_SpellTitle Остановка времени \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Monsters-zh-cn.txt b/SolastaCommunityExpansion/Translations/Monsters-zh-cn.txt index b37f20ae5a..437118fb6d 100644 --- a/SolastaCommunityExpansion/Translations/Monsters-zh-cn.txt +++ b/SolastaCommunityExpansion/Translations/Monsters-zh-cn.txt @@ -241,4 +241,4 @@ MonsterPower/&DHGenericLightningAttackPowerTitle 闪电一击 Spell/&DHAnimalShapesSpellDescription 指定施法距离内任意数量的自愿生物,并使每个目标变形为一只挑战等级不超过4,体型不大于大型的野兽 Spell/&DHAnimalShapesSpellTitle 动物形态 Spell/&DHTimeStop_SpellDescription 你使时间在除你之外所有生物的世界中暂时停止流动。你一次性进行1d4+1个回合,在这段过程内时间对于其他生物是静止的,但你能像正常一样移动和使用动作 -Spell/&DHTimeStop_SpellTitle 时间停止 +Spell/&DHTimeStop_SpellTitle 时间停止 \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Translations-de.txt b/SolastaCommunityExpansion/Translations/Translations-de.txt index 62d28879c3..f5eaeb675d 100644 --- a/SolastaCommunityExpansion/Translations/Translations-de.txt +++ b/SolastaCommunityExpansion/Translations/Translations-de.txt @@ -2083,4 +2083,4 @@ UI/&CustomFeatureSelectionTooltipTypeFeature Feature UI/&CustomFeatureSelectionTooltipTypePower Leistung UI/&CustomFeatureSelectionTooltipTypeProficiency Kompetenz UI/&ForcePreferredCantripDescription Wenn dieser Schalter auf ON steht, kann nur der bevorzugte Cantrip ausgelöst werden. Wenn der bevorzugte Cantrip nicht ausgewählt ist, wird der erste gültige Cantrip ausgelöst, unabhängig von diesem Schalter. -UI/&ForcePreferredCantripTitle Bevorzugtes Cantrip erzwingen +UI/&ForcePreferredCantripTitle Bevorzugtes Cantrip erzwingen \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Translations-fr.txt b/SolastaCommunityExpansion/Translations/Translations-fr.txt index 1a98f0f3e3..044334d94f 100644 --- a/SolastaCommunityExpansion/Translations/Translations-fr.txt +++ b/SolastaCommunityExpansion/Translations/Translations-fr.txt @@ -2083,4 +2083,4 @@ UI/&CustomFeatureSelectionTooltipTypeFeature Caractéristique UI/&CustomFeatureSelectionTooltipTypePower Du pouvoir UI/&CustomFeatureSelectionTooltipTypeProficiency Compétence UI/&ForcePreferredCantripDescription Si cette option est activée, seul le cantrip préféré peut se déclencher. Si le sort mineur préféré n'est pas sélectionné, le premier sort mineur valide se déclenchera, quelle que soit cette bascule. -UI/&ForcePreferredCantripTitle Forcer le sort mineur préféré +UI/&ForcePreferredCantripTitle Forcer le sort mineur préféré \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Translations-pt-br.txt b/SolastaCommunityExpansion/Translations/Translations-pt-br.txt index 402aad0e92..8e48f37538 100644 --- a/SolastaCommunityExpansion/Translations/Translations-pt-br.txt +++ b/SolastaCommunityExpansion/Translations/Translations-pt-br.txt @@ -2083,4 +2083,4 @@ UI/&CustomFeatureSelectionTooltipTypeFeature Característica UI/&CustomFeatureSelectionTooltipTypePower Poder UI/&CustomFeatureSelectionTooltipTypeProficiency Competência UI/&ForcePreferredCantripDescription Se estiver ativado, apenas o truque preferido pode ser acionado. Se o truque preferido não for selecionado, o primeiro truque válido será acionado, independentemente dessa alternância. -UI/&ForcePreferredCantripTitle Forçar Truque Preferido +UI/&ForcePreferredCantripTitle Forçar Truque Preferido \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Translations-ru.txt b/SolastaCommunityExpansion/Translations/Translations-ru.txt index d94c3e1a76..70981ee673 100644 --- a/SolastaCommunityExpansion/Translations/Translations-ru.txt +++ b/SolastaCommunityExpansion/Translations/Translations-ru.txt @@ -2083,4 +2083,4 @@ UI/&CustomFeatureSelectionTooltipTypeFeature Особенность UI/&CustomFeatureSelectionTooltipTypePower Сила UI/&CustomFeatureSelectionTooltipTypeProficiency мастерство UI/&ForcePreferredCantripDescription Если этот переключатель включен, может сработать только предпочтительный колдовство. Если предпочитаемый заговор не выбран, то сработает первый допустимый заговор, независимо от этого переключателя. -UI/&ForcePreferredCantripTitle Force Preferred Cantrip +UI/&ForcePreferredCantripTitle Force Preferred Cantrip \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt b/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt index 95ee74ae7f..ae777f203d 100644 --- a/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt +++ b/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt @@ -2083,4 +2083,4 @@ UI/&CustomFeatureSelectionTooltipTypeFeature 特性 UI/&CustomFeatureSelectionTooltipTypePower 能力 UI/&CustomFeatureSelectionTooltipTypeProficiency 熟练度 UI/&ForcePreferredCantripDescription 若此选项开启,仅默认戏法能触发。若未选择默认戏法,那么第一个有效的戏法将被触发,此时将无视此选项开关状态 -UI/&ForcePreferredCantripTitle 强制默认戏法 +UI/&ForcePreferredCantripTitle 强制默认戏法 \ No newline at end of file From 6f8794e43946db0e4dc262369ac4da809f8b43d5 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:53:50 -0700 Subject: [PATCH 18/22] fix translations files using \s instead of \t separator --- .../Translations/Modui-zh-CN.txt | 20 +-- .../Translations/Translations-zh-cn.txt | 156 +++++++++--------- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt b/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt index d25033d21f..ae370e3565 100644 --- a/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt +++ b/SolastaCommunityExpansion/Translations/Modui-zh-CN.txt @@ -17,8 +17,8 @@ ModUi/&AllowTargetingSelectionWhenCastingChainLightningSpell 允许在施放术士没有脸部印记 ModUi/&AllRecipesInDm 所有配方加入地城制作 ModUi/&AltOnlyHighlightItemsInPartyFieldOfView ALT键只高亮队伍可见视野范围内的互动物件[仅限自定义地牢] -ModUi/&Ammunition 弹药 -ModUi/&Armor 护甲 +ModUi/&Ammunition 弹药 +ModUi/&Armor 护甲 ModUi/&AutoPauseOnVictory 战斗胜利后暂停游戏 ModUi/&Basic 基础: ModUi/&Battle 战斗: @@ -109,10 +109,10 @@ ModUi/&Interface 界面 ModUi/&InventoryAndItems 物品栏和物品: ModUi/&InvertAltBehaviorOnTooltips 颠倒ALT键在工具提示时的效果 ModUi/&ItemInDm 物品加入地城制作 -ModUi/&Items 物品: +ModUi/&Items 物品: ModUi/&ItemsCraftingMerchants 物品,制作和商人 -ModUi/&ItemsHelp1 你必须打开人物检查界面才能为英雄添加物品…… -ModUi/&ItemsHelp2 . 在检查界面按+将物品添加到地面容器中 +ModUi/&ItemsHelp1 你必须打开人物检查界面才能为英雄添加物品…… +ModUi/&ItemsHelp2 . 在检查界面按+将物品添加到地面容器中 ModUi/&KeyboardMouse 键盘与鼠标 ModUi/&MakeAllMagicStaveArcaneFoci 使所有魔杖视为奥术法器[全职业通用的治疗法杖除外] [需要重启游戏] ModUi/&MarkInvisibleTeleportersOnLevelMap + 在关卡地图上标记已发现的隐形传送点的位置 @@ -180,11 +180,11 @@ ModUi/&UnlockEyeStyles 解锁眼部样式 ModUi/&UnlockGlowingColorsForAllMarksAndTatoos 解锁所有标记和纹身的发光颜色 ModUi/&UnlockGlowingEyeColors 解锁眼睛发光颜色 ModUi/&UnlockMarkAndTatoosForAllCharacters 解锁全部角色的标记和纹身 -ModUi/&UsableDevice 可用装置 +ModUi/&UsableDevice 可用装置 ModUi/&UseOfficialAdvantageDisadvantageRules 应用官方的优势/劣势规则 ModUi/&Visuals 视效: -ModUi/&Weapon 武器 -ModUi/&AllowCrossbowsToUseBowFeatures 允许弩从与弓相关的特性中获益 +ModUi/&Weapon 武器 +ModUi/&AllowCrossbowsToUseBowFeatures 允许弩从与弓相关的特性中获益 ModUi/&RemoveConcentrationRequirementsFromAnySpell 移除任何法术的专注要求[需要重启游戏] -ModUi/&OverwriteGameLanguage 非官方语言支持: -ModUi/&Campaigns 战役: \ No newline at end of file +ModUi/&OverwriteGameLanguage 非官方语言支持: +ModUi/&Campaigns 战役: \ No newline at end of file diff --git a/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt b/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt index ae777f203d..16b1141f6b 100644 --- a/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt +++ b/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt @@ -22,7 +22,7 @@ Class/&WitchBurnedProduceFlameTitle 燃火术 Class/&WitchCacklePowerDescription 你能使用你的附赠动作进行狂笑。60英尺内每有一个受到影响的生物,持续时间增加一轮\n不是所有的巫师讥笑的时候都会疯狂地大笑,但所有的讥笑都需要一个语言成分,比如一句话语。这些话语能是寻常的诅咒和侮辱,也能是咕哝已死之语或者倒着说话 Class/&WitchCacklePowerTitle 讥笑 Class/&WitchDescription 受到邪恶诅咒的折磨,巫师能将魔力转化为诅咒削弱敌人。他们也有他们的熟悉而忠诚的魔宠相伴,为他们抵挡致命的攻击 -Class/&WitchFamiliarPowerDescription 你学会了召唤巫师魔宠,例如一个进阶的魔宠咒语,在没有施法材料的情况下也能作为仪式法术施展。这个法术不会消耗你的法术位。这个法术在以下方面提升了召唤魔宠的能力:\n• 你的魔宠将在每轮你的回合前或之后立即进行其回合(由你选择)\n• 每回合一次,以一个动作或附赠动作,你能以心灵感应命令你的魔宠使用其反应进行一次攻击\n• 当你施展法术时,你能通过你的魔宠传递,就像它施展了法术一样,即使此法术范围并非触碰\n• 你的魔宠能附加你的法术攻击加值于其攻击骰\n• 你的魔宠将你的熟练加值加至其护甲等级、豁免检定和伤害骰上\n• 你的魔宠的最大生命值获得两倍于你的巫师等级的加值 +Class/&WitchFamiliarPowerDescription 你学会了召唤巫师魔宠,例如一个进阶的魔宠咒语,在没有施法材料的情况下也能作为仪式法术施展。这个法术不会消耗你的法术位。这个法术在以下方面提升了召唤魔宠的能力:\n• 你的魔宠将在每轮你的回合前或之后立即进行其回合(由你选择)\n• 每回合一次,以一个动作或附赠动作,你能以心灵感应命令你的魔宠使用其反应进行一次攻击\n• 当你施展法术时,你能通过你的魔宠传递,就像它施展了法术一样,即使此法术范围并非触碰\n• 你的魔宠能附加你的法术攻击加值于其攻击骰\n• 你的魔宠将你的熟练加值加至其护甲等级、豁免检定和伤害骰上\n• 你的魔宠的最大生命值获得两倍于你的巫师等级的加值 Class/&WitchFamiliarPowerTitle 魔宠 Class/&WitchFeatureSetBurnedCurseDescription 你的身体几乎都被奥术火焰烧焦了,留下了醒目的黑色疤痕和皮肤下燃烧的魔法余烬。因此,你对火焰伤害有抗性,你习得"燃火术"法术,它不计入你已知的戏法总数 Class/&WitchFeatureSetBurnedCurseTitle 烧伤诅咒 @@ -99,8 +99,8 @@ Condition/&ConditionImprovedBarkWardDescription 森林之灵对近战攻击者 Condition/&ConditionImprovedBarkWardTitle 强化树灵守卫 Condition/&ConditionMarkedByArcanistDescription 受到奥能印记影响 Condition/&ConditionMarkedByArcanistTitle 奥能印记 -Condition/&ConditionMuleDescription 你的速度不会因为负重或重甲而降低。你能额外携带20磅 -Condition/&ConditionMuleTitle 承重术 +Condition/&ConditionMuleDescription 你的速度不会因为负重或重甲而降低。你能额外携带20磅 +Condition/&ConditionMuleTitle 承重术 Condition/&ConditionSuperiorBarkWardDescription 森林之灵赋予你毒药免疫,并对近战攻击者造成3d8点穿刺伤害 Condition/&ConditionSuperiorBarkWardTitle 高等树灵守卫 Condition/&DebilitatedConditionDescription 衰弱状态 @@ -123,9 +123,9 @@ Condition/&DisorientDescription 此生物的精准度降低 Condition/&DisorientTitle 迷失 Condition/&EvilEyeDescription 处于邪眼状态 Condition/&EvilEyeTitle 邪眼 -Condition/&EWResonatingStrikeDamageDescription 在5级时,由此法术触发的攻击会造成额外1d8点雷鸣伤害。在11级和17级时伤害额外增加1d8点 +Condition/&EWResonatingStrikeDamageDescription 在5级时,由此法术触发的攻击会造成额外1d8点雷鸣伤害。在11级和17级时伤害额外增加1d8点 Condition/&EWResonatingStrikeDamageTitle 共鸣 -Condition/&EWSunlightBladeDamageDescription 在5级时,由此法术触发的攻击会造成额外1d8点光耀伤害。在11级和17级时伤害额外增加1d8点 +Condition/&EWSunlightBladeDamageDescription 在5级时,由此法术触发的攻击会造成额外1d8点光耀伤害。在11级和17级时伤害额外增加1d8点 Condition/&EWSunlightBladeDamageTitle 炙阳之锋灼烧 Condition/&FrenziedDescription 此生物发狂了,会攻击最近的生物 Condition/&FrenziedTitle 发狂 @@ -486,7 +486,7 @@ Feat/&ChefWisDescription 感知+1。花1小时准备一顿有助于治疗你和 Feat/&ChefWisTitle 厨师(感知) Feat/&ConstructSelectingPoolDescription 选择你的构装体的模式 Feat/&ConstructSelectingPoolTitle 炮击模式 -Feat/&DeadeyeFeatDescription 你熟练掌握远程武器,看似不可能的射击都能成功命中\n• 攻击最大射程内的敌人时,你的远程武器攻击检定不因超过常规射程而具有劣势\n• 你的远程武器攻击忽视半身掩护和四分之三掩护状态\n• 你以具有熟练项的远程武器发动攻击前,能选择使此攻击的攻击检定承受-5减值,若此攻击命中,其伤害骰获得+10熟练加值 +Feat/&DeadeyeFeatDescription 你熟练掌握远程武器,看似不可能的射击都能成功命中\n• 攻击最大射程内的敌人时,你的远程武器攻击检定不因超过常规射程而具有劣势\n• 你的远程武器攻击忽视半身掩护和四分之三掩护状态\n• 你以具有熟练项的远程武器发动攻击前,能选择使此攻击的攻击检定承受-5减值,若此攻击命中,其伤害骰获得+10熟练加值 Feat/&DeadeyeFeatTitle 神射手 Feat/&DismissConstructDescription 解散你的构装体 Feat/&DismissConstructTitle 解散构装体 @@ -562,7 +562,7 @@ Feat/&FeatMetamagicAdeptQuickenedDescription 魅力+1,最高20点\n你习得 Feat/&FeatMetamagicAdeptQuickenedTitle 超魔:瞬发 Feat/&FeatMetamagicAdeptTwinnedDescription 魅力+1,最高20点\n你习得孪生超魔,并获得2点术法点 Feat/&FeatMetamagicAdeptTwinnedTitle 超魔:孪生 -Feat/&FeatPolearmExpertDescription 你擅于使用长柄武器,获得以下增益:\n• 当你只使用长柄武器进行攻击动作时,你能以一个附赠动作以武器的另一端进行一次近战攻击。此攻击与主攻击使用同样的调整值,其伤害骰为d4,伤害类型为钝击伤害\n• 当你持握长柄武器时,进入你触及范围的生物会引发你的借机攻击 +Feat/&FeatPolearmExpertDescription 你擅于使用长柄武器,获得以下增益:\n• 当你只使用长柄武器进行攻击动作时,你能以一个附赠动作以武器的另一端进行一次近战攻击。此攻击与主攻击使用同样的调整值,其伤害骰为d4,伤害类型为钝击伤害\n• 当你持握长柄武器时,进入你触及范围的生物会引发你的借机攻击 Feat/&FeatPolearmExpertTitle 长柄武器大师 Feat/&FeatPrimalConstitutionDescription 体质+1,最高20点\n你能以附赠动作进入类似于野蛮人的狂暴状态,能与野蛮人的狂暴叠加并使其伤害+1。每长休1次\n当你未穿戴盔甲时,你的AC等于10+敏捷修正值+体质修正值 Feat/&FeatPrimalConstitutionTitle 原初狂怒(体质) @@ -570,12 +570,12 @@ Feat/&FeatPrimalStrengthDescription 力量+1,最高20点\n你能以附赠动 Feat/&FeatPrimalStrengthTitle 原初狂怒(力量) Feat/&FeatPugilistFightingStlyeDescription 你的徒手攻击造成额外的1d4点伤害,并且你能以附赠动作进行副手攻击\n若你有一只手为空,你能以附赠动作进行推撞 Feat/&FeatPugilistFightingStlyeTitle 战斗风格:搏击 -Feat/&FeatRangedExpertDescription 你擅于使用远程武器,获得以下增益:\n• 当有敌人在你5英尺内时,你的远程攻击不再具有劣势\n• 若你使用动作进行攻击,你能使用附赠行动以单手的远程或投掷武器进行一次攻击 +Feat/&FeatRangedExpertDescription 你擅于使用远程武器,获得以下增益:\n• 当有敌人在你5英尺内时,你的远程攻击不再具有劣势\n• 若你使用动作进行攻击,你能使用附赠行动以单手的远程或投掷武器进行一次攻击 Feat/&FeatRangedExpertTitle 远程武器大师 Feat/&FeatSavageAttackerDescription 当投出1时重投武器和法术的伤害骰(不重投所有伤害源,例如偷袭和重击) -Feat/&FeatSavageAttackerReroll 因为野性袭击者的效果 {0} 重投 {1} 伤害骰,数值由 {2} 变为 {3} +Feat/&FeatSavageAttackerReroll 因为野性袭击者的效果 {0} 重投 {1} 伤害骰,数值由 {2} 变为 {3} Feat/&FeatSavageAttackerTitle 野性袭击者 -Feat/&FeatSentinelDescription 你掌握的技术使你在击破敌人防御时占尽优势,获得以下增益:\n• 当你借机攻击命中一个生物时,其在本回合剩余时间内移动速度降至0\n• 生物即使执行撤离动作离开你的触及范围也会引发你的借机攻击\n• 处于你触及范围内的生物(其无本专长)对除你外的目标发动攻击后,你能以反应对此攻击者发动一次近战攻击 +Feat/&FeatSentinelDescription 你掌握的技术使你在击破敌人防御时占尽优势,获得以下增益:\n• 当你借机攻击命中一个生物时,其在本回合剩余时间内移动速度降至0\n• 生物即使执行撤离动作离开你的触及范围也会引发你的借机攻击\n• 处于你触及范围内的生物(其无本专长)对除你外的目标发动攻击后,你能以反应对此攻击者发动一次近战攻击 Feat/&FeatSentinelTitle 哨兵 Feat/&FeatShadowTouchedChaDescription 魅力+1,最高20点\n你获得施放隐形术,致伤术和虚假生命的能力,每长休1次。同时学会这些法术 Feat/&FeatShadowTouchedChaTitle 暗影亲和(魅力) @@ -625,7 +625,7 @@ Feat/&FightingStyleArcheryDescription 你在使用远程武器的攻击骰上获 Feat/&FightingStyleArcheryTitle 战斗风格:箭术 Feat/&FightingStyleDefenseDescription 当你穿着盔甲时,你的AC获得+1加值 Feat/&FightingStyleDefenseTitle 战斗风格:防御 -Feat/&FightingStyleDuelingDescription 单手持用一把近战武器,且并未同时持用其他武器时,你以此武器攻击的伤害掷骰获得 +2加值 +Feat/&FightingStyleDuelingDescription 单手持用一把近战武器,且并未同时持用其他武器时,你以此武器攻击的伤害掷骰获得 +2加值 Feat/&FightingStyleDuelingTitle 战斗风格:决斗 Feat/&FightingStyleGeneralFeatDescription 你能选择一个战斗风格 Feat/&FightingStyleGeneralFeatitle 战斗风格 @@ -642,7 +642,7 @@ Feat/&FlameArtilleryConstructDescription_3 喷射锥形火焰,若豁免失败 Feat/&FlameArtilleryConstructTitle 火焰魔炮 Feat/&FlameArtilleryConstructTitle_3 火焰魔炮 Feat/&FlameArtilleryConstructTitle_5 火焰魔炮 -Feat/&FlameArtilleryDescription 2d8点火焰伤害 (锥形) +Feat/&FlameArtilleryDescription 2d8点火焰伤害 (锥形) Feat/&FlameArtilleryTitle 火焰魔炮 Feat/&ForceArtillery_2Description 3d8点力场伤害并推离5英尺 Feat/&ForceArtillery_2Title 力场魔炮(精通) @@ -654,7 +654,7 @@ Feat/&ForceArtilleryConstructTitle_3 力场魔炮 Feat/&ForceArtilleryConstructTitle_5 力场魔炮 Feat/&ForceArtilleryDescription 2d8点力场伤害并推离5英尺 Feat/&ForceStrikePowerDescription 你可靠的伙伴以远程攻击造成了1d6点力场伤害 -Feat/&ForceStrikePowerTitle 力场投射 (构装体) +Feat/&ForceStrikePowerTitle 力场投射 (构装体) Feat/&GauntletsGrappleDescription 现在能以附赠动作将敌人拉入近战范围并造成1d8点雷鸣伤害 Feat/&GauntletsGrappleTitle 铁手擒拿 Feat/&HalfCoverShieldDescription 赋予10英尺内AC+2 @@ -721,9 +721,9 @@ Feat/&ProtectorConstructTitle 防御者 Feat/&ProtectorConstructTitle_5 防御者升级 Feat/&RecklessFuryFeatDescription 你将获得每天1次进入一分钟狂怒的能力(无护甲限制),获得近战攻击的优势,同时给予攻击者优势直到下一回合 Feat/&RecklessFuryFeatTitle 鲁莽狂怒 -Feat/&ResummonArtilleryConstruct_03Title 重配置魔炮 1 -Feat/&ResummonArtilleryConstruct_09Title 重配置魔炮 2 -Feat/&ResummonArtilleryConstruct_15Title 重配置魔炮 3 +Feat/&ResummonArtilleryConstruct_03Title 重配置魔炮 1 +Feat/&ResummonArtilleryConstruct_09Title 重配置魔炮 2 +Feat/&ResummonArtilleryConstruct_15Title 重配置魔炮 3 Feat/&ResummonArtilleryConstructDescription 这个法术允许奇械师在初始的召唤失效后以多种模式之一重新召唤一个魔炮。重新召唤的魔炮也持续1小时 Feat/&RetributionDescription 被攻击击中时,防御者对攻击者造成1d4+智力调整值点力场伤害 Feat/&RetributionTitle 报偿 @@ -799,7 +799,7 @@ Feature/&AHWarlockSoulBladePactExtendedSpellListDescription 你在学习邪术 Feature/&AHWarlockSoulBladePactExtendedSpellListTitle 灵魂之刃法术 Feature/&AHWarlockSoulBladePactSoulShieldPowerDescription 每短休1次,你能使用魂能保护自己。以一个附赠动作,你获得等同于等级+魅力调整值的临时生命值 Feature/&AHWarlockSoulBladePactSoulShieldPowerTitle 灵魂护盾 -Feature/&AlwaysBeardDescription {0}% 概率长出光荣的胡须 +Feature/&AlwaysBeardDescription {0}% 概率长出光荣的胡须 Feature/&AncientForestExpandedSpelllistAfinityDescription 你在学习邪术师法术时从额外法术列表中选择。以下法术会被添加到邪术师法术列表中:\n{0}\n\n Feature/&AncientForestExpandedSpelllistAfinityTitle 远古森林法术 Feature/&AncientForestLightAffinityDescription 你能从阳光中汲取能量。你在明亮光照下每回合获得2点生命值 @@ -858,14 +858,14 @@ Feature/&ClassMonkKiDescription 你掌握一股名为气的神秘能量。此后 Feature/&ClassMonkKiEmpoweredStrikesDescription 攻击对非魔法攻击或伤害具有抗性或免疫的目标时,你的徒手打击视为魔法攻击 Feature/&ClassMonkKiEmpoweredStrikesTitle 真气驻拳 Feature/&ClassMonkKiTitle 气 -Feature/&ClassMonkMartialArtsDescription 未装备任何护甲也未持用盾牌时,若你徒手或只持用武僧武器,则你拥有以下增益:\n• 你使用徒手打击或武僧武器进行攻击时,能用敏捷值代替力量值进行攻击检定和伤害掷骰\n• 你使用徒手打击或武僧武器进行攻击时,能选择用d4骰代替原本的伤害掷骰。此骰子将随武僧职业等级的提升而增大\n• 你使用徒手打击或武僧武器执行攻击动作时,能在自己回合内以附赠动作发动一次徒手打击 +Feature/&ClassMonkMartialArtsDescription 未装备任何护甲也未持用盾牌时,若你徒手或只持用武僧武器,则你拥有以下增益:\n• 你使用徒手打击或武僧武器进行攻击时,能用敏捷值代替力量值进行攻击检定和伤害掷骰\n• 你使用徒手打击或武僧武器进行攻击时,能选择用d4骰代替原本的伤害掷骰。此骰子将随武僧职业等级的提升而增大\n• 你使用徒手打击或武僧武器执行攻击动作时,能在自己回合内以附赠动作发动一次徒手打击 Feature/&ClassMonkMartialArtsTitle 武艺 Feature/&ClassMonkMartialDiceProgression00Description 你能骰d6代替你徒手打击或武僧武器的伤害 -Feature/&ClassMonkMartialDiceProgression00Title 武艺骰提升 (d6) +Feature/&ClassMonkMartialDiceProgression00Title 武艺骰提升 (d6) Feature/&ClassMonkMartialDiceProgression01Description 你能骰d8代替你徒手打击或武僧武器的伤害 -Feature/&ClassMonkMartialDiceProgression01Title 武艺骰提升 (d8) +Feature/&ClassMonkMartialDiceProgression01Title 武艺骰提升 (d8) Feature/&ClassMonkMartialDiceProgression02Description 你能骰d10代替你徒手打击或武僧武器的伤害 -Feature/&ClassMonkMartialDiceProgression02Title 武艺骰提升 (d10) +Feature/&ClassMonkMartialDiceProgression02Title 武艺骰提升 (d10) Feature/&ClassMonkPerfectSelfDescription 若你骰先攻时身上未储备气,则你获得4点气 Feature/&ClassMonkPerfectSelfTitle 超凡入圣 Feature/&ClassMonkPurityOfBodyDescription 你浑身的气流动使你免疫疾病和毒素 @@ -887,7 +887,7 @@ Feature/&ClassMonkZenArcherCombatTitle 延臂战法 Feature/&ClassMonkZenArcherKiPoweredArowsDescription 在克服对非魔法攻击和伤害的抗性和免疫时,你的弓箭攻击视为魔法 Feature/&ClassMonkZenArcherKiPoweredArowsTitle 凝气箭 Feature/&ClassMonkZenArcherStunningArrowsDescription 你能够阻碍敌人体内气的流动。当你的弓箭攻击命中一个未震慑的目标时,你能消耗1点气尝试发动震慑箭。其必须成功通过一次体质豁免,否则受到震慑至你的下回合结束 -Feature/&ClassMonkZenArcherStunningArrowsTitle 震慑箭 +Feature/&ClassMonkZenArcherStunningArrowsTitle 震慑箭 Feature/&ClassWarlockArmorProficiencyDescription 轻甲 Feature/&ClassWarlockArmorProficiencyTitle 邪术师防具擅长 Feature/&ClassWarlockEldritchInvocationReplaceDescription 选择一个魔能祈唤进行替换 @@ -934,7 +934,7 @@ Feature/&DHConjureMinorElementalsBonusCantripDescription 你对元素能量的 Feature/&DHConjureMinorElementalsBonusCantripTitle 元素仆从 Feature/&DHHolyAuraBlindingPowerDescription 当一个邪魔或不死生物以近战攻击命中受术生物时,其灵光将产生耀眼的爆发,而攻击者必须进行一次体质豁免,豁免失败者将陷入目盲直至法术终止 Feature/&DHHolyAuraBlindingPowerTitle 圣洁灵光报偿 -Feature/&DHPactOfTheTomeFeatureSetDescription 你的宗主给予你唤为 "阴影之书 "的魔法书。当你获得这个特性时,能从任何职业的法术列表中选择3个戏法。这些戏法不需要来自同一个法术列表。当此书在你身上时,你能随意施放这些戏法。它们不计入你已知的戏法数量。你用这个特性施放的任何戏法都被认为是你的邪术师法术 +Feature/&DHPactOfTheTomeFeatureSetDescription 你的宗主给予你唤为 "阴影之书 "的魔法书。当你获得这个特性时,能从任何职业的法术列表中选择3个戏法。这些戏法不需要来自同一个法术列表。当此书在你身上时,你能随意施放这些戏法。它们不计入你已知的戏法数量。你用这个特性施放的任何戏法都被认为是你的邪术师法术 Feature/&DHPactOfTheTomeFeatureSetTitle 书之契约 Feature/&DHWardingBondBonusCantripDescription 你对裂隙传送的控制已提升到能给予他人裂隙保护的程度。你能随意施放法术守护结界(无需分担伤害) Feature/&DHWardingBondBonusCantripTitle 裂隙斗篷 @@ -1006,7 +1006,7 @@ Feature/&ElementalPatronElementalFormFormatDescription 当引导{0}时,你对{ Feature/&ElementalPatronElementalFormFormatTitle {0} Feature/&ElementalPatronFeatureSet_Level06Description 你对元素的了解提升到使你对元素的能力检定中获得优势,并对元素造成相当于你学识等级的额外伤害。你不再被元素魅惑或恐惧 Feature/&ElementalPatronFeatureSet_Level06Title 元素学识 -Feature/&EmptyString +Feature/&EmptyString Feature/&EyesoftheRuneKeeperDescription 你能阅读所有文字 Feature/&EyesoftheRuneKeeperTitle 符文卫士之眼 Feature/&FiendishVigorTitle 邪魔活力 @@ -1054,9 +1054,9 @@ Feature/&IndomitableResistanceAddTitle 不屈抗力(提升) Feature/&IndomitableResistanceTitle 不屈抗力 Feature/&InspirePowerDescription 消耗1个赌注骰激励自己或盟友,获得1d6+2点临时生命值 Feature/&InspirePowerTitle 激励 -Feature/&InspiringSurgePowerDescription 赋予盟友一个额外的主要动作,持续1回合。不与“动作如潮”叠加 -Feature/&InspiringSurgePowerTitle 激励如潮 -Feature/&InspiringSurgePowerTitleShort 激励如潮 +Feature/&InspiringSurgePowerDescription 赋予盟友一个额外的主要动作,持续1回合。不与“动作如潮”叠加 +Feature/&InspiringSurgePowerTitle 激励如潮 +Feature/&InspiringSurgePowerTitleShort 激励如潮 Feature/&KnockDownPowerDescription 消耗1个赌注骰,赋予你的攻击额外的1d6+2点钝击伤害,若目标未成功通过一次力量豁免(DC=8+熟练度加值+力量调整值),其被击倒直到其下一回合开始 Feature/&KnockDownPowerTitle 击倒 Feature/&MagicAffinityRangerArcanistDescription 你精通在战斗中施展法术,即使你的双手都拿着武器或盾牌,也能施展需要姿势成分的法术 @@ -1078,10 +1078,10 @@ Feature/&OneWithShadowsLightAffinityTitle 融身入影 Feature/&OneWithShadowsStrongerDescription 融身入影现在能在昏暗光照和魔法黑暗中生效 Feature/&OneWithShadowsStrongerTitle 深层阴影 Feature/&OneWithShadowsTitle 融身入影 -Feature/&OpportunistDebilitatingStrikeDescription 若受到偷袭的敌人无法通过体质豁免(DC=8+敏捷加值+熟练度加值),会受到以下状态之一(失明/灾祸/流血/眩晕) -Feature/&OpportunistDebilitatingStrikeTitle 衰弱打击 -Feature/&OpportunistQuickStrikeDescription 在攻击先攻权低于你的敌人时,你有优势。此外,你在进行机会攻击时也有优势 -Feature/&OpportunistQuickStrikeTitle 迅捷打击 +Feature/&OpportunistDebilitatingStrikeDescription 若受到偷袭的敌人无法通过体质豁免(DC=8+敏捷加值+熟练度加值),会受到以下状态之一(失明/灾祸/流血/眩晕) +Feature/&OpportunistDebilitatingStrikeTitle 衰弱打击 +Feature/&OpportunistQuickStrikeDescription 在攻击先攻权低于你的敌人时,你有优势。此外,你在进行机会攻击时也有优势 +Feature/&OpportunistQuickStrikeTitle 迅捷打击 Feature/&OtherworldlyLeapTitle 超凡跳跃 Feature/&PowerAttackDescription 当你使用近战武器攻击时,你能选择使此攻击检定承受-3减值,以额外造成3+熟练加值点伤害 Feature/&PowerAttackTitle 猛力攻击 @@ -1113,9 +1113,9 @@ Feature/&RagePowerDescription 以一个附赠动作,你进入狂暴并获得 Feature/&RagePowerTitle 狂暴 Feature/&RageStrengthSavingThrowAffinityDescription 你在狂暴时获得力量豁免的优势 Feature/&RageStrengthSavingThrowAffinityTitle 狂暴力量豁免优势 -Feature/&RallyingCryPowerDescription 以新的能力取代“回气”,当你使用时为6格内的一位或多位盟友恢复4倍于战士等级的生命值,最高至其生命值上限 -Feature/&RallyingCryPowerTitle 集结战吼 -Feature/&RallyingCryPowerTitleShort 集结战吼 +Feature/&RallyingCryPowerDescription 以新的能力取代“回气”,当你使用时为6格内的一位或多位盟友恢复4倍于战士等级的生命值,最高至其生命值上限 +Feature/&RallyingCryPowerTitle 集结战吼 +Feature/&RallyingCryPowerTitleShort 集结战吼 Feature/&RangerFeralSensesDescription 你获得超自然的感官帮助你对抗看不见的生物。此后,你攻击一个你看不见的生物时不会因此承受劣势 Feature/&RangerFeralSensesTitle 野性感官 Feature/&RangerVanishActionDescription 第14级起,你能在自己回合以一个附赠动作的形式执行躲藏动作 @@ -1123,8 +1123,8 @@ Feature/&RangerVanishActionTitle 无踪步 Feature/&RiftWalkerRestrainedImmunityTitle 瞬身步 Feature/&RiftWalkerSpellsMagicAffinityDescription 你在学习邪术师法术时从额外法术列表中选择。以下法术会被添加到邪术师法术列表中:\n{0}\n\n Feature/&RiftWalkerSpellsMagicAffinityTitle 裂隙行者法术 -Feature/&RoyalEnvoyFeatureDescription 将你的熟练加值的一半(向上取整)加至任何没有添加你的熟练度加值的魅力检定中。额外的,你获得魅力豁免的熟练项 -Feature/&RoyalEnvoyFeatureTitle 皇室特使 +Feature/&RoyalEnvoyFeatureDescription 将你的熟练加值的一半(向上取整)加至任何没有添加你的熟练度加值的魅力检定中。额外的,你获得魅力豁免的熟练项 +Feature/&RoyalEnvoyFeatureTitle 皇室特使 Feature/&SavingThrowTinkererProficiencyDescription 熟练于体质和智力豁免 Feature/&SavingThrowTinkererProficiencyTitle 豁免熟练 Feature/&ScoutModePowerDescription 获得更快的移动速度、隐匿优势和每回合造成一次额外的伤害的远程攻击 @@ -1197,21 +1197,21 @@ Feedback/&AdditionalDamageBarbarianPathOfTheLightIlluminatingStrikeLine 光耀 Feedback/&AdditionalDamageBlindingWeaponStrikeFormat 致盲武器 Feedback/&AdditionalDamageBlindingWeaponStrikeLine 致盲武器造成额外伤害并尝试致盲 Feedback/&AdditionalDamageEldritchSmiteFormat 魔能斩! -Feedback/&AdditionalDamageEldritchSmiteLine {0}魔能斩{1}! (+{2}) +Feedback/&AdditionalDamageEldritchSmiteLine {0}魔能斩{1}! (+{2}) Feedback/&AdditionalDamageElementalDamageFormat 元素伤害 Feedback/&AdditionalDamageElementalDamageLine 元素形态给予额外伤害 -Feedback/&AdditionalDamageLightningSpearFormat 电光之矛! -Feedback/&AdditionalDamageLightningSpearLine {0}以电光之矛(+{2})打击{1} +Feedback/&AdditionalDamageLightningSpearFormat 电光之矛! +Feedback/&AdditionalDamageLightningSpearLine {0}以电光之矛(+{2})打击{1} Feedback/&AdditionalDamagePactMarkedFormat 契约印记 Feedback/&AdditionalDamagePactMarkedLine 契约印记造成额外伤害 Feedback/&AdditionalDamagePactSoulTakerFormat 灵魂夺取 Feedback/&AdditionalDamagePactSoulTakerLine 灵魂夺取造成额外伤害 Feedback/&AdditionalDamageResonatingStrikeFormat 共鸣斩! -Feedback/&AdditionalDamageResonatingStrikeLine {0}共鸣斩{1}! (+{2}) +Feedback/&AdditionalDamageResonatingStrikeLine {0}共鸣斩{1}! (+{2}) Feedback/&AdditionalDamageSoulEmpoweredFormat 魂力赋能 Feedback/&AdditionalDamageSoulEmpoweredLine 魂力赋能造成额外伤害 Feedback/&AdditionalDamageSunlightBladeFormat 炙阳之锋! -Feedback/&AdditionalDamageSunlightBladeLine {0}以炙阳之锋灼烧{1}! (+{2}) +Feedback/&AdditionalDamageSunlightBladeLine {0}以炙阳之锋灼烧{1}! (+{2}) Feedback/&AdditionalDamageUpgradedConstructFormat 升级伤害 Feedback/&AdditionalDamageUpgradedConstructLine 升级后的构装体每次攻击造成额外1d8点伤害 Feedback/&AncientForestHerbalBrewDamageAffinityAcidResistancePowerUsedWhileTravellingFormat {0}创造了{1} @@ -1344,13 +1344,13 @@ Message/&CharacterExportModalContentDescription 输入要导出的角色名称 Message/&CharacterExportModalTitleDescription 角色导出 Message/&LevelDownConfirmationDescription 是否降级此角色? Message/&LevelDownMultiplayerAbortDescription 无法在多人游戏中降级角色 -Message/&MessageModWelcomeDescription 社区扩展包引入了大量令人惊喜的功能,但是默认未启用。点击Ctrl-F10打开Unity Mod Manager的操作界面[UMM],然后点击“社区扩展包”旁边的设置图标,打开设置页面\n\n探索这些选项并选择你喜欢的。UMM操作界面将开启 +Message/&MessageModWelcomeDescription 社区扩展包引入了大量令人惊喜的功能,但是默认未启用。点击Ctrl-F10打开Unity Mod Manager的操作界面[UMM],然后点击“社区扩展包”旁边的设置图标,打开设置页面\n\n探索这些选项并选择你喜欢的。UMM操作界面将开启 Message/&MessageModWelcomeTitle 社区扩展包 Message/&RespecMultiplayerAbortDescription 无法在多人游戏或冒险地图中重置角色 -Message/&SpawnCustomEncounterDescription 在坐标({0}, {1})处制造一场遭遇战? +Message/&SpawnCustomEncounterDescription 在坐标({0}, {1})处制造一场遭遇战? Message/&SpawnCustomEncounterErrorDescription 目前暂时无法在联机游戏上制造遭遇战 Message/&SpawnCustomEncounterTitle 遭遇战 -Message/&TeleportPartyDescription 将队伍传送到({0}, {1})么?\n若你传送到一个未发现的地方,你可能会破坏任务或地图 +Message/&TeleportPartyDescription 将队伍传送到({0}, {1})么?\n若你传送到一个未发现的地方,你可能会破坏任务或地图 Message/&TeleportPartyTitle 传送 Modifier/&AHWarlockSoulBladePactEmpowerWeaponModifierDescription 武器在攻击和伤害骰上使用魅力调整值并视为魔法武器,直至下一次长休 Modifier/&AHWarlockSoulBladePactEmpowerWeaponModifierTitle 魂力赋能 @@ -1401,7 +1401,7 @@ Power/&ClassMonkOpenHandProneDescription 目标必须进行一次敏捷豁免, Power/&ClassMonkOpenHandProneTitle 击倒 Power/&ClassMonkOpenHandPushDescription 目标必须进行一次力量豁免,豁免失败则被往远离你的方向推离15英尺 Power/&ClassMonkOpenHandPushTitle 击退 -Power/&ClassMonkOpenHandTechniqueDescription 你能在击中敌人时操作其体内的气。当你用疾风连击特性的攻击击中敌人时,你能令此目标承受以下效应之一:\n• 目标必须进行一次敏捷豁免,豁免失败则应击倒地\n• 目标必须进行一次力量豁免,豁免失败则被往远离你的方向推离15英尺\n• 目标直到你的下一回合结束前,无法执行反应 +Power/&ClassMonkOpenHandTechniqueDescription 你能在击中敌人时操作其体内的气。当你用疾风连击特性的攻击击中敌人时,你能令此目标承受以下效应之一:\n• 目标必须进行一次敏捷豁免,豁免失败则应击倒地\n• 目标必须进行一次力量豁免,豁免失败则被往远离你的方向推离15英尺\n• 目标直到你的下一回合结束前,无法执行反应 Power/&ClassMonkOpenHandTechniqueTitle 散打技巧 Power/&ClassMonkPatientDefenseDescription 当未穿着任何护甲也没持用盾牌时,你在自己回合内,能以一个附赠动作消耗1点气执行回避动作 Power/&ClassMonkPatientDefenseTitle 耐心防御 @@ -1425,7 +1425,7 @@ Power/&ClassMonkZenArrowProneDescription 目标必须成功通过一次敏捷豁 Power/&ClassMonkZenArrowProneTitle 击倒 Power/&ClassMonkZenArrowPushDescription 目标必须通过一次力量豁免,否则被推离你10英尺远 Power/&ClassMonkZenArrowPushTitle 推离 -Power/&ClassMonkZenArrowTechniqueDescription 你能在用箭击中敌人时操作其体内的气。当你用箭击中敌人时,你能令此目标承受以下效应之一:\n• 目标必须成功通过一次敏捷豁免,否则被击倒\n• 目标必须通过一次力量豁免,否则被推离你10英尺远\n• 目标必须成功通过一次感知豁免,否则其下一次攻击时会具有劣势,直到下回合结束 +Power/&ClassMonkZenArrowTechniqueDescription 你能在用箭击中敌人时操作其体内的气。当你用箭击中敌人时,你能令此目标承受以下效应之一:\n• 目标必须成功通过一次敏捷豁免,否则被击倒\n• 目标必须通过一次力量豁免,否则被推离你10英尺远\n• 目标必须成功通过一次感知豁免,否则其下一次攻击时会具有劣势,直到下回合结束 Power/&ClassMonkZenArrowTechniqueShortTitle 延臂 Power/&ClassMonkZenArrowTechniqueTitle 延臂技巧 Power/&ClassMonkZenArrowUpgradedDistractDescription 目标必须成功通过一次感知豁免,否则其所有攻击时会具有劣势,直到下回合结束 @@ -1434,7 +1434,7 @@ Power/&ClassMonkZenArrowUpgradedProneDescription 目标必须成功通过一次 Power/&ClassMonkZenArrowUpgradedProneTitle 击倒 Power/&ClassMonkZenArrowUpgradedPushDescription 目标必须通过一次力量豁免,否则被推离你20英尺远 Power/&ClassMonkZenArrowUpgradedPushTitle 推离 -Power/&ClassMonkZenArrowUpgradedTechniqueDescription 你掌控气的能力提升了,所有延臂技巧都得到了提高。当你用箭击中敌人时,你能令此目标承受以下效应之一:\n• 目标必须成功通过一次敏捷豁免,否则被击倒并且其速度在一回合内设为0\n• 目标必须通过一次力量豁免,否则被推离你20英尺远\n• 目标必须成功通过一次感知豁免,否则其所有攻击时会具有劣势,直到下回合结束 +Power/&ClassMonkZenArrowUpgradedTechniqueDescription 你掌控气的能力提升了,所有延臂技巧都得到了提高。当你用箭击中敌人时,你能令此目标承受以下效应之一:\n• 目标必须成功通过一次敏捷豁免,否则被击倒并且其速度在一回合内设为0\n• 目标必须通过一次力量豁免,否则被推离你20英尺远\n• 目标必须成功通过一次感知豁免,否则其所有攻击时会具有劣势,直到下回合结束 Power/&ClassMonkZenArrowUpgradedTechniqueShortTitle 延臂 Power/&ClassMonkZenArrowUpgradedTechniqueTitle 精通延臂技巧 Power/&DH_ElementalFormPoolDescription 通过引导元素能量,你每天能在元素形态之间切换等同于熟练度加值次数。你获得对相关伤害的抗力,并且你能将熟练度加值作为同类型的伤害应用于每回合的第一次法术伤害。这些形态持续1分钟 @@ -1481,33 +1481,33 @@ Race/&BolgrifRaceTitle 博格里夫 Race/&GnomeRaceDescription 在侏儒们的紧密群落里,忙碌工作产生的噪音周而复始的弥漫在拥挤的公寓社区及其周边。一些更响亮的声音时不时插进这些杂音中:这边传来齿轮吱嘎作响的研磨声,那边响起轻微的爆炸声,还有因喜悦或惊讶而发起的尖叫,以及时刻迸发的笑声。各种声音交织在一起,正是侏儒们愉快的生活,他们享受着发明、探索、研究、创造以及玩乐的每个时刻 Race/&GnomeRaceTitle 侏儒 Race/&PointPoolSelect10FeatsDescription 为你的角色选择10个额外专长 -Race/&PointPoolSelect10FeatsTitle 10 额外专长 +Race/&PointPoolSelect10FeatsTitle 10 额外专长 Race/&PointPoolSelect11FeatsDescription 为你的角色选择11个额外专长 -Race/&PointPoolSelect11FeatsTitle 11 额外专长 +Race/&PointPoolSelect11FeatsTitle 11 额外专长 Race/&PointPoolSelect2FeatsDescription 为你的角色选择2个额外专长 -Race/&PointPoolSelect2FeatsTitle 2 额外专长 +Race/&PointPoolSelect2FeatsTitle 2 额外专长 Race/&PointPoolSelect3FeatsDescription 为你的角色选择3个额外专长 -Race/&PointPoolSelect3FeatsTitle 3 额外专长 +Race/&PointPoolSelect3FeatsTitle 3 额外专长 Race/&PointPoolSelect4FeatsDescription 为你的角色选择4个额外专长 -Race/&PointPoolSelect4FeatsTitle 4 额外专长 +Race/&PointPoolSelect4FeatsTitle 4 额外专长 Race/&PointPoolSelect5FeatsDescription 为你的角色选择5个额外专长 -Race/&PointPoolSelect5FeatsTitle 5 额外专长 +Race/&PointPoolSelect5FeatsTitle 5 额外专长 Race/&PointPoolSelect6FeatsDescription 为你的角色选择6个额外专长 -Race/&PointPoolSelect6FeatsTitle 6 额外专长 +Race/&PointPoolSelect6FeatsTitle 6 额外专长 Race/&PointPoolSelect7FeatsDescription 为你的角色选择7个额外专长 -Race/&PointPoolSelect7FeatsTitle 7 额外专长 +Race/&PointPoolSelect7FeatsTitle 7 额外专长 Race/&PointPoolSelect8FeatsDescription 为你的角色选择8个额外专长 -Race/&PointPoolSelect8FeatsTitle 8 额外专长 +Race/&PointPoolSelect8FeatsTitle 8 额外专长 Race/&PointPoolSelect9FeatsDescription 为你的角色选择9个额外专长 -Race/&PointPoolSelect9FeatsTitle 9 额外专长 +Race/&PointPoolSelect9FeatsTitle 9 额外专长 Reaction/&CastSpellInRetributionDescription {0}在攻击{1}!你能以反应施放{2}! Reaction/&CastSpellInRetributionReactDescription 点击施放{0} Reaction/&CastSpellInRetributionReactTitle 施放法术 Reaction/&CastSpellInRetributionTitle 以反应施放法术 -Reaction/&CoordinatedAttackDescription {0}受到协同攻击,一些角色能使用其反应来加入此攻击 -Reaction/&CoordinatedAttackReactDescription 使用反应攻击目标 -Reaction/&CoordinatedAttackReactTitle 攻击 -Reaction/&CoordinatedAttackTitle 协同攻击 +Reaction/&CoordinatedAttackDescription {0}受到协同攻击,一些角色能使用其反应来加入此攻击 +Reaction/&CoordinatedAttackReactDescription 使用反应攻击目标 +Reaction/&CoordinatedAttackReactTitle 攻击 +Reaction/&CoordinatedAttackTitle 协同攻击 Reaction/&CustomDeflectMissileMonkTitle {0}在攻击{1},其能以反应降低即将受到的1d10+敏捷调整值+武僧等级点伤害 Reaction/&ReactionAttackFeatSentinelDescription {0}攻击了你的盟友,你能以反应攻击 Reaction/&ReactionAttackFeatSentinelReactDescription 以反应攻击 @@ -1543,7 +1543,7 @@ Reaction/&SpendPowerCounterStrikePowerReactTitle 反击 Reaction/&SpendPowerCounterStrikePowerTitle 反击 Reaction/&SpendPowerDH_RiftStrikeDescription 每长休1次,当你在近战中受到伤害时,你能用你的反应创造一个裂隙传送,将攻击者从你存在的位面驱逐1轮 Reaction/&SpendPowerDH_RiftStrikeReactTitle 裂隙反击 -Reaction/&SpendPowerDH_RiftStrikeTitle 裂隙反击 +Reaction/&SpendPowerDH_RiftStrikeTitle 裂隙反击 Reaction/&SpendPowerDiamondSoulDescription {0}豁免失败,能消耗1点气重骰 Reaction/&SpendPowerDiamondSoulReactDescription 消耗气重骰豁免 Reaction/&SpendPowerDiamondSoulReactTitle 重骰 @@ -1562,7 +1562,7 @@ Reaction/&SpendSpellSlotEldritchSmiteDescription {0}能消耗一个法术位对 Reaction/&SpendSpellSlotEldritchSmiteReactDescription 点击消耗1个法术位对目标造成额外伤害 Reaction/&SpendSpellSlotEldritchSmiteReactTitle 魔能斩 Reaction/&SpendSpellSlotEldritchSmiteTitle 魔能斩 -Reaction/&SubitemSelectCoordinatedAttackTitle 选择动作 +Reaction/&SubitemSelectCoordinatedAttackTitle 选择动作 Reaction/&SubitemSelectEldritchSmiteDescription 为魔能斩选择消耗的法术位 Reaction/&SubitemSelectEldritchSmiteTitle 法术位等级 Reaction/&SubitemSelectPowerBundleTitle 选项 @@ -1577,8 +1577,8 @@ Reaction/&UseClassMonkSlowFallTitle 轻身坠 Reaction/&WarcasterAttackDescription 攻击目标 Reaction/&WarcasterAttackTitle 攻击 Reaction/&WarcasterReactionDescription {0}正在离开一个或多个角色的威胁范围 -Reaction/&WarcasterReactionReactDescription 使用反应攻击目标 -Reaction/&WarcasterReactionReactTitle 攻击 +Reaction/&WarcasterReactionReactDescription 使用反应攻击目标 +Reaction/&WarcasterReactionReactTitle 攻击 Reaction/&WarcasterReactionTitle 借机攻击 Requirement/&FeatureSelectionRequireCharacterLevel 等级{0} Requirement/&FeatureSelectionRequireClassLevel 等级{0}的{1} @@ -1646,7 +1646,7 @@ Spell/&AirBlastDescription 向你的目标发射一股集中的空气 Spell/&AirBlastTitle 空气震爆 Spell/&BurstOfRadianceDescription 创造一个闪亮的闪光,伤害你周围的所有敌人 Spell/&BurstOfRadianceTitle 光耀爆发 -Spell/&CJDivineWordDescription 你吟诵一句神圣的箴言,其中充盈了创世黎明的力量。在施法距离内指定任意数量的你能看见的生物,并迫使每个能够听到圣言的生物进行一次魅力豁免。豁免失败者基于其当前生命值承受以下效应:\n• 生命值为50或更少:耳聋1分钟\n• 生命值为40或更少:耳聋并目盲10分钟\n• 生命值为30或更少:耳聋、目盲并被震慑1小时\n• 生命值为20或更少:即死\n• 对于受术的天界生物、元素生物、精类生物或邪魔,其豁免失败时不需考虑其当前生命值,并直接将其遣返回其原属位面(若已处于原属位面则无效)。在随后24小时内,此生物不能通过任何方式回到当前位面,除非使用祈愿术的效应\n +Spell/&CJDivineWordDescription 你吟诵一句神圣的箴言,其中充盈了创世黎明的力量。在施法距离内指定任意数量的你能看见的生物,并迫使每个能够听到圣言的生物进行一次魅力豁免。豁免失败者基于其当前生命值承受以下效应:\n• 生命值为50或更少:耳聋1分钟\n• 生命值为40或更少:耳聋并目盲10分钟\n• 生命值为30或更少:耳聋、目盲并被震慑1小时\n• 生命值为20或更少:即死\n• 对于受术的天界生物、元素生物、精类生物或邪魔,其豁免失败时不需考虑其当前生命值,并直接将其遣返回其原属位面(若已处于原属位面则无效)。在随后24小时内,此生物不能通过任何方式回到当前位面,除非使用祈愿术的效应\n Spell/&CJDivineWordTitle 圣言术 Spell/&DHAnimalShapesSpellDescription 指定施法距离内任意数量的自愿生物,并使每个目标变形为一只挑战等级不超过4,体型不大于大型的野兽 Spell/&DHAnimalShapesSpellTitle 动物形态 @@ -1722,21 +1722,21 @@ Spell/&FrenzyDescription 通过一个手势,你令人群减少到陷入本能 Spell/&FrenzyTitle 狂乱魔咒 Spell/&HinderingBlastDescription 一束激烈的能量射向施法距离内一个生物。对此目标发动一次远程法术攻击,若命中则此目标受1d10点力场伤害\n(当你用魔能爆击中一个生物时,它的速度会降低10英尺,直到你下一个回合开始) Spell/&HinderingBlastTitle 魔能爆(阻碍) -Spell/&IlluminatingSphereDescription 令影响范围内的火把和法力灯等光源点亮 -Spell/&IlluminatingSphereTitle 照明球 +Spell/&IlluminatingSphereDescription 令影响范围内的火把和法力灯等光源点亮 +Spell/&IlluminatingSphereTitle 照明球 Spell/&IPConjureInvisibleStalkerTitle 召唤元素(隐形追踪者) Spell/&MinorLifestealDescription 你从你能看到的范围内的敌对生物身上吸取生命能量。然后你会治疗与所造成伤害相等的生命值。此法术对不死生物和构装生物无效 Spell/&MinorLifestealTitle 低等生命汲取 Spell/&MirrorImageDescription 镜影术 Spell/&MirrorImageTitle 镜影术 -Spell/&MuleDescription 此法术的受术者能忽略重物或盔甲对移动速度的影响。他们也能携带略高的重量 -Spell/&MuleTitle 承重术 +Spell/&MuleDescription 此法术的受术者能忽略重物或盔甲对移动速度的影响。他们也能携带略高的重量 +Spell/&MuleTitle 承重术 Spell/&PetalStormDescription 选择一个你能看到的范围内未被占据的15英尺的立方体空气区域。旋风的元素力量出现其中,并持续整个法术的持续时间。云层严重地遮蔽了这个区域。任何在一个回合中第一次进入风暴的生物或在其中开始其回合的生物都必须进行一次力量豁免。失败则此生物会受到3d4点挥砍伤害。以一个附赠动作,你能向任何方向移动风暴最远30英尺 Spell/&PetalStormTitle 花瓣风暴 Spell/&ProtectThresholdDescription 沿着边界布置奥术符文,你能阻止从门、窗或其他入口的进入。在持续时间内,一个无形的魔能生物会守护此入口。任何试图通过入口的生物都必须通过一次感知豁免,否则会受到4d6点心灵伤害,豁免减半 Spell/&ProtectThresholdTitle 守护结界 -Spell/&RadiantMotesDescription 释放5个光耀弹,每个光耀弹造成2点伤害并且不会失手。当你使用2阶或以上的法术位施放此法术时,每提升一阶,该法术就会多产生2个光耀弹 -Spell/&RadiantMotesTitle 光耀之斑 +Spell/&RadiantMotesDescription 释放5个光耀弹,每个光耀弹造成2点伤害并且不会失手。当你使用2阶或以上的法术位施放此法术时,每提升一阶,该法术就会多产生2个光耀弹 +Spell/&RadiantMotesTitle 光耀之斑 Spell/&ThunderStrikeDescription 制造出一阵雷鸣般的响声,迫使与你相邻的生物通过一次体质豁免,否则受到1d6点雷鸣伤害\n法术的伤害随等级提升,5级(2D6)、11级(3D6)、17级(4D6) Spell/&ThunderStrikeTitle 音鸣爆 Spell/&WinterBreathDescription 制造一阵冷风,使你的敌人感到寒冷,并将他们击倒在地 @@ -1885,11 +1885,11 @@ Subclass/&FighterMarshalKnowYourEnemyFeatureSetDescription 你将你对当前目 Subclass/&FighterMarshalKnowYourEnemyFeatureSetTitle 知己知彼 Subclass/&FighterMarshalStudyYourEnemyPowerDescription 你能以附赠动作尝试通过一次生存检定提高对于目标的了解。每短休2次。 Subclass/&FighterMarshalStudyYourEnemyPowerTitle 研究敌人 -Subclass/&FighterMarshalSummonEternalComradePowerDescription 召唤统帅一位牺牲的战友的灵魂。灵魂具有45+2倍战士职业等级的生命值并且其AC为16+熟练加值。此外,灵魂对毒素、冷冻、黯蚀、倒地、麻痹、束缚免疫,并且对火焰、强酸、闪电、雷鸣伤害有抗力。同时,其对非魔法的挥砍、钝击和穿刺伤害也有抗力。在其回合内,其能飞行最多50英尺并进行一次攻击加值为5+熟练加值的的魔法攻击,造成2d6+5挥砍伤害。 +Subclass/&FighterMarshalSummonEternalComradePowerDescription 召唤统帅一位牺牲的战友的灵魂。灵魂具有45+2倍战士职业等级的生命值并且其AC为16+熟练加值。此外,灵魂对毒素、冷冻、黯蚀、倒地、麻痹、束缚免疫,并且对火焰、强酸、闪电、雷鸣伤害有抗力。同时,其对非魔法的挥砍、钝击和穿刺伤害也有抗力。在其回合内,其能飞行最多50英尺并进行一次攻击加值为5+熟练加值的的魔法攻击,造成2d6+5挥砍伤害。 Subclass/&FighterMarshalSummonEternalComradePowerTitle 召唤永恒战友 Subclass/&FighterMarshalTitle 统帅 -Subclass/&FighterRoyalKnightDescription 一位通过战斗中的英勇行径激励他人的伟大骑士。一位落单的骑士仅仅是个熟练的战士,但一位带领着盟友的骑士能将最羸弱民兵变成凶猛的战队 -Subclass/&FighterRoyalKnightTitle 皇家骑士 +Subclass/&FighterRoyalKnightDescription 一位通过战斗中的英勇行径激励他人的伟大骑士。一位落单的骑士仅仅是个熟练的战士,但一位带领着盟友的骑士能将最羸弱民兵变成凶猛的战队 +Subclass/&FighterRoyalKnightTitle 皇家骑士 Subclass/&FighterSpellShieldDescription 法术之盾是专门从事防御和保护的战士。他们使用魔法协助自身的天然能力 Subclass/&FighterSpellShieldSpellcastingDescription 能施展法师的法术和戏法,这些法术和戏法来自咒法、幻术、变化和死灵系 Subclass/&FighterSpellShieldSpellcastingTitle 施法能力 @@ -1953,8 +1953,8 @@ Subclass/&ManipulatorMentalSavingThrowsDescription 获得体质和魅力豁免 Subclass/&ManipulatorMentalSavingThrowsTitle 意志抗力 Subclass/&MarshalEternalComradeDescription 牺牲的战友 Subclass/&MarshalEternalComradeTitle 牺牲的战友 -Subclass/&OpportunistDescription 投机者从不放过任何机会去终结他们的敌人。他们的刺杀快准狠。没有多少人能在面对他们时毫发无损地逃脱 -Subclass/&OpportunistTitle 投机者 +Subclass/&OpportunistDescription 投机者从不放过任何机会去终结他们的敌人。他们的刺杀快准狠。没有多少人能在面对他们时毫发无损地逃脱 +Subclass/&OpportunistTitle 投机者 Subclass/&PowerArtificerBattleSmithImprovedInfuseWeaponDescription 你为你的武器注入力量。你的攻击视为魔法攻击,并且你的攻击和伤害骰+7。注意你只能激活相同注法一次。第二次激活将取消第一次注法的效果 Subclass/&PowerArtificerBattleSmithImprovedInfuseWeaponTitle 精通注法武器 Subclass/&PowerArtificerBattleSmithInfuseWeaponDescription 你为你的武器注入力量。你的攻击视为魔法攻击,你使用智力计算攻击和伤害骰,直到你下一次长休 @@ -2060,7 +2060,7 @@ Subclass/&WitchSubclassPathTitle 巫师巫会 ToolTip/&CheckBoxDefaultPartyTitle 勾选此框,设置你在开始新的冒险或测试自定义地点时的默认阵容。你以勾选顺序最多能选择{0}个英雄 Tooltip/&CustomPortraitPoolClassMonkKiPool 你掌握一股名为气的神秘能量。此后你将拥有等同于你武僧等级数量的气作为储备。消耗掉的气必须在你短休或长休后才能重获。你能消耗气行使各种特性 Tooltip/&DeadeyeConcentration 禁用神射手 -Tooltip/&FeatPrerequisiteDoesNotHaveFightingStyle 未学习{0} +Tooltip/&FeatPrerequisiteDoesNotHaveFightingStyle 未学习{0} Tooltip/&FeatPrerequisiteHasStealthAttack 具有偷袭 Tooltip/&FeatPrerequisiteIsNotBarbarian 非野蛮人 Tooltip/&FeatPrerequisiteIsNotFighter 非战士 From dc279508330eaa9e43cc765ef99111f82d55f1a4 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 15:54:14 -0700 Subject: [PATCH 19/22] ignore any invalid translation line --- .../Utils/Translations.cs | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/SolastaCommunityExpansion/Utils/Translations.cs b/SolastaCommunityExpansion/Utils/Translations.cs index e494e24064..bb107f1a51 100644 --- a/SolastaCommunityExpansion/Utils/Translations.cs +++ b/SolastaCommunityExpansion/Utils/Translations.cs @@ -166,26 +166,19 @@ internal static void LoadTranslations(string category) foreach (var line in GetFileContent(category, languageCode)) { - string term; - string text; + var splitted = line.Split(new[] {'\t'}, 2); - try + if (splitted.Length != 2) { - var splitted = line.Split(new[] {'\t', ' '}, 2); + continue; + } - term = splitted[0]; - text = splitted[1]; + var term = splitted[0]; + var text = splitted[1]; - foreach (var kvp in GetWordsDictionary()) - { - text = text.Replace(kvp.Key, kvp.Value); - } - } - catch + foreach (var kvp in GetWordsDictionary()) { - Main.Error($"invalid translation line \"{line}\"."); - - continue; + text = text.Replace(kvp.Key, kvp.Value); } var termData = languageSourceData.GetTermData(term); From f0069440bf9e5f65f982df6fdecb2b13ada8237d Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 16:12:05 -0700 Subject: [PATCH 20/22] translation files are case sensitive --- .../Translations/{Modui-pt-br.txt => Modui-pt-BR.txt} | 0 .../Translations/{Monsters-pt-br.txt => Monsters-pt-BR.txt} | 0 .../Translations/{Monsters-zh-cn.txt => Monsters-zh-CN.txt} | 0 .../{Translations-pt-br.txt => Translations-pt-BR.txt} | 0 .../{Translations-zh-cn.txt => Translations-zh-CN.txt} | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename SolastaCommunityExpansion/Translations/{Modui-pt-br.txt => Modui-pt-BR.txt} (100%) rename SolastaCommunityExpansion/Translations/{Monsters-pt-br.txt => Monsters-pt-BR.txt} (100%) rename SolastaCommunityExpansion/Translations/{Monsters-zh-cn.txt => Monsters-zh-CN.txt} (100%) rename SolastaCommunityExpansion/Translations/{Translations-pt-br.txt => Translations-pt-BR.txt} (100%) rename SolastaCommunityExpansion/Translations/{Translations-zh-cn.txt => Translations-zh-CN.txt} (100%) diff --git a/SolastaCommunityExpansion/Translations/Modui-pt-br.txt b/SolastaCommunityExpansion/Translations/Modui-pt-BR.txt similarity index 100% rename from SolastaCommunityExpansion/Translations/Modui-pt-br.txt rename to SolastaCommunityExpansion/Translations/Modui-pt-BR.txt diff --git a/SolastaCommunityExpansion/Translations/Monsters-pt-br.txt b/SolastaCommunityExpansion/Translations/Monsters-pt-BR.txt similarity index 100% rename from SolastaCommunityExpansion/Translations/Monsters-pt-br.txt rename to SolastaCommunityExpansion/Translations/Monsters-pt-BR.txt diff --git a/SolastaCommunityExpansion/Translations/Monsters-zh-cn.txt b/SolastaCommunityExpansion/Translations/Monsters-zh-CN.txt similarity index 100% rename from SolastaCommunityExpansion/Translations/Monsters-zh-cn.txt rename to SolastaCommunityExpansion/Translations/Monsters-zh-CN.txt diff --git a/SolastaCommunityExpansion/Translations/Translations-pt-br.txt b/SolastaCommunityExpansion/Translations/Translations-pt-BR.txt similarity index 100% rename from SolastaCommunityExpansion/Translations/Translations-pt-br.txt rename to SolastaCommunityExpansion/Translations/Translations-pt-BR.txt diff --git a/SolastaCommunityExpansion/Translations/Translations-zh-cn.txt b/SolastaCommunityExpansion/Translations/Translations-zh-CN.txt similarity index 100% rename from SolastaCommunityExpansion/Translations/Translations-zh-cn.txt rename to SolastaCommunityExpansion/Translations/Translations-zh-CN.txt From af5e0a271fbd5ae5c0888cf6bbe293e30ea75c97 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 16:12:27 -0700 Subject: [PATCH 21/22] avoid reopening same file twice --- .../Utils/Translations.cs | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/SolastaCommunityExpansion/Utils/Translations.cs b/SolastaCommunityExpansion/Utils/Translations.cs index bb107f1a51..c9704e516f 100644 --- a/SolastaCommunityExpansion/Utils/Translations.cs +++ b/SolastaCommunityExpansion/Utils/Translations.cs @@ -26,6 +26,8 @@ public enum Engine internal static string[] AvailableEngines = Enum.GetNames(typeof(Engine)); + private static Dictionary Glossary = GetWordsDictionary(); + private static string GetPayload(string url) { using var wc = new WebClient(); @@ -156,27 +158,23 @@ internal static void LoadTranslations(string category) { var languageSourceData = LocalizationManager.Sources[0]; var languageIndex = languageSourceData.GetLanguageIndex(LocalizationManager.CurrentLanguage); - var languageCode = LocalizationManager.CurrentLanguageCode.Replace("-", "_"); - - // special case for unofficial languages - if (Main.Settings.SelectedOverwriteLanguageCode != "off") - { - languageCode = Main.Settings.SelectedOverwriteLanguageCode; - } + var languageCode = Main.Settings.SelectedOverwriteLanguageCode == "off" + ? LocalizationManager.CurrentLanguageCode + : Main.Settings.SelectedOverwriteLanguageCode; foreach (var line in GetFileContent(category, languageCode)) { - var splitted = line.Split(new[] {'\t'}, 2); + var split = line.Split(new[] {'\t'}, 2); - if (splitted.Length != 2) + if (split.Length != 2) { continue; } - var term = splitted[0]; - var text = splitted[1]; + var term = split[0]; + var text = split[1]; - foreach (var kvp in GetWordsDictionary()) + foreach (var kvp in Glossary) { text = text.Replace(kvp.Key, kvp.Value); } From 96157b56632eb9d5d0e3e839bb0270020911e059 Mon Sep 17 00:00:00 2001 From: ThyWoof Date: Mon, 13 Jun 2022 16:13:05 -0700 Subject: [PATCH 22/22] update changelog --- SolastaCommunityExpansion/Changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/SolastaCommunityExpansion/Changelog.txt b/SolastaCommunityExpansion/Changelog.txt index 188a5aad31..118085316d 100644 --- a/SolastaCommunityExpansion/Changelog.txt +++ b/SolastaCommunityExpansion/Changelog.txt @@ -1,6 +1,7 @@ CHANGES: - Add Wiki and Donations buttons under "Credits & Diagnostics" +- Fix game not booting in Chinese or Portuguese - Improve Russian and Chinese translations - Make some higher level spells standard on Clerics and Druids - Rework War Caster fix released on previous version