From 13e678f199239dfdccbad18ad8aeafcd5bdb6e0a Mon Sep 17 00:00:00 2001 From: zxcvbnm61004 Date: Mon, 3 Jun 2024 19:58:43 +0800 Subject: [PATCH 01/52] Update Spells03-zh-CN.txt Signed-off-by: zxcvbnm61004 --- .../Translations/zh-CN/Spells/Spells03-zh-CN.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt index 3077117b9d..d62ca2462b 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt @@ -62,10 +62,10 @@ Spell/&HungerOfTheVoidDescription=你打开了通往群星之间黑暗的大门 Spell/&HungerOfTheVoidTitle=哈达之欲 Spell/&IntellectFortressDescription=在持续时间内,您或您能看到的范围内的一个自愿生物将对精神伤害具有抗性,并且在智力、感知和魅力豁免检定上具有优势。当您使用 4 级或更高级别的法术位施放此法术时,您可以针对范围内的额外生物,每个高于 3 级的法术位等级。 Spell/&IntellectFortressTitle=智力堡垒 -Spell/&LightningArrowDescription=下次你在法术持续时间内进行远程武器攻击时,武器的弹药或武器本身(如果是投掷武器)会转变成一道闪电。正常进行攻击检定。命中时目标会受到 3d8 闪电伤害,未击中时会受到一半伤害。无论你击中还是未击中,距离目标 10 尺内的每个生物都必须进行一次敏捷豁免。这些生物中的每一个在豁免失败时都会受到 2d8 闪电伤害,或者在成功豁免时受到一半的伤害。当你使用 4 环或更高环阶法术位施放此法术时,每高于 3 环法术位,该法术的两种效果的伤害都会增加 1d8。 +Spell/&LightningArrowDescription=下次你在法术持续时间内进行远程武器攻击时,武器的弹药或武器本身(如果是投掷武器)会转变成一道闪电。正常进行攻击检定。命中时目标会受到 3d8 闪电伤害,未击中时会受到一半伤害。无论你击中还是未击中,距离目标 10 尺内的每个生物都必须进行一次敏捷豁免。这些生物中的每一个在豁免失败时都会受到 2d8 闪电伤害,或者在成功豁免时受到一半的伤害。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,上述两种闪电伤害就各增加 1d8。 Spell/&LightningArrowTitle=闪电箭矢 -Spell/&PsionicBlastDescription=你在 30 英尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 英尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。当你使用 4 级或更高级别的法术位施放此法术时,伤害会随着高于 3 级的每个法术位等级增加 1d8。 -Spell/&PsionicBlastTitle=灵能冲击 +Spell/&PsionicBlastDescription=你在 30 尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,其伤害就增加 1d8。 +Spell/&PsionicBlastTitle=灵能震爆 Spell/&PulseWaveDescription=使用强烈的冲压将敌人推开。 Spell/&PulseWaveTitle=脉冲波动 Spell/&SpiritShroudDamageColdDescription=造成额外的冷冻伤害。 From 4d85cb642bcff834eec1c5207e0ca07e700a4cbf Mon Sep 17 00:00:00 2001 From: zxcvbnm61004 Date: Mon, 3 Jun 2024 20:11:22 +0800 Subject: [PATCH 02/52] Update Spells03-zh-CN.txt Signed-off-by: zxcvbnm61004 --- .../zh-CN/Spells/Spells03-zh-CN.txt | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt index d62ca2462b..aa63930484 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt @@ -3,12 +3,12 @@ Condition/&ConditionAuraOfLifeTitle=生命灵光 Condition/&ConditionBlindedByBlindingSmiteTitle=受致盲斩影响陷入目盲 Condition/&ConditionBlindedByHungerOfTheVoidTitle=受哈达之欲影响陷入目盲 Condition/&ConditionCorruptingBoltDescription=该生物下一次受到的伤害陷入易伤。 -Condition/&ConditionCorruptingBoltTitle=腐化 +Condition/&ConditionCorruptingBoltTitle=腐蚀 Condition/&ConditionCrusadersMantleDescription=在你的攻击中获得额外的 1d4 光耀伤害。 Condition/&ConditionCrusadersMantleTitle=十字军披风 Condition/&ConditionFlameArrowsDescription=你用箭或矢攻击造成额外 1d6 火焰伤害。 Condition/&ConditionFlameArrowsTitle=烈焰箭矢 -Condition/&ConditionLightningArrowDescription=下次你进行远程武器攻击时,目标击中时受到 3d8 闪电伤害,击中时受到一半伤害,无论击中还是未击中,目标 10 尺内的每个生物都必须进行一次敏捷豁免。这些生物中的每一个在豁免失败时都会受到 2d8 闪电伤害,或者在成功豁免时受到一半的伤害。当你使用 4 环或更高环阶的法术位施放此法术时,每高于 3 环法术位,该法术的两种效果的伤害都会增加 1d8。 +Condition/&ConditionLightningArrowDescription=下次你进行远程武器攻击时,目标击中时受到 3d8 闪电伤害,击中时受到一半伤害,无论击中还是未击中,目标 10 尺内的每个生物都必须进行一次敏捷豁免。这些生物中的每一个在豁免失败时都会受到 2d8 闪电伤害,或者在成功豁免时受到一半的伤害。当你使用四环或更高的法术位施放该法术时,使用的法术位每比三环高一环,其伤害就增加 1d8。 Condition/&ConditionLightningArrowTitle=闪电箭矢 Condition/&ConditionSpiritShroudNoHealDescription=无法获得生命值。如果是不死生物,则在攻击施法者时处于劣势。 Condition/&ConditionSpiritShroudNoHealTitle=环绕之触 @@ -32,15 +32,15 @@ Feedback/&AdditionalDamageSpiritShroudDamageNecroticFormat=魂灵环绕! Feedback/&AdditionalDamageSpiritShroudDamageNecroticLine={0} 通过魂灵环绕对 {1} 造成 {2} 黯蚀伤害! Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=魂灵环绕! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} 通过魂灵环绕对 {1} 造成 {2} 光耀伤害! -Spell/&AdderFangsDescription=你创造出一条巨大的绿色蛇的面容,它在向你的敌人袭来之前出现了片刻。选择范围内的一个生物。目标必须进行一次体质豁免检定,失败时受到 4d10 毒素伤害,成功时受到一半伤害。豁免失败的生物也会中毒,并且在受到该法术中毒时其速度减半。在每个回合结束时,目标可以进行一次体质豁免检定,成功则结束中毒。否则,中毒持续 1 分钟。当你使用 4 环或更高环阶的法术位施放此法术时,你可以在每个高于 3 环的法术位范围内瞄准一个额外的生物。 +Spell/&AdderFangsDescription=你创造出一条巨大的绿色蛇的面容,它在向你的敌人袭来之前出现了片刻。选择范围内的一个生物。目标必须进行一次体质豁免检定,失败时受到 4d10 毒素伤害,成功时受到一半伤害。豁免失败的生物也会中毒,并且在受到该法术中毒时其速度减半。在每个回合结束时,目标可以进行一次体质豁免检定,成功则结束中毒。否则,中毒持续 1 分钟。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,就可以多选择一个生物作为目标。 Spell/&AdderFangsTitle=蝰蛇毒牙 -Spell/&AuraOfLifeDescription=治疗能量从你身上散发出半径 30 尺的光环。直到法术结束,灵光会随着你移动,以你为中心。你可以使用附赠动作使灵光中的一个生物(包括你)恢复 2d6 点生命值。 +Spell/&AuraOfLifeDescription=治疗能量从你身上散发出半径 30 尺的灵光。直到法术结束,灵光会随着你移动,以你为中心。你可以使用附赠动作使灵光中的一个生物(包括你)恢复 2d6 点生命值。 Spell/&AuraOfLifeTitle=活力灵光 Spell/&BlindingSmiteDescription=在你的下一次攻击中,你的武器会发出耀眼的光芒,并且这次攻击会对目标造成额外的 3d8 光耀伤害。此外,目标必须成功通过体质豁免,否则将被目盲,直到法术结束。\n被此法术目盲的生物在其每个回合结束时进行另一次体质豁免。豁免成功后,它不再目盲。 Spell/&BlindingSmiteTitle=致盲斩 -Spell/&BoomingStepDescription=你将自己传送到范围内可以看到的一个未被占用的空间。在你消失后,一声雷鸣般的轰鸣声响起,你离开的空间 10 尺内的每个生物都必须进行一次体质豁免检定,豁免失败会受到 3d10 雷鸣伤害,豁免成功则受到一半伤害。你还可以传送一位愿意的盟友。当你使用 4 环或更高环阶法术位施放此法术时,每高于 3 环法术位,伤害就会增加 1d10。 +Spell/&BoomingStepDescription=你将自己传送到范围内可以看到的一个未被占用的空间。在你消失后,一声雷鸣般的轰鸣声响起,你离开的空间 10 尺内的每个生物都必须进行一次体质豁免检定,豁免失败会受到 3d10 雷鸣伤害,豁免成功则受到一半伤害。你还可以传送一位愿意的盟友。当你使用四环或更高的法术位施放该法术时,使用的法术位每比三环高一环,其伤害就增加 1d10。 Spell/&BoomingStepTitle=雷霆步 -Spell/&CorruptingBoltDescription=你可以发射一束黯蚀能量脉冲,使生物的身体开始枯萎和腐烂。对生物进行远程攻击。命中后,目标会受到 4d8 点黯蚀伤害,并且必须通过一次体质豁免检定。如果豁免失败,下次你或你的盟友在你的下回合结束之前用攻击击中腐化生物时,该生物就容易受到该攻击的所有伤害,然后腐化就会结束。当你使用 4 环或更高环阶法术位施放此法术时,每高于 3 环法术位,伤害就会增加 1d8。 +Spell/&CorruptingBoltDescription=你可以发射一束黯蚀能量脉冲,使生物的身体开始枯萎和腐烂。对生物进行远程攻击。命中后,目标会受到 4d8 点黯蚀伤害,并且必须通过一次体质豁免检定。如果豁免失败,下次你或你的盟友在你的下回合结束之前用攻击击中腐化生物时,该生物就容易受到该攻击的所有伤害,然后腐化就会结束。当你使用四环或更高的法术位施放该法术时,使用的法术位每比三环高一环,其伤害就增加 1d8。 Spell/&CorruptingBoltTitle=腐蚀箭 Spell/&CrusadersMantleDescription=用魔法性的灵光包围自己。灵光内的盟友在攻击时获得额外的 1d4 光耀伤害。 Spell/&CrusadersMantleTitle=十字军披风 @@ -56,12 +56,12 @@ Spell/&ElementalWeaponDamageThunderDescription=为一件非魔法武器注入雷 Spell/&ElementalWeaponDamageThunderTitle=雷鸣元素武器 Spell/&ElementalWeaponDescription=为一件非魔法武器注入元素魔法。它在攻击和伤害检定上获得 +1,并获得 1d4 相应元素的伤害。当使用 5 环或 6 环法术位施法时,效果增加 1 个骰子,使用 7 环或更高环阶法术位时,效果增加 2 个骰子。 Spell/&ElementalWeaponTitle=元素武器 -Spell/&FlameArrowsDescription=你必须装备远程武器。当目标被它击中时,目标会受到额外 1d6 点火焰伤害。当从箭袋中取出十二发弹药时,法术结束。当你使用 4 环或更高环阶法术位施放此法术时,每高于 3 环法术位,你可以用此法术影响的弹药数量就会增加两发。 +Spell/&FlameArrowsDescription=你必须装备远程武器。当目标被它击中时,目标会受到额外 1d6 点火焰伤害。当从箭袋中取出十二发弹药时,法术结束。当你使用四环或更高的法术位施放该法术时,使用的法术位每比三环高一环,你能以此法术影响的弹药的数量便增加 2 发。 Spell/&FlameArrowsTitle=烈焰箭矢 Spell/&HungerOfTheVoidDescription=你打开了通往群星之间黑暗的大门,这是一个充满未知恐怖的区域。一个半径 20 尺的漆黑和严寒球体出现,以一个有范围的点为中心并持续一段时间。该区域的光芒熄灭,其中的生物会目盲。任何在该区域开始回合的生物都会受到 2d6 的冷冻伤害。任何在该区域结束其回合的生物都必须成功通过敏捷豁免检定,否则会因异界软体触手的触碰而受到 2d6 強酸伤害。 Spell/&HungerOfTheVoidTitle=哈达之欲 -Spell/&IntellectFortressDescription=在持续时间内,您或您能看到的范围内的一个自愿生物将对精神伤害具有抗性,并且在智力、感知和魅力豁免检定上具有优势。当您使用 4 级或更高级别的法术位施放此法术时,您可以针对范围内的额外生物,每个高于 3 级的法术位等级。 -Spell/&IntellectFortressTitle=智力堡垒 +Spell/&IntellectFortressDescription=在持续时间内,您或您能看到的范围内的一个自愿生物将对精神伤害具有抗性,并且在智力、感知和魅力豁免检定上具有优势。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,就可以多选择一个生物作为目标。 +Spell/&IntellectFortressTitle=智能壁垒 Spell/&LightningArrowDescription=下次你在法术持续时间内进行远程武器攻击时,武器的弹药或武器本身(如果是投掷武器)会转变成一道闪电。正常进行攻击检定。命中时目标会受到 3d8 闪电伤害,未击中时会受到一半伤害。无论你击中还是未击中,距离目标 10 尺内的每个生物都必须进行一次敏捷豁免。这些生物中的每一个在豁免失败时都会受到 2d8 闪电伤害,或者在成功豁免时受到一半的伤害。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,上述两种闪电伤害就各增加 1d8。 Spell/&LightningArrowTitle=闪电箭矢 Spell/&PsionicBlastDescription=你在 30 尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,其伤害就增加 1d8。 @@ -74,9 +74,9 @@ Spell/&SpiritShroudDamageNecroticDescription=造成额外黯蚀伤害。 Spell/&SpiritShroudDamageNecroticTitle=魂灵环绕(黯蚀) Spell/&SpiritShroudDamageRadiantDescription=造成额外的光耀伤害。 Spell/&SpiritShroudDamageRadiantTitle=魂灵环绕(光耀) -Spell/&SpiritShroudDescription=你召唤死者的灵魂,在法术的持续时间内它们会在你周身环绕。灵魂无影无形,不受伤害。\n在法术结束之前,当你击中距离你 10 尺以内的生物时,你进行的任何攻击都会造成 1d8 的额外伤害。这种伤害是光耀、黯蚀或冷冻伤害(你在施法时选择)。任何受到此伤害的生物在你的下一个回合开始之前都无法恢复生命值。\n此外,施法时距离你 10 尺以内、进入范围或在范围内开始回合的任何敌方生物都会降低 10 尺移动速度,直到下一轮开始。\n当你使用 4 环或更高环阶法术位施展此法术时,每高于 3 环每两个法术位环阶,伤害增加 1d8。 +Spell/&SpiritShroudDescription=你召唤死者的灵魂,在法术的持续时间内它们会在你周身环绕。灵魂无影无形,不受伤害。\n在法术结束之前,当你击中距离你 10 尺以内的生物时,你进行的任何攻击都会造成 1d8 的额外伤害。这种伤害是光耀、黯蚀或冷冻伤害(你在施法时选择)。任何受到此伤害的生物在你的下一个回合开始之前都无法恢复生命值。\n此外,施法时距离你 10 尺以内、进入范围或在范围内开始回合的任何敌方生物都会降低 10 尺移动速度,直到下一轮开始。\n使用四环或更高法术位施展该法术时,你使用的法术位每比三环高二环,其伤害就增加 1d8。 Spell/&SpiritShroudTitle=魂灵环绕 -Spell/&VitalityTransferDescription=你牺牲了一些生命值来治愈另一个生物的伤势。你受到 4d8 点黯蚀伤害,并且你选择的一个在范围内可以看到的生物会恢复等于你所受到的黯蚀伤害两倍的生命值。当你使用 4 环或更高环阶法术位施展此法术时,每高于 3 环法术位一个环阶,伤害增加 1d8。 +Spell/&VitalityTransferDescription=你牺牲了一些生命值来治愈另一个生物的伤势。你受到 4d8 点黯蚀伤害,并且你选择的一个在范围内可以看到的生物会恢复等于你所受到的黯蚀伤害两倍的生命值。当你使用四环或更高的法术位施放该法术时,使用的法术位每比三环高一环,黯蚀伤害就增加 1d8。 Spell/&VitalityTransferTitle=生命转换 Spell/&WinterBreathDescription=制造一阵冷风来冻寒你的敌人并将他们击倒。 Spell/&WinterBreathTitle=冬息术 From ed7e7648eddbd03179796b4bdf2d3d965050c892 Mon Sep 17 00:00:00 2001 From: Dovel Date: Tue, 4 Jun 2024 21:46:15 +0300 Subject: [PATCH 03/52] update russian translation --- .../Translations/ru/Spells/Spells03-ru.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt index 8b323c07e9..0d6d9d0ba0 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt @@ -60,11 +60,11 @@ Spell/&FlameArrowsDescription=Вы касаетесь колчана, в кот Spell/&FlameArrowsTitle=Пылающие стрелы Spell/&HungerOfTheVoidDescription=Вы открываете врата в межзвёздную тьму, область, населённую неизвестными кошмарами. Появляется сфера черноты и холода с радиусом 20 футов с центром на точке в пределах дистанции, существующая, пока активно заклинание. Никакой свет, ни магический, ни обычный, не может осветить эту местность, и существа, полностью находящиеся в этой области, ослеплены. Все существа, начинающие ход в этой местности, получают 2d6 урона холодом. Все существа, оканчивающие ход в этой местности, должны преуспеть в спасброске Ловкости, иначе получают 2d6 урона кислотой, так как к ним прикасаются бледные потусторонние щупальца. Spell/&HungerOfTheVoidTitle=Голод Хадара -Spell/&IntellectFortressDescription=На время действия вы или одно согласное существо, которое вы можете видеть в пределах досягаемости, имеете сопротивление психическому урону, а также преимущество в спасбросках Интеллекта, Мудрости и Харизмы. Когда вы произносите это заклинание, используя ячейку заклинания 4-го уровня или выше, вы можете выбрать в качестве цели дополнительное существо в пределах досягаемости для каждого уровня ячейки выше 3-го. -Spell/&IntellectFortressTitle=Интеллект Крепость +Spell/&IntellectFortressDescription=В течение длительности заклинания вы или одно согласное существо, которое вы можете видеть в пределах дистанции, имеете сопротивление урону психической энергией, а также совершаете с преимуществом спасброски Интеллекта, Мудрости и Харизмы. Когда вы накладываете это заклинание, используя ячейку 4-го уровня или выше, вы можете сделать целью заклинания дополнительных существ, по одному за каждый уровень ячейки выше третьего. +Spell/&IntellectFortressTitle=Крепость интеллекта Spell/&LightningArrowDescription=В следующий раз, когда вы совершите дальнобойную атаку оружием, пока активно это заклинание, ваш боеприпас или само оружие, если это метательное оружие, превращается в разряд молнии. Совершите бросок атаки как обычно. Вместо обычного урона от оружия цель при попадании получает урон электричеством 3d8, или половину урона при промахе. Вне зависимости от попадания или промаха, все существа в пределах 10 футов от цели должны совершить спасбросок Ловкости. При провале эти существа получают урон электричеством 2d8, или половину урона при успехе. Если вы накладываете это заклинание, используя ячейку 4-го уровня или выше, урон от обоих эффектов увеличивается на 1d8 за каждый уровень ячейки выше третьего. Spell/&LightningArrowTitle=Молниевая стрела -Spell/&PsionicBlastDescription=Вы высвобождаете разрушительную волну ментальной силы в 30-футовом конусе. Каждое существо в области должно совершить спасбросок Ловкости. При провале цель получает урон силой 5d8, отталкивается на 20 футов прямо от вас и сбивается с ног. При успешном спасброске цель получает вдвое меньше урона, ее не толкают и не сбивают с ног. Когда вы накладываете это заклинание, используя ячейку 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. +Spell/&PsionicBlastDescription=Вы испускаете разрушительную волну ментальной энергии в 30-футовом конусе. Каждое существо в этой области должно совершить спасбросок Ловкости. При провале цель получает 5d8 урона силовым полем, отбрасывается на 20 футов от вас по прямой и падает ничком. При успехе цель получает вдвое меньше урона, не отталкивается и не сбивается с ног. Если вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. Spell/&PsionicBlastTitle=Псионический взрыв Spell/&PulseWaveDescription=Вы создаёте сильное давление, выпускаемое в форме 30-футового конуса, и определяете направление волны. Каждое существо в пределах конуса должно совершить спасбросок Телосложения, получая 6d6 урона силовым полем при провале или половину этого урона при успехе. Все существа, провалившие спасбросок, отталкиваются от вас на 15 футов. Spell/&PulseWaveTitle=Силовая волна From dcd7ccfb07d854e0ec7ec7dbd0a9c1cf1b668f42 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 07:37:20 -0700 Subject: [PATCH 04/52] fix #4687 --- SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs b/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs index 445dae90f4..df1f1e5a2c 100644 --- a/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs +++ b/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs @@ -361,7 +361,7 @@ public IEnumerator OnActionFinishedByContender(CharacterAction action, GameLocat var implementationManager = ServiceRepository.GetService() as RulesetImplementationManager; - var actionParams = new CharacterActionParams(defender, ActionDefinitions.Id.PowerNoCost) + var actionParams = new CharacterActionParams(defender, ActionDefinitions.Id.PowerReaction) { ActionModifiers = { new ActionModifier() }, StringParameter = "WrathOfTheStorm", From 60fded2082ee3c2b8436c3ae31a6d6ff6a67239f Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 08:21:30 -0700 Subject: [PATCH 05/52] fix #4683 --- .../Translations/de/Feats/OtherFeats-de.txt | 2 +- SolastaUnfinishedBusiness/Translations/de/Others-de.txt | 2 +- .../Translations/de/SubClasses/RoguishAcrobat-de.txt | 2 +- .../Translations/en/Feats/OtherFeats-en.txt | 2 +- SolastaUnfinishedBusiness/Translations/en/Others-en.txt | 2 +- .../Translations/en/SubClasses/RoguishAcrobat-en.txt | 2 +- .../Translations/es/Feats/OtherFeats-es.txt | 2 +- SolastaUnfinishedBusiness/Translations/es/Others-es.txt | 2 +- .../Translations/es/SubClasses/RoguishAcrobat-es.txt | 2 +- .../Translations/fr/Feats/OtherFeats-fr.txt | 2 +- SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt | 2 +- .../Translations/fr/SubClasses/RoguishAcrobat-fr.txt | 2 +- .../Translations/it/Feats/OtherFeats-it.txt | 2 +- SolastaUnfinishedBusiness/Translations/it/Others-it.txt | 2 +- .../Translations/it/SubClasses/RoguishAcrobat-it.txt | 2 +- .../Translations/ja/Feats/OtherFeats-ja.txt | 2 +- SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt | 2 +- .../Translations/ja/SubClasses/RoguishAcrobat-ja.txt | 2 +- .../Translations/ko/Feats/OtherFeats-ko.txt | 2 +- SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt | 2 +- .../Translations/ko/SubClasses/RoguishAcrobat-ko.txt | 2 +- .../Translations/pt-BR/Feats/OtherFeats-pt-BR.txt | 2 +- SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt | 2 +- .../Translations/pt-BR/SubClasses/RoguishAcrobat-pt-BR.txt | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt b/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt index a45c1cddd4..330b5be179 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription=Du lernst zwei Cantrips deiner Wahl aus der Z Feat/&FeatMagicInitiateTitle=Magischer Eingeweihter [{0}] Feat/&FeatMenacingDescription=Erhöhe dein Charisma um 1, bis zu einem Maximum von 20.\n• Du erlangst Kenntnisse in der Fertigkeit oder dem Fachwissen „Einschüchterung“, wenn du bereits über Kenntnisse verfügst.\n• Du kannst einen Hauptangriff durch den Versuch ersetzen, einen Humanoiden zu demoralisieren, den du siehst in einem Umkreis von 30 Fuß um Sie herum, der Sie sehen und hören kann. Führen Sie einen Charisma-Wurf (Einschüchterung) durch, der durch den Weisheits-Wurf (Einsicht) des Ziels angefochten wird. Wenn Ihre Prüfung erfolgreich ist, ist das Ziel bis zum Ende Ihres nächsten Zuges verängstigt. Wenn Ihre Prüfung fehlschlägt, kann das Ziel 1 Stunde lang nicht auf diese Weise von Ihnen erschreckt werden. Feat/&FeatMenacingTitle=Bedrohlich -Feat/&FeatMetamagicAdeptDescription=Du lernst zwei Metamagie-Optionen deiner Wahl aus der Zaubererklasse und erhältst die Hälfte deines Kompetenzbonus, aufgerundet in Zauberpunkten, die du dafür ausgeben kannst. +Feat/&FeatMetamagicAdeptDescription=Du lernst zwei Metamagie-Optionen deiner Wahl aus der Zaubererklasse und erhältst die Hälfte deines Kompetenzbonus (abgerundet) in Zauberpunkten, die du dafür ausgeben kannst. Feat/&FeatMetamagicAdeptTitle=Metamagischer Adept Feat/&FeatMobileDescription=Du bist außergewöhnlich schnell und wendig. Ihre Geschwindigkeit erhöht sich um 10 Fuß und Sie sind beim Sprinten immun gegen schwieriges Gelände. Wenn du einen Nahkampfangriff gegen eine Kreatur durchführst, bist du gegen Gelegenheitsangriffe dieser Kreatur immun, es sei denn, sie ist dagegen immun. Feat/&FeatMobileTitle=Handy, Mobiltelefon diff --git a/SolastaUnfinishedBusiness/Translations/de/Others-de.txt b/SolastaUnfinishedBusiness/Translations/de/Others-de.txt index 872b6d431e..8f2203acf8 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Others-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Others-de.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0} % Chancen, einen herrlichen Bart wachsen zu Feature/&AncestryLevelUpDraconicDescription=Deine drakonische Abstammung verleiht dir eine Affinität zur Schadensart {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Als Bonusaktion können Sie einen unbewaffneten Schlag ausführen. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=Kampfkunst – Bonus unbewaffneter Schlag -Feature/&AttributeModifierMonkAbundantKiDescription=Fügen Sie die Hälfte Ihres Kompetenzbonus (aufgerundet) zu Ihrem Ki-Punkte-Pool hinzu. +Feature/&AttributeModifierMonkAbundantKiDescription=Fügen Sie Ihrem Ki-Punkte-Pool die Hälfte Ihres Kompetenzbonus (abgerundet) hinzu. Feature/&AttributeModifierMonkAbundantKiTitle=Reichlich Ki Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=Wenn dir ein Rettungswurf misslingt, kannst du ihn mit einem Bonus in Höhe deiner Kämpferstufe wiederholen. Wenn Sie dies tun, müssen Sie die neue Rolle verwenden und können diese Funktion erst wieder verwenden, wenn Sie eine lange Pause beendet haben. diff --git a/SolastaUnfinishedBusiness/Translations/de/SubClasses/RoguishAcrobat-de.txt b/SolastaUnfinishedBusiness/Translations/de/SubClasses/RoguishAcrobat-de.txt index d2dba6e254..5407e4222b 100644 --- a/SolastaUnfinishedBusiness/Translations/de/SubClasses/RoguishAcrobat-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/SubClasses/RoguishAcrobat-de.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Du addierst die Hälfte deines Fähigkeitsbonus zu deiner Rüstungsklasse, während du einen Kampfstab in zwei Händen führst und weder Rüstung noch leichte Rüstung trägst. +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Sie addieren die Hälfte Ihres Kompetenzbonus (abgerundet) zu Ihrer Rüstungsklasse, während Sie einen Kampfstab in beiden Händen halten und keine oder nur eine leichte Rüstung tragen. Feature/&AttributeModifierRoguishAcrobatProtectorTitle=Akrobaten-Beschützer Feature/&FeatureRoguishAcrobatTrooperDescription=Sie erhalten die Fähigkeit, einen Kampfstab als Finessewaffe zu verwenden, und die Reichweite des Kampfstabs erhöht sich um 5 Fuß.\nWenn Sie die Angriffsaktion mit einem Kampfstab ausführen, können Sie Ihre Bonusaktion nutzen, um einen Nahkampfangriff mit dem anderen Ende des Kampfstabs durchzuführen Waffe. Dieser Angriff verwendet denselben Fähigkeitsmodifikator wie der Primärangriff und verursacht 1W4 Wuchtschaden. Feature/&FeatureRoguishAcrobatTrooperTitle=Akrobat-Soldat diff --git a/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt b/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt index 7a8b782cfc..31d6882d7e 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription=You learn two cantrips of your choice from th Feat/&FeatMagicInitiateTitle=Magic Initiate [{0}] Feat/&FeatMenacingDescription=Increase your Charisma by 1, to a maximum of 20.\n• You gain proficiency with Intimidation skill or expertise if you are already proficient.\n• You can replace one main attack with an attempt to demoralize one humanoid you can see within 30 feet of you that can see and hear you. Make a Charisma (Intimidation) check contested by the target's Wisdom (Insight) check. If your check succeeds, the target is frightened until the end of your next turn. If your check fails, the target can't be frightened by you in this way for 1 hour. Feat/&FeatMenacingTitle=Menacing -Feat/&FeatMetamagicAdeptDescription=You learn two metamagic options of your choice from the sorcerer class and gain half your proficiency bonus rounded up in sorcery points to spend on it. +Feat/&FeatMetamagicAdeptDescription=You learn two metamagic options of your choice from the sorcerer class and gain half your proficiency bonus (rounded down) in sorcery points to spend on it. Feat/&FeatMetamagicAdeptTitle=Metamagic Adept Feat/&FeatMobileDescription=You are exceptionally speedy and agile. Your speed increases by 10 ft, and you are immune to difficult terrain when dashing. When you make a melee attack against a creature you are immune to attack of opportunity from the creature unless it has immunity to that. Feat/&FeatMobileTitle=Mobile diff --git a/SolastaUnfinishedBusiness/Translations/en/Others-en.txt b/SolastaUnfinishedBusiness/Translations/en/Others-en.txt index 847877de10..321757e6e1 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Others-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Others-en.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0}% chances to grow a glorious beard! Feature/&AncestryLevelUpDraconicDescription=Your draconic ancestry gives you an affinity to {0} damage type. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=You can make one unarmed strike as a bonus action. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=Martial Arts - Bonus Unarmed Strike -Feature/&AttributeModifierMonkAbundantKiDescription=Add half your proficiency bonus (rounded up) to your Ki Points pool. +Feature/&AttributeModifierMonkAbundantKiDescription=Add half your proficiency bonus (rounded down) to your Ki Points pool. Feature/&AttributeModifierMonkAbundantKiTitle=Abundant Ki Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=If you fail a saving throw, you can reroll it with a bonus equal to your Fighter level. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest. diff --git a/SolastaUnfinishedBusiness/Translations/en/SubClasses/RoguishAcrobat-en.txt b/SolastaUnfinishedBusiness/Translations/en/SubClasses/RoguishAcrobat-en.txt index 36ba4e785a..f31666bdde 100644 --- a/SolastaUnfinishedBusiness/Translations/en/SubClasses/RoguishAcrobat-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/SubClasses/RoguishAcrobat-en.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=You add half your proficiency bonus to your armor class while wielding a quarterstaff in two hands, and you are wearing no armor or light armor. +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=You add half your proficiency bonus (rounded down) to your armor class while wielding a quarterstaff in two hands, and you are wearing no armor or light armor. Feature/&AttributeModifierRoguishAcrobatProtectorTitle=Acrobat Protector Feature/&FeatureRoguishAcrobatTrooperDescription=You gain the ability to use a quarterstaff as finesse weapon and the quarterstaff reach increases by 5 ft.\nWhen you take the Attack action with a quarterstaff, you can use your bonus action to make a melee attack with the opposite end of the weapon. This attack uses the same ability modifier as the primary attack and deals 1d4 bludgeoning damage. Feature/&FeatureRoguishAcrobatTrooperTitle=Acrobat Trooper diff --git a/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt b/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt index ae3eef6262..4b1d74fd5d 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription=Aprendes dos trucos de tu elección de la lis Feat/&FeatMagicInitiateTitle=Iniciado mágico [{0}] Feat/&FeatMenacingDescription=Aumenta tu carisma en 1, hasta un máximo de 20.\n• Obtienes competencia con la habilidad o experiencia de Intimidación si ya eres competente.\n• Puedes reemplazar un ataque principal con un intento de desmoralizar a un humanoide que puedas ver. a 30 pies de usted que pueda verlo y oírlo. Realiza una prueba de Carisma (Intimidación) contra la prueba de Sabiduría (Perspicacia) del objetivo. Si tu prueba tiene éxito, el objetivo estará asustado hasta el final de tu siguiente turno. Si tu prueba falla, no podrás asustar al objetivo de esta manera durante 1 hora. Feat/&FeatMenacingTitle=Amenazador -Feat/&FeatMetamagicAdeptDescription=Aprendes dos opciones metamágicas de tu elección de la clase de hechicero y obtienes la mitad de tu bonificación de competencia redondeada en puntos de hechicería para gastar en ellas. +Feat/&FeatMetamagicAdeptDescription=Aprendes dos opciones metamágicas de tu elección de la clase de hechicero y obtienes la mitad de tu bonificación de competencia (redondeada hacia abajo) en puntos de hechicería para gastar en ella. Feat/&FeatMetamagicAdeptTitle=Adepto metamágico Feat/&FeatMobileDescription=Eres excepcionalmente rápido y ágil. Tu velocidad aumenta en 10 pies y eres inmune al terreno difícil cuando corres. Cuando realizas un ataque cuerpo a cuerpo contra una criatura, eres inmune al ataque de oportunidad de la criatura a menos que tenga inmunidad a eso. Feat/&FeatMobileTitle=Móvil diff --git a/SolastaUnfinishedBusiness/Translations/es/Others-es.txt b/SolastaUnfinishedBusiness/Translations/es/Others-es.txt index 8acc1ce9c0..53c2e87fc4 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Others-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Others-es.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription=¡{0}% de posibilidades de dejarte crecer una ba Feature/&AncestryLevelUpDraconicDescription=Tu ascendencia dracónica te da afinidad con el tipo de daño {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Puedes realizar un ataque desarmado como acción adicional. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=Artes marciales: bonificación por ataque sin armas -Feature/&AttributeModifierMonkAbundantKiDescription=Añade la mitad de tu bonificación de competencia (redondeada hacia arriba) a tu reserva de Puntos Ki. +Feature/&AttributeModifierMonkAbundantKiDescription=Añade la mitad de tu bonificación de competencia (redondeando hacia abajo) a tu reserva de Puntos Ki. Feature/&AttributeModifierMonkAbundantKiTitle=Ki abundante Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=Si fallas una tirada de salvación, puedes volver a tirarla con una bonificación igual a tu nivel de Luchador. Si lo haces, deberás utilizar la nueva tirada y no podrás volver a utilizar esta función hasta que termines un descanso largo. diff --git a/SolastaUnfinishedBusiness/Translations/es/SubClasses/RoguishAcrobat-es.txt b/SolastaUnfinishedBusiness/Translations/es/SubClasses/RoguishAcrobat-es.txt index 0d41d687c7..e4ddaa265c 100644 --- a/SolastaUnfinishedBusiness/Translations/es/SubClasses/RoguishAcrobat-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/SubClasses/RoguishAcrobat-es.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Agregas la mitad de tu bonificación de competencia a tu clase de armadura mientras empuñas un bastón con las dos manos y no llevas armadura ni armadura ligera. +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Agregas la mitad de tu bonificación de competencia (redondeando hacia abajo) a tu clase de armadura mientras empuñas un bastón con las dos manos y no llevas armadura ni armadura ligera. Feature/&AttributeModifierRoguishAcrobatProtectorTitle=Protector acróbata Feature/&FeatureRoguishAcrobatTrooperDescription=Obtienes la capacidad de usar un bastón como arma delicada y el alcance del bastón aumenta en 5 pies.\nCuando realizas la acción de ataque con un bastón, puedes usar tu acción adicional para realizar un ataque cuerpo a cuerpo con el extremo opuesto del arma. Este ataque utiliza el mismo modificador de habilidad que el ataque principal e inflige 1d4 de daño contundente. Feature/&FeatureRoguishAcrobatTrooperTitle=Soldado acróbata diff --git a/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt index 557ed59345..8cbaea8f1b 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription=Vous apprenez deux sorts mineurs de votre cho Feat/&FeatMagicInitiateTitle=Initié magique [{0}] Feat/&FeatMenacingDescription=Augmentez votre charisme de 1, jusqu'à un maximum de 20.\n• Vous gagnez la maîtrise de la compétence ou de l'expertise en intimidation si vous maîtrisez déjà.\n• Vous pouvez remplacer une attaque principale par une tentative de démoralisation d'un humanoïde que vous pouvez voir. à moins de 30 pieds de vous qui peut vous voir et vous entendre. Effectuez un test de Charisme (Intimidation) contesté par le test de Sagesse (Perspicacité) de la cible. Si votre test réussit, la cible est effrayée jusqu'à la fin de votre prochain tour. Si votre test échoue, la cible ne peut pas être effrayée de cette manière pendant 1 heure. Feat/&FeatMenacingTitle=Menaçant -Feat/&FeatMetamagicAdeptDescription=Vous apprenez deux options métamagiques de votre choix auprès de la classe de sorcier et gagnez la moitié de votre bonus de maîtrise arrondi en points de sorcellerie à dépenser. +Feat/&FeatMetamagicAdeptDescription=Vous apprenez deux options métamagiques de votre choix auprès de la classe de sorcier et gagnez la moitié de votre bonus de maîtrise (arrondi à l'inférieur) en points de sorcellerie à dépenser. Feat/&FeatMetamagicAdeptTitle=Adepte de métamagie Feat/&FeatMobileDescription=Vous êtes exceptionnellement rapide et agile. Votre vitesse augmente de 10 pieds et vous êtes immunisé contre les terrains difficiles lorsque vous vous précipitez. Lorsque vous effectuez une attaque au corps à corps contre une créature, vous êtes immunisé contre les attaques d'opportunité de la créature à moins qu'elle n'y soit immunisée. Feat/&FeatMobileTitle=Mobile diff --git a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt index 6d6f8eb3b1..8318f7ab52 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0} % de chances de laisser pousser une magnifi Feature/&AncestryLevelUpDraconicDescription=Votre ascendance draconique vous confère une affinité avec {0} types de dégâts. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Vous pouvez effectuer une frappe à mains nues comme action bonus. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=Arts martiaux – Bonus de frappe à mains nues -Feature/&AttributeModifierMonkAbundantKiDescription=Ajoutez la moitié de votre bonus de compétence (arrondi au supérieur) à votre pool de points Ki. +Feature/&AttributeModifierMonkAbundantKiDescription=Ajoutez la moitié de votre bonus de compétence (arrondi à l’inférieur) à votre pool de Ki Points. Feature/&AttributeModifierMonkAbundantKiTitle=Ki abondant Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=Si vous échouez à un jet de sauvegarde, vous pouvez le relancer avec un bonus égal à votre niveau de Combattant. Si vous le faites, vous devez utiliser le nouveau jet et vous ne pourrez plus utiliser cette fonctionnalité tant que vous n'aurez pas terminé un repos long. diff --git a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/RoguishAcrobat-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/RoguishAcrobat-fr.txt index 176cd74cd7..839ddc5d82 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/RoguishAcrobat-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/RoguishAcrobat-fr.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Vous ajoutez la moitié de votre bonus de maîtrise à votre classe d'armure lorsque vous brandissez un bâton à deux mains, et vous ne portez ni armure ni armure légère. +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Vous ajoutez la moitié de votre bonus de maîtrise (arrondi à l'inférieur) à votre classe d'armure tout en brandissant un bâton à deux mains, et vous ne portez ni armure ni armure légère. Feature/&AttributeModifierRoguishAcrobatProtectorTitle=Acrobate Protecteur Feature/&FeatureRoguishAcrobatTrooperDescription=Vous gagnez la possibilité d'utiliser un bâton comme arme de finesse et la portée du bâton augmente de 1,50 mètres.\nLorsque vous effectuez l'action Attaque avec un bâton, vous pouvez utiliser votre action bonus pour effectuer une attaque au corps à corps avec l'extrémité opposée du bâton. arme. Cette attaque utilise le même modificateur de capacité que l'attaque principale et inflige 1d4 dégâts contondants. Feature/&FeatureRoguishAcrobatTrooperTitle=Soldat acrobate diff --git a/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt b/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt index b82ffffa0c..7c71e21ac0 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription=Apprendi due trucchetti a tua scelta dalla li Feat/&FeatMagicInitiateTitle=Iniziato magico [{0}] Feat/&FeatMenacingDescription=Aumenta il tuo Carisma di 1, fino a un massimo di 20.\n• Ottieni competenza nell'abilità o esperienza Intimidazione se sei già competente.\n• Puoi sostituire un attacco principale con un tentativo di demoralizzare un umanoide che puoi vedere entro 30 piedi da te che possa vederti e sentirti. Effettua una prova di Carisma (Intimidazione) contestata dalla prova di Saggezza (Intuizione) del bersaglio. Se la tua prova ha successo, il bersaglio è spaventato fino alla fine del tuo turno successivo. Se la prova fallisce, il bersaglio non può essere spaventato da te in questo modo per 1 ora. Feat/&FeatMenacingTitle=Minaccioso -Feat/&FeatMetamagicAdeptDescription=Apprendi due opzioni metamagiche a tua scelta dalla classe dello stregone e ottieni metà del tuo bonus di competenza arrotondato in punti stregoneria da spendere su di esso. +Feat/&FeatMetamagicAdeptDescription=Apprendi due opzioni di metamagia a tua scelta dalla classe dello stregone e ottieni metà del tuo bonus di competenza (arrotondato per difetto) in punti stregoneria da spendere su di essa. Feat/&FeatMetamagicAdeptTitle=Adepto della metamagia Feat/&FeatMobileDescription=Sei eccezionalmente veloce e agile. La tua velocità aumenta di 3 metri e sei immune ai terreni difficili quando scatti. Quando effettui un attacco in mischia contro una creatura sei immune agli attacchi di opportunità da parte della creatura a meno che non abbia l'immunità a ciò. Feat/&FeatMobileTitle=Mobile diff --git a/SolastaUnfinishedBusiness/Translations/it/Others-it.txt b/SolastaUnfinishedBusiness/Translations/it/Others-it.txt index 05a6e5515b..e38cf36353 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Others-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Others-it.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0}% di possibilità di far crescere una barba m Feature/&AncestryLevelUpDraconicDescription=La tua stirpe draconica ti dà un'affinità con il tipo di danno {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Puoi effettuare un colpo senz'armi come azione bonus. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=Arti Marziali: Colpo Senz'Armi Bonus -Feature/&AttributeModifierMonkAbundantKiDescription=Aggiungi metà del tuo bonus di competenza (arrotondato per eccesso) alla tua riserva di punti Ki. +Feature/&AttributeModifierMonkAbundantKiDescription=Aggiungi metà del tuo bonus di competenza (arrotondato per difetto) alla tua riserva di punti Ki. Feature/&AttributeModifierMonkAbundantKiTitle=Ki abbondante Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=Se fallisci un tiro salvezza, puoi lanciarlo nuovamente con un bonus pari al tuo livello da Guerriero. Se lo fai, devi utilizzare il nuovo tiro e non potrai utilizzare nuovamente questo privilegio finché non avrai terminato un riposo lungo. diff --git a/SolastaUnfinishedBusiness/Translations/it/SubClasses/RoguishAcrobat-it.txt b/SolastaUnfinishedBusiness/Translations/it/SubClasses/RoguishAcrobat-it.txt index 17b174994c..b97d9f1620 100644 --- a/SolastaUnfinishedBusiness/Translations/it/SubClasses/RoguishAcrobat-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/SubClasses/RoguishAcrobat-it.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Aggiungi metà del tuo bonus di competenza alla tua classe di armatura mentre impugni un bastone ferrato in due mani e non indossi alcuna armatura o armatura leggera. +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Aggiungi metà del tuo bonus di competenza (arrotondato per difetto) alla tua classe di armatura mentre impugni un bastone ferrato in due mani e non indossi alcuna armatura o armatura leggera. Feature/&AttributeModifierRoguishAcrobatProtectorTitle=Protettore dell'acrobata Feature/&FeatureRoguishAcrobatTrooperDescription=Ottieni la capacità di utilizzare un bastone ferrato come arma di precisione e la portata del bastone ferrato aumenta di 1,5 m.\nQuando esegui l'azione Attacco con un bastone ferrato, puoi usare la tua azione bonus per effettuare un attacco in mischia con l'estremità opposta del bastone ferrato arma. Questo attacco utilizza lo stesso modificatore di caratteristica dell'attacco primario e infligge 1d4 danni contundenti. Feature/&FeatureRoguishAcrobatTrooperTitle=Soldato acrobata diff --git a/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt index 218b33c5d4..ed461c30d6 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription={0} の呪文リストから選択した 2 Feat/&FeatMagicInitiateTitle=マジック・イニシエイト [{0}] Feat/&FeatMenacingDescription=カリスマ性を 1 増加させ、最大 20 まで増やします。\n• すでに熟練している場合は、脅迫スキルまたは専門知識に習熟します。\n• 1 つの主な攻撃を、目に見える 1 人のヒューマノイドの士気をくじく試みに置き換えることができます。あなたから 30 フィート以内で、あなたの姿が見え、聞こえる場所にいます。対象の知恵(洞察力)チェックと競合するカリスマ(威圧)チェックを行う。チェックが成功した場合、ターゲットは次のターンの終わりまで怯えます。チェックに失敗した場合、ターゲットはこの方法で 1 時間あなたを怖がらせることができなくなります。 Feat/&FeatMenacingTitle=威嚇する -Feat/&FeatMetamagicAdeptDescription=あなたはソーサラークラスから選択した2つのメタマジックオプションを学び、それに費やすソーサリーポイントに切り上げられた熟練度ボーナスの半分を獲得します。 +Feat/&FeatMetamagicAdeptDescription=あなたはソーサラー クラスから選択した 2 つのメタマジック オプションを学習し、それに費やすためのソーサリー ポイントで熟練度ボーナスの半分 (端数切り捨て) を獲得します。 Feat/&FeatMetamagicAdeptTitle=メタマジックの達人 Feat/&FeatMobileDescription=あなたは並外れて速くて機敏です。あなたの移動速度は 10 フィート増加し、ダッシュ中は移動困難な地形の影響を受けません。クリーチャーに対して近接攻撃を行うと、そのクリーチャーが機会攻撃に対する耐性を持っていない限り、そのクリーチャーからの機会攻撃に対する耐性が得られます。 Feat/&FeatMobileTitle=携帯 diff --git a/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt index bb14525d60..670004c33e 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0}% の確率で立派なひげが生えてき Feature/&AncestryLevelUpDraconicDescription=あなたの竜族の祖先は、あなたに {0} のダメージ タイプへの親和性を与えます。 Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=ボーナスアクションとして素手攻撃を 1 回行うことができます。 Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=マーシャルアーツ - ボーナス素手打撃 -Feature/&AttributeModifierMonkAbundantKiDescription=熟練度ボーナスの半分(切り上げ)を Ki ポイントプールに追加します。 +Feature/&AttributeModifierMonkAbundantKiDescription=熟練度ボーナスの半分(切り捨て)を Ki ポイント プールに追加します。 Feature/&AttributeModifierMonkAbundantKiTitle=豊かな気 Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=セーヴィング スローに失敗した場合は、ファイター レベルに等しいボーナスを獲得して再ロールできます。その場合は、新しいロールを使用する必要があり、長い休憩が終了するまでこの機能を再度使用することはできません。 diff --git a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/RoguishAcrobat-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/RoguishAcrobat-ja.txt index 076c25ed7e..136140ffeb 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/RoguishAcrobat-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/RoguishAcrobat-ja.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=両手にクォータースタッフを持ち、鎧や軽装鎧を着ていないときは、熟練度ボーナスの半分が鎧クラスに追加されます。 +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=両手にクォータースタッフを持ち、鎧を着ていないか軽装甲を着用しているときに、熟練度ボーナスの半分(端数切り捨て)をアーマー クラスに追加します。 Feature/&AttributeModifierRoguishAcrobatProtectorTitle=アクロバットプロテクター Feature/&FeatureRoguishAcrobatTrooperDescription=クォータースタッフを巧みな武器として使う能力を獲得し、クォータースタッフのリーチが 5 フィート増加します。\nクォータースタッフで攻撃アクションを行う際、ボーナス アクションを使用して武器の反対側の端で近接攻撃を行うことができます。この攻撃は、主要攻撃と同じ能力修正値を使用し、1d4 の打撃ダメージを与えます。 Feature/&FeatureRoguishAcrobatTrooperTitle=アクロバット・トルーパー diff --git a/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt index 8385083bef..b7fc867f5c 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription={0} 주문 목록에서 원하는 캔트립 Feat/&FeatMagicInitiateTitle=마법 입회자 [{0}] Feat/&FeatMenacingDescription=카리스마를 1 올려 최대 20까지 높입니다.\n• 이미 숙련된 경우 위협 기술이나 전문 지식에 숙련을 얻습니다.\n• 눈에 보이는 인간형 하나의 사기를 저하시키려는 시도로 주 공격 1개를 대체할 수 있습니다. 당신을 보고 들을 수 있는 당신으로부터 30피트 이내. 대상의 지혜(통찰) 판정에 맞서 카리스마(협박) 판정을 하십시오. 체크에 성공하면 대상은 다음 턴이 끝날 때까지 겁을 먹습니다. 확인에 실패하면 대상은 1시간 동안 이런 식으로 당신 때문에 겁을 먹을 수 없습니다. Feat/&FeatMenacingTitle=위협적인 -Feat/&FeatMetamagicAdeptDescription=당신은 마법사 클래스에서 당신이 선택한 두 가지 메타마법 옵션을 배우고 그것에 소비할 마법 포인트로 반올림된 숙련도 보너스의 절반을 얻습니다. +Feat/&FeatMetamagicAdeptDescription=마법사 직업에서 원하는 두 가지 메타매직 옵션을 배우고, 숙련도 보너스의 절반(소수점 이하 반올림)을 마법 포인트로 얻어 해당 마법에 사용할 수 있습니다. Feat/&FeatMetamagicAdeptTitle=메타마술의 달인 Feat/&FeatMobileDescription=당신은 매우 빠르고 민첩합니다. 속도가 10피트 증가하고 돌진할 때 어려운 지형에 면역이 됩니다. 당신이 생물에 대해 근접 공격을 할 때, 당신은 생물이 기회 공격에 면역을 가지고 있지 않는 한 그 생물의 기회 공격에 면역입니다. Feat/&FeatMobileTitle=이동하는 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt index 5cd5595271..a8af8c3f4e 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription=멋진 수염이 자랄 확률은 {0}%입니다! Feature/&AncestryLevelUpDraconicDescription=귀하의 용족 조상은 귀하에게 {0} 피해 유형과의 친화성을 부여합니다. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=보너스 행동으로 비무장 공격을 1회 할 수 있습니다. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=무술 - 보너스 비무장 공격 -Feature/&AttributeModifierMonkAbundantKiDescription=Ki 포인트 풀에 숙련도 보너스(반올림)의 절반을 추가하세요. +Feature/&AttributeModifierMonkAbundantKiDescription=Ki 포인트 풀에 숙련도 보너스의 절반(반내림)을 추가하세요. Feature/&AttributeModifierMonkAbundantKiTitle=풍부한 기 Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=내성 굴림에 실패하면 파이터 레벨과 동일한 보너스를 받아 다시 굴릴 수 있습니다. 그럴 경우 새 롤을 사용해야 하며, 긴 휴식을 마칠 때까지 이 기능을 다시 사용할 수 없습니다. diff --git a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/RoguishAcrobat-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/RoguishAcrobat-ko.txt index 04435137f2..db0fd37006 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/RoguishAcrobat-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/RoguishAcrobat-ko.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=육척봉을 양손으로 휘두르며 갑옷이나 경갑을 착용하지 않은 상태에서 갑옷 클래스에 숙련도 보너스의 절반을 추가합니다. +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=육척봉을 양손으로 휘두르며 갑옷이나 경갑을 착용하지 않은 상태에서 갑옷 클래스에 숙련도 보너스의 절반(반내림)을 추가합니다. Feature/&AttributeModifierRoguishAcrobatProtectorTitle=아크로바트 수호자 Feature/&FeatureRoguishAcrobatTrooperDescription=육척봉을 고급 무기로 사용할 수 있는 능력을 얻고 육척봉의 도달 범위가 5피트 증가합니다.\n육척봉으로 공격 행동을 취하는 경우 보너스 행동을 사용하여 육척봉의 반대쪽 끝으로 근접 공격을 할 수 있습니다. 무기. 이 공격은 기본 공격과 동일한 능력 수정자를 사용하며 1d4의 타격 피해를 줍니다. Feature/&FeatureRoguishAcrobatTrooperTitle=아크로바트 기병 diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt index a1488a75b7..c52fc312f0 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt @@ -58,7 +58,7 @@ Feat/&FeatMagicInitiateDescription=Você aprende dois truques à sua escolha na Feat/&FeatMagicInitiateTitle=Iniciado Mágico [{0}] Feat/&FeatMenacingDescription=Aumente seu Carisma em 1, até um máximo de 20.\n• Você ganha proficiência com a habilidade ou experiência em Intimidação se já for proficiente.\n• Você pode substituir um ataque principal por uma tentativa de desmoralizar um humanoide que você possa ver. dentro de 30 pés de você que possa ver e ouvir você. Faça um teste de Carisma (Intimidação) contestado pelo teste de Sabedoria (Intuição) do alvo. Se seu teste for bem-sucedido, o alvo ficará assustado até o final do seu próximo turno. Se seu teste falhar, o alvo não poderá ficar assustado com você dessa forma por 1 hora. Feat/&FeatMenacingTitle=Ameaçador -Feat/&FeatMetamagicAdeptDescription=Você aprende duas opções metamágicas de sua escolha na classe feiticeiro e ganha metade de seu bônus de proficiência arredondado em pontos de feitiçaria para gastar nisso. +Feat/&FeatMetamagicAdeptDescription=Você aprende duas opções metamágicas de sua escolha da classe feiticeiro e ganha metade de seu bônus de proficiência (arredondado para baixo) em pontos de feitiçaria para gastar nela. Feat/&FeatMetamagicAdeptTitle=Adepto Metamágico Feat/&FeatMobileDescription=Você é excepcionalmente rápido e ágil. Sua velocidade aumenta em 3 metros e você fica imune a terrenos difíceis ao correr. Quando você faz um ataque corpo a corpo contra uma criatura, você fica imune ao ataque de oportunidade da criatura, a menos que ela tenha imunidade a isso. Feat/&FeatMobileTitle=Móvel diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt index 7cd1cdf07f..e46b2e2307 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0}% de chances de deixar crescer uma barba glor Feature/&AncestryLevelUpDraconicDescription=Sua ancestralidade dracônica lhe dá afinidade com o tipo de dano {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Você pode realizar um ataque desarmado como uma ação bônus. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=Artes Marciais - Ataque Desarmado Bônus -Feature/&AttributeModifierMonkAbundantKiDescription=Adicione metade do seu bônus de proficiência (arredondado) ao seu conjunto de Pontos Ki. +Feature/&AttributeModifierMonkAbundantKiDescription=Adicione metade do seu bônus de proficiência (arredondado para baixo) ao seu conjunto de Pontos Ki. Feature/&AttributeModifierMonkAbundantKiTitle=Ki abundante Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=Se você falhar em um teste de resistência, poderá jogá-lo novamente com um bônus igual ao seu nível de Lutador. Se fizer isso, você deverá usar o novo teste e não poderá usar esse recurso novamente até terminar um descanso longo. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/RoguishAcrobat-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/RoguishAcrobat-pt-BR.txt index 2a2cef9885..926b8218a4 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/RoguishAcrobat-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/RoguishAcrobat-pt-BR.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Você adiciona metade do seu bônus de proficiência à sua classe de armadura enquanto empunha um bordão com as duas mãos e não está usando nenhuma armadura ou armadura leve. +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=Você adiciona metade do seu bônus de proficiência (arredondado para baixo) à sua classe de armadura enquanto empunha um cajado com as duas mãos, e não está usando armadura alguma ou está usando armadura leve. Feature/&AttributeModifierRoguishAcrobatProtectorTitle=Protetor Acrobata Feature/&FeatureRoguishAcrobatTrooperDescription=Você ganha a habilidade de usar um bordão como arma de precisão e o alcance do bordão aumenta em 1,5 m.\nQuando você realiza a ação de Ataque com um bordão, você pode usar sua ação bônus para fazer um ataque corpo a corpo com a extremidade oposta do bordão. arma. Este ataque usa o mesmo modificador de habilidade do ataque primário e causa 1d4 de dano de concussão. Feature/&FeatureRoguishAcrobatTrooperTitle=Soldado Acrobata From 659fcc2997972feda805fe26e0d56b3ac5392829 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 11:50:24 -0700 Subject: [PATCH 06/52] fix #4684 --- SolastaUnfinishedBusiness/Feats/OtherFeats.cs | 4 ++-- .../Patches/RulesetCharacterPatcher.cs | 22 +++++++++++++++++++ .../Builders/InvocationsBuilders.cs | 2 +- .../Subclasses/_CommonBuilders.cs | 4 ++-- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/SolastaUnfinishedBusiness/Feats/OtherFeats.cs b/SolastaUnfinishedBusiness/Feats/OtherFeats.cs index 7026b50997..355967de25 100644 --- a/SolastaUnfinishedBusiness/Feats/OtherFeats.cs +++ b/SolastaUnfinishedBusiness/Feats/OtherFeats.cs @@ -2302,7 +2302,7 @@ public IEnumerator OnTryAlterOutcomeSavingThrow( FeatureDefinitionMagicAffinityBuilder .Create($"MagicAffinity{FeatMageSlayerName}") .SetGuiPresentation(FeatMageSlayerName, Category.Feat) - .SetConcentrationModifiers(ConcentrationAffinity.Disadvantage, 0) + .SetConcentrationModifiers(ConcentrationAffinity.Disadvantage) .AddToDB()) .SetSpecialInterruptions(ConditionInterruption.AnyBattleTurnEnd) .AddToDB())) @@ -2864,7 +2864,7 @@ private static FeatDefinition BuildWarcaster() .SetGuiPresentation(FeatWarCaster, Category.Feat) .SetCastingModifiers(0, SpellParamsModifierType.FlatValue, 0, SpellParamsModifierType.None) - .SetConcentrationModifiers(ConcentrationAffinity.Advantage, 0) + .SetConcentrationModifiers(ConcentrationAffinity.Advantage) .SetHandsFullCastingModifiers(true, true, true) .AddToDB()) .SetMustCastSpellsPrerequisite() diff --git a/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs index b5f382f246..8bf96dabcf 100644 --- a/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs @@ -1754,6 +1754,28 @@ private static void RollConcentrationCheck( __instance.EnumerateFeaturesToBrowse( __instance.FeaturesToBrowse, __instance.FeaturesOrigin); + // supports mind sharpener infusion + if (__instance.CharacterInventory.InventorySlotsByName + .TryGetValue(EquipmentDefinitions.SlotTypeTorso, out var inventorySlot)) + { + var equipedItem = inventorySlot.EquipedItem; + + if (equipedItem != null) + { + foreach (var featureDefinition in equipedItem.DynamicItemProperties + .Select(x => x.FeatureDefinition) + .OfType() + .OfType()) + { + var featureOrigin = new FeatureOrigin(FeatureSourceType.CharacterFeature, + featureDefinition.Name, featureDefinition, string.Empty); + + __instance.FeaturesToBrowse.Add(featureDefinition); + __instance.FeaturesOrigin.Add(featureDefinition, featureOrigin); + } + } + } + foreach (var key in __instance.FeaturesToBrowse) { var affinityProvider = key as ISpellCastingAffinityProvider; diff --git a/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs b/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs index ac7e2cc2ae..ee582c9b32 100644 --- a/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs +++ b/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs @@ -187,7 +187,7 @@ internal static InvocationDefinition BuildEldritchMind() FeatureDefinitionMagicAffinityBuilder .Create("MagicAffinityInvocationEldritchMind") .SetGuiPresentation(NAME, Category.Invocation) - .SetConcentrationModifiers(ConcentrationAffinity.Advantage, 0) + .SetConcentrationModifiers(ConcentrationAffinity.Advantage) .AddToDB()) .AddToDB(); } diff --git a/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs b/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs index beaf70e2ae..95133a134e 100644 --- a/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs +++ b/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs @@ -82,7 +82,7 @@ internal static class CommonBuilders FeatureDefinitionMagicAffinityBuilder .Create("MagicAffinityCasterFightingCombatMagic") .SetGuiPresentation(Category.Feature) - .SetConcentrationModifiers(ConcentrationAffinity.Advantage, 0) + .SetConcentrationModifiers(ConcentrationAffinity.Advantage) .SetHandsFullCastingModifiers(true, true, true) .AddToDB(); @@ -90,7 +90,7 @@ internal static class CommonBuilders FeatureDefinitionMagicAffinityBuilder .Create("MagicAffinityCasterFightingCombatMagicImproved") .SetGuiPresentation(Category.Feature) - .SetConcentrationModifiers(ConcentrationAffinity.Advantage, 0) + .SetConcentrationModifiers(ConcentrationAffinity.Advantage) .SetHandsFullCastingModifiers(true, true, true) .SetCastingModifiers(0, SpellParamsModifierType.None, 0, SpellParamsModifierType.FlatValue, true) .AddToDB(); From fc9dcefce71d5677d407ee6ec958f296320deac1 Mon Sep 17 00:00:00 2001 From: zxcvbnm61004 Date: Sat, 8 Jun 2024 03:10:29 +0800 Subject: [PATCH 07/52] Update OtherFeats-zh-CN.txt Signed-off-by: zxcvbnm61004 --- .../Translations/zh-CN/Feats/OtherFeats-zh-CN.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt index 966022323b..1951c09a1e 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt @@ -58,8 +58,8 @@ Feat/&FeatMagicInitiateDescription=你从 {0} 法术列表中学习了两个你 Feat/&FeatMagicInitiateTitle=魔法学徒【{0}】 Feat/&FeatMenacingDescription=你的魅力 +1,上限为 20。\n• 你获得威吓熟练项,如果已有熟练项,则获得专精。\n• 替换一次主要攻击,你可以尝试挫败距离你 30 尺内可以看到并听到你的一个类人生物的士气。进行魅力(威吓)检定,与目标的感知(洞悉)检定进行对抗。如果你的检定成功,目标就会受到恐慌,直到你的下一回合结束。如果你检定失败,目标在 1 小时内无法通过这种方式被你恐慌。 Feat/&FeatMenacingTitle=威胁 -Feat/&FeatMetamagicAdeptDescription=你从术士职业中学习了两种你选择的超魔,并获得一半熟练加值的术法点,用于释放超魔。 -Feat/&FeatMetamagicAdeptTitle=超魔专家 +Feat/&FeatMetamagicAdeptDescription=你从术士职业中学习了两种你选择的超魔,并获得一半熟练加值(向下取整)的术法点,用于释放超魔。 +Feat/&FeatMetamagicAdeptTitle=超魔法导师 Feat/&FeatMobileDescription=你非常敏捷和灵活。你的速度增加 10 尺,并且你在冲刺时免疫困难地形。当你对一个生物进行近战攻击时,你免疫该生物的借机攻击,除非它对此免疫。 Feat/&FeatMobileTitle=灵活 Feat/&FeatMonkInitiateDescription=你已经学会了武僧的一些能力。你获得等于你的熟练加值的气点,你可以使用这些点数来释放疾风连击、坚强防御或飞檐走壁。 From 4967a1be7e1bf90dc738d26b9f2d3e3c7b38a7b9 Mon Sep 17 00:00:00 2001 From: zxcvbnm61004 Date: Sat, 8 Jun 2024 03:11:18 +0800 Subject: [PATCH 08/52] Update Others-zh-CN.txt Signed-off-by: zxcvbnm61004 --- SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt index f0515eef87..a83b2f465d 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0}% 的机会长出漂亮的胡子! Feature/&AncestryLevelUpDraconicDescription=你的龙类血统赋予你对 {0} 伤害类型的亲和。 Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=你可以进行一次徒手攻击作为附赠动作。 Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=武术 - 额外徒手打击 -Feature/&AttributeModifierMonkAbundantKiDescription=将一半的熟练加值(向上舍入)添加到你的气池中。 +Feature/&AttributeModifierMonkAbundantKiDescription=将一半的熟练加值(向下取整)添加到你的气池中。 Feature/&AttributeModifierMonkAbundantKiTitle=气量充沛 Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=如果你的豁免检定失败,你可以重投,并获得相当于你的战士等级的加值。如果你这样做,则必须使用新的骰子,并且在完成长休之前不能再次使用此特性。 From 6abbf68546d7fa895cc844c1a5513bc83f376c17 Mon Sep 17 00:00:00 2001 From: zxcvbnm61004 Date: Sat, 8 Jun 2024 03:14:00 +0800 Subject: [PATCH 09/52] Update RoguishAcrobat-zh-CN.txt Signed-off-by: zxcvbnm61004 --- .../Translations/zh-CN/SubClasses/RoguishAcrobat-zh-CN.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishAcrobat-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishAcrobat-zh-CN.txt index 943eac926c..bfa3890366 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishAcrobat-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishAcrobat-zh-CN.txt @@ -1,4 +1,4 @@ -Feature/&AttributeModifierRoguishAcrobatProtectorDescription=当你用两只手挥舞长棍时,你将一半的熟练加值加到你的护甲等级上,并且你没有穿着盔甲或轻甲。 +Feature/&AttributeModifierRoguishAcrobatProtectorDescription=当你用两只手挥舞长棍时,你将一半的熟练加值(向下取整)加到你的护甲等级上,并且你没有穿着盔甲或轻甲。 Feature/&AttributeModifierRoguishAcrobatProtectorTitle=特技保护者 Feature/&FeatureRoguishAcrobatTrooperDescription=你获得了使用长棍作为灵巧武器的能力,长棍的攻击距离增加 5 尺。\n当你使用长棍进行攻击动作时,你可以使用附赠动作用长棍的另一端作为近战攻击武器。这次攻击使用与主要攻击相同的属性调整值并造成 1d4 钝击伤害。 Feature/&FeatureRoguishAcrobatTrooperTitle=特技尖兵 From 972e8480412e4518ad792792723eb96e29f6273a Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 12:23:45 -0700 Subject: [PATCH 10/52] fix #4680 --- .../Subclasses/DomainTempest.cs | 83 +++---------------- 1 file changed, 10 insertions(+), 73 deletions(-) diff --git a/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs b/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs index df1f1e5a2c..7e87667776 100644 --- a/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs +++ b/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs @@ -407,8 +407,7 @@ public IEnumerator OnAttackBeforeHitPossibleOnMeOrAlly( } private sealed class CustomBehaviorDestructiveWrath(FeatureDefinitionPower powerDestructiveWrath) - : IForceMaxDamageTypeDependent, IModifyAdditionalDamage, IActionFinishedByMe, - IMagicEffectBeforeHitConfirmedOnEnemy, IPhysicalAttackBeforeHitConfirmedOnEnemy + : IForceMaxDamageTypeDependent, IActionFinishedByMe { private bool _isValid; @@ -429,88 +428,26 @@ public IEnumerator OnActionFinishedByMe(CharacterAction action) var rulesetAttacker = action.ActingCharacter.RulesetCharacter.GetEffectControllerOrSelf(); var usablePower = PowerProvider.Get(powerDestructiveWrath, rulesetAttacker); + rulesetAttacker.LogCharacterUsedPower(powerDestructiveWrath); rulesetAttacker.UsePower(usablePower); } public bool IsValid(RulesetActor rulesetActor, DamageForm damageForm) { - return _isValid && damageForm.DamageType is DamageTypeLightning or DamageTypeThunder; - } - - public IEnumerator OnMagicEffectBeforeHitConfirmedOnEnemy( - GameLocationBattleManager battleManager, - GameLocationCharacter attacker, - GameLocationCharacter defender, - ActionModifier actionModifier, - RulesetEffect rulesetEffect, - List actualEffectForms, - bool firstTarget, - bool criticalHit) - { - Validate(attacker.RulesetCharacter, actualEffectForms); - - yield break; - } - - public void ModifyAdditionalDamage( - GameLocationCharacter attacker, - GameLocationCharacter defender, - RulesetAttackMode attackMode, - FeatureDefinitionAdditionalDamage featureDefinitionAdditionalDamage, - List actualEffectForms, - ref DamageForm additionalDamageForm) - { - var damageType = GetAdditionalDamageType(attacker, additionalDamageForm, featureDefinitionAdditionalDamage); - var rulesetAttacker = attacker.RulesetCharacter; - var usablePower = PowerProvider.Get(powerDestructiveWrath, rulesetAttacker); - var isValid = rulesetAttacker.GetRemainingUsesOfPower(usablePower) > 0 && - rulesetAttacker.IsToggleEnabled((ActionDefinitions.Id)ExtraActionId.DestructiveWrathToggle) && - damageType is DamageTypeLightning or DamageTypeThunder; - - if (!isValid) + if (rulesetActor is not RulesetCharacter rulesetCharacter) { - return; + return false; } - _isValid = true; - rulesetAttacker.LogCharacterUsedPower(powerDestructiveWrath); - } - - public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( - GameLocationBattleManager battleManager, - GameLocationCharacter attacker, - GameLocationCharacter defender, - ActionModifier actionModifier, - RulesetAttackMode attackMode, - bool rangedAttack, - AdvantageType advantageType, - List actualEffectForms, - bool firstTarget, - bool criticalHit) - { - Validate(attacker.RulesetCharacter, actualEffectForms); - - yield break; - } - - private void Validate( - RulesetCharacter rulesetAttacker, - // ReSharper disable once ParameterTypeCanBeEnumerable.Local - List actualEffectForms) - { + var rulesetAttacker = rulesetCharacter.GetEffectControllerOrSelf(); var usablePower = PowerProvider.Get(powerDestructiveWrath, rulesetAttacker); + var isValid = rulesetAttacker!.GetRemainingUsesOfPower(usablePower) > 0 && + rulesetAttacker.IsToggleEnabled((ActionDefinitions.Id)ExtraActionId.DestructiveWrathToggle) && + damageForm.DamageType is DamageTypeLightning or DamageTypeThunder; - _isValid = - rulesetAttacker.GetRemainingUsesOfPower(usablePower) > 0 && - rulesetAttacker.IsToggleEnabled((ActionDefinitions.Id)ExtraActionId.DestructiveWrathToggle) && - actualEffectForms.Any(x => - x.FormType == EffectForm.EffectFormType.Damage && - x.DamageForm.DamageType is DamageTypeLightning or DamageTypeThunder); + _isValid = _isValid || isValid; - if (_isValid) - { - rulesetAttacker.LogCharacterUsedPower(powerDestructiveWrath); - } + return isValid; } } From 435393e9712d35439f312fe6ba06d76de6ff74f0 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 15:49:40 -0700 Subject: [PATCH 11/52] fix #4679 --- .../Behaviors/Specific/ActionSwitching.cs | 24 +++----------- .../Specific/AttackAfterMagicEffect.cs | 33 +++++++++++++++---- .../Patches/GameLocationCharacterPatcher.cs | 2 +- .../Spells/SpellBuildersCantrips.cs | 6 ++-- 4 files changed, 35 insertions(+), 30 deletions(-) diff --git a/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs b/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs index 37f1781d53..18fa6cccc7 100644 --- a/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs +++ b/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs @@ -269,26 +269,12 @@ internal static void CheckIfActionSwitched( return; } - //supports for action switching interaction with war magic and MetamagicQuickenedSpell - if (actionParams.activeEffect is RulesetEffectSpell rulesetEffectSpell) + //supports for action switching interaction with MetamagicQuickenedSpell + //you can only cast cantrips after quicken a spell + if (actionParams.activeEffect is RulesetEffectSpell rulesetEffectSpell && + rulesetEffectSpell.MetamagicOption == MetamagicQuickenedSpell) { - if (rulesetEffectSpell.MetamagicOption == MetamagicQuickenedSpell) - { - // ensure we block double dip on bonus spells if metamagic is present - character.UsedBonusSpell = true; - character.UsedMainSpell = true; - } - - // ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault - switch (actionParams.ActionDefinition.ActionType) - { - case ActionDefinitions.ActionType.Main when rulesetEffectSpell.SpellDefinition.SpellLevel > 0: - character.UsedBonusSpell = true; - break; - case ActionDefinitions.ActionType.Bonus: - character.UsedMainSpell = true; - break; - } + character.UsedMainSpell = true; } var type = actionParams.ActionDefinition.ActionType; diff --git a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs index 6c0043bc69..2f9e3ae3c8 100644 --- a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs +++ b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs @@ -9,20 +9,39 @@ namespace SolastaUnfinishedBusiness.Behaviors.Specific; internal sealed class AttackAfterMagicEffect { - internal const string AttackCantrip = "AttackCantrip"; - + private const string AttackCantrip = "AttackCantrip"; private const RollOutcome MinOutcomeToAttack = RollOutcome.Success; private const RollOutcome MinSaveOutcomeToAttack = RollOutcome.Failure; - internal static readonly AttackAfterMagicEffect Marker = new(); + private static readonly HashSet RegisteredSpells = []; - internal static void MaybeMarkUsedMainCantrip(GameLocationCharacter character, CharacterActionParams actionParams) + internal AttackAfterMagicEffect(SpellDefinition spellDefinition) { - if (actionParams.AttackMode != null && - actionParams.AttackMode.AttackTags.Contains(AttackCantrip)) + RegisteredSpells.Add(spellDefinition); + } + + internal static void HandleAttackAfterMagicEffect(GameLocationCharacter character, + CharacterActionParams actionParams) + { + if (actionParams.AttackMode == null || + !actionParams.AttackMode.AttackTags.Contains(AttackCantrip)) { - character.UsedMainCantrip = true; + return; } + + character.UsedMainCantrip = true; + + //supports for attack cantrips interaction with MetamagicQuickenedSpell + //you can only cast cantrips after quicken a spell + if (!character.RulesetCharacter.SpellsCastByMe.Any(x => + x.MetamagicOption == MetamagicQuickenedSpell && + RegisteredSpells.Contains(x.SpellDefinition))) + { + return; + } + + character.UsedMainSpell = true; + character.SpendActionType(ActionDefinitions.ActionType.Bonus); } internal static bool CanAttack([NotNull] GameLocationCharacter caster, GameLocationCharacter target) diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs index 401e87baed..748edf7a50 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs @@ -404,7 +404,7 @@ public static void Postfix( ActionDefinitions.ActionScope scope) { //PATCH: support for `AttackAfterMagicEffect` - AttackAfterMagicEffect.MaybeMarkUsedMainCantrip(__instance, actionParams); + AttackAfterMagicEffect.HandleAttackAfterMagicEffect(__instance, actionParams); //PATCH: support for `IReplaceAttackWithCantrip` ReplaceAttackWithCantrip.AllowAttacksAfterCantrip(__instance, actionParams, scope); diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs index c7df142ac7..2f3c3c36bd 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs @@ -616,7 +616,7 @@ internal static SpellDefinition BuildSunlightBlade() .AddToDB(); spell.AddCustomSubFeatures( - AttackAfterMagicEffect.Marker, + new AttackAfterMagicEffect(spell), new UpgradeSpellRangeBasedOnWeaponReach(spell)); return spell; @@ -870,7 +870,7 @@ internal static SpellDefinition BuildBoomingBlade() .AddToDB(); spell.AddCustomSubFeatures( - AttackAfterMagicEffect.Marker, + new AttackAfterMagicEffect(spell), new UpgradeSpellRangeBasedOnWeaponReach(spell)); return spell; @@ -1045,7 +1045,7 @@ internal static SpellDefinition BuildResonatingStrike() powerResonatingStrike.AddCustomSubFeatures(customBehavior); spell.AddCustomSubFeatures( customBehavior, - AttackAfterMagicEffect.Marker, + new AttackAfterMagicEffect(spell), new UpgradeSpellRangeBasedOnWeaponReach(spell)); return spell; From 1e6b368f847e47fa5629678ec0f1eaf0754092c7 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 16:10:54 -0700 Subject: [PATCH 12/52] fix #4682 --- SolastaUnfinishedBusiness/Models/FixesContext.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SolastaUnfinishedBusiness/Models/FixesContext.cs b/SolastaUnfinishedBusiness/Models/FixesContext.cs index 06e43417e2..1e4950c76f 100644 --- a/SolastaUnfinishedBusiness/Models/FixesContext.cs +++ b/SolastaUnfinishedBusiness/Models/FixesContext.cs @@ -663,6 +663,11 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield break; } + if (defender.RulesetActor.HasConditionOfTypeOrSubType(ConditionStunned)) + { + yield break; + } + var rulesetAttacker = action.ActingCharacter.RulesetCharacter; if (rulesetAttacker.GetRemainingPowerUses(FeatureDefinitionPowers.PowerMonkStunningStrike) == 0) @@ -695,9 +700,12 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield break; } + rulesetAttacker.ToggledPowersOn.Remove( + FeatureDefinitionPowers.PowerMonkStunningStrike.AutoActivationPowerTag); + var wayOfZenArcheryLevels = rulesetAttacker.GetSubclassLevel(Monk, WayOfZenArchery.Name); - // Zen Archery get stunning strike with bows at 6 and Distant Hand with bows at 11 + // Zen Archery get stunning strike with bows at 6 if (!ValidatorsWeapon.IsMelee(attackMode) && (wayOfZenArcheryLevels < WayOfZenArchery.StunningStrikeWithBowAllowedLevel || !ValidatorsCharacter.HasBowWithoutArmor(rulesetAttacker))) From 91cf59fbf4142f21d27ee79d0c099863c79dc7fc Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 18:51:26 -0700 Subject: [PATCH 13/52] fix Pulse Wave spell to offer push/pull options as well as increase distance on upcasting tweak spells SFX --- .../UnfinishedBusinessBlueprints/Assets.txt | 2 + .../ConditionIntellectFortress.json | 6 +- .../ConditionKineticJaunt.json | 6 +- .../SpellDefinition/IntellectFortress.json | 8 +- .../SpellDefinition/PulseWave.json | 38 +- .../SpellDefinition/PulseWavePull.json | 379 ++++++++++++++++++ .../SpellDefinition/PulseWavePush.json | 379 ++++++++++++++++++ .../Api/DatabaseHelper-RELEASE.cs | 12 +- .../Spells/SpellBuildersLevel02.cs | 1 + .../Spells/SpellBuildersLevel03.cs | 217 +++++++--- .../Translations/de/Spells/Spells03-de.txt | 6 +- .../Translations/en/Spells/Spells03-en.txt | 6 +- .../Translations/es/Spells/Spells03-es.txt | 6 +- .../Translations/fr/Spells/Spells03-fr.txt | 6 +- .../Translations/it/Spells/Spells03-it.txt | 6 +- .../Translations/ja/Spells/Spells03-ja.txt | 6 +- .../Translations/ko/Spells/Spells03-ko.txt | 6 +- .../pt-BR/Spells/Spells03-pt-BR.txt | 6 +- .../Translations/ru/Spells/Spells03-ru.txt | 6 +- .../zh-CN/Spells/Spells03-zh-CN.txt | 6 +- 20 files changed, 1024 insertions(+), 84 deletions(-) create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePull.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePush.json diff --git a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt index 7902d253ce..8069252c5e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt +++ b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt @@ -11759,6 +11759,8 @@ PsionicBlast SpellDefinition SpellDefinition 6a0a898a-721a-5d5d-8375-ddb854508fc PsychicLance SpellDefinition SpellDefinition fff99143-9ef0-55fa-acd9-b0f52c733ff6 PsychicWhip SpellDefinition SpellDefinition d5f035f9-1550-509c-b809-526e8e8e87d4 PulseWave SpellDefinition SpellDefinition 71a547b1-f108-54be-95ee-56263814b30b +PulseWavePull SpellDefinition SpellDefinition d73ffef6-a447-5003-b21e-ba2115a2fc51 +PulseWavePush SpellDefinition SpellDefinition 244c87d2-5dfc-53fa-8603-fb3635bd38e5 RadiantMotes SpellDefinition SpellDefinition ff59b2b4-3fd1-55c2-a7ab-7c6c5b004633 ResonatingStrike SpellDefinition SpellDefinition c8ecadb8-8b2a-57dd-93dd-41f6557ef52d ReverseGravity SpellDefinition SpellDefinition 8589da03-628b-5f85-84fd-9198418e2b8f diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionIntellectFortress.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionIntellectFortress.json index e1e11ad133..8dfe41f94e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionIntellectFortress.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionIntellectFortress.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "9c1efbc9a63159c408219632d84eda30", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionKineticJaunt.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionKineticJaunt.json index 6c4ba4f484..7022bee582 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionKineticJaunt.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionKineticJaunt.json @@ -48,9 +48,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "433a9203b962dc349b8463b08ba58fe3", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/IntellectFortress.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/IntellectFortress.json index 1af541066a..8a49f038b3 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/IntellectFortress.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/IntellectFortress.json @@ -127,7 +127,7 @@ "$type": "EffectParticleParameters, Assembly-CSharp", "casterParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "623efe782aaa3a84fbd91053c5fd1b39", + "m_AssetGUID": "fc7fd85397611bb48993fdb2b30ff978", "m_SubObjectName": "", "m_SubObjectType": "" }, @@ -175,7 +175,7 @@ }, "impactParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", + "m_AssetGUID": "f81fd5b28c470d347a62f87c715f2ad1", "m_SubObjectName": "", "m_SubObjectType": "" }, @@ -267,13 +267,13 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "499a6891e29b20d44a372c4728e9d26b", + "m_AssetGUID": "", "m_SubObjectName": "", "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "5e46102198fad554587b73639eee3b36", + "m_AssetGUID": "", "m_SubObjectName": "", "m_SubObjectType": "" }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWave.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWave.json index 9339dc5ea0..26f5eba3af 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWave.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWave.json @@ -1,7 +1,10 @@ { "$type": "SpellDefinition, Assembly-CSharp", - "spellsBundle": false, - "subspellsList": [], + "spellsBundle": true, + "subspellsList": [ + "Definition:PulseWavePush:244c87d2-5dfc-53fa-8603-fb3635bd38e5", + "Definition:PulseWavePull:d73ffef6-a447-5003-b21e-ba2115a2fc51" + ], "compactSubspellsTooltip": false, "implemented": true, "schoolOfMagic": "SchoolEvocation", @@ -132,6 +135,31 @@ }, "hasFilterId": false, "filterId": 0 + }, + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Motion", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "motionForm": { + "$type": "MotionForm, Assembly-CSharp", + "type": "DragToOrigin", + "distance": 3, + "forceTurnTowardsSourceCharacterAfterPush": false, + "forceSourceCharacterTurnTowardsTargetAfterPush": false + }, + "hasFilterId": false, + "filterId": 0 } ], "specialFormsDescription": "", @@ -160,7 +188,7 @@ "$type": "EffectParticleParameters, Assembly-CSharp", "casterParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "81dc5e854a40ec74fb48b370b138e9a6", + "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", "m_SubObjectName": "", "m_SubObjectType": "" }, @@ -196,7 +224,7 @@ }, "zoneParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "2c0d4e20e73fc6e478d2b03871821bc2", + "m_AssetGUID": "", "m_SubObjectName": "", "m_SubObjectType": "" }, @@ -208,7 +236,7 @@ }, "impactParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "288f328d9d10d774f8d7d39f181660a0", + "m_AssetGUID": "", "m_SubObjectName": "", "m_SubObjectType": "" }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePull.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePull.json new file mode 100644 index 0000000000..1430ffccb5 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePull.json @@ -0,0 +1,379 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolEvocation", + "spellLevel": 3, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": false, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Self", + "rangeParameter": 0, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Cone", + "itemSelectionType": "None", + "targetParameter": 6, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": true, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "All", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": true, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 12, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "HalfDamage", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 6, + "dieType": "D6", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageForce", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + }, + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Motion", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "motionForm": { + "$type": "MotionForm, Assembly-CSharp", + "type": "DragToOrigin", + "distance": 3, + "forceTurnTowardsSourceCharacterAfterPush": false, + "forceSourceCharacterTurnTowardsTargetAfterPush": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 1, + "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": "81dc5e854a40ec74fb48b370b138e9a6", + "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": "2c0d4e20e73fc6e478d2b03871821bc2", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "288f328d9d10d774f8d7d39f181660a0", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "aiParameters": { + "$type": "SpellAIParameters, Assembly-CSharp", + "learnPriority": "Low", + "preparePriority": "Low" + }, + "concentrationAction": "None", + "verboseComponent": true, + "somaticComponent": true, + "materialComponentType": "None", + "specificMaterialComponentTag": "Diamond", + "specificMaterialComponentCostGp": 100, + "specificMaterialComponentConsumed": true, + "terminateOnItemUnequip": false, + "displayConditionDuration": false, + "vocalSpellSemeType": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&PulseWavePullTitle", + "description": "Spell/&PulseWavePullDescription", + "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": "d73ffef6-a447-5003-b21e-ba2115a2fc51", + "contentPack": 9999, + "name": "PulseWavePull" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePush.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePush.json new file mode 100644 index 0000000000..f6f51dc02a --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PulseWavePush.json @@ -0,0 +1,379 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolEvocation", + "spellLevel": 3, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": false, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Self", + "rangeParameter": 0, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Cone", + "itemSelectionType": "None", + "targetParameter": 6, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": true, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "All", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": true, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 12, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "HalfDamage", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 6, + "dieType": "D6", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageForce", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + }, + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Motion", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "motionForm": { + "$type": "MotionForm, Assembly-CSharp", + "type": "PushFromOrigin", + "distance": 3, + "forceTurnTowardsSourceCharacterAfterPush": false, + "forceSourceCharacterTurnTowardsTargetAfterPush": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 1, + "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": "81dc5e854a40ec74fb48b370b138e9a6", + "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": "2c0d4e20e73fc6e478d2b03871821bc2", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "288f328d9d10d774f8d7d39f181660a0", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "aiParameters": { + "$type": "SpellAIParameters, Assembly-CSharp", + "learnPriority": "Low", + "preparePriority": "Low" + }, + "concentrationAction": "None", + "verboseComponent": true, + "somaticComponent": true, + "materialComponentType": "None", + "specificMaterialComponentTag": "Diamond", + "specificMaterialComponentCostGp": 100, + "specificMaterialComponentConsumed": true, + "terminateOnItemUnequip": false, + "displayConditionDuration": false, + "vocalSpellSemeType": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&PulseWavePushTitle", + "description": "Spell/&PulseWavePushDescription", + "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": "244c87d2-5dfc-53fa-8603-fb3635bd38e5", + "contentPack": 9999, + "name": "PulseWavePush" +} \ No newline at end of file diff --git a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs index 18a05097ba..c6d4e9a51d 100644 --- a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs +++ b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs @@ -9,12 +9,6 @@ namespace SolastaUnfinishedBusiness.Api; internal static partial class DatabaseHelper { - internal static class FeatureDefinitionMoveThroughEnemyModifiers - { - internal static FeatureDefinitionMoveThroughEnemyModifier MoveThroughEnemyModifierHalflingNimbleness { get; } = - GetDefinition("MoveThroughEnemyModifierHalflingNimbleness"); - } - internal static class FeatureDefinitionPerceptionAffinitys { internal static FeatureDefinitionPerceptionAffinity PerceptionAffinityConditionBlinded { get; } = @@ -302,6 +296,12 @@ internal static class CharacterSubclassDefinitions internal static class ConditionDefinitions { + internal static ConditionDefinition ConditionFeebleMinded { get; } = + GetDefinition("ConditionFeebleMinded"); + + internal static ConditionDefinition ConditionMonkSlowFall { get; } = + GetDefinition("ConditionMonkSlowFall"); + internal static ConditionDefinition ConditionHolyAura { get; } = GetDefinition("ConditionHolyAura"); diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs index 056508463c..01ac26394a 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs @@ -238,6 +238,7 @@ internal static SpellDefinition BuildKineticJaunt() .SetMinSizeDifference(10) .AddToDB(), FeatureDefinitionCombatAffinitys.CombatAffinityDisengaging) + .SetConditionParticleReference(ConditionMonkSlowFall.conditionParticleReference) .AddToDB(); condition.GuiPresentation.Description = Gui.NoLocalization; diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs index 3b22da5429..77869a9c0f 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs @@ -214,6 +214,7 @@ internal static SpellDefinition BuildIntellectFortress() AttributeDefinitions.Charisma) .AddToDB(), FeatureDefinitionDamageAffinitys.DamageAffinityPsychicResistance) + .SetConditionParticleReference(ConditionFeebleMinded.conditionParticleReference) .AddToDB(); condition.GuiPresentation.description = Gui.NoLocalization; @@ -237,59 +238,9 @@ internal static SpellDefinition BuildIntellectFortress() .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalTargetsPerIncrement: 1) .SetEffectForms(EffectFormBuilder.ConditionForm(condition)) - .SetParticleEffectParameters(EnhanceAbility) - .SetImpactEffectParameters(Aid) - .Build()) - .AddToDB(); - - return spell; - } - - #endregion - - #region Pulse Wave - - internal static SpellDefinition BuildPulseWave() - { - const string NAME = "PulseWave"; - - var spell = SpellDefinitionBuilder - .Create(NAME) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.PulseWave, 128)) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) - .SetSpellLevel(3) - .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(true) - .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Attack) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) - .ExcludeCaster() - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) - .SetSavingThrowData( - false, - AttributeDefinitions.Constitution, - true, - EffectDifficultyClassComputation.SpellCastingFeature, - AttributeDefinitions.Wisdom, - 12) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .Build(), - EffectFormBuilder - .Create() - .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 3) - .HasSavingThrow(EffectSavingThrowType.Negates) - .Build()) - .SetParticleEffectParameters(PowerFunctionWandFearCone) - .SetCasterEffectParameters(Darkness) - .SetImpactEffectParameters(MindTwist) + .SetCasterEffectParameters(Confusion) + .SetImpactEffectParameters( + PowerMagebaneSpellCrusher.EffectDescription.EffectParticleParameters.effectParticleReference) .Build()) .AddToDB(); @@ -409,6 +360,166 @@ internal static SpellDefinition BuildPsionicBlast() #endregion + #region Pulse Wave + + internal static SpellDefinition BuildPulseWave() + { + const string NAME = "PulseWave"; + + var spellPush = SpellDefinitionBuilder + .Create($"{NAME}Push") + .SetGuiPresentation(Category.Spell) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) + .ExcludeCaster() + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData( + false, + AttributeDefinitions.Constitution, + true, + EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Wisdom, + 12) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build()) + .SetParticleEffectParameters(PowerFunctionWandFearCone) + .SetCasterEffectParameters(Darkness) + .SetImpactEffectParameters(MindTwist) + .Build()) + .AddToDB(); + + spellPush.AddCustomSubFeatures(new ModifyEffectDescriptionPulseWave(spellPush)); + + var spellPull = SpellDefinitionBuilder + .Create($"{NAME}Pull") + .SetGuiPresentation(Category.Spell) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) + .ExcludeCaster() + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData( + false, + AttributeDefinitions.Constitution, + true, + EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Wisdom, + 12) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.DragToOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build()) + .SetParticleEffectParameters(PowerFunctionWandFearCone) + .SetCasterEffectParameters(Darkness) + .SetImpactEffectParameters(MindTwist) + .Build()) + .AddToDB(); + + spellPull.AddCustomSubFeatures(new ModifyEffectDescriptionPulseWave(spellPull)); + + var spell = SpellDefinitionBuilder + .Create(NAME) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.PulseWave, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetEffectDescription( + // UI Only + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) + .ExcludeCaster() + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData( + false, + AttributeDefinitions.Constitution, + true, + EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Wisdom, + 12) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.DragToOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build()) + .Build()) + .SetSubSpells(spellPush, spellPull) + .AddToDB(); + + return spell; + } + + private sealed class ModifyEffectDescriptionPulseWave(SpellDefinition spellDefinition) : IModifyEffectDescription + { + public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) + { + return definition == spellDefinition; + } + + public EffectDescription GetEffectDescription( + BaseDefinition definition, + EffectDescription effectDescription, + RulesetCharacter character, + RulesetEffect rulesetEffect) + { + var effectLevel = rulesetEffect.EffectLevel; + + effectDescription.EffectForms[1].MotionForm.distance = effectLevel; + + return effectDescription; + } + } + + #endregion + #region Aura of Vitality internal static SpellDefinition BuildAuraOfVitality() diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt index 665481296c..33665969db 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=Wenn Sie während der Wirkungsdauer des Zaubers Spell/&LightningArrowTitle=Blitzpfeil Spell/&PsionicBlastDescription=Du entfesselst eine zerstörerische Welle mentaler Kraft in einem 30-Fuß-Kegel. Jede Kreatur in der Umgebung muss einen Geschicklichkeitsrettungswurf machen. Bei einem misslungenen Rettungswurf erleidet das Ziel 5W8 Kraftschaden, wird 20 Fuß direkt von dir weggestoßen und niedergeschlagen. Bei einem erfolgreichen Rettungswurf erleidet das Ziel nur halb so viel Schaden und wird nicht gestoßen oder niedergeschlagen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W8 für jeden Platzlevel über der 3. Spell/&PsionicBlastTitle=Psi-Explosion -Spell/&PulseWaveDescription=Schleudere Feinde mit starkem Gravitationsdruck weg. +Spell/&PulseWaveDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf bestehen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden oder bei einem erfolgreichen halb so viel Schaden. Und jede Kreatur, deren Rettungswurf misslingt, wird entweder 15 Fuß zu dir gezogen oder 15 Fuß von dir weggeschoben, je nachdem, welche Wahl du für den Zauber getroffen hast. +Spell/&PulseWavePullDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf bestehen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden, bei einem erfolgreichen nur halb so viel Schaden. Und jede Kreatur, der der Rettungswurf misslingt, wird 15 Fuß zu dir gezogen. +Spell/&PulseWavePullTitle=Pulswelle: Ziehen +Spell/&PulseWavePushDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf machen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden, bei einem erfolgreichen nur halb so viel Schaden. Und jede Kreatur, der der Rettungswurf misslingt, wird 15 Fuß von dir weggestoßen. +Spell/&PulseWavePushTitle=Pulswelle: Drücken Spell/&PulseWaveTitle=Pulswelle Spell/&SpiritShroudDamageColdDescription=Verursacht zusätzlichen Kälteschaden. Spell/&SpiritShroudDamageColdTitle=Geistertuch (Kälte) diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt index 21a7adc32e..9ed8eb129e 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=The next time you make a ranged weapon attack d Spell/&LightningArrowTitle=Lightning Arrow Spell/&PsionicBlastDescription=You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make a Dexterity saving throw. On a failed save, a target takes 5d8 force damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. Spell/&PsionicBlastTitle=Psionic Blast -Spell/&PulseWaveDescription=Hurl enemies away with intense gravitational pressure. +Spell/&PulseWaveDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is either pulled 15 feet toward you or pushed 15 feet away from you, depending on the choice you made for the spell. +Spell/&PulseWavePullDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is pulled 15 feet toward you. +Spell/&PulseWavePullTitle=Pulse Wave: Pull +Spell/&PulseWavePushDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is pushed 15 feet away from you. +Spell/&PulseWavePushTitle=Pulse Wave: Push Spell/&PulseWaveTitle=Pulse Wave Spell/&SpiritShroudDamageColdDescription=Deal bonus cold damage. Spell/&SpiritShroudDamageColdTitle=Spirit Shroud (Cold) diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt index 7a288566ef..d6f4270e81 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=La próxima vez que realices un ataque con arma Spell/&LightningArrowTitle=Flecha relámpago Spell/&PsionicBlastDescription=Desatas una ola destructiva de poder mental en un cono de 30 pies. Cada criatura en el área debe realizar una tirada de salvación de Destreza. En una salvación fallida, un objetivo sufre 5d8 de daño de fuerza, es empujado a 20 pies directamente de ti y queda derribado. Con una salvación exitosa, el objetivo recibe la mitad de daño y no es empujado ni derribado. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d8 por cada nivel de espacio por encima del 3º. Spell/&PsionicBlastTitle=Explosión psiónica -Spell/&PulseWaveDescription=Lanza a los enemigos con una intensa presión gravitacional. +Spell/&PulseWaveDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti o empujada 15 pies lejos de ti, dependiendo de la elección que hayas hecho para el hechizo. +Spell/&PulseWavePullDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti. +Spell/&PulseWavePullTitle=Onda de pulso: tirar +Spell/&PulseWavePushDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es empujada a 15 pies de distancia de ti. +Spell/&PulseWavePushTitle=Onda de pulso: Empuje Spell/&PulseWaveTitle=Onda de pulso Spell/&SpiritShroudDamageColdDescription=Inflige daño adicional por frío. Spell/&SpiritShroudDamageColdTitle=Sudario espiritual (frío) diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt index 49a3d1d534..cc55bb268e 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=La prochaine fois que vous effectuerez une atta Spell/&LightningArrowTitle=Flèche de foudre Spell/&PsionicBlastDescription=Vous libérez une vague de puissance mentale destructrice dans un cône de 9 mètres. Chaque créature présente dans la zone doit effectuer un jet de sauvegarde de Dextérité. En cas d'échec, la cible subit 5d8 dégâts de force, est poussée à 6 mètres directement de vous et est projetée à terre. En cas de sauvegarde réussie, la cible subit deux fois moins de dégâts et n’est ni poussée ni mise à terre. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. Spell/&PsionicBlastTitle=Explosion psionique -Spell/&PulseWaveDescription=Chassez les ennemis avec une pression gravitationnelle intense. +Spell/&PulseWaveDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue à la sauvegarde est soit tirée à 15 pieds vers vous, soit poussée à 15 pieds de vous, selon le choix que vous avez fait pour le sort. +Spell/&PulseWavePullDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue au jet de sauvegarde est tirée de 15 pieds vers vous. +Spell/&PulseWavePullTitle=Onde de pouls : tirer +Spell/&PulseWavePushDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue au jet de sauvegarde est repoussée à 15 pieds de vous. +Spell/&PulseWavePushTitle=Onde de pouls : pousser Spell/&PulseWaveTitle=Onde de pouls Spell/&SpiritShroudDamageColdDescription=Inflige des dégâts de froid supplémentaires. Spell/&SpiritShroudDamageColdTitle=Linceul spirituel (froid) diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt index aed300c2ad..37f7ae1fa7 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=La prossima volta che effettui un attacco con u Spell/&LightningArrowTitle=Freccia fulminea Spell/&PsionicBlastDescription=Scagli un'onda distruttiva di potere mentale in un cono di 9 metri. Ogni creatura nell'area deve effettuare un tiro salvezza su Destrezza. Se fallisce il tiro salvezza, il bersaglio subisce 5d8 danni da forza, viene spinto a 6 metri direttamente lontano da te e cade prono. Se il tiro salvezza riesce, il bersaglio subisce la metà dei danni e non viene spinto o gettato prono. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d8 per ogni livello dello slot superiore al 3°. Spell/&PsionicBlastTitle=Esplosione psionica -Spell/&PulseWaveDescription=Scaglia via i nemici con un'intensa pressione gravitazionale. +Spell/&PulseWaveDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene trascinata verso di te per 15 piedi o spinta lontano da te per 15 piedi, a seconda della scelta che hai fatto per l'incantesimo. +Spell/&PulseWavePullDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene trascinata verso di te di 15 piedi. +Spell/&PulseWavePullTitle=Onda di impulso: tirare +Spell/&PulseWavePushDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene spinta a 15 piedi di distanza da te. +Spell/&PulseWavePushTitle=Onda di impulso: spingere Spell/&PulseWaveTitle=Onda di impulso Spell/&SpiritShroudDamageColdDescription=Infligge danni da freddo bonus. Spell/&SpiritShroudDamageColdTitle=Sudario dello Spirito (Freddo) diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt index 64d58cabe2..e9e825763b 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=呪文の持続時間中に次回遠隔武器 Spell/&LightningArrowTitle=ライトニングアロー Spell/&PsionicBlastDescription=30 フィートの円錐形に破壊的な精神力の波を解き放ちます。範囲内のクリーチャーはそれぞれ敏捷セーヴィング スローを行なわなければなりません。セーヴィングに失敗すると、ターゲットは 5d8 の力場ダメージを受け、あなたから 20 フィートまっすぐ押し出され、うつ伏せにされます。セーヴィングに成功すると、ターゲットは半分のダメージを受け、押されたりうつ伏せにされたりしません。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、3 レベルを超えるスロット レベルごとにダメージが 1d8 増加します。 Spell/&PsionicBlastTitle=サイオニックブラスト -Spell/&PulseWaveDescription=強烈な重力圧力で敵を吹き飛ばします。 +Spell/&PulseWaveDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に放出し、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。その円錐内の各クリーチャーは、耐久力セーヴィング スローを実行する必要があります。セーヴィングに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィングに失敗したクリーチャーはすべて、呪文の選択に応じて、15 フィート引き寄せられるか、15 フィート押し出されます。 +Spell/&PulseWavePullDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に放出し、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。円錐内の各クリーチャーは、Constitution セーヴィング スローを実行する必要があります。セーヴィングに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィングに失敗したクリーチャーはすべて、15 フィートあなたに向かって引き寄せられます。 +Spell/&PulseWavePullTitle=脈波:プル +Spell/&PulseWavePushDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に放出し、その圧力でクリーチャーや物体を引き寄せるか押し出すかを決定します。円錐内の各クリーチャーは、Constitution セーヴィング スローを実行する必要があります。セーヴィングに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィングに失敗したクリーチャーはすべて、プレイヤーから 15 フィート押し出されます。 +Spell/&PulseWavePushTitle=パルス波:プッシュ Spell/&PulseWaveTitle=脈波 Spell/&SpiritShroudDamageColdDescription=ボーナス冷気ダメージを与える。 Spell/&SpiritShroudDamageColdTitle=精霊のシュラウド(冷気) diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt index 6441be1095..4d40a0ad0f 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=주문이 지속되는 동안 다음에 원거 Spell/&LightningArrowTitle=번개 화살 Spell/&PsionicBlastDescription=당신은 30피트 원뿔 모양으로 파괴적인 정신력의 파동을 일으킵니다. 해당 지역에 있는 각 생물은 민첩 내성 굴림을 해야 합니다. 저장에 실패하면 대상은 5d8의 힘 피해를 입고 바로 20피트 떨어진 곳으로 밀려나며 넘어지게 됩니다. 내성굴림에 성공하면 대상은 절반의 피해를 입고 밀리지도 않고 쓰러지지도 않습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 3레벨 이상의 슬롯 레벨마다 피해가 1d8씩 증가합니다. Spell/&PsionicBlastTitle=사이오닉 폭발 -Spell/&PulseWaveDescription=강력한 중력 압력으로 적을 멀리 던져보세요. +Spell/&PulseWaveDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 내성에 실패한 모든 생물은 주문에 대한 선택에 따라 당신을 향해 15피트 당겨지거나 당신으로부터 15피트 뒤로 밀려납니다. +Spell/&PulseWavePullDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 저장에 실패한 모든 생물은 당신을 향해 15피트 끌어당겨집니다. +Spell/&PulseWavePullTitle=펄스파 : 당기기 +Spell/&PulseWavePushDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 저장에 실패한 모든 생물은 당신에게서 15피트 떨어진 곳으로 밀려납니다. +Spell/&PulseWavePushTitle=맥파: 푸시 Spell/&PulseWaveTitle=맥파 Spell/&SpiritShroudDamageColdDescription=보너스 냉기 피해를 줍니다. Spell/&SpiritShroudDamageColdTitle=영혼의 장막(냉기) diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt index cc4500c419..2249e78f17 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=Na próxima vez que você fizer um ataque com a Spell/&LightningArrowTitle=Flecha Relâmpago Spell/&PsionicBlastDescription=Você libera uma onda destrutiva de poder mental em um cone de 30 pés. Cada criatura na área deve fazer um teste de resistência de Destreza. Em uma falha na resistência, um alvo sofre 5d8 de dano de força, é empurrado 20 pés diretamente para longe de você e é derrubado. Em uma resistência bem-sucedida, um alvo sofre metade do dano e não é empurrado ou derrubado. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d8 para cada nível de espaço acima do 3º. Spell/&PsionicBlastTitle=Explosão Psiônica -Spell/&PulseWaveDescription=Afaste os inimigos com intensa pressão gravitacional. +Spell/&PulseWaveDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E toda criatura que falhar no teste será puxada 4,5 metros em sua direção ou empurrada 4,5 metros para longe de você, dependendo da escolha que você fez para a magia. +Spell/&PulseWavePullDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E cada criatura que falha no teste é puxada 4,5 metros em sua direção. +Spell/&PulseWavePullTitle=Onda de pulso: puxar +Spell/&PulseWavePushDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E cada criatura que falha no teste é empurrada para 4,5 metros de você. +Spell/&PulseWavePushTitle=Onda de pulso: Empurre Spell/&PulseWaveTitle=Onda de pulso Spell/&SpiritShroudDamageColdDescription=Causa dano adicional de frio. Spell/&SpiritShroudDamageColdTitle=Mortalha Espiritual (Frio) diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt index 0d6d9d0ba0..46be01e7c7 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=В следующий раз, когда вы Spell/&LightningArrowTitle=Молниевая стрела Spell/&PsionicBlastDescription=Вы испускаете разрушительную волну ментальной энергии в 30-футовом конусе. Каждое существо в этой области должно совершить спасбросок Ловкости. При провале цель получает 5d8 урона силовым полем, отбрасывается на 20 футов от вас по прямой и падает ничком. При успехе цель получает вдвое меньше урона, не отталкивается и не сбивается с ног. Если вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. Spell/&PsionicBlastTitle=Псионический взрыв -Spell/&PulseWaveDescription=Вы создаёте сильное давление, выпускаемое в форме 30-футового конуса, и определяете направление волны. Каждое существо в пределах конуса должно совершить спасбросок Телосложения, получая 6d6 урона силовым полем при провале или половину этого урона при успехе. Все существа, провалившие спасбросок, отталкиваются от вас на 15 футов. +Spell/&PulseWaveDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, либо притягивается к вам на 15 футов, либо отталкивается на 15 футов от вас, в зависимости от выбора, который вы сделали для заклинания. +Spell/&PulseWavePullDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, притягивается к вам на 15 футов. +Spell/&PulseWavePullTitle=Пульсовая волна: тянуть +Spell/&PulseWavePushDescription=Вы создаете сильное давление, выпускаете его в 30-футовом конусе и решаете, будет ли давление тянуть или толкать существа и предметы. Каждое существо в этом конусе должно сделать спасбросок Телосложения. Существо получает урон силой 6d6 при провале или половину урона при успехе. И каждое существо, которое проваливает спасбросок, отталкивается на 15 футов от вас. +Spell/&PulseWavePushTitle=Импульсная волна: Нажмите Spell/&PulseWaveTitle=Силовая волна Spell/&SpiritShroudDamageColdDescription=Нанесите дополнительный урон холодом. Spell/&SpiritShroudDamageColdTitle=Покров духа (Холод) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt index aa63930484..c1f2f9a669 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt @@ -66,7 +66,11 @@ Spell/&LightningArrowDescription=下次你在法术持续时间内进行远程 Spell/&LightningArrowTitle=闪电箭矢 Spell/&PsionicBlastDescription=你在 30 尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,其伤害就增加 1d8。 Spell/&PsionicBlastTitle=灵能震爆 -Spell/&PulseWaveDescription=使用强烈的冲压将敌人推开。 +Spell/&PulseWaveDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败的生物将受到 6d6 力场伤害,豁免成功则受到一半伤害。豁免失败的每个生物要么被拉向你 15 英尺,要么被推离你 15 英尺,具体取决于你对法术的选择。 +Spell/&PulseWavePullDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败的生物将受到 6d6 力量伤害,豁免成功则受到一半伤害。豁免失败的每个生物都会被拉向你 15 英尺。 +Spell/&PulseWavePullTitle=脉冲波:拉 +Spell/&PulseWavePushDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败的生物将受到 6d6 力量伤害,豁免成功则受到一半伤害。豁免失败的每个生物都会被推离你 15 英尺。 +Spell/&PulseWavePushTitle=脉冲波:推 Spell/&PulseWaveTitle=脉冲波动 Spell/&SpiritShroudDamageColdDescription=造成额外的冷冻伤害。 Spell/&SpiritShroudDamageColdTitle=魂灵环绕(冷冻) From 8318086d691ea9ebb2f1ca087dcd68aa62518a40 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 18:59:49 -0700 Subject: [PATCH 14/52] update translations --- SolastaUnfinishedBusiness/ChangelogHistory.txt | 11 +++++++++++ .../Translations/de/Spells/Spells03-de.txt | 6 +++--- .../Translations/en/Spells/Spells03-en.txt | 6 +++--- .../Translations/es/Spells/Spells03-es.txt | 6 +++--- .../Translations/fr/Spells/Spells03-fr.txt | 6 +++--- .../Translations/it/Spells/Spells03-it.txt | 6 +++--- .../Translations/ja/Spells/Spells03-ja.txt | 6 +++--- .../Translations/ko/Spells/Spells03-ko.txt | 6 +++--- .../Translations/pt-BR/Spells/Spells03-pt-BR.txt | 6 +++--- .../Translations/ru/Spells/Spells03-ru.txt | 6 +++--- .../Translations/zh-CN/Spells/Spells03-zh-CN.txt | 6 +++--- 11 files changed, 41 insertions(+), 30 deletions(-) diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index 6e576e229e..985270f6a2 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -1,3 +1,14 @@ +1.5.97.14: + +- fixed Abundant Ki feature description to be half proficiency bonus rounded down instead of rounded up +- fixed Domain Tempest wrath of the storm feature not consuming a reaction +- fixed Metamagic Adept feat description to be half proficiency bonus rounded down instead of rounded up +- fixed Mind Sharpener infusion not providing advantage on concentration checks +- fixed Pulse Wave spell to offer push/pull options as well as increase distance on upcasting +- fixed Quickened metamagic interaction with Booming Blade, Green-Flame Blade, and Sunlit Blade cantrips +- fixed Stunning Strike behavior to not trigger on stunned enemies and auto disable on a hit +- fixed Transmuted metamagic interaction with Domain Tempest destructive wrath feature + 1.5.97.12: - added Gameplay > Character > 'Enable Monk Heightened Metabolism at level 10' setting diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt index 33665969db..1081ce6201 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=Wenn Sie während der Wirkungsdauer des Zaubers Spell/&LightningArrowTitle=Blitzpfeil Spell/&PsionicBlastDescription=Du entfesselst eine zerstörerische Welle mentaler Kraft in einem 30-Fuß-Kegel. Jede Kreatur in der Umgebung muss einen Geschicklichkeitsrettungswurf machen. Bei einem misslungenen Rettungswurf erleidet das Ziel 5W8 Kraftschaden, wird 20 Fuß direkt von dir weggestoßen und niedergeschlagen. Bei einem erfolgreichen Rettungswurf erleidet das Ziel nur halb so viel Schaden und wird nicht gestoßen oder niedergeschlagen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W8 für jeden Platzlevel über der 3. Spell/&PsionicBlastTitle=Psi-Explosion -Spell/&PulseWaveDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf bestehen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden oder bei einem erfolgreichen halb so viel Schaden. Und jede Kreatur, deren Rettungswurf misslingt, wird entweder 15 Fuß zu dir gezogen oder 15 Fuß von dir weggeschoben, je nachdem, welche Wahl du für den Zauber getroffen hast. -Spell/&PulseWavePullDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf bestehen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden, bei einem erfolgreichen nur halb so viel Schaden. Und jede Kreatur, der der Rettungswurf misslingt, wird 15 Fuß zu dir gezogen. +Spell/&PulseWaveDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf machen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden oder bei einem erfolgreichen halb so viel Schaden. Und jede Kreatur, deren Rettungswurf misslingt, wird entweder 15 Fuß zu dir gezogen oder 15 Fuß von dir weg geschoben, je nachdem, welche Wahl du für den Zauber getroffen hast. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W6 und die gezogene oder geschobene Distanz erhöht sich um 5 Fuß für jede Platzstufe über der 3. +Spell/&PulseWavePullDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf machen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden oder bei einem erfolgreichen halb so viel Schaden. Und jede Kreatur, der der Rettungswurf misslingt, wird 15 Fuß zu dir gezogen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W6 und die gezogene oder geschobene Distanz erhöht sich um 5 Fuß für jede Platzstufe über der 3. Spell/&PulseWavePullTitle=Pulswelle: Ziehen -Spell/&PulseWavePushDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf machen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden, bei einem erfolgreichen nur halb so viel Schaden. Und jede Kreatur, der der Rettungswurf misslingt, wird 15 Fuß von dir weggestoßen. +Spell/&PulseWavePushDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf machen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden oder bei einem erfolgreichen halb so viel Schaden. Und jede Kreatur, deren Rettungswurf misslingt, wird 15 Fuß von dir weggestoßen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W6 und die gezogene oder gestoßene Distanz erhöht sich um 5 Fuß für jede Stufe über der 3. Spell/&PulseWavePushTitle=Pulswelle: Drücken Spell/&PulseWaveTitle=Pulswelle Spell/&SpiritShroudDamageColdDescription=Verursacht zusätzlichen Kälteschaden. diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt index 9ed8eb129e..32587eb9df 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=The next time you make a ranged weapon attack d Spell/&LightningArrowTitle=Lightning Arrow Spell/&PsionicBlastDescription=You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make a Dexterity saving throw. On a failed save, a target takes 5d8 force damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. Spell/&PsionicBlastTitle=Psionic Blast -Spell/&PulseWaveDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is either pulled 15 feet toward you or pushed 15 feet away from you, depending on the choice you made for the spell. -Spell/&PulseWavePullDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is pulled 15 feet toward you. +Spell/&PulseWaveDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is either pulled 15 feet toward you or pushed 15 feet away from you, depending on the choice you made for the spell. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 and the distance pulled or pushed increases by 5 feet for each slot level above 3rd. +Spell/&PulseWavePullDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is pulled 15 feet toward you. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 and the distance pulled or pushed increases by 5 feet for each slot level above 3rd. Spell/&PulseWavePullTitle=Pulse Wave: Pull -Spell/&PulseWavePushDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is pushed 15 feet away from you. +Spell/&PulseWavePushDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is pushed 15 feet away from you. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 and the distance pulled or pushed increases by 5 feet for each slot level above 3rd. Spell/&PulseWavePushTitle=Pulse Wave: Push Spell/&PulseWaveTitle=Pulse Wave Spell/&SpiritShroudDamageColdDescription=Deal bonus cold damage. diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt index d6f4270e81..45835f9e6f 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=La próxima vez que realices un ataque con arma Spell/&LightningArrowTitle=Flecha relámpago Spell/&PsionicBlastDescription=Desatas una ola destructiva de poder mental en un cono de 30 pies. Cada criatura en el área debe realizar una tirada de salvación de Destreza. En una salvación fallida, un objetivo sufre 5d8 de daño de fuerza, es empujado a 20 pies directamente de ti y queda derribado. Con una salvación exitosa, el objetivo recibe la mitad de daño y no es empujado ni derribado. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d8 por cada nivel de espacio por encima del 3º. Spell/&PsionicBlastTitle=Explosión psiónica -Spell/&PulseWaveDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti o empujada 15 pies lejos de ti, dependiendo de la elección que hayas hecho para el hechizo. -Spell/&PulseWavePullDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti. +Spell/&PulseWaveDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti o empujada 15 pies lejos de ti, dependiendo de la elección que hayas hecho para el hechizo. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 y la distancia tirada o empujada aumenta en 5 pies por cada nivel de espacio por encima del 3º. +Spell/&PulseWavePullDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 y la distancia tirada o empujada aumenta en 5 pies por cada nivel de espacio por encima del 3º. Spell/&PulseWavePullTitle=Onda de pulso: tirar -Spell/&PulseWavePushDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es empujada a 15 pies de distancia de ti. +Spell/&PulseWavePushDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es empujada a 15 pies de distancia de ti. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 y la distancia tirada o empujada aumenta en 5 pies por cada nivel de espacio por encima del 3º. Spell/&PulseWavePushTitle=Onda de pulso: Empuje Spell/&PulseWaveTitle=Onda de pulso Spell/&SpiritShroudDamageColdDescription=Inflige daño adicional por frío. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt index cc55bb268e..bd24b64050 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=La prochaine fois que vous effectuerez une atta Spell/&LightningArrowTitle=Flèche de foudre Spell/&PsionicBlastDescription=Vous libérez une vague de puissance mentale destructrice dans un cône de 9 mètres. Chaque créature présente dans la zone doit effectuer un jet de sauvegarde de Dextérité. En cas d'échec, la cible subit 5d8 dégâts de force, est poussée à 6 mètres directement de vous et est projetée à terre. En cas de sauvegarde réussie, la cible subit deux fois moins de dégâts et n’est ni poussée ni mise à terre. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. Spell/&PsionicBlastTitle=Explosion psionique -Spell/&PulseWaveDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue à la sauvegarde est soit tirée à 15 pieds vers vous, soit poussée à 15 pieds de vous, selon le choix que vous avez fait pour le sort. -Spell/&PulseWavePullDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue au jet de sauvegarde est tirée de 15 pieds vers vous. +Spell/&PulseWaveDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue à la sauvegarde est soit tirée à 15 pieds vers vous, soit poussée à 15 pieds de vous, selon le choix que vous avez fait pour le sort. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 et la distance tirée ou poussée augmente de 1,50 mètre pour chaque niveau d'emplacement supérieur au 3ème. +Spell/&PulseWavePullDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue au jet de sauvegarde est tirée de 15 pieds vers vous. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 et la distance tirée ou poussée augmente de 1,50 mètre pour chaque niveau d'emplacement supérieur au 3ème. Spell/&PulseWavePullTitle=Onde de pouls : tirer -Spell/&PulseWavePushDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue au jet de sauvegarde est repoussée à 15 pieds de vous. +Spell/&PulseWavePushDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue au jet de sauvegarde est repoussée à 15 pieds de vous. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 et la distance tirée ou poussée augmente de 1,50 mètre pour chaque niveau d'emplacement supérieur au 3ème. Spell/&PulseWavePushTitle=Onde de pouls : pousser Spell/&PulseWaveTitle=Onde de pouls Spell/&SpiritShroudDamageColdDescription=Inflige des dégâts de froid supplémentaires. diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt index 37f7ae1fa7..c09dd7462d 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=La prossima volta che effettui un attacco con u Spell/&LightningArrowTitle=Freccia fulminea Spell/&PsionicBlastDescription=Scagli un'onda distruttiva di potere mentale in un cono di 9 metri. Ogni creatura nell'area deve effettuare un tiro salvezza su Destrezza. Se fallisce il tiro salvezza, il bersaglio subisce 5d8 danni da forza, viene spinto a 6 metri direttamente lontano da te e cade prono. Se il tiro salvezza riesce, il bersaglio subisce la metà dei danni e non viene spinto o gettato prono. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d8 per ogni livello dello slot superiore al 3°. Spell/&PsionicBlastTitle=Esplosione psionica -Spell/&PulseWaveDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene trascinata verso di te per 15 piedi o spinta lontano da te per 15 piedi, a seconda della scelta che hai fatto per l'incantesimo. -Spell/&PulseWavePullDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene trascinata verso di te di 15 piedi. +Spell/&PulseWaveDescription=Crei una pressione intensa, la scateni in un cono di 30 piedi e decidi se la pressione tira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà dei danni se lo supera. E ogni creatura che fallisce il tiro salvezza viene tirata verso di te di 15 piedi o spinta lontano da te di 15 piedi, a seconda della scelta che hai fatto per l'incantesimo. Quando lanci questo incantesimo usando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 e la distanza tirata o spinta aumenta di 5 piedi per ogni livello di slot superiore al 3°. +Spell/&PulseWavePullDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene trascinata verso di te di 15 piedi. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 e la distanza tirata o spinta aumenta di 1,5 metri per ogni livello dello slot superiore al 3°. Spell/&PulseWavePullTitle=Onda di impulso: tirare -Spell/&PulseWavePushDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene spinta a 15 piedi di distanza da te. +Spell/&PulseWavePushDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene spinta a 15 piedi di distanza da te. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 e la distanza tirata o spinta aumenta di 1,5 metri per ogni livello dello slot superiore al 3°. Spell/&PulseWavePushTitle=Onda di impulso: spingere Spell/&PulseWaveTitle=Onda di impulso Spell/&SpiritShroudDamageColdDescription=Infligge danni da freddo bonus. diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt index e9e825763b..e01c10fba5 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=呪文の持続時間中に次回遠隔武器 Spell/&LightningArrowTitle=ライトニングアロー Spell/&PsionicBlastDescription=30 フィートの円錐形に破壊的な精神力の波を解き放ちます。範囲内のクリーチャーはそれぞれ敏捷セーヴィング スローを行なわなければなりません。セーヴィングに失敗すると、ターゲットは 5d8 の力場ダメージを受け、あなたから 20 フィートまっすぐ押し出され、うつ伏せにされます。セーヴィングに成功すると、ターゲットは半分のダメージを受け、押されたりうつ伏せにされたりしません。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、3 レベルを超えるスロット レベルごとにダメージが 1d8 増加します。 Spell/&PsionicBlastTitle=サイオニックブラスト -Spell/&PulseWaveDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に放出し、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。その円錐内の各クリーチャーは、耐久力セーヴィング スローを実行する必要があります。セーヴィングに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィングに失敗したクリーチャーはすべて、呪文の選択に応じて、15 フィート引き寄せられるか、15 フィート押し出されます。 -Spell/&PulseWavePullDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に放出し、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。円錐内の各クリーチャーは、Constitution セーヴィング スローを実行する必要があります。セーヴィングに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィングに失敗したクリーチャーはすべて、15 フィートあなたに向かって引き寄せられます。 +Spell/&PulseWaveDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に解き放ち、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。その円錐内の各クリーチャーは耐久力セーヴィング スローを行わなければなりません。セーヴィング スローに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィング スローに失敗したクリーチャーはすべて、呪文の選択に応じて、15 フィート引き寄せられるか、15 フィート押し出されます。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、ダメージは 1d6 増加し、引き寄せられる距離または押し出される距離は 3 レベルを超える各スロット レベルごとに 5 フィート増加します。 +Spell/&PulseWavePullDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に解き放ち、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。その円錐内の各クリーチャーは耐久力セーヴィング スローを行う必要があります。セーヴィング スローに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィング スローに失敗するすべてのクリーチャーは、15 フィート、プレイヤーの方へ引き寄せられます。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、ダメージは 1d6 増加し、引き寄せられる距離または押し出される距離は 3 レベルを超える各スロット レベルごとに 5 フィート増加します。 Spell/&PulseWavePullTitle=脈波:プル -Spell/&PulseWavePushDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に放出し、その圧力でクリーチャーや物体を引き寄せるか押し出すかを決定します。円錐内の各クリーチャーは、Constitution セーヴィング スローを実行する必要があります。セーヴィングに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィングに失敗したクリーチャーはすべて、プレイヤーから 15 フィート押し出されます。 +Spell/&PulseWavePushDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に放出し、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。その円錐内の各クリーチャーは、耐久力セーヴィング スローを行う必要があります。セーヴィング スローに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィング スローに失敗したクリーチャーはすべて、プレイヤーから 15 フィート押し出されます。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、ダメージは 1d6 増加し、引き寄せまたは押し出される距離は 3 レベルを超える各スロット レベルごとに 5 フィート増加します。 Spell/&PulseWavePushTitle=パルス波:プッシュ Spell/&PulseWaveTitle=脈波 Spell/&SpiritShroudDamageColdDescription=ボーナス冷気ダメージを与える。 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt index 4d40a0ad0f..752621a82c 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=주문이 지속되는 동안 다음에 원거 Spell/&LightningArrowTitle=번개 화살 Spell/&PsionicBlastDescription=당신은 30피트 원뿔 모양으로 파괴적인 정신력의 파동을 일으킵니다. 해당 지역에 있는 각 생물은 민첩 내성 굴림을 해야 합니다. 저장에 실패하면 대상은 5d8의 힘 피해를 입고 바로 20피트 떨어진 곳으로 밀려나며 넘어지게 됩니다. 내성굴림에 성공하면 대상은 절반의 피해를 입고 밀리지도 않고 쓰러지지도 않습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 3레벨 이상의 슬롯 레벨마다 피해가 1d8씩 증가합니다. Spell/&PsionicBlastTitle=사이오닉 폭발 -Spell/&PulseWaveDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 내성에 실패한 모든 생물은 주문에 대한 선택에 따라 당신을 향해 15피트 당겨지거나 당신으로부터 15피트 뒤로 밀려납니다. -Spell/&PulseWavePullDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 저장에 실패한 모든 생물은 당신을 향해 15피트 끌어당겨집니다. +Spell/&PulseWaveDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 내성에 실패한 모든 생물은 주문에 대한 선택에 따라 당신을 향해 15피트 당겨지거나 당신으로부터 15피트 뒤로 밀려납니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 피해는 1d6만큼 증가하고 3레벨 이상의 슬롯 레벨마다 당기거나 밀린 거리는 5피트씩 증가합니다. +Spell/&PulseWavePullDescription=당신은 강렬한 압력을 만들고, 30피트 원뿔 모양으로 풀어놓고, 그 압력이 생물과 사물을 끌어당기거나 밀어낼지 결정합니다. 그 원뿔 모양 안에 있는 각 생물은 체력 세이빙 스로우를 해야 합니다. 생물은 세이브에 실패하면 6d6의 포스 데미지를 입거나, 성공하면 절반의 데미지를 입습니다. 그리고 세이브에 실패한 모든 생물은 당신에게 15피트 끌려옵니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 데미지가 1d6 증가하고, 끌거나 밀리는 거리는 3레벨 이상의 슬롯 레벨마다 5피트씩 증가합니다. Spell/&PulseWavePullTitle=펄스파 : 당기기 -Spell/&PulseWavePushDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 저장에 실패한 모든 생물은 당신에게서 15피트 떨어진 곳으로 밀려납니다. +Spell/&PulseWavePushDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 저장에 실패한 모든 생물은 당신에게서 15피트 떨어진 곳으로 밀려납니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 피해는 1d6만큼 증가하고 3레벨 이상의 슬롯 레벨마다 당기거나 밀린 거리는 5피트씩 증가합니다. Spell/&PulseWavePushTitle=맥파: 푸시 Spell/&PulseWaveTitle=맥파 Spell/&SpiritShroudDamageColdDescription=보너스 냉기 피해를 줍니다. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt index 2249e78f17..461df1fe61 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=Na próxima vez que você fizer um ataque com a Spell/&LightningArrowTitle=Flecha Relâmpago Spell/&PsionicBlastDescription=Você libera uma onda destrutiva de poder mental em um cone de 30 pés. Cada criatura na área deve fazer um teste de resistência de Destreza. Em uma falha na resistência, um alvo sofre 5d8 de dano de força, é empurrado 20 pés diretamente para longe de você e é derrubado. Em uma resistência bem-sucedida, um alvo sofre metade do dano e não é empurrado ou derrubado. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d8 para cada nível de espaço acima do 3º. Spell/&PsionicBlastTitle=Explosão Psiônica -Spell/&PulseWaveDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E toda criatura que falhar no teste será puxada 4,5 metros em sua direção ou empurrada 4,5 metros para longe de você, dependendo da escolha que você fez para a magia. -Spell/&PulseWavePullDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E cada criatura que falha no teste é puxada 4,5 metros em sua direção. +Spell/&PulseWaveDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E toda criatura que falhar no teste será puxada 4,5 metros em sua direção ou empurrada 4,5 metros para longe de você, dependendo da escolha que você fez para a magia. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 e a distância puxada ou empurrada aumenta em 1,5 metro para cada nível do espaço acima do 3º. +Spell/&PulseWavePullDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E cada criatura que falha no teste é puxada 4,5 metros em sua direção. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 e a distância puxada ou empurrada aumenta em 1,5 metro para cada nível do espaço acima do 3º. Spell/&PulseWavePullTitle=Onda de pulso: puxar -Spell/&PulseWavePushDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E cada criatura que falha no teste é empurrada para 4,5 metros de você. +Spell/&PulseWavePushDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E cada criatura que falha no teste é empurrada para 4,5 metros de você. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 e a distância puxada ou empurrada aumenta em 1,5 metro para cada nível do espaço acima do 3º. Spell/&PulseWavePushTitle=Onda de pulso: Empurre Spell/&PulseWaveTitle=Onda de pulso Spell/&SpiritShroudDamageColdDescription=Causa dano adicional de frio. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt index 46be01e7c7..2d3a8594af 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=В следующий раз, когда вы Spell/&LightningArrowTitle=Молниевая стрела Spell/&PsionicBlastDescription=Вы испускаете разрушительную волну ментальной энергии в 30-футовом конусе. Каждое существо в этой области должно совершить спасбросок Ловкости. При провале цель получает 5d8 урона силовым полем, отбрасывается на 20 футов от вас по прямой и падает ничком. При успехе цель получает вдвое меньше урона, не отталкивается и не сбивается с ног. Если вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. Spell/&PsionicBlastTitle=Псионический взрыв -Spell/&PulseWaveDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, либо притягивается к вам на 15 футов, либо отталкивается на 15 футов от вас, в зависимости от выбора, который вы сделали для заклинания. -Spell/&PulseWavePullDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, притягивается к вам на 15 футов. +Spell/&PulseWaveDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, либо притягивается к вам на 15 футов, либо отталкивается на 15 футов от вас, в зависимости от выбора, который вы сделали для заклинания. Когда вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d6, а расстояние вытягивания или толкания увеличивается на 5 футов за каждый уровень ячейки выше 3-го. +Spell/&PulseWavePullDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, притягивается к вам на 15 футов. Когда вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d6, а расстояние вытягивания или толкания увеличивается на 5 футов за каждый уровень ячейки выше 3-го. Spell/&PulseWavePullTitle=Пульсовая волна: тянуть -Spell/&PulseWavePushDescription=Вы создаете сильное давление, выпускаете его в 30-футовом конусе и решаете, будет ли давление тянуть или толкать существа и предметы. Каждое существо в этом конусе должно сделать спасбросок Телосложения. Существо получает урон силой 6d6 при провале или половину урона при успехе. И каждое существо, которое проваливает спасбросок, отталкивается на 15 футов от вас. +Spell/&PulseWavePushDescription=Вы создаете сильное давление, выпускаете его в 30-футовом конусе и решаете, притягивает или отталкивает ли давление существа и предметы. Каждое существо в этом конусе должно сделать спасбросок Телосложения. Существо получает 6d6 урона силой при провале или половину урона при успехе. И каждое существо, которое проваливает спасбросок, отталкивается на 15 футов от вас. Когда вы произносите это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d6, а расстояние, на которое притягиваются или отталкиваются, увеличивается на 5 футов за каждый уровень ячейки выше 3-го. Spell/&PulseWavePushTitle=Импульсная волна: Нажмите Spell/&PulseWaveTitle=Силовая волна Spell/&SpiritShroudDamageColdDescription=Нанесите дополнительный урон холодом. diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt index c1f2f9a669..be701fbb84 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt @@ -66,10 +66,10 @@ Spell/&LightningArrowDescription=下次你在法术持续时间内进行远程 Spell/&LightningArrowTitle=闪电箭矢 Spell/&PsionicBlastDescription=你在 30 尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,其伤害就增加 1d8。 Spell/&PsionicBlastTitle=灵能震爆 -Spell/&PulseWaveDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败的生物将受到 6d6 力场伤害,豁免成功则受到一半伤害。豁免失败的每个生物要么被拉向你 15 英尺,要么被推离你 15 英尺,具体取决于你对法术的选择。 -Spell/&PulseWavePullDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败的生物将受到 6d6 力量伤害,豁免成功则受到一半伤害。豁免失败的每个生物都会被拉向你 15 英尺。 +Spell/&PulseWaveDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物要么被拉向你 15 英尺,要么被推离你 15 英尺,具体取决于你对该法术的选择。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,并且每高于 3 级一个法术位,拉动或推动的距离增加 5 英尺。 +Spell/&PulseWavePullDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物都会被拉向你 15 英尺。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,拉动或推动的距离每高于 3 级增加 5 英尺。 Spell/&PulseWavePullTitle=脉冲波:拉 -Spell/&PulseWavePushDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败的生物将受到 6d6 力量伤害,豁免成功则受到一半伤害。豁免失败的每个生物都会被推离你 15 英尺。 +Spell/&PulseWavePushDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物都会被推离你 15 英尺。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,并且每高于 3 级一个法术位,拉动或推动的距离增加 5 英尺。 Spell/&PulseWavePushTitle=脉冲波:推 Spell/&PulseWaveTitle=脉冲波动 Spell/&SpiritShroudDamageColdDescription=造成额外的冷冻伤害。 From 94b55473dec71ce2a3117a89c910c95d1e2662d9 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 19:14:46 -0700 Subject: [PATCH 15/52] change Psionic Blast into a 4th level spell with an Intelligence saving --- .../SpellDefinition/PsionicBlast.json | 4 +- SolastaUnfinishedBusiness/Displays/_ModUi.cs | 1 - .../Spells/SpellBuildersLevel03.cs | 51 ------------------ .../Spells/SpellBuildersLevel04.cs | 52 +++++++++++++++++++ .../Translations/de/Spells/Spells03-de.txt | 2 - .../Translations/de/Spells/Spells04-de.txt | 2 + .../Translations/en/Spells/Spells03-en.txt | 2 - .../Translations/en/Spells/Spells04-en.txt | 2 + .../Translations/es/Spells/Spells03-es.txt | 2 - .../Translations/es/Spells/Spells04-es.txt | 2 + .../Translations/fr/Spells/Spells03-fr.txt | 2 - .../Translations/fr/Spells/Spells04-fr.txt | 2 + .../Translations/it/Spells/Spells03-it.txt | 2 - .../Translations/it/Spells/Spells04-it.txt | 2 + .../Translations/ja/Spells/Spells03-ja.txt | 2 - .../Translations/ja/Spells/Spells04-ja.txt | 2 + .../Translations/ko/Spells/Spells03-ko.txt | 2 - .../Translations/ko/Spells/Spells04-ko.txt | 2 + .../pt-BR/Spells/Spells03-pt-BR.txt | 2 - .../pt-BR/Spells/Spells04-pt-BR.txt | 2 + .../Translations/ru/Spells/Spells03-ru.txt | 2 - .../Translations/ru/Spells/Spells04-ru.txt | 2 + .../zh-CN/Spells/Spells03-zh-CN.txt | 2 - .../zh-CN/Spells/Spells04-zh-CN.txt | 2 + 24 files changed, 74 insertions(+), 74 deletions(-) diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json index 8ebe6994ef..c225304c2e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json @@ -5,7 +5,7 @@ "compactSubspellsTooltip": false, "implemented": true, "schoolOfMagic": "SchoolEvocation", - "spellLevel": 3, + "spellLevel": 4, "ritual": false, "uniqueInstance": false, "castingTime": "Action", @@ -48,7 +48,7 @@ "endOfEffect": "EndOfTurn", "hasSavingThrow": true, "disableSavingThrowOnAllies": false, - "savingThrowAbility": "Dexterity", + "savingThrowAbility": "Intelligence", "ignoreCover": false, "grantedConditionOnSave": null, "rollSaveOnlyIfRelevantForms": false, diff --git a/SolastaUnfinishedBusiness/Displays/_ModUi.cs b/SolastaUnfinishedBusiness/Displays/_ModUi.cs index 67b34d1414..99be70a0a3 100644 --- a/SolastaUnfinishedBusiness/Displays/_ModUi.cs +++ b/SolastaUnfinishedBusiness/Displays/_ModUi.cs @@ -206,7 +206,6 @@ internal static class ModUi "PowerWordHeal", "PowerWordKill", "PrimalSavagery", - "PsionicBlast", "PsychicLance", "PsychicWhip", "PulseWave", diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs index 77869a9c0f..979307762d 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs @@ -309,57 +309,6 @@ internal static SpellDefinition BuildAdderFangs() #endregion - #region Psionic Blast - - internal static SpellDefinition BuildPsionicBlast() - { - const string NAME = "PsionicBlast"; - - var spell = SpellDefinitionBuilder - .Create(NAME) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.PsionicBlast, 128)) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) - .SetSpellLevel(3) - .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(false) - .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Buff) - .SetRequiresConcentration(true) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetTargetingData(Side.All, RangeType.Self, 6, TargetType.Cone, 6) - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) - .SetSavingThrowData(false, AttributeDefinitions.Dexterity, false, - EffectDifficultyClassComputation.SpellCastingFeature) - .ExcludeCaster() - .SetEffectForms( - EffectFormBuilder - .Create() - .HasSavingThrow(EffectSavingThrowType.Negates) - .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 4) - .Build(), - EffectFormBuilder - .Create() - .HasSavingThrow(EffectSavingThrowType.Negates) - .SetMotionForm(MotionForm.MotionType.FallProne) - .Build(), - EffectFormBuilder - .Create() - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .SetDamageForm(DamageTypePsychic, 5, DieType.D8) - .Build()) - .SetCasterEffectParameters(ViciousMockery) - .SetImpactEffectParameters(DreadfulOmen) - .Build()) - .AddToDB(); - - return spell; - } - - #endregion - #region Pulse Wave internal static SpellDefinition BuildPulseWave() diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs index cb4e902341..407ee9bd9b 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs @@ -261,6 +261,58 @@ internal static SpellDefinition BuildPsychicLance() #endregion + + #region Psionic Blast + + internal static SpellDefinition BuildPsionicBlast() + { + const string NAME = "PsionicBlast"; + + var spell = SpellDefinitionBuilder + .Create(NAME) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.PsionicBlast, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(4) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(false) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Buff) + .SetRequiresConcentration(true) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.All, RangeType.Self, 6, TargetType.Cone, 6) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData(false, AttributeDefinitions.Intelligence, false, + EffectDifficultyClassComputation.SpellCastingFeature) + .ExcludeCaster() + .SetEffectForms( + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.Negates) + .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 4) + .Build(), + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.Negates) + .SetMotionForm(MotionForm.MotionType.FallProne) + .Build(), + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .SetDamageForm(DamageTypePsychic, 5, DieType.D8) + .Build()) + .SetCasterEffectParameters(ViciousMockery) + .SetImpactEffectParameters(DreadfulOmen) + .Build()) + .AddToDB(); + + return spell; + } + + #endregion + #region Faithful Hound internal static SpellDefinition BuildFaithfulHound() diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt index 1081ce6201..bd0c3003dd 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=Während der Zauberdauer sind Sie oder eine Spell/&IntellectFortressTitle=Festung der Intelligenz Spell/&LightningArrowDescription=Wenn Sie während der Wirkungsdauer des Zaubers das nächste Mal einen Fernkampfwaffenangriff ausführen, verwandelt sich die Munition der Waffe oder die Waffe selbst, wenn es sich um eine Wurfwaffe handelt, in einen Blitz. Führen Sie den Angriffswurf wie gewohnt durch. Das Ziel erleidet bei einem Treffer 3W8 Blitzschaden, bei einem Fehlschuss halb so viel Schaden. Unabhängig davon, ob Sie treffen oder verfehlen, muss jede Kreatur im Umkreis von 10 Fuß um das Ziel einen Geschicklichkeitsrettungswurf durchführen. Jede dieser Kreaturen erleidet bei einem fehlgeschlagenen Rettungswurf 2W8 Blitzschaden, bei einem erfolgreichen Rettungswurf halb so viel Schaden. Wenn Sie diesen Zauber mit einem Zauberslot der 4. Stufe oder höher wirken, erhöht sich der Schaden für beide Effekte des Zaubers um 1W8 für jede Slotstufe über der 3. Stufe. Spell/&LightningArrowTitle=Blitzpfeil -Spell/&PsionicBlastDescription=Du entfesselst eine zerstörerische Welle mentaler Kraft in einem 30-Fuß-Kegel. Jede Kreatur in der Umgebung muss einen Geschicklichkeitsrettungswurf machen. Bei einem misslungenen Rettungswurf erleidet das Ziel 5W8 Kraftschaden, wird 20 Fuß direkt von dir weggestoßen und niedergeschlagen. Bei einem erfolgreichen Rettungswurf erleidet das Ziel nur halb so viel Schaden und wird nicht gestoßen oder niedergeschlagen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W8 für jeden Platzlevel über der 3. -Spell/&PsionicBlastTitle=Psi-Explosion Spell/&PulseWaveDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf machen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden oder bei einem erfolgreichen halb so viel Schaden. Und jede Kreatur, deren Rettungswurf misslingt, wird entweder 15 Fuß zu dir gezogen oder 15 Fuß von dir weg geschoben, je nachdem, welche Wahl du für den Zauber getroffen hast. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W6 und die gezogene oder geschobene Distanz erhöht sich um 5 Fuß für jede Platzstufe über der 3. Spell/&PulseWavePullDescription=Du erzeugst starken Druck, entfesselst ihn in einem 30 Fuß großen Kegel und entscheidest, ob der Druck Kreaturen und Objekte zieht oder schiebt. Jede Kreatur in diesem Kegel muss einen Konstitutionsrettungswurf machen. Eine Kreatur erleidet bei einem misslungenen Rettungswurf 6W6 Kraftschaden oder bei einem erfolgreichen halb so viel Schaden. Und jede Kreatur, der der Rettungswurf misslingt, wird 15 Fuß zu dir gezogen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W6 und die gezogene oder geschobene Distanz erhöht sich um 5 Fuß für jede Platzstufe über der 3. Spell/&PulseWavePullTitle=Pulswelle: Ziehen diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt index 480ce17720..4e42bc4972 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=An einem Punkt, den Sie in Reichweite sehen k Spell/&GravitySinkholeTitle=Schwerkraft-Dolinenloch Spell/&IrresistiblePerformanceDescription=Sie weben ein Lied in die Luft und veranlassen diejenigen, die es hören, seine Großartigkeit zu applaudieren. Alle Kreaturen Ihrer Wahl innerhalb eines 30-Fuß-Würfels in Reichweite müssen einen Charisma-Rettungswurf ausführen oder bis zum Beginn Ihres nächsten Zuges gezwungen werden, zu klatschen und zu schreien. Einer Kreatur, die von dir verzaubert ist, misslingt dieser Rettungswurf immer. Eine klatschende Kreatur kann keine Aktionen ausführen, die ihre Hände oder ihren Mund erfordern, kann sich aber ansonsten normal verhalten. Dieser Zauber hat keine Wirkung auf Kreaturen, die gegen Bezauberung immun sind. Spell/&IrresistiblePerformanceTitle=Unwiderstehliche Leistung +Spell/&PsionicBlastDescription=Du entfesselst eine zerstörerische Welle mentaler Kraft in einem 30-Fuß-Kegel. Jede Kreatur in der Umgebung muss einen Intelligenzrettungswurf machen. Bei einem misslungenen Rettungswurf erleidet das Ziel 5W8 psychischen Schaden, wird 20 Fuß direkt von dir weggestoßen und niedergeschlagen. Bei einem erfolgreichen Rettungswurf erleidet das Ziel nur halb so viel Schaden und wird nicht gestoßen oder niedergeschlagen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W8 für jeden Platzlevel über der 3. +Spell/&PsionicBlastTitle=Psi-Explosion Spell/&PsychicLanceDescription=Sie entfesseln eine schimmernde Lanze psychischer Kraft von Ihrer Stirn auf eine Kreatur, die Sie in Reichweite sehen können. Ein Intelligenzrettungswurf muss ihm gelingen, sonst erleidet er 7W6 psychischen Schaden und ist bis zum Ende deines nächsten Zuges außer Gefecht gesetzt. Bei einem erfolgreichen Rettungswurf erleidet die Kreatur den halben Schaden und wird nicht außer Gefecht gesetzt. Auf höheren Ebenen. Wenn Sie diesen Zauber mit einem Zauberslot der 4. Stufe oder höher wirken, erhöht sich der Schaden um 1W6 für jede Slotstufe über der 4. Stufe. Spell/&PsychicLanceTitle=Raulothims psychische Lanze Spell/&StaggeringSmiteDescription=Wenn du während der Dauer dieses Zaubers das nächste Mal eine Kreatur mit einem Waffenangriff triffst, durchdringt deine Waffe Körper und Geist und der Angriff fügt dem Ziel zusätzlich 4W6 psychischen Schaden zu. Das Ziel muss einen Weisheitsrettungswurf durchführen. Bei einem fehlgeschlagenen Rettungswurf hat es bis zum Ende seines nächsten Zuges einen Nachteil bei Angriffswürfen und Fähigkeitsüberprüfungen und kann keine Reaktionen annehmen. diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt index 32587eb9df..2bb172f47a 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=For the duration, you or one willing creatur Spell/&IntellectFortressTitle=Intellect Fortress Spell/&LightningArrowDescription=The next time you make a ranged weapon attack during the spell's duration, the weapon's ammunition, or the weapon itself if it's a thrown weapon, transforms into a bolt of lightning. Make the attack roll as normal. The target takes 3d8 lightning damage on a hit, or half as much damage on a miss. Whether you hit or miss, each creature within 10 feet of the target must make a Dexterity saving throw. Each of these creatures takes 2d8 lightning damage on a failed save, or half as much damage on a successful one. When you cast this spell using a spell slot of 4th level or higher, the damage for both effects of the spell increases by 1d8 for each slot level above 3rd. Spell/&LightningArrowTitle=Lightning Arrow -Spell/&PsionicBlastDescription=You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make a Dexterity saving throw. On a failed save, a target takes 5d8 force damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. -Spell/&PsionicBlastTitle=Psionic Blast Spell/&PulseWaveDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is either pulled 15 feet toward you or pushed 15 feet away from you, depending on the choice you made for the spell. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 and the distance pulled or pushed increases by 5 feet for each slot level above 3rd. Spell/&PulseWavePullDescription=You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is pulled 15 feet toward you. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 and the distance pulled or pushed increases by 5 feet for each slot level above 3rd. Spell/&PulseWavePullTitle=Pulse Wave: Pull diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt index cbf1828dcc..ef9245b6ed 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=A 20-foot-radius sphere of crushing force form Spell/&GravitySinkholeTitle=Gravity Sinkhole Spell/&IrresistiblePerformanceDescription=You weave a song into the air, causing those who hear it to applaud its magnificence. All creatures of your choice inside a 30-foot-cube within range must make a Charisma saving throw or be forced to clap and shout until the start of your next turn. A creature that is charmed by you always fails this saving throw. A clapping creature cannot perform any actions that require their hands or mouth but can otherwise act normally. This spell has no effect on creatures that are immune to charm. Spell/&IrresistiblePerformanceTitle=Irresistible Performance +Spell/&PsionicBlastDescription=You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. +Spell/&PsionicBlastTitle=Psionic Blast Spell/&PsychicLanceDescription=You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. Spell/&PsychicLanceTitle=Raulothim's Psychic Lance Spell/&StaggeringSmiteDescription=The next time you hit a creature with a weapon attack during this spell's duration, your weapon pierces both body and mind, and the attack deals an extra 4d6 psychic damage to the target. The target must make a Wisdom saving throw. On a failed save, it has disadvantage on attack rolls and ability checks, and can't take reactions, until the end of its next turn. diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt index 45835f9e6f..d25d5e33a1 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=Mientras dure, tú o una criatura voluntaria Spell/&IntellectFortressTitle=Fortaleza del intelecto Spell/&LightningArrowDescription=La próxima vez que realices un ataque con arma a distancia durante la duración del hechizo, la munición del arma, o el arma misma si es un arma arrojadiza, se transforma en un rayo. Haz la tirada de ataque normalmente. El objetivo sufre 3d8 daños por rayo con un impacto, o la mitad de daño con un fallo. Ya sea que aciertes o falles, cada criatura a 10 pies del objetivo debe realizar una tirada de salvación de Destreza. Cada una de estas criaturas sufre 2d8 daños por rayo si falla la salvación, o la mitad de daño si tiene éxito. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño por ambos efectos del hechizo aumenta en 1d8 por cada nivel de espacio por encima del 3º. Spell/&LightningArrowTitle=Flecha relámpago -Spell/&PsionicBlastDescription=Desatas una ola destructiva de poder mental en un cono de 30 pies. Cada criatura en el área debe realizar una tirada de salvación de Destreza. En una salvación fallida, un objetivo sufre 5d8 de daño de fuerza, es empujado a 20 pies directamente de ti y queda derribado. Con una salvación exitosa, el objetivo recibe la mitad de daño y no es empujado ni derribado. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d8 por cada nivel de espacio por encima del 3º. -Spell/&PsionicBlastTitle=Explosión psiónica Spell/&PulseWaveDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti o empujada 15 pies lejos de ti, dependiendo de la elección que hayas hecho para el hechizo. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 y la distancia tirada o empujada aumenta en 5 pies por cada nivel de espacio por encima del 3º. Spell/&PulseWavePullDescription=Creas una presión intensa, la desatas en un cono de 30 pies y decides si la presión atrae o empuja a las criaturas y objetos. Cada criatura en ese cono debe realizar una tirada de salvación de Constitución. Una criatura sufre 6d6 de daño de fuerza si falla una salvación, o la mitad de daño si tiene éxito. Y cada criatura que falla la salvación es arrastrada 15 pies hacia ti. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 y la distancia tirada o empujada aumenta en 5 pies por cada nivel de espacio por encima del 3º. Spell/&PulseWavePullTitle=Onda de pulso: tirar diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt index a815279e6c..1069187532 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=Una esfera de fuerza aplastante de 20 pies de Spell/&GravitySinkholeTitle=Sumidero de gravedad Spell/&IrresistiblePerformanceDescription=Tejes una canción en el aire, haciendo que quienes la escuchan aplaudan su magnificencia. Todas las criaturas de tu elección dentro de un cubo de 30 pies dentro del alcance deben realizar una tirada de salvación de Carisma o verse obligadas a aplaudir y gritar hasta el comienzo de tu siguiente turno. Una criatura que está encantada por ti siempre falla esta tirada de salvación. Una criatura que aplaude no puede realizar ninguna acción que requiera sus manos o boca, pero puede actuar normalmente. Este hechizo no tiene ningún efecto sobre criaturas que son inmunes al hechizo. Spell/&IrresistiblePerformanceTitle=Rendimiento irresistible +Spell/&PsionicBlastDescription=Desatas una ola destructiva de poder mental en un cono de 30 pies. Cada criatura en el área debe realizar una tirada de salvación de Inteligencia. En una salvación fallida, un objetivo sufre 5d8 de daño psíquico, es empujado a 20 pies directamente de ti y queda derribado. Con una salvación exitosa, el objetivo recibe la mitad de daño y no es empujado ni derribado. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d8 por cada nivel de espacio por encima del 3º. +Spell/&PsionicBlastTitle=Explosión psiónica Spell/&PsychicLanceDescription=Liberas una lanza brillante de poder psíquico desde tu frente hacia una criatura que puedes ver dentro del alcance. Debe superar una tirada de salvación de Inteligencia o sufrir 7d6 de daño psíquico y quedar incapacitado hasta el final de tu siguiente turno. Con una salvación exitosa, la criatura sufre la mitad del daño y no queda incapacitada. En niveles superiores. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 por cada nivel de espacio por encima del 4º. Spell/&PsychicLanceTitle=Lanza psíquica de Raulothim Spell/&StaggeringSmiteDescription=La próxima vez que golpees a una criatura con un ataque con arma durante la duración de este hechizo, tu arma atravesará tanto el cuerpo como la mente, y el ataque causará 4d6 daños psíquicos adicionales al objetivo. El objetivo debe realizar una tirada de salvación de Sabiduría. En una salvación fallida, tiene desventaja en las tiradas de ataque y pruebas de habilidad, y no puede reaccionar hasta el final de su siguiente turno. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt index bd24b64050..500d56423b 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=Pendant toute la durée du sort, vous ou une Spell/&IntellectFortressTitle=Forteresse intellectuelle Spell/&LightningArrowDescription=La prochaine fois que vous effectuerez une attaque à distance avec une arme pendant la durée du sort, les munitions de l'arme, ou l'arme elle-même s'il s'agit d'une arme de lancer, se transformeront en un éclair. Effectuez le jet d'attaque normalement. La cible subit 3d8 dégâts de foudre en cas de coup, ou la moitié de ces dégâts en cas d'échec. Que vous touchiez ou ratiez votre cible, chaque créature située à moins de 3 mètres de la cible doit effectuer un jet de sauvegarde de Dextérité. Chacune de ces créatures subit 2d8 dégâts de foudre en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts des deux effets du sort augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. Spell/&LightningArrowTitle=Flèche de foudre -Spell/&PsionicBlastDescription=Vous libérez une vague de puissance mentale destructrice dans un cône de 9 mètres. Chaque créature présente dans la zone doit effectuer un jet de sauvegarde de Dextérité. En cas d'échec, la cible subit 5d8 dégâts de force, est poussée à 6 mètres directement de vous et est projetée à terre. En cas de sauvegarde réussie, la cible subit deux fois moins de dégâts et n’est ni poussée ni mise à terre. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. -Spell/&PsionicBlastTitle=Explosion psionique Spell/&PulseWaveDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue à la sauvegarde est soit tirée à 15 pieds vers vous, soit poussée à 15 pieds de vous, selon le choix que vous avez fait pour le sort. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 et la distance tirée ou poussée augmente de 1,50 mètre pour chaque niveau d'emplacement supérieur au 3ème. Spell/&PulseWavePullDescription=Vous créez une pression intense, la libérez dans un cône de 9 mètres et décidez si la pression tire ou pousse les créatures et les objets. Chaque créature dans ce cône doit effectuer un jet de sauvegarde de Constitution. Une créature subit 6d6 dégâts de force en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Et chaque créature qui échoue au jet de sauvegarde est tirée de 15 pieds vers vous. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 et la distance tirée ou poussée augmente de 1,50 mètre pour chaque niveau d'emplacement supérieur au 3ème. Spell/&PulseWavePullTitle=Onde de pouls : tirer diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt index 44191df759..8b20ed8815 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=Une sphère de force écrasante d'un rayon de Spell/&GravitySinkholeTitle=Gouffre gravitationnel Spell/&IrresistiblePerformanceDescription=Vous lancez une chanson dans l'air, ce qui amène ceux qui l'entendent à applaudir sa magnificence. Toutes les créatures de votre choix à l'intérieur d'un cube de 9 mètres à portée doivent effectuer un jet de sauvegarde de Charisme ou être forcées d'applaudir et de crier jusqu'au début de votre prochain tour. Une créature charmée par vous échoue toujours à ce jet de sauvegarde. Une créature qui applaudit ne peut effectuer aucune action nécessitant ses mains ou sa bouche, mais peut autrement agir normalement. Ce sort n'a aucun effet sur les créatures immunisées contre le charme. Spell/&IrresistiblePerformanceTitle=Des performances irrésistibles +Spell/&PsionicBlastDescription=Vous libérez une vague de puissance mentale destructrice dans un cône de 9 mètres. Chaque créature présente dans la zone doit effectuer un jet de sauvegarde d'Intelligence. En cas d'échec, la cible subit 5d8 dégâts psychiques, est poussée à 6 mètres directement de vous et est projetée à terre. En cas de sauvegarde réussie, la cible subit deux fois moins de dégâts et n’est ni poussée ni mise à terre. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. +Spell/&PsionicBlastTitle=Explosion psionique Spell/&PsychicLanceDescription=Vous lancez une lance scintillante de pouvoir psychique depuis votre front sur une créature que vous pouvez voir à portée. Il doit réussir un jet de sauvegarde d'Intelligence ou subir 7d6 dégâts psychiques et être neutralisé jusqu'à la fin de votre prochain tour. En cas de sauvegarde réussie, la créature subit la moitié des dégâts et n'est pas incapable d'agir. Aux niveaux supérieurs. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 pour chaque niveau d'emplacement supérieur au 4e. Spell/&PsychicLanceTitle=Lance psychique de Raulothim Spell/&StaggeringSmiteDescription=La prochaine fois que vous toucherez une créature avec une attaque avec une arme pendant la durée de ce sort, votre arme transperce à la fois le corps et l'esprit, et l'attaque inflige 4d6 dégâts psychiques supplémentaires à la cible. La cible doit effectuer un jet de sauvegarde de Sagesse. En cas d'échec, il est désavantagé aux jets d'attaque et aux tests de caractéristiques, et ne peut pas réagir jusqu'à la fin de son prochain tour. diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt index c09dd7462d..19b50a98e2 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=Per tutta la durata, tu o una creatura conse Spell/&IntellectFortressTitle=Fortezza dell'Intelletto Spell/&LightningArrowDescription=La prossima volta che effettui un attacco con un'arma a distanza durante la durata dell'incantesimo, le munizioni dell'arma, o l'arma stessa se è un'arma da lancio, si trasformano in un fulmine. Effettua il tiro per colpire normalmente. Il bersaglio subisce 3d8 danni da fulmine se colpisce, o la metà di questi danni se fallisce. Sia che colpisca o manchi, ogni creatura entro 3 metri dal bersaglio deve effettuare un tiro salvezza su Destrezza. Ognuna di queste creature subisce 2d8 danni da fulmine se fallisce il tiro salvezza, o la metà di questi danni se lo supera. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno per entrambi gli effetti dell'incantesimo aumenta di 1d8 per ogni livello dello slot superiore al 3°. Spell/&LightningArrowTitle=Freccia fulminea -Spell/&PsionicBlastDescription=Scagli un'onda distruttiva di potere mentale in un cono di 9 metri. Ogni creatura nell'area deve effettuare un tiro salvezza su Destrezza. Se fallisce il tiro salvezza, il bersaglio subisce 5d8 danni da forza, viene spinto a 6 metri direttamente lontano da te e cade prono. Se il tiro salvezza riesce, il bersaglio subisce la metà dei danni e non viene spinto o gettato prono. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d8 per ogni livello dello slot superiore al 3°. -Spell/&PsionicBlastTitle=Esplosione psionica Spell/&PulseWaveDescription=Crei una pressione intensa, la scateni in un cono di 30 piedi e decidi se la pressione tira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà dei danni se lo supera. E ogni creatura che fallisce il tiro salvezza viene tirata verso di te di 15 piedi o spinta lontano da te di 15 piedi, a seconda della scelta che hai fatto per l'incantesimo. Quando lanci questo incantesimo usando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 e la distanza tirata o spinta aumenta di 5 piedi per ogni livello di slot superiore al 3°. Spell/&PulseWavePullDescription=Crei un'intensa pressione, la scateni in un cono di 9 metri e decidi se la pressione attira o spinge creature e oggetti. Ogni creatura in quel cono deve effettuare un tiro salvezza su Costituzione. Una creatura subisce 6d6 danni da forza se fallisce il tiro salvezza, o la metà di questi danni se lo riesce. E ogni creatura che fallisce il tiro salvezza viene trascinata verso di te di 15 piedi. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 e la distanza tirata o spinta aumenta di 1,5 metri per ogni livello dello slot superiore al 3°. Spell/&PulseWavePullTitle=Onda di impulso: tirare diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt index 1a837cbb28..68fda1449e 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=Una sfera di forza schiacciante del raggio di Spell/&GravitySinkholeTitle=Dolina di gravità Spell/&IrresistiblePerformanceDescription=Tessi una canzone nell'aria, facendo sì che coloro che la ascoltano ne applaudano la magnificenza. Tutte le creature di tua scelta all'interno di un cubo di 9 metri entro la gittata devono effettuare un tiro salvezza su Carisma o essere costrette ad applaudire e gridare fino all'inizio del tuo turno successivo. Una creatura affascinata da te fallisce sempre questo tiro salvezza. Una creatura che applaude non può eseguire alcuna azione che richieda l'uso delle mani o della bocca, ma può altrimenti agire normalmente. Questo incantesimo non ha effetto sulle creature immuni allo charme. Spell/&IrresistiblePerformanceTitle=Prestazioni irresistibili +Spell/&PsionicBlastDescription=Scatenerai un'ondata distruttiva di potere mentale in un cono di 9 metri. Ogni creatura nell'area deve effettuare un tiro salvezza su Intelligenza. Se fallisce il tiro salvezza, il bersaglio subisce 5d8 danni psichici, viene spinto a 6 metri direttamente lontano da te e cade prono. Se il tiro salvezza riesce, il bersaglio subisce la metà dei danni e non viene spinto o gettato prono. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d8 per ogni livello dello slot superiore al 3°. +Spell/&PsionicBlastTitle=Esplosione psionica Spell/&PsychicLanceDescription=Scagli una scintillante lancia di potere psichico dalla tua fronte contro una creatura che puoi vedere e che si trova a gittata. Deve riuscire un tiro salvezza su Intelligenza o subire 7d6 danni psichici ed essere incapace fino alla fine del tuo turno successivo. Se il Tiro Salvezza riesce, la creatura subisce la metà dei danni e non diventa Incapace. A livelli più alti. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 per ogni livello dello slot superiore al 4°. Spell/&PsychicLanceTitle=Lancia psichica di Raulothim Spell/&StaggeringSmiteDescription=La prossima volta che colpisci una creatura con un attacco con un'arma durante la durata dell'incantesimo, la tua arma trafigge sia il corpo che la mente e l'attacco infligge 4d6 danni psichici aggiuntivi al bersaglio. Il bersaglio deve effettuare un tiro salvezza su Saggezza. Se fallisce il tiro salvezza, subisce svantaggio ai tiri per colpire e alle prove di caratteristica, e non può effettuare reazioni fino alla fine del suo turno successivo. diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt index e01c10fba5..362df8d7b8 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=持続時間中、あなたまたは範囲 Spell/&IntellectFortressTitle=知性の要塞 Spell/&LightningArrowDescription=呪文の持続時間中に次回遠隔武器攻撃を行うと、武器の弾薬、または投擲武器の場合は武器自体が稲妻に変わります。通常通りに攻撃ロールを行います。ターゲットは命中すると 3d8 の雷ダメージを受け、命中しないとその半分のダメージを受けます。当たるか外れるかにかかわらず、ターゲットから 10 フィート以内にいる各クリーチャーは器用さセーヴィング スローを行わなければなりません。これらのクリーチャーはそれぞれ、セーブに失敗すると 2d8 の雷ダメージを受け、成功するとその半分のダメージを受けます。あなたが第 4 レベル以上の呪文スロットを使用してこの呪文を唱えると、呪文の両方の効果によるダメージは第 3 レベル以上のスロット レベルごとに 1d8 ずつ増加します。 Spell/&LightningArrowTitle=ライトニングアロー -Spell/&PsionicBlastDescription=30 フィートの円錐形に破壊的な精神力の波を解き放ちます。範囲内のクリーチャーはそれぞれ敏捷セーヴィング スローを行なわなければなりません。セーヴィングに失敗すると、ターゲットは 5d8 の力場ダメージを受け、あなたから 20 フィートまっすぐ押し出され、うつ伏せにされます。セーヴィングに成功すると、ターゲットは半分のダメージを受け、押されたりうつ伏せにされたりしません。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、3 レベルを超えるスロット レベルごとにダメージが 1d8 増加します。 -Spell/&PsionicBlastTitle=サイオニックブラスト Spell/&PulseWaveDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に解き放ち、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。その円錐内の各クリーチャーは耐久力セーヴィング スローを行わなければなりません。セーヴィング スローに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィング スローに失敗したクリーチャーはすべて、呪文の選択に応じて、15 フィート引き寄せられるか、15 フィート押し出されます。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、ダメージは 1d6 増加し、引き寄せられる距離または押し出される距離は 3 レベルを超える各スロット レベルごとに 5 フィート増加します。 Spell/&PulseWavePullDescription=強力な圧力を作り出し、それを 30 フィートの円錐状に解き放ち、その圧力がクリーチャーや物体を引き寄せるか押し出すかを決定します。その円錐内の各クリーチャーは耐久力セーヴィング スローを行う必要があります。セーヴィング スローに失敗するとクリーチャーは 6d6 の力場ダメージを受け、成功すると半分のダメージを受けます。セーヴィング スローに失敗するすべてのクリーチャーは、15 フィート、プレイヤーの方へ引き寄せられます。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、ダメージは 1d6 増加し、引き寄せられる距離または押し出される距離は 3 レベルを超える各スロット レベルごとに 5 フィート増加します。 Spell/&PulseWavePullTitle=脈波:プル diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt index b6fc38cb4d..5d615abeb7 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=範囲内で見える地点に半径 6 フィ Spell/&GravitySinkholeTitle=重力シンクホール Spell/&IrresistiblePerformanceDescription=あなたは歌を空中に織り上げ、それを聞いた人々にその素晴らしさを称賛させます。範囲内の 30 フィート立方体内にいる、あなたが選んだすべてのクリーチャーは、魅力セーヴィング スローを行わなければ、あなたの次のターンの開始時まで拍手と叫びを強いられます。あなたに魅了されたクリーチャーは、常にこのセーヴィング スローに失敗します。拍手しているクリーチャーは、手や口を必要とする動作を行うことはできませんが、それ以外は通常どおり行動できます。この呪文は、魅了に耐性のあるクリーチャーには効果がありません。 Spell/&IrresistiblePerformanceTitle=魅力的なパフォーマンス +Spell/&PsionicBlastDescription=30 フィートの円錐形に破壊的な精神力の波を解き放ちます。範囲内のクリーチャーは全員、知力セーヴィング スローを行なわなければなりません。セーヴィング スローに失敗すると、ターゲットは 5d8 の精神ダメージを受け、あなたから 20 フィートまっすぐ押し出され、伏せ状態にされます。セーヴィング スローに成功すると、ターゲットは半分のダメージを受け、押されたり伏せ状態にされたりしません。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、3 レベルを超えるスロット レベルごとにダメージが 1d8 増加します。 +Spell/&PsionicBlastTitle=サイオニックブラスト Spell/&PsychicLanceDescription=あなたは範囲内に見える生き物に向かって額から超能力のきらめく槍を解き放ちます。それは知性セーヴィング・スローに成功するか、7d6の精神的ダメージを受けて次のターンの終わりまで無力化されなければならない。セーブに成功すると、クリーチャーは半分のダメージを受けますが、無力化されません。より高いレベルで。あなたが第 4 レベル以上の呪文スロットを使用してこの呪文を唱えると、ダメージは第 4 レベル以上のスロット レベルごとに 1d6 ずつ増加します。 Spell/&PsychicLanceTitle=ラウロシムのサイキックランス Spell/&StaggeringSmiteDescription=この呪文の持続時間中に次にあなたが武器攻撃でクリーチャーを攻撃するとき、あなたの武器は体と精神の両方を貫通し、その攻撃はターゲットに追加の 4d6 精神的ダメージを与えます。ターゲットはウィズダム・セーヴィング・スローを行わなければなりません。セーブに失敗すると、次のターンの終了時まで、攻撃ロールと能力判定に不利になり、反応を取ることができません。 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt index 752621a82c..32638d683d 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=지속 시간 동안 당신 또는 당신이 Spell/&IntellectFortressTitle=지능의 요새 Spell/&LightningArrowDescription=주문이 지속되는 동안 다음에 원거리 무기 공격을 하면 무기의 탄약 또는 투척 무기인 경우 무기 자체가 번개 화살로 변합니다. 공격 굴림을 정상적으로 수행하십시오. 대상은 적중 시 3d8의 번개 피해를 입거나, 빗나가면 절반의 피해를 입습니다. 명중하든 실패하든, 대상으로부터 10피트 내의 각 생물은 민첩 내성 굴림을 해야 합니다. 이 생물들 각각은 저장 실패 시 2d8의 번개 피해를 입거나, 성공 시 절반의 피해를 입습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면, 주문의 두 효과에 대한 피해는 3레벨 이상의 슬롯 레벨마다 1d8씩 증가합니다. Spell/&LightningArrowTitle=번개 화살 -Spell/&PsionicBlastDescription=당신은 30피트 원뿔 모양으로 파괴적인 정신력의 파동을 일으킵니다. 해당 지역에 있는 각 생물은 민첩 내성 굴림을 해야 합니다. 저장에 실패하면 대상은 5d8의 힘 피해를 입고 바로 20피트 떨어진 곳으로 밀려나며 넘어지게 됩니다. 내성굴림에 성공하면 대상은 절반의 피해를 입고 밀리지도 않고 쓰러지지도 않습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 3레벨 이상의 슬롯 레벨마다 피해가 1d8씩 증가합니다. -Spell/&PsionicBlastTitle=사이오닉 폭발 Spell/&PulseWaveDescription=강렬한 압력을 생성하고 이를 30피트 원뿔형으로 풀어낸 후 압력이 생물과 물체를 끌어당길지 밀어낼지 결정합니다. 해당 원뿔에 있는 각 생물은 건강 내성 굴림을 해야 합니다. 생물은 저장에 실패하면 6d6의 힘 피해를 입거나, 성공하면 절반의 피해를 입습니다. 그리고 내성에 실패한 모든 생물은 주문에 대한 선택에 따라 당신을 향해 15피트 당겨지거나 당신으로부터 15피트 뒤로 밀려납니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 피해는 1d6만큼 증가하고 3레벨 이상의 슬롯 레벨마다 당기거나 밀린 거리는 5피트씩 증가합니다. Spell/&PulseWavePullDescription=당신은 강렬한 압력을 만들고, 30피트 원뿔 모양으로 풀어놓고, 그 압력이 생물과 사물을 끌어당기거나 밀어낼지 결정합니다. 그 원뿔 모양 안에 있는 각 생물은 체력 세이빙 스로우를 해야 합니다. 생물은 세이브에 실패하면 6d6의 포스 데미지를 입거나, 성공하면 절반의 데미지를 입습니다. 그리고 세이브에 실패한 모든 생물은 당신에게 15피트 끌려옵니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 데미지가 1d6 증가하고, 끌거나 밀리는 거리는 3레벨 이상의 슬롯 레벨마다 5피트씩 증가합니다. Spell/&PulseWavePullTitle=펄스파 : 당기기 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt index fb37a2d797..9c0a3bc771 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=반경 20피트의 분쇄력 구체가 범위 Spell/&GravitySinkholeTitle=중력 싱크홀 Spell/&IrresistiblePerformanceDescription=당신은 노래를 공중에 엮어서 듣는 사람들이 그 장엄함에 박수를 치게 만듭니다. 범위 내의 30피트 큐브 안에 있는 당신이 선택한 모든 생물은 카리스마 내성 굴림을 해야 하며 그렇지 않으면 다음 턴이 시작될 때까지 박수를 치거나 소리를 지르도록 강요받아야 합니다. 당신에게 매료된 생물은 항상 이 내성굴림에 실패합니다. 박수치는 생명체는 손이나 입이 필요한 어떤 행동도 수행할 수 없지만 그 외에는 정상적으로 행동할 수 있습니다. 이 주문은 매력에 면역인 생물에게는 효과가 없습니다. Spell/&IrresistiblePerformanceTitle=거부할 수 없는 성능 +Spell/&PsionicBlastDescription=당신은 30피트 원뿔 모양으로 파괴적인 정신력의 파동을 일으킵니다. 그 지역에 있는 각 생물은 지능 내성굴림을 해야 합니다. 저장에 실패하면 대상은 5d8의 정신적 피해를 입고 20피트 떨어진 곳으로 밀려나며 넘어지게 됩니다. 내성굴림에 성공하면 대상은 절반의 피해를 입고 밀리지도 않고 쓰러지지도 않습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 3레벨 이상의 슬롯 레벨마다 피해가 1d8씩 증가합니다. +Spell/&PsionicBlastTitle=사이오닉 폭발 Spell/&PsychicLanceDescription=당신은 범위 내에서 볼 수 있는 생물에게 이마에서 반짝이는 심령력의 창을 발사합니다. 지능 내성 굴림에 성공해야 하며, 그렇지 않으면 7d6의 정신적 피해를 입고 다음 턴이 끝날 때까지 무력화되어야 합니다. 내성굴림에 성공하면 생물은 절반의 피해를 입고 무력화되지 않습니다. 더 높은 수준에서. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 4레벨 이상의 슬롯 레벨마다 피해가 1d6씩 증가합니다. Spell/&PsychicLanceTitle=라울로팀의 정신창 Spell/&StaggeringSmiteDescription=이 주문이 지속되는 동안 다음에 당신이 무기 공격으로 생명체를 공격할 때, 당신의 무기는 몸과 정신을 모두 관통하고 공격은 대상에게 추가로 4d6의 심령 피해를 입힙니다. 대상은 지혜 내성 굴림을 해야 합니다. 저장에 실패하면 공격 굴림과 능력 확인에 불이익을 받고 다음 턴이 끝날 때까지 반응을 취할 수 없습니다. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt index 461df1fe61..ae74ea190d 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=Durante a duração, você ou uma criatura v Spell/&IntellectFortressTitle=Fortaleza do Intelecto Spell/&LightningArrowDescription=Na próxima vez que você fizer um ataque com arma de longo alcance durante a duração da magia, a munição da arma, ou a própria arma, se for uma arma de arremesso, se transforma em um raio. Faça a jogada de ataque normalmente. O alvo sofre 3d8 de dano elétrico se acertar, ou metade desse dano se errar. Quer você acerte ou erre, cada criatura a até 3 metros do alvo deve realizar um teste de resistência de Destreza. Cada uma dessas criaturas sofre 2d8 de dano elétrico se falhar na resistência, ou metade desse dano se obtiver sucesso. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano de ambos os efeitos da magia aumenta em 1d8 para cada nível do espaço acima do 3º. Spell/&LightningArrowTitle=Flecha Relâmpago -Spell/&PsionicBlastDescription=Você libera uma onda destrutiva de poder mental em um cone de 30 pés. Cada criatura na área deve fazer um teste de resistência de Destreza. Em uma falha na resistência, um alvo sofre 5d8 de dano de força, é empurrado 20 pés diretamente para longe de você e é derrubado. Em uma resistência bem-sucedida, um alvo sofre metade do dano e não é empurrado ou derrubado. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d8 para cada nível de espaço acima do 3º. -Spell/&PsionicBlastTitle=Explosão Psiônica Spell/&PulseWaveDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E toda criatura que falhar no teste será puxada 4,5 metros em sua direção ou empurrada 4,5 metros para longe de você, dependendo da escolha que você fez para a magia. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 e a distância puxada ou empurrada aumenta em 1,5 metro para cada nível do espaço acima do 3º. Spell/&PulseWavePullDescription=Você cria uma pressão intensa, libera-a em um cone de 9 metros e decide se a pressão puxa ou empurra criaturas e objetos. Cada criatura naquele cone deve realizar um teste de resistência de Constituição. Uma criatura sofre 6d6 de dano de força se falhar na resistência, ou metade desse dano se obtiver sucesso. E cada criatura que falha no teste é puxada 4,5 metros em sua direção. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 e a distância puxada ou empurrada aumenta em 1,5 metro para cada nível do espaço acima do 3º. Spell/&PulseWavePullTitle=Onda de pulso: puxar diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt index 23a74a1ca9..44c799753d 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=Uma esfera de força esmagadora com 6 metros d Spell/&GravitySinkholeTitle=Sumidouro Gravitacional Spell/&IrresistiblePerformanceDescription=Você tece uma canção no ar, fazendo com que aqueles que a ouvem aplaudam sua magnificência. Todas as criaturas, à sua escolha, dentro de um cubo de 9 metros dentro do alcance devem fazer um teste de resistência de Carisma ou serão forçadas a bater palmas e gritar até o início do seu próximo turno. Uma criatura encantada por você sempre falha neste teste de resistência. Uma criatura que bate palmas não pode realizar nenhuma ação que exija as mãos ou a boca, mas pode agir normalmente. Este feitiço não tem efeito em criaturas imunes a encantamento. Spell/&IrresistiblePerformanceTitle=Desempenho irresistível +Spell/&PsionicBlastDescription=Você libera uma onda destrutiva de poder mental em um cone de 9 metros. Cada criatura na área deve realizar um teste de resistência de Inteligência. Se falhar na resistência, o alvo sofre 5d8 de dano psíquico, é empurrado 6 metros diretamente para longe de você e cai no chão. Se obtiver sucesso, o alvo sofre metade do dano e não é empurrado ou derrubado. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d8 para cada nível do espaço acima do 3º. +Spell/&PsionicBlastTitle=Explosão Psiônica Spell/&PsychicLanceDescription=Você libera uma lança cintilante de poder psíquico de sua testa em uma criatura que você possa ver dentro do alcance. Ele deve ter sucesso em um teste de resistência de Inteligência ou sofrerá 7d6 de dano psíquico e ficará incapacitado até o final do seu próximo turno. Se obtiver sucesso, a criatura sofre metade do dano e não fica incapacitada. Em níveis superiores. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 para cada nível do espaço acima do 4º. Spell/&PsychicLanceTitle=Lança Psíquica de Raulothim Spell/&StaggeringSmiteDescription=Na próxima vez que você atingir uma criatura com um ataque com arma durante a duração desta magia, sua arma perfurará tanto o corpo quanto a mente, e o ataque causará 4d6 de dano psíquico extra ao alvo. O alvo deve fazer um teste de resistência de Sabedoria. Se falhar na resistência, ele terá desvantagem em jogadas de ataque e testes de habilidade, e não poderá realizar reações até o final do próximo turno. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt index 2d3a8594af..a87c7ea773 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=В течение длительности Spell/&IntellectFortressTitle=Крепость интеллекта Spell/&LightningArrowDescription=В следующий раз, когда вы совершите дальнобойную атаку оружием, пока активно это заклинание, ваш боеприпас или само оружие, если это метательное оружие, превращается в разряд молнии. Совершите бросок атаки как обычно. Вместо обычного урона от оружия цель при попадании получает урон электричеством 3d8, или половину урона при промахе. Вне зависимости от попадания или промаха, все существа в пределах 10 футов от цели должны совершить спасбросок Ловкости. При провале эти существа получают урон электричеством 2d8, или половину урона при успехе. Если вы накладываете это заклинание, используя ячейку 4-го уровня или выше, урон от обоих эффектов увеличивается на 1d8 за каждый уровень ячейки выше третьего. Spell/&LightningArrowTitle=Молниевая стрела -Spell/&PsionicBlastDescription=Вы испускаете разрушительную волну ментальной энергии в 30-футовом конусе. Каждое существо в этой области должно совершить спасбросок Ловкости. При провале цель получает 5d8 урона силовым полем, отбрасывается на 20 футов от вас по прямой и падает ничком. При успехе цель получает вдвое меньше урона, не отталкивается и не сбивается с ног. Если вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. -Spell/&PsionicBlastTitle=Псионический взрыв Spell/&PulseWaveDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, либо притягивается к вам на 15 футов, либо отталкивается на 15 футов от вас, в зависимости от выбора, который вы сделали для заклинания. Когда вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d6, а расстояние вытягивания или толкания увеличивается на 5 футов за каждый уровень ячейки выше 3-го. Spell/&PulseWavePullDescription=Вы создаете сильное давление, выпускаете его в виде 30-футового конуса и решаете, будет ли давление притягивать или толкать существ и объекты. Каждое существо в этом конусе должно совершить спасбросок Телосложения. Существо получает урон силовым полем 6d6 при провале или половину этого урона при успехе. И каждое существо, провалившее спасбросок, притягивается к вам на 15 футов. Когда вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, урон увеличивается на 1d6, а расстояние вытягивания или толкания увеличивается на 5 футов за каждый уровень ячейки выше 3-го. Spell/&PulseWavePullTitle=Пульсовая волна: тянуть diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt index 79e653d3be..2e78b66670 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=Сфера разрушительной сил Spell/&GravitySinkholeTitle=Центр притяжения Spell/&IrresistiblePerformanceDescription=Вы вплетаете в потоки воздуха песню, заставляя всех, кто её слышит, аплодировать её великолепию. Все существа по вашему выбору, находящиеся в 30-футовом кубе в пределах дистанции, должны пройти спасбросок Харизмы или будут вынуждены хлопать и кричать до начала вашего следующего хода. Существо, очарованное вами, всегда проваливает этот спасбросок. Хлопающее существо не может выполнять никаких действий, требующих использования рук или рта, но в остальном может действовать нормально. Это заклинание не действует на существ, невосприимчивых к эффектам очарования. Spell/&IrresistiblePerformanceTitle=Неотразимое исполнение +Spell/&PsionicBlastDescription=Вы высвобождаете разрушительную волну ментальной силы в 30-футовом конусе. Каждое существо в области должно совершить спасбросок по Интеллекту. При провале цель получает психический урон 5d8, отталкивается на 20 футов прямо от вас и сбивается с ног. При успешном спасброске цель получает вдвое меньше урона, ее не толкают и не сбивают с ног. Когда вы накладываете это заклинание, используя ячейку 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. +Spell/&PsionicBlastTitle=Псионический Взрыв Spell/&PsychicLanceDescription=Вы выпускаете мерцающее копье психической силы из своего лба в существо, которое вы можете видеть в пределах дистанции. Цель должна совершить спасбросок Интеллекта. В случае провала цель получает 7d6 урона психической энергией и становится недееспособной до начала вашего следующего хода. В случае успеха существо получает половину этого урона и остаётся дееспособным. Если вы накладываете это заклинание, используя ячейку 5-го уровня или выше, урон увеличивается на 1d6 за каждый уровень ячейки выше 4-го. Spell/&PsychicLanceTitle=Психическое копьё Раулотима Spell/&StaggeringSmiteDescription=В следующий раз, когда вы попадёте по существу рукопашной атакой оружием, пока активно это заклинание, ваша атака пронзает не только его тело, но и сознание, и атака дополнительно наносит цели 4d6 урона психической энергией. Цель должна совершить спасбросок Мудрости. При провале она до конца своего следующего хода совершает с помехой броски атаки и проверки характеристик, а также не может совершать реакции. diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt index be701fbb84..5351db6ed4 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt @@ -64,8 +64,6 @@ Spell/&IntellectFortressDescription=在持续时间内,您或您能看到的 Spell/&IntellectFortressTitle=智能壁垒 Spell/&LightningArrowDescription=下次你在法术持续时间内进行远程武器攻击时,武器的弹药或武器本身(如果是投掷武器)会转变成一道闪电。正常进行攻击检定。命中时目标会受到 3d8 闪电伤害,未击中时会受到一半伤害。无论你击中还是未击中,距离目标 10 尺内的每个生物都必须进行一次敏捷豁免。这些生物中的每一个在豁免失败时都会受到 2d8 闪电伤害,或者在成功豁免时受到一半的伤害。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,上述两种闪电伤害就各增加 1d8。 Spell/&LightningArrowTitle=闪电箭矢 -Spell/&PsionicBlastDescription=你在 30 尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,其伤害就增加 1d8。 -Spell/&PsionicBlastTitle=灵能震爆 Spell/&PulseWaveDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物要么被拉向你 15 英尺,要么被推离你 15 英尺,具体取决于你对该法术的选择。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,并且每高于 3 级一个法术位,拉动或推动的距离增加 5 英尺。 Spell/&PulseWavePullDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物都会被拉向你 15 英尺。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,拉动或推动的距离每高于 3 级增加 5 英尺。 Spell/&PulseWavePullTitle=脉冲波:拉 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt index 9acecddf66..5086c3792b 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt @@ -38,6 +38,8 @@ Spell/&GravitySinkholeDescription=一个半径为 20 尺的破碎球体会在你 Spell/&GravitySinkholeTitle=引力裂沟 Spell/&IrresistiblePerformanceDescription=你将一首歌曲编织到空中,让听到它的人为它的壮丽而鼓掌。30 尺立方体范围内你选择的所有生物都必须进行魅力豁免检定,否则将被迫拍手喊叫,直到你的下回合开始。被你魅惑的生物总是无法通过豁免检定。拍手的生物不能执行任何需要用手或嘴的动作,但可以正常行动。该法术对免疫魅惑的生物没有效果。 Spell/&IrresistiblePerformanceTitle=动人演出 +Spell/&PsionicBlastDescription=你在 30 英尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行智力豁免检定。如果豁免失败,目标将受到 5d8 精神伤害,被推离你 20 英尺,并被击倒。如果豁免成功,目标将受到一半伤害,并且不会被推离或击倒。当你使用 4 级或更高级别的法术位施放此法术时,伤害每高于 3 级增加 1d8。 +Spell/&PsionicBlastTitle=灵能冲击 Spell/&PsychicLanceDescription=你从前额向范围内你能看到的生物释放出一道闪烁着灵能之力的长矛。它必须在智力豁免检定中成功,否则会受到 7d6 心灵伤害并失能,直到你的下一回合结束。豁免成功后,该生物会受到一半伤害并且不会失能。在更高的层次上。当你使用 4 环或更高环阶的法术位施放此法术时,每高于 4 环的法术位环阶,伤害就会增加 1d6。 Spell/&PsychicLanceTitle=劳洛希姆心灵长枪 Spell/&StaggeringSmiteDescription=在此法术的持续时间内,下次你用武器攻击命中一个生物时,你的武器会刺穿身体和心灵,并且攻击会对目标造成额外的 4d6 心灵伤害。目标必须进行一次感知豁免。豁免失败时,它在攻击检定和能力检定上具有劣势,并且不能做出反应,直到它的下一轮结束。 From 7c0ec1d1734e7e425455c24937cc8ed60ae07fb8 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 19:14:56 -0700 Subject: [PATCH 16/52] update docs --- Documentation/Feats.md | 2 +- Documentation/Spells.md | 88 ++++++++++++++++++------------------- Documentation/Subclasses.md | 2 +- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/Documentation/Feats.md b/Documentation/Feats.md index 7761f4787b..d6c5589823 100644 --- a/Documentation/Feats.md +++ b/Documentation/Feats.md @@ -485,7 +485,7 @@ When you reduce a target to 0 HP using a melee weapon attack on your turn, enemi # 99. - *Metamagic Adept* © [UB] -You learn two metamagic options of your choice from the sorcerer class and gain half your proficiency bonus rounded up in sorcery points to spend on it. +You learn two metamagic options of your choice from the sorcerer class and gain half your proficiency bonus (rounded down) in sorcery points to spend on it. # 100. - Might of the Iron Legion [SOL] diff --git a/Documentation/Spells.md b/Documentation/Spells.md index 0199817d90..5c7b301be1 100644 --- a/Documentation/Spells.md +++ b/Documentation/Spells.md @@ -765,169 +765,169 @@ Instantly heals up to six allies you can see. Touch one willing creature to give them resistance to this damage type. -# 186. - *Psionic Blast* © (V) level 3 Evocation [Concentration] [UB] +# 186. - *Pulse Wave* © (V,S) level 3 Evocation [UB] -You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make a Dexterity saving throw. On a failed save, a target takes 5d8 force damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. +You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is either pulled 15 feet toward you or pushed 15 feet away from you, depending on the choice you made for the spell. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 and the distance pulled or pushed increases by 5 feet for each slot level above 3rd. -# 187. - *Pulse Wave* © (V,S) level 3 Evocation [UB] - -Hurl enemies away with intense gravitational pressure. - -# 188. - Remove Curse (V,S) level 3 Abjuration [SOL] +# 187. - Remove Curse (V,S) level 3 Abjuration [SOL] Removes all curses affecting the target. -# 189. - Revivify (M,V,S) level 3 Necromancy [SOL] +# 188. - Revivify (M,V,S) level 3 Necromancy [SOL] Brings one creature back to life, up to 1 minute after death. -# 190. - Sleet Storm (V,S) level 3 Conjuration [Concentration] [SOL] +# 189. - Sleet Storm (V,S) level 3 Conjuration [Concentration] [SOL] Creates an area where the ground is slippery, vision is obscured, and concentration is harder. -# 191. - Slow (V,S) level 3 Transmutation [Concentration] [SOL] +# 190. - Slow (V,S) level 3 Transmutation [Concentration] [SOL] Slows and impairs the actions of up to 6 creatures. -# 192. - Spirit Guardians (V,S) level 3 Conjuration [Concentration] [SOL] +# 191. - Spirit Guardians (V,S) level 3 Conjuration [Concentration] [SOL] Call forth spirits to protect you. -# 193. - *Spirit Shroud* © (V,S) level 3 Necromancy [Concentration] [UB] +# 192. - *Spirit Shroud* © (V,S) level 3 Necromancy [Concentration] [UB] You call forth spirits of the dead, which flit around you for the spell's duration. The spirits are intangible and invulnerable. Until the spell ends, any attack you make deals 1d8 extra damage when you hit a creature within 10 ft of you. This damage is radiant, necrotic, or cold (your choice when you cast the spell). Any creature that takes this damage can't regain hit points until the start of your next turn. In addition, any enemy creature within 10ft of you when you cast, or that enters or starts its turn in that range has its movement speed lowered by 10ft until start of its next turn. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for every two slot levels above 3rd. -# 194. - Stinking Cloud (V,S) level 3 Conjuration [Concentration] [SOL] +# 193. - Stinking Cloud (V,S) level 3 Conjuration [Concentration] [SOL] Create a cloud of incapacitating, noxious gas. -# 195. - *Thunder Step* © (V) level 3 Conjuration [UB] +# 194. - *Thunder Step* © (V) level 3 Conjuration [UB] You teleport yourself to an unoccupied space you can see within range. Immediately after you disappear, a thunderous boom sounds, and each creature within 10 feet of the space you left must make a Constitution saving throw, taking 3d10 thunder damage on a failed save, or half as much damage on a successful one. You can also teleport one willing ally. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d10 for each slot level above 3rd. -# 196. - Tongues (V) level 3 Divination [SOL] +# 195. - Tongues (V) level 3 Divination [SOL] Grants knowledge of all languages for one hour. -# 197. - Vampiric Touch (V,S) level 3 Necromancy [Concentration] [SOL] +# 196. - Vampiric Touch (V,S) level 3 Necromancy [Concentration] [SOL] Grants you a life-draining melee attack for one minute. -# 198. - Wind Wall (V,S) level 3 Evocation [Concentration] [SOL] +# 197. - Wind Wall (V,S) level 3 Evocation [Concentration] [SOL] Create a wall of wind that causes damage, pushes creatures and objects away, and disperses fogs and gases. -# 199. - Winter's Breath (V,S) level 3 Conjuration [UB] +# 198. - Winter's Breath (V,S) level 3 Conjuration [UB] Create a blast of cold wind to chill your enemies and knock them prone. -# 200. - *Aura of Life* © (V) level 4 Abjuration [Concentration] [UB] +# 199. - *Aura of Life* © (V) level 4 Abjuration [Concentration] [UB] Life-preserving energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. Each non-hostile creature in the aura, including you, has resistance to necrotic damage, and its hit point maximum can't be reduced. In addition, a non-hostile, living creature regains 1 hit point when it starts its turn in the aura with 0 hit points. -# 201. - *Aura of Purity* © (V) level 4 Abjuration [Concentration] [UB] +# 200. - *Aura of Purity* © (V) level 4 Abjuration [Concentration] [UB] Purifying energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. Each non-hostile creature in the aura, including you, can't become diseased, has resistance to poison damage, and has advantage on saving throws against effects that cause any of the following conditions: blinded, charmed, deafened, frightened, paralyzed, poisoned, and stunned. -# 202. - Banishment (V,S) level 4 Abjuration [Concentration] [SOL] +# 201. - Banishment (V,S) level 4 Abjuration [Concentration] [SOL] Banishes a creature as long as you concentrate. The creature can be permanently banished if it is extraplanar. -# 203. - Black Tentacles (V,S) level 4 Conjuration [Concentration] [SOL] +# 202. - Black Tentacles (V,S) level 4 Conjuration [Concentration] [SOL] Conjures black tentacles that restrain and damage creatures within the area of effect. -# 204. - Blessing of Rime (V,S) level 4 Evocation [UB] +# 203. - Blessing of Rime (V,S) level 4 Evocation [UB] You summon a chill wind that numbs the pain of your allies. Choose up to three creatures within range. Each creature gains 3d8 temporary hit points for the duration. While a creature has these hit points, if it would make a Constitution saving throw, it gains advantage on the roll. When you cast this spell using a spell slot of 5th level or higher, the temporary hit points increase by 1d8 for each slot level above 4th. -# 205. - Blight (V,S) level 4 Necromancy [SOL] +# 204. - Blight (V,S) level 4 Necromancy [SOL] Drains life from a creature, causing massive necrotic damage. -# 206. - Brain Bulwark (V) level 4 Abjuration [UB] +# 205. - Brain Bulwark (V) level 4 Abjuration [UB] For the duration, you or one willing creature you can see within range has resistance to psychic damage, as well as Immunity to the Charmed, Frightened, Fear, Mind dominated and Mind controlled conditions. -# 207. - Confusion (V,S) level 4 Enchantment [Concentration] [SOL] +# 206. - Confusion (V,S) level 4 Enchantment [Concentration] [SOL] Creates confusion and erratic behavior in a creature, possibly leading it to attack its allies. -# 208. - Conjure 4 Elementals (V,S) level 4 Conjuration [Concentration] [SOL] +# 207. - Conjure 4 Elementals (V,S) level 4 Conjuration [Concentration] [SOL] 4 elementals are conjured (CR 1/2). -# 209. - Conjure Minor Elementals (V,S) level 4 Conjuration [Concentration] [SOL] +# 208. - Conjure Minor Elementals (V,S) level 4 Conjuration [Concentration] [SOL] Conjure elemental creatures under your command, which are dismissed when the spell ends or is broken. -# 210. - Death Ward (V,S) level 4 Abjuration [SOL] +# 209. - Death Ward (V,S) level 4 Abjuration [SOL] Protects the creature once against instant death or being reduced to 0 hit points. -# 211. - Dimension Door (V) level 4 Conjuration [SOL] +# 210. - Dimension Door (V) level 4 Conjuration [SOL] Transfers the caster and a friendly creature to a specified destination. -# 212. - Dominate Beast (V,S) level 4 Enchantment [Concentration] [SOL] +# 211. - Dominate Beast (V,S) level 4 Enchantment [Concentration] [SOL] Grants you control over an enemy beast. -# 213. - Dreadful Omen (V,S) level 4 Enchantment [SOL] +# 212. - Dreadful Omen (V,S) level 4 Enchantment [SOL] You whisper dreadful words that cause immense mental anguish in your enemies. On a failed wisdom saving throw, they take psychic damage and become frightened until the end of their next turn, moving away from you as much as possible. On a successful save, they take half as much damage and are not frightened. -# 214. - Fire Shield (V,S) level 4 Evocation [SOL] +# 213. - Fire Shield (V,S) level 4 Evocation [SOL] Grants resistance to fire or cold, and damages creatures attacking the caster with melee attacks. -# 215. - Freedom of Movement (V,S) level 4 Abjuration [SOL] +# 214. - Freedom of Movement (V,S) level 4 Abjuration [SOL] Grants immunity to movement restrictions, as well as being paralyzed or restrained. -# 216. - Giant Insect (V,S) level 4 Transmutation [Concentration] [SOL] +# 215. - Giant Insect (V,S) level 4 Transmutation [Concentration] [SOL] Conjures a giant version of a natural insect or arthropod. -# 217. - *Gravity Sinkhole* © (V,S) level 4 Evocation [UB] +# 216. - *Gravity Sinkhole* © (V,S) level 4 Evocation [UB] A 20-foot-radius sphere of crushing force forms at a point you can see within range and tugs at the creatures there. Each creature in the sphere must make a Constitution saving throw. On a failed save, the creature takes 5d10 force damage, and is pulled in a straight line toward the center of the sphere, ending in an unoccupied space as close to the center as possible. On a successful save, the creature takes half as much damage and isn't pulled. When you cast this spell using a spell slot of 5th level or higher, the damage increases by 1d10 for each slot level above 4th. -# 218. - Greater Invisibility (V,S) level 4 Illusion [Concentration] [SOL] +# 217. - Greater Invisibility (V,S) level 4 Illusion [Concentration] [SOL] Target becomes invisible for the duration, even when attacking or casting spells. -# 219. - Guardian of Faith (V) level 4 Conjuration [SOL] +# 218. - Guardian of Faith (V) level 4 Conjuration [SOL] Conjures a large spectral guardian that damages approaching enemies. -# 220. - *Guardian of Nature* © (V) level 4 Transmutation [Concentration] [UB] +# 219. - *Guardian of Nature* © (V) level 4 Transmutation [Concentration] [UB] A nature spirit answers your call and transforms you into a powerful guardian. The transformation lasts until the spell ends. You choose between a Beast or a Tree form. -# 221. - Ice Storm (V,S) level 4 Evocation [SOL] +# 220. - Ice Storm (V,S) level 4 Evocation [SOL] Causes bludgeoning and cold damage in the area, and turns the ground into difficult terrain. -# 222. - Identify Creatures (V,S) level 4 Divination [SOL] +# 221. - Identify Creatures (V,S) level 4 Divination [SOL] Reveals full bestiary knowledge for the affected creatures. -# 223. - Irresistible Performance (V) level 4 Enchantment [UB] +# 222. - Irresistible Performance (V) level 4 Enchantment [UB] You weave a song into the air, causing those who hear it to applaud its magnificence. All creatures of your choice inside a 30-foot-cube within range must make a Charisma saving throw or be forced to clap and shout until the start of your next turn. A creature that is charmed by you always fails this saving throw. A clapping creature cannot perform any actions that require their hands or mouth but can otherwise act normally. This spell has no effect on creatures that are immune to charm. -# 224. - *Mordenkainen's Faithful Hound* © (V,S) level 4 Conjuration [UB] +# 223. - *Mordenkainen's Faithful Hound* © (V,S) level 4 Conjuration [UB] You conjure a phantom watchdog in an unoccupied space that you can see within range, where it remains for the duration. The hound has Darkvision up to 60 ft, Truesight up to 80 ft, is invisible to all creatures except you and can't be harmed. During each of your turns, the hound can attempt to bite one creature within 5 feet of it that is hostile to you as a free action. The hound's attack bonus is equal to your spellcasting ability modifier + your proficiency bonus. On a hit, it deals 4d8 piercing damage. -# 225. - Phantasmal Killer (V,S) level 4 Illusion [Concentration] [SOL] +# 224. - Phantasmal Killer (V,S) level 4 Illusion [Concentration] [SOL] Causes psychic damage to the target creature with each turn, unless a saving throw is successful or the effect ends. +# 225. - Psionic Blast (V) level 4 Evocation [Concentration] [UB] + +You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. + # 226. - *Raulothim's Psychic Lance* © (V) level 4 Enchantment [UB] You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. diff --git a/Documentation/Subclasses.md b/Documentation/Subclasses.md index 0d71641e89..498d7fb22a 100644 --- a/Documentation/Subclasses.md +++ b/Documentation/Subclasses.md @@ -4875,7 +4875,7 @@ You gain proficiency in the acrobat skill. * Acrobat Protector -You add half your proficiency bonus to your armor class while wielding a quarterstaff in two hands, and you are wearing no armor or light armor. +You add half your proficiency bonus (rounded down) to your armor class while wielding a quarterstaff in two hands, and you are wearing no armor or light armor. * Acrobat Trooper From f182cf3bbe359d794374d99ea8ea3711957c5e5c Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 22:14:15 -0700 Subject: [PATCH 17/52] add IMoveStepFinished interface --- .../Interfaces/IMoveStepFinished.cs | 6 ++++ .../CharacterActionMoveStepWalkPatcher.cs | 32 +++++++++++++++++++ .../GameLocationBattleManagerPatcher.cs | 13 ++++++++ 3 files changed, 51 insertions(+) create mode 100644 SolastaUnfinishedBusiness/Interfaces/IMoveStepFinished.cs create mode 100644 SolastaUnfinishedBusiness/Patches/CharacterActionMoveStepWalkPatcher.cs diff --git a/SolastaUnfinishedBusiness/Interfaces/IMoveStepFinished.cs b/SolastaUnfinishedBusiness/Interfaces/IMoveStepFinished.cs new file mode 100644 index 0000000000..8f8d6cb28e --- /dev/null +++ b/SolastaUnfinishedBusiness/Interfaces/IMoveStepFinished.cs @@ -0,0 +1,6 @@ +namespace SolastaUnfinishedBusiness.Interfaces; + +public interface IMoveStepFinished +{ + public void MoveStepFinished(GameLocationCharacter mover); +} diff --git a/SolastaUnfinishedBusiness/Patches/CharacterActionMoveStepWalkPatcher.cs b/SolastaUnfinishedBusiness/Patches/CharacterActionMoveStepWalkPatcher.cs new file mode 100644 index 0000000000..a1c748a58e --- /dev/null +++ b/SolastaUnfinishedBusiness/Patches/CharacterActionMoveStepWalkPatcher.cs @@ -0,0 +1,32 @@ +using HarmonyLib; +using JetBrains.Annotations; +using SolastaUnfinishedBusiness.Api.GameExtensions; +using SolastaUnfinishedBusiness.Interfaces; + +namespace SolastaUnfinishedBusiness.Patches; + +[UsedImplicitly] +public static class CharacterActionMoveStepWalkPatcher +{ + internal static bool IsCharacterActionMoveStepWalk; + + //PATCH: support for `IMoveStepFinished` + [HarmonyPatch(typeof(CharacterActionMoveStepWalk), + nameof(CharacterActionMoveStepWalk.ChangeEndProneStatusIfNecessary))] + [UsedImplicitly] + public static class ChangeEndProneStatusIfNecessary_Patch + { + [UsedImplicitly] + public static void Prefix(CharacterActionMoveStepWalk __instance) + { + IsCharacterActionMoveStepWalk = true; + + var mover = __instance.ActingCharacter; + + foreach (var moveStepFinished in mover.RulesetCharacter.GetSubFeaturesByType()) + { + moveStepFinished.MoveStepFinished(mover); + } + } + } +} diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs index b1510e4fa0..e12ce95578 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs @@ -274,6 +274,19 @@ public static IEnumerator Postfix( yield return values.Current; } + //PATCH: support for `IMoveStepFinished` + if (CharacterActionMoveStepWalkPatcher.IsCharacterActionMoveStepWalk) + { + CharacterActionMoveStepWalkPatcher.IsCharacterActionMoveStepWalk = false; + } + else + { + foreach (var moveStepFinished in mover.RulesetCharacter.GetSubFeaturesByType()) + { + moveStepFinished.MoveStepFinished(mover); + } + } + if (__instance.Battle == null || mover.RulesetCharacter is not { IsDeadOrDyingOrUnconscious: false }) { From c09edc7f82614f31e4c7cf86a775f212b97b6887 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 22:56:11 -0700 Subject: [PATCH 18/52] update translations --- Documentation/Spells.md | 302 +++++++++--------- .../Translations/de/Spells/Spells03-de.txt | 2 + .../Translations/en/Spells/Spells03-en.txt | 2 + .../Translations/es/Spells/Spells03-es.txt | 2 + .../Translations/fr/Spells/Spells03-fr.txt | 2 + .../Translations/it/Spells/Spells03-it.txt | 2 + .../Translations/ja/Spells/Spells03-ja.txt | 2 + .../Translations/ko/Spells/Spells03-ko.txt | 2 + .../pt-BR/Spells/Spells03-pt-BR.txt | 2 + .../Translations/ru/Spells/Spells03-ru.txt | 2 + .../zh-CN/Spells/Spells03-zh-CN.txt | 2 + 11 files changed, 173 insertions(+), 149 deletions(-) diff --git a/Documentation/Spells.md b/Documentation/Spells.md index 5c7b301be1..e89d483c06 100644 --- a/Documentation/Spells.md +++ b/Documentation/Spells.md @@ -660,407 +660,411 @@ You invoke both death and life upon a 10-foot-radius sphere centered on an ally. You create the visage of a massive green snake that appears for an instant before bearing down on your foe. Choose a creature you can see within range. The target must make a constitution saving throw, taking 4d10 poison damage on a failure, or half as much damage on a successful one. A creature that fails its saving throw is also poisoned, and its speed is halved while poisoned by this spell. At the end of each of its turns, a target may make a constitution saving throw, ending the poison on a success. Otherwise, the poison lasts for 1 minute. When you cast this spell using a spell slot of 4th level or higher, you may target an additional creature within range for each slot level above 3rd. -# 160. - *Aura of Vitality* © (V) level 3 Evocation [Concentration] [UB] +# 160. - *Ashardalon's Stride* © (V,S) level 3 Transmutation [Concentration] [UB] + +The billowing flames of a dragon blast from your feet, granting you explosive speed. For the duration, your speed increases by 20 feet and moving doesn't provoke opportunity attacks. When you move within 5 feet of a creature or an object that isn’t being worn or carried, it takes 1d6 fire damage from your trail of heat. A creature or object can take this damage only once during a turn.When you cast this spell using a spell slot of 4th level or higher, increase your speed by 5 feet for each spell slot level above 3rd. The spell deals an additional 1d6 fire damage for each slot level above 3rd. + +# 161. - *Aura of Vitality* © (V) level 3 Evocation [Concentration] [UB] Healing energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. You can use a bonus action to cause one creature in the aura (including you) to regain 2d6 hit points. -# 161. - Beacon of Hope (V,S) level 3 Abjuration [Concentration] [SOL] +# 162. - Beacon of Hope (V,S) level 3 Abjuration [Concentration] [SOL] Raise hope and vitality. -# 162. - Bestow Curse (V,S) level 3 Necromancy [Concentration] [SOL] +# 163. - Bestow Curse (V,S) level 3 Necromancy [Concentration] [SOL] Curses a creature you can touch. -# 163. - *Blinding Smite* © (V) level 3 Evocation [Concentration] [UB] +# 164. - *Blinding Smite* © (V) level 3 Evocation [Concentration] [UB] On your next hit your weapon flares with a bright light, and the attack deals an extra 3d8 radiant damage to the target. Additionally, the target must succeed on a Constitution saving throw or be blinded until the spell ends. 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. -# 164. - Call Lightning (V,S) level 3 Conjuration [Concentration] [SOL] +# 165. - Call Lightning (V,S) level 3 Conjuration [Concentration] [SOL] Conjures a storm cloud from which you can call a vertical bolt of lightning to strike targets, dealing 3D10 lightning damage. Another bolt can be repeated every turn by using an action. -# 165. - Conjure Animal (V,S) level 3 Conjuration [Concentration] [SOL] +# 166. - Conjure Animal (V,S) level 3 Conjuration [Concentration] [SOL] Summon spirits in the form of beasts to help you in battle -# 166. - Corrupting Bolt (V,S) level 3 Necromancy [UB] +# 167. - Corrupting Bolt (V,S) level 3 Necromancy [UB] You can fire a pulse of necrotic energy that causes a creature's body to begin to wither and decay. Make a ranged attack against a creature. On a hit, the target takes 4d8 necrotic damage and must succeed a Constitution saving throw. On a failed saving throw, the next time you or an ally of yours hits the corrupted creature with an attack before the end of your next turn, the creature has vulnerability to all of that attack's damage, and then the corruption ends. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. -# 167. - Counterspell (S) level 3 Abjuration [SOL] +# 168. - Counterspell (S) level 3 Abjuration [SOL] Interrupt an enemy's spellcasting. -# 168. - Create Food (S) level 3 Conjuration [SOL] +# 169. - Create Food (S) level 3 Conjuration [SOL] Conjure 15 units of food. -# 169. - *Crusader's Mantle* © (V) level 3 Evocation [Concentration] [UB] +# 170. - *Crusader's Mantle* © (V) level 3 Evocation [Concentration] [UB] Surround yourself with a magical aura. Allies within the aura gain a bonus 1d4 radiant damage on their attacks. -# 170. - Daylight (V,S) level 3 Evocation [SOL] +# 171. - Daylight (V,S) level 3 Evocation [SOL] Summon a globe of bright light. -# 171. - Dispel Magic (V,S) level 3 Abjuration [SOL] +# 172. - Dispel Magic (V,S) level 3 Abjuration [SOL] End active spells on a creature or object. -# 172. - *Elemental Weapon* © (V,S) level 3 Transmutation [Concentration] [UB] +# 173. - *Elemental Weapon* © (V,S) level 3 Transmutation [Concentration] [UB] Imbue a non-magical weapon with elemental magic. It gains a +1 to attack and damage rolls, and it gains 1d4 of the corresponding element's damage. When casting with a 5 or 6 spell slots, the effects increased by one die while casting at a spell slot 7 or higher increases the effects by 2. -# 173. - Fear (V,S) level 3 Illusion [Concentration] [SOL] +# 174. - Fear (V,S) level 3 Illusion [Concentration] [SOL] Frighten creatures and force them to flee. -# 174. - Fireball (V,S) level 3 Evocation [SOL] +# 175. - Fireball (V,S) level 3 Evocation [SOL] Launch a fireball that explodes from a point of your choosing. -# 175. - *Flame Arrows* © (M,V,S) level 3 Transmutation [Concentration] [UB] +# 176. - *Flame Arrows* © (M,V,S) level 3 Transmutation [Concentration] [UB] You must be wielding a ranged weapon. When a target is hit by it, the target takes an extra 1d6 fire damage. The spell ends when twelve pieces of ammunition have been drawn from the quiver. When you cast this spell using a spell slot of 4th level or higher, the number of pieces of ammunition you can affect with this spell increases by two for each slot level above 3rd. -# 176. - Fly (V,S) level 3 Transmutation [Concentration] [SOL] +# 177. - Fly (V,S) level 3 Transmutation [Concentration] [SOL] An ally you touch gains the ability to fly for a limited time. -# 177. - Haste (V,S) level 3 Transmutation [Concentration] [SOL] +# 178. - Haste (V,S) level 3 Transmutation [Concentration] [SOL] Make an ally faster and more agile, and grant them an additional action for a limited time. -# 178. - *Hunger of Hadar* © (V,S) level 3 Transmutation [Concentration] [UB] +# 179. - *Hunger of Hadar* © (V,S) level 3 Transmutation [Concentration] [UB] You open a gateway to the dark between the stars, a region infested with unknown horrors. A 20-foot-radius sphere of blackness and bitter cold appears, centered on a point with range and lasting for the duration. The area extinguishes light, and creatures within it are blinded. Any creature that starts its turn in the area takes 2d6 cold damage. Any creature that ends its turn in the area must succeed on a Dexterity saving throw or take 2d6 acid damage as milky, otherworldly tentacles rub against it. -# 179. - Hypnotic Pattern (S) level 3 Illusion [Concentration] [SOL] +# 180. - Hypnotic Pattern (S) level 3 Illusion [Concentration] [SOL] Charms enemies to make them harmless until attacked, but also affects allies in range. -# 180. - *Intellect Fortress* © (V) level 3 Abjuration [Concentration] [UB] +# 181. - *Intellect Fortress* © (V) level 3 Abjuration [Concentration] [UB] For the duration, you or one willing creature you can see within range has resistance to psychic damage, as well as advantage on Intelligence, Wisdom, and Charisma saving throws. When you cast this spell using a spell slot of 4th level or higher, you may target an additional creature within range for each slot level above 3rd. -# 181. - *Life Transference* © (V,S) level 3 Necromancy [UB] +# 182. - *Life Transference* © (V,S) level 3 Necromancy [UB] You sacrifice some of your health to mend another creature's injuries. You take 4d8 necrotic damage, and one creature of your choice that you can see within range regains a number of hit points equal to twice the necrotic damage you take. When you cast this spell using a spell s lot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. -# 182. - *Lightning Arrow* © (V,S) level 3 Transmutation [Concentration] [UB] +# 183. - *Lightning Arrow* © (V,S) level 3 Transmutation [Concentration] [UB] The next time you make a ranged weapon attack during the spell's duration, the weapon's ammunition, or the weapon itself if it's a thrown weapon, transforms into a bolt of lightning. Make the attack roll as normal. The target takes 3d8 lightning damage on a hit, or half as much damage on a miss. Whether you hit or miss, each creature within 10 feet of the target must make a Dexterity saving throw. Each of these creatures takes 2d8 lightning damage on a failed save, or half as much damage on a successful one. When you cast this spell using a spell slot of 4th level or higher, the damage for both effects of the spell increases by 1d8 for each slot level above 3rd. -# 183. - Lightning Bolt (V,S) level 3 Evocation [SOL] +# 184. - Lightning Bolt (V,S) level 3 Evocation [SOL] Unleash a stroke of lightning in a direction of your choice, damaging everyone it touches. -# 184. - Mass Healing Word (V) level 3 Evocation [SOL] +# 185. - Mass Healing Word (V) level 3 Evocation [SOL] Instantly heals up to six allies you can see. -# 185. - Protection from Energy (V,S) level 3 Abjuration [Concentration] [SOL] +# 186. - Protection from Energy (V,S) level 3 Abjuration [Concentration] [SOL] Touch one willing creature to give them resistance to this damage type. -# 186. - *Pulse Wave* © (V,S) level 3 Evocation [UB] +# 187. - *Pulse Wave* © (V,S) level 3 Evocation [UB] You create intense pressure, unleash it in a 30-foot cone, and decide whether the pressure pulls or pushes creatures and objects. Each creature in that cone must make a Constitution saving throw. A creature takes 6d6 force damage on a failed save, or half as much damage on a successful one. And every creature that fails the save is either pulled 15 feet toward you or pushed 15 feet away from you, depending on the choice you made for the spell. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 and the distance pulled or pushed increases by 5 feet for each slot level above 3rd. -# 187. - Remove Curse (V,S) level 3 Abjuration [SOL] +# 188. - Remove Curse (V,S) level 3 Abjuration [SOL] Removes all curses affecting the target. -# 188. - Revivify (M,V,S) level 3 Necromancy [SOL] +# 189. - Revivify (M,V,S) level 3 Necromancy [SOL] Brings one creature back to life, up to 1 minute after death. -# 189. - Sleet Storm (V,S) level 3 Conjuration [Concentration] [SOL] +# 190. - Sleet Storm (V,S) level 3 Conjuration [Concentration] [SOL] Creates an area where the ground is slippery, vision is obscured, and concentration is harder. -# 190. - Slow (V,S) level 3 Transmutation [Concentration] [SOL] +# 191. - Slow (V,S) level 3 Transmutation [Concentration] [SOL] Slows and impairs the actions of up to 6 creatures. -# 191. - Spirit Guardians (V,S) level 3 Conjuration [Concentration] [SOL] +# 192. - Spirit Guardians (V,S) level 3 Conjuration [Concentration] [SOL] Call forth spirits to protect you. -# 192. - *Spirit Shroud* © (V,S) level 3 Necromancy [Concentration] [UB] +# 193. - *Spirit Shroud* © (V,S) level 3 Necromancy [Concentration] [UB] You call forth spirits of the dead, which flit around you for the spell's duration. The spirits are intangible and invulnerable. Until the spell ends, any attack you make deals 1d8 extra damage when you hit a creature within 10 ft of you. This damage is radiant, necrotic, or cold (your choice when you cast the spell). Any creature that takes this damage can't regain hit points until the start of your next turn. In addition, any enemy creature within 10ft of you when you cast, or that enters or starts its turn in that range has its movement speed lowered by 10ft until start of its next turn. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for every two slot levels above 3rd. -# 193. - Stinking Cloud (V,S) level 3 Conjuration [Concentration] [SOL] +# 194. - Stinking Cloud (V,S) level 3 Conjuration [Concentration] [SOL] Create a cloud of incapacitating, noxious gas. -# 194. - *Thunder Step* © (V) level 3 Conjuration [UB] +# 195. - *Thunder Step* © (V) level 3 Conjuration [UB] You teleport yourself to an unoccupied space you can see within range. Immediately after you disappear, a thunderous boom sounds, and each creature within 10 feet of the space you left must make a Constitution saving throw, taking 3d10 thunder damage on a failed save, or half as much damage on a successful one. You can also teleport one willing ally. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d10 for each slot level above 3rd. -# 195. - Tongues (V) level 3 Divination [SOL] +# 196. - Tongues (V) level 3 Divination [SOL] Grants knowledge of all languages for one hour. -# 196. - Vampiric Touch (V,S) level 3 Necromancy [Concentration] [SOL] +# 197. - Vampiric Touch (V,S) level 3 Necromancy [Concentration] [SOL] Grants you a life-draining melee attack for one minute. -# 197. - Wind Wall (V,S) level 3 Evocation [Concentration] [SOL] +# 198. - Wind Wall (V,S) level 3 Evocation [Concentration] [SOL] Create a wall of wind that causes damage, pushes creatures and objects away, and disperses fogs and gases. -# 198. - Winter's Breath (V,S) level 3 Conjuration [UB] +# 199. - Winter's Breath (V,S) level 3 Conjuration [UB] Create a blast of cold wind to chill your enemies and knock them prone. -# 199. - *Aura of Life* © (V) level 4 Abjuration [Concentration] [UB] +# 200. - *Aura of Life* © (V) level 4 Abjuration [Concentration] [UB] Life-preserving energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. Each non-hostile creature in the aura, including you, has resistance to necrotic damage, and its hit point maximum can't be reduced. In addition, a non-hostile, living creature regains 1 hit point when it starts its turn in the aura with 0 hit points. -# 200. - *Aura of Purity* © (V) level 4 Abjuration [Concentration] [UB] +# 201. - *Aura of Purity* © (V) level 4 Abjuration [Concentration] [UB] Purifying energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. Each non-hostile creature in the aura, including you, can't become diseased, has resistance to poison damage, and has advantage on saving throws against effects that cause any of the following conditions: blinded, charmed, deafened, frightened, paralyzed, poisoned, and stunned. -# 201. - Banishment (V,S) level 4 Abjuration [Concentration] [SOL] +# 202. - Banishment (V,S) level 4 Abjuration [Concentration] [SOL] Banishes a creature as long as you concentrate. The creature can be permanently banished if it is extraplanar. -# 202. - Black Tentacles (V,S) level 4 Conjuration [Concentration] [SOL] +# 203. - Black Tentacles (V,S) level 4 Conjuration [Concentration] [SOL] Conjures black tentacles that restrain and damage creatures within the area of effect. -# 203. - Blessing of Rime (V,S) level 4 Evocation [UB] +# 204. - Blessing of Rime (V,S) level 4 Evocation [UB] You summon a chill wind that numbs the pain of your allies. Choose up to three creatures within range. Each creature gains 3d8 temporary hit points for the duration. While a creature has these hit points, if it would make a Constitution saving throw, it gains advantage on the roll. When you cast this spell using a spell slot of 5th level or higher, the temporary hit points increase by 1d8 for each slot level above 4th. -# 204. - Blight (V,S) level 4 Necromancy [SOL] +# 205. - Blight (V,S) level 4 Necromancy [SOL] Drains life from a creature, causing massive necrotic damage. -# 205. - Brain Bulwark (V) level 4 Abjuration [UB] +# 206. - Brain Bulwark (V) level 4 Abjuration [UB] For the duration, you or one willing creature you can see within range has resistance to psychic damage, as well as Immunity to the Charmed, Frightened, Fear, Mind dominated and Mind controlled conditions. -# 206. - Confusion (V,S) level 4 Enchantment [Concentration] [SOL] +# 207. - Confusion (V,S) level 4 Enchantment [Concentration] [SOL] Creates confusion and erratic behavior in a creature, possibly leading it to attack its allies. -# 207. - Conjure 4 Elementals (V,S) level 4 Conjuration [Concentration] [SOL] +# 208. - Conjure 4 Elementals (V,S) level 4 Conjuration [Concentration] [SOL] 4 elementals are conjured (CR 1/2). -# 208. - Conjure Minor Elementals (V,S) level 4 Conjuration [Concentration] [SOL] +# 209. - Conjure Minor Elementals (V,S) level 4 Conjuration [Concentration] [SOL] Conjure elemental creatures under your command, which are dismissed when the spell ends or is broken. -# 209. - Death Ward (V,S) level 4 Abjuration [SOL] +# 210. - Death Ward (V,S) level 4 Abjuration [SOL] Protects the creature once against instant death or being reduced to 0 hit points. -# 210. - Dimension Door (V) level 4 Conjuration [SOL] +# 211. - Dimension Door (V) level 4 Conjuration [SOL] Transfers the caster and a friendly creature to a specified destination. -# 211. - Dominate Beast (V,S) level 4 Enchantment [Concentration] [SOL] +# 212. - Dominate Beast (V,S) level 4 Enchantment [Concentration] [SOL] Grants you control over an enemy beast. -# 212. - Dreadful Omen (V,S) level 4 Enchantment [SOL] +# 213. - Dreadful Omen (V,S) level 4 Enchantment [SOL] You whisper dreadful words that cause immense mental anguish in your enemies. On a failed wisdom saving throw, they take psychic damage and become frightened until the end of their next turn, moving away from you as much as possible. On a successful save, they take half as much damage and are not frightened. -# 213. - Fire Shield (V,S) level 4 Evocation [SOL] +# 214. - Fire Shield (V,S) level 4 Evocation [SOL] Grants resistance to fire or cold, and damages creatures attacking the caster with melee attacks. -# 214. - Freedom of Movement (V,S) level 4 Abjuration [SOL] +# 215. - Freedom of Movement (V,S) level 4 Abjuration [SOL] Grants immunity to movement restrictions, as well as being paralyzed or restrained. -# 215. - Giant Insect (V,S) level 4 Transmutation [Concentration] [SOL] +# 216. - Giant Insect (V,S) level 4 Transmutation [Concentration] [SOL] Conjures a giant version of a natural insect or arthropod. -# 216. - *Gravity Sinkhole* © (V,S) level 4 Evocation [UB] +# 217. - *Gravity Sinkhole* © (V,S) level 4 Evocation [UB] A 20-foot-radius sphere of crushing force forms at a point you can see within range and tugs at the creatures there. Each creature in the sphere must make a Constitution saving throw. On a failed save, the creature takes 5d10 force damage, and is pulled in a straight line toward the center of the sphere, ending in an unoccupied space as close to the center as possible. On a successful save, the creature takes half as much damage and isn't pulled. When you cast this spell using a spell slot of 5th level or higher, the damage increases by 1d10 for each slot level above 4th. -# 217. - Greater Invisibility (V,S) level 4 Illusion [Concentration] [SOL] +# 218. - Greater Invisibility (V,S) level 4 Illusion [Concentration] [SOL] Target becomes invisible for the duration, even when attacking or casting spells. -# 218. - Guardian of Faith (V) level 4 Conjuration [SOL] +# 219. - Guardian of Faith (V) level 4 Conjuration [SOL] Conjures a large spectral guardian that damages approaching enemies. -# 219. - *Guardian of Nature* © (V) level 4 Transmutation [Concentration] [UB] +# 220. - *Guardian of Nature* © (V) level 4 Transmutation [Concentration] [UB] A nature spirit answers your call and transforms you into a powerful guardian. The transformation lasts until the spell ends. You choose between a Beast or a Tree form. -# 220. - Ice Storm (V,S) level 4 Evocation [SOL] +# 221. - Ice Storm (V,S) level 4 Evocation [SOL] Causes bludgeoning and cold damage in the area, and turns the ground into difficult terrain. -# 221. - Identify Creatures (V,S) level 4 Divination [SOL] +# 222. - Identify Creatures (V,S) level 4 Divination [SOL] Reveals full bestiary knowledge for the affected creatures. -# 222. - Irresistible Performance (V) level 4 Enchantment [UB] +# 223. - Irresistible Performance (V) level 4 Enchantment [UB] You weave a song into the air, causing those who hear it to applaud its magnificence. All creatures of your choice inside a 30-foot-cube within range must make a Charisma saving throw or be forced to clap and shout until the start of your next turn. A creature that is charmed by you always fails this saving throw. A clapping creature cannot perform any actions that require their hands or mouth but can otherwise act normally. This spell has no effect on creatures that are immune to charm. -# 223. - *Mordenkainen's Faithful Hound* © (V,S) level 4 Conjuration [UB] +# 224. - *Mordenkainen's Faithful Hound* © (V,S) level 4 Conjuration [UB] You conjure a phantom watchdog in an unoccupied space that you can see within range, where it remains for the duration. The hound has Darkvision up to 60 ft, Truesight up to 80 ft, is invisible to all creatures except you and can't be harmed. During each of your turns, the hound can attempt to bite one creature within 5 feet of it that is hostile to you as a free action. The hound's attack bonus is equal to your spellcasting ability modifier + your proficiency bonus. On a hit, it deals 4d8 piercing damage. -# 224. - Phantasmal Killer (V,S) level 4 Illusion [Concentration] [SOL] +# 225. - Phantasmal Killer (V,S) level 4 Illusion [Concentration] [SOL] Causes psychic damage to the target creature with each turn, unless a saving throw is successful or the effect ends. -# 225. - Psionic Blast (V) level 4 Evocation [Concentration] [UB] +# 226. - Psionic Blast (V) level 4 Evocation [Concentration] [UB] You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. -# 226. - *Raulothim's Psychic Lance* © (V) level 4 Enchantment [UB] +# 227. - *Raulothim's Psychic Lance* © (V) level 4 Enchantment [UB] You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. -# 227. - *Staggering Smite* © (V) level 4 Evocation [Concentration] [UB] +# 228. - *Staggering Smite* © (V) level 4 Evocation [Concentration] [UB] The next time you hit a creature with a weapon attack during this spell's duration, your weapon pierces both body and mind, and the attack deals an extra 4d6 psychic damage to the target. The target must make a Wisdom saving throw. On a failed save, it has disadvantage on attack rolls and ability checks, and can't take reactions, until the end of its next turn. -# 228. - Stoneskin (M,V,S) level 4 Abjuration [Concentration] [SOL] +# 229. - Stoneskin (M,V,S) level 4 Abjuration [Concentration] [SOL] Grants resistance to non-magical bludgeoning, slashing, and piercing damage. -# 229. - Wall of Fire (V,S) level 4 Evocation [Concentration] [SOL] +# 230. - Wall of Fire (V,S) level 4 Evocation [Concentration] [SOL] Create a burning wall that injures creatures in or next to it. -# 230. - *Banishing Smite* © (V) level 5 Abjuration [Concentration] [UB] +# 231. - *Banishing Smite* © (V) level 5 Abjuration [Concentration] [UB] Your next hit deals additional 5d10 force damage with your weapon. Additionally, if this attack reduces the target to 50 hit points of fewer, you banish it for 1 min. -# 231. - *Circle of Power* © (V) level 5 Abjuration [Concentration] [UB] +# 232. - *Circle of Power* © (V) level 5 Abjuration [Concentration] [UB] Divine energy radiates from you, distorting and diffusing magical energy within 30 feet of you. Until the spell ends, the sphere moves with you, centered on you. For the duration, each friendly creature in the area, including you, has advantage on saving throws against spells and other magical effects. Additionally, when an affected creature succeeds on a saving throw made against a spell or magical effect that allows it to make a saving throw to take only half damage, it instead takes no damage if it succeeds on the saving throws. -# 232. - Cloudkill (V,S) level 5 Conjuration [Concentration] [SOL] +# 233. - Cloudkill (V,S) level 5 Conjuration [Concentration] [SOL] Creates an obscuring and poisonous cloud. The cloud moves every round. -# 233. - Cone of Cold (V,S) level 5 Evocation [SOL] +# 234. - Cone of Cold (V,S) level 5 Evocation [SOL] Inflicts massive cold damage in the cone of effect. -# 234. - Conjure Elemental (V,S) level 5 Conjuration [Concentration] [SOL] +# 235. - Conjure Elemental (V,S) level 5 Conjuration [Concentration] [SOL] Conjures an elemental of the chosen element that fights alongside you. If you lose concentration, the elemental remains and becomes hostile. -# 235. - Contagion (V,S) level 5 Necromancy [SOL] +# 236. - Contagion (V,S) level 5 Necromancy [SOL] Hit a creature to inflict a disease from the options. -# 236. - *Dawn* © (V,S) level 5 Evocation [Concentration] [UB] +# 237. - *Dawn* © (V,S) level 5 Evocation [Concentration] [UB] The light of dawn shines down on a location you specify within range. Until the spell ends, a 30-foot-radius, 40-foot-high cylinder of bright light glimmers there. This light is sunlight. When the cylinder appears, each creature in it must make a Constitution saving throw, taking 4d10 radiant damage on a failed save, or half as much damage on a successful one. A creature must also make this saving throw whenever it ends its turn in the cylinder. If you're within 60 feet of the cylinder, you can move it up to 60 feet as a bonus action on your turn. -# 237. - *Destructive Wave* © (V) level 5 Evocation [UB] +# 238. - *Destructive Wave* © (V) level 5 Evocation [UB] You strike the ground, creating a burst of divine energy that ripples outward from you. Each creature you choose within 30 feet of you must succeed on a Constitution saving throw or take 5d6 thunder damage, as well as 5d6 radiant or necrotic damage, and be knocked prone. A creature that succeeds on its saving throw takes half as much damage and isn't knocked prone. -# 238. - Dispel Evil and Good (V,S) level 5 Abjuration [Concentration] [SOL] +# 239. - Dispel Evil and Good (V,S) level 5 Abjuration [Concentration] [SOL] Celestial, elementals, feys, fiends, and undead have disadvantage on attacks against you. This spell also allows you to cancel hostile enchantments or dismiss extraplanar creatures hit by your attacks once. -# 239. - Dominate Person (V,S) level 5 Enchantment [Concentration] [SOL] +# 240. - Dominate Person (V,S) level 5 Enchantment [Concentration] [SOL] Grants you control over an enemy creature. -# 240. - *Far Step* © (V) level 5 Conjuration [Concentration] [UB] +# 241. - *Far Step* © (V) level 5 Conjuration [Concentration] [UB] You teleport up to 60 ft to an unoccupied space you can see. On each of your turns before the spell ends, you can use a bonus action to teleport in this way again. -# 241. - Flame Strike (V,S) level 5 Evocation [SOL] +# 242. - Flame Strike (V,S) level 5 Evocation [SOL] Conjures a burning column of fire and radiance affecting all creatures inside. -# 242. - Greater Restoration (V,S) level 5 Abjuration [SOL] +# 243. - Greater Restoration (V,S) level 5 Abjuration [SOL] Removes one detrimental condition, such as a charm or curse, or an effect that reduces an ability score or hit points. -# 243. - Hold Monster (V,S) level 5 Enchantment [Concentration] [SOL] +# 244. - Hold Monster (V,S) level 5 Enchantment [Concentration] [SOL] Paralyzes a creature unless it succeeds a WIS saving throw. No effect on undead. -# 244. - *Immolation* © (V) level 5 Evocation [Concentration] [UB] +# 245. - *Immolation* © (V) level 5 Evocation [Concentration] [UB] Flames wreathe one creature you can see within range. The target must make a Dexterity saving throw. It takes 8d6 fire damage on a failed save, or half as much damage on a successful one. On a failed save, the target also burns for the spell's duration. The burning target sheds bright light in a 30-foot radius and dim light for an additional 30 feet and takes 8d6 fire damage at the start of each of its turns. -# 245. - Insect Plague (V,S) level 5 Conjuration [Concentration] [SOL] +# 246. - Insect Plague (V,S) level 5 Conjuration [Concentration] [SOL] Summons a sphere of biting insects. -# 246. - Mantle of Thorns (V,S) level 5 Transmutation [Concentration] [UB] +# 247. - Mantle of Thorns (V,S) level 5 Transmutation [Concentration] [UB] Surround yourself with an aura of thorns. Those that start or walk through take 2d8 piercing damage. This damage scales at higher levels by 1d8 per slot. -# 247. - Mass Cure Wounds (V,S) level 5 Evocation [SOL] +# 248. - Mass Cure Wounds (V,S) level 5 Evocation [SOL] Heals up to 6 creatures. -# 248. - Mind Twist (V,S) level 5 Enchantment [SOL] +# 249. - Mind Twist (V,S) level 5 Enchantment [SOL] Causes massive psychic damage to all creatures around you, and incapacitates them if they fail their INT saving throw. -# 249. - Raise Dead (M,V,S) level 5 Necromancy [SOL] +# 250. - Raise Dead (M,V,S) level 5 Necromancy [SOL] Brings one creature back to life, up to 10 days after death. -# 250. - Sonic Boom (V,S) level 5 Evocation [UB] +# 251. - Sonic Boom (V,S) level 5 Evocation [UB] A small orb the same color as the balloon used appears at a point you choose within range then expands with a loud crack into an explosion of force. Each creature in a 30-foot radius must make a Strength saving throw. A target is pushed up to 30 feet away from the center and dealt 6d8 thunder damage on a failed save, or half as much damage and no movement on a successful one. -# 251. - *Steel Wind Strike* © (M,S) level 5 Conjuration [UB] +# 252. - *Steel Wind Strike* © (M,S) level 5 Conjuration [UB] You flourish the weapon used in the casting and then vanish to strike like the wind. Choose up to five creatures you can see within range. Make a melee spell attack against each target. On a hit, a target takes 6d10 force damage. You can then teleport to an unoccupied space you can see within 5 feet of one of the targets you hit or missed. -# 252. - *Telekinesis* © (V,S) level 5 Transmutation [Concentration] [UB] +# 253. - *Telekinesis* © (V,S) level 5 Transmutation [Concentration] [UB] You can try to move a Huge or smaller creature. Make an ability check with your spellcasting ability contested by the creature's Strength check. If you win the contest, you move the creature up to 30 feet in any direction, but not beyond the range of this spell. Until the end of your next turn, the creature is restrained in your telekinetic grip. On subsequent rounds, you can use your action to attempt to maintain your telekinetic grip on the creature by repeating the contest, or target a new creature, ending the restrained effect on the previously affected creature. -# 253. - Blade Barrier (V,S) level 6 Evocation [Concentration] [SOL] +# 254. - Blade Barrier (V,S) level 6 Evocation [Concentration] [SOL] Conjures a wall of razor sharp blades which causes 6d10 slashing damage to anyone crossing it -# 254. - Chain Lightning (V,S) level 6 Evocation [SOL] +# 255. - Chain Lightning (V,S) level 6 Evocation [SOL] Target a creature with lightning, which can arc to 3 other targets within 6 cells. -# 255. - Circle of Death (M,V,S) level 6 Necromancy [SOL] +# 256. - Circle of Death (M,V,S) level 6 Necromancy [SOL] A sphere of negative energy causes Necrotic damage from a point you choose -# 256. - Conjure Fey (V,S) level 6 Conjuration [Concentration] [SOL] +# 257. - Conjure Fey (V,S) level 6 Conjuration [Concentration] [SOL] Conjures a fey creature of challenge rating 1 to 6 to fight alongside you. If you lose concentration, the creature stays but becomes hostile. -# 257. - Disintegrate (V,S) level 6 Transmutation [SOL] +# 258. - Disintegrate (V,S) level 6 Transmutation [SOL] Causes massive force damage on the target, which can be disintegrated if reduced to 0 hit points -# 258. - Eyebite (V,S) level 6 Necromancy [Concentration] [SOL] +# 259. - Eyebite (V,S) level 6 Necromancy [Concentration] [SOL] Your eyes gain a specific property which can target a creature each turn -# 259. - *Fizban's Platinum Shield* © (M,V,S) level 6 Abjuration [Concentration] [UB] +# 260. - *Fizban's Platinum Shield* © (M,V,S) level 6 Abjuration [Concentration] [UB] You create a field of silvery light that surrounds a creature of your choice within range. The field sheds dim light out to 5 feet. While surrounded by the field, a creature gains the following benefits: • The creature has half cover. @@ -1068,51 +1072,51 @@ You create a field of silvery light that surrounds a creature of your choice wit • If the creature is subjected to an effect that allows it to make a Dexterity saving throw to take only half damage, the creature instead takes no damage if it succeeds on the saving throw, and only half damage if it fails. As a bonus action on subsequent turns, you can move the field to another creature within 60 feet of the field. -# 260. - Flash Freeze (V,S) level 6 Evocation [UB] +# 261. - Flash Freeze (V,S) level 6 Evocation [UB] You attempt to encase a creature you can see within range in a prison of solid ice. The target must make a Dexterity saving throw. On a failed save, the target takes 10d6 cold damage and becomes restrained in layers of thick ice. On a successful save, the target takes half as much damage and is not restrained. The spell can only be used on creatures up to large size. To break out, the restrained target can make a Strength check as an action against your spell save DC. On success, the target escapes and is no longer restrained. When you cast this spell using a spell slot of 7th level or higher, the cold damage increases by 2d6 for each slot level above 6th. -# 261. - Freezing Sphere (V,S) level 6 Evocation [SOL] +# 262. - Freezing Sphere (V,S) level 6 Evocation [SOL] Toss a huge ball of cold energy that explodes on impact -# 262. - Globe Of Invulnerability (V,S) level 6 Abjuration [Concentration] [SOL] +# 263. - Globe Of Invulnerability (V,S) level 6 Abjuration [Concentration] [SOL] A sphere surrounding you prevents any spell up to 5th level to affect anyone inside it. -# 263. - Harm (V,S) level 6 Necromancy [SOL] +# 264. - Harm (V,S) level 6 Necromancy [SOL] Inflicts devastating necrotic damage and reduces the maximum hit points accordingly. Cannot drop the target below 1 hit points -# 264. - Heal (V,S) level 6 Evocation [SOL] +# 265. - Heal (V,S) level 6 Evocation [SOL] Heals 70 hit points and also removes blindness and diseases -# 265. - Heroes Feast (M,V,S) level 6 Conjuration [SOL] +# 266. - Heroes Feast (M,V,S) level 6 Conjuration [SOL] Summons a feast which cures most ailments and grants immunity to poisonand being frightened, WIS save advantage, and increased maximum hitpoints -# 266. - Hilarity (V) level 6 Enchantment [Concentration] [SOL] +# 267. - Hilarity (V) level 6 Enchantment [Concentration] [SOL] Choose one target. They fall down laughing, becoming prone and incapacitated, and take psychic damage until they save at the end of one of their turns, or until the spell ends. -# 267. - Poison Wave (M,V,S) level 6 Evocation [UB] +# 268. - Poison Wave (M,V,S) level 6 Evocation [UB] A poisonous wave erupts from you, engulfing those close by. Each creature within the spell's radius must make a Constitution saving throw, taking 6d10 poison damage on a failure, or half as much damage on a successful one. A creature who fails their saving throw is also poisoned for 1 minute, and can repeat the saving throw at the end of each of its turn. When you cast this spell using a slot of 7th level or higher, the damage increases by 1d10 for each slot level above 6th. -# 268. - Ring of Blades (M,V,S) level 6 Conjuration [Concentration] [UB] +# 269. - Ring of Blades (M,V,S) level 6 Conjuration [Concentration] [UB] You raise both hands as you evoke six transparent blades around you as a bonus action. When you cast this spell, and as a bonus action on each subsequent turn, you can throw one of these blades at a creature within 60 feet from you. Make a ranged spell attack. On a hit, the target takes 4d10 force damage. When you cast this spell using a spell slot of 7th level or higher, the damage of each blade increases by 1d10 for each slot level above 6th. -# 269. - Sunbeam (V,S) level 6 Evocation [Concentration] [SOL] +# 270. - Sunbeam (V,S) level 6 Evocation [Concentration] [SOL] You conjure a line of radiance which can burn and blind creatures in the line of effect; undead and oozes save with disadvantage. The beam can be retargeted each turn -# 270. - *Tasha's Otherworldly Guise* © (M,V,S) level 6 Transmutation [Concentration] [UB] +# 271. - *Tasha's Otherworldly Guise* © (M,V,S) level 6 Transmutation [Concentration] [UB] Uttering an incantation, you draw on the magic of the Lower Planes or Upper Planes (your choice) to transform yourself. -# 271. - *Tenser's Transformation* © (V,S) level 6 Transmutation [Concentration] [UB] +# 272. - *Tenser's Transformation* © (V,S) level 6 Transmutation [Concentration] [UB] You endow yourself with endurance and martial prowess fueled by magic. Until the spell ends, you can't cast spells, and you gain the following benefits: • You gain 50 temporary hit points. If any of these remain when the spell ends, they are lost. @@ -1122,154 +1126,154 @@ You endow yourself with endurance and martial prowess fueled by magic. Until the • You can attack twice, instead of once, when you take the Attack action on your turn. Immediately after the spell ends, you must succeed on a DC 15 Constitution saving throw or suffer one level of exhaustion. -# 272. - True Seeing (V,S) level 6 Divination [SOL] +# 273. - True Seeing (V,S) level 6 Divination [SOL] A creature you touch gains True Sight for one hour -# 273. - Wall of Thorns (V,S) level 6 Conjuration [Concentration] [SOL] +# 274. - Wall of Thorns (V,S) level 6 Conjuration [Concentration] [SOL] Creates a wall of tough of needle-sharp thorns, that hurts and slows every creature in it. -# 274. - Arcane Sword (M,V,S) level 7 Evocation [Concentration] [SOL] +# 275. - Arcane Sword (M,V,S) level 7 Evocation [Concentration] [SOL] Summon a weapon that fights for you. -# 275. - Conjure Celestial (V,S) level 7 Conjuration [Concentration] [SOL] +# 276. - Conjure Celestial (V,S) level 7 Conjuration [Concentration] [SOL] Conjures a celestial creature of challenge rating 4 that fights alongside you. If you lose concentration, the creature is dismissed. -# 276. - Delayed Blast Fireball (V,S) level 7 Evocation [Concentration] [SOL] +# 277. - Delayed Blast Fireball (V,S) level 7 Evocation [Concentration] [SOL] Conjures a ball of fire that grows more powerful with time, detonating when a creature enters its space or when the spell ends. -# 277. - Divine Word (V) level 7 Evocation [SOL] +# 278. - Divine Word (V) level 7 Evocation [SOL] Utter a divine word that inflicts various negative conditions on enemies you can see, based on their HP. Also banishes all celestials, elementals, feys, and fiends if they fail their saving throws. -# 278. - *Draconic Transformation* © (M,V,S) level 7 Transmutation [Concentration] [UB] +# 279. - *Draconic Transformation* © (M,V,S) level 7 Transmutation [Concentration] [UB] With a roar, you draw on the magic of dragons to transform yourself, taking on draconic features. You gain the following benefits until the spell ends: • You have blindsight with a range of 30 feet. • When you cast this spell, and as a bonus action on subsequent turns for the duration, you can exhale shimmering energy in a 60-foot cone. Each creature in that area must make a Dexterity saving throw, taking 6d8 force damage on a failed save, or half as much damage on a successful one. • Incorporeal wings sprout from your back, giving you a flying speed of 60 feet. -# 279. - Finger of Death (V,S) level 7 Necromancy [SOL] +# 280. - Finger of Death (V,S) level 7 Necromancy [SOL] Send negative energy coursing through a creature within range. -# 280. - Fire Storm (V,S) level 7 Evocation [SOL] +# 281. - Fire Storm (V,S) level 7 Evocation [SOL] Causes a wide wall of roaring flames to burst up wherever you choose within range. -# 281. - Gravity Slam (V,S) level 7 Transmutation [SOL] +# 282. - Gravity Slam (V,S) level 7 Transmutation [SOL] Increase gravity to slam everyone in a specific area onto the ground. -# 282. - Prismatic Spray (V,S) level 7 Evocation [SOL] +# 283. - Prismatic Spray (V,S) level 7 Evocation [SOL] Each creature within the cone of effect is randomly affected by one or two (roll 8 on d8) rays with the following effects: -# 283. - Regenerate (V,S) level 7 Transmutation [SOL] +# 284. - Regenerate (V,S) level 7 Transmutation [SOL] Touch a creature and stimulate its natural healing ability. -# 284. - Resurrection (M,V,S) level 7 Necromancy [SOL] +# 285. - Resurrection (M,V,S) level 7 Necromancy [SOL] Brings one creature back to life, up to 100 years after death. -# 285. - *Reverse Gravity* © (V,S) level 7 Transmutation [Concentration] [UB] +# 286. - *Reverse Gravity* © (V,S) level 7 Transmutation [Concentration] [UB] This spell reverses gravity in a 50-foot-radius, 100-foot-high cylinder centered on a point within range. -# 286. - Symbol (V,S) level 7 Abjuration [SOL] +# 287. - Symbol (V,S) level 7 Abjuration [SOL] Inscribe a glyph on a surface. When an enemy starts its turn in the area or enters it, the glyph's effect is applied in a sphere with a 12-cell radius. -# 287. - Divine Blade (V,S) level 8 Evocation [Concentration] [SOL] +# 288. - Divine Blade (V,S) level 8 Evocation [Concentration] [SOL] A glowing blade of pure energy springs from your hand. On a hit, the target takes 6d8 radiant damage and must roll a Wisdom saving throw to avoid being stunned until the end of its next turn. -# 288. - Dominate Monster (V,S) level 8 Enchantment [Concentration] [SOL] +# 289. - Dominate Monster (V,S) level 8 Enchantment [Concentration] [SOL] Grants you control over an enemy creature of any type. -# 289. - Earthquake (V,S) level 8 Evocation [Concentration] [SOL] +# 290. - Earthquake (V,S) level 8 Evocation [Concentration] [SOL] You create a seismic disturbance that violently shakes the ground and the creatures standing on it for the duration of the spell. -# 290. - Feeblemind (V,S) level 8 Enchantment [SOL] +# 291. - Feeblemind (V,S) level 8 Enchantment [SOL] You blast the mind of one creature, attempting to shatter its intellect and personality. The target takes 4d6 psychic damage and must make an Intelligence saving throw. On a failed save, the creature's Intelligence, Charisma and Wisdom scores become 1 and it is unable to cast spells. These effects last for 1 minute. -# 291. - Holy Aura (V,S) level 8 Abjuration [Concentration] [SOL] +# 292. - Holy Aura (V,S) level 8 Abjuration [Concentration] [SOL] Allies within 6 cells of you when you cast Holy Aura gain advantage on all saving throws, and other creatures have disadvantage on attack rolls against them until the spell ends. In addition, when a fiend or an undead hits an affected creature with a melee attack, they must succeed on a Constitution saving throw or be blinded until the spell ends. -# 292. - Incendiary Cloud (V,S) level 8 Conjuration [Concentration] [SOL] +# 293. - Incendiary Cloud (V,S) level 8 Conjuration [Concentration] [SOL] A cloud of smoke appears in a sphere with a 4-cell radius. The cloud damages each creature inside it, and moves away from you each turn until the end of the spell's duration or until a moderate wind disperses the cloud. -# 293. - *Maddening Darkness* © (V) level 8 Evocation [Concentration] [UB] +# 294. - *Maddening Darkness* © (V) level 8 Evocation [Concentration] [UB] Magical darkness spreads from a point you choose within range to fill a 60-foot-radius sphere until the spell ends. Shrieks, gibbering, and mad laughter can be heard within the sphere. On activation, and whenever a creature ends its turn in the sphere, it must make a Wisdom saving throw, taking 6d8 psychic damage on a failed save, or half as much damage on a successful one. -# 294. - Maze (V,S) level 8 Abjuration [Concentration] [SOL] +# 295. - Maze (V,S) level 8 Abjuration [Concentration] [SOL] You banish a creature that you can see within range into a labyrinthine demiplane. The target remains there for the spell's duration or until it escapes the maze. -# 295. - *Mind Blank* © (V,S) level 8 Transmutation [UB] +# 296. - *Mind Blank* © (V,S) level 8 Transmutation [UB] Until the spell ends, one willing creature you touch is immune to psychic damage, any effect that would sense its emotions or read its thoughts, divination spells, and the charmed condition. -# 296. - Power Word Stun (V) level 8 Enchantment [SOL] +# 297. - Power Word Stun (V) level 8 Enchantment [SOL] Overwhelm the mind of a creature that has 150 hit points or fewer, leaving it stunned. -# 297. - Spell Ward (V,S) level 8 Abjuration [Concentration] [SOL] +# 298. - Spell Ward (V,S) level 8 Abjuration [Concentration] [SOL] Creates a mobile globe that is impenetrable to enemy spells cast from outside it. -# 298. - Sunburst (V,S) level 8 Evocation [SOL] +# 299. - Sunburst (V,S) level 8 Evocation [SOL] Brilliant sunlight blazes in a sphere with a 12-cell radius. Each creature that fails a Constitution saving throw takes radiant damage and is blinded for 1 minute. Any darkness created by a spell in the area is dispelled. -# 299. - Thunderstorm (V,S) level 8 Transmutation [SOL] +# 300. - Thunderstorm (V,S) level 8 Transmutation [SOL] You create a blast of thunder in a sphere that causes thunder and lightning damage to everyone, and can blind or stun those who fail a CON saving throw. -# 300. - Wild Shapes (V,S) level 8 Transmutation [Concentration] [SOL] +# 301. - Wild Shapes (V,S) level 8 Transmutation [Concentration] [SOL] Turns other creatures in to beasts for one day. -# 301. - *Foresight* © (V,S) level 9 Transmutation [UB] +# 302. - *Foresight* © (V,S) level 9 Transmutation [UB] 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. -# 302. - *Mass Heal* © (V,S) level 9 Transmutation [UB] +# 303. - *Mass Heal* © (V,S) level 9 Transmutation [UB] 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. -# 303. - *Meteor Swarm* © (V,S) level 9 Transmutation [UB] +# 304. - *Meteor Swarm* © (V,S) level 9 Transmutation [UB] 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. -# 304. - *Power Word Heal* © (V,S) level 9 Enchantment [UB] +# 305. - *Power Word Heal* © (V,S) level 9 Enchantment [UB] 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. -# 305. - *Power Word Kill* © (V,S) level 9 Transmutation [UB] +# 306. - *Power Word Kill* © (V,S) level 9 Transmutation [UB] 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. -# 306. - *Shapechange* © (M,V,S) level 9 Transmutation [Concentration] [UB] +# 307. - *Shapechange* © (M,V,S) level 9 Transmutation [Concentration] [UB] You assume the form of a different creature for the duration. The new form can be of any creature with a challenge rating equal to your level or lower. -# 307. - *Time Stop* © (V) level 9 Transmutation [UB] +# 308. - *Time Stop* © (V) level 9 Transmutation [UB] You briefly stop the flow of time for everyone but yourself. No time passes for other creatures, while you take 1d4 + 1 turns in a row, during which you can use actions and move as normal. -# 308. - *Weird* © (V,S) level 9 Illusion [Concentration] [UB] +# 309. - *Weird* © (V,S) level 9 Illusion [Concentration] [UB] Drawing on the deepest fears of a group of creatures, you create illusory creatures in their minds, visible only to them. Each enemy in a 30-foot-radius sphere centered on a point of your choice within range must make a Wisdom saving throw. On a failed save, a creature becomes frightened for the duration. The illusion calls on the creature's deepest fears, manifesting its worst nightmares as an implacable threat. At the end of each of the frightened creature's turns, it must succeed on a Wisdom saving throw or take 4d10 psychic damage. On a successful save, the spell ends for that creature. diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt index bd0c3003dd..d7f5a41fe1 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells03-de.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Geistertuch! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} fügt {1} durch Geisterschleier {2} Strahlungsschaden zu! Spell/&AdderFangsDescription=Sie erschaffen das Gesicht einer riesigen grünen Schlange, die für einen Moment erscheint, bevor sie sich auf Ihren Feind stürzt. Wähle eine Kreatur, die du in Reichweite sehen kannst. Das Ziel muss einen konstitutionsrettenden Wurf durchführen und bei einem Fehlschlag 4W10 Giftschaden erleiden, bei einem Erfolg halb so viel Schaden. Eine Kreatur, deren Rettungswurf misslingt, wird ebenfalls vergiftet und ihre Geschwindigkeit wird halbiert, während sie durch diesen Zauber vergiftet wird. Am Ende jedes Zuges kann ein Ziel einen Konstitutionsrettungswurf durchführen und bei einem Erfolg das Gift beenden. Andernfalls hält das Gift 1 Minute lang an. Wenn du diesen Zauber mit einem Zauberslot der 4. Stufe oder höher wirkst, kannst du für jede Slotstufe über der 3. Stufe eine zusätzliche Kreatur in Reichweite anvisieren. Spell/&AdderFangsTitle=Adders Reißzähne +Spell/&AshardalonStrideDescription=Die lodernden Flammen eines Drachen schießen aus deinen Füßen und verleihen dir explosive Geschwindigkeit. Während der Wirkungsdauer erhöht sich deine Geschwindigkeit um 20 Fuß und Bewegungen provozieren keine Gelegenheitsangriffe. Wenn du dich innerhalb von 5 Fuß an eine Kreatur oder ein Objekt bewegst, das nicht getragen oder mitgeführt wird, erleidet es 1W6 Feuerschaden durch deine Hitzespur. Eine Kreatur oder ein Objekt kann diesen Schaden nur einmal pro Runde erleiden. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöhst du deine Geschwindigkeit um 5 Fuß für jede Zauberplatzstufe über der 3. Der Zauber verursacht zusätzlich 1W6 Feuerschaden für jede Platzstufe über der 3. +Spell/&AshardalonStrideTitle=Ashardalons Schritt Spell/&AuraOfLifeDescription=Heilende Energie strahlt von Ihnen in einer Aura mit einem Radius von 30 Fuß aus. Bis zum Ende des Zaubers bewegt sich die Aura mit dir, zentriert auf dich. Du kannst eine Bonusaktion verwenden, um eine Kreatur in der Aura (einschließlich dir) dazu zu bringen, 2W6 Trefferpunkte zurückzugewinnen. Spell/&AuraOfLifeTitle=Aura der Vitalität Spell/&BlindingSmiteDescription=Bei Ihrem nächsten Treffer flackert Ihre Waffe mit einem hellen Licht auf und der Angriff fügt dem Ziel zusätzlich 3W8 Strahlungsschaden zu. Darüber hinaus muss dem Ziel ein Konstitutionsrettungswurf gelingen oder es bleibt geblendet, bis der Zauber endet.\nEine durch diesen Zauber geblendete Kreatur führt am Ende jedes ihrer Züge einen weiteren Konstitutionsrettungswurf durch. Bei einem erfolgreichen Speichervorgang ist es nicht mehr geblendet. diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt index 2bb172f47a..cc12b69ba0 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Spirit Shroud! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} deals {2} radiant damage to {1} from Spirit Shroud! Spell/&AdderFangsDescription=You create the visage of a massive green snake that appears for an instant before bearing down on your foe. Choose a creature you can see within range. The target must make a constitution saving throw, taking 4d10 poison damage on a failure, or half as much damage on a successful one. A creature that fails its saving throw is also poisoned, and its speed is halved while poisoned by this spell. At the end of each of its turns, a target may make a constitution saving throw, ending the poison on a success. Otherwise, the poison lasts for 1 minute. When you cast this spell using a spell slot of 4th level or higher, you may target an additional creature within range for each slot level above 3rd. Spell/&AdderFangsTitle=Adder's Fangs +Spell/&AshardalonStrideDescription=The billowing flames of a dragon blast from your feet, granting you explosive speed. For the duration, your speed increases by 20 feet and moving doesn't provoke opportunity attacks. When you move within 5 feet of a creature or an object that isn’t being worn or carried, it takes 1d6 fire damage from your trail of heat. A creature or object can take this damage only once during a turn. When you cast this spell using a spell slot of 4th level or higher, increase your speed by 5 feet for each spell slot level above 3rd. The spell deals an additional 1d6 fire damage for each slot level above 3rd. +Spell/&AshardalonStrideTitle=Ashardalon's Stride Spell/&AuraOfLifeDescription=Healing energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. You can use a bonus action to cause one creature in the aura (including you) to regain 2d6 hit points. Spell/&AuraOfLifeTitle=Aura of Vitality Spell/&BlindingSmiteDescription=On your next hit your weapon flares with a bright light, and the attack deals an extra 3d8 radiant damage to the target. Additionally, the target must succeed on a Constitution saving throw or be blinded until the spell ends.\nA 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. diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt index d25d5e33a1..5d1c4a5b83 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells03-es.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=¡Sudario espiritual! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine=¡{0} inflige {2} daño radiante a {1} gracias a Spirit Shroud! Spell/&AdderFangsDescription=Creas el rostro de una enorme serpiente verde que aparece por un instante antes de atacar a tu enemigo. Elige una criatura que puedas ver dentro del alcance. El objetivo debe realizar una tirada de salvación de constitución, sufriendo 4d10 de daño por veneno si falla, o la mitad de daño si tiene éxito. Una criatura que falla su tirada de salvación también queda envenenada y su velocidad se reduce a la mitad mientras está envenenada por este hechizo. Al final de cada uno de sus turnos, un objetivo puede realizar una tirada de salvación de constitución, poniendo fin al veneno si tiene éxito. De lo contrario, el veneno dura 1 minuto. Cuando lanzas este hechizo usando un espacio de hechizo de nivel 4 o superior, puedes apuntar a una criatura adicional dentro del alcance por cada nivel de espacio por encima del 3. Spell/&AdderFangsTitle=Colmillos de víbora +Spell/&AshardalonStrideDescription=Las ondulantes llamas de un dragón brotan de tus pies, otorgándote una velocidad explosiva. Mientras dura, tu velocidad aumenta en 20 pies y moverte no provoca ataques de oportunidad. Cuando te mueves a 5 pies de una criatura o de un objeto que no está siendo usado o transportado, sufre 1d6 de daño por fuego de tu rastro de calor. Una criatura u objeto puede recibir este daño sólo una vez durante un turno. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, aumenta tu velocidad en 5 pies por cada nivel de espacio de hechizo superior al 3º. El hechizo inflige 1d6 de daño de fuego adicional por cada nivel de ranura por encima del 3.º. +Spell/&AshardalonStrideTitle=El paso de Ashardalon Spell/&AuraOfLifeDescription=La energía curativa irradia desde usted en un aura con un radio de 30 pies. Hasta que finaliza el hechizo, el aura se mueve contigo, centrada en ti. Puedes usar una acción adicional para hacer que una criatura en el aura (incluido tú) recupere 2d6 puntos de vida. Spell/&AuraOfLifeTitle=Aura de vitalidad Spell/&BlindingSmiteDescription=En tu siguiente golpe, tu arma destella con una luz brillante y el ataque inflige 3d8 daños radiantes adicionales al objetivo. Además, el objetivo debe superar una tirada de salvación de Constitución o quedar cegado hasta que finalice el hechizo.\nUna criatura cegada por este hechizo realiza otra tirada de salvación de Constitución al final de cada uno de sus turnos. Con una salvación exitosa, ya no está cegado. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt index 500d56423b..07e543471d 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Linceul spirituel ! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} inflige {2} dégâts radiants à {1} depuis Spirit Shroud ! Spell/&AdderFangsDescription=Vous créez le visage d'un énorme serpent vert qui apparaît un instant avant de foncer sur votre ennemi. Choisissez une créature que vous pouvez voir à portée. La cible doit effectuer un jet de sauvegarde de constitution, subissant 4d10 dégâts de poison en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Une créature qui rate son jet de sauvegarde est également empoisonnée, et sa vitesse est réduite de moitié lorsqu'elle est empoisonnée par ce sort. À la fin de chacun de ses tours, une cible peut effectuer un jet de sauvegarde de constitution, mettant fin au poison en cas de réussite. Sinon, le poison dure 1 minute. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, vous pouvez cibler une créature supplémentaire à portée pour chaque niveau d'emplacement au-dessus du niveau 3. Spell/&AdderFangsTitle=Crocs de vipère +Spell/&AshardalonStrideDescription=Les flammes d'un dragon jaillissent de vos pieds, vous conférant une vitesse explosive. Pendant toute cette durée, votre vitesse augmente de 6 mètres et vos déplacements ne provoquent pas d'attaques d'opportunité. Lorsque vous vous déplacez à moins de 1,50 mètre d’une créature ou d’un objet qui n’est pas porté ou transporté, votre traînée de chaleur lui inflige 1d6 dégâts de feu. Une créature ou un objet ne peut subir ces dégâts qu'une seule fois par tour. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, augmentez votre vitesse de 1,50 mètre pour chaque niveau d'emplacement de sort supérieur au niveau 3. Le sort inflige 1d6 dégâts de feu supplémentaires pour chaque niveau d'emplacement supérieur au 3. +Spell/&AshardalonStrideTitle=La foulée d'Ashardalon Spell/&AuraOfLifeDescription=L'énergie de guérison rayonne de vous dans une aura d'un rayon de 9 mètres. Jusqu'à la fin du sort, l'aura se déplace avec vous, centrée sur vous. Vous pouvez utiliser une action bonus pour permettre à une créature dans l'aura (vous y compris) de regagner 2d6 points de vie. Spell/&AuraOfLifeTitle=Aura de vitalité Spell/&BlindingSmiteDescription=Lors de votre prochain coup, votre arme s'éclaire d'une lumière vive et l'attaque inflige 3d8 dégâts radiants supplémentaires à la cible. De plus, la cible doit réussir un jet de sauvegarde de Constitution ou être aveuglée jusqu'à la fin du sort.\nUne créature aveuglée par ce sort effectue un autre jet de sauvegarde de Constitution à la fin de chacun de ses tours. En cas de sauvegarde réussie, il n'est plus aveuglé. diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt index 19b50a98e2..a448137312 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells03-it.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Sudario spirituale! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} infligge {2} danni radiosi a {1} da Spirit Shroud! Spell/&AdderFangsDescription=Crei il volto di un enorme serpente verde che appare per un istante prima di avventarsi sul tuo nemico. Scegli una creatura che puoi vedere e che si trova a gittata. Il bersaglio deve effettuare un tiro salvezza sulla costituzione, subendo 4d10 danni da veleno in caso di fallimento, o la metà di questi danni in caso di successo. Anche una creatura che fallisce il tiro salvezza viene avvelenata e la sua velocità viene dimezzata mentre è avvelenata da questo incantesimo. Alla fine di ciascuno dei suoi turni, un bersaglio può effettuare un tiro salvezza su Costituzione, ponendo fine al veleno se lo supera. Altrimenti, il veleno dura 1 minuto. Quando lanci questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, puoi prendere di mira una creatura aggiuntiva entro la gittata per ogni livello di slot superiore al 3°. Spell/&AdderFangsTitle=Le zanne di Adder +Spell/&AshardalonStrideDescription=Le fiamme fluttuanti di un drago esplodono dai tuoi piedi, garantendoti una velocità esplosiva. Per la durata, la velocità aumenta di 20 piedi e il movimento non provoca attacchi di opportunità. Quando ci si muove entro 1,5 metri da una creatura o da un oggetto che non viene indossato o trasportato, subisce 1d6 danni da fuoco dalla scia di calore. Una creatura o un oggetto può subire questo danno solo una volta durante un turno. Quando lanci questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, aumenta la tua velocità di 1,5 metri per ogni livello di slot incantesimo superiore al 3°. L'incantesimo infligge 1d6 danni da fuoco aggiuntivi per ogni livello dello slot superiore al 3°. +Spell/&AshardalonStrideTitle=Il passo di Ashardalon Spell/&AuraOfLifeDescription=L'energia curativa si irradia da te in un'aura con un raggio di 9 metri. Fino al termine dell'incantesimo, l'aura si muove con te, centrata su di te. Puoi usare un'azione bonus per far sì che una creatura nell'aura (incluso te) recuperi 2d6 punti ferita. Spell/&AuraOfLifeTitle=Aura di vitalità Spell/&BlindingSmiteDescription=Al colpo successivo la tua arma emette una luce intensa e l'attacco infligge 3d8 danni radiosi aggiuntivi al bersaglio. Inoltre, il bersaglio deve riuscire in un tiro salvezza su Costituzione o essere accecato fino al termine dell'incantesimo.\nUna creatura accecata da questo incantesimo effettua un altro tiro salvezza su Costituzione alla fine di ciascuno dei suoi turni. Se il Tiro Salvezza riesce, non è più accecato. diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt index 362df8d7b8..ba9736e357 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells03-ja.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=精霊のシュラウ Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0}はスピリット・シュラウドから{1}に{2}の放射ダメージを与えます! Spell/&AdderFangsDescription=あなたは、敵に襲い掛かる前に一瞬現れる巨大な緑色の蛇の姿を作り出します。範囲内で見える生き物を選択してください。ターゲットは体質セービングスローを行わなければならず、失敗した場合は4d10の毒ダメージを受けるか、成功した場合は半分のダメージを受けます。セーヴィング・スローに失敗したクリーチャーも毒になり、この呪文で毒されている間はそのスピードが半分になります。各ターンの終わりに、ターゲットは体質セーヴィング・スローを行うことができ、成功すると毒が終了します。それ以外の場合、毒は1分間持続します。あなたが第 4 レベル以上の呪文スロットを使用してこの呪文を唱えるとき、第 3 レベル以上の各スロット レベルの範囲内にある追加のクリーチャーを対象にしてもよい。 Spell/&AdderFangsTitle=アダーの牙 +Spell/&AshardalonStrideDescription=竜の渦巻く炎があなたの足元から噴き出し、爆発的なスピードを与えます。持続時間中、あなたのスピードは 20 フィート増加し、移動しても機会攻撃を誘発しません。あなたが着用または運搬されていないクリーチャーまたは物体の 5 フィート以内に移動すると、それはあなたの熱の軌跡から 1d6 の火炎ダメージを受けます。クリーチャーまたは物体は、ターン中にこのダメージを 1 回だけ受けます。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、3 レベルを超える呪文スロット レベルごとにスピードが 5 フィート増加します。この呪文は、3 レベルを超えるスロット レベルごとに追加の 1d6 の火炎ダメージを与えます。 +Spell/&AshardalonStrideTitle=アシャーダロンの歩み Spell/&AuraOfLifeDescription=治癒エネルギーはあなたから半径 30 フィートのオーラとして放射されます。呪文が終わるまで、オーラはあなたを中心としてあなたと一緒に移動します。あなたはボーナス アクションを使用して、オーラ内の 1 体のクリーチャー (あなたを含む) に 2d6 ヒット ポイントを回復させることができます。 Spell/&AuraOfLifeTitle=活力のオーラ Spell/&BlindingSmiteDescription=次の攻撃で武器が明るい光でフレアし、攻撃はターゲットに追加の 3d8 放射ダメージを与えます。さらに、ターゲットは憲法セーヴィング・スローに成功するか、呪文が終了するまで盲目状態でなければなりません。\nこの呪文によって盲目になったクリーチャーは、各ターンの終わりに別の憲法セーヴィング・スローを行います。保存に成功すると、ブラインド状態ではなくなります。 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt index 32638d683d..e06583f544 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells03-ko.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=영혼의 장막! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0}이 Spirit Shroud의 {1}에 {2}의 빛나는 피해를 입힙니다! Spell/&AdderFangsDescription=당신은 적을 덮치기 전 순간적으로 나타나는 거대한 녹색 뱀의 모습을 만듭니다. 범위 내에서 볼 수 있는 생물을 선택하세요. 목표는 체력 내성 굴림을 해야 하며, 실패 시 4d10의 독 피해를 입거나, 성공하면 절반의 피해를 입어야 합니다. 내성 굴림에 실패한 생물 역시 중독되며, 이 주문에 중독된 동안 속도는 절반으로 줄어듭니다. 각 턴이 끝날 때 목표는 체력 내성 굴림을 하여 성공 시 독을 끝낼 수 있습니다. 그렇지 않으면 독은 1분 동안 지속됩니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전할 때, 3레벨 이상의 각 슬롯 레벨에 대해 범위 내의 추가 생물을 목표로 삼을 수 있습니다. Spell/&AdderFangsTitle=애더의 송곳니 +Spell/&AshardalonStrideDescription=발에서 솟아오르는 용의 불꽃이 폭발적인 속도를 선사합니다. 지속 시간 동안 속도가 20피트 증가하고 이동해도 기회 공격이 발생하지 않습니다. 착용하거나 운반하지 않는 생물이나 물체로부터 5피트 이내로 이동하면 열의 흔적으로 인해 1d6의 화염 피해를 입습니다. 생물이나 물체는 턴 동안 단 한 번만 이 피해를 입을 수 있습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전할 때, 3레벨 이상의 각 주문 슬롯 레벨마다 속도를 5피트씩 증가시킵니다. 이 주문은 3위 이상의 각 슬롯 레벨마다 1d6의 추가 화염 피해를 입힙니다. +Spell/&AshardalonStrideTitle=아샤달론의 걸음걸이 Spell/&AuraOfLifeDescription=치유 에너지는 반경 30피트의 오라로 당신에게서 방출됩니다. 주문이 끝날 때까지 오라는 당신을 중심으로 당신과 함께 움직입니다. 당신은 오라에 있는 한 생물(당신 포함)이 2d6 체력을 회복하도록 하기 위해 보너스 행동을 사용할 수 있습니다. Spell/&AuraOfLifeTitle=활력의 오라 Spell/&BlindingSmiteDescription=다음 공격 시 무기가 밝은 빛으로 타오르고, 공격은 대상에게 추가로 3d8의 빛나는 피해를 입힙니다. 추가적으로, 대상은 건강 내성 굴림에 성공해야 하며 그렇지 않으면 주문이 끝날 때까지 눈이 멀어야 합니다.\n이 주문에 의해 눈이 먼 생물은 각 턴이 끝날 때 또 다른 건강 내성 굴림을 합니다. 저장에 성공하면 더 이상 눈이 멀지 않습니다. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt index ae74ea190d..a198247c45 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells03-pt-BR.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Mortalha Espiritual! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} causa {2} de dano radiante a {1} da Mortalha Espiritual! Spell/&AdderFangsDescription=Você cria a aparência de uma enorme cobra verde que aparece por um instante antes de atacar seu inimigo. Escolha uma criatura que você possa ver dentro do alcance. O alvo deve fazer um teste de resistência de constituição, sofrendo 4d10 de dano de veneno em caso de falha, ou metade desse dano em caso de sucesso. Uma criatura que falhe no teste de resistência também é envenenada, e sua velocidade é reduzida pela metade enquanto estiver envenenada por esta magia. No final de cada um de seus turnos, um alvo pode fazer um teste de resistência de constituição, encerrando o veneno em caso de sucesso. Caso contrário, o veneno dura 1 minuto. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, você pode escolher uma criatura adicional dentro do alcance para cada nível do espaço acima do 3º. Spell/&AdderFangsTitle=Presas de Adder +Spell/&AshardalonStrideDescription=As chamas ondulantes de um dragão explodem em seus pés, concedendo-lhe velocidade explosiva. Durante esse tempo, sua velocidade aumenta em 6 metros e mover-se não provoca ataques de oportunidade. Quando você se move a até 1,5 metro de uma criatura ou objeto que não esteja sendo vestido ou carregado, ele sofre 1d6 de dano de fogo do seu rastro de calor. Uma criatura ou objeto pode sofrer este dano apenas uma vez durante um turno. Quando você conjurar esta magia usando um espaço de magia de 4º nível ou superior, aumente sua velocidade em 1,5 metro para cada nível de espaço de magia acima do 3º. O feitiço causa 1d6 de dano de fogo adicional para cada nível de espaço acima do 3º. +Spell/&AshardalonStrideTitle=Passo de Ashardalon Spell/&AuraOfLifeDescription=A energia curativa irradia de você em uma aura com um raio de 9 metros. Até o feitiço terminar, a aura se move com você, centrada em você. Você pode usar uma ação bônus para fazer com que uma criatura na aura (incluindo você) recupere 2d6 pontos de vida. Spell/&AuraOfLifeTitle=Aura de Vitalidade Spell/&BlindingSmiteDescription=No seu próximo golpe, sua arma brilha com uma luz brilhante e o ataque causa 3d8 de dano radiante extra ao alvo. Além disso, o alvo deve ser bem sucedido em um teste de resistência de Constituição ou ficará cego até o feitiço terminar.\nUma criatura cegada por este feitiço faz outro teste de resistência de Constituição no final de cada um de seus turnos. Em um salvamento bem-sucedido, ele não fica mais cego. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt index a87c7ea773..c275fa5751 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells03-ru.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Покров духа! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} наносит {2} урона излучением {1} от Покрова духа! Spell/&AdderFangsDescription=Вы создаете образ огромной зелёной змеи, которая на мгновение появляется перед тем, как обрушиться на вашего противника. Выберите существо в пределах досягаемости, которое вы можете видеть. Цель должна совершить спасбросок Телосложения и получить 4d10 урона ядом в случае неудачи или вдвое меньше в случае успеха. Существо, провалившее спасбросок, также становится отравленным, и его скорость уменьшается вдвое, пока действует это отравление. В конце каждого своего хода цель может совершить спасбросок Телосложения, завершая действие яда в случае успеха. В противном случае яд действует в течение 1 минуты. Когда вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, вы можете выбрать в качестве цели ещё одно существо в пределах досягаемости за каждый уровень ячейки выше 3-го. Spell/&AdderFangsTitle=Клыки гадюки +Spell/&AshardalonStrideDescription=Вздымающееся пламя дракона вырывается из ваших ног, даруя вам взрывную скорость. На время действия ваша скорость увеличивается на 20 футов, и движение не провоцирует провоцированные атаки. Когда вы перемещаетесь в пределах 5 футов от существа или предмета, который никто не носит и не несет, он получает урон огнём 1d6 от вашего теплового следа. Существо или объект может получить этот урон только один раз за ход. Когда вы накладываете это заклинание, используя ячейку заклинания 4-го уровня или выше, увеличьте свою скорость на 5 футов за каждый уровень ячейки заклинания выше 3-го. Заклинание наносит дополнительный урон огнём 1d6 за каждый уровень ячейки выше третьего. +Spell/&AshardalonStrideTitle=Шаг Ашардалона Spell/&AuraOfLifeDescription=От вас исходит аура живительной энергии с радиусом 30 футов. Пока заклинание активно, аура перемещается вместе с вами, оставаясь с центром на вас. Вы можете бонусным действием восстанавливать одному любому существу в ауре (включая себя) 2d6 хитов. Spell/&AuraOfLifeTitle=Аура живучести Spell/&BlindingSmiteDescription=Когда вы в следующий раз попадёте по существу рукопашной атакой оружием, пока заклинание активно, ваше оружие вспыхивает ярким светом, и атака причиняет цели дополнительный урон излучением 3d8. Кроме того, цель должна преуспеть в спасброске Телосложения, иначе она станет ослеплённой до окончания заклинания.\nОслеплённое этим заклинанием существо совершает спасброски Телосложения в конце каждого своего хода. В случае успеха оно перестаёт быть ослеплённым. diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt index 5351db6ed4..3fb28e878b 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt @@ -34,6 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=魂灵环绕! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} 通过魂灵环绕对 {1} 造成 {2} 光耀伤害! Spell/&AdderFangsDescription=你创造出一条巨大的绿色蛇的面容,它在向你的敌人袭来之前出现了片刻。选择范围内的一个生物。目标必须进行一次体质豁免检定,失败时受到 4d10 毒素伤害,成功时受到一半伤害。豁免失败的生物也会中毒,并且在受到该法术中毒时其速度减半。在每个回合结束时,目标可以进行一次体质豁免检定,成功则结束中毒。否则,中毒持续 1 分钟。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,就可以多选择一个生物作为目标。 Spell/&AdderFangsTitle=蝰蛇毒牙 +Spell/&AshardalonStrideDescription=巨龙的滚滚火焰从你的脚下喷涌而出,赋予你爆炸性的速度。在持续时间内,你的速度增加 20 英尺,移动不会引发机会攻击。当你在 5 英尺范围内移动一个生物或一个未被穿戴或携带的物体时,你的热迹会造成 1d6 火焰伤害。生物或物体在一个回合中只能受到一次这种伤害。当你使用 4 级或更高的法术位施放此法术时,每高于 3 级法术位等级,你的速度就会增加 5 英尺。该法术每高于 3 级法术位等级额外造成 1d6 火焰伤害。 +Spell/&AshardalonStrideTitle=阿萨德隆的步伐 Spell/&AuraOfLifeDescription=治疗能量从你身上散发出半径 30 尺的灵光。直到法术结束,灵光会随着你移动,以你为中心。你可以使用附赠动作使灵光中的一个生物(包括你)恢复 2d6 点生命值。 Spell/&AuraOfLifeTitle=活力灵光 Spell/&BlindingSmiteDescription=在你的下一次攻击中,你的武器会发出耀眼的光芒,并且这次攻击会对目标造成额外的 3d8 光耀伤害。此外,目标必须成功通过体质豁免,否则将被目盲,直到法术结束。\n被此法术目盲的生物在其每个回合结束时进行另一次体质豁免。豁免成功后,它不再目盲。 From 179d0c576d8926f85720a7e57d30a744a491918f Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 22:56:41 -0700 Subject: [PATCH 19/52] update resources --- .../SpellDefinition/AshardalonStride.json | 346 ++++++++++++++++++ .../Properties/Resources.Designer.cs | 10 + .../Properties/Resources.resx | 5 + .../Resources/Spells/AshardalonStride.png | Bin 0 -> 12203 bytes 4 files changed, 361 insertions(+) create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json create mode 100644 SolastaUnfinishedBusiness/Resources/Spells/AshardalonStride.png diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json new file mode 100644 index 0000000000..48c87c935d --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json @@ -0,0 +1,346 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolTransmutation", + "spellLevel": 3, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Self", + "rangeParameter": 0, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Self", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Ally", + "durationType": "Minute", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionAshardalonStride3", + "conditionDefinition": "Definition:ConditionAshardalonStride3:44540cba-9177-5d81-8f3a-64b6157fdca1", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "CasterLevelTable", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 1, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 1, + "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": "a527dee34e46e7a4c8c68a9d244b3855", + "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": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "aiParameters": { + "$type": "SpellAIParameters, Assembly-CSharp", + "learnPriority": "Low", + "preparePriority": "Low" + }, + "concentrationAction": "None", + "verboseComponent": true, + "somaticComponent": true, + "materialComponentType": "None", + "specificMaterialComponentTag": "Diamond", + "specificMaterialComponentCostGp": 100, + "specificMaterialComponentConsumed": true, + "terminateOnItemUnequip": false, + "displayConditionDuration": false, + "vocalSpellSemeType": "Buff", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&AshardalonStrideTitle", + "description": "Spell/&AshardalonStrideDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "a8942960-4be0-5418-a717-bd4b441f73c9", + "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": "98b57766-2cb8-5fb2-886c-0093a3a569ef", + "contentPack": 9999, + "name": "AshardalonStride" +} \ No newline at end of file diff --git a/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs b/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs index fc7f1908a1..486977a831 100644 --- a/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs +++ b/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs @@ -529,6 +529,16 @@ public static byte[] ArtisanToolSmithTools { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] AshardalonStride { + get { + object obj = ResourceManager.GetObject("AshardalonStride", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/SolastaUnfinishedBusiness/Properties/Resources.resx b/SolastaUnfinishedBusiness/Properties/Resources.resx index 2ac19af365..6e299ef9df 100644 --- a/SolastaUnfinishedBusiness/Properties/Resources.resx +++ b/SolastaUnfinishedBusiness/Properties/Resources.resx @@ -152,6 +152,11 @@ PublicKeyToken=b77a5c561934e089 + + ../Resources/Spells/AshardalonStride.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + ../Resources/Spells/BorrowedKnowledge.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/SolastaUnfinishedBusiness/Resources/Spells/AshardalonStride.png b/SolastaUnfinishedBusiness/Resources/Spells/AshardalonStride.png new file mode 100644 index 0000000000000000000000000000000000000000..801479a5eef91802721b68654725b8bda82ce317 GIT binary patch literal 12203 zcmV;cFI3QpP)C00093P)t-s^WxO- z+|u~x*ZlM5_1n(%;m`cU5%ucW{f937^X>ex8t>oE^xnz+n7K}9@JrxuEoG|^(ApW@``l<{5k0pUKBE~Bf z{LB&g;MM$W5%%ZPL>(Ibek%Fu+HfTs{ag!`IVb+I2mG-)OBN7@6b|_4--|mcQXd)p zPz;e44*kCg{k<#vR~UgkF8!t++c+8f-^~5SEXp(-(K#Odg%tgiF8--8{bLXMyIy!Y zEcw)ua5gCYk{SJY6#cM6kw!7~+SS@+Fa4Pr&tWqBVIcg|8DK6XYAqvsC>i7)*KetFG{B0xq-MakOv-q|OwHONGXes!OAY~*Q{XPll zCkF4?!1dP0`_rTS&@TPCO{zsCc@qw75)PUa3;pHM{JKEbStxZbAn`E@@#W&E6$wlI8R|_7_x0`f&%E+iAI(D!`^RUsTsZWpF&_vA z;>Wr0wQH&%7X9j{_{vqgIvM=wwdYGR>N^GZw|e*0Q|N&z+esDt^b?0XK+AqDZXSJ-th?PLY!k3aW^ zLA_KN(nvO4IWq2~R&+!-z-2zrx2WlaLhh0k>yBLg;BdlVC+XDHxsZFsZ!F}Ra=(CF z=yX5Qb3~MET=u@D^{kDXe{^R}Mf;mor)*4sSWK{&jNq+`T^ikI001mzNkl2cJRQ4Af0 z37wP$ThZEVtv$D{-r}sj12O@WT&V)k;>aX4%w*o3DE1blWShoH&t|R!5o{n3<^`nQt*b4Nzz2 zW@#2wT3Wif+1c6oV?wR1^F`Nw-o1ToG%|EK&t{AGmSRh;aX#W&ipBb`_Xqm~fPt^Z zaH;pSw6qi@bh626wQ^)l0363QwVyV%x0~A9PM@x-I`Paib+t1yll48GmZ-s?QmFvY zAoyp&e^c=9gsz_a`L|t?HxRKv6K9u}T#mK1)j9abg2BeFF45Q+2*ybJJsTUJK|MYA zX2dgJ)Wpd_0C8YgY&&ggO{l&8#GQ3Bq{*I-fg!^DR}LZ|uJ=inq*r@U#@ZXJv{w_VH(9YGb2kqbSZn~wdbQP5MG;K)%*VkfSE(rWt5*?y!)7T-rIM=)(wQNfB@f}}4G&MR``3pco)n4r zUB1f3{sSUb%~`o74i^;Q$s&(uWo2appSa@b5)#fL-umrZZ@u;Y{V$^!TBC;O)ppb5 zfN%&_t6H2@N`=@-0G&7t2>$v#_t3f}ue^ME+G4TU7^bA8gwaVP8IZ!w`+c$gBO<%f zE>+_>)f~RBG06?|1 zwIBQmeSpq?#ni%zSq}Bm-ingBxp3*+&DN%cg{O)5pP=P)$1>PSaj}EdV0Z!7#a(lK`s|llGKq%K-FMC0Te4r3iEIP-4+|8 zfM1P7QCwWC(AjKS?GPW~87Axiz}Wt0o}2Lnm=gjqL>Cw1PzxTe>O|e0cK{%*%GAUv zfeA^a9cHtvqNwQHs5kx6LP0_Ap5DqC3@m;W4avzN*vm2)#%38t0l=RC@+CxJR4Awt z_=tbiKjCPu4ALaT81NK*h#Yd1sDp&?HBO0-m`>NG)wX^AdsH|ndyYn<=`iC6y`+kY zr=BX1na%nFE5`ud2rj!3=QX5x|f%`sr=n;hFtkDk~g9T_;J4vI)A>gOC;<8 zl-yL&hf+-rZX(4!P;$5#36<8~){gEn*x{a|$$@`|EI)q~s<;L{RUt#LG7?CNjkx>z z^z`!d@banh^77?8i_RH#I>U?&$=i4yB^dGhU9P1{41xY&*AJo(k{Xzty1Ag&bm(yk zdc9uFp|CLH5JZ&J*}&TEWUtZdW$9jT{;1arfQkxlMnIup7&pIz83Sw5aCdii`Kgyq zohrxv2?v}`Cq^M@&F}I%eu-6L4>Sg$t{;wwU=5+?(9$c{dd+5Y2c)+eNEm}SP?i-o zo(cpS5XumM7Yu?V5{4q>ht{EKd=BwiI9a;8UwY}K*YYe{8>4fQ#vM?z3&F>*2mAZ_ zf{kas_~OW`qOqQ-sl?#hz!JJP8mKWEjm0?BD8!+`1OhoLH#EpuDKelElnF(UFOf*_ zY)qI*NCBbF@-uX{+3xPwUPA+FwIS4;P8S|`l$Dj8uN3rotUtT2vGV-+A2Kf-6+g~-hB8I0HhPV!IXhUN4psr zTORd)_alYcl8_bz;c&#C@`r+beO+f7`?51%IQpLG(r8k++vu*hLSmcE%PR~G$_lJV z9{o+Fz~(BcNm+!U#3^Vr(t?U~{A9pM5ITvDDS@;@J3FDl?d?Hh$@KDaIo8jRwqz%S z;m4!!{D>dxr!klf9XN92NM_~}Pu_h{bne$HS5{VT+}@=)!{LAq+Y1_U=Tmd5)h+a228t}z$yZEtV8LpwWs zWE~8Zv0#7yfddCJGczB3^ob{*2S5+4wEY{qTh4&f>)qW7hZFmAh_5N&@UkP+KrT8k zhcdv%P-5}WsHYmW7Nln&eFih{Api*W`2WfrWJI(aHZ{$y;z2hBG|}us_r;I`BKQ~p zNPyaK@}FC~I7Y_ly?y((*X!irU#QjcfnKXz01)RQ0D*ursL=^ZxoVTz0tlFcdx1e? zNLx50*t25DZU-f@118}U1SUiY-UQ3ae7@#qo6nyC!x0bw0RDgd{2diD`ekbu3?SgO z5F*^utJSz=5&-vQ4V)A;s1cWLHmI=p44fK?cMNWaLff#%K1wNzwo+CWAjD#-9KG3y z5!Br5a;>2wpM9>92%dcYJplakTRTW4jWqlpfb<^ zz^-aY$UtJHdW|MW`JcJ)a_!3ZEHfy;X|9?YRU%M*z{zqc#vXM57H!3Gc)za;30R49EyO5jzDTL9z@t zk3rbn>>mdJA(RD)0152hf;o8;fK!(Qz$H*qOcT)#(-Z*q75zo3lp6%=L=f~kx(WZ> zgam(jC6(0#wgWY|3slVTYZI1OO0$KoBMXG$TXibO|u-z@8Ob z081bt_(K>?kU^CceiadZEy+#!L-6N%{d05o+%q>f=U33{4 zepKj!TU&{lMgSyTG6Q@?Ctw_534kG$0xaYtq)z@2jynkeZ$T=qX0E#W?YF=F`s*e9 zD&!1D)~8ojT|TJU5#ep)&sO#yfAEFppC^EUl`R;f4kRh*Fj*CD)S;rLrdOs{D>Xzw z!U4b~Rp|0W0;Gg59vuRgx_9;B#p<^|`smojN}pw+X!r6r#~^4(9r^dEoq z?xRN!9U_3*dQ<@-NZBhOIJ@1nmY|wJqqzeFNdORJiCF@m6c9to9!jvt)w0OkMFM#9 z*s;Th4<8H0mL6M$e?pG&KZ3^}B>$raX$~Z-AmJcrI-YY&`wA|NCD6pq*A~~ z$~^fttk!S)@4HxCU45|{1cdPV>xcVeOJ^r0Ce~&r*8YAjc>KbJyN@0^dhp(RUlah+ zW^QaH2~q)MBwumN34qI&hm0MGVT7(EDaEWjLGiyQXVrSM+dqf1uO?9jZwmx(yneku z=JPwy{*~DeUbt}R(4m6|?|t#hFTWHGq~YbeuIJVk18-X984`sv0if5zp8&M$!>^T3 zhlqftY)a%#

19-oCdTS$!AJjVFf)07-xV01!c3zkd9U3po0eJplgY%G_gHj-oi; zCi4hIg3Mbyq9N*)>5@{~QD$Nu!Mw$gVu-hyqNvVWCDV9BSanA05u(zhL*m_tu#G=R zEJpkxh(yBwKIi;e!gp=gEz7>2d(OG{o_l-cEC5}Nso0u5T?t4*5v}Gy4FCXfX)n^v z(}p4dG7K0igI3?NJ_jSsbxjOf-POOTNeUqY5FQ>@;ZO9{UjcR&u9m~cP3lky1c5XF zKmc_7lMAd4yM5)t@^s7~pboMC44i^wZTuQ3YBw#CY;4k~Z`@c>fq$d%WAz9jAnt#a z^#@?igf(R}-b>%UsTBZ2UM~Rr!^mVqoq;? zPAiCEDW3TE_cu1F|DPN%dNoIX{O6n6+?!CiqqKD2A=(=Op!(%SI_)BMSpWmwynWlp(i(O|0uXNjAOso%Md(Qa<^!Pq0JOQs8K`pa zqw(HzMoTI6$M}1-E1-vP*b-R+%Ah=1Fq+Bu^<5-V(;TZ2P4;;B1Id)Np*c9&V^1@1 z)OaABPM4SaqQ3qcu?HahKLGXs&}fYwwsYsJ&2y@}(pgq(^116(v{ZzcH4h>08zoK+HDGex~5ZG-ttBA{p8A)e< zDM|%Ug^d|#5D? zUGBb;$<&M)wnWSttE2cu_%jJIf+LK*k%6AL17jMCAdo|ML<#Um<2q8-j0am4p)~*& zE=a}-if9WtD9~sY5bchwYcJLH&!~?3sOM^*mHHEj>gtX8>xbi?wdY+1phK4|!Mk(g z)V~)qf|8OTh&`1E00biL91_gGAS&pH7(1PhVc#9OT-{~)!x=GX-0`liu6|Hmzd-@S zpDzP|D>&4Nn+F5osu2J$9TA5*0J0%)WC4(z{1=p`QG7;2onMUAdtUc>=m9eJVOf9# z0DA?P9nSb0q8|5~uIzlp$(PO@Nl?GuTKr=1)xO#n^IYN)V>?d=2u2c+zLYZqqEV;c z?}DJedaD$nIun4b^6?)L9*!#j1ADR@j2xLebN_zR(!x7CUyX%85$NBmZoN2qm8OL5 zRJv5o`VLh*&Z%_){#mU;2M#nk-G09Y|6l)V-I3rB2*QwGQGq|gU)*zZXU@#sKXRa{ ztaJwmV-=y3oPkDHUA_9z=nTHUN+#rHV!upoQi5t2@sFPDz3g zfbbU}QvxdD507>tBLNsWYt~HcB@A@MmK;>F6od>xC+0*EErC}t05AwrG;}m|&wU3D zlq2j_0QdypFM;t20PeB_vHrk948ml6Bml!F>F7zqtVt6mDuAU-qi`7l+B{kePI6vd z7_}Ic;3f7vo z*^0s&>g%aLCjb2K))ip}Z`hAg05c&dvlNfnv3D&I=)}IDHxbByI0wNJ2t+p&z{QtF z!T@l)`>XJMEcS+IOh^WkZ@t7Ky9Ny(Jb1+l>?chU|52j^plgn$q|7p)xU}-f+72x{ z%%R`#R#kc1jpq7O7+4i+Yqx^{M9K$%2mm7ie!rX1`g|1XXOL3dnv~+-3M%F&A-71AuD4fE*!sbY$(= zot3Y@J$)LDrucBBCipH=M5|DB^zFwbOW14aaC|5l^=19ZKL~zj)Yr(cH30mUUsDA# zeAc7o6%V8%7(9FSY=*ye67FKI5`eBei;G*dXfbAK&;A_3JW3!8d+LD)Pd`6pQ{d{(Lz9ocbjS#r`q^k}zfoD`k%0>)v$<{Cwh)*t zixv%_4!IxQyYI>MpEsT&5ZIAp9&506*C49`NDPqgFF+vRfp+ux}zxw06{RDEoIlvmW(OgxAzeQ51+i9ioYVLtH-L%0dG8sP)GnY`V1c# z-<|3&;te@R5`gR}ai0291GDqgTQr0VQ&Zanaj+%q6runijCqCN zgqst9`!VY7q6oAC*?}<^L6pB%9Q`#$VUhy^Ez7mLk>jeG-JuBIyc^Xcs_-InJNDD zJ%*sXydF>tS$F)`7d~m3d%oX_T-tK8`8SbP8`D-9g)fAgP3g=uEdeVr*4!{f!a^}o z^hRT)tgt^V?U4|DymiHvpf5 zK*LXOQZoj;4e{Oo#R*LiGZP!JSSHoe2ix6b@Wl66kRMJY(uuUeVCcCL3avQg$i`}| z6Fs4x2n4JI&tz!91;ip2UiSX`dwy6N+IxN5aZ3k3o@~IHqM?Cqq;54tkl%fpe3Sx( z78%{AH|DLLZSOGdX8LF=_Z8j=Boc;NlL^utWu>Jfx;E+v>$G(MlV{8;l6XSZoz+WA zzPVytNcB#+)+epT-2I<){yua)k_p~q@Xo}^2K0grxQ!88qE~^}Uwys1d*;kmbo>p< zRL^IX(3FZqHc9E;>7E`(d_=AACbnv)f#I^Y=7IuR5EhXB>$F;i2LaX+a?Q=*60}$x z3>&9FVLrfrqFEUV$2u~}uik-tQ|rXZZfZuU8y81nu)xjS$%(C4Boa$SN1vq_1s?wL z%vLP6nG6Pli;MjV9JACrzS`&YmcbY03Tz1L3JxB0t~u|iT+=cFLV)G1OLKF@S!5?8 z(n7}%>qB>~M2t5K@3j7gbTlLGszmwF1JW^R;qBJURm-e#)*6Ye;`R1WCgFF7h!orq-CzDzopZJny^QS-m>Fe#(wp)p!t8*_p z4F1)$S1G3`Bq+h59!jXA$!JMq<{2i}9GZjvdwchh3f6Ih=jv*7EmSWI4Mk(TeWwW< z8VJ8B8Go__e!csv9pllQLL$(D_Z)#ps_7iuI-Jr;EoOJ!wO2v}<`-p+F)c z8;BGX>iXt`m30U1VWwOmkC`tK#$3g40TFNjeAK$DQ3YKL4XupX?U|2eUV- Qq$P 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 literal 0 HcmV?d00001 From 8cf971e38269b922d20c99d35442c598beb699a5 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 23:14:07 -0700 Subject: [PATCH 20/52] fix translations --- .../Translations/en/Spells/Spells03-en.txt | 2 +- .../Translations/en/Spells/Spells04-en.txt | 2 +- .../Translations/fr/Spells/Spells03-fr.txt | 2 +- .../Translations/fr/Spells/Spells04-fr.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt index cc12b69ba0..1d2e259477 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells03-en.txt @@ -34,7 +34,7 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Spirit Shroud! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} deals {2} radiant damage to {1} from Spirit Shroud! Spell/&AdderFangsDescription=You create the visage of a massive green snake that appears for an instant before bearing down on your foe. Choose a creature you can see within range. The target must make a constitution saving throw, taking 4d10 poison damage on a failure, or half as much damage on a successful one. A creature that fails its saving throw is also poisoned, and its speed is halved while poisoned by this spell. At the end of each of its turns, a target may make a constitution saving throw, ending the poison on a success. Otherwise, the poison lasts for 1 minute. When you cast this spell using a spell slot of 4th level or higher, you may target an additional creature within range for each slot level above 3rd. Spell/&AdderFangsTitle=Adder's Fangs -Spell/&AshardalonStrideDescription=The billowing flames of a dragon blast from your feet, granting you explosive speed. For the duration, your speed increases by 20 feet and moving doesn't provoke opportunity attacks. When you move within 5 feet of a creature or an object that isn’t being worn or carried, it takes 1d6 fire damage from your trail of heat. A creature or object can take this damage only once during a turn. When you cast this spell using a spell slot of 4th level or higher, increase your speed by 5 feet for each spell slot level above 3rd. The spell deals an additional 1d6 fire damage for each slot level above 3rd. +Spell/&AshardalonStrideDescription=The billowing flames of a dragon blast from your feet, granting you explosive speed. For the duration, your speed increases by 20 feet and moving doesn't provoke opportunity attacks. When you move within 5 feet of a creature, it takes 1d6 fire damage from your trail of heat. A creature can take this damage only once during a turn. When you cast this spell using a spell slot of 4th level or higher, increase your speed by 5 feet for each spell slot level above 3rd. The spell deals an additional 1d6 fire damage for each slot level above 3rd. Spell/&AshardalonStrideTitle=Ashardalon's Stride Spell/&AuraOfLifeDescription=Healing energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. You can use a bonus action to cause one creature in the aura (including you) to regain 2d6 hit points. Spell/&AuraOfLifeTitle=Aura of Vitality diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt index ef9245b6ed..49a43f0ed1 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt @@ -38,7 +38,7 @@ Spell/&GravitySinkholeDescription=A 20-foot-radius sphere of crushing force form Spell/&GravitySinkholeTitle=Gravity Sinkhole Spell/&IrresistiblePerformanceDescription=You weave a song into the air, causing those who hear it to applaud its magnificence. All creatures of your choice inside a 30-foot-cube within range must make a Charisma saving throw or be forced to clap and shout until the start of your next turn. A creature that is charmed by you always fails this saving throw. A clapping creature cannot perform any actions that require their hands or mouth but can otherwise act normally. This spell has no effect on creatures that are immune to charm. Spell/&IrresistiblePerformanceTitle=Irresistible Performance -Spell/&PsionicBlastDescription=You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. +Spell/&PsionicBlastDescription=You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn't pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. Spell/&PsionicBlastTitle=Psionic Blast Spell/&PsychicLanceDescription=You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. Spell/&PsychicLanceTitle=Raulothim's Psychic Lance diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt index 07e543471d..35e2f92029 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells03-fr.txt @@ -34,7 +34,7 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=Linceul spirituel ! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} inflige {2} dégâts radiants à {1} depuis Spirit Shroud ! Spell/&AdderFangsDescription=Vous créez le visage d'un énorme serpent vert qui apparaît un instant avant de foncer sur votre ennemi. Choisissez une créature que vous pouvez voir à portée. La cible doit effectuer un jet de sauvegarde de constitution, subissant 4d10 dégâts de poison en cas d'échec, ou la moitié de ces dégâts en cas de réussite. Une créature qui rate son jet de sauvegarde est également empoisonnée, et sa vitesse est réduite de moitié lorsqu'elle est empoisonnée par ce sort. À la fin de chacun de ses tours, une cible peut effectuer un jet de sauvegarde de constitution, mettant fin au poison en cas de réussite. Sinon, le poison dure 1 minute. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, vous pouvez cibler une créature supplémentaire à portée pour chaque niveau d'emplacement au-dessus du niveau 3. Spell/&AdderFangsTitle=Crocs de vipère -Spell/&AshardalonStrideDescription=Les flammes d'un dragon jaillissent de vos pieds, vous conférant une vitesse explosive. Pendant toute cette durée, votre vitesse augmente de 6 mètres et vos déplacements ne provoquent pas d'attaques d'opportunité. Lorsque vous vous déplacez à moins de 1,50 mètre d’une créature ou d’un objet qui n’est pas porté ou transporté, votre traînée de chaleur lui inflige 1d6 dégâts de feu. Une créature ou un objet ne peut subir ces dégâts qu'une seule fois par tour. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, augmentez votre vitesse de 1,50 mètre pour chaque niveau d'emplacement de sort supérieur au niveau 3. Le sort inflige 1d6 dégâts de feu supplémentaires pour chaque niveau d'emplacement supérieur au 3. +Spell/&AshardalonStrideDescription=Les flammes d'un dragon jaillissent de vos pieds, vous conférant une vitesse explosive. Pendant toute cette durée, votre vitesse augmente de 6 mètres et vos déplacements ne provoquent pas d'attaques d'opportunité. Lorsque vous vous déplacez à moins de 1,50 mètre d'une créature ou d'un objet qui n'est pas porté ou transporté, votre traînée de chaleur lui inflige 1d6 dégâts de feu. Une créature ou un objet ne peut subir ces dégâts qu'une seule fois par tour. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, augmentez votre vitesse de 1,50 mètre pour chaque niveau d'emplacement de sort supérieur au niveau 3. Le sort inflige 1d6 dégâts de feu supplémentaires pour chaque niveau d'emplacement supérieur au 3. Spell/&AshardalonStrideTitle=La foulée d'Ashardalon Spell/&AuraOfLifeDescription=L'énergie de guérison rayonne de vous dans une aura d'un rayon de 9 mètres. Jusqu'à la fin du sort, l'aura se déplace avec vous, centrée sur vous. Vous pouvez utiliser une action bonus pour permettre à une créature dans l'aura (vous y compris) de regagner 2d6 points de vie. Spell/&AuraOfLifeTitle=Aura de vitalité diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt index 8b20ed8815..4ed7d64c47 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt @@ -38,7 +38,7 @@ Spell/&GravitySinkholeDescription=Une sphère de force écrasante d'un rayon de Spell/&GravitySinkholeTitle=Gouffre gravitationnel Spell/&IrresistiblePerformanceDescription=Vous lancez une chanson dans l'air, ce qui amène ceux qui l'entendent à applaudir sa magnificence. Toutes les créatures de votre choix à l'intérieur d'un cube de 9 mètres à portée doivent effectuer un jet de sauvegarde de Charisme ou être forcées d'applaudir et de crier jusqu'au début de votre prochain tour. Une créature charmée par vous échoue toujours à ce jet de sauvegarde. Une créature qui applaudit ne peut effectuer aucune action nécessitant ses mains ou sa bouche, mais peut autrement agir normalement. Ce sort n'a aucun effet sur les créatures immunisées contre le charme. Spell/&IrresistiblePerformanceTitle=Des performances irrésistibles -Spell/&PsionicBlastDescription=Vous libérez une vague de puissance mentale destructrice dans un cône de 9 mètres. Chaque créature présente dans la zone doit effectuer un jet de sauvegarde d'Intelligence. En cas d'échec, la cible subit 5d8 dégâts psychiques, est poussée à 6 mètres directement de vous et est projetée à terre. En cas de sauvegarde réussie, la cible subit deux fois moins de dégâts et n’est ni poussée ni mise à terre. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. +Spell/&PsionicBlastDescription=Vous libérez une vague de puissance mentale destructrice dans un cône de 9 mètres. Chaque créature présente dans la zone doit effectuer un jet de sauvegarde d'Intelligence. En cas d'échec, la cible subit 5d8 dégâts psychiques, est poussée à 6 mètres directement de vous et est projetée à terre. En cas de sauvegarde réussie, la cible subit deux fois moins de dégâts et n'est ni poussée ni mise à terre. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. Spell/&PsionicBlastTitle=Explosion psionique Spell/&PsychicLanceDescription=Vous lancez une lance scintillante de pouvoir psychique depuis votre front sur une créature que vous pouvez voir à portée. Il doit réussir un jet de sauvegarde d'Intelligence ou subir 7d6 dégâts psychiques et être neutralisé jusqu'à la fin de votre prochain tour. En cas de sauvegarde réussie, la créature subit la moitié des dégâts et n'est pas incapable d'agir. Aux niveaux supérieurs. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 pour chaque niveau d'emplacement supérieur au 4e. Spell/&PsychicLanceTitle=Lance psychique de Raulothim From d69d8bbcb59e9cc3b92d2d5f1e35b3185839fa48 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Fri, 7 Jun 2024 23:23:58 -0700 Subject: [PATCH 21/52] add Ashardalon's Stride spell --- .../UnfinishedBusinessBlueprints/Assets.txt | 26 + .../ConditionAshardalonStride3.json | 158 ++ .../ConditionAshardalonStride4.json | 158 ++ .../ConditionAshardalonStride5.json | 158 ++ .../ConditionAshardalonStride6.json | 158 ++ .../ConditionAshardalonStride7.json | 158 ++ .../ConditionAshardalonStride8.json | 158 ++ .../ConditionAshardalonStride9.json | 158 ++ .../ConditionAshardalonStrideMark.json | 155 ++ .../CombatAffinityAshardalonStride.json | 62 + .../MovementAffinityAshardalonStride3.json | 56 + .../MovementAffinityAshardalonStride4.json | 56 + .../MovementAffinityAshardalonStride5.json | 56 + .../MovementAffinityAshardalonStride6.json | 56 + .../MovementAffinityAshardalonStride7.json | 56 + .../MovementAffinityAshardalonStride8.json | 56 + .../MovementAffinityAshardalonStride9.json | 56 + .../SpellDefinition/AshardalonStride.json | 2 +- .../Api/DatabaseHelper-RELEASE.cs | 4 +- .../ChangelogHistory.txt | 3 +- SolastaUnfinishedBusiness/Displays/_ModUi.cs | 1 + .../Models/SpellsContext.cs | 2 + .../Spells/SpellBuildersLevel03.cs | 1844 +++++++++-------- .../Translations/fr/Others-fr.txt | 2 +- 24 files changed, 2752 insertions(+), 847 deletions(-) create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStrideMark.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityAshardalonStride.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json diff --git a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt index 8069252c5e..2b800590d1 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt +++ b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt @@ -584,6 +584,14 @@ ConditionArchfeyBeguilingDefenses ConditionDefinition ConditionDefinition e078b3 ConditionArchfeyDarkDeliriumCharmed ConditionDefinition ConditionDefinition 6ee74407-fd8a-5570-8e37-669e09c710e5 ConditionArchfeyDarkDeliriumFrightened ConditionDefinition ConditionDefinition c2dca090-94d5-5746-9e68-f0e214015078 ConditionArchfeyMistyEscape ConditionDefinition ConditionDefinition 84e8d733-2617-5b85-9336-c23b138f144c +ConditionAshardalonStride3 ConditionDefinition ConditionDefinition 44540cba-9177-5d81-8f3a-64b6157fdca1 +ConditionAshardalonStride4 ConditionDefinition ConditionDefinition 48e7a336-d3d9-59a5-8af1-18b828aa9cd8 +ConditionAshardalonStride5 ConditionDefinition ConditionDefinition 7b3f31d5-1e54-56ae-94c0-9ea5afc15d87 +ConditionAshardalonStride6 ConditionDefinition ConditionDefinition 836d2da6-41d1-531f-ab79-669ad0675ca5 +ConditionAshardalonStride7 ConditionDefinition ConditionDefinition 1dc85e07-5d31-5de7-9894-e6b5f505638a +ConditionAshardalonStride8 ConditionDefinition ConditionDefinition 41d0b47b-e184-5053-98ff-54b33818dcb7 +ConditionAshardalonStride9 ConditionDefinition ConditionDefinition 59204c73-8e36-5209-a6ff-6cd7285d3f8b +ConditionAshardalonStrideMark ConditionDefinition ConditionDefinition 5e73b3a9-e557-520b-ba81-30f2ac843879 ConditionAuraOfLife ConditionDefinition ConditionDefinition 0911cf46-f400-52a5-a088-e7cc00e68fa8 ConditionAuraOfLifeSelf ConditionDefinition ConditionDefinition f186bbd3-1e70-594b-a8a8-30c466755d5a ConditionAuraOfPerseverance ConditionDefinition ConditionDefinition dd0b48b9-9a45-50bc-921f-c73d5ef82537 @@ -1982,6 +1990,7 @@ CastSpellVerdantTouchedCharisma FeatureDefinitionCastSpell FeatureDefinition a78 CastSpellVerdantTouchedIntelligence FeatureDefinitionCastSpell FeatureDefinition f65df8b9-5c69-582a-8a12-ae474f94aee6 CastSpellVerdantTouchedWisdom FeatureDefinitionCastSpell FeatureDefinition 4a7a94a1-4b4a-5f10-9c99-d88898c7eac4 ChangeAbilityCheckBarbarianIndomitableMight FeatureDefinition FeatureDefinition 47dee943-ce2f-5a86-be4b-8cd353ae142c +CombatAffinityAshardalonStride FeatureDefinitionCombatAffinity FeatureDefinition 3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a CombatAffinityCollegeOfThespianCombatInspiration FeatureDefinitionCombatAffinity FeatureDefinition 49736139-c69f-5143-ab50-2830f37a86c2 CombatAffinityDistractedByAlly FeatureDefinitionCombatAffinity FeatureDefinition 50f806ee-547c-56e2-b615-056e58429b1c CombatAffinityFeatCallForCharge FeatureDefinitionCombatAffinity FeatureDefinition 8809a9a9-349e-54eb-88da-359c0b9118c1 @@ -2707,6 +2716,13 @@ MagicAffinitySpellMasterPrepared FeatureDefinitionMagicAffinity FeatureDefinitio MagicAffinitySpellMasterScriber FeatureDefinitionMagicAffinity FeatureDefinition fffd1d15-c290-5983-8c66-6a2052d0d280 MagicAffinitySpellShieldCombatMagicVigor FeatureDefinitionAdditionalDamage FeatureDefinition d397da35-229d-53b3-afda-26524a45f0f1 MovementAffinityAdderFangs FeatureDefinitionMovementAffinity FeatureDefinition 24a8238e-3242-5c56-aad5-7fce2b726d78 +MovementAffinityAshardalonStride3 FeatureDefinitionMovementAffinity FeatureDefinition c6c95315-6ce3-5d1e-bf8f-ee8641723092 +MovementAffinityAshardalonStride4 FeatureDefinitionMovementAffinity FeatureDefinition acd4d5fd-0f58-52bc-97be-b143a6bd3f0e +MovementAffinityAshardalonStride5 FeatureDefinitionMovementAffinity FeatureDefinition 951e0ca9-b935-53cd-b5c5-597cf4fe8cf0 +MovementAffinityAshardalonStride6 FeatureDefinitionMovementAffinity FeatureDefinition 648616c8-f3c0-52ae-a3c7-a2f5c73f17d3 +MovementAffinityAshardalonStride7 FeatureDefinitionMovementAffinity FeatureDefinition b9a1c67c-df53-5476-acf3-6cc82b879bf2 +MovementAffinityAshardalonStride8 FeatureDefinitionMovementAffinity FeatureDefinition e65aebde-c4ee-5cb5-82ea-0e28f2add567 +MovementAffinityAshardalonStride9 FeatureDefinitionMovementAffinity FeatureDefinition dcd7d94e-4817-55b1-8595-16e3f79d102c MovementAffinityAthlete FeatureDefinitionMovementAffinity FeatureDefinition 91ac75d7-4763-54d6-98f5-7554fc304f01 MovementAffinityCollegeOfAudacityAudaciousWhirl FeatureDefinitionMovementAffinity FeatureDefinition 0c22fb2f-8683-521d-9b18-6aec1d73a33b MovementAffinityCollegeOfEleganceAmazingDisplay FeatureDefinitionMovementAffinity FeatureDefinition a3913032-93b8-515b-875c-2b616e16cd9a @@ -4275,6 +4291,7 @@ AttackModifierWarDance FeatureDefinitionAttackModifier FeatureDefinitionAffinity AttackModifierWisePrecision FeatureDefinitionAttackModifier FeatureDefinitionAffinity 75531868-bc6a-574c-b08f-74db00fe6215 CampAffinityInvocationAspectOfTheMoonRest FeatureDefinitionCampAffinity FeatureDefinitionAffinity a8764a2e-62c3-5966-90ce-712b7e84a7d6 CampAffinityInvocationAspectOfTheMoonTrance FeatureDefinitionCampAffinity FeatureDefinitionAffinity ae828ac9-74a2-536f-9c96-4de829749b6f +CombatAffinityAshardalonStride FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a CombatAffinityCollegeOfThespianCombatInspiration FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 49736139-c69f-5143-ab50-2830f37a86c2 CombatAffinityDistractedByAlly FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 50f806ee-547c-56e2-b615-056e58429b1c CombatAffinityFeatCallForCharge FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 8809a9a9-349e-54eb-88da-359c0b9118c1 @@ -4886,6 +4903,7 @@ CastSpellVerdantTouchedIntelligence FeatureDefinitionCastSpell FeatureDefinition CastSpellVerdantTouchedWisdom FeatureDefinitionCastSpell FeatureDefinitionCastSpell 4a7a94a1-4b4a-5f10-9c99-d88898c7eac4 AttackDisadvantageAgainstNonSourcePathOfTheLightIlluminated FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity d957b79d-09b1-50ea-bc79-eafcf59e1577 AttackModifierHeroicInfusion FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 45cbbf01-2362-5421-a779-4098016bef81 +CombatAffinityAshardalonStride FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a CombatAffinityCollegeOfThespianCombatInspiration FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 49736139-c69f-5143-ab50-2830f37a86c2 CombatAffinityDistractedByAlly FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 50f806ee-547c-56e2-b615-056e58429b1c CombatAffinityFeatCallForCharge FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 8809a9a9-349e-54eb-88da-359c0b9118c1 @@ -5362,6 +5380,13 @@ MagicAffinitySpellMasterKnowledge FeatureDefinitionMagicAffinity FeatureDefiniti MagicAffinitySpellMasterPrepared FeatureDefinitionMagicAffinity FeatureDefinitionMagicAffinity f1a7adea-c1c3-5bf0-8b20-c7682a25e443 MagicAffinitySpellMasterScriber FeatureDefinitionMagicAffinity FeatureDefinitionMagicAffinity fffd1d15-c290-5983-8c66-6a2052d0d280 MovementAffinityAdderFangs FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity 24a8238e-3242-5c56-aad5-7fce2b726d78 +MovementAffinityAshardalonStride3 FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity c6c95315-6ce3-5d1e-bf8f-ee8641723092 +MovementAffinityAshardalonStride4 FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity acd4d5fd-0f58-52bc-97be-b143a6bd3f0e +MovementAffinityAshardalonStride5 FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity 951e0ca9-b935-53cd-b5c5-597cf4fe8cf0 +MovementAffinityAshardalonStride6 FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity 648616c8-f3c0-52ae-a3c7-a2f5c73f17d3 +MovementAffinityAshardalonStride7 FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity b9a1c67c-df53-5476-acf3-6cc82b879bf2 +MovementAffinityAshardalonStride8 FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity e65aebde-c4ee-5cb5-82ea-0e28f2add567 +MovementAffinityAshardalonStride9 FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity dcd7d94e-4817-55b1-8595-16e3f79d102c MovementAffinityAthlete FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity 91ac75d7-4763-54d6-98f5-7554fc304f01 MovementAffinityCollegeOfAudacityAudaciousWhirl FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity 0c22fb2f-8683-521d-9b18-6aec1d73a33b MovementAffinityCollegeOfEleganceAmazingDisplay FeatureDefinitionMovementAffinity FeatureDefinitionMovementAffinity a3913032-93b8-515b-875c-2b616e16cd9a @@ -11658,6 +11683,7 @@ AcidClaws SpellDefinition SpellDefinition b849ef41-46a9-518e-82d4-5db770314c11 AdderFangs SpellDefinition SpellDefinition 8b7efed8-7141-5db8-9326-93f351893890 AganazzarScorcher SpellDefinition SpellDefinition d98f3908-7842-5b10-b31d-fc8c77f28b57 AirBlast SpellDefinition SpellDefinition abe05c55-df0e-527c-ab83-6cd88d84c683 +AshardalonStride SpellDefinition SpellDefinition 98b57766-2cb8-5fb2-886c-0093a3a569ef AtWillConjureMinorElemental SpellDefinition SpellDefinition a06757f6-0179-54ad-875a-47bb9c301828 AuraOfLife SpellDefinition SpellDefinition 431c3f4a-ab84-56d7-842b-c8bfe87c1cd0 AuraOfPerseverance SpellDefinition SpellDefinition 5d82bdd3-4038-54da-8c96-ca324dbf0289 diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json new file mode 100644 index 0000000000..4a88bd9368 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:CombatAffinityAshardalonStride:3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "Definition:MovementAffinityAshardalonStride3:c6c95315-6ce3-5d1e-bf8f-ee8641723092" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&AshardalonStrideTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "330874c01be3cf6408fc2d0a8e697c0a", + "m_SubObjectName": "ConditionPositiveMovement", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "44540cba-9177-5d81-8f3a-64b6157fdca1", + "contentPack": 9999, + "name": "ConditionAshardalonStride3" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json new file mode 100644 index 0000000000..225aebfdcf --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:CombatAffinityAshardalonStride:3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "Definition:MovementAffinityAshardalonStride4:acd4d5fd-0f58-52bc-97be-b143a6bd3f0e" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&AshardalonStrideTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "330874c01be3cf6408fc2d0a8e697c0a", + "m_SubObjectName": "ConditionPositiveMovement", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "48e7a336-d3d9-59a5-8af1-18b828aa9cd8", + "contentPack": 9999, + "name": "ConditionAshardalonStride4" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json new file mode 100644 index 0000000000..50ca51e607 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:CombatAffinityAshardalonStride:3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "Definition:MovementAffinityAshardalonStride5:951e0ca9-b935-53cd-b5c5-597cf4fe8cf0" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&AshardalonStrideTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "330874c01be3cf6408fc2d0a8e697c0a", + "m_SubObjectName": "ConditionPositiveMovement", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "7b3f31d5-1e54-56ae-94c0-9ea5afc15d87", + "contentPack": 9999, + "name": "ConditionAshardalonStride5" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json new file mode 100644 index 0000000000..1dd792dfa9 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:CombatAffinityAshardalonStride:3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "Definition:MovementAffinityAshardalonStride6:648616c8-f3c0-52ae-a3c7-a2f5c73f17d3" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&AshardalonStrideTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "330874c01be3cf6408fc2d0a8e697c0a", + "m_SubObjectName": "ConditionPositiveMovement", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "836d2da6-41d1-531f-ab79-669ad0675ca5", + "contentPack": 9999, + "name": "ConditionAshardalonStride6" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json new file mode 100644 index 0000000000..6c74dcd1b7 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:CombatAffinityAshardalonStride:3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "Definition:MovementAffinityAshardalonStride7:b9a1c67c-df53-5476-acf3-6cc82b879bf2" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&AshardalonStrideTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "330874c01be3cf6408fc2d0a8e697c0a", + "m_SubObjectName": "ConditionPositiveMovement", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "1dc85e07-5d31-5de7-9894-e6b5f505638a", + "contentPack": 9999, + "name": "ConditionAshardalonStride7" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json new file mode 100644 index 0000000000..9a20d33c1c --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:CombatAffinityAshardalonStride:3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "Definition:MovementAffinityAshardalonStride8:e65aebde-c4ee-5cb5-82ea-0e28f2add567" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&AshardalonStrideTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "330874c01be3cf6408fc2d0a8e697c0a", + "m_SubObjectName": "ConditionPositiveMovement", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "41d0b47b-e184-5053-98ff-54b33818dcb7", + "contentPack": 9999, + "name": "ConditionAshardalonStride8" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json new file mode 100644 index 0000000000..3f95ada9fe --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:CombatAffinityAshardalonStride:3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "Definition:MovementAffinityAshardalonStride9:dcd7d94e-4817-55b1-8595-16e3f79d102c" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&AshardalonStrideTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "330874c01be3cf6408fc2d0a8e697c0a", + "m_SubObjectName": "ConditionPositiveMovement", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "59204c73-8e36-5209-a6ff-6cd7285d3f8b", + "contentPack": 9999, + "name": "ConditionAshardalonStride9" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStrideMark.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStrideMark.json new file mode 100644 index 0000000000..d4f7f4cd8d --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStrideMark.json @@ -0,0 +1,155 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [], + "allowMultipleInstances": false, + "silentWhenAdded": true, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "5e73b3a9-e557-520b-ba81-30f2ac843879", + "contentPack": 9999, + "name": "ConditionAshardalonStrideMark" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityAshardalonStride.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityAshardalonStride.json new file mode 100644 index 0000000000..56911b12fe --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityAshardalonStride.json @@ -0,0 +1,62 @@ +{ + "$type": "FeatureDefinitionCombatAffinity, Assembly-CSharp", + "initiativeAffinity": "None", + "canRageToOvercomeSurprise": false, + "attackOfOpportunityImmunity": true, + "attackOfOpportunityOnMeAdvantageType": "None", + "attackOnMeAdvantage": "None", + "attackOnMeCountLimit": -1, + "autoCritical": false, + "criticalHitImmunity": false, + "myAttackAffinityFilter": "Always", + "myAttackAdvantage": "None", + "ignoreCover": false, + "permanentCover": "None", + "ignoreRangeAdvantage": false, + "myAttackModifierValueDetermination": "None", + "myAttackModifierSign": "Add", + "myAttackModifierDiceNumber": 1, + "myAttackModifierDieType": "D4", + "myAttackDamageMultiplier": 1.0, + "myDamageReductionValueDetermination": "None", + "myDamageReductionDiceNumber": 1, + "myDamageReductionDieType": "D4", + "situationalContext": "None", + "requiredCondition": null, + "nullifiedBySenses": [], + "nullifiedBySelfSenses": [], + "multiAttackAffinity": false, + "multiAttackDefenseValue": 0, + "readyAttackAdvantage": "None", + "shoveOnReadyAttackHit": false, + "autoFormatDescription": true, + "myselfFamilyRestrictions": [], + "otherCharacterFamilyRestrictions": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "3bc238ab-1b3e-5c2d-ac2a-0e2aa450326a", + "contentPack": 9999, + "name": "CombatAffinityAshardalonStride" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json new file mode 100644 index 0000000000..38a1792942 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json @@ -0,0 +1,56 @@ +{ + "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", + "appliesToAllModes": true, + "moveMode": "Walk", + "baseSpeedAdditiveModifier": 2, + "additiveModifierAdvancement": "None", + "additiveModifierByLevelTable": [], + "forceMinimalBaseSpeed": false, + "minimalBaseSpeed": 6, + "baseSpeedMultiplicativeModifier": 1.0, + "minMaxMoves": 0, + "speedAddBase": false, + "fastClimber": false, + "expertClimber": false, + "canMoveOnWalls": false, + "canFlyWithWalkSpeed": false, + "enhancedJump": false, + "additionalJumpCells": 0, + "immuneDifficultTerrain": false, + "disableVault": false, + "disableDrop": false, + "disableJump": false, + "disableClimb": false, + "additionalFallThreshold": 0, + "encumbranceImmunity": false, + "heavyArmorImmunity": false, + "situationalContext": "None", + "additionalDashTag": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "c6c95315-6ce3-5d1e-bf8f-ee8641723092", + "contentPack": 9999, + "name": "MovementAffinityAshardalonStride3" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json new file mode 100644 index 0000000000..6004b07478 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json @@ -0,0 +1,56 @@ +{ + "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", + "appliesToAllModes": true, + "moveMode": "Walk", + "baseSpeedAdditiveModifier": 3, + "additiveModifierAdvancement": "None", + "additiveModifierByLevelTable": [], + "forceMinimalBaseSpeed": false, + "minimalBaseSpeed": 6, + "baseSpeedMultiplicativeModifier": 1.0, + "minMaxMoves": 0, + "speedAddBase": false, + "fastClimber": false, + "expertClimber": false, + "canMoveOnWalls": false, + "canFlyWithWalkSpeed": false, + "enhancedJump": false, + "additionalJumpCells": 0, + "immuneDifficultTerrain": false, + "disableVault": false, + "disableDrop": false, + "disableJump": false, + "disableClimb": false, + "additionalFallThreshold": 0, + "encumbranceImmunity": false, + "heavyArmorImmunity": false, + "situationalContext": "None", + "additionalDashTag": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "acd4d5fd-0f58-52bc-97be-b143a6bd3f0e", + "contentPack": 9999, + "name": "MovementAffinityAshardalonStride4" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json new file mode 100644 index 0000000000..5869d0d07b --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json @@ -0,0 +1,56 @@ +{ + "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", + "appliesToAllModes": true, + "moveMode": "Walk", + "baseSpeedAdditiveModifier": 4, + "additiveModifierAdvancement": "None", + "additiveModifierByLevelTable": [], + "forceMinimalBaseSpeed": false, + "minimalBaseSpeed": 6, + "baseSpeedMultiplicativeModifier": 1.0, + "minMaxMoves": 0, + "speedAddBase": false, + "fastClimber": false, + "expertClimber": false, + "canMoveOnWalls": false, + "canFlyWithWalkSpeed": false, + "enhancedJump": false, + "additionalJumpCells": 0, + "immuneDifficultTerrain": false, + "disableVault": false, + "disableDrop": false, + "disableJump": false, + "disableClimb": false, + "additionalFallThreshold": 0, + "encumbranceImmunity": false, + "heavyArmorImmunity": false, + "situationalContext": "None", + "additionalDashTag": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "951e0ca9-b935-53cd-b5c5-597cf4fe8cf0", + "contentPack": 9999, + "name": "MovementAffinityAshardalonStride5" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json new file mode 100644 index 0000000000..6e44f4d396 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json @@ -0,0 +1,56 @@ +{ + "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", + "appliesToAllModes": true, + "moveMode": "Walk", + "baseSpeedAdditiveModifier": 5, + "additiveModifierAdvancement": "None", + "additiveModifierByLevelTable": [], + "forceMinimalBaseSpeed": false, + "minimalBaseSpeed": 6, + "baseSpeedMultiplicativeModifier": 1.0, + "minMaxMoves": 0, + "speedAddBase": false, + "fastClimber": false, + "expertClimber": false, + "canMoveOnWalls": false, + "canFlyWithWalkSpeed": false, + "enhancedJump": false, + "additionalJumpCells": 0, + "immuneDifficultTerrain": false, + "disableVault": false, + "disableDrop": false, + "disableJump": false, + "disableClimb": false, + "additionalFallThreshold": 0, + "encumbranceImmunity": false, + "heavyArmorImmunity": false, + "situationalContext": "None", + "additionalDashTag": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "648616c8-f3c0-52ae-a3c7-a2f5c73f17d3", + "contentPack": 9999, + "name": "MovementAffinityAshardalonStride6" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json new file mode 100644 index 0000000000..07d44fc13a --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json @@ -0,0 +1,56 @@ +{ + "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", + "appliesToAllModes": true, + "moveMode": "Walk", + "baseSpeedAdditiveModifier": 6, + "additiveModifierAdvancement": "None", + "additiveModifierByLevelTable": [], + "forceMinimalBaseSpeed": false, + "minimalBaseSpeed": 6, + "baseSpeedMultiplicativeModifier": 1.0, + "minMaxMoves": 0, + "speedAddBase": false, + "fastClimber": false, + "expertClimber": false, + "canMoveOnWalls": false, + "canFlyWithWalkSpeed": false, + "enhancedJump": false, + "additionalJumpCells": 0, + "immuneDifficultTerrain": false, + "disableVault": false, + "disableDrop": false, + "disableJump": false, + "disableClimb": false, + "additionalFallThreshold": 0, + "encumbranceImmunity": false, + "heavyArmorImmunity": false, + "situationalContext": "None", + "additionalDashTag": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "b9a1c67c-df53-5476-acf3-6cc82b879bf2", + "contentPack": 9999, + "name": "MovementAffinityAshardalonStride7" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json new file mode 100644 index 0000000000..3d3e9535ba --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json @@ -0,0 +1,56 @@ +{ + "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", + "appliesToAllModes": true, + "moveMode": "Walk", + "baseSpeedAdditiveModifier": 7, + "additiveModifierAdvancement": "None", + "additiveModifierByLevelTable": [], + "forceMinimalBaseSpeed": false, + "minimalBaseSpeed": 6, + "baseSpeedMultiplicativeModifier": 1.0, + "minMaxMoves": 0, + "speedAddBase": false, + "fastClimber": false, + "expertClimber": false, + "canMoveOnWalls": false, + "canFlyWithWalkSpeed": false, + "enhancedJump": false, + "additionalJumpCells": 0, + "immuneDifficultTerrain": false, + "disableVault": false, + "disableDrop": false, + "disableJump": false, + "disableClimb": false, + "additionalFallThreshold": 0, + "encumbranceImmunity": false, + "heavyArmorImmunity": false, + "situationalContext": "None", + "additionalDashTag": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "e65aebde-c4ee-5cb5-82ea-0e28f2add567", + "contentPack": 9999, + "name": "MovementAffinityAshardalonStride8" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json new file mode 100644 index 0000000000..af12e3e4e8 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json @@ -0,0 +1,56 @@ +{ + "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", + "appliesToAllModes": true, + "moveMode": "Walk", + "baseSpeedAdditiveModifier": 8, + "additiveModifierAdvancement": "None", + "additiveModifierByLevelTable": [], + "forceMinimalBaseSpeed": false, + "minimalBaseSpeed": 6, + "baseSpeedMultiplicativeModifier": 1.0, + "minMaxMoves": 0, + "speedAddBase": false, + "fastClimber": false, + "expertClimber": false, + "canMoveOnWalls": false, + "canFlyWithWalkSpeed": false, + "enhancedJump": false, + "additionalJumpCells": 0, + "immuneDifficultTerrain": false, + "disableVault": false, + "disableDrop": false, + "disableJump": false, + "disableClimb": false, + "additionalFallThreshold": 0, + "encumbranceImmunity": false, + "heavyArmorImmunity": false, + "situationalContext": "None", + "additionalDashTag": null, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "dcd7d94e-4817-55b1-8595-16e3f79d102c", + "contentPack": 9999, + "name": "MovementAffinityAshardalonStride9" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json index 48c87c935d..0b5a1e3baf 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json @@ -104,7 +104,7 @@ "specialFormsDescription": "", "effectAdvancement": { "$type": "EffectAdvancement, Assembly-CSharp", - "effectIncrementMethod": "CasterLevelTable", + "effectIncrementMethod": "PerAdditionalSlotLevel", "incrementMultiplier": 1, "additionalTargetsPerIncrement": 0, "additionalSubtargetsPerIncrement": 0, diff --git a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs index c6d4e9a51d..ee1c1e3f49 100644 --- a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs +++ b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs @@ -298,10 +298,10 @@ internal static class ConditionDefinitions { internal static ConditionDefinition ConditionFeebleMinded { get; } = GetDefinition("ConditionFeebleMinded"); - + internal static ConditionDefinition ConditionMonkSlowFall { get; } = GetDefinition("ConditionMonkSlowFall"); - + internal static ConditionDefinition ConditionHolyAura { get; } = GetDefinition("ConditionHolyAura"); diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index 985270f6a2..50b7b93b96 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -1,8 +1,7 @@ 1.5.97.14: -- fixed Abundant Ki feature description to be half proficiency bonus rounded down instead of rounded up +- added Ashardalon's Stride spell - fixed Domain Tempest wrath of the storm feature not consuming a reaction -- fixed Metamagic Adept feat description to be half proficiency bonus rounded down instead of rounded up - fixed Mind Sharpener infusion not providing advantage on concentration checks - fixed Pulse Wave spell to offer push/pull options as well as increase distance on upcasting - fixed Quickened metamagic interaction with Booming Blade, Green-Flame Blade, and Sunlit Blade cantrips diff --git a/SolastaUnfinishedBusiness/Displays/_ModUi.cs b/SolastaUnfinishedBusiness/Displays/_ModUi.cs index 99be70a0a3..5b6b54e460 100644 --- a/SolastaUnfinishedBusiness/Displays/_ModUi.cs +++ b/SolastaUnfinishedBusiness/Displays/_ModUi.cs @@ -35,6 +35,7 @@ internal static class ModUi [ "AganazzarScorcher", "AirBlast", + "AshardalonStride", "AuraOfLife", "AuraOfPerseverance", "AuraOfVitality", diff --git a/SolastaUnfinishedBusiness/Models/SpellsContext.cs b/SolastaUnfinishedBusiness/Models/SpellsContext.cs index 602cd72d31..3d849934d3 100644 --- a/SolastaUnfinishedBusiness/Models/SpellsContext.cs +++ b/SolastaUnfinishedBusiness/Models/SpellsContext.cs @@ -304,6 +304,8 @@ internal static void LateLoad() RegisterSpell(BuildWitherAndBloom(), 0, SpellListDruid, SpellListSorcerer, SpellListWizard); // 3rd level + RegisterSpell(BuildAshardalonStride(), 0, SpellListRanger, SpellListSorcerer, SpellListWizard, + spellListInventorClass); RegisterSpell(BuildAuraOfVitality(), 0, SpellListCleric, SpellListPaladin); RegisterSpell(BuildAdderFangs(), 0, SpellListDruid, SpellListRanger, SpellListSorcerer, SpellListWarlock); RegisterSpell(BlindingSmite, 0, SpellListPaladin); diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs index 979307762d..a591c87446 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs @@ -22,6 +22,66 @@ namespace SolastaUnfinishedBusiness.Spells; internal static partial class SpellBuilders { + #region Adder's Fangs + + internal static SpellDefinition BuildAdderFangs() + { + const string Name = "AdderFangs"; + + var movementAffinityAdderFangs = FeatureDefinitionMovementAffinityBuilder + .Create($"MovementAffinity{Name}") + .SetGuiPresentationNoContent(true) + .SetBaseSpeedMultiplicativeModifier(0.5f) + .AddToDB(); + + var conditionAdderFangs = ConditionDefinitionBuilder + .Create(ConditionDefinitions.ConditionPoisoned, $"Condition{Name}") + .SetPossessive() + .AddFeatures(movementAffinityAdderFangs) + .AddToDB(); + + conditionAdderFangs.GuiPresentation.Description = Gui.NoLocalization; + + var spell = SpellDefinitionBuilder + .Create(Name) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.AdderFangs, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolConjuration) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.Mundane) + .SetVerboseComponent(true) + .SetSomaticComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Minute, 1) + .SetTargetingData(Side.Enemy, RangeType.Distance, 24, TargetType.IndividualsUnique) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, + additionalTargetsPerIncrement: 1) + .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, + EffectDifficultyClassComputation.SpellCastingFeature) + .SetEffectForms( + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .SetDamageForm(DamageTypePoison, 4, DieType.D10) + .Build(), + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.Negates, TurnOccurenceType.EndOfTurn, true) + .SetConditionForm(conditionAdderFangs, ConditionForm.ConditionOperation.Add) + .Build()) + .SetParticleEffectParameters(VenomousSpike) + .SetEffectEffectParameters(InflictWounds) + .Build()) + .AddToDB(); + + return spell; + } + + #endregion + #region Blinding Smite internal static SpellDefinition BuildBlindingSmite() @@ -94,58 +154,6 @@ internal static SpellDefinition BuildBlindingSmite() #endregion - #region Winter Breath - - internal static SpellDefinition BuildWinterBreath() - { - const string NAME = "WinterBreath"; - - var spriteReference = Sprites.GetSprite(NAME, Resources.WinterBreath, 128); - - var effectDescription = EffectDescriptionBuilder - .Create() - .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 3) - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) - .SetSavingThrowData( - false, - AttributeDefinitions.Dexterity, - false, - EffectDifficultyClassComputation.SpellCastingFeature, - AttributeDefinitions.Wisdom, - 12) - .SetParticleEffectParameters(ConeOfCold) - .ExcludeCaster() - .SetEffectForms( - EffectFormBuilder - .Create() - .SetMotionForm(MotionForm.MotionType.FallProne, 1) - .HasSavingThrow(EffectSavingThrowType.Negates) - .Build(), - EffectFormBuilder - .Create() - .SetDamageForm(DamageTypeCold, 4, DieType.D8) - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .Build()) - .Build(); - - var spell = SpellDefinitionBuilder - .Create(NAME) - .SetGuiPresentation(Category.Spell, spriteReference) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolConjuration) - .SetSpellLevel(3) - .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(true) - .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Attack) - .SetEffectDescription(effectDescription) - .AddToDB(); - - return spell; - } - - #endregion - #region Crusaders Mantle internal static SpellDefinition BuildCrusadersMantle() @@ -249,59 +257,51 @@ internal static SpellDefinition BuildIntellectFortress() #endregion - #region Adder's Fangs + #region Winter Breath - internal static SpellDefinition BuildAdderFangs() + internal static SpellDefinition BuildWinterBreath() { - const string Name = "AdderFangs"; - - var movementAffinityAdderFangs = FeatureDefinitionMovementAffinityBuilder - .Create($"MovementAffinity{Name}") - .SetGuiPresentationNoContent(true) - .SetBaseSpeedMultiplicativeModifier(0.5f) - .AddToDB(); + const string NAME = "WinterBreath"; - var conditionAdderFangs = ConditionDefinitionBuilder - .Create(ConditionDefinitions.ConditionPoisoned, $"Condition{Name}") - .SetPossessive() - .AddFeatures(movementAffinityAdderFangs) - .AddToDB(); + var spriteReference = Sprites.GetSprite(NAME, Resources.WinterBreath, 128); - conditionAdderFangs.GuiPresentation.Description = Gui.NoLocalization; + var effectDescription = EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 3) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData( + false, + AttributeDefinitions.Dexterity, + false, + EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Wisdom, + 12) + .SetParticleEffectParameters(ConeOfCold) + .ExcludeCaster() + .SetEffectForms( + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.FallProne, 1) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build(), + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeCold, 4, DieType.D8) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build()) + .Build(); var spell = SpellDefinitionBuilder - .Create(Name) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.AdderFangs, 128)) + .Create(NAME) + .SetGuiPresentation(Category.Spell, spriteReference) .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolConjuration) .SetSpellLevel(3) .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.Mundane) - .SetVerboseComponent(true) + .SetMaterialComponent(MaterialComponentType.None) .SetSomaticComponent(true) + .SetVerboseComponent(true) .SetVocalSpellSameType(VocalSpellSemeType.Attack) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetDurationData(DurationType.Minute, 1) - .SetTargetingData(Side.Enemy, RangeType.Distance, 24, TargetType.IndividualsUnique) - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, - additionalTargetsPerIncrement: 1) - .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, - EffectDifficultyClassComputation.SpellCastingFeature) - .SetEffectForms( - EffectFormBuilder - .Create() - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .SetDamageForm(DamageTypePoison, 4, DieType.D10) - .Build(), - EffectFormBuilder - .Create() - .HasSavingThrow(EffectSavingThrowType.Negates, TurnOccurenceType.EndOfTurn, true) - .SetConditionForm(conditionAdderFangs, ConditionForm.ConditionOperation.Add) - .Build()) - .SetParticleEffectParameters(VenomousSpike) - .SetEffectEffectParameters(InflictWounds) - .Build()) + .SetEffectDescription(effectDescription) .AddToDB(); return spell; @@ -309,144 +309,143 @@ internal static SpellDefinition BuildAdderFangs() #endregion - #region Pulse Wave + #region Ashardalon's Stride - internal static SpellDefinition BuildPulseWave() + internal static SpellDefinition BuildAshardalonStride() { - const string NAME = "PulseWave"; + const string Name = "AshardalonStride"; - var spellPush = SpellDefinitionBuilder - .Create($"{NAME}Push") - .SetGuiPresentation(Category.Spell) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + var combatAffinity = FeatureDefinitionCombatAffinityBuilder + .Create($"CombatAffinity{Name}") + .SetGuiPresentationNoContent(true) + .SetAttackOfOpportunityImmunity(true) + .AddToDB(); + + var conditionMark = ConditionDefinitionBuilder + .Create($"Condition{Name}Mark") + .SetGuiPresentationNoContent(true) + .SetSilent(Silent.WhenAddedOrRemoved) + .AddToDB(); + + var conditions = new List(); + + for (var effectLevel = 3; effectLevel <= 9; effectLevel++) + { + var movementAffinity = FeatureDefinitionMovementAffinityBuilder + .Create($"MovementAffinity{Name}{effectLevel}") + .SetGuiPresentationNoContent(true) + .SetBaseSpeedAdditiveModifier(effectLevel - 1) + .AddToDB(); + + var conditionAshardalonStride = ConditionDefinitionBuilder + .Create($"Condition{Name}{effectLevel}") + .SetGuiPresentation(Name, Category.Spell, ConditionFreedomOfMovement) + .SetPossessive() + .AddFeatures(movementAffinity, combatAffinity) + .AddCustomSubFeatures(new ActionFinishedByMeAshardalonStride(conditionMark)) + .AddToDB(); + + conditionAshardalonStride.GuiPresentation.Description = Gui.NoLocalization; + + conditions.Add(conditionAshardalonStride); + } + + var spell = SpellDefinitionBuilder + .Create(Name) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.AshardalonStride, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) .SetSpellLevel(3) .SetCastingTime(ActivationTime.Action) .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(true) .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetSomaticComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Buff) + .SetRequiresConcentration(true) .SetEffectDescription( EffectDescriptionBuilder .Create() - .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) - .ExcludeCaster() - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) - .SetSavingThrowData( - false, - AttributeDefinitions.Constitution, - true, - EffectDifficultyClassComputation.SpellCastingFeature, - AttributeDefinitions.Wisdom, - 12) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .Build(), - EffectFormBuilder - .Create() - .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 3) - .HasSavingThrow(EffectSavingThrowType.Negates) - .Build()) - .SetParticleEffectParameters(PowerFunctionWandFearCone) - .SetCasterEffectParameters(Darkness) - .SetImpactEffectParameters(MindTwist) + .SetDurationData(DurationType.Minute, 1) + .SetTargetingData(Side.Ally, RangeType.Self, 0, TargetType.Self) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1, + additionalTargetCellsPerIncrement: 1) + .SetEffectForms(EffectFormBuilder.ConditionForm(conditions[0])) + .SetCasterEffectParameters(FireBolt) .Build()) .AddToDB(); - spellPush.AddCustomSubFeatures(new ModifyEffectDescriptionPulseWave(spellPush)); + spell.AddCustomSubFeatures(new ModifyEffectDescriptionAshardalonStride(spell, [.. conditions])); - var spellPull = SpellDefinitionBuilder - .Create($"{NAME}Pull") - .SetGuiPresentation(Category.Spell) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) - .SetSpellLevel(3) - .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(true) - .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Attack) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) - .ExcludeCaster() - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) - .SetSavingThrowData( - false, - AttributeDefinitions.Constitution, - true, - EffectDifficultyClassComputation.SpellCastingFeature, - AttributeDefinitions.Wisdom, - 12) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .Build(), - EffectFormBuilder - .Create() - .SetMotionForm(MotionForm.MotionType.DragToOrigin, 3) - .HasSavingThrow(EffectSavingThrowType.Negates) - .Build()) - .SetParticleEffectParameters(PowerFunctionWandFearCone) - .SetCasterEffectParameters(Darkness) - .SetImpactEffectParameters(MindTwist) - .Build()) - .AddToDB(); + return spell; + } - spellPull.AddCustomSubFeatures(new ModifyEffectDescriptionPulseWave(spellPull)); + private sealed class ActionFinishedByMeAshardalonStride(ConditionDefinition conditionMark) : IMoveStepFinished + { + public void MoveStepFinished(GameLocationCharacter mover) + { + var locationCharacterService = ServiceRepository.GetService(); + var contenders = + (Gui.Battle?.AllContenders ?? + locationCharacterService.PartyCharacters.Union(locationCharacterService.GuestCharacters)) + .Where(x => x.IsWithinRange(mover, 1) && + x != mover && + !x.RulesetCharacter.HasConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionMark.Name)) + .ToList(); + var rulesetAttacker = mover.RulesetCharacter; - var spell = SpellDefinitionBuilder - .Create(NAME) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.PulseWave, 128)) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) - .SetSpellLevel(3) - .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(true) - .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Attack) - .SetEffectDescription( - // UI Only - EffectDescriptionBuilder - .Create() - .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) - .ExcludeCaster() - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) - .SetSavingThrowData( - false, - AttributeDefinitions.Constitution, - true, - EffectDifficultyClassComputation.SpellCastingFeature, - AttributeDefinitions.Wisdom, - 12) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .Build(), - EffectFormBuilder - .Create() - .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 3) - .HasSavingThrow(EffectSavingThrowType.Negates) - .Build(), - EffectFormBuilder - .Create() - .SetMotionForm(MotionForm.MotionType.DragToOrigin, 3) - .HasSavingThrow(EffectSavingThrowType.Negates) - .Build()) - .Build()) - .SetSubSpells(spellPush, spellPull) - .AddToDB(); + foreach (var contender in contenders) + { + var rulesetDefender = contender.RulesetCharacter; + var rolls = new List(); + var diceNumber = rulesetAttacker.ConcentratedSpell.EffectLevel - 2; + var damageForm = new DamageForm + { + DamageType = DamageTypeFire, DieType = DieType.D6, DiceNumber = diceNumber, BonusDamage = 0 + }; + var applyFormsParams = new RulesetImplementationDefinitions.ApplyFormsParams + { + sourceCharacter = rulesetAttacker, + targetCharacter = rulesetDefender, + position = contender.LocationPosition + }; + var damageRoll = rulesetAttacker.RollDamage(damageForm, 0, false, 0, 0, 1, false, false, false, rolls); - return spell; + EffectHelpers.StartVisualEffect(mover, contender, FireBolt); + RulesetActor.InflictDamage( + damageRoll, + damageForm, + damageForm.DamageType, + applyFormsParams, + rulesetDefender, + false, + rulesetAttacker.Guid, + false, + [], + new RollInfo(damageForm.DieType, rolls, 0), + false, + out _); + + rulesetDefender.InflictCondition( + conditionMark.Name, + DurationType.Round, + 0, + TurnOccurenceType.EndOfSourceTurn, + AttributeDefinitions.TagEffect, + rulesetAttacker.guid, + rulesetAttacker.CurrentFaction.Name, + 1, + conditionMark.Name, + 0, + 0, + 0); + } + } } - private sealed class ModifyEffectDescriptionPulseWave(SpellDefinition spellDefinition) : IModifyEffectDescription + private sealed class ModifyEffectDescriptionAshardalonStride( + SpellDefinition spellDefinition, + params ConditionDefinition[] conditions) + : IModifyEffectDescription { public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) { @@ -459,9 +458,11 @@ public EffectDescription GetEffectDescription( RulesetCharacter character, RulesetEffect rulesetEffect) { - var effectLevel = rulesetEffect.EffectLevel; - - effectDescription.EffectForms[1].MotionForm.distance = effectLevel; + if (rulesetEffect != null) + { + effectDescription.EffectForms[0].ConditionForm.conditionDefinition = + conditions[rulesetEffect.EffectLevel - 3]; + } return effectDescription; } @@ -568,480 +569,514 @@ public bool IsValid(CursorLocationSelectTarget __instance, GameLocationCharacter #endregion - #region Elemental Weapon + #region Booming Step - internal static SpellDefinition BuildElementalWeapon() + internal static SpellDefinition BuildBoomingStep() { - const string NAME = "ElementalWeapon"; + const string Name = "BoomingStep"; + + var powerExplode = FeatureDefinitionPowerBuilder + .Create($"Power{Name}Explode") + .SetGuiPresentation(Name, Category.Spell, hidden: true) + .SetUsesFixed(ActivationTime.NoCost) + .SetShowCasting(false) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Round) + .SetTargetingData(Side.All, RangeType.Distance, 18, TargetType.IndividualsUnique) + .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, + EffectDifficultyClassComputation.SpellCastingFeature) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeThunder, 3, DieType.D10) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build()) + .SetParticleEffectParameters(Thunderwave) + .Build()) + .AddToDB(); + + var conditionExplode = ConditionDefinitionBuilder + .Create($"Condition{Name}Explode") + .SetGuiPresentationNoContent(true) + .SetSilent(Silent.WhenAddedOrRemoved) + .SetFeatures(powerExplode) + .AddCustomSubFeatures(AddUsablePowersFromCondition.Marker) + .AddToDB(); + + powerExplode.AddCustomSubFeatures( + new ModifyEffectDescriptionBoomingStepExplode(powerExplode, conditionExplode)); var spell = SpellDefinitionBuilder - .Create(NAME) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.ElementalWeapon, 128)) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) + .Create(Name) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.ThunderStep, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolConjuration) .SetSpellLevel(3) .SetCastingTime(ActivationTime.Action) .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(true) .SetVerboseComponent(true) + .SetSomaticComponent(false) .SetVocalSpellSameType(VocalSpellSemeType.Buff) - .SetRequiresConcentration(true) - .SetUniqueInstance() .SetEffectDescription( EffectDescriptionBuilder .Create() - .SetDurationData(DurationType.Minute, 1) + .SetDurationData(DurationType.Round) + .SetTargetingData(Side.Ally, RangeType.Distance, 18, TargetType.Position) .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.TeleportToDestination) + .Build(), + EffectFormBuilder.ConditionForm( + conditionExplode, + ConditionForm.ConditionOperation.Add, true, true)) + .InviteOptionalAlly() + .ExcludeCaster() + .SetParticleEffectParameters(Thunderwave) .Build()) - .SetSubSpells(DamagesAndEffects - .Where(x => x.Item1 != DamageTypePoison) - .Select(x => BuildElementalWeaponSubspell(x.Item1, x.Item2)).ToArray()) + .AddCustomSubFeatures(new CustomBehaviorBoomingStep(powerExplode)) .AddToDB(); return spell; } - private static SpellDefinition BuildElementalWeaponSubspell(string damageType, IMagicEffect magicEffect) + private sealed class CustomBehaviorBoomingStep(FeatureDefinitionPower powerExplode) + : IMagicEffectInitiatedByMe, IMagicEffectFinishedByMe, IFilterTargetingCharacter { - var effectParticleParameters = magicEffect.EffectDescription.EffectParticleParameters; + private readonly List _targets = []; - const string NOTIFICATION_TAG = "ElementalWeapon"; + public bool EnforceFullSelection => false; - const string ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION = "Feature/&AdditionalDamageElementalWeaponDescription"; + public bool IsValid(CursorLocationSelectTarget __instance, GameLocationCharacter target) + { + if (target.RulesetCharacter == null) + { + return false; + } - const string ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION1 = "Feature/&AdditionalDamageElementalWeapon1Description"; + var isValid = + target.RulesetCharacter is not RulesetCharacterEffectProxy && + __instance.ActionParams.ActingCharacter.IsWithinRange(target, 1); - const string ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION2 = "Feature/&AdditionalDamageElementalWeapon2Description"; + if (!isValid) + { + __instance.actionModifier.FailureFlags.Add("Tooltip/&MustBeWithin5ft"); + } - const string ELEMENTAL_WEAPON_MODIFIER_DESCRIPTION = "Feature/&AttackModifierElementalWeaponDescription"; + return isValid; + } - var additionalDamageElementalWeapon = FeatureDefinitionAdditionalDamageBuilder - .Create($"AdditionalDamage{damageType}ElementalWeapon") - .SetGuiPresentation("AdditionalDamageElementalWeapon", Category.Feature, - AdditionalDamageElementalWeaponDescription(damageType), MagicWeapon.guiPresentation.SpriteReference) - .SetAdditionalDamageType(AdditionalDamageType.Specific) - .SetSpecificDamageType(damageType) - .SetAttackModeOnly() - .SetDamageDice(DieType.D4, 1) - .SetAdvancement(AdditionalDamageAdvancement.SlotLevel) - .SetNotificationTag(NOTIFICATION_TAG) - .SetImpactParticleReference(effectParticleParameters.impactParticleReference) - .AddToDB(); + public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) + { + var attacker = action.ActingCharacter; + var rulesetAttacker = attacker.RulesetCharacter; - var additionalDamageElementalWeapon1 = FeatureDefinitionAdditionalDamageBuilder - .Create($"AdditionalDamage{damageType}ElementalWeapon1") - .SetGuiPresentation("AdditionalDamageElementalWeapon", Category.Feature, - AdditionalDamageElementalWeaponDescription1(damageType), MagicWeapon.guiPresentation.SpriteReference) - .SetAdditionalDamageType(AdditionalDamageType.Specific) - .SetSpecificDamageType(damageType) - .SetAttackModeOnly() - .SetDamageDice(DieType.D4, 2) - .SetAdvancement(AdditionalDamageAdvancement.SlotLevel) - .SetNotificationTag(NOTIFICATION_TAG) - .SetImpactParticleReference(effectParticleParameters.impactParticleReference) - .AddToDB(); + var implementationManager = + ServiceRepository.GetService() as RulesetImplementationManager; - var additionalDamageElementalWeapon2 = FeatureDefinitionAdditionalDamageBuilder - .Create($"AdditionalDamage{damageType}ElementalWeapon2") - .SetGuiPresentation("AdditionalDamageElementalWeapon", Category.Feature, - AdditionalDamageElementalWeaponDescription2(damageType), MagicWeapon.guiPresentation.SpriteReference) - .SetAdditionalDamageType(AdditionalDamageType.Specific) - .SetSpecificDamageType(damageType) - .SetAttackModeOnly() - .SetDamageDice(DieType.D4, 3) - .SetAdvancement(AdditionalDamageAdvancement.SlotLevel) - .SetNotificationTag(NOTIFICATION_TAG) - .SetImpactParticleReference(effectParticleParameters.impactParticleReference) - .AddToDB(); + var usablePower = PowerProvider.Get(powerExplode, rulesetAttacker); + var actionModifiers = new List(); - var attackModifierElementalWeapon = FeatureDefinitionAttackModifierBuilder - .Create(FeatureDefinitionAttackModifiers.AttackModifierMagicWeapon, - $"AttackModifier{damageType}ElementalWeapon") - .SetGuiPresentation("AttackModifierElementalWeapon", Category.Feature, - AttackModifierElementalWeaponDescription(1), MagicWeapon.guiPresentation.SpriteReference) - .AddToDB(); + for (var i = 0; i < _targets.Count; i++) + { + actionModifiers.Add(new ActionModifier()); + } - var attackModifierElementalWeapon1 = FeatureDefinitionAttackModifierBuilder - .Create(FeatureDefinitionAttackModifiers.AttackModifierMagicWeapon2, - $"AttackModifier{damageType}ElementalWeapon1") - .SetGuiPresentation("AttackModifierElementalWeapon", Category.Feature, - AttackModifierElementalWeaponDescription(2), MagicWeapon.guiPresentation.SpriteReference) - .AddToDB(); + // don't use PowerNoCost here as it breaks the spell under MP + var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.SpendPower) + { + ActionModifiers = actionModifiers, + RulesetEffect = implementationManager + .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), + UsablePower = usablePower, + targetCharacters = _targets + }; - var attackModifierElementalWeapon2 = FeatureDefinitionAttackModifierBuilder - .Create(FeatureDefinitionAttackModifiers.AttackModifierMagicWeapon3, - $"AttackModifier{damageType}ElementalWeapon2") - .SetGuiPresentation("AttackModifierElementalWeapon", Category.Feature, - AttackModifierElementalWeaponDescription(3), MagicWeapon.guiPresentation.SpriteReference) + ServiceRepository.GetService()? + .ExecuteAction(actionParams, null, true); + + yield break; + } + + public IEnumerator OnMagicEffectInitiatedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) + { + var attacker = action.ActingCharacter; + var locationCharacterService = ServiceRepository.GetService(); + var contenders = + (Gui.Battle?.AllContenders ?? + locationCharacterService.PartyCharacters.Union(locationCharacterService.GuestCharacters)) + .ToList(); + + _targets.SetRange(contenders + .Where(x => + x.RulesetCharacter is { IsDeadOrDyingOrUnconscious: false } && + x != attacker && + !action.ActionParams.TargetCharacters.Contains(x) && + attacker.IsWithinRange(x, 2))); + + yield break; + } + } + + private sealed class ModifyEffectDescriptionBoomingStepExplode( + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + FeatureDefinitionPower powerExplode, + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + ConditionDefinition conditionExplode) + : IModifyEffectDescription + { + public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) + { + return definition == powerExplode; + } + + public EffectDescription GetEffectDescription( + BaseDefinition definition, + EffectDescription effectDescription, + RulesetCharacter character, + RulesetEffect rulesetEffect) + { + if (!character.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionExplode.Name, out var activeCondition)) + { + return effectDescription; + } + + var damageForm = effectDescription.FindFirstDamageForm(); + + if (damageForm != null) + { + damageForm.diceNumber = activeCondition.EffectLevel; + } + + return effectDescription; + } + } + + #endregion + + #region Corrupting Bolt + + internal static SpellDefinition BuildCorruptingBolt() + { + const string Name = "CorruptingBolt"; + + var conditionCorruptingBolt = ConditionDefinitionBuilder + .Create(ConditionEyebiteSickened, $"Condition{Name}") + .SetGuiPresentation(Category.Condition, ConditionDoomLaughter) + .SetConditionType(ConditionType.Detrimental) + .SetFeatures() .AddToDB(); + foreach (var damageDefinition in DatabaseRepository.GetDatabase()) + { + var damageType = damageDefinition.Name; + + var damageAffinity = + FeatureDefinitionDamageAffinityBuilder + .Create($"DamageAffinity{Name}{damageType}") + .SetGuiPresentationNoContent(true) + .SetDamageAffinityType(DamageAffinityType.Vulnerability) + .SetDamageType(damageType) + .AddToDB(); + + conditionCorruptingBolt.Features.Add(damageAffinity); + } + var spell = SpellDefinitionBuilder - .Create($"ElementalWeapon{damageType}") - .SetGuiPresentation(Category.Spell, MagicWeapon) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) + .Create(Name) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.CorruptingBolt, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolNecromancy) .SetSpellLevel(3) .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.None) - .SetSomaticComponent(true) + .SetMaterialComponent(MaterialComponentType.Mundane) .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Buff) - .SetRequiresConcentration(true) - .SetUniqueInstance() + .SetSomaticComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) .SetEffectDescription( EffectDescriptionBuilder - .Create(MagicWeapon) - .SetDurationData(DurationType.Minute, 1) + .Create() + .SetDurationData(DurationType.Round, 1, TurnOccurenceType.EndOfSourceTurn) + .SetTargetingData(Side.Enemy, RangeType.RangeHit, 24, TargetType.IndividualsUnique) .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, + EffectDifficultyClassComputation.SpellCastingFeature) .SetEffectForms( - EffectFormBuilder - .Create() - .SetDiceAdvancement(LevelSourceType.EffectLevel) - .SetLevelAdvancement(EffectForm.LevelApplianceType.MultiplyDice, - LevelSourceType.EffectLevel) - .SetItemPropertyForm(ItemPropertyUsage.Unlimited, 1, - new FeatureUnlockByLevel(attackModifierElementalWeapon, 3), - new FeatureUnlockByLevel(attackModifierElementalWeapon, 4), - new FeatureUnlockByLevel(attackModifierElementalWeapon1, 5), - new FeatureUnlockByLevel(attackModifierElementalWeapon1, 6), - new FeatureUnlockByLevel(attackModifierElementalWeapon2, 7), - new FeatureUnlockByLevel(attackModifierElementalWeapon2, 8), - new FeatureUnlockByLevel(attackModifierElementalWeapon2, 9)) - .Build(), - EffectFormBuilder - .Create() - .SetDiceAdvancement(LevelSourceType.EffectLevel) - .SetLevelAdvancement(EffectForm.LevelApplianceType.MultiplyDice, - LevelSourceType.EffectLevel) - .SetItemPropertyForm(ItemPropertyUsage.Unlimited, 1, - new FeatureUnlockByLevel(additionalDamageElementalWeapon, 3), - new FeatureUnlockByLevel(additionalDamageElementalWeapon, 4), - new FeatureUnlockByLevel(additionalDamageElementalWeapon1, 5), - new FeatureUnlockByLevel(additionalDamageElementalWeapon1, 6), - new FeatureUnlockByLevel(additionalDamageElementalWeapon2, 7), - new FeatureUnlockByLevel(additionalDamageElementalWeapon2, 8), - new FeatureUnlockByLevel(additionalDamageElementalWeapon2, 9)) - .Build()) - .SetParticleEffectParameters(effectParticleParameters) + EffectFormBuilder.DamageForm(DamageTypeNecrotic, 4, DieType.D8)) + .SetParticleEffectParameters(FingerOfDeath) + .SetImpactEffectParameters(Disintegrate) + .SetEffectEffectParameters(Disintegrate) .Build()) - .AddCustomSubFeatures(TrackItemsCarefully.Marker) + .AddCustomSubFeatures(new MagicEffectFinishedByMeCorruptingBolt(conditionCorruptingBolt)) .AddToDB(); + conditionCorruptingBolt.AddCustomSubFeatures( + new ActionFinishedByContenderCorruptingBolt(conditionCorruptingBolt, spell)); + return spell; + } - static string AdditionalDamageElementalWeaponDescription(string x) + private sealed class ActionFinishedByContenderCorruptingBolt( + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + ConditionDefinition conditionCorruptingBolt, + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + SpellDefinition spellCorruptingBolt) : IActionFinishedByContender + { + public IEnumerator OnActionFinishedByContender(CharacterAction characterAction, GameLocationCharacter target) { - return Gui.Format(ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION, x); - } + if (characterAction is CharacterActionCastSpell actionCastSpell && + actionCastSpell.activeSpell.SpellDefinition == spellCorruptingBolt) + { + yield break; + } - static string AdditionalDamageElementalWeaponDescription1(string x) - { - return Gui.Format(ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION1, x); - } + if (characterAction.ActionParams.TargetCharacters.Count == 0 || + characterAction.ActionParams.TargetCharacters[0] != target) + { + yield break; + } - static string AdditionalDamageElementalWeaponDescription2(string x) - { - return Gui.Format(ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION2, x); + if (characterAction.AttackRollOutcome is not (RollOutcome.Success or RollOutcome.CriticalSuccess)) + { + yield break; + } + + var rulesetDefender = characterAction.ActionParams.TargetCharacters[0].RulesetCharacter; + + if (rulesetDefender == null) + { + yield break; + } + + if (!rulesetDefender.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, + conditionCorruptingBolt.Name, + out var activeCondition)) + { + yield break; + } + + rulesetDefender.RemoveCondition(activeCondition); } + } - static string AttackModifierElementalWeaponDescription(int x) + private sealed class MagicEffectFinishedByMeCorruptingBolt( + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + ConditionDefinition conditionCorruptingBolt) : IMagicEffectFinishedByMe + { + public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) { - return Gui.Format(ELEMENTAL_WEAPON_MODIFIER_DESCRIPTION, x.ToString()); + if (!action.RolledSaveThrow || action.SaveOutcome == RollOutcome.Success) + { + yield break; + } + + var rulesetAttacker = action.ActingCharacter.RulesetCharacter; + + // need to loop over target characters to support twinned metamagic scenarios + foreach (var rulesetDefender in action.ActionParams.TargetCharacters + .Select(target => target.RulesetCharacter) + .Where(rulesetDefender => + rulesetDefender is { IsDeadOrDyingOrUnconscious: false })) + { + rulesetDefender.InflictCondition( + conditionCorruptingBolt.Name, + DurationType.Round, + 1, + TurnOccurenceType.EndOfSourceTurn, + AttributeDefinitions.TagEffect, + rulesetAttacker.guid, + rulesetAttacker.CurrentFaction.Name, + 1, + conditionCorruptingBolt.Name, + 0, + 0, + 0); + } } } #endregion - #region Spirit Shroud - - private const string SpiritShroudName = "SpiritShroud"; + #region Elemental Weapon - internal static SpellDefinition BuildSpiritShroud() + internal static SpellDefinition BuildElementalWeapon() { - var sprite = Sprites.GetSprite(SpiritShroudName, Resources.SpiritShroud, 128); - - var hinder = ConditionDefinitionBuilder - .Create(ConditionHindered_By_Frost, $"Condition{SpiritShroudName}Hinder") - .SetSilent(Silent.None) - .SetConditionType(ConditionType.Detrimental) - .SetParentCondition(ConditionHindered) - .CopyParticleReferences(ConditionSpiritGuardians) - .AddToDB(); - - var noHeal = ConditionDefinitionBuilder - .Create($"Condition{SpiritShroudName}NoHeal") - .SetGuiPresentation(Category.Condition, ConditionChilledByTouch.GuiPresentation.SpriteReference) - .SetConditionType(ConditionType.Detrimental) - .SetFeatures(FeatureDefinitionHealingModifiers.HealingModifierChilledByTouch) - .SetSpecialDuration(DurationType.Round, 1, TurnOccurenceType.StartOfTurn) - .AddToDB(); + const string NAME = "ElementalWeapon"; - return SpellDefinitionBuilder - .Create(SpiritShroudName) - .SetGuiPresentation(Category.Spell, sprite) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolNecromancy) + var spell = SpellDefinitionBuilder + .Create(NAME) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.ElementalWeapon, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) .SetSpellLevel(3) - .SetCastingTime(ActivationTime.BonusAction) + .SetCastingTime(ActivationTime.Action) .SetMaterialComponent(MaterialComponentType.None) .SetSomaticComponent(true) .SetVerboseComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Defense) + .SetVocalSpellSameType(VocalSpellSemeType.Buff) .SetRequiresConcentration(true) + .SetUniqueInstance() .SetEffectDescription( EffectDescriptionBuilder .Create() .SetDurationData(DurationType.Minute, 1) - .SetEffectAdvancement( - EffectIncrementMethod.PerAdditionalSlotLevel, 2, additionalDicePerIncrement: 1) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) .Build()) - .SetSubSpells( - BuildSpiritShroudSubSpell(DamageTypeRadiant, hinder, noHeal, sprite), - BuildSpiritShroudSubSpell(DamageTypeNecrotic, hinder, noHeal, sprite), - BuildSpiritShroudSubSpell(DamageTypeCold, hinder, noHeal, sprite)) + .SetSubSpells(DamagesAndEffects + .Where(x => x.Item1 != DamageTypePoison) + .Select(x => BuildElementalWeaponSubspell(x.Item1, x.Item2)).ToArray()) .AddToDB(); + + return spell; } - private static SpellDefinition BuildSpiritShroudSubSpell( - string damage, - ConditionDefinition hinder, - ConditionDefinition noHeal, - AssetReferenceSprite sprite) + private static SpellDefinition BuildElementalWeaponSubspell(string damageType, IMagicEffect magicEffect) { - return SpellDefinitionBuilder - .Create($"{SpiritShroudName}{damage}") - .SetGuiPresentation(Category.Spell, sprite) - .SetSpellLevel(3) - .SetVocalSpellSameType(VocalSpellSemeType.Defense) - .SetCastingTime(ActivationTime.BonusAction) - .SetRequiresConcentration(true) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetTargetingData(Side.Enemy, RangeType.Self, 1, TargetType.Sphere, 2) - .SetDurationData(DurationType.Minute, 1) - .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, 2, - additionalDicePerIncrement: 1) - //RAW it should only trigger if target starts turn in the area, but game doesn't trigger on turn start for some reason without OnEnter - .SetRecurrentEffect( - RecurrentEffect.OnActivation | RecurrentEffect.OnTurnStart | RecurrentEffect.OnEnter) - .SetParticleEffectParameters(SpiritGuardians) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetConditionForm(hinder, ConditionForm.ConditionOperation.Add) - .Build(), - EffectFormBuilder.ConditionForm( - ConditionDefinitionBuilder - .Create($"Condition{SpiritShroudName}{damage}") - .SetGuiPresentationNoContent(true) - .SetSilent(Silent.WhenAddedOrRemoved) - .CopyParticleReferences(ConditionSpiritGuardiansSelf) - .SetFeatures( - FeatureDefinitionAdditionalDamageBuilder - .Create($"AdditionalDamage{SpiritShroudName}{damage}") - .SetGuiPresentationNoContent(true) - .SetNotificationTag($"{SpiritShroudName}{damage}") - .SetTriggerCondition(ExtraAdditionalDamageTriggerCondition.TargetIsWithin10Ft) - .SetAttackOnly() - .SetDamageDice(DieType.D8, 1) - .SetSpecificDamageType(damage) - .SetAdvancement(AdditionalDamageAdvancement.SlotLevel, 0, 1, 2) - .AddConditionOperation( - ConditionOperationDescription.ConditionOperation.Add, noHeal) - .AddToDB()) - .AddToDB(), - ConditionForm.ConditionOperation.Add, true, true), - EffectFormBuilder - .Create() - .SetTopologyForm(TopologyForm.Type.DangerousZone, true) - .Build()) - .Build()) - .AddToDB(); - } + var effectParticleParameters = magicEffect.EffectDescription.EffectParticleParameters; - #endregion + const string NOTIFICATION_TAG = "ElementalWeapon"; - #region Booming Step + const string ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION = "Feature/&AdditionalDamageElementalWeaponDescription"; - internal static SpellDefinition BuildBoomingStep() - { - const string Name = "BoomingStep"; + const string ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION1 = "Feature/&AdditionalDamageElementalWeapon1Description"; - var powerExplode = FeatureDefinitionPowerBuilder - .Create($"Power{Name}Explode") - .SetGuiPresentation(Name, Category.Spell, hidden: true) - .SetUsesFixed(ActivationTime.NoCost) - .SetShowCasting(false) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetDurationData(DurationType.Round) - .SetTargetingData(Side.All, RangeType.Distance, 18, TargetType.IndividualsUnique) - .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, - EffectDifficultyClassComputation.SpellCastingFeature) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetDamageForm(DamageTypeThunder, 3, DieType.D10) - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .Build()) - .SetParticleEffectParameters(Thunderwave) - .Build()) + const string ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION2 = "Feature/&AdditionalDamageElementalWeapon2Description"; + + const string ELEMENTAL_WEAPON_MODIFIER_DESCRIPTION = "Feature/&AttackModifierElementalWeaponDescription"; + + var additionalDamageElementalWeapon = FeatureDefinitionAdditionalDamageBuilder + .Create($"AdditionalDamage{damageType}ElementalWeapon") + .SetGuiPresentation("AdditionalDamageElementalWeapon", Category.Feature, + AdditionalDamageElementalWeaponDescription(damageType), MagicWeapon.guiPresentation.SpriteReference) + .SetAdditionalDamageType(AdditionalDamageType.Specific) + .SetSpecificDamageType(damageType) + .SetAttackModeOnly() + .SetDamageDice(DieType.D4, 1) + .SetAdvancement(AdditionalDamageAdvancement.SlotLevel) + .SetNotificationTag(NOTIFICATION_TAG) + .SetImpactParticleReference(effectParticleParameters.impactParticleReference) .AddToDB(); - var conditionExplode = ConditionDefinitionBuilder - .Create($"Condition{Name}Explode") - .SetGuiPresentationNoContent(true) - .SetSilent(Silent.WhenAddedOrRemoved) - .SetFeatures(powerExplode) - .AddCustomSubFeatures(AddUsablePowersFromCondition.Marker) + var additionalDamageElementalWeapon1 = FeatureDefinitionAdditionalDamageBuilder + .Create($"AdditionalDamage{damageType}ElementalWeapon1") + .SetGuiPresentation("AdditionalDamageElementalWeapon", Category.Feature, + AdditionalDamageElementalWeaponDescription1(damageType), MagicWeapon.guiPresentation.SpriteReference) + .SetAdditionalDamageType(AdditionalDamageType.Specific) + .SetSpecificDamageType(damageType) + .SetAttackModeOnly() + .SetDamageDice(DieType.D4, 2) + .SetAdvancement(AdditionalDamageAdvancement.SlotLevel) + .SetNotificationTag(NOTIFICATION_TAG) + .SetImpactParticleReference(effectParticleParameters.impactParticleReference) .AddToDB(); - powerExplode.AddCustomSubFeatures( - new ModifyEffectDescriptionBoomingStepExplode(powerExplode, conditionExplode)); + var additionalDamageElementalWeapon2 = FeatureDefinitionAdditionalDamageBuilder + .Create($"AdditionalDamage{damageType}ElementalWeapon2") + .SetGuiPresentation("AdditionalDamageElementalWeapon", Category.Feature, + AdditionalDamageElementalWeaponDescription2(damageType), MagicWeapon.guiPresentation.SpriteReference) + .SetAdditionalDamageType(AdditionalDamageType.Specific) + .SetSpecificDamageType(damageType) + .SetAttackModeOnly() + .SetDamageDice(DieType.D4, 3) + .SetAdvancement(AdditionalDamageAdvancement.SlotLevel) + .SetNotificationTag(NOTIFICATION_TAG) + .SetImpactParticleReference(effectParticleParameters.impactParticleReference) + .AddToDB(); + + var attackModifierElementalWeapon = FeatureDefinitionAttackModifierBuilder + .Create(FeatureDefinitionAttackModifiers.AttackModifierMagicWeapon, + $"AttackModifier{damageType}ElementalWeapon") + .SetGuiPresentation("AttackModifierElementalWeapon", Category.Feature, + AttackModifierElementalWeaponDescription(1), MagicWeapon.guiPresentation.SpriteReference) + .AddToDB(); + + var attackModifierElementalWeapon1 = FeatureDefinitionAttackModifierBuilder + .Create(FeatureDefinitionAttackModifiers.AttackModifierMagicWeapon2, + $"AttackModifier{damageType}ElementalWeapon1") + .SetGuiPresentation("AttackModifierElementalWeapon", Category.Feature, + AttackModifierElementalWeaponDescription(2), MagicWeapon.guiPresentation.SpriteReference) + .AddToDB(); + + var attackModifierElementalWeapon2 = FeatureDefinitionAttackModifierBuilder + .Create(FeatureDefinitionAttackModifiers.AttackModifierMagicWeapon3, + $"AttackModifier{damageType}ElementalWeapon2") + .SetGuiPresentation("AttackModifierElementalWeapon", Category.Feature, + AttackModifierElementalWeaponDescription(3), MagicWeapon.guiPresentation.SpriteReference) + .AddToDB(); var spell = SpellDefinitionBuilder - .Create(Name) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.ThunderStep, 128)) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolConjuration) + .Create($"ElementalWeapon{damageType}") + .SetGuiPresentation(Category.Spell, MagicWeapon) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) .SetSpellLevel(3) .SetCastingTime(ActivationTime.Action) .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(true) .SetVerboseComponent(true) - .SetSomaticComponent(false) .SetVocalSpellSameType(VocalSpellSemeType.Buff) + .SetRequiresConcentration(true) + .SetUniqueInstance() .SetEffectDescription( EffectDescriptionBuilder - .Create() - .SetDurationData(DurationType.Round) - .SetTargetingData(Side.Ally, RangeType.Distance, 18, TargetType.Position) + .Create(MagicWeapon) + .SetDurationData(DurationType.Minute, 1) .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) .SetEffectForms( EffectFormBuilder .Create() - .SetMotionForm(MotionForm.MotionType.TeleportToDestination) + .SetDiceAdvancement(LevelSourceType.EffectLevel) + .SetLevelAdvancement(EffectForm.LevelApplianceType.MultiplyDice, + LevelSourceType.EffectLevel) + .SetItemPropertyForm(ItemPropertyUsage.Unlimited, 1, + new FeatureUnlockByLevel(attackModifierElementalWeapon, 3), + new FeatureUnlockByLevel(attackModifierElementalWeapon, 4), + new FeatureUnlockByLevel(attackModifierElementalWeapon1, 5), + new FeatureUnlockByLevel(attackModifierElementalWeapon1, 6), + new FeatureUnlockByLevel(attackModifierElementalWeapon2, 7), + new FeatureUnlockByLevel(attackModifierElementalWeapon2, 8), + new FeatureUnlockByLevel(attackModifierElementalWeapon2, 9)) .Build(), - EffectFormBuilder.ConditionForm( - conditionExplode, - ConditionForm.ConditionOperation.Add, true, true)) - .InviteOptionalAlly() - .ExcludeCaster() - .SetParticleEffectParameters(Thunderwave) + EffectFormBuilder + .Create() + .SetDiceAdvancement(LevelSourceType.EffectLevel) + .SetLevelAdvancement(EffectForm.LevelApplianceType.MultiplyDice, + LevelSourceType.EffectLevel) + .SetItemPropertyForm(ItemPropertyUsage.Unlimited, 1, + new FeatureUnlockByLevel(additionalDamageElementalWeapon, 3), + new FeatureUnlockByLevel(additionalDamageElementalWeapon, 4), + new FeatureUnlockByLevel(additionalDamageElementalWeapon1, 5), + new FeatureUnlockByLevel(additionalDamageElementalWeapon1, 6), + new FeatureUnlockByLevel(additionalDamageElementalWeapon2, 7), + new FeatureUnlockByLevel(additionalDamageElementalWeapon2, 8), + new FeatureUnlockByLevel(additionalDamageElementalWeapon2, 9)) + .Build()) + .SetParticleEffectParameters(effectParticleParameters) .Build()) - .AddCustomSubFeatures(new CustomBehaviorBoomingStep(powerExplode)) + .AddCustomSubFeatures(TrackItemsCarefully.Marker) .AddToDB(); return spell; - } - - private sealed class CustomBehaviorBoomingStep(FeatureDefinitionPower powerExplode) - : IMagicEffectInitiatedByMe, IMagicEffectFinishedByMe, IFilterTargetingCharacter - { - private readonly List _targets = []; - - public bool EnforceFullSelection => false; - - public bool IsValid(CursorLocationSelectTarget __instance, GameLocationCharacter target) - { - if (target.RulesetCharacter == null) - { - return false; - } - - var isValid = - target.RulesetCharacter is not RulesetCharacterEffectProxy && - __instance.ActionParams.ActingCharacter.IsWithinRange(target, 1); - - if (!isValid) - { - __instance.actionModifier.FailureFlags.Add("Tooltip/&MustBeWithin5ft"); - } - - return isValid; - } - public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) + static string AdditionalDamageElementalWeaponDescription(string x) { - var attacker = action.ActingCharacter; - var rulesetAttacker = attacker.RulesetCharacter; - - var implementationManager = - ServiceRepository.GetService() as RulesetImplementationManager; - - var usablePower = PowerProvider.Get(powerExplode, rulesetAttacker); - var actionModifiers = new List(); - - for (var i = 0; i < _targets.Count; i++) - { - actionModifiers.Add(new ActionModifier()); - } - - // don't use PowerNoCost here as it breaks the spell under MP - var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.SpendPower) - { - ActionModifiers = actionModifiers, - RulesetEffect = implementationManager - .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), - UsablePower = usablePower, - targetCharacters = _targets - }; - - ServiceRepository.GetService()? - .ExecuteAction(actionParams, null, true); - - yield break; + return Gui.Format(ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION, x); } - public IEnumerator OnMagicEffectInitiatedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) + static string AdditionalDamageElementalWeaponDescription1(string x) { - var attacker = action.ActingCharacter; - var locationCharacterService = ServiceRepository.GetService(); - var contenders = - (Gui.Battle?.AllContenders ?? - locationCharacterService.PartyCharacters.Union(locationCharacterService.GuestCharacters)) - .ToList(); - - _targets.SetRange(contenders - .Where(x => - x.RulesetCharacter is { IsDeadOrDyingOrUnconscious: false } && - x != attacker && - !action.ActionParams.TargetCharacters.Contains(x) && - attacker.IsWithinRange(x, 2))); - - yield break; + return Gui.Format(ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION1, x); } - } - private sealed class ModifyEffectDescriptionBoomingStepExplode( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - FeatureDefinitionPower powerExplode, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionExplode) - : IModifyEffectDescription - { - public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) + static string AdditionalDamageElementalWeaponDescription2(string x) { - return definition == powerExplode; + return Gui.Format(ELEMENTAL_WEAPON_ADDITIONAL_DESCRIPTION2, x); } - public EffectDescription GetEffectDescription( - BaseDefinition definition, - EffectDescription effectDescription, - RulesetCharacter character, - RulesetEffect rulesetEffect) + static string AttackModifierElementalWeaponDescription(int x) { - if (!character.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, conditionExplode.Name, out var activeCondition)) - { - return effectDescription; - } - - var damageForm = effectDescription.FindFirstDamageForm(); - - if (damageForm != null) - { - damageForm.diceNumber = activeCondition.EffectLevel; - } - - return effectDescription; + return Gui.Format(ELEMENTAL_WEAPON_MODIFIER_DESCRIPTION, x.ToString()); } } @@ -1123,22 +1158,171 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield break; } - var rulesetAttacker = attacker.RulesetCharacter; + var rulesetAttacker = attacker.RulesetCharacter; + + if (!rulesetAttacker.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, + "ConditionFlameArrows", + out var activeCondition)) + { + yield break; + } + + activeCondition.Amount--; + + if (activeCondition.Amount <= 0) + { + rulesetAttacker.BreakConcentration(); + } + } + } + + #endregion + + #region Hunger of the Void + + internal static SpellDefinition BuildHungerOfTheVoid() + { + const string Name = "HungerOfTheVoid"; + + var conditionHungerOfTheVoid = ConditionDefinitionBuilder + .Create(ConditionDefinitions.ConditionBlinded, $"ConditionBlindedBy{Name}") + .SetOrUpdateGuiPresentation(Category.Condition) + .SetParentCondition(ConditionDefinitions.ConditionBlinded) + .SetFeatures() + .AddToDB(); + + conditionHungerOfTheVoid.GuiPresentation.description = "Rules/&ConditionBlindedDescription"; + + conditionHungerOfTheVoid.AddCustomSubFeatures(new CustomBehaviorHungerOfTheVoid(conditionHungerOfTheVoid)); + + var spell = SpellDefinitionBuilder + .Create(Name) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.HungerOfTheVoid, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.Mundane) + .SetVerboseComponent(true) + .SetSomaticComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Buff) + .SetRequiresConcentration(true) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Minute, 1) + .SetTargetingData(Side.All, RangeType.Distance, 24, TargetType.Sphere, 4) + .SetRecurrentEffect( + RecurrentEffect.OnActivation | RecurrentEffect.OnEnter | RecurrentEffect.OnTurnStart) + .SetEffectForms( + EffectFormBuilder.ConditionForm(conditionHungerOfTheVoid), + EffectFormBuilder.TopologyForm(TopologyForm.Type.DangerousZone, true), + Darkness.EffectDescription.EffectForms[2], + Darkness.EffectDescription.EffectForms[3]) + .SetParticleEffectParameters(Darkness) + .Build()) + .AddToDB(); + + return spell; + } + + private sealed class CustomBehaviorHungerOfTheVoid( + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + ConditionDefinition conditionHungerOfTheVoid) : ICharacterTurnStartListener, ICharacterBeforeTurnEndListener + { + public void OnCharacterBeforeTurnEnded(GameLocationCharacter locationCharacter) + { + InflictDamage(DamageTypeAcid, locationCharacter.RulesetCharacter, VenomousSpike, true); + } + + public void OnCharacterTurnStarted(GameLocationCharacter locationCharacter) + { + InflictDamage(DamageTypeCold, locationCharacter.RulesetCharacter, ConeOfCold); + } + + // ReSharper disable once SuggestBaseTypeForParameter + private void InflictDamage( + string damageType, RulesetCharacter rulesetCharacter, IMagicEffect magicEffect, bool rollSaving = false) + { + if (rulesetCharacter == null) + { + return; + } + + if (!rulesetCharacter.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, + conditionHungerOfTheVoid.Name, + out var activeCondition)) + { + return; + } + + var rulesetCaster = EffectHelpers.GetCharacterByGuid(activeCondition.SourceGuid); + + if (rulesetCaster == null) + { + return; + } + + if (rollSaving) + { + var casterSaveDC = 8 + activeCondition.SourceAbilityBonus + activeCondition.SourceProficiencyBonus; + var modifierTrend = rulesetCharacter.actionModifier.savingThrowModifierTrends; + var advantageTrends = rulesetCharacter.actionModifier.savingThrowAdvantageTrends; + var dexterityModifier = AttributeDefinitions.ComputeAbilityScoreModifier( + rulesetCharacter.TryGetAttributeValue(AttributeDefinitions.Dexterity)); + + rulesetCharacter.RollSavingThrow( + 0, AttributeDefinitions.Dexterity, null, modifierTrend, advantageTrends, dexterityModifier, + casterSaveDC, + false, out var savingOutcome, out _); + + if (savingOutcome == RollOutcome.Success) + { + return; + } + } + + var diceNumber = activeCondition.EffectLevel switch + { + >= 9 => 5, + >= 7 => 4, + >= 5 => 3, + _ => 2 + }; + + var rolls = new List(); + var damageForm = new DamageForm { DamageType = damageType, DiceNumber = diceNumber, DieType = DieType.D6 }; + var totalDamage = rulesetCaster.RollDamage(damageForm, 0, false, 0, 0, 1, false, false, false, rolls); + + var attacker = GameLocationCharacter.GetFromActor(rulesetCaster); + var defender = GameLocationCharacter.GetFromActor(rulesetCharacter); - if (!rulesetAttacker.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, - "ConditionFlameArrows", - out var activeCondition)) + if (attacker != null && defender != null) { - yield break; + EffectHelpers.StartVisualEffect(attacker, defender, magicEffect); } - activeCondition.Amount--; - - if (activeCondition.Amount <= 0) + var applyFormsParams = new RulesetImplementationDefinitions.ApplyFormsParams { - rulesetAttacker.BreakConcentration(); - } + sourceCharacter = rulesetCaster, + targetCharacter = rulesetCharacter, + position = defender?.LocationPosition ?? int3.zero + }; + + RulesetActor.InflictDamage( + totalDamage, + damageForm, + damageForm.DamageType, + applyFormsParams, + rulesetCharacter, + false, + activeCondition.SourceGuid, + false, + [], + new RollInfo(damageForm.DieType, rolls, 0), + false, + out _); } } @@ -1382,145 +1566,272 @@ public IEnumerator OnPhysicalAttackFinishedByMe( #endregion - #region Corrupting Bolt + #region Pulse Wave - internal static SpellDefinition BuildCorruptingBolt() + internal static SpellDefinition BuildPulseWave() { - const string Name = "CorruptingBolt"; + const string NAME = "PulseWave"; - var conditionCorruptingBolt = ConditionDefinitionBuilder - .Create(ConditionEyebiteSickened, $"Condition{Name}") - .SetGuiPresentation(Category.Condition, ConditionDoomLaughter) - .SetConditionType(ConditionType.Detrimental) - .SetFeatures() + var spellPush = SpellDefinitionBuilder + .Create($"{NAME}Push") + .SetGuiPresentation(Category.Spell) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) + .ExcludeCaster() + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData( + false, + AttributeDefinitions.Constitution, + true, + EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Wisdom, + 12) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build()) + .SetParticleEffectParameters(PowerFunctionWandFearCone) + .SetCasterEffectParameters(Darkness) + .SetImpactEffectParameters(MindTwist) + .Build()) .AddToDB(); - foreach (var damageDefinition in DatabaseRepository.GetDatabase()) - { - var damageType = damageDefinition.Name; + spellPush.AddCustomSubFeatures(new ModifyEffectDescriptionPulseWave(spellPush)); - var damageAffinity = - FeatureDefinitionDamageAffinityBuilder - .Create($"DamageAffinity{Name}{damageType}") - .SetGuiPresentationNoContent(true) - .SetDamageAffinityType(DamageAffinityType.Vulnerability) - .SetDamageType(damageType) - .AddToDB(); + var spellPull = SpellDefinitionBuilder + .Create($"{NAME}Pull") + .SetGuiPresentation(Category.Spell) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) + .ExcludeCaster() + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetSavingThrowData( + false, + AttributeDefinitions.Constitution, + true, + EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Wisdom, + 12) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.DragToOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build()) + .SetParticleEffectParameters(PowerFunctionWandFearCone) + .SetCasterEffectParameters(Darkness) + .SetImpactEffectParameters(MindTwist) + .Build()) + .AddToDB(); - conditionCorruptingBolt.Features.Add(damageAffinity); - } + spellPull.AddCustomSubFeatures(new ModifyEffectDescriptionPulseWave(spellPull)); var spell = SpellDefinitionBuilder - .Create(Name) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.CorruptingBolt, 128)) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolNecromancy) + .Create(NAME) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.PulseWave, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) .SetSpellLevel(3) .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.Mundane) - .SetVerboseComponent(true) + .SetMaterialComponent(MaterialComponentType.None) .SetSomaticComponent(true) + .SetVerboseComponent(true) .SetVocalSpellSameType(VocalSpellSemeType.Attack) .SetEffectDescription( + // UI Only EffectDescriptionBuilder .Create() - .SetDurationData(DurationType.Round, 1, TurnOccurenceType.EndOfSourceTurn) - .SetTargetingData(Side.Enemy, RangeType.RangeHit, 24, TargetType.IndividualsUnique) + .SetTargetingData(Side.All, RangeType.Self, 0, TargetType.Cone, 6) + .ExcludeCaster() .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) - .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, - EffectDifficultyClassComputation.SpellCastingFeature) + .SetSavingThrowData( + false, + AttributeDefinitions.Constitution, + true, + EffectDifficultyClassComputation.SpellCastingFeature, + AttributeDefinitions.Wisdom, + 12) .SetEffectForms( - EffectFormBuilder.DamageForm(DamageTypeNecrotic, 4, DieType.D8)) - .SetParticleEffectParameters(FingerOfDeath) - .SetImpactEffectParameters(Disintegrate) - .SetEffectEffectParameters(Disintegrate) + EffectFormBuilder + .Create() + .SetDamageForm(DamageTypeForce, dieType: DieType.D6, diceNumber: 6) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build(), + EffectFormBuilder + .Create() + .SetMotionForm(MotionForm.MotionType.DragToOrigin, 3) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build()) .Build()) - .AddCustomSubFeatures(new MagicEffectFinishedByMeCorruptingBolt(conditionCorruptingBolt)) + .SetSubSpells(spellPush, spellPull) .AddToDB(); - conditionCorruptingBolt.AddCustomSubFeatures( - new ActionFinishedByContenderCorruptingBolt(conditionCorruptingBolt, spell)); - return spell; } - private sealed class ActionFinishedByContenderCorruptingBolt( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionCorruptingBolt, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - SpellDefinition spellCorruptingBolt) : IActionFinishedByContender + private sealed class ModifyEffectDescriptionPulseWave(SpellDefinition spellDefinition) : IModifyEffectDescription { - public IEnumerator OnActionFinishedByContender(CharacterAction characterAction, GameLocationCharacter target) + public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) { - if (characterAction is CharacterActionCastSpell actionCastSpell && - actionCastSpell.activeSpell.SpellDefinition == spellCorruptingBolt) - { - yield break; - } + return definition == spellDefinition; + } - if (characterAction.ActionParams.TargetCharacters.Count == 0 || - characterAction.ActionParams.TargetCharacters[0] != target) + public EffectDescription GetEffectDescription( + BaseDefinition definition, + EffectDescription effectDescription, + RulesetCharacter character, + RulesetEffect rulesetEffect) + { + if (rulesetEffect != null) { - yield break; + effectDescription.EffectForms[1].MotionForm.distance = rulesetEffect.EffectLevel; } - if (characterAction.AttackRollOutcome is not (RollOutcome.Success or RollOutcome.CriticalSuccess)) - { - yield break; - } + return effectDescription; + } + } - var rulesetDefender = characterAction.ActionParams.TargetCharacters[0].RulesetCharacter; + #endregion - if (rulesetDefender == null) - { - yield break; - } + #region Spirit Shroud - if (!rulesetDefender.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, - conditionCorruptingBolt.Name, - out var activeCondition)) - { - yield break; - } + private const string SpiritShroudName = "SpiritShroud"; - rulesetDefender.RemoveCondition(activeCondition); - } + internal static SpellDefinition BuildSpiritShroud() + { + var sprite = Sprites.GetSprite(SpiritShroudName, Resources.SpiritShroud, 128); + + var hinder = ConditionDefinitionBuilder + .Create(ConditionHindered_By_Frost, $"Condition{SpiritShroudName}Hinder") + .SetSilent(Silent.None) + .SetConditionType(ConditionType.Detrimental) + .SetParentCondition(ConditionHindered) + .CopyParticleReferences(ConditionSpiritGuardians) + .AddToDB(); + + var noHeal = ConditionDefinitionBuilder + .Create($"Condition{SpiritShroudName}NoHeal") + .SetGuiPresentation(Category.Condition, ConditionChilledByTouch.GuiPresentation.SpriteReference) + .SetConditionType(ConditionType.Detrimental) + .SetFeatures(FeatureDefinitionHealingModifiers.HealingModifierChilledByTouch) + .SetSpecialDuration(DurationType.Round, 1, TurnOccurenceType.StartOfTurn) + .AddToDB(); + + return SpellDefinitionBuilder + .Create(SpiritShroudName) + .SetGuiPresentation(Category.Spell, sprite) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolNecromancy) + .SetSpellLevel(3) + .SetCastingTime(ActivationTime.BonusAction) + .SetMaterialComponent(MaterialComponentType.None) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Defense) + .SetRequiresConcentration(true) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Minute, 1) + .SetEffectAdvancement( + EffectIncrementMethod.PerAdditionalSlotLevel, 2, additionalDicePerIncrement: 1) + .Build()) + .SetSubSpells( + BuildSpiritShroudSubSpell(DamageTypeRadiant, hinder, noHeal, sprite), + BuildSpiritShroudSubSpell(DamageTypeNecrotic, hinder, noHeal, sprite), + BuildSpiritShroudSubSpell(DamageTypeCold, hinder, noHeal, sprite)) + .AddToDB(); } - private sealed class MagicEffectFinishedByMeCorruptingBolt( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionCorruptingBolt) : IMagicEffectFinishedByMe + private static SpellDefinition BuildSpiritShroudSubSpell( + string damage, + ConditionDefinition hinder, + ConditionDefinition noHeal, + AssetReferenceSprite sprite) { - public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) - { - if (!action.RolledSaveThrow || action.SaveOutcome == RollOutcome.Success) - { - yield break; - } - - var rulesetAttacker = action.ActingCharacter.RulesetCharacter; - - // need to loop over target characters to support twinned metamagic scenarios - foreach (var rulesetDefender in action.ActionParams.TargetCharacters - .Select(target => target.RulesetCharacter) - .Where(rulesetDefender => - rulesetDefender is { IsDeadOrDyingOrUnconscious: false })) - { - rulesetDefender.InflictCondition( - conditionCorruptingBolt.Name, - DurationType.Round, - 1, - TurnOccurenceType.EndOfSourceTurn, - AttributeDefinitions.TagEffect, - rulesetAttacker.guid, - rulesetAttacker.CurrentFaction.Name, - 1, - conditionCorruptingBolt.Name, - 0, - 0, - 0); - } - } + return SpellDefinitionBuilder + .Create($"{SpiritShroudName}{damage}") + .SetGuiPresentation(Category.Spell, sprite) + .SetSpellLevel(3) + .SetVocalSpellSameType(VocalSpellSemeType.Defense) + .SetCastingTime(ActivationTime.BonusAction) + .SetRequiresConcentration(true) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.Enemy, RangeType.Self, 1, TargetType.Sphere, 2) + .SetDurationData(DurationType.Minute, 1) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, 2, + additionalDicePerIncrement: 1) + //RAW it should only trigger if target starts turn in the area, but game doesn't trigger on turn start for some reason without OnEnter + .SetRecurrentEffect( + RecurrentEffect.OnActivation | RecurrentEffect.OnTurnStart | RecurrentEffect.OnEnter) + .SetParticleEffectParameters(SpiritGuardians) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetConditionForm(hinder, ConditionForm.ConditionOperation.Add) + .Build(), + EffectFormBuilder.ConditionForm( + ConditionDefinitionBuilder + .Create($"Condition{SpiritShroudName}{damage}") + .SetGuiPresentationNoContent(true) + .SetSilent(Silent.WhenAddedOrRemoved) + .CopyParticleReferences(ConditionSpiritGuardiansSelf) + .SetFeatures( + FeatureDefinitionAdditionalDamageBuilder + .Create($"AdditionalDamage{SpiritShroudName}{damage}") + .SetGuiPresentationNoContent(true) + .SetNotificationTag($"{SpiritShroudName}{damage}") + .SetTriggerCondition(ExtraAdditionalDamageTriggerCondition.TargetIsWithin10Ft) + .SetAttackOnly() + .SetDamageDice(DieType.D8, 1) + .SetSpecificDamageType(damage) + .SetAdvancement(AdditionalDamageAdvancement.SlotLevel, 0, 1, 2) + .AddConditionOperation( + ConditionOperationDescription.ConditionOperation.Add, noHeal) + .AddToDB()) + .AddToDB(), + ConditionForm.ConditionOperation.Add, true, true), + EffectFormBuilder + .Create() + .SetTopologyForm(TopologyForm.Type.DangerousZone, true) + .Build()) + .Build()) + .AddToDB(); } #endregion @@ -1596,153 +1907,4 @@ public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, } #endregion - - #region Hunger of the Void - - internal static SpellDefinition BuildHungerOfTheVoid() - { - const string Name = "HungerOfTheVoid"; - - var conditionHungerOfTheVoid = ConditionDefinitionBuilder - .Create(ConditionDefinitions.ConditionBlinded, $"ConditionBlindedBy{Name}") - .SetOrUpdateGuiPresentation(Category.Condition) - .SetParentCondition(ConditionDefinitions.ConditionBlinded) - .SetFeatures() - .AddToDB(); - - conditionHungerOfTheVoid.GuiPresentation.description = "Rules/&ConditionBlindedDescription"; - - conditionHungerOfTheVoid.AddCustomSubFeatures(new CustomBehaviorHungerOfTheVoid(conditionHungerOfTheVoid)); - - var spell = SpellDefinitionBuilder - .Create(Name) - .SetGuiPresentation(Category.Spell, Sprites.GetSprite(Name, Resources.HungerOfTheVoid, 128)) - .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) - .SetSpellLevel(3) - .SetCastingTime(ActivationTime.Action) - .SetMaterialComponent(MaterialComponentType.Mundane) - .SetVerboseComponent(true) - .SetSomaticComponent(true) - .SetVocalSpellSameType(VocalSpellSemeType.Buff) - .SetRequiresConcentration(true) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetDurationData(DurationType.Minute, 1) - .SetTargetingData(Side.All, RangeType.Distance, 24, TargetType.Sphere, 4) - .SetRecurrentEffect( - RecurrentEffect.OnActivation | RecurrentEffect.OnEnter | RecurrentEffect.OnTurnStart) - .SetEffectForms( - EffectFormBuilder.ConditionForm(conditionHungerOfTheVoid), - EffectFormBuilder.TopologyForm(TopologyForm.Type.DangerousZone, true), - Darkness.EffectDescription.EffectForms[2], - Darkness.EffectDescription.EffectForms[3]) - .SetParticleEffectParameters(Darkness) - .Build()) - .AddToDB(); - - return spell; - } - - private sealed class CustomBehaviorHungerOfTheVoid( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionHungerOfTheVoid) : ICharacterTurnStartListener, ICharacterBeforeTurnEndListener - { - public void OnCharacterBeforeTurnEnded(GameLocationCharacter locationCharacter) - { - InflictDamage(DamageTypeAcid, locationCharacter.RulesetCharacter, VenomousSpike, true); - } - - public void OnCharacterTurnStarted(GameLocationCharacter locationCharacter) - { - InflictDamage(DamageTypeCold, locationCharacter.RulesetCharacter, ConeOfCold); - } - - // ReSharper disable once SuggestBaseTypeForParameter - private void InflictDamage( - string damageType, RulesetCharacter rulesetCharacter, IMagicEffect magicEffect, bool rollSaving = false) - { - if (rulesetCharacter == null) - { - return; - } - - if (!rulesetCharacter.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, - conditionHungerOfTheVoid.Name, - out var activeCondition)) - { - return; - } - - var rulesetCaster = EffectHelpers.GetCharacterByGuid(activeCondition.SourceGuid); - - if (rulesetCaster == null) - { - return; - } - - if (rollSaving) - { - var casterSaveDC = 8 + activeCondition.SourceAbilityBonus + activeCondition.SourceProficiencyBonus; - var modifierTrend = rulesetCharacter.actionModifier.savingThrowModifierTrends; - var advantageTrends = rulesetCharacter.actionModifier.savingThrowAdvantageTrends; - var dexterityModifier = AttributeDefinitions.ComputeAbilityScoreModifier( - rulesetCharacter.TryGetAttributeValue(AttributeDefinitions.Dexterity)); - - rulesetCharacter.RollSavingThrow( - 0, AttributeDefinitions.Dexterity, null, modifierTrend, advantageTrends, dexterityModifier, - casterSaveDC, - false, out var savingOutcome, out _); - - if (savingOutcome == RollOutcome.Success) - { - return; - } - } - - var diceNumber = activeCondition.EffectLevel switch - { - >= 9 => 5, - >= 7 => 4, - >= 5 => 3, - _ => 2 - }; - - var rolls = new List(); - var damageForm = new DamageForm { DamageType = damageType, DiceNumber = diceNumber, DieType = DieType.D6 }; - var totalDamage = rulesetCaster.RollDamage(damageForm, 0, false, 0, 0, 1, false, false, false, rolls); - - var attacker = GameLocationCharacter.GetFromActor(rulesetCaster); - var defender = GameLocationCharacter.GetFromActor(rulesetCharacter); - - if (attacker != null && defender != null) - { - EffectHelpers.StartVisualEffect(attacker, defender, magicEffect); - } - - var applyFormsParams = new RulesetImplementationDefinitions.ApplyFormsParams - { - sourceCharacter = rulesetCaster, - targetCharacter = rulesetCharacter, - position = defender?.LocationPosition ?? int3.zero - }; - - RulesetActor.InflictDamage( - totalDamage, - damageForm, - damageForm.DamageType, - applyFormsParams, - rulesetCharacter, - false, - activeCondition.SourceGuid, - false, - [], - new RollInfo(damageForm.DieType, rolls, 0), - false, - out _); - } - } - - #endregion } diff --git a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt index 8318f7ab52..f6b9f7774e 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt @@ -74,7 +74,7 @@ Feature/&AlwaysBeardDescription={0} % de chances de laisser pousser une magnifi Feature/&AncestryLevelUpDraconicDescription=Votre ascendance draconique vous confère une affinité avec {0} types de dégâts. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Vous pouvez effectuer une frappe à mains nues comme action bonus. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=Arts martiaux – Bonus de frappe à mains nues -Feature/&AttributeModifierMonkAbundantKiDescription=Ajoutez la moitié de votre bonus de compétence (arrondi à l’inférieur) à votre pool de Ki Points. +Feature/&AttributeModifierMonkAbundantKiDescription=Ajoutez la moitié de votre bonus de compétence (arrondi à l'inférieur) à votre pool de Ki Points. Feature/&AttributeModifierMonkAbundantKiTitle=Ki abondant Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n Feature/&EnhancedIndomitableResistanceDescription=Si vous échouez à un jet de sauvegarde, vous pouvez le relancer avec un bonus égal à votre niveau de Combattant. Si vous le faites, vous devez utiliser le nouveau jet et vous ne pourrez plus utiliser cette fonctionnalité tant que vous n'aurez pas terminé un repos long. From a204d17986c0a68938d5b927eedfec282e1b5154 Mon Sep 17 00:00:00 2001 From: magicskysword Date: Sat, 8 Jun 2024 16:52:23 +0800 Subject: [PATCH 22/52] Polish the Chinese translation --- .../Translations/zh-CN/Others-zh-CN.txt | 46 +++++++++---------- .../Translations/zh-CN/Settings-zh-CN.txt | 2 +- .../SubClasses/RangerLightBearer-zh-CN.txt | 18 ++++---- .../RoguishArcaneScoundrel-zh-CN.txt | 10 ++-- .../SubClasses/RoguishBladeCaller-zh-CN.txt | 22 ++++----- 5 files changed, 49 insertions(+), 49 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt index a83b2f465d..e58e0e4eeb 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt @@ -26,16 +26,16 @@ Action/&ForcePoweredStrikeToggleDescription=激活/停用原力打击 Action/&ForcePoweredStrikeToggleTitle=原力打击 Action/&GloomBladeToggleDescription=激活/停用幽影刃黯蚀伤害 Action/&GloomBladeToggleTitle=幽影刃 -Action/&HailOfBladesToggleDescription=激活/停用剑刃冰雹 -Action/&HailOfBladesToggleTitle=剑刃冰雹 +Action/&HailOfBladesToggleDescription=激活/停用剑刃如风 +Action/&HailOfBladesToggleTitle=剑刃如风 Action/&InventorInfusionDescription=注法物品或复制造物 Action/&InventorInfusionTitle=注法 Action/&OrcishFuryToggleDescription=激活/停用兽人之怒 Action/&OrcishFuryToggleTitle=兽人之怒 Action/&PaladinSmiteToggleDescription=对任何攻击启用至圣斩,否则仅对暴击启用 Action/&PaladinSmiteToggleTitle=暴击 -Action/&PressTheAdvantageToggleDescription=激活/停用按优势 -Action/&PressTheAdvantageToggleTitle=按优势 +Action/&PressTheAdvantageToggleDescription=激活/停用直取优势 +Action/&PressTheAdvantageToggleTitle=直取优势 Action/&RecklessAttackExtendedDescription=在你轮到你进行第一次攻击之前,你可以决定鲁莽地攻击。这样做可以让你在使用力量的近战武器攻击骰上获得优势,直到你的下一个回合,但是对你的攻击骰在你的下一个回合之前有优势。 Action/&TacticianGambitDescription=选择特殊战技 Action/&TacticianGambitTitle=战技 @@ -58,8 +58,8 @@ Condition/&ConditionMonkSuperiorDefenseDescription=除非丧失能力,否则 Condition/&ConditionMonkSuperiorDefenseTitle=卓越的防御 Condition/&ConditionRogueCunningStrikeDisarmedTitle=解除武装 Condition/&ConditionRogueCunningStrikeWithdrawTitle=取消 -Condition/&ConditionRogueDeviousStrikeDazedDescription=你不能使用反应或附赠动作,并且可以在你的回合中移动或采取其他动作,但不能同时执行两者。 -Condition/&ConditionRogueDeviousStrikeDazedTitle=晕眩 +Condition/&ConditionRogueDeviousStrikeDazedDescription=你在回合内只能选择进行移动或者一个动作,无法在同回合内进行二者。你也不能执行附赠动作和反应。 +Condition/&ConditionRogueDeviousStrikeDazedTitle=恍惚 Condition/&ConditionRogueDeviousStrikeKnockOutTitle=被击败 Condition/&ConditionStaggeringBlowAoODescription=在你的下一个回合开始之前你不能进行借机攻击。 Condition/&ConditionStaggeringBlowAoOTitle=失衡殴击 @@ -72,19 +72,19 @@ Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=当你使用该武器 Failure/&FailureFlagTargetMeleeWeaponError=无法使用当前武器对该目标进行近战攻击 Feature/&AlwaysBeardDescription={0}% 的机会长出漂亮的胡子! Feature/&AncestryLevelUpDraconicDescription=你的龙类血统赋予你对 {0} 伤害类型的亲和。 -Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=你可以进行一次徒手攻击作为附赠动作。 +Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=你可以以附赠动作进行一次徒手攻击。 Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusTitle=武术 - 额外徒手打击 Feature/&AttributeModifierMonkAbundantKiDescription=将一半的熟练加值(向下取整)添加到你的气池中。 Feature/&AttributeModifierMonkAbundantKiTitle=气量充沛 Feature/&CollegeHopeWanderingHealerSpellsDescription={0}\n\n -Feature/&EnhancedIndomitableResistanceDescription=如果你的豁免检定失败,你可以重投,并获得相当于你的战士等级的加值。如果你这样做,则必须使用新的骰子,并且在完成长休之前不能再次使用此特性。 +Feature/&EnhancedIndomitableResistanceDescription=如果你的豁免检定失败,你可以重骰该豁免并获得等于你的战士等级的加值。不过你必须采用重掷的结果。你必须完成一次长休才能再次使用该特性。 Feature/&ExpandedSpellsDescription={0}\n\n Feature/&ExpandedSpellsTitle=扩展法术 -Feature/&FeatureMonkBodyAndMindDescription=你已经把你的身体和思想磨练到了新的高度。你的敏捷和感知增加 4 点。 -Feature/&FeatureMonkBodyAndMindTitle=身心 -Feature/&FeatureMonkHeightenedMetabolismDescription=你的训练将你的身心提升到了新的水平。你的疾风连击、坚强防御和飞檐走壁将获得以下好处:\n• 疾风连击:使用疾风连击时,你可以进行三次徒手攻击,而不是两次。\n• 坚强防御:使用坚强防御时,你将获得临时生命值,数量等于你掷出的两枚武艺骰。\n• 飞檐走壁:使用任一飞檐走壁特性(撤离或疾走)时,你还会获得其他效果的好处。 -Feature/&FeatureMonkHeightenedMetabolismTitle=气通周天 -Feature/&FeatureSetAlternateMonkFlurryOfBlowsDescription=作为附赠动作,你可以花费 1 点气进行两次徒手攻击。 +Feature/&FeatureMonkBodyAndMindDescription=你行满功成,身心性命皆已突破超然境界。你的敏捷和感知增加 4 点。 +Feature/&FeatureMonkBodyAndMindTitle=身心合一 +Feature/&FeatureMonkHeightenedMetabolismDescription=你的训练已将你的身与心推至全新境界。你的疾风连击、坚强防御和飞檐走壁将获得以下好处:\n• 疾风连击:使用疾风连击时,你可以进行三次徒手攻击,而不是两次。\n• 坚强防御:使用坚强防御时,你将获得临时生命值,数量等于你掷出的两枚武艺骰。\n• 飞檐走壁:使用任一飞檐走壁特性(撤离或疾走)时,你还会获得其他效果的好处。 +Feature/&FeatureMonkHeightenedMetabolismTitle=出神入化 +Feature/&FeatureSetAlternateMonkFlurryOfBlowsDescription=你可以消耗 1 点气,以一个附赠动作进行两次徒手打击。 Feature/&FeatureSetAlternateMonkFlurryOfBlowsTitle=疾风连击 Feature/&FeatureSetBarbarianBrutalStrikeDescription=当你使用鲁莽攻击时,你在回合结束前进行的一次基于力量的攻击检定会造成与武器或徒手打击所造成的相同类型的额外 1d10 伤害,并且如果击中,你还可以选择以下效果之一:\n• 强力打击。目标被直接推离你 15 尺。\n• 腿筋打击。目标的速度降低 15 尺,直到你的下一回合开始。 Feature/&FeatureSetBarbarianBrutalStrikeImprovement13Description=你已经磨练出了猛烈攻击的新方法。现在,你的凶蛮打击选项中包含以下效果:\n• 惊人打击。目标在下一次豁免检定中处于劣势,并且在你的下回合开始之前无法进行借机攻击。\n• 粉碎一击。你的打击会在该生物的防御中为盟友留下一个缺口,直到你的下一个回合开始。除你之外的生物对目标进行的下一次攻击检定获得 1d10 的攻击和伤害检定加值。 @@ -149,14 +149,14 @@ Feature/&PowerRogueCunningStrikeDescription=你已经开发出巧妙的方法来 Feature/&PowerRogueCunningStrikeDisarmDescription=目标必须成功通过敏捷豁免,否则在下回合结束之前所有攻击都处于劣势。 Feature/&PowerRogueCunningStrikeDisarmTitle=缴械 Feature/&PowerRogueCunningStrikePoisonDescription=目标必须成功通过体质豁免,否则会中毒 1 分钟。他们可以在每个回合开始时重投豁免。 -Feature/&PowerRogueCunningStrikePoisonTitle=下毒 +Feature/&PowerRogueCunningStrikePoisonTitle=淬毒 Feature/&PowerRogueCunningStrikeTitle=狡诈打击 Feature/&PowerRogueCunningStrikeTripDescription=目标必须成功通过敏捷豁免,否则就会俯卧。 Feature/&PowerRogueCunningStrikeTripTitle=绊摔 Feature/&PowerRogueCunningStrikeWithdrawDescription=攻击后,你可以使用自由动作向后退最多 3 个格子,而不会引发借机攻击。 Feature/&PowerRogueCunningStrikeWithdrawTitle=抽身 -Feature/&PowerRogueDeviousStrikeDazeDescription=目标必须成功通过体质豁免,否则将处于眩晕状态直至下回合结束。 -Feature/&PowerRogueDeviousStrikeDazeTitle=晕眩 +Feature/&PowerRogueDeviousStrikeDazeDescription=目标必须成功通过体质豁免,否则将处于恍惚状态直至下回合结束。 +Feature/&PowerRogueDeviousStrikeDazeTitle=恍惚 Feature/&PowerRogueDeviousStrikeDescription=你已经练习了巧妙地使用偷袭的新方法。 Feature/&PowerRogueDeviousStrikeKnockOutDescription=目标必须成功通过体质豁免,否则将失能 1 分钟。他们可以在每个回合结束时重投豁免,如果受到伤害也会失去该条件。 Feature/&PowerRogueDeviousStrikeKnockOutTitle=击晕 @@ -176,7 +176,7 @@ Feedback/&AdditionalDamageSunderingBlowFormat=粉碎殴击 Feedback/&AdditionalDamageSunderingBlowLine=粉碎殴击造成额外 +{2} 伤害! Feedback/&ChangeSneakDiceDamageType={1} 将偷袭骰伤害更改为 {2} Feedback/&ChangeSneakDiceDieType={1} 将偷袭骰类型从 {2} 更改为 {3} -Feedback/&ChangeSneakDiceNumber={1} 将偷袭骰编号从 {2} 更改为 {3} +Feedback/&ChangeSneakDiceNumber={1} 将偷袭骰值从 {2} 更改为 {3} Feedback/&ConcentrationEffectCheckRolledAnyAdvantageLine={0} 掷骰以维持 {1} {2} 对抗 DC {3},掷骰 {4} = {5} Feedback/&ConcentrationEffectCheckRolledLine={0} 掷骰以维持 {1} 对抗 DC {2},掷骰 {3} = {4} Feedback/&FlankingAttack=背后夹击 @@ -184,7 +184,7 @@ Feedback/&HigherGroundAttack=高处攻击 Feedback/&MagicalGuidanceCheckToHitRoll={0} 使用了 {1} 并投掷了 {2} 以替换检定掷骰上的 {3} Feedback/&NarrativeChoiceRoll={0} 投掷 {1} 个叙述选项,结果为 {2}。 Feedback/&ReturningWeaponActivates={1} 返回 {0}! -Feedback/&SmallRace=小赛 +Feedback/&SmallRace=小体型种族 Feedback/&TriggerFeatureLine={0} 触发 {1} Feedback/&TriggerRerollLine={0} 激活 {1} 以重投 {2} = {3} Feedback/&TrueSightAndIllusionSpells={0}拥有真实视觉并且不受此法术影响 @@ -195,7 +195,7 @@ Message/&CharacterExportDuplicateNameErrorDescription=导出已取消:\n\n池 Message/&CharacterExportEmptyNameErrorDescription=导出已取消:\n\n请尝试非空名称。 Message/&CharacterExportModalContentDescription=输入要导出的英雄名称: Message/&CharacterExportModalTitleDescription=导出 {0} -Message/&MessageModWelcomeDescription=未完成的商业模组充满了令人兴奋的功能,但默认情况下没有启用。按 Ctrl-F10 打开 Unity Mod Manager UI [UMM],然后单击“未完成的业务”旁边的设置图标以打开设置页面。探索选项并选择你喜欢的选项。 +Message/&MessageModWelcomeDescription=未竟之业Mod具有许多激动人心的功能,但默认情况下没有启用。按 Ctrl-F10 打开 Unity Mod Manager UI [UMM],然后单击“Unfinished Business”旁边的设置图标以打开设置页面。探索并选用你喜欢的功能。 Message/&MessageModWelcomeTitle=未竟之业模式 Message/&ModErrorWarningDescription=Solasta 检测到不稳定情况。请要求每个玩家关闭游戏,获取文件 %APPDATA%\LocalLow\Tactical Adventures\Player.log,并与 Unfinished Business mod 社区分享这些日志和保存文件。 Message/&ModErrorWarningTitle=游戏警告! @@ -265,7 +265,7 @@ Rules/&SituationalContext9014Format=未持盾牌的无甲或轻甲: Rules/&SituationalContext9015Format=双手持用木棒的无甲或轻甲: Rules/&SituationalContext9016Format=主手或副手近战武器不是效果源: Rules/&SituationalContext9017Format=专注于法术: -Rules/&TurnOccurenceEndOfSourceTurnFormat=末端转弯源 +Rules/&TurnOccurenceEndOfSourceTurnFormat=来源回合结束 Screen/&ClassExtraSpellDescriptionFormat=你从 {0} 职业知道这个法术。 Screen/&EditorLocationSize3Title=巨型【已修改】 Screen/&EditorLocationSize4Title=超巨型【已修改】 @@ -326,15 +326,15 @@ UI/&CustomFeatureSelectionTooltipTypePathClawDraconicChoice=爪龙血统 UI/&CustomFeatureSelectionTooltipTypePathOfTheElementsElementalFuryChoice=元素之怒 UI/&CustomFeatureSelectionTooltipTypePower=力量 UI/&CustomFeatureSelectionTooltipTypeProficiency=熟练项 -UI/&CustomFeatureSelectionTooltipTypeRangerPreferredEnemy=首选敌人 -UI/&CustomFeatureSelectionTooltipTypeRangerTerrainTypeAffinity=地形类型亲和 +UI/&CustomFeatureSelectionTooltipTypeRangerPreferredEnemy=宿敌 +UI/&CustomFeatureSelectionTooltipTypeRangerTerrainTypeAffinity=偏好地形 UI/&CustomFeatureSelectionTooltipTypeSorcererDraconicChoice=龙族血统术法起源 UI/&CustomFeatureSelectionTooltipTypeWeaponSpecialization=武器训练 UI/&ForcePreferredCantripDescription=如果此开关为开,则只有首选的戏法可以触发。如果没有选择首选的戏法,那么第一个有效的戏法将被触发,而无视这个开关。 UI/&ForcePreferredCantripTitle=强制首选戏法 UI/&HasHalfCover=该生物处于半身掩护。 UI/&InventoryFilterAnyTags=任何标签 -UI/&InventoryFilterBy=By +UI/&InventoryFilterBy=通过 UI/&InventoryFilterCategory=类别 UI/&InventoryFilterCost=成本 UI/&InventoryFilterCostPerWeight=每重量成本 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt index 4b8138edd3..07dc0f514b 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt @@ -156,7 +156,7 @@ ModUi/&EnableRespec=在休息操作后启用洗点 ModUi/&EnableRogueCunningStrike=在游荡者 5 级和 14 级时启用诡诈打击凶狡打击[你放弃 1 个偷袭骰可获得额外的命中效果] ModUi/&EnableRogueFightingStyle=在游荡者 2 级启用战斗风格选择 ModUi/&EnableRogueSteadyAim=在游荡者 3 级时启用手稳就准[作为附赠动作,在当前回合中为你的下一次攻击检定带来优势,如果你还没移动] -ModUi/&EnableRogueStrSaving=启用游荡者在诡诈/凶狡打击虚弱/精通打击剑刃冰雹上使用敏捷或力量调整值 +ModUi/&EnableRogueStrSaving=启用游荡者在诡诈/凶狡打击虚弱/精通打击剑刃如风上使用敏捷或力量调整值 ModUi/&EnableSaveByLocation=启用按活动/位置保存 ModUi/&EnableSignatureSpellsRelearn=启用法师招牌法术,以便在每次长休时准备[而不是在 20 级时一次] ModUi/&EnableSorcererMagicalGuidance=在第 5 级启用术士魔法指引 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RangerLightBearer-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RangerLightBearer-zh-CN.txt index 434949665b..f4f0973d9c 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RangerLightBearer-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RangerLightBearer-zh-CN.txt @@ -1,27 +1,27 @@ Condition/&ConditionBlindedByBlessedGlowTitle=被祝福之光目盲 Condition/&ConditionRangerLightBearerAngelicFormDescription=你的飞行速度等于你的步行速度,你的攻击也视作魔法攻击。 Condition/&ConditionRangerLightBearerAngelicFormTitle=天使形态 -Condition/&ConditionRangerLightBearerBlessedWarriorDescription=当被施法者用武器攻击击中时,攻击造成的所有伤害都会变成光耀伤害,并且你会因此受到额外的 1d8 光耀伤害。从 11 级开始,额外伤害增加到 2d8。 -Condition/&ConditionRangerLightBearerBlessedWarriorTitle=被祝福的战士印记 +Condition/&ConditionRangerLightBearerBlessedWarriorDescription=当被法术来源用武器攻击命中时,攻击造成的所有伤害都会变成光耀伤害,并且你会因此受到额外的 1d8 光耀伤害。从 11 级开始,额外伤害增加到 2d8。 +Condition/&ConditionRangerLightBearerBlessedWarriorTitle=受祝勇士印记 Feature/&AutoPreparedSpellsRangerLightBearerDescription=你可以获得 光亮术 作为奖励法术并以一个动作施放,这些法术对你来说被视为游侠法术,并且不计入你已知的法术数量:\n{0} -Feature/&AutoPreparedSpellsRangerLightBearerTitle=光辉掌者魔法 +Feature/&AutoPreparedSpellsRangerLightBearerTitle=执光者魔法 Feature/&FeatureRangerLightBearerWardingLightDescription=你可以用你的圣光使攻击者暂时失明。当 30 尺内的生物对目标进行攻击检定并且在检定上没有优势时,你可以使用你的反应对其施加劣势。 Feature/&FeatureRangerLightBearerWardingLightTitle=警示之光 Feature/&PowerRangerLightBearerAngelicFormDismissDescription=取消你的天使形态。 Feature/&PowerRangerLightBearerAngelicFormDismissTitle=取消天使形态 -Feature/&PowerRangerLightBearerAngelicFormSproutDescription=你能够短暂地转变为神圣形态。作为一个动作,最多 1 分钟,你可以给自己一个等于你步行速度的飞行速度,你的攻击也算作魔法。此外,你还会获得等同于游侠等级的临时生命值。每次长休你可以使用此特性一次。 +Feature/&PowerRangerLightBearerAngelicFormSproutDescription=你能够短暂地转变为神圣形态。作为一个动作,持续至多 1 分钟,你获得等同于步行速度的飞行速度,你的攻击视作魔法攻击。此外,你还会获得等同于游侠等级的临时生命值。每次长休后你可以使用一次该特性。 Feature/&PowerRangerLightBearerAngelicFormSproutTitle=天使形态 Feature/&PowerRangerLightBearerBlessedGlowDescription=你有召唤圣光的能力。当你施放 光亮术 时,你可以迫使光源 20 尺内的所有生物通过体质豁免来对抗你的法术豁免 DC,否则将目盲 1 分钟。不死生物或恶魔在此豁免检定上具有劣势。每次长休你可以使用此特性一次。 Feature/&PowerRangerLightBearerBlessedGlowTitle=祝福之光 Feature/&PowerRangerLightBearerBlessedWarriorDescription=以一个附赠动作,选择一个距离你 30 尺以内的生物。下一次你在本回合用武器攻击击中该生物时,攻击造成的所有伤害都变成光耀伤害,并且该生物因这次攻击额外受到 1d8 光耀伤害。从 11 级开始,额外伤害提升至 2d8。 -Feature/&PowerRangerLightBearerBlessedWarriorTitle=受祝战士 -Feature/&PowerRangerLightBearerLifeBringerDescription=你的生命值池等于游侠等级的五倍。这个池在长时间休息结束时得到补充。作为一个动作,你可以选择你 30 尺内的一个生物并恢复其最大生命值的一半。 +Feature/&PowerRangerLightBearerBlessedWarriorTitle=受祝勇士 +Feature/&PowerRangerLightBearerLifeBringerDescription=你拥有一个等于五倍游侠等级的生命值池。这个池在长休后完全恢复。作为一个动作,你可以选择你 30 尺内的一个生物并恢复其最大生命值的一半。 Feature/&PowerRangerLightBearerLifeBringerTitle=生命使者 Feature/&PowerRangerLightBearerLightDescription=你可以触摸的物体会在有限的时间内发出明亮光照。 -Feature/&PowerRangerLightBearerLightTitle=光亮 +Feature/&PowerRangerLightBearerLightTitle=光亮术 Reaction/&UseBlessedGlowDescription=尝试使你 20 尺内的所有生物陷入目盲。 Reaction/&UseBlessedGlowReactDescription=尝试使你 20 尺内的所有生物陷入目盲。 Reaction/&UseBlessedGlowReactTitle=祝福之光 Reaction/&UseBlessedGlowTitle=祝福之光 -Subclass/&RangerLightBearerDescription=光辉掌者是一位受到上层位面居民祝福的游侠。这些以对自然的善行和对所有种族的虔诚行为而闻名的游侠将引起生活在这些领域的神灵的注意。 -Subclass/&RangerLightBearerTitle=光辉掌者 +Subclass/&RangerLightBearerDescription=执光者是一位受到上层位面居民祝福的游侠。这些因善待自然、尊崇万灵而闻名的游侠,受到了位居神域的神灵关注。 +Subclass/&RangerLightBearerTitle=执光者 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishArcaneScoundrel-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishArcaneScoundrel-zh-CN.txt index 742f88544c..4f08ec902c 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishArcaneScoundrel-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishArcaneScoundrel-zh-CN.txt @@ -1,7 +1,7 @@ Condition/&ConditionRoguishArcaneScoundrelDistractingAmbushDescription=你在豁免或技能检定上处于劣势。 Condition/&ConditionRoguishArcaneScoundrelDistractingAmbushTitle=精力涣散 -Condition/&ConditionRoguishArcaneScoundrelPossessedDescription=你的生命本源被偷去伤害另一个生物。 -Condition/&ConditionRoguishArcaneScoundrelPossessedTitle=失魂 +Condition/&ConditionRoguishArcaneScoundrelPossessedDescription=你的生命本源被窃取并伤害了另一个生物。 +Condition/&ConditionRoguishArcaneScoundrelPossessedTitle=本源失落 Feature/&AdditionalDamageRoguishArcaneScoundrelDistractingAmbushDescription=每当你对一个生物造成偷袭伤害时,该生物在下一次豁免检定或属性检定中处于劣势,直到你的下一轮结束。 Feature/&AdditionalDamageRoguishArcaneScoundrelDistractingAmbushTitle=精力涣散 Feature/&CastSpellRoguishArcaneScoundrelDescription=施放法师法术和戏法。 @@ -11,7 +11,7 @@ Feature/&FeatureSetRoguishArcaneScoundrelTricksOfTheTradeTitle=本源盗贼 Feature/&MagicAffinityRoguishArcaneScoundrelGuilefulCastingDescription=你可以使用你的武器作为法器,并且能够在持有物品时满足法术的姿势成分 Feature/&MagicAffinityRoguishArcaneScoundrelGuilefulCastingTitle=诡计多端 Feature/&PowerRoguishArcaneScoundrelArcaneBackslashDescription=从第 13 级开始,如果你还没有习得 法术反制,习得之。每当你使用它成功打断法术时,你的偷袭就会对该生物造成力场伤害。此外,每次长休时,你可以施放最高环阶的 法术反制,而无需消耗法术位。 -Feature/&PowerRoguishArcaneScoundrelArcaneBackslashTitle=奥术反弹 +Feature/&PowerRoguishArcaneScoundrelArcaneBackslashTitle=奥术反击 Feature/&PowerRoguishArcaneScoundrelEssenceTheftDescription=你可以从一个生物身上窃取本源并用它来伤害另一个生物。 Feature/&PowerRoguishArcaneScoundrelEssenceTheftTitle=本源破裂 Feature/&ProficiencyRoguishArcaneScoundrelArcanaDescription=获得奥秘技能熟练项。 @@ -20,6 +20,6 @@ Reaction/&SpendPowerPowerRoguishArcaneScoundrelArcaneBackslashCounterSpellDescri Reaction/&SpendPowerPowerRoguishArcaneScoundrelArcaneBackslashCounterSpellReactDescription=施放法术反制并反制敌人的法术。 Reaction/&SpendPowerPowerRoguishArcaneScoundrelArcaneBackslashCounterSpellReactTitle=反应 Reaction/&SpendPowerPowerRoguishArcaneScoundrelArcaneBackslashCounterSpellTitle=对抗法术施法 -Subclass/&RoguishArcaneScoundrelDescription=凭借敏捷的步伐和机智敏锐,奥术恶棍利用一系列魔法技巧来智取和削弱他们的对手。 -Subclass/&RoguishArcaneScoundrelTitle=奥术恶棍 +Subclass/&RoguishArcaneScoundrelDescription=凭借敏捷的步伐和机智敏锐,窃法者利用一系列魔法技巧来智取和削弱他们的对手。 +Subclass/&RoguishArcaneScoundrelTitle=窃法者 Tooltip/&MustNotHavePossessedCondition=生命本源被盗,无法瞄准 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishBladeCaller-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishBladeCaller-zh-CN.txt index 1db4fcdf2b..7f1d1a265b 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishBladeCaller-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/RoguishBladeCaller-zh-CN.txt @@ -4,21 +4,21 @@ Condition/&ConditionRoguishBladeCallerBladeSurgeDescription=你获得额外的 Condition/&ConditionRoguishBladeCallerBladeSurgeTitle=剑刃浪涌 Feature/&FeatureRoguishBladeCallerBladeBondDescription=从第 3 级开始,你需要调整自己以适应你所使用的剑刃。你用匕首进行的攻击视为魔法攻击,可以克服对非魔法武器的抗性和免疫,它们的短距离和长距离投掷范围增加 20 尺,如果你投掷它们,它们会立即返回你的手中。 Feature/&FeatureRoguishBladeCallerBladeBondTitle=剑刃联系 -Feature/&FeatureRoguishBladeCallerBladeStormDescription=从第 17 级开始,每当你将生物的生命值减少到 0 时,你就会重新使用剑刃冰雹特性。 +Feature/&FeatureRoguishBladeCallerBladeStormDescription=从第 17 级开始,每当你将生物的生命值减少到 0 时,你可以重新使用剑刃如风特性。 Feature/&FeatureRoguishBladeCallerBladeStormTitle=剑刃风暴 Feature/&FeatureRoguishBladeCallerBladeSurgeDescription=从第 13 级开始,每回合一次,当你用匕首攻击击中受剑刃印记影响的生物时,你将获得一次额外的武器攻击作为你动作的一部分,并获得额外 10 尺的移动速度,直到你的回合结束。 Feature/&FeatureRoguishBladeCallerBladeSurgeTitle=剑刃浪涌 Feature/&FeatureSetRoguishBladeCallerBladeMarkDescription=在你的回合中,你用匕首攻击击中的第一个生物会受到剑刃印记状态,直到你的下一个回合结束,除非该生物已经受到该状态的影响。当你攻击受剑刃印记影响的生物时,你会消耗该印记并以优势进行该攻击。如果你用匕首攻击击中,该生物会受到相当于你的游荡者等级一半的额外伤害(向上取整)。 Feature/&FeatureSetRoguishBladeCallerBladeMarkTitle=剑刃印记 -Feature/&FeatureSetRoguishBladeCallerHailOfBladesDescription=从第 9 级开始,当你用匕首攻击击中受剑刃印记影响的生物时,你可以利用你的反应召唤出一片以太剑刃漩涡,并将它投向你的敌人。你能看到的目标 10 尺范围内的每个生物(包括目标)都必须通过敏捷豁免检定,或者受到等于你的偷袭伤害的力场伤害,并受到剑刃标记状态的影响,无论它们是否通过豁免检定。每次短休时你可以使用此特性一次。 -Feature/&FeatureSetRoguishBladeCallerHailOfBladesTitle=剑刃冰雹 -Feature/&PowerRoguishBladeCallerHailOfBladesDescription=你可以利用你的反应召唤出一片以太剑刃漩涡,并将它投向你的敌人。 -Feature/&PowerRoguishBladeCallerHailOfBladesTitle=剑刃冰雹 +Feature/&FeatureSetRoguishBladeCallerHailOfBladesDescription=从第 9 级开始,当你用匕首攻击击中受剑刃印记影响的生物时,你可以利用你的反应召唤出一片以太剑刃漩涡,并将它掷向你的敌人。你能看到的目标 10 尺范围内的每个生物(包括目标)都必须通过敏捷豁免检定,或者受到等于你的偷袭伤害的力场伤害,并受到剑刃标记状态的影响,无论它们是否通过豁免检定。每次短休时你可以使用此特性一次。 +Feature/&FeatureSetRoguishBladeCallerHailOfBladesTitle=剑刃如风 +Feature/&PowerRoguishBladeCallerHailOfBladesDescription=你可以利用你的反应召唤出一片以太剑刃漩涡,并将它掷向你的敌人。 +Feature/&PowerRoguishBladeCallerHailOfBladesTitle=剑刃如风 Feedback/&AdditionalDamageBladeMarkFormat=剑刃印记 Feedback/&AdditionalDamageBladeMarkLine=剑刃标记造成额外 +{2} 伤害! -Reaction/&UseHailOfBladesDescription=利用你的反应召唤出一片以太剑刃漩涡,并将它投向你的敌人。 -Reaction/&UseHailOfBladesReactDescription=利用你的反应召唤出一片以太剑刃漩涡,并将它投向你的敌人。 -Reaction/&UseHailOfBladesReactTitle=剑刃冰雹 -Reaction/&UseHailOfBladesTitle=剑刃冰雹 -Subclass/&RoguishBladeCallerDescription=剑刃召唤者是传奇刺客的后裔,至少传说中是这样的。这些斗士敏捷而精确,利用致命的剑术来攻击对手的弱点,并在时机成熟时以无与伦比的技巧将他们击倒。 -Subclass/&RoguishBladeCallerTitle=剑刃召唤者 +Reaction/&UseHailOfBladesDescription=利用你的反应召唤出一片以太剑刃漩涡,并将它掷向你的敌人。 +Reaction/&UseHailOfBladesReactDescription=利用你的反应召唤出一片以太剑刃漩涡,并将它掷向你的敌人。 +Reaction/&UseHailOfBladesReactTitle=剑刃如风 +Reaction/&UseHailOfBladesTitle=剑刃如风 +Subclass/&RoguishBladeCallerDescription=唤刃者是传奇刺客的后裔,至少传说中是这样的。这些斗士敏捷而精确,利用致命的剑术来攻击对手的弱点,并在时机成熟时以无与伦比的技巧将他们击倒。 +Subclass/&RoguishBladeCallerTitle=唤刃者 From ed0231faf1f1607ac8161f30e6672a6e4d81a10e Mon Sep 17 00:00:00 2001 From: zxcvbnm61004 Date: Sat, 8 Jun 2024 21:44:52 +0800 Subject: [PATCH 23/52] Update Spells03-zh-CN.txt Signed-off-by: zxcvbnm61004 --- .../Translations/zh-CN/Spells/Spells03-zh-CN.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt index 3fb28e878b..51f855fc91 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells03-zh-CN.txt @@ -34,8 +34,8 @@ Feedback/&AdditionalDamageSpiritShroudDamageRadiantFormat=魂灵环绕! Feedback/&AdditionalDamageSpiritShroudDamageRadiantLine={0} 通过魂灵环绕对 {1} 造成 {2} 光耀伤害! Spell/&AdderFangsDescription=你创造出一条巨大的绿色蛇的面容,它在向你的敌人袭来之前出现了片刻。选择范围内的一个生物。目标必须进行一次体质豁免检定,失败时受到 4d10 毒素伤害,成功时受到一半伤害。豁免失败的生物也会中毒,并且在受到该法术中毒时其速度减半。在每个回合结束时,目标可以进行一次体质豁免检定,成功则结束中毒。否则,中毒持续 1 分钟。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,就可以多选择一个生物作为目标。 Spell/&AdderFangsTitle=蝰蛇毒牙 -Spell/&AshardalonStrideDescription=巨龙的滚滚火焰从你的脚下喷涌而出,赋予你爆炸性的速度。在持续时间内,你的速度增加 20 英尺,移动不会引发机会攻击。当你在 5 英尺范围内移动一个生物或一个未被穿戴或携带的物体时,你的热迹会造成 1d6 火焰伤害。生物或物体在一个回合中只能受到一次这种伤害。当你使用 4 级或更高的法术位施放此法术时,每高于 3 级法术位等级,你的速度就会增加 5 英尺。该法术每高于 3 级法术位等级额外造成 1d6 火焰伤害。 -Spell/&AshardalonStrideTitle=阿萨德隆的步伐 +Spell/&AshardalonStrideDescription=龙类翻滚咆哮的火焰环绕你的足部,使你获得爆发性的速度。在持续时间内,你的速度增加 20 尺,并且移动不会触发借机攻击。当你移动至一个生物 5 尺内时,其被你的灼热尾迹灼烧,受到 1d6 火焰伤害。一个生物每回合只会承受一次此伤害。当你用四环或更高的法术位施展此法术时,你使用的法术位每比三环高一环,你的移动速度额外增加 5 尺,法术造成的伤害增加 1d6。 +Spell/&AshardalonStrideTitle=阿莎德隆奔行 Spell/&AuraOfLifeDescription=治疗能量从你身上散发出半径 30 尺的灵光。直到法术结束,灵光会随着你移动,以你为中心。你可以使用附赠动作使灵光中的一个生物(包括你)恢复 2d6 点生命值。 Spell/&AuraOfLifeTitle=活力灵光 Spell/&BlindingSmiteDescription=在你的下一次攻击中,你的武器会发出耀眼的光芒,并且这次攻击会对目标造成额外的 3d8 光耀伤害。此外,目标必须成功通过体质豁免,否则将被目盲,直到法术结束。\n被此法术目盲的生物在其每个回合结束时进行另一次体质豁免。豁免成功后,它不再目盲。 @@ -56,7 +56,7 @@ Spell/&ElementalWeaponDamageLightningDescription=为一件非魔法武器注入 Spell/&ElementalWeaponDamageLightningTitle=闪电元素武器 Spell/&ElementalWeaponDamageThunderDescription=为一件非魔法武器注入雷鸣伤害。 Spell/&ElementalWeaponDamageThunderTitle=雷鸣元素武器 -Spell/&ElementalWeaponDescription=为一件非魔法武器注入元素魔法。它在攻击和伤害检定上获得 +1,并获得 1d4 相应元素的伤害。当使用 5 环或 6 环法术位施法时,效果增加 1 个骰子,使用 7 环或更高环阶法术位时,效果增加 2 个骰子。 +Spell/&ElementalWeaponDescription=为一件非魔法武器注入元素魔法。它在攻击和伤害检定上获得 +1,并获得 1d4 相应元素的伤害。当你用五环或或更高的法术位施展此法术时,额外伤害增加 1d4,使用七环或更高法术位施展该法术时,额外伤害增加 2d4。 Spell/&ElementalWeaponTitle=元素武器 Spell/&FlameArrowsDescription=你必须装备远程武器。当目标被它击中时,目标会受到额外 1d6 点火焰伤害。当从箭袋中取出十二发弹药时,法术结束。当你使用四环或更高的法术位施放该法术时,使用的法术位每比三环高一环,你能以此法术影响的弹药的数量便增加 2 发。 Spell/&FlameArrowsTitle=烈焰箭矢 @@ -66,11 +66,11 @@ Spell/&IntellectFortressDescription=在持续时间内,您或您能看到的 Spell/&IntellectFortressTitle=智能壁垒 Spell/&LightningArrowDescription=下次你在法术持续时间内进行远程武器攻击时,武器的弹药或武器本身(如果是投掷武器)会转变成一道闪电。正常进行攻击检定。命中时目标会受到 3d8 闪电伤害,未击中时会受到一半伤害。无论你击中还是未击中,距离目标 10 尺内的每个生物都必须进行一次敏捷豁免。这些生物中的每一个在豁免失败时都会受到 2d8 闪电伤害,或者在成功豁免时受到一半的伤害。使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,上述两种闪电伤害就各增加 1d8。 Spell/&LightningArrowTitle=闪电箭矢 -Spell/&PulseWaveDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物要么被拉向你 15 英尺,要么被推离你 15 英尺,具体取决于你对该法术的选择。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,并且每高于 3 级一个法术位,拉动或推动的距离增加 5 英尺。 -Spell/&PulseWavePullDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物都会被拉向你 15 英尺。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,拉动或推动的距离每高于 3 级增加 5 英尺。 -Spell/&PulseWavePullTitle=脉冲波:拉 -Spell/&PulseWavePushDescription=你制造强大的压力,将其释放到 30 英尺的锥形区域,然后决定压力是拉动还是推动生物和物体。锥形区域内的每个生物都必须进行体质豁免检定。豁免失败时,生物将受到 6d6 力场伤害,豁免成功时,伤害减半。每个豁免失败的生物都会被推离你 15 英尺。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,并且每高于 3 级一个法术位,拉动或推动的距离增加 5 英尺。 -Spell/&PulseWavePushTitle=脉冲波:推 +Spell/&PulseWaveDescription=你创造出一股强烈的冲压,将其释放向 30 尺锥形范围,并决定该冲压会推开还是拉近范围内的物品与生物。锥形区域内的每个生物都必须进行体质豁免检定。若豁免失败则会受到 6d6 点力场伤害,豁免成功则受到一半伤害。每个豁免失败的生物要么被拉向你 15 尺,要么被推离你 15 尺,具体取决于你对该法术的选择。当你使用 4 级或更高级别的法术位施放此法术时,伤害增加 1d6,并且每高于 3 级一个法术位,拉动或推动的距离增加 5 尺。 +Spell/&PulseWavePullDescription=你创造出一股强烈的冲压,将其释放向 30 尺锥形范围,并决定该冲压会推开还是拉近范围内的物品与生物。锥形区域内的每个生物都必须进行体质豁免检定。若豁免失败则会受到 6d6 点力场伤害,豁免成功则受到一半伤害。豁免失败的生物会向你处被拉进 15 尺。当你使用四环或更高环的法术位施展该法术时,每比三环高出一环的法术位就能使法术的伤害增加 1d6,并使推拉的距离增加 5 尺。 +Spell/&PulseWavePullTitle=脉冲波动:拉进 +Spell/&PulseWavePushDescription=你创造出一股强烈的冲压,将其释放向 30 尺锥形范围,并决定该冲压会推开还是拉近范围内的物品与生物。锥形区域内的每个生物都必须进行体质豁免检定。若豁免失败则会受到 6d6 点力场伤害,豁免成功则受到一半伤害。每个豁免失败的生物都会从你处被推开 15 尺。当你使用四环或更高环的法术位施展该法术时,每比三环高出一环的法术位就能使法术的伤害增加 1d6,并使推拉的距离增加 5 尺。 +Spell/&PulseWavePushTitle=脉冲波动:推开 Spell/&PulseWaveTitle=脉冲波动 Spell/&SpiritShroudDamageColdDescription=造成额外的冷冻伤害。 Spell/&SpiritShroudDamageColdTitle=魂灵环绕(冷冻) From 5063dff42f9a6486774468ba7d3c1cb207065e6c Mon Sep 17 00:00:00 2001 From: zxcvbnm61004 Date: Sat, 8 Jun 2024 21:51:06 +0800 Subject: [PATCH 24/52] Update Spells04-zh-CN.txt Signed-off-by: zxcvbnm61004 --- .../Translations/zh-CN/Spells/Spells04-zh-CN.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt index 5086c3792b..d0dbee6a0f 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt @@ -26,7 +26,7 @@ Spell/&AuraOfVitalityDescription=你身上散发出半径 30 尺的灵光,具 Spell/&AuraOfVitalityTitle=生命灵光 Spell/&BeastForestGuardianDescription=野兽的毛皮覆盖了你的身体,你的面部特征变得野性,并且你获得了以下好处:\n• 你的移动速度增加 10 尺。\n• 你获得黑暗视觉,范围为 120 尺。\n• 你进行基于力量的攻击检定具有优势。\n• 你的近战武器攻击击中时会造成额外 1d6 力场伤害。 Spell/&BeastForestGuardianTitle=兽林守护者 -Spell/&BlessingOfRimeDescription=你召唤一股寒风,麻痹你盟友的痛苦。选择范围内最多三个生物。每个生物在持续时间内获得 3d8 临时生命值。当一个生物具有这些生命值时,如果它进行体质豁免检定,它就会在检定中获得优势。当你使用 5 环或更高环阶的法术位施放此法术时,每高于 4 环的法术位环阶,临时生命值就会增加 1d8。 +Spell/&BlessingOfRimeDescription=你召唤一股寒风,麻痹你盟友的痛苦。选择范围内最多三个生物。每个生物在持续时间内获得 3d8 临时生命值。当一个生物具有这些生命值时,如果它进行体质豁免检定,它就会在检定中获得优势。当你使用五环或者更高环位的法术位施展该法术时,每比四环高出一环的法术位,临时生命值就会增加 1d8。 Spell/&BlessingOfRimeTitle=雾凇祝福 Spell/&BrainBulwarkDescription=在此期间,你或范围内你能看到的一个自愿生物对心灵伤害有抗性,并且免疫魅惑、恐慌、害怕、心智支配和精神控制的状态。 Spell/&BrainBulwarkTitle=心智屏障 @@ -34,13 +34,13 @@ Spell/&FaithfulHoundDescription=你在范围内可以看到的一个未占据的 Spell/&FaithfulHoundTitle=魔邓肯忠犬 Spell/&ForestGuardianDescription=自然之灵会响应你的召唤,将你转变为强大的守护者。转变会持续到法术结束为止。你可以选择兽林守护者或森林守护者形态。 Spell/&ForestGuardianTitle=自然守护者 -Spell/&GravitySinkholeDescription=一个半径为 20 尺的破碎球体会在你可以看到的范围内的某个点形成,并拖拽那里的生物。球体中的每个生物都必须进行一次体质豁免。如果豁免失败,该生物会受到 5d10 力场伤害,并被沿直线拉向球体中心,最后到达一个尽可能靠近中心的未占据空间。如果豁免成功,该生物会受到一半的伤害并且不会被拉走。当你使用 5 环或更高环阶的法术位施放此法术时,每高于 4 环的法术位环阶,伤害增加1d10。 +Spell/&GravitySinkholeDescription=一个半径为 20 尺的破碎球体会在你可以看到的范围内的某个点形成,并拖拽那里的生物。球体中的每个生物都必须进行一次体质豁免。如果豁免失败,该生物会受到 5d10 力场伤害,并被沿直线拉向球体中心,最后到达一个尽可能靠近中心的未占据空间。如果豁免成功,该生物会受到一半的伤害并且不会被拉走。当你使用五环或更高环阶的法术位施放此法术时,你使用的法术位每比四环高一环,其伤害就增加 1d10。 Spell/&GravitySinkholeTitle=引力裂沟 Spell/&IrresistiblePerformanceDescription=你将一首歌曲编织到空中,让听到它的人为它的壮丽而鼓掌。30 尺立方体范围内你选择的所有生物都必须进行魅力豁免检定,否则将被迫拍手喊叫,直到你的下回合开始。被你魅惑的生物总是无法通过豁免检定。拍手的生物不能执行任何需要用手或嘴的动作,但可以正常行动。该法术对免疫魅惑的生物没有效果。 Spell/&IrresistiblePerformanceTitle=动人演出 -Spell/&PsionicBlastDescription=你在 30 英尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行智力豁免检定。如果豁免失败,目标将受到 5d8 精神伤害,被推离你 20 英尺,并被击倒。如果豁免成功,目标将受到一半伤害,并且不会被推离或击倒。当你使用 4 级或更高级别的法术位施放此法术时,伤害每高于 3 级增加 1d8。 -Spell/&PsionicBlastTitle=灵能冲击 -Spell/&PsychicLanceDescription=你从前额向范围内你能看到的生物释放出一道闪烁着灵能之力的长矛。它必须在智力豁免检定中成功,否则会受到 7d6 心灵伤害并失能,直到你的下一回合结束。豁免成功后,该生物会受到一半伤害并且不会失能。在更高的层次上。当你使用 4 环或更高环阶的法术位施放此法术时,每高于 4 环的法术位环阶,伤害就会增加 1d6。 +Spell/&PsionicBlastDescription=你在 30 尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。当你使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,其伤害就增加 1d8。 +Spell/&PsionicBlastTitle=灵能震爆 +Spell/&PsychicLanceDescription=你从前额向范围内你能看到的生物释放出一道闪烁着灵能之力的长矛。它必须在智力豁免检定中成功,否则会受到 7d6 心灵伤害并失能,直到你的下一回合结束。豁免成功后,该生物会受到一半伤害并且不会失能。在更高的层次上。当你使用五环或更高环阶的法术位施放此法术时,你使用的法术位每比四环高一环,其伤害就增加 1d6。 Spell/&PsychicLanceTitle=劳洛希姆心灵长枪 Spell/&StaggeringSmiteDescription=在此法术的持续时间内,下次你用武器攻击命中一个生物时,你的武器会刺穿身体和心灵,并且攻击会对目标造成额外的 4d6 心灵伤害。目标必须进行一次感知豁免。豁免失败时,它在攻击检定和能力检定上具有劣势,并且不能做出反应,直到它的下一轮结束。 Spell/&StaggeringSmiteTitle=惊惧斩 From 5c5844774b37bea74fca136e1f93c0842c324195 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 10:10:32 -0700 Subject: [PATCH 25/52] update spell sprites --- .../Resources/Spells/IntellectFortress.png | Bin 14321 -> 10216 bytes .../Resources/Spells/PsionicBlast.png | Bin 11831 -> 14228 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/SolastaUnfinishedBusiness/Resources/Spells/IntellectFortress.png b/SolastaUnfinishedBusiness/Resources/Spells/IntellectFortress.png index 469b589009a17f8bf2bce6164905ed9b5330ac14..58c97dba1e32e56d5bfa3adf816817a9c46f1ee0 100644 GIT binary patch literal 10216 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 diff --git a/SolastaUnfinishedBusiness/Resources/Spells/PsionicBlast.png b/SolastaUnfinishedBusiness/Resources/Spells/PsionicBlast.png index 435463642784ba093fc19637681c4e4cb442411b..5023382b55f098423e5b7463cc61fc90c7e26f1e 100644 GIT binary patch literal 14228 zcmV;FH*3g=P)C00093P)t-s4g@O? z1TZ2GRucp?9Scez4NnaWK_(Jh3<^0A4@m_AJsSx{83#WW1v(BGUn&)13KCfj6H){L zHU|n%4jX3%2SyPfYb6_N5Fv6R5@R!a+!7~%7A}%78f`2VXB@p~e6Df#0C59IZQcj%cGlSwj zIix*{-yR%t{Qmqba^6p~>_?R39YeBTzwR~}b{00BNI$tXA$~M1lO7*`7Zq1XGNC{) znGPO$DO$rENxOS@vmYgiEN;{yO|l?Ls2dq$84zkns_ZCc(Ij2WV6^Q+i|Q5#Tse{E zBrTXeVA&clf#UY_nwh*iFQ8smm{7d#fZOppZsN(&+)+!gWXbSXSG|gbxm1H%JE%Z%{X((a%ZqZK$dl?;d@8eNIlg%OVn0Co1^jdf~eY5L%=Ra zyB8mpM?8a6eB*bH;BkT1m!s7`RKO}Ur%fc8BRPzYz~r>L+F@tIDm}P9OR-~6sgmyX zQ*h9OdcMQ-^`x%T#K_W&e$h}|$z(CTIW4x{rZZ2UKw-*jImli>vnfQKEkchQ z7Kd}S?OUGYfRxf^kjyGsu~TBI94d6S^!20A>}#IaP>9eqHN`DtyMcMAxY6a^=Hw?h zuQes7E-rXYVbo-Cwsqn2u;lP_V80C?hL2?5yu;XOXr?R~ijmCjU()h|x8;e#`Kqe%@4G=DVlf?yN(A!_4*m5g#9(=a0|l`}ux;-`~$$ z{uj628vBFYr4UG@gquJB@Wo=eI4OpBKw^9hNlEY`De+bui8v@+E{B|$7@r7FH}TJ$ zw`{$EJNSAV4!BKDV8oD_Ny5eO`FsK&L;$u#Bmq4LkXKbDCEkQ24wp+!jE84i68?=I z*kWI{018rXyY;p>hE!TsR`!PsI-Sm^^W|c>95-Ui47kV?75G$2)F>@yL`D80dBa1D3WocQOUKH7dX^dP-CHhHg5sXI#6sOnMnB4 znv1D{=P96${^7@SAAC3(m^CUL!mKPAK>e8wk%0#Y0-wuoUqIwlTCH4;q{%T*skd_% zm|O~(yy?MT1mNBSKnC9U6e68OhqacOnaN-X%A_KPNXkecZn_eu`|#tBKk&IC->6y~ zm;kj}|Logp890GJ6d;xAA+;8?@DXZSRa#mVn?lhnX)Khqv@|&x6M$*h5`gzU#vP;Q z(*XEV$3!s7%0Plrq395R1|pF_+Su5bo_pWm4;YOt${?V?KnvHm$FQ#; zh(e)I+3D2Uwj~XRb75g=Y2iX`T09{Wq`oI9e2{2XZi+NCbKYtTm|=@{TE(Qz$*C-)gl+{1Kx{HKH;adjQS> zTYGtXxeOKr5c08B=+Eo*GWY;8GBOtWcni6urINm3ut1~HaH$|*lYeX8KoE%0D6j)L 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

    ?QOJcKt5B?|>C|m)KcxD-igdwNKcB}&m#gnq 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 qqfuhnVWc_y%-W>sFZQwjOWC00093P)t-s)9(J| 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
    x$_Hm;r^z(KcCTpeqX@E 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 From 7968b263c6bbafdc7e801f4523ec73205f731062 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 10:11:04 -0700 Subject: [PATCH 26/52] only disable stunning strike after all checks and prefer SpendPower to avoid effects --- .../Models/FixesContext.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/SolastaUnfinishedBusiness/Models/FixesContext.cs b/SolastaUnfinishedBusiness/Models/FixesContext.cs index 1e4950c76f..9ff352cc21 100644 --- a/SolastaUnfinishedBusiness/Models/FixesContext.cs +++ b/SolastaUnfinishedBusiness/Models/FixesContext.cs @@ -695,14 +695,6 @@ public IEnumerator OnPhysicalAttackFinishedByMe( } } - if (!attacker.IsActionOnGoing(ActionDefinitions.Id.StunningStrikeToggle)) - { - yield break; - } - - rulesetAttacker.ToggledPowersOn.Remove( - FeatureDefinitionPowers.PowerMonkStunningStrike.AutoActivationPowerTag); - var wayOfZenArcheryLevels = rulesetAttacker.GetSubclassLevel(Monk, WayOfZenArchery.Name); // Zen Archery get stunning strike with bows at 6 @@ -713,13 +705,20 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield break; } + if (!attacker.IsActionOnGoing(ActionDefinitions.Id.StunningStrikeToggle)) + { + yield break; + } + + rulesetAttacker.ToggledPowersOn.Remove( + FeatureDefinitionPowers.PowerMonkStunningStrike.AutoActivationPowerTag); + var implementationManager = ServiceRepository.GetService() as RulesetImplementationManager; var usablePower = PowerProvider.Get(FeatureDefinitionPowers.PowerMonkStunningStrike, rulesetAttacker); - var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.PowerNoCost) + var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.SpendPower) { - ActionModifiers = { new ActionModifier() }, RulesetEffect = implementationManager .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), UsablePower = usablePower, From 4bf8b20fcf7a2094e3912af770552afc713ecb72 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 11:12:20 -0700 Subject: [PATCH 27/52] disable Stunning Strike only if enemy fails save --- .../Models/FixesContext.cs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/SolastaUnfinishedBusiness/Models/FixesContext.cs b/SolastaUnfinishedBusiness/Models/FixesContext.cs index 9ff352cc21..f70789714f 100644 --- a/SolastaUnfinishedBusiness/Models/FixesContext.cs +++ b/SolastaUnfinishedBusiness/Models/FixesContext.cs @@ -647,8 +647,21 @@ private static void AddAdditionalActionTitles() = DatabaseHelper.ActionDefinitions.ActionSurge.GuiPresentation.Title; } - private sealed class PhysicalAttackFinishedByMeStunningStrike : IPhysicalAttackFinishedByMe + private sealed class PhysicalAttackFinishedByMeStunningStrike : IPhysicalAttackFinishedByMe, + IMagicEffectFinishedByMe { + public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) + { + if (action.RolledSaveThrow && + action.SaveOutcome == RollOutcome.Failure) + { + action.ActingCharacter.RulesetCharacter.ToggledPowersOn.Remove( + FeatureDefinitionPowers.PowerMonkStunningStrike.AutoActivationPowerTag); + } + + yield break; + } + public IEnumerator OnPhysicalAttackFinishedByMe( GameLocationBattleManager battleManager, CharacterAction action, @@ -663,11 +676,6 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield break; } - if (defender.RulesetActor.HasConditionOfTypeOrSubType(ConditionStunned)) - { - yield break; - } - var rulesetAttacker = action.ActingCharacter.RulesetCharacter; if (rulesetAttacker.GetRemainingPowerUses(FeatureDefinitionPowers.PowerMonkStunningStrike) == 0) @@ -710,9 +718,6 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield break; } - rulesetAttacker.ToggledPowersOn.Remove( - FeatureDefinitionPowers.PowerMonkStunningStrike.AutoActivationPowerTag); - var implementationManager = ServiceRepository.GetService() as RulesetImplementationManager; From 50d2c54bd31186742a201361ca995b5047165b9d Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 11:12:56 -0700 Subject: [PATCH 28/52] minor tweaks on Pulse Wave and Stride --- .../Api/DatabaseHelper-RELEASE.cs | 3 + .../Spells/SpellBuildersLevel03.cs | 70 ++++++++++--------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs index ee1c1e3f49..66414930e2 100644 --- a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs +++ b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs @@ -1680,6 +1680,9 @@ internal static class FeatureDefinitionPointPools internal static class FeatureDefinitionPowers { + internal static FeatureDefinitionPower PowerOathOfMotherlandFieryWrath { get; } = + GetDefinition("PowerOathOfMotherlandFieryWrath"); + internal static FeatureDefinitionPower PowerPaladinCleansingTouch { get; } = GetDefinition("PowerPaladinCleansingTouch"); diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs index a591c87446..7489e4fba0 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs @@ -334,7 +334,7 @@ internal static SpellDefinition BuildAshardalonStride() var movementAffinity = FeatureDefinitionMovementAffinityBuilder .Create($"MovementAffinity{Name}{effectLevel}") .SetGuiPresentationNoContent(true) - .SetBaseSpeedAdditiveModifier(effectLevel - 1) + .SetBaseSpeedAdditiveModifier(effectLevel + 1) .AddToDB(); var conditionAshardalonStride = ConditionDefinitionBuilder @@ -343,6 +343,7 @@ internal static SpellDefinition BuildAshardalonStride() .SetPossessive() .AddFeatures(movementAffinity, combatAffinity) .AddCustomSubFeatures(new ActionFinishedByMeAshardalonStride(conditionMark)) + .SetConditionParticleReference(ConditionOnFire.conditionParticleReference) .AddToDB(); conditionAshardalonStride.GuiPresentation.Description = Gui.NoLocalization; @@ -370,10 +371,12 @@ internal static SpellDefinition BuildAshardalonStride() additionalTargetCellsPerIncrement: 1) .SetEffectForms(EffectFormBuilder.ConditionForm(conditions[0])) .SetCasterEffectParameters(FireBolt) + .SetImpactEffectParameters(PowerOathOfMotherlandFieryWrath + .EffectDescription.EffectParticleParameters.effectParticleReference) .Build()) .AddToDB(); - spell.AddCustomSubFeatures(new ModifyEffectDescriptionAshardalonStride(spell, [.. conditions])); + spell.AddCustomSubFeatures(new ModifyEffectDescriptionAshardalonStride([.. conditions])); return spell; } @@ -410,7 +413,7 @@ public void MoveStepFinished(GameLocationCharacter mover) }; var damageRoll = rulesetAttacker.RollDamage(damageForm, 0, false, 0, 0, 1, false, false, false, rolls); - EffectHelpers.StartVisualEffect(mover, contender, FireBolt); + EffectHelpers.StartVisualEffect(mover, contender, Fireball); RulesetActor.InflictDamage( damageRoll, damageForm, @@ -442,29 +445,23 @@ public void MoveStepFinished(GameLocationCharacter mover) } } - private sealed class ModifyEffectDescriptionAshardalonStride( - SpellDefinition spellDefinition, - params ConditionDefinition[] conditions) - : IModifyEffectDescription + private sealed class ModifyEffectDescriptionAshardalonStride(params ConditionDefinition[] conditions) + : IMagicEffectInitiatedByMe, IMagicEffectFinishedByMe { - public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) + public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) { - return definition == spellDefinition; + action.ActionParams.RulesetEffect.EffectDescription.EffectForms[0].ConditionForm.conditionDefinition = + conditions[0]; + + yield break; } - public EffectDescription GetEffectDescription( - BaseDefinition definition, - EffectDescription effectDescription, - RulesetCharacter character, - RulesetEffect rulesetEffect) + public IEnumerator OnMagicEffectInitiatedByMe(CharacterActionMagicEffect action, BaseDefinition baseDefinition) { - if (rulesetEffect != null) - { - effectDescription.EffectForms[0].ConditionForm.conditionDefinition = - conditions[rulesetEffect.EffectLevel - 3]; - } + action.ActionParams.RulesetEffect.EffectDescription.EffectForms[0].ConditionForm.conditionDefinition = + conditions[action.ActionParams.RulesetEffect.EffectLevel - 3]; - return effectDescription; + yield break; } } @@ -1703,25 +1700,32 @@ internal static SpellDefinition BuildPulseWave() return spell; } - private sealed class ModifyEffectDescriptionPulseWave(SpellDefinition spellDefinition) : IModifyEffectDescription + private sealed class ModifyEffectDescriptionPulseWave(SpellDefinition spellDefinition) + : IMagicEffectBeforeHitConfirmedOnEnemy { - public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) + public IEnumerator OnMagicEffectBeforeHitConfirmedOnEnemy( + GameLocationBattleManager battleManager, + GameLocationCharacter attacker, + GameLocationCharacter defender, + ActionModifier actionModifier, + RulesetEffect rulesetEffect, + List actualEffectForms, + bool firstTarget, + bool criticalHit) { - return definition == spellDefinition; - } + if (rulesetEffect.SourceDefinition != spellDefinition) + { + yield break; + } - public EffectDescription GetEffectDescription( - BaseDefinition definition, - EffectDescription effectDescription, - RulesetCharacter character, - RulesetEffect rulesetEffect) - { - if (rulesetEffect != null) + var motionEffect = actualEffectForms.FirstOrDefault(x => x.FormType == EffectForm.EffectFormType.Motion); + + if (motionEffect == null) { - effectDescription.EffectForms[1].MotionForm.distance = rulesetEffect.EffectLevel; + yield break; } - return effectDescription; + motionEffect.MotionForm.distance = rulesetEffect.EffectLevel; } } From 899eeb687983efe71513711c607ac40885e7919f Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 12:04:56 -0700 Subject: [PATCH 29/52] WIP reviewing action logic with cantrips, action surge, quickened, etc. --- .../GameLocationCharacterExtensions.cs | 3 +- .../Behaviors/Specific/ActionSwitching.cs | 24 ++- .../Specific/AttackAfterMagicEffect.cs | 45 +++--- .../Spells/SpellBuildersCantrips.cs | 146 ++++++++---------- 4 files changed, 106 insertions(+), 112 deletions(-) diff --git a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs index 460de4b399..fbdee7e3cb 100644 --- a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs +++ b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs @@ -444,7 +444,8 @@ internal static void BurnOneMainAttack(this GameLocationCharacter instance) return; } - instance.CurrentActionRankByType[ActionType.Main]++; + //TODO: test this with other features that burn main attack + // instance.CurrentActionRankByType[ActionType.Main]++; instance.UsedMainAttacks = 0; } diff --git a/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs b/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs index 18fa6cccc7..d9a748abd0 100644 --- a/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs +++ b/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs @@ -269,12 +269,26 @@ internal static void CheckIfActionSwitched( return; } - //supports for action switching interaction with MetamagicQuickenedSpell - //you can only cast cantrips after quicken a spell - if (actionParams.activeEffect is RulesetEffectSpell rulesetEffectSpell && - rulesetEffectSpell.MetamagicOption == MetamagicQuickenedSpell) + if (actionParams.activeEffect is RulesetEffectSpell rulesetEffectSpell) { - character.UsedMainSpell = true; + //you can only cast one leveled spell per turn + // ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault + switch (actionParams.ActionDefinition.ActionType) + { + case ActionDefinitions.ActionType.Main when rulesetEffectSpell.SpellDefinition.SpellLevel > 0: + character.UsedBonusSpell = true; + break; + case ActionDefinitions.ActionType.Bonus: + character.UsedMainSpell = true; + break; + } + + //supports for action switching interaction with MetamagicQuickenedSpell + //you can only cast cantrips after quicken a spell + if (rulesetEffectSpell.MetamagicOption == MetamagicQuickenedSpell) + { + character.UsedMainSpell = true; + } } var type = actionParams.ActionDefinition.ActionType; diff --git a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs index 2f9e3ae3c8..422dcec6ea 100644 --- a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs +++ b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs @@ -10,38 +10,29 @@ namespace SolastaUnfinishedBusiness.Behaviors.Specific; internal sealed class AttackAfterMagicEffect { private const string AttackCantrip = "AttackCantrip"; + private const string QuickenedAttackCantrip = "QuickenedAttackCantrip"; private const RollOutcome MinOutcomeToAttack = RollOutcome.Success; private const RollOutcome MinSaveOutcomeToAttack = RollOutcome.Failure; - private static readonly HashSet RegisteredSpells = []; - - internal AttackAfterMagicEffect(SpellDefinition spellDefinition) - { - RegisteredSpells.Add(spellDefinition); - } - internal static void HandleAttackAfterMagicEffect(GameLocationCharacter character, CharacterActionParams actionParams) { - if (actionParams.AttackMode == null || - !actionParams.AttackMode.AttackTags.Contains(AttackCantrip)) + if (actionParams.AttackMode == null) { return; } - character.UsedMainCantrip = true; - - //supports for attack cantrips interaction with MetamagicQuickenedSpell - //you can only cast cantrips after quicken a spell - if (!character.RulesetCharacter.SpellsCastByMe.Any(x => - x.MetamagicOption == MetamagicQuickenedSpell && - RegisteredSpells.Contains(x.SpellDefinition))) + if (actionParams.AttackMode.AttackTags.Contains(AttackCantrip)) { - return; + character.UsedMainCantrip = true; } - character.UsedMainSpell = true; - character.SpendActionType(ActionDefinitions.ActionType.Bonus); + // ReSharper disable once InvertIf + if (actionParams.AttackMode.AttackTags.Contains(QuickenedAttackCantrip)) + { + character.UsedMainSpell = true; + character.SpendActionType(ActionDefinitions.ActionType.Bonus); + } } internal static bool CanAttack([NotNull] GameLocationCharacter caster, GameLocationCharacter target) @@ -121,9 +112,19 @@ internal static List PerformAttackAfterUse(CharacterActio //mark this attack for proper integration with War Magic attackMode.AttackTags.TryAdd(AttackCantrip); - var twinned = - actionMagicEffect is CharacterActionCastSpell castSpell && - castSpell.ActiveSpell.MetamagicOption == MetamagicTwinnedSpell; + var twinned = false; + + if (actionMagicEffect is CharacterActionCastSpell actionCastSpell) + { + twinned = actionCastSpell.ActiveSpell.MetamagicOption == MetamagicTwinnedSpell; + + //mark this attack for proper integration with Quickened + if (actionCastSpell.ActiveSpell.MetamagicOption == MetamagicQuickenedSpell) + { + attackMode.AttackTags.TryAdd(QuickenedAttackCantrip); + } + } + var maxAttacks = 1 + (twinned ? 1 : 0); // this is required to support reaction scenarios where AttackMain won't work diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs index 2f3c3c36bd..4e3c8abb4d 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs @@ -616,7 +616,7 @@ internal static SpellDefinition BuildSunlightBlade() .AddToDB(); spell.AddCustomSubFeatures( - new AttackAfterMagicEffect(spell), + new AttackAfterMagicEffect(), new UpgradeSpellRangeBasedOnWeaponReach(spell)); return spell; @@ -870,7 +870,7 @@ internal static SpellDefinition BuildBoomingBlade() .AddToDB(); spell.AddCustomSubFeatures( - new AttackAfterMagicEffect(spell), + new AttackAfterMagicEffect(), new UpgradeSpellRangeBasedOnWeaponReach(spell)); return spell; @@ -967,28 +967,6 @@ private static void HandleBoomingBladeSheathedDamage(GameLocationCharacter defen internal static SpellDefinition BuildResonatingStrike() { - // this is the leap damage to second target - var powerResonatingStrike = FeatureDefinitionPowerBuilder - .Create("PowerResonatingStrike") - .SetGuiPresentationNoContent(true) - .SetUsesFixed(ActivationTime.NoCost) - .SetShowCasting(false) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetTargetFiltering(TargetFilteringMethod.CharacterOnly) - .SetTargetingData(Side.Enemy, RangeType.Distance, 0, TargetType.IndividualsUnique) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetDamageForm(DamageTypeFire, 0, DieType.D8) - .SetDiceAdvancement(LevelSourceType.CharacterLevel, 0, 20, (5, 1), (11, 2), (17, 3)) - .Build()) - .SetParticleEffectParameters(BurningHands_B) - .Build()) - .AddToDB(); - - // this is the main damage to first target var additionalDamageResonatingStrike = FeatureDefinitionAdditionalDamageBuilder .Create("AdditionalDamageResonatingStrike") .SetGuiPresentationNoContent(true) @@ -1007,10 +985,12 @@ internal static SpellDefinition BuildResonatingStrike() .Create("ConditionResonatingStrike") .SetGuiPresentation(Category.Condition, Gui.EmptyContent) .SetSilent(Silent.WhenAddedOrRemoved) - .SetFeatures(additionalDamageResonatingStrike, powerResonatingStrike) - .AddCustomSubFeatures(AddUsablePowersFromCondition.Marker) + .SetFeatures(additionalDamageResonatingStrike) .AddToDB(); + additionalDamageResonatingStrike.AddCustomSubFeatures( + new PhysicalAttackFinishedByMeResonatingStrike(conditionResonatingStrike)); + var spell = SpellDefinitionBuilder .Create("ResonatingStrike") .SetGuiPresentation(Category.Spell, @@ -1029,36 +1009,28 @@ internal static SpellDefinition BuildResonatingStrike() .SetDurationData(DurationType.Round, 1) .SetTargetingData(Side.Enemy, RangeType.Distance, 6, TargetType.IndividualsUnique, 2) .SetIgnoreCover() - .SetEffectAdvancement( - EffectIncrementMethod.CasterLevelTable, additionalDicePerIncrement: 1) + .SetEffectAdvancement(EffectIncrementMethod.CasterLevelTable, additionalDicePerIncrement: 1) .SetEffectForms( EffectFormBuilder.ConditionForm( - conditionResonatingStrike, ConditionForm.ConditionOperation.Add, true)) + conditionResonatingStrike, + ConditionForm.ConditionOperation.Add, true)) .SetParticleEffectParameters(BurningHands_B) .SetImpactEffectParameters(new AssetReference()) .Build()) .AddToDB(); - var customBehavior = - new CustomBehaviorResonatingStrike(powerResonatingStrike, conditionResonatingStrike); - - powerResonatingStrike.AddCustomSubFeatures(customBehavior); spell.AddCustomSubFeatures( - customBehavior, - new AttackAfterMagicEffect(spell), + new CustomBehaviorResonatingStrike(), + new AttackAfterMagicEffect(), new UpgradeSpellRangeBasedOnWeaponReach(spell)); return spell; } - private sealed class CustomBehaviorResonatingStrike( - FeatureDefinitionPower powerResonatingStrike, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionResonatingStrike) : - IMagicEffectFinishedByMe, IPhysicalAttackFinishedByMe, IModifyEffectDescription, IFilterTargetingCharacter + private sealed class CustomBehaviorResonatingStrike : IMagicEffectFinishedByMe, IFilterTargetingCharacter { - private GameLocationCharacter _secondTarget; - private int _spellCastingModifier; + internal static GameLocationCharacter SecondTarget; + internal static int SpellCastingModifier; public bool EnforceFullSelection => false; @@ -1089,7 +1061,6 @@ public bool IsValid(CursorLocationSelectTarget __instance, GameLocationCharacter return firstTarget.IsWithinRange(target, 1); } - // STEP 1: collect spellCastingAbility modifier public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition spell) { if (action is not CharacterActionCastSpell actionCastSpell) @@ -1101,42 +1072,24 @@ public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, if (targets.Count != 2) { - _secondTarget = null; + SecondTarget = null; } else { var rulesetCaster = actionCastSpell.ActionParams.ActingCharacter.RulesetCharacter; var spellCastingAbility = actionCastSpell.ActiveSpell.SpellRepertoire.SpellCastingAbility; - _secondTarget = actionCastSpell.ActionParams.TargetCharacters[1]; - _spellCastingModifier = AttributeDefinitions.ComputeAbilityScoreModifier( + SecondTarget = actionCastSpell.ActionParams.TargetCharacters[1]; + SpellCastingModifier = AttributeDefinitions.ComputeAbilityScoreModifier( rulesetCaster.TryGetAttributeValue(spellCastingAbility)); } } + } - // STEP 3: add the spellCastingAbility as bonus damage - public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) - { - return definition == powerResonatingStrike; - } - - public EffectDescription GetEffectDescription( - BaseDefinition definition, - EffectDescription effectDescription, - RulesetCharacter character, - RulesetEffect rulesetEffect) - { - var damageForm = effectDescription.FindFirstDamageForm(); - - if (damageForm != null) - { - damageForm.bonusDamage = _spellCastingModifier; - } - - return effectDescription; - } - - // STEP 2: remove the resonance condition and chain the second target damage if a hit + private sealed class PhysicalAttackFinishedByMeResonatingStrike( + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + ConditionDefinition conditionResonatingStrike) : IPhysicalAttackFinishedByMe + { public IEnumerator OnPhysicalAttackFinishedByMe( GameLocationBattleManager battleManager, CharacterAction action, @@ -1146,7 +1099,7 @@ public IEnumerator OnPhysicalAttackFinishedByMe( RollOutcome rollOutcome, int damageAmount) { - var rulesetCharacter = action.ActingCharacter.RulesetCharacter; + var rulesetCharacter = attacker.RulesetCharacter; if (rulesetCharacter.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, @@ -1156,28 +1109,53 @@ public IEnumerator OnPhysicalAttackFinishedByMe( rulesetCharacter.RemoveCondition(activeCondition); } + var secondDefender = CustomBehaviorResonatingStrike.SecondTarget; + if (rollOutcome is not (RollOutcome.Success or RollOutcome.CriticalSuccess) - || _secondTarget is null) + || CustomBehaviorResonatingStrike.SecondTarget is null) { yield break; } - var usablePower = PowerProvider.Get(powerResonatingStrike, rulesetCharacter); - var implementationManager = - ServiceRepository.GetService() as RulesetImplementationManager; - - var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.PowerNoCost) + var rolls = new List(); + var diceNumber = rulesetCharacter.TryGetAttributeValue(AttributeDefinitions.CharacterLevel) switch + { + >= 17 => 3, + >= 11 => 2, + >= 5 => 1, + _ => 0 + }; + var damageForm = new DamageForm + { + DamageType = DamageTypeFire, + DieType = DieType.D8, + DiceNumber = diceNumber, + BonusDamage = CustomBehaviorResonatingStrike.SpellCastingModifier + }; + var damageRoll = rulesetCharacter.RollDamage(damageForm, 0, rollOutcome == RollOutcome.CriticalSuccess, 0, + 0, 1, false, false, false, rolls); + var rulesetDefender = secondDefender.RulesetActor; + var applyFormsParams = new RulesetImplementationDefinitions.ApplyFormsParams { - ActionModifiers = { new ActionModifier() }, - RulesetEffect = implementationManager - .MyInstantiateEffectPower(rulesetCharacter, usablePower, false), - UsablePower = usablePower, - TargetCharacters = { _secondTarget } + sourceCharacter = rulesetCharacter, + targetCharacter = rulesetDefender, + position = secondDefender.LocationPosition }; - // must enqueue actions whenever within an attack workflow otherwise game won't consume attack - ServiceRepository.GetService()? - .ExecuteAction(actionParams, null, true); + EffectHelpers.StartVisualEffect(attacker, secondDefender, BurningHands_B); + RulesetActor.InflictDamage( + damageRoll, + damageForm, + damageForm.DamageType, + applyFormsParams, + rulesetDefender, + false, + rulesetCharacter.Guid, + false, + attackMode.AttackTags, + new RollInfo(damageForm.DieType, rolls, damageForm.BonusDamage), + false, + out _); } } From 5eef09482041e01997e5ba7c49400f1c86395cb3 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 13:10:34 -0700 Subject: [PATCH 30/52] fix translations --- SolastaUnfinishedBusiness/Translations/de/Settings-de.txt | 2 +- SolastaUnfinishedBusiness/Translations/es/Settings-es.txt | 2 +- SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt | 2 +- SolastaUnfinishedBusiness/Translations/it/Settings-it.txt | 2 +- SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt | 2 +- SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt | 2 +- SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt b/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt index 08ecd90e62..0ffd8627d2 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt @@ -177,7 +177,7 @@ ModUi/&FactionHelp=Laden Sie ein offizielles Kampagnenspiel, um ModUi/&FactionRelations=Fraktionen: ModUi/&FasterTimeModifier=Spielzeitmodifikator beim Drücken der Leertaste ModUi/&FeatGroups=Feature-Gruppen -ModUi/&FeatGroupsHelp=• Jede Gruppe ist eine Konsolidierung ähnlicher Leistungen [d. h.: Glaubensbekenntnisse, Kampfstile, Metamagie usw.]{99 }• Leistungen in diesen Gruppen werden in der Kompetenzauswahlphase nicht mehr direkt sichtbar sein.\n• Wenn die Gruppe ausgewählt ist, werden sie in einer Dropdown-Liste angezeigt, um den Spielbildschirm übersichtlicher zu gestalten +ModUi/&FeatGroupsHelp=• Jede Gruppe ist eine Konsolidierung ähnlicher Leistungen [d. h.: Glaubensbekenntnisse, Kampfstile, Metamagie usw.]\n• Leistungen in diesen Gruppen werden in der Kompetenzauswahlphase nicht mehr direkt sichtbar sein.\n• Wenn die Gruppe ausgewählt ist, werden sie in einer Dropdown-Liste angezeigt, um den Spielbildschirm übersichtlicher zu gestalten ModUi/&Feats=Talente ModUi/&FightingStyles=Kampfstile ModUi/&FixAsianLanguagesTextWrap=Korrigieren Sie den Textumbruch in der Spiel-Benutzeroberfläche für asiatische Sprachen [Neustart erforderlich] diff --git a/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt b/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt index dcaf213d18..b2024bfb2f 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt @@ -177,7 +177,7 @@ ModUi/&FactionHelp=Carga un juego de campaña oficial para modi ModUi/&FactionRelations=Facciones: ModUi/&FasterTimeModifier=Modificador de tiempo de juego al presionar la barra espaciadora ModUi/&FeatGroups=Grupos de funciones -ModUi/&FeatGroupsHelp=• Cada grupo es una consolidación de dotes [es decir: credos, estilos de lucha, metamagia, etc.] similares{99 }• Las dotes de estos grupos ya no serán visibles directamente en la etapa de selección de competencia.\n• El grupo, cuando se selecciona, las ofrece en una lista desplegable para ordenar la pantalla del juego. +ModUi/&FeatGroupsHelp=• Cada grupo es una consolidación de dotes [es decir: credos, estilos de lucha, metamagia, etc.] similares\n• Las dotes de estos grupos ya no serán visibles directamente en la etapa de selección de competencia.\n• El grupo, cuando se selecciona, las ofrece en una lista desplegable para ordenar la pantalla del juego. ModUi/&Feats=Dotes ModUi/&FightingStyles=Estilos de lucha ModUi/&FixAsianLanguagesTextWrap=Se corrigió el ajuste de texto de la interfaz de usuario del juego en idiomas asiáticos [Requiere reinicio] diff --git a/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt index c4024ed5c8..7ba93a7e30 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt @@ -177,7 +177,7 @@ ModUi/&FactionHelp=Charger un jeu de campagne officiel pour mod ModUi/&FactionRelations=Factions : ModUi/&FasterTimeModifier=Modificateur de temps de jeu en appuyant sur la barre d'espace ModUi/&FeatGroups=Groupes d'exploits -ModUi/&FeatGroupsHelp=• Chaque groupe est une consolidation de exploits similaires [c'est-à-dire : croyances, styles de combat, métamagie, etc.]{99 }• Les exploits de ces groupes ne seront plus directement visibles lors de l'étape de sélection des compétences.\n• Le groupe, une fois sélectionné, les propose dans une liste déroulante pour désencombrer l'écran de jeu. +ModUi/&FeatGroupsHelp=• Chaque groupe est une consolidation de exploits similaires [c'est-à-dire : croyances, styles de combat, métamagie, etc.]\n• Les exploits de ces groupes ne seront plus directement visibles lors de l'étape de sélection des compétences.\n• Le groupe, une fois sélectionné, les propose dans une liste déroulante pour désencombrer l'écran de jeu. ModUi/&Feats=Exploits ModUi/&FightingStyles=Styles de combat ModUi/&FixAsianLanguagesTextWrap=Correction du retour à la ligne du texte de l'interface utilisateur du jeu dans les langues asiatiques [Nécessite un redémarrage] diff --git a/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt b/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt index 10fe6c3ca8..b42410358e 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt @@ -177,7 +177,7 @@ ModUi/&FactionHelp=Carica un gioco di campagna ufficiale per mo ModUi/&FactionRelations=Fazioni: ModUi/&FasterTimeModifier=Modificatore del tempo di gioco quando si preme la barra spaziatrice ModUi/&FeatGroups=Gruppi di talenti -ModUi/&FeatGroupsHelp=• Ogni gruppo è un consolidamento di talenti [ad esempio: credi, stili di combattimento, metamagia, ecc.]{99 }• I talenti di questi gruppi non saranno più direttamente visibili nella fase di selezione delle competenze\n• Il gruppo, una volta selezionato, li offre in un elenco a discesa per ordinare la schermata di gioco +ModUi/&FeatGroupsHelp=• Ogni gruppo è un consolidamento di talenti [ad esempio: credi, stili di combattimento, metamagia, ecc.]\n• I talenti di questi gruppi non saranno più direttamente visibili nella fase di selezione delle competenze\n• Il gruppo, una volta selezionato, li offre in un elenco a discesa per ordinare la schermata di gioco ModUi/&Feats=Talenti ModUi/&FightingStyles=Stili di combattimento ModUi/&FixAsianLanguagesTextWrap=Risolto il problema con il testo a capo dell'interfaccia utente del gioco delle lingue asiatiche [Richiede il riavvio] diff --git a/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt index 3fb019858f..79f3b0dbaa 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt @@ -177,7 +177,7 @@ ModUi/&FactionHelp=公式キャンペーン ゲームをロー ModUi/&FactionRelations=派閥: ModUi/&FasterTimeModifier=スペースバーを押したときのゲーム時間変更子 ModUi/&FeatGroups=特技グループ -ModUi/&FeatGroupsHelp=• 各グループは類似の特技 [例: 信条、戦闘スタイル、メタマジックなど]{99 }• これらのグループの特技は、熟練度選択ステージで直接表示されなくなります。\n• グループを選択すると、ゲーム画面が整理されるためにドロップダウン リストに特技が表示されます。 +ModUi/&FeatGroupsHelp=• 各グループは類似の特技 [例: 信条、戦闘スタイル、メタマジックなど]\n• これらのグループの特技は、熟練度選択ステージで直接表示されなくなります。\n• グループを選択すると、ゲーム画面が整理されるためにドロップダウン リストに特技が表示されます。 ModUi/&Feats=特技 ModUi/&FightingStyles=戦闘スタイル ModUi/&FixAsianLanguagesTextWrap=アジア言語のゲーム UI テキストの回り込みを修正 [再起動が必要] diff --git a/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt index 21f8713aba..fb355ef7a5 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt @@ -177,7 +177,7 @@ ModUi/&FactionHelp=진영 관계를 수정하려면 공식 캠 ModUi/&FactionRelations=진영: ModUi/&FasterTimeModifier=스페이스바를 누를 때의 게임 시간 수정 ModUi/&FeatGroups=피트 그룹 -ModUi/&FeatGroupsHelp=• 각 그룹은 유사한 공적 [예: 신조, 전투 스타일, 메타마법 등]의 통합입니다.{99 }• 이 그룹의 업적은 더 이상 숙련도 선택 단계에서 직접 표시되지 않습니다.\n• 그룹을 선택하면 게임 화면을 깔끔하게 정리하기 위해 드롭다운 목록에 해당 업적이 제공됩니다. +ModUi/&FeatGroupsHelp=• 각 그룹은 유사한 공적 [예: 신조, 전투 스타일, 메타마법 등]의 통합입니다.\n• 이 그룹의 업적은 더 이상 숙련도 선택 단계에서 직접 표시되지 않습니다.\n• 그룹을 선택하면 게임 화면을 깔끔하게 정리하기 위해 드롭다운 목록에 해당 업적이 제공됩니다. ModUi/&Feats=특징 ModUi/&FightingStyles=격투 스타일 ModUi/&FixAsianLanguagesTextWrap=아시아 언어의 게임 UI 텍스트 줄바꿈 수정 [다시 시작 필요] diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt index 9efaf3918c..e0cf09b968 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt @@ -177,7 +177,7 @@ ModUi/&FactionHelp=Carregue um jogo de campanha oficial para mo ModUi/&FactionRelations=Facções: ModUi/&FasterTimeModifier=Modificador de tempo de jogo ao pressionar a barra de espaço ModUi/&FeatGroups=Grupos de Talentos -ModUi/&FeatGroupsHelp=• Cada grupo é uma consolidação de talentos [ou seja: credos, estilos de luta, metamágica, etc.]{99 }• Os talentos nesses grupos não ficarão mais diretamente visíveis no estágio de seleção de proficiência\n• O grupo, quando selecionado, os oferece em uma lista suspensa para organizar a tela do jogo +ModUi/&FeatGroupsHelp=• Cada grupo é uma consolidação de talentos [ou seja: credos, estilos de luta, metamágica, etc.]\n• Os talentos nesses grupos não ficarão mais diretamente visíveis no estágio de seleção de proficiência\n• O grupo, quando selecionado, os oferece em uma lista suspensa para organizar a tela do jogo ModUi/&Feats=Talentos ModUi/&FightingStyles=Estilos de luta ModUi/&FixAsianLanguagesTextWrap=Corrigir quebra automática de texto da IU do jogo em idiomas asiáticos [Requer reinicialização] From ed9cc231e368a473a0a2cd7eb4c283aaa02e281b Mon Sep 17 00:00:00 2001 From: Ender Wiggin Date: Sat, 8 Jun 2024 23:14:56 +0300 Subject: [PATCH 31/52] fixed `GetSubclassLevel` extension - made it return 0 if character has no subclass for specified class yet --- .../Api/GameExtensions/RulesetCharacterExtensions.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs b/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs index af69bbae32..70a363e431 100644 --- a/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs +++ b/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs @@ -46,9 +46,9 @@ internal static int GetSubclassLevel( { var hero = character.GetOriginalHero(); - if (hero == null || - (hero.ClassesAndSubclasses.TryGetValue(klass, out var characterSubclassDefinition) && - characterSubclassDefinition.Name != subclass)) + if (hero == null + || !hero.ClassesAndSubclasses.TryGetValue(klass, out var characterSubclassDefinition) + || characterSubclassDefinition.Name != subclass) { return 0; } From b00c9cd3006fb6f0c839d02694df9cc2019bf618 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 13:15:07 -0700 Subject: [PATCH 32/52] add Elemental Bane spell --- ...esentation-InvalidSyntaxTranslation-en.txt | 10 + .../ConditionElementalBaneDamageAcid.json | 155 +++++ .../ConditionElementalBaneDamageCold.json | 155 +++++ .../ConditionElementalBaneDamageFire.json | 155 +++++ ...ConditionElementalBaneDamageLightning.json | 155 +++++ .../ConditionElementalBaneDamageThunder.json | 155 +++++ .../SpellDefinition/ElementalBane.json | 324 ++++++++++ .../ElementalBaneDamageAcid.json | 346 +++++++++++ .../ElementalBaneDamageCold.json | 346 +++++++++++ .../ElementalBaneDamageFire.json | 346 +++++++++++ .../ElementalBaneDamageLightning.json | 346 +++++++++++ .../ElementalBaneDamageThunder.json | 346 +++++++++++ Documentation/Spells.md | 200 ++++--- .../ChangelogHistory.txt | 2 +- SolastaUnfinishedBusiness/Displays/_ModUi.cs | 1 + .../Models/SpellsContext.cs | 2 + .../Patches/RulesetActorPatcher.cs | 10 +- .../Properties/Resources.Designer.cs | 10 + .../Properties/Resources.resx | 5 + .../Resources/Spells/ElementalBane.png | Bin 0 -> 13516 bytes .../Spells/SpellBuildersLevel04.cs | 562 +++++++++++------- .../Translations/de/Spells/Spells04-de.txt | 6 + .../Translations/en/Spells/Spells04-en.txt | 6 + .../Translations/es/Spells/Spells04-es.txt | 6 + .../Translations/fr/Spells/Spells04-fr.txt | 6 + .../Translations/it/Spells/Spells04-it.txt | 6 + .../Translations/ja/Spells/Spells04-ja.txt | 6 + .../Translations/ko/Spells/Spells04-ko.txt | 6 + .../pt-BR/Spells/Spells04-pt-BR.txt | 6 + .../Translations/ru/Spells/Spells04-ru.txt | 6 + .../zh-CN/Spells/Spells04-zh-CN.txt | 6 + 31 files changed, 3380 insertions(+), 311 deletions(-) create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBane.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json create mode 100644 SolastaUnfinishedBusiness/Resources/Spells/ElementalBane.png diff --git a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt index 2bfdac5093..7d019590f7 100644 --- a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt +++ b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt @@ -734,6 +734,16 @@ DieRollModifierDamageTypeDependentFeatElementalMasterDamagePoison Title='Element DieRollModifierDamageTypeDependentFeatElementalMasterDamagePoison Description='Poison damage type spells you cast ignore target's immunity to damage. In addition, when you roll attack for these spells, you can reroll any 1s.'. DieRollModifierDamageTypeDependentFeatElementalMasterDamageThunder Title='Elemental Master [Thunder]'. DieRollModifierDamageTypeDependentFeatElementalMasterDamageThunder Description='Thunder damage type spells you cast ignore target's immunity to damage. In addition, when you roll attack for these spells, you can reroll any 1s.'. +ElementalBaneDamageAcid Title='Elemental Bane: Acid Damage'. +ElementalBaneDamageAcid Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Acid Damage damage, the target takes an extra 2d6 Acid Damage damage. Moreover, the target loses any resistance to Acid Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. +ElementalBaneDamageCold Title='Elemental Bane: Cold Damage'. +ElementalBaneDamageCold Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Cold Damage damage, the target takes an extra 2d6 Cold Damage damage. Moreover, the target loses any resistance to Cold Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. +ElementalBaneDamageFire Title='Elemental Bane: Fire Damage'. +ElementalBaneDamageFire Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Fire Damage damage, the target takes an extra 2d6 Fire Damage damage. Moreover, the target loses any resistance to Fire Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. +ElementalBaneDamageLightning Title='Elemental Bane: Lightning Damage'. +ElementalBaneDamageLightning Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Lightning Damage damage, the target takes an extra 2d6 Lightning Damage damage. Moreover, the target loses any resistance to Lightning Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. +ElementalBaneDamageThunder Title='Elemental Bane: Thunder Damage'. +ElementalBaneDamageThunder Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Thunder Damage damage, the target takes an extra 2d6 Thunder Damage damage. Moreover, the target loses any resistance to Thunder Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. FeatAwakenTheBeastWithinCharisma Title='Awaken the Beast [Cha]'. FeatAwakenTheBeastWithinCharisma Description='Increase your Charisma by 1, to a maximum of 20. Whenever you use your Wild Shape ability to transform into a beast, you gain temporary hit points equal to twice your druid level.'. FeatAwakenTheBeastWithinConstitution Title='Awaken the Beast [Con]'. diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json new file mode 100644 index 0000000000..f1531d81d4 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json @@ -0,0 +1,155 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Condition/&ConditionElementalBaneTitle", + "description": "Condition/&ConditionElementalBaneDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", + "m_SubObjectName": "ConditionRestrictedInsideMagicCircle", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "a91531ac-3ccf-536c-98f6-3656eb691bcf", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageAcid" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json new file mode 100644 index 0000000000..9be44e2199 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json @@ -0,0 +1,155 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Condition/&ConditionElementalBaneTitle", + "description": "Condition/&ConditionElementalBaneDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", + "m_SubObjectName": "ConditionRestrictedInsideMagicCircle", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "f592188a-0409-5c44-b5dc-5b6af224d735", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageCold" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json new file mode 100644 index 0000000000..a3ec619e02 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json @@ -0,0 +1,155 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Condition/&ConditionElementalBaneTitle", + "description": "Condition/&ConditionElementalBaneDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", + "m_SubObjectName": "ConditionRestrictedInsideMagicCircle", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "70f718e7-3376-5819-a653-890ec4c8ddef", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageFire" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json new file mode 100644 index 0000000000..9bbd880e03 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json @@ -0,0 +1,155 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Condition/&ConditionElementalBaneTitle", + "description": "Condition/&ConditionElementalBaneDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", + "m_SubObjectName": "ConditionRestrictedInsideMagicCircle", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "de942550-cc5b-5d66-81c4-215418bcd0ce", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageLightning" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json new file mode 100644 index 0000000000..8fff86e9b1 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json @@ -0,0 +1,155 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Condition/&ConditionElementalBaneTitle", + "description": "Condition/&ConditionElementalBaneDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", + "m_SubObjectName": "ConditionRestrictedInsideMagicCircle", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "56edcf13-9b9d-5fec-8775-d853ed33bbb9", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageThunder" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBane.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBane.json new file mode 100644 index 0000000000..ac482bf816 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBane.json @@ -0,0 +1,324 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": true, + "subspellsList": [ + "Definition:ElementalBaneDamageAcid:ab3f5150-13ef-544a-aeb2-f14e1a0352bf", + "Definition:ElementalBaneDamageCold:34dc638f-0ba3-53bd-8426-121310c9498d", + "Definition:ElementalBaneDamageFire:41c7a494-4278-5f2e-9164-5e766c0b99c4", + "Definition:ElementalBaneDamageLightning:e4d12eab-1a45-5985-ab33-45d6fdc2275f", + "Definition:ElementalBaneDamageThunder:69ba1ede-f692-5c54-872b-45aadce48b1f" + ], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolTransmutation", + "spellLevel": 4, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 18, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "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": "Minute", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 1, + "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": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "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": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&ElementalBaneTitle", + "description": "Spell/&ElementalBaneDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "ec2e8c7d-2308-5ae2-a64b-dbd9c0bbb994", + "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": "107ae326-a9c7-563a-b479-d78b494c4594", + "contentPack": 9999, + "name": "ElementalBane" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json new file mode 100644 index 0000000000..d6b97a9c5a --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json @@ -0,0 +1,346 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolTransmutation", + "spellLevel": 4, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 18, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "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": "Minute", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionElementalBaneDamageAcid", + "conditionDefinition": "Definition:ConditionElementalBaneDamageAcid:a91531ac-3ccf-536c-98f6-3656eb691bcf", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 1, + "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": "f2663f24463bfa74eabff39bfeb7f077", + "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": "73c5ac2ea1f0c3744b6c33d4519cfa98", + "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": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "a6e8f7ab481608046a0a955556089c5f", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "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": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Elemental Bane: Acid Damage", + "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Acid Damage damage, the target takes an extra 2d6 Acid Damage damage. Moreover, the target loses any resistance to Acid Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "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": "ab3f5150-13ef-544a-aeb2-f14e1a0352bf", + "contentPack": 9999, + "name": "ElementalBaneDamageAcid" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json new file mode 100644 index 0000000000..60e16b4fd7 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json @@ -0,0 +1,346 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolTransmutation", + "spellLevel": 4, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 18, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "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": "Minute", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionElementalBaneDamageCold", + "conditionDefinition": "Definition:ConditionElementalBaneDamageCold:f592188a-0409-5c44-b5dc-5b6af224d735", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 1, + "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": "3b7d45ea0f197854aa21c5d1ea581201", + "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": "596b83c27fbb806419e030cde3f8fe3d", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "38c44805a1a3e4c4aaf0cd27dbe5f3f6", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "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": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Elemental Bane: Cold Damage", + "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Cold Damage damage, the target takes an extra 2d6 Cold Damage damage. Moreover, the target loses any resistance to Cold Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "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": "34dc638f-0ba3-53bd-8426-121310c9498d", + "contentPack": 9999, + "name": "ElementalBaneDamageCold" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json new file mode 100644 index 0000000000..9b8418640d --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json @@ -0,0 +1,346 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolTransmutation", + "spellLevel": 4, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 18, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "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": "Minute", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionElementalBaneDamageFire", + "conditionDefinition": "Definition:ConditionElementalBaneDamageFire:70f718e7-3376-5819-a653-890ec4c8ddef", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 1, + "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": "a527dee34e46e7a4c8c68a9d244b3855", + "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": "e766280ec6dd2fa4ba0a28275aa732fb", + "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": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "e446eddf529bfc94c9b972fc384b9986", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "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": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Elemental Bane: Fire Damage", + "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Fire Damage damage, the target takes an extra 2d6 Fire Damage damage. Moreover, the target loses any resistance to Fire Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "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": "41c7a494-4278-5f2e-9164-5e766c0b99c4", + "contentPack": 9999, + "name": "ElementalBaneDamageFire" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json new file mode 100644 index 0000000000..9f96af934f --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json @@ -0,0 +1,346 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolTransmutation", + "spellLevel": 4, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 18, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "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": "Minute", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionElementalBaneDamageLightning", + "conditionDefinition": "Definition:ConditionElementalBaneDamageLightning:de942550-cc5b-5d66-81c4-215418bcd0ce", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 1, + "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": "44e6449335f642743a6c8d5fda526cfd", + "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": "579f0985fff7e2243a922184fedb2db0", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "7ee946178940d56438b69281484e7a39", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "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": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Elemental Bane: Lightning Damage", + "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Lightning Damage damage, the target takes an extra 2d6 Lightning Damage damage. Moreover, the target loses any resistance to Lightning Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "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": "e4d12eab-1a45-5985-ab33-45d6fdc2275f", + "contentPack": 9999, + "name": "ElementalBaneDamageLightning" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json new file mode 100644 index 0000000000..4c41208232 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json @@ -0,0 +1,346 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolTransmutation", + "spellLevel": 4, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 18, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "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": "Minute", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "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, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionElementalBaneDamageThunder", + "conditionDefinition": "Definition:ConditionElementalBaneDamageThunder:56edcf13-9b9d-5fec-8775-d853ed33bbb9", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "PerAdditionalSlotLevel", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 1, + "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": "d26797bf421dbc2448872162f23d8fd3", + "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": "b6820f3b2273d454c97a4c29dd5e50dd", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "3e25fca5d3585174f9b7e20aca6ef3d9", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "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": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "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": "" + }, + "forceApplyZoneParticle": false, + "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, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "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": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Elemental Bane: Thunder Damage", + "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Thunder Damage damage, the target takes an extra 2d6 Thunder Damage damage. Moreover, the target loses any resistance to Thunder Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "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": "69ba1ede-f692-5c54-872b-45aadce48b1f", + "contentPack": 9999, + "name": "ElementalBaneDamageThunder" +} \ No newline at end of file diff --git a/Documentation/Spells.md b/Documentation/Spells.md index e89d483c06..6256ca8297 100644 --- a/Documentation/Spells.md +++ b/Documentation/Spells.md @@ -662,7 +662,7 @@ You create the visage of a massive green snake that appears for an instant befor # 160. - *Ashardalon's Stride* © (V,S) level 3 Transmutation [Concentration] [UB] -The billowing flames of a dragon blast from your feet, granting you explosive speed. For the duration, your speed increases by 20 feet and moving doesn't provoke opportunity attacks. When you move within 5 feet of a creature or an object that isn’t being worn or carried, it takes 1d6 fire damage from your trail of heat. A creature or object can take this damage only once during a turn.When you cast this spell using a spell slot of 4th level or higher, increase your speed by 5 feet for each spell slot level above 3rd. The spell deals an additional 1d6 fire damage for each slot level above 3rd. +The billowing flames of a dragon blast from your feet, granting you explosive speed. For the duration, your speed increases by 20 feet and moving doesn't provoke opportunity attacks. When you move within 5 feet of a creature, it takes 1d6 fire damage from your trail of heat. A creature can take this damage only once during a turn. When you cast this spell using a spell slot of 4th level or higher, increase your speed by 5 feet for each spell slot level above 3rd. The spell deals an additional 1d6 fire damage for each slot level above 3rd. # 161. - *Aura of Vitality* © (V) level 3 Evocation [Concentration] [UB] @@ -880,191 +880,195 @@ Grants you control over an enemy beast. You whisper dreadful words that cause immense mental anguish in your enemies. On a failed wisdom saving throw, they take psychic damage and become frightened until the end of their next turn, moving away from you as much as possible. On a successful save, they take half as much damage and are not frightened. -# 214. - Fire Shield (V,S) level 4 Evocation [SOL] +# 214. - *Elemental Bane* © (V,S) level 4 Transmutation [Concentration] [UB] + +Choose one creature you can see within range, and choose one of the following damage types: acid, cold, fire, lightning, or thunder. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes damage of the chosen type, the target takes an extra 2d6 damage of that type. Moreover, the target loses any resistance to that damage type until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them. + +# 215. - Fire Shield (V,S) level 4 Evocation [SOL] Grants resistance to fire or cold, and damages creatures attacking the caster with melee attacks. -# 215. - Freedom of Movement (V,S) level 4 Abjuration [SOL] +# 216. - Freedom of Movement (V,S) level 4 Abjuration [SOL] Grants immunity to movement restrictions, as well as being paralyzed or restrained. -# 216. - Giant Insect (V,S) level 4 Transmutation [Concentration] [SOL] +# 217. - Giant Insect (V,S) level 4 Transmutation [Concentration] [SOL] Conjures a giant version of a natural insect or arthropod. -# 217. - *Gravity Sinkhole* © (V,S) level 4 Evocation [UB] +# 218. - *Gravity Sinkhole* © (V,S) level 4 Evocation [UB] A 20-foot-radius sphere of crushing force forms at a point you can see within range and tugs at the creatures there. Each creature in the sphere must make a Constitution saving throw. On a failed save, the creature takes 5d10 force damage, and is pulled in a straight line toward the center of the sphere, ending in an unoccupied space as close to the center as possible. On a successful save, the creature takes half as much damage and isn't pulled. When you cast this spell using a spell slot of 5th level or higher, the damage increases by 1d10 for each slot level above 4th. -# 218. - Greater Invisibility (V,S) level 4 Illusion [Concentration] [SOL] +# 219. - Greater Invisibility (V,S) level 4 Illusion [Concentration] [SOL] Target becomes invisible for the duration, even when attacking or casting spells. -# 219. - Guardian of Faith (V) level 4 Conjuration [SOL] +# 220. - Guardian of Faith (V) level 4 Conjuration [SOL] Conjures a large spectral guardian that damages approaching enemies. -# 220. - *Guardian of Nature* © (V) level 4 Transmutation [Concentration] [UB] +# 221. - *Guardian of Nature* © (V) level 4 Transmutation [Concentration] [UB] A nature spirit answers your call and transforms you into a powerful guardian. The transformation lasts until the spell ends. You choose between a Beast or a Tree form. -# 221. - Ice Storm (V,S) level 4 Evocation [SOL] +# 222. - Ice Storm (V,S) level 4 Evocation [SOL] Causes bludgeoning and cold damage in the area, and turns the ground into difficult terrain. -# 222. - Identify Creatures (V,S) level 4 Divination [SOL] +# 223. - Identify Creatures (V,S) level 4 Divination [SOL] Reveals full bestiary knowledge for the affected creatures. -# 223. - Irresistible Performance (V) level 4 Enchantment [UB] +# 224. - Irresistible Performance (V) level 4 Enchantment [UB] You weave a song into the air, causing those who hear it to applaud its magnificence. All creatures of your choice inside a 30-foot-cube within range must make a Charisma saving throw or be forced to clap and shout until the start of your next turn. A creature that is charmed by you always fails this saving throw. A clapping creature cannot perform any actions that require their hands or mouth but can otherwise act normally. This spell has no effect on creatures that are immune to charm. -# 224. - *Mordenkainen's Faithful Hound* © (V,S) level 4 Conjuration [UB] +# 225. - *Mordenkainen's Faithful Hound* © (V,S) level 4 Conjuration [UB] You conjure a phantom watchdog in an unoccupied space that you can see within range, where it remains for the duration. The hound has Darkvision up to 60 ft, Truesight up to 80 ft, is invisible to all creatures except you and can't be harmed. During each of your turns, the hound can attempt to bite one creature within 5 feet of it that is hostile to you as a free action. The hound's attack bonus is equal to your spellcasting ability modifier + your proficiency bonus. On a hit, it deals 4d8 piercing damage. -# 225. - Phantasmal Killer (V,S) level 4 Illusion [Concentration] [SOL] +# 226. - Phantasmal Killer (V,S) level 4 Illusion [Concentration] [SOL] Causes psychic damage to the target creature with each turn, unless a saving throw is successful or the effect ends. -# 226. - Psionic Blast (V) level 4 Evocation [Concentration] [UB] +# 227. - Psionic Blast (V) level 4 Evocation [Concentration] [UB] -You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn’t pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. +You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn't pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. -# 227. - *Raulothim's Psychic Lance* © (V) level 4 Enchantment [UB] +# 228. - *Raulothim's Psychic Lance* © (V) level 4 Enchantment [UB] You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. -# 228. - *Staggering Smite* © (V) level 4 Evocation [Concentration] [UB] +# 229. - *Staggering Smite* © (V) level 4 Evocation [Concentration] [UB] The next time you hit a creature with a weapon attack during this spell's duration, your weapon pierces both body and mind, and the attack deals an extra 4d6 psychic damage to the target. The target must make a Wisdom saving throw. On a failed save, it has disadvantage on attack rolls and ability checks, and can't take reactions, until the end of its next turn. -# 229. - Stoneskin (M,V,S) level 4 Abjuration [Concentration] [SOL] +# 230. - Stoneskin (M,V,S) level 4 Abjuration [Concentration] [SOL] Grants resistance to non-magical bludgeoning, slashing, and piercing damage. -# 230. - Wall of Fire (V,S) level 4 Evocation [Concentration] [SOL] +# 231. - Wall of Fire (V,S) level 4 Evocation [Concentration] [SOL] Create a burning wall that injures creatures in or next to it. -# 231. - *Banishing Smite* © (V) level 5 Abjuration [Concentration] [UB] +# 232. - *Banishing Smite* © (V) level 5 Abjuration [Concentration] [UB] Your next hit deals additional 5d10 force damage with your weapon. Additionally, if this attack reduces the target to 50 hit points of fewer, you banish it for 1 min. -# 232. - *Circle of Power* © (V) level 5 Abjuration [Concentration] [UB] +# 233. - *Circle of Power* © (V) level 5 Abjuration [Concentration] [UB] Divine energy radiates from you, distorting and diffusing magical energy within 30 feet of you. Until the spell ends, the sphere moves with you, centered on you. For the duration, each friendly creature in the area, including you, has advantage on saving throws against spells and other magical effects. Additionally, when an affected creature succeeds on a saving throw made against a spell or magical effect that allows it to make a saving throw to take only half damage, it instead takes no damage if it succeeds on the saving throws. -# 233. - Cloudkill (V,S) level 5 Conjuration [Concentration] [SOL] +# 234. - Cloudkill (V,S) level 5 Conjuration [Concentration] [SOL] Creates an obscuring and poisonous cloud. The cloud moves every round. -# 234. - Cone of Cold (V,S) level 5 Evocation [SOL] +# 235. - Cone of Cold (V,S) level 5 Evocation [SOL] Inflicts massive cold damage in the cone of effect. -# 235. - Conjure Elemental (V,S) level 5 Conjuration [Concentration] [SOL] +# 236. - Conjure Elemental (V,S) level 5 Conjuration [Concentration] [SOL] Conjures an elemental of the chosen element that fights alongside you. If you lose concentration, the elemental remains and becomes hostile. -# 236. - Contagion (V,S) level 5 Necromancy [SOL] +# 237. - Contagion (V,S) level 5 Necromancy [SOL] Hit a creature to inflict a disease from the options. -# 237. - *Dawn* © (V,S) level 5 Evocation [Concentration] [UB] +# 238. - *Dawn* © (V,S) level 5 Evocation [Concentration] [UB] The light of dawn shines down on a location you specify within range. Until the spell ends, a 30-foot-radius, 40-foot-high cylinder of bright light glimmers there. This light is sunlight. When the cylinder appears, each creature in it must make a Constitution saving throw, taking 4d10 radiant damage on a failed save, or half as much damage on a successful one. A creature must also make this saving throw whenever it ends its turn in the cylinder. If you're within 60 feet of the cylinder, you can move it up to 60 feet as a bonus action on your turn. -# 238. - *Destructive Wave* © (V) level 5 Evocation [UB] +# 239. - *Destructive Wave* © (V) level 5 Evocation [UB] You strike the ground, creating a burst of divine energy that ripples outward from you. Each creature you choose within 30 feet of you must succeed on a Constitution saving throw or take 5d6 thunder damage, as well as 5d6 radiant or necrotic damage, and be knocked prone. A creature that succeeds on its saving throw takes half as much damage and isn't knocked prone. -# 239. - Dispel Evil and Good (V,S) level 5 Abjuration [Concentration] [SOL] +# 240. - Dispel Evil and Good (V,S) level 5 Abjuration [Concentration] [SOL] Celestial, elementals, feys, fiends, and undead have disadvantage on attacks against you. This spell also allows you to cancel hostile enchantments or dismiss extraplanar creatures hit by your attacks once. -# 240. - Dominate Person (V,S) level 5 Enchantment [Concentration] [SOL] +# 241. - Dominate Person (V,S) level 5 Enchantment [Concentration] [SOL] Grants you control over an enemy creature. -# 241. - *Far Step* © (V) level 5 Conjuration [Concentration] [UB] +# 242. - *Far Step* © (V) level 5 Conjuration [Concentration] [UB] You teleport up to 60 ft to an unoccupied space you can see. On each of your turns before the spell ends, you can use a bonus action to teleport in this way again. -# 242. - Flame Strike (V,S) level 5 Evocation [SOL] +# 243. - Flame Strike (V,S) level 5 Evocation [SOL] Conjures a burning column of fire and radiance affecting all creatures inside. -# 243. - Greater Restoration (V,S) level 5 Abjuration [SOL] +# 244. - Greater Restoration (V,S) level 5 Abjuration [SOL] Removes one detrimental condition, such as a charm or curse, or an effect that reduces an ability score or hit points. -# 244. - Hold Monster (V,S) level 5 Enchantment [Concentration] [SOL] +# 245. - Hold Monster (V,S) level 5 Enchantment [Concentration] [SOL] Paralyzes a creature unless it succeeds a WIS saving throw. No effect on undead. -# 245. - *Immolation* © (V) level 5 Evocation [Concentration] [UB] +# 246. - *Immolation* © (V) level 5 Evocation [Concentration] [UB] Flames wreathe one creature you can see within range. The target must make a Dexterity saving throw. It takes 8d6 fire damage on a failed save, or half as much damage on a successful one. On a failed save, the target also burns for the spell's duration. The burning target sheds bright light in a 30-foot radius and dim light for an additional 30 feet and takes 8d6 fire damage at the start of each of its turns. -# 246. - Insect Plague (V,S) level 5 Conjuration [Concentration] [SOL] +# 247. - Insect Plague (V,S) level 5 Conjuration [Concentration] [SOL] Summons a sphere of biting insects. -# 247. - Mantle of Thorns (V,S) level 5 Transmutation [Concentration] [UB] +# 248. - Mantle of Thorns (V,S) level 5 Transmutation [Concentration] [UB] Surround yourself with an aura of thorns. Those that start or walk through take 2d8 piercing damage. This damage scales at higher levels by 1d8 per slot. -# 248. - Mass Cure Wounds (V,S) level 5 Evocation [SOL] +# 249. - Mass Cure Wounds (V,S) level 5 Evocation [SOL] Heals up to 6 creatures. -# 249. - Mind Twist (V,S) level 5 Enchantment [SOL] +# 250. - Mind Twist (V,S) level 5 Enchantment [SOL] Causes massive psychic damage to all creatures around you, and incapacitates them if they fail their INT saving throw. -# 250. - Raise Dead (M,V,S) level 5 Necromancy [SOL] +# 251. - Raise Dead (M,V,S) level 5 Necromancy [SOL] Brings one creature back to life, up to 10 days after death. -# 251. - Sonic Boom (V,S) level 5 Evocation [UB] +# 252. - Sonic Boom (V,S) level 5 Evocation [UB] A small orb the same color as the balloon used appears at a point you choose within range then expands with a loud crack into an explosion of force. Each creature in a 30-foot radius must make a Strength saving throw. A target is pushed up to 30 feet away from the center and dealt 6d8 thunder damage on a failed save, or half as much damage and no movement on a successful one. -# 252. - *Steel Wind Strike* © (M,S) level 5 Conjuration [UB] +# 253. - *Steel Wind Strike* © (M,S) level 5 Conjuration [UB] You flourish the weapon used in the casting and then vanish to strike like the wind. Choose up to five creatures you can see within range. Make a melee spell attack against each target. On a hit, a target takes 6d10 force damage. You can then teleport to an unoccupied space you can see within 5 feet of one of the targets you hit or missed. -# 253. - *Telekinesis* © (V,S) level 5 Transmutation [Concentration] [UB] +# 254. - *Telekinesis* © (V,S) level 5 Transmutation [Concentration] [UB] You can try to move a Huge or smaller creature. Make an ability check with your spellcasting ability contested by the creature's Strength check. If you win the contest, you move the creature up to 30 feet in any direction, but not beyond the range of this spell. Until the end of your next turn, the creature is restrained in your telekinetic grip. On subsequent rounds, you can use your action to attempt to maintain your telekinetic grip on the creature by repeating the contest, or target a new creature, ending the restrained effect on the previously affected creature. -# 254. - Blade Barrier (V,S) level 6 Evocation [Concentration] [SOL] +# 255. - Blade Barrier (V,S) level 6 Evocation [Concentration] [SOL] Conjures a wall of razor sharp blades which causes 6d10 slashing damage to anyone crossing it -# 255. - Chain Lightning (V,S) level 6 Evocation [SOL] +# 256. - Chain Lightning (V,S) level 6 Evocation [SOL] Target a creature with lightning, which can arc to 3 other targets within 6 cells. -# 256. - Circle of Death (M,V,S) level 6 Necromancy [SOL] +# 257. - Circle of Death (M,V,S) level 6 Necromancy [SOL] A sphere of negative energy causes Necrotic damage from a point you choose -# 257. - Conjure Fey (V,S) level 6 Conjuration [Concentration] [SOL] +# 258. - Conjure Fey (V,S) level 6 Conjuration [Concentration] [SOL] Conjures a fey creature of challenge rating 1 to 6 to fight alongside you. If you lose concentration, the creature stays but becomes hostile. -# 258. - Disintegrate (V,S) level 6 Transmutation [SOL] +# 259. - Disintegrate (V,S) level 6 Transmutation [SOL] Causes massive force damage on the target, which can be disintegrated if reduced to 0 hit points -# 259. - Eyebite (V,S) level 6 Necromancy [Concentration] [SOL] +# 260. - Eyebite (V,S) level 6 Necromancy [Concentration] [SOL] Your eyes gain a specific property which can target a creature each turn -# 260. - *Fizban's Platinum Shield* © (M,V,S) level 6 Abjuration [Concentration] [UB] +# 261. - *Fizban's Platinum Shield* © (M,V,S) level 6 Abjuration [Concentration] [UB] You create a field of silvery light that surrounds a creature of your choice within range. The field sheds dim light out to 5 feet. While surrounded by the field, a creature gains the following benefits: • The creature has half cover. @@ -1072,51 +1076,51 @@ You create a field of silvery light that surrounds a creature of your choice wit • If the creature is subjected to an effect that allows it to make a Dexterity saving throw to take only half damage, the creature instead takes no damage if it succeeds on the saving throw, and only half damage if it fails. As a bonus action on subsequent turns, you can move the field to another creature within 60 feet of the field. -# 261. - Flash Freeze (V,S) level 6 Evocation [UB] +# 262. - Flash Freeze (V,S) level 6 Evocation [UB] You attempt to encase a creature you can see within range in a prison of solid ice. The target must make a Dexterity saving throw. On a failed save, the target takes 10d6 cold damage and becomes restrained in layers of thick ice. On a successful save, the target takes half as much damage and is not restrained. The spell can only be used on creatures up to large size. To break out, the restrained target can make a Strength check as an action against your spell save DC. On success, the target escapes and is no longer restrained. When you cast this spell using a spell slot of 7th level or higher, the cold damage increases by 2d6 for each slot level above 6th. -# 262. - Freezing Sphere (V,S) level 6 Evocation [SOL] +# 263. - Freezing Sphere (V,S) level 6 Evocation [SOL] Toss a huge ball of cold energy that explodes on impact -# 263. - Globe Of Invulnerability (V,S) level 6 Abjuration [Concentration] [SOL] +# 264. - Globe Of Invulnerability (V,S) level 6 Abjuration [Concentration] [SOL] A sphere surrounding you prevents any spell up to 5th level to affect anyone inside it. -# 264. - Harm (V,S) level 6 Necromancy [SOL] +# 265. - Harm (V,S) level 6 Necromancy [SOL] Inflicts devastating necrotic damage and reduces the maximum hit points accordingly. Cannot drop the target below 1 hit points -# 265. - Heal (V,S) level 6 Evocation [SOL] +# 266. - Heal (V,S) level 6 Evocation [SOL] Heals 70 hit points and also removes blindness and diseases -# 266. - Heroes Feast (M,V,S) level 6 Conjuration [SOL] +# 267. - Heroes Feast (M,V,S) level 6 Conjuration [SOL] Summons a feast which cures most ailments and grants immunity to poisonand being frightened, WIS save advantage, and increased maximum hitpoints -# 267. - Hilarity (V) level 6 Enchantment [Concentration] [SOL] +# 268. - Hilarity (V) level 6 Enchantment [Concentration] [SOL] Choose one target. They fall down laughing, becoming prone and incapacitated, and take psychic damage until they save at the end of one of their turns, or until the spell ends. -# 268. - Poison Wave (M,V,S) level 6 Evocation [UB] +# 269. - Poison Wave (M,V,S) level 6 Evocation [UB] A poisonous wave erupts from you, engulfing those close by. Each creature within the spell's radius must make a Constitution saving throw, taking 6d10 poison damage on a failure, or half as much damage on a successful one. A creature who fails their saving throw is also poisoned for 1 minute, and can repeat the saving throw at the end of each of its turn. When you cast this spell using a slot of 7th level or higher, the damage increases by 1d10 for each slot level above 6th. -# 269. - Ring of Blades (M,V,S) level 6 Conjuration [Concentration] [UB] +# 270. - Ring of Blades (M,V,S) level 6 Conjuration [Concentration] [UB] You raise both hands as you evoke six transparent blades around you as a bonus action. When you cast this spell, and as a bonus action on each subsequent turn, you can throw one of these blades at a creature within 60 feet from you. Make a ranged spell attack. On a hit, the target takes 4d10 force damage. When you cast this spell using a spell slot of 7th level or higher, the damage of each blade increases by 1d10 for each slot level above 6th. -# 270. - Sunbeam (V,S) level 6 Evocation [Concentration] [SOL] +# 271. - Sunbeam (V,S) level 6 Evocation [Concentration] [SOL] You conjure a line of radiance which can burn and blind creatures in the line of effect; undead and oozes save with disadvantage. The beam can be retargeted each turn -# 271. - *Tasha's Otherworldly Guise* © (M,V,S) level 6 Transmutation [Concentration] [UB] +# 272. - *Tasha's Otherworldly Guise* © (M,V,S) level 6 Transmutation [Concentration] [UB] Uttering an incantation, you draw on the magic of the Lower Planes or Upper Planes (your choice) to transform yourself. -# 272. - *Tenser's Transformation* © (V,S) level 6 Transmutation [Concentration] [UB] +# 273. - *Tenser's Transformation* © (V,S) level 6 Transmutation [Concentration] [UB] You endow yourself with endurance and martial prowess fueled by magic. Until the spell ends, you can't cast spells, and you gain the following benefits: • You gain 50 temporary hit points. If any of these remain when the spell ends, they are lost. @@ -1126,154 +1130,154 @@ You endow yourself with endurance and martial prowess fueled by magic. Until the • You can attack twice, instead of once, when you take the Attack action on your turn. Immediately after the spell ends, you must succeed on a DC 15 Constitution saving throw or suffer one level of exhaustion. -# 273. - True Seeing (V,S) level 6 Divination [SOL] +# 274. - True Seeing (V,S) level 6 Divination [SOL] A creature you touch gains True Sight for one hour -# 274. - Wall of Thorns (V,S) level 6 Conjuration [Concentration] [SOL] +# 275. - Wall of Thorns (V,S) level 6 Conjuration [Concentration] [SOL] Creates a wall of tough of needle-sharp thorns, that hurts and slows every creature in it. -# 275. - Arcane Sword (M,V,S) level 7 Evocation [Concentration] [SOL] +# 276. - Arcane Sword (M,V,S) level 7 Evocation [Concentration] [SOL] Summon a weapon that fights for you. -# 276. - Conjure Celestial (V,S) level 7 Conjuration [Concentration] [SOL] +# 277. - Conjure Celestial (V,S) level 7 Conjuration [Concentration] [SOL] Conjures a celestial creature of challenge rating 4 that fights alongside you. If you lose concentration, the creature is dismissed. -# 277. - Delayed Blast Fireball (V,S) level 7 Evocation [Concentration] [SOL] +# 278. - Delayed Blast Fireball (V,S) level 7 Evocation [Concentration] [SOL] Conjures a ball of fire that grows more powerful with time, detonating when a creature enters its space or when the spell ends. -# 278. - Divine Word (V) level 7 Evocation [SOL] +# 279. - Divine Word (V) level 7 Evocation [SOL] Utter a divine word that inflicts various negative conditions on enemies you can see, based on their HP. Also banishes all celestials, elementals, feys, and fiends if they fail their saving throws. -# 279. - *Draconic Transformation* © (M,V,S) level 7 Transmutation [Concentration] [UB] +# 280. - *Draconic Transformation* © (M,V,S) level 7 Transmutation [Concentration] [UB] With a roar, you draw on the magic of dragons to transform yourself, taking on draconic features. You gain the following benefits until the spell ends: • You have blindsight with a range of 30 feet. • When you cast this spell, and as a bonus action on subsequent turns for the duration, you can exhale shimmering energy in a 60-foot cone. Each creature in that area must make a Dexterity saving throw, taking 6d8 force damage on a failed save, or half as much damage on a successful one. • Incorporeal wings sprout from your back, giving you a flying speed of 60 feet. -# 280. - Finger of Death (V,S) level 7 Necromancy [SOL] +# 281. - Finger of Death (V,S) level 7 Necromancy [SOL] Send negative energy coursing through a creature within range. -# 281. - Fire Storm (V,S) level 7 Evocation [SOL] +# 282. - Fire Storm (V,S) level 7 Evocation [SOL] Causes a wide wall of roaring flames to burst up wherever you choose within range. -# 282. - Gravity Slam (V,S) level 7 Transmutation [SOL] +# 283. - Gravity Slam (V,S) level 7 Transmutation [SOL] Increase gravity to slam everyone in a specific area onto the ground. -# 283. - Prismatic Spray (V,S) level 7 Evocation [SOL] +# 284. - Prismatic Spray (V,S) level 7 Evocation [SOL] Each creature within the cone of effect is randomly affected by one or two (roll 8 on d8) rays with the following effects: -# 284. - Regenerate (V,S) level 7 Transmutation [SOL] +# 285. - Regenerate (V,S) level 7 Transmutation [SOL] Touch a creature and stimulate its natural healing ability. -# 285. - Resurrection (M,V,S) level 7 Necromancy [SOL] +# 286. - Resurrection (M,V,S) level 7 Necromancy [SOL] Brings one creature back to life, up to 100 years after death. -# 286. - *Reverse Gravity* © (V,S) level 7 Transmutation [Concentration] [UB] +# 287. - *Reverse Gravity* © (V,S) level 7 Transmutation [Concentration] [UB] This spell reverses gravity in a 50-foot-radius, 100-foot-high cylinder centered on a point within range. -# 287. - Symbol (V,S) level 7 Abjuration [SOL] +# 288. - Symbol (V,S) level 7 Abjuration [SOL] Inscribe a glyph on a surface. When an enemy starts its turn in the area or enters it, the glyph's effect is applied in a sphere with a 12-cell radius. -# 288. - Divine Blade (V,S) level 8 Evocation [Concentration] [SOL] +# 289. - Divine Blade (V,S) level 8 Evocation [Concentration] [SOL] A glowing blade of pure energy springs from your hand. On a hit, the target takes 6d8 radiant damage and must roll a Wisdom saving throw to avoid being stunned until the end of its next turn. -# 289. - Dominate Monster (V,S) level 8 Enchantment [Concentration] [SOL] +# 290. - Dominate Monster (V,S) level 8 Enchantment [Concentration] [SOL] Grants you control over an enemy creature of any type. -# 290. - Earthquake (V,S) level 8 Evocation [Concentration] [SOL] +# 291. - Earthquake (V,S) level 8 Evocation [Concentration] [SOL] You create a seismic disturbance that violently shakes the ground and the creatures standing on it for the duration of the spell. -# 291. - Feeblemind (V,S) level 8 Enchantment [SOL] +# 292. - Feeblemind (V,S) level 8 Enchantment [SOL] You blast the mind of one creature, attempting to shatter its intellect and personality. The target takes 4d6 psychic damage and must make an Intelligence saving throw. On a failed save, the creature's Intelligence, Charisma and Wisdom scores become 1 and it is unable to cast spells. These effects last for 1 minute. -# 292. - Holy Aura (V,S) level 8 Abjuration [Concentration] [SOL] +# 293. - Holy Aura (V,S) level 8 Abjuration [Concentration] [SOL] Allies within 6 cells of you when you cast Holy Aura gain advantage on all saving throws, and other creatures have disadvantage on attack rolls against them until the spell ends. In addition, when a fiend or an undead hits an affected creature with a melee attack, they must succeed on a Constitution saving throw or be blinded until the spell ends. -# 293. - Incendiary Cloud (V,S) level 8 Conjuration [Concentration] [SOL] +# 294. - Incendiary Cloud (V,S) level 8 Conjuration [Concentration] [SOL] A cloud of smoke appears in a sphere with a 4-cell radius. The cloud damages each creature inside it, and moves away from you each turn until the end of the spell's duration or until a moderate wind disperses the cloud. -# 294. - *Maddening Darkness* © (V) level 8 Evocation [Concentration] [UB] +# 295. - *Maddening Darkness* © (V) level 8 Evocation [Concentration] [UB] Magical darkness spreads from a point you choose within range to fill a 60-foot-radius sphere until the spell ends. Shrieks, gibbering, and mad laughter can be heard within the sphere. On activation, and whenever a creature ends its turn in the sphere, it must make a Wisdom saving throw, taking 6d8 psychic damage on a failed save, or half as much damage on a successful one. -# 295. - Maze (V,S) level 8 Abjuration [Concentration] [SOL] +# 296. - Maze (V,S) level 8 Abjuration [Concentration] [SOL] You banish a creature that you can see within range into a labyrinthine demiplane. The target remains there for the spell's duration or until it escapes the maze. -# 296. - *Mind Blank* © (V,S) level 8 Transmutation [UB] +# 297. - *Mind Blank* © (V,S) level 8 Transmutation [UB] Until the spell ends, one willing creature you touch is immune to psychic damage, any effect that would sense its emotions or read its thoughts, divination spells, and the charmed condition. -# 297. - Power Word Stun (V) level 8 Enchantment [SOL] +# 298. - Power Word Stun (V) level 8 Enchantment [SOL] Overwhelm the mind of a creature that has 150 hit points or fewer, leaving it stunned. -# 298. - Spell Ward (V,S) level 8 Abjuration [Concentration] [SOL] +# 299. - Spell Ward (V,S) level 8 Abjuration [Concentration] [SOL] Creates a mobile globe that is impenetrable to enemy spells cast from outside it. -# 299. - Sunburst (V,S) level 8 Evocation [SOL] +# 300. - Sunburst (V,S) level 8 Evocation [SOL] Brilliant sunlight blazes in a sphere with a 12-cell radius. Each creature that fails a Constitution saving throw takes radiant damage and is blinded for 1 minute. Any darkness created by a spell in the area is dispelled. -# 300. - Thunderstorm (V,S) level 8 Transmutation [SOL] +# 301. - Thunderstorm (V,S) level 8 Transmutation [SOL] You create a blast of thunder in a sphere that causes thunder and lightning damage to everyone, and can blind or stun those who fail a CON saving throw. -# 301. - Wild Shapes (V,S) level 8 Transmutation [Concentration] [SOL] +# 302. - Wild Shapes (V,S) level 8 Transmutation [Concentration] [SOL] Turns other creatures in to beasts for one day. -# 302. - *Foresight* © (V,S) level 9 Transmutation [UB] +# 303. - *Foresight* © (V,S) level 9 Transmutation [UB] 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. -# 303. - *Mass Heal* © (V,S) level 9 Transmutation [UB] +# 304. - *Mass Heal* © (V,S) level 9 Transmutation [UB] 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. -# 304. - *Meteor Swarm* © (V,S) level 9 Transmutation [UB] +# 305. - *Meteor Swarm* © (V,S) level 9 Transmutation [UB] 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. -# 305. - *Power Word Heal* © (V,S) level 9 Enchantment [UB] +# 306. - *Power Word Heal* © (V,S) level 9 Enchantment [UB] 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. -# 306. - *Power Word Kill* © (V,S) level 9 Transmutation [UB] +# 307. - *Power Word Kill* © (V,S) level 9 Transmutation [UB] 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. -# 307. - *Shapechange* © (M,V,S) level 9 Transmutation [Concentration] [UB] +# 308. - *Shapechange* © (M,V,S) level 9 Transmutation [Concentration] [UB] You assume the form of a different creature for the duration. The new form can be of any creature with a challenge rating equal to your level or lower. -# 308. - *Time Stop* © (V) level 9 Transmutation [UB] +# 309. - *Time Stop* © (V) level 9 Transmutation [UB] You briefly stop the flow of time for everyone but yourself. No time passes for other creatures, while you take 1d4 + 1 turns in a row, during which you can use actions and move as normal. -# 309. - *Weird* © (V,S) level 9 Illusion [Concentration] [UB] +# 310. - *Weird* © (V,S) level 9 Illusion [Concentration] [UB] Drawing on the deepest fears of a group of creatures, you create illusory creatures in their minds, visible only to them. Each enemy in a 30-foot-radius sphere centered on a point of your choice within range must make a Wisdom saving throw. On a failed save, a creature becomes frightened for the duration. The illusion calls on the creature's deepest fears, manifesting its worst nightmares as an implacable threat. At the end of each of the frightened creature's turns, it must succeed on a Wisdom saving throw or take 4d10 psychic damage. On a successful save, the spell ends for that creature. diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index 50b7b93b96..ae0e45ba98 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -1,6 +1,6 @@ 1.5.97.14: -- added Ashardalon's Stride spell +- added Ashardalon's Stride, and Elemental Bane spells - fixed Domain Tempest wrath of the storm feature not consuming a reaction - fixed Mind Sharpener infusion not providing advantage on concentration checks - fixed Pulse Wave spell to offer push/pull options as well as increase distance on upcasting diff --git a/SolastaUnfinishedBusiness/Displays/_ModUi.cs b/SolastaUnfinishedBusiness/Displays/_ModUi.cs index 5b6b54e460..7217211b20 100644 --- a/SolastaUnfinishedBusiness/Displays/_ModUi.cs +++ b/SolastaUnfinishedBusiness/Displays/_ModUi.cs @@ -66,6 +66,7 @@ internal static class ModUi "DomainSmith", "DraconicTransformation", "EarthTremor", + "ElementalBane", "ElementalInfusion", "ElementalWeapon", "EnduringSting", diff --git a/SolastaUnfinishedBusiness/Models/SpellsContext.cs b/SolastaUnfinishedBusiness/Models/SpellsContext.cs index 3d849934d3..85eac75768 100644 --- a/SolastaUnfinishedBusiness/Models/SpellsContext.cs +++ b/SolastaUnfinishedBusiness/Models/SpellsContext.cs @@ -331,6 +331,8 @@ internal static void LateLoad() RegisterSpell(BlessingOfRime, 0, SpellListBard, SpellListDruid, SpellListRanger); RegisterSpell(BuildBrainBulwark(), 0, SpellListBard, SpellListSorcerer, SpellListWarlock, SpellListWizard, spellListInventorClass); + RegisterSpell(BuildElementalBane(), 0, SpellListDruid, SpellListWarlock, SpellListWizard, + spellListInventorClass); RegisterSpell(BuildFaithfulHound(), 0, SpellListWizard, spellListInventorClass); RegisterSpell(BuildForestGuardian(), 0, SpellListDruid, SpellListRanger); RegisterSpell(BuildGravitySinkhole(), 0, SpellListWizard); diff --git a/SolastaUnfinishedBusiness/Patches/RulesetActorPatcher.cs b/SolastaUnfinishedBusiness/Patches/RulesetActorPatcher.cs index 8900b66354..24caa395b3 100644 --- a/SolastaUnfinishedBusiness/Patches/RulesetActorPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/RulesetActorPatcher.cs @@ -648,11 +648,6 @@ private static void EnumerateIDamageAffinityProvider( } } - if (actor is not RulesetCharacterHero hero) - { - return; - } - //PATCH: allow to remove damage affinities if necessary var featuresActor = actor.GetSubFeaturesByType(); @@ -661,6 +656,11 @@ private static void EnumerateIDamageAffinityProvider( feature.ModifyDamageAffinity(actor, caster, featuresToBrowse); } + if (actor is not RulesetCharacterHero hero) + { + return; + } + //PATCH: add `IDamageAffinityProvider` from dynamic item properties //fixes game not applying damage reductions from dynamic item properties //used for Inventor's Resistant Armor infusions diff --git a/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs b/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs index 486977a831..e497e0a459 100644 --- a/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs +++ b/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs @@ -1189,6 +1189,16 @@ public static byte[] EldritchWard { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] ElementalBane { + get { + object obj = ResourceManager.GetObject("ElementalBane", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/SolastaUnfinishedBusiness/Properties/Resources.resx b/SolastaUnfinishedBusiness/Properties/Resources.resx index 6e299ef9df..72b2ba7b91 100644 --- a/SolastaUnfinishedBusiness/Properties/Resources.resx +++ b/SolastaUnfinishedBusiness/Properties/Resources.resx @@ -157,6 +157,11 @@ PublicKeyToken=b77a5c561934e089 + + ../Resources/Spells/ElementalBane.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + ../Resources/Spells/BorrowedKnowledge.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/SolastaUnfinishedBusiness/Resources/Spells/ElementalBane.png b/SolastaUnfinishedBusiness/Resources/Spells/ElementalBane.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d2762996ec921caa47bf6e2b91a25772e003a5 GIT binary patch literal 13516 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 + + foreach (var (damageType, magicEffect) in DamagesAndEffects) { - var rulesetCharacter = target.RulesetCharacter; + if (damageType == DamageTypePoison) + { + continue; + } - if (rulesetCharacter.TemporaryHitPoints == 0) + var condition = ConditionDefinitionBuilder + .Create($"Condition{NAME}{damageType}") + .SetGuiPresentation($"Condition{NAME}", Category.Condition, ConditionRestrictedInsideMagicCircle) + .SetPossessive() + .SetConditionType(ConditionType.Detrimental) + .AddCustomSubFeatures(new CustomBehaviorElementalBane(damageType)) + .AddToDB(); + + var damageTitle = Gui.Localize($"Tooltip/&Tag{damageType}Title"); + var title = Gui.Format("Spell/&ElementalBaneSpecificTitle", damageTitle); + var description = Gui.Format("Spell/&ElementalBaneSpecificDescription", damageTitle); + + var spell = SpellDefinitionBuilder + .Create(NAME + damageType) + .SetGuiPresentation(title, description) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) + .SetSpellLevel(4) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.Mundane) + .SetVerboseComponent(true) + .SetSomaticComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetRequiresConcentration(true) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Minute, 1) + .SetTargetingData(Side.Enemy, RangeType.Distance, 18, TargetType.IndividualsUnique) + .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, + EffectDifficultyClassComputation.SpellCastingFeature) + .SetEffectForms( + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.Negates) + .SetConditionForm(condition, ConditionForm.ConditionOperation.Add) + .Build()) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, + additionalTargetsPerIncrement: 1) + .SetParticleEffectParameters(magicEffect) + .Build()) + .AddToDB(); + + subSpells.Add(spell); + } + + return SpellDefinitionBuilder + .Create(NAME) + .SetGuiPresentation(NAME, Category.Spell, sprite) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) + .SetSpellLevel(4) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.Mundane) + .SetVerboseComponent(true) + .SetSomaticComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetRequiresConcentration(true) + .SetSubSpells([..subSpells]) + // UI Only + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Minute, 1) + .SetTargetingData(Side.Enemy, RangeType.Distance, 18, TargetType.IndividualsUnique) + .SetSavingThrowData(false, AttributeDefinitions.Constitution, false, + EffectDifficultyClassComputation.SpellCastingFeature) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, + additionalTargetsPerIncrement: 1) + .Build()) + .AddToDB(); + } + + private sealed class CustomBehaviorElementalBane(string damageType) + : IModifyDamageAffinity, IMagicEffectBeforeHitConfirmedOnMe, IPhysicalAttackBeforeHitConfirmedOnMe + { + private const string Tag = "ElementalBane"; + private readonly EffectForm _damageEffectForm = EffectFormBuilder.DamageForm(damageType, 2, DieType.D6); + + public IEnumerator OnMagicEffectBeforeHitConfirmedOnMe( + GameLocationBattleManager battleManager, + GameLocationCharacter attacker, + GameLocationCharacter defender, + ActionModifier actionModifier, + RulesetEffect rulesetEffect, + List actualEffectForms, + bool firstTarget, bool criticalHit) + { + if (!defender.OnceInMyTurnIsValid(Tag) || + !actualEffectForms.Any(x => + x.FormType == EffectForm.EffectFormType.Damage && + x.damageForm.DamageType == damageType)) { - rulesetCharacter.RemoveAllConditionsOfCategoryAndType( - AttributeDefinitions.TagEffect, "ConditionBlessingOfRime"); + yield break; } - yield break; + defender.UsedSpecialFeatures.TryAdd(Tag, 0); + actualEffectForms.Add(_damageEffectForm); } - public void OnSavingThrowInitiated( - RulesetCharacter caster, - RulesetCharacter defender, - ref int saveBonus, - ref string abilityScoreName, - BaseDefinition sourceDefinition, - List modifierTrends, - List advantageTrends, - ref int rollModifier, - ref int saveDC, - ref bool hasHitVisual, - RollOutcome outcome, - int outcomeDelta, - List effectForms) + public void ModifyDamageAffinity(RulesetActor defender, RulesetActor attacker, List features) { - if (abilityScoreName == AttributeDefinitions.Constitution) + features.RemoveAll(x => + x is IDamageAffinityProvider damageAffinityProvider && + damageAffinityProvider.DamageType == damageType && + damageAffinityProvider.DamageAffinityType is DamageAffinityType.Resistance); + } + + public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnMe( + GameLocationBattleManager battleManager, + GameLocationCharacter attacker, + GameLocationCharacter defender, + ActionModifier actionModifier, + RulesetAttackMode attackMode, + bool rangedAttack, + AdvantageType advantageType, + List actualEffectForms, + bool firstTarget, + bool criticalHit) + { + if (!defender.OnceInMyTurnIsValid(Tag) || + !actualEffectForms.Any(x => + x.FormType == EffectForm.EffectFormType.Damage && + x.damageForm.DamageType == damageType)) { - advantageTrends.Add( - new TrendInfo(1, FeatureSourceType.Spell, spellDefinition.Name, spellDefinition)); + yield break; } + + defender.UsedSpecialFeatures.TryAdd(Tag, 0); + actualEffectForms.Add(_damageEffectForm); } } @@ -605,6 +667,92 @@ public void OnSavingThrowInitiated( #endregion + #region Blessing of Rime + + internal static SpellDefinition BuildBlessingOfRime() + { + const string NAME = "BlessingOfRime"; + + var conditionBlessingOfRime = ConditionDefinitionBuilder + .Create($"Condition{NAME}") + .SetGuiPresentation(Category.Condition, ConditionBlessed) + .SetPossessive() + .AddToDB(); + + var spell = SpellDefinitionBuilder + .Create(NAME) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.BlessingOfRime, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(4) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.Mundane) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Buff) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Hour, 1) + .SetTargetingData(Side.Ally, RangeType.Distance, 6, TargetType.IndividualsUnique, 3) + .SetEffectAdvancement(EffectIncrementMethod.PerAdditionalSlotLevel, additionalDicePerIncrement: 1) + .SetEffectForms( + EffectFormBuilder.ConditionForm(conditionBlessingOfRime), + EffectFormBuilder + .Create() + .SetTempHpForm(0, DieType.D8, 3) + .Build()) + .SetParticleEffectParameters(RayOfFrost) + .SetEffectEffectParameters(PowerDomainElementalIceLance) + .Build()) + .AddToDB(); + + conditionBlessingOfRime.AddCustomSubFeatures(new CustomBehaviorBlessingOfRime(spell)); + + return spell; + } + + private sealed class CustomBehaviorBlessingOfRime( + // ReSharper disable once SuggestBaseTypeForParameterInConstructor + SpellDefinition spellDefinition) : IActionFinishedByContender, IRollSavingThrowInitiated + { + public IEnumerator OnActionFinishedByContender(CharacterAction characterAction, GameLocationCharacter target) + { + var rulesetCharacter = target.RulesetCharacter; + + if (rulesetCharacter.TemporaryHitPoints == 0) + { + rulesetCharacter.RemoveAllConditionsOfCategoryAndType( + AttributeDefinitions.TagEffect, "ConditionBlessingOfRime"); + } + + yield break; + } + + public void OnSavingThrowInitiated( + RulesetCharacter caster, + RulesetCharacter defender, + ref int saveBonus, + ref string abilityScoreName, + BaseDefinition sourceDefinition, + List modifierTrends, + List advantageTrends, + ref int rollModifier, + ref int saveDC, + ref bool hasHitVisual, + RollOutcome outcome, + int outcomeDelta, + List effectForms) + { + if (abilityScoreName == AttributeDefinitions.Constitution) + { + advantageTrends.Add( + new TrendInfo(1, FeatureSourceType.Spell, spellDefinition.Name, spellDefinition)); + } + } + } + + #endregion + #region Forest Guardian internal static SpellDefinition BuildForestGuardian() diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt index 4e42bc4972..c92793e8b3 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=Sie haben einen Vorteil beim Konst Condition/&ConditionBlessingOfRimeTitle=Segen von Rime Condition/&ConditionBrainBulwarkDescription=Sie verfügen über Resistenz gegen psychischen Schaden sowie über Immunität gegen die Zustände „Bezaubert“, „Verängstigt“, „Angst“, „Geist dominiert“ und „Geist kontrolliert“. Condition/&ConditionBrainBulwarkTitle=Gehirnbollwerk +Condition/&ConditionElementalBaneDescription=Beim ersten Mal in jeder Runde, wenn du {0} Schaden erleidest, erleidest du zusätzlich 2W6 {0} Schaden. Darüber hinaus verlierst du jegliche Resistenz gegen {0} Schaden, bis der Zauber endet. +Condition/&ConditionElementalBaneTitle=Elementarfluch: {0} Condition/&ConditionIrresistiblePerformanceDescription=Sie können keine Aktionen ausführen, die Ihre Hände oder Ihren Mund erfordern, können sich aber ansonsten normal verhalten. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionStaggeringSmiteEnemyDescription=Du wirst von psychischem Schaden getroffen. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=Du beschwörst einen kühlen Wind, der den Schm Spell/&BlessingOfRimeTitle=Segen von Rime Spell/&BrainBulwarkDescription=Für die Dauer haben Sie oder eine willige Kreatur, die Sie in Reichweite sehen können, Widerstand gegen psychischen Schaden sowie Immunität gegen die Zustände „Bezaubert“, „Verängstigt“, „Furcht“, „Geist dominiert“ und „Geist kontrolliert“. Spell/&BrainBulwarkTitle=Gehirnbollwerk +Spell/&ElementalBaneDescription=Wähle eine Kreatur in Reichweite, die du sehen kannst, und wähle eine der folgenden Schadensarten: Säure, Kälte, Feuer, Blitz oder Donner. Das Ziel muss einen Konstitutionsrettungswurf bestehen oder ist für die Dauer des Zaubers von diesem betroffen. Beim ersten Mal in jeder Runde, wenn das betroffene Ziel Schaden der gewählten Art erleidet, erleidet das Ziel zusätzlich 2W6 Schaden dieser Art. Darüber hinaus verliert das Ziel jegliche Resistenz gegen diese Schadensart, bis der Zauber endet. Wenn du diesen Zauber mit einem Zauberplatz der 5. Stufe oder höher wirkst, kannst du für jede Stufe über der 4. eine zusätzliche Kreatur als Ziel wählen. Die Kreaturen müssen sich innerhalb von 30 Fuß voneinander befinden, wenn du sie als Ziel wählst. +Spell/&ElementalBaneSpecificDescription=Wähle eine Kreatur in Reichweite, die du sehen kannst. Das Ziel muss einen Konstitutionsrettungswurf bestehen oder ist für die Dauer des Zaubers von diesem betroffen. Beim ersten Mal in jeder Runde, wenn das betroffene Ziel {0} Schaden erleidet, erleidet das Ziel zusätzlich 2W6 {0} Schaden. Darüber hinaus verliert das Ziel jegliche Resistenz gegen {0} Schaden, bis der Zauber endet. Wenn du diesen Zauber mit einem Zauberplatz der 5. Stufe oder höher wirkst, kannst du für jede Stufe über der 4. eine zusätzliche Kreatur als Ziel wählen. Die Kreaturen müssen sich innerhalb von 30 Fuß voneinander befinden, wenn du sie als Ziel wählst. +Spell/&ElementalBaneSpecificTitle=Elementarfluch: {0} +Spell/&ElementalBaneTitle=Elementarfluch Spell/&FaithfulHoundDescription=Sie beschwören einen Phantomwächter in einem unbesetzten Raum, den Sie in Reichweite sehen können, wo er für die Dauer verbleibt. Der Hund verfügt über Dunkelsicht bis zu 60 Fuß und Wahrsicht bis zu 80 Fuß, ist für alle Kreaturen außer dir unsichtbar und kann nicht verletzt werden. In jedem deiner Züge kann der Hund als Freie Aktion versuchen, eine dir feindlich gesinnte Kreatur im Umkreis von 1,5 m um ihn herum zu beißen. Der Angriffsbonus des Hundes entspricht Ihrem Zauberfähigkeitsmodifikator + Ihrem Fähigkeitsbonus. Bei einem Treffer verursacht es 4W8 Stichschaden. Spell/&FaithfulHoundTitle=Mordenkainens treuer Hund Spell/&ForestGuardianDescription=Ein Naturgeist beantwortet Ihren Ruf und verwandelt Sie in einen mächtigen Wächter. Die Verwandlung dauert bis zum Ende des Zaubers. Sie wählen zwischen einer Biest- oder einer Baumform. diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt index 49a43f0ed1..a0b3b48a51 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=You have advantage on Constitution Condition/&ConditionBlessingOfRimeTitle=Blessing of Rime Condition/&ConditionBrainBulwarkDescription=You have resistance to psychic damage, as well as Immunity to the Charmed, Frightened, Fear, Mind dominated and Mind controlled conditions. Condition/&ConditionBrainBulwarkTitle=Brain Bulwark +Condition/&ConditionElementalBaneDescription=The first time each turn you take {0} damage, you take an extra 2d6 {0} damage. Moreover, You lose any resistance to {0} damage until the spell ends. +Condition/&ConditionElementalBaneTitle=Elemental Bane: {0} Condition/&ConditionIrresistiblePerformanceDescription=You cannot perform any actions that require your hands or mouth but can otherwise act normally. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionStaggeringSmiteEnemyDescription=You're hit by psychic damage. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=You summon a chill wind that numbs the pain of Spell/&BlessingOfRimeTitle=Blessing of Rime Spell/&BrainBulwarkDescription=For the duration, you or one willing creature you can see within range has resistance to psychic damage, as well as Immunity to the Charmed, Frightened, Fear, Mind dominated and Mind controlled conditions. Spell/&BrainBulwarkTitle=Brain Bulwark +Spell/&ElementalBaneDescription=Choose one creature you can see within range, and choose one of the following damage types: acid, cold, fire, lightning, or thunder. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes damage of the chosen type, the target takes an extra 2d6 damage of that type. Moreover, the target loses any resistance to that damage type until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them. +Spell/&ElementalBaneSpecificDescription=Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes {0} damage, the target takes an extra 2d6 {0} damage. Moreover, the target loses any resistance to {0} damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them. +Spell/&ElementalBaneSpecificTitle=Elemental Bane: {0} +Spell/&ElementalBaneTitle=Elemental Bane Spell/&FaithfulHoundDescription=You conjure a phantom watchdog in an unoccupied space that you can see within range, where it remains for the duration. The hound has Darkvision up to 60 ft, Truesight up to 80 ft, is invisible to all creatures except you and can't be harmed. During each of your turns, the hound can attempt to bite one creature within 5 feet of it that is hostile to you as a free action. The hound's attack bonus is equal to your spellcasting ability modifier + your proficiency bonus. On a hit, it deals 4d8 piercing damage. Spell/&FaithfulHoundTitle=Mordenkainen's Faithful Hound Spell/&ForestGuardianDescription=A nature spirit answers your call and transforms you into a powerful guardian. The transformation lasts until the spell ends. You choose between a Beast or a Tree form. diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt index 1069187532..3440a8dd84 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=Tienes ventaja en la tirada de sal Condition/&ConditionBlessingOfRimeTitle=Bendición de la rima Condition/&ConditionBrainBulwarkDescription=Tienes resistencia al daño psíquico, así como inmunidad a las condiciones Encantado, Asustado, Miedo, Dominado por la mente y controlado por la mente. Condition/&ConditionBrainBulwarkTitle=Baluarte cerebral +Condition/&ConditionElementalBaneDescription=La primera vez que cada turno recibes {0} daño, recibes 2d6 {0} de daño adicional. Además, pierdes toda resistencia al daño {0} hasta que finaliza el hechizo. +Condition/&ConditionElementalBaneTitle=Perdición elemental: {0} Condition/&ConditionIrresistiblePerformanceDescription=No puede realizar ninguna acción que requiera el uso de las manos o la boca, pero por lo demás puede actuar con normalidad. Condition/&ConditionIrresistiblePerformanceTitle=Dinah Moe Humm Condition/&ConditionStaggeringSmiteEnemyDescription=Estás golpeado por daño psíquico. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=Invocas un viento helado que adormece el dolor Spell/&BlessingOfRimeTitle=Bendición de la rima Spell/&BrainBulwarkDescription=Mientras dure, tú o una criatura voluntaria que puedas ver dentro del alcance tienes resistencia al daño psíquico, así como inmunidad a las condiciones Encantado, Asustado, Miedo, Dominado por la mente y controlado por la mente. Spell/&BrainBulwarkTitle=Baluarte cerebral +Spell/&ElementalBaneDescription=Elige una criatura que puedas ver dentro del alcance y elige uno de los siguientes tipos de daño: ácido, frío, fuego, relámpago o trueno. El objetivo debe superar una tirada de salvación de Constitución o verse afectado por el hechizo mientras dure. La primera vez que cada turno el objetivo afectado recibe daño del tipo elegido, el objetivo recibe 2d6 daños adicionales de ese tipo. Además, el objetivo pierde cualquier resistencia a ese tipo de daño hasta que finaliza el hechizo. Cuando lanzas este hechizo usando un espacio de hechizo de 5º nivel o superior, puedes apuntar a una criatura adicional por cada nivel de espacio por encima del 4º. Las criaturas deben estar a 30 pies de distancia entre sí cuando las apuntes. +Spell/&ElementalBaneSpecificDescription=Elige una criatura que puedas ver dentro del alcance. El objetivo debe superar una tirada de salvación de Constitución o verse afectado por el hechizo mientras dure. La primera vez que cada turno el objetivo afectado sufre {0} de daño, el objetivo sufre 2d6 {0} de daño adicional. Además, el objetivo pierde cualquier resistencia al daño {0} hasta que finalice el hechizo. Cuando lanzas este hechizo usando un espacio de hechizo de 5º nivel o superior, puedes apuntar a una criatura adicional por cada nivel de espacio por encima del 4º. Las criaturas deben estar a 30 pies de distancia entre sí cuando las apuntes. +Spell/&ElementalBaneSpecificTitle=Perdición elemental: {0} +Spell/&ElementalBaneTitle=Perdición elemental Spell/&FaithfulHoundDescription=Conjuras un perro guardián fantasma en un espacio desocupado que puedes ver dentro del alcance, donde permanece mientras dura. El sabueso tiene Darkvision de hasta 60 pies, Truesight de hasta 80 pies, es invisible para todas las criaturas excepto para ti y no puede sufrir daño. Durante cada uno de tus turnos, el perro puede intentar morder a una criatura a 5 pies de él que sea hostil hacia ti como acción gratuita. El bono de ataque del perro es igual a tu modificador de habilidad de lanzamiento de hechizos + tu bono de competencia. Con un golpe, causa 4d8 de daño perforante. Spell/&FaithfulHoundTitle=El perro fiel de Mordenkainen Spell/&ForestGuardianDescription=Un espíritu de la naturaleza responde a tu llamado y te transforma en un poderoso guardián. La transformación dura hasta que termina el hechizo. Eliges entre una forma de Bestia o Árbol. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt index 4ed7d64c47..6377ef4e2e 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=Vous avez un avantage au jet de sa Condition/&ConditionBlessingOfRimeTitle=Bénédiction de Rime Condition/&ConditionBrainBulwarkDescription=Vous avez une résistance aux dégâts psychiques, ainsi qu'une immunité aux conditions Charmé, Effrayé, Peur, Dominé par l'Esprit et Contrôlé par l'Esprit. Condition/&ConditionBrainBulwarkTitle=Rempart cérébral +Condition/&ConditionElementalBaneDescription=La première fois à chaque tour que vous subissez {0} dégâts, vous subissez 2d6 {0} dégâts supplémentaires. De plus, vous perdez toute résistance à {0} dégâts jusqu'à la fin du sort. +Condition/&ConditionElementalBaneTitle=Fléau élémentaire : {0} Condition/&ConditionIrresistiblePerformanceDescription=Vous ne pouvez effectuer aucune action nécessitant vos mains ou votre bouche, mais vous pouvez autrement agir normalement. Condition/&ConditionIrresistiblePerformanceTitle=Dinah Moe Humm Condition/&ConditionStaggeringSmiteEnemyDescription=Vous êtes touché par des dégâts psychiques. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=Vous invoquez un vent glacial qui engourdit la Spell/&BlessingOfRimeTitle=Bénédiction de Rime Spell/&BrainBulwarkDescription=Pendant toute la durée, vous ou une créature volontaire que vous pouvez voir à portée avez une résistance aux dégâts psychiques, ainsi qu'une immunité aux conditions Charmé, Effrayé, Peur, Dominé par l'Esprit et Contrôlé par l'Esprit. Spell/&BrainBulwarkTitle=Rempart cérébral +Spell/&ElementalBaneDescription=Choisissez une créature que vous pouvez voir à portée et choisissez l'un des types de dégâts suivants : acide, froid, feu, foudre ou tonnerre. La cible doit réussir un jet de sauvegarde de Constitution ou être affectée par le sort pendant sa durée. La première fois à chaque tour, la cible affectée subit des dégâts du type choisi, la cible subit 2d6 dégâts supplémentaires de ce type. De plus, la cible perd toute résistance à ce type de dégâts jusqu'à la fin du sort. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 5 ou supérieur, vous pouvez cibler une créature supplémentaire pour chaque niveau d'emplacement supérieur au 4. Les créatures doivent être à moins de 9 mètres les unes des autres lorsque vous les ciblez. +Spell/&ElementalBaneSpecificDescription=Choisissez une créature que vous pouvez voir à portée. La cible doit réussir un jet de sauvegarde de Constitution ou être affectée par le sort pendant sa durée. La première fois à chaque tour, la cible affectée subit {0} dégâts, la cible subit 2d6 {0} dégâts supplémentaires. De plus, la cible perd toute résistance à {0} dégâts jusqu'à la fin du sort. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 5 ou supérieur, vous pouvez cibler une créature supplémentaire pour chaque niveau d'emplacement supérieur au 4. Les créatures doivent être à moins de 9 mètres les unes des autres lorsque vous les ciblez. +Spell/&ElementalBaneSpecificTitle=Fléau élémentaire : {0} +Spell/&ElementalBaneTitle=Fléau élémentaire Spell/&FaithfulHoundDescription=Vous invoquez un chien de garde fantôme dans un espace inoccupé que vous pouvez voir à portée, où il reste pendant toute la durée. Le chien a une vision dans le noir jusqu'à 60 pieds, une vision vraie jusqu'à 80 pieds, est invisible pour toutes les créatures sauf vous et ne peut pas être blessé. Durant chacun de vos tours, le chien peut tenter de mordre une créature à moins de 1,50 mètre de lui qui vous est hostile par une action libre. Le bonus d'attaque du chien est égal à votre modificateur de capacité de lancement de sorts + votre bonus de maîtrise. En cas de coup, il inflige 4d8 dégâts perforants. Spell/&FaithfulHoundTitle=Le chien fidèle de Mordenkainen Spell/&ForestGuardianDescription=Un esprit de la nature répond à votre appel et vous transforme en un puissant gardien. La transformation dure jusqu'à la fin du sort. Vous choisissez entre une forme Bête ou Arbre. diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt index 68fda1449e..f6c6d3398d 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=Hai vantaggio al tiro salvezza su Condition/&ConditionBlessingOfRimeTitle=Benedizione di Rime Condition/&ConditionBrainBulwarkDescription=Hai resistenza ai danni psichici, così come immunità alle condizioni Ammaliato, Spaventato, Paura, Dominato dalla Mente e Controllato dalla Mente. Condition/&ConditionBrainBulwarkTitle=Baluardo cerebrale +Condition/&ConditionElementalBaneDescription=La prima volta che in ogni turno subisci {0} danni, subisci 2d6 {0} danni aggiuntivi. Inoltre, perdi qualsiasi resistenza al danno {0} fino al termine dell'incantesimo. +Condition/&ConditionElementalBaneTitle=Flagello Elementale: {0} Condition/&ConditionIrresistiblePerformanceDescription=Non è possibile eseguire azioni che richiedano l'uso delle mani o della bocca, ma per il resto è possibile agire normalmente. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionStaggeringSmiteEnemyDescription=Sei colpito da un danno psichico. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=Evochi un vento gelido che intorpidisce il dolo Spell/&BlessingOfRimeTitle=Benedizione di Rime Spell/&BrainBulwarkDescription=Per tutta la durata, tu o una creatura consenziente che puoi vedere entro il raggio d'azione avete resistenza ai danni psichici, così come Immunità alle condizioni Affascinato, Spaventato, Paura, Mente dominata e Mente controllata. Spell/&BrainBulwarkTitle=Baluardo cerebrale +Spell/&ElementalBaneDescription=Scegli una creatura che puoi vedere entro il raggio d'azione e scegli uno dei seguenti tipi di danno: acido, freddo, fuoco, fulmine o tuono. Il bersaglio deve superare un tiro salvezza su Costituzione o essere influenzato dall'incantesimo per la sua durata. La prima volta in ogni turno che il bersaglio influenzato subisce danni del tipo scelto, il bersaglio subisce 2d6 danni aggiuntivi di quel tipo. Inoltre, il bersaglio perde qualsiasi resistenza a quel tipo di danno fino al termine dell'incantesimo. Quando lanci questo incantesimo utilizzando uno slot incantesimo di 5° livello o superiore, puoi prendere come bersaglio una creatura aggiuntiva per ogni livello di slot superiore al 4°. Le creature devono trovarsi entro 9 metri l'una dall'altra quando le prendi di mira. +Spell/&ElementalBaneSpecificDescription=Scegli una creatura che puoi vedere e che si trova a gittata. Il bersaglio deve superare un tiro salvezza su Costituzione o essere influenzato dall'incantesimo per la sua durata. La prima volta in ogni turno che il bersaglio influenzato subisce {0} danni, il bersaglio subisce 2d6 {0} danni aggiuntivi. Inoltre, il bersaglio perde qualsiasi resistenza ai danni {0} fino al termine dell'incantesimo. Quando lanci questo incantesimo utilizzando uno slot incantesimo di 5° livello o superiore, puoi prendere come bersaglio una creatura aggiuntiva per ogni livello di slot superiore al 4°. Le creature devono trovarsi entro 9 metri l'una dall'altra quando le prendi di mira. +Spell/&ElementalBaneSpecificTitle=Flagello Elementale: {0} +Spell/&ElementalBaneTitle=Flagello Elementale Spell/&FaithfulHoundDescription=Evochi un cane da guardia fantasma in uno spazio non occupato che puoi vedere e a gittata, dove rimane per la durata. Il segugio ha Scurovisione fino a 18 metri, Veravista fino a 80 piedi, è invisibile a tutte le creature tranne te e non può essere danneggiato. Durante ciascuno dei tuoi turni, il segugio può tentare di mordere una creatura entro 1,5 metri da lui che gli sia ostile come azione gratuita. Il bonus di attacco del segugio è pari al tuo modificatore di abilità da incantatore + al tuo bonus di competenza. Se colpisce, infligge 4d8 danni perforanti. Spell/&FaithfulHoundTitle=Il fedele segugio di Mordenkainen Spell/&ForestGuardianDescription=Uno spirito della natura risponde alla tua chiamata e ti trasforma in un potente guardiano. La trasformazione dura fino al termine dell'incantesimo. Scegli tra la forma Bestia o Albero. diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt index 5d615abeb7..fd714d30c6 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=一時的なヒットポイント Condition/&ConditionBlessingOfRimeTitle=樹氷の祝福 Condition/&ConditionBrainBulwarkDescription=あなたは精神的ダメージに対する抵抗力を持ち、また、魅惑、怯え、恐怖、マインドに支配された状態、マインドに支配された状態に対する免疫を持っています。 Condition/&ConditionBrainBulwarkTitle=ブレインブルワーク +Condition/&ConditionElementalBaneDescription=各ターンで初めて{0}ダメージを受けると、追加で2d6の{0}ダメージを受けます。さらに、呪文が終了するまで{0}ダメージに対する耐性を失います。 +Condition/&ConditionElementalBaneTitle=エレメンタルベイン: {0} Condition/&ConditionIrresistiblePerformanceDescription=手や口を必要とする動作は実行できませんが、それ以外の場合は通常どおり動作できます。 Condition/&ConditionIrresistiblePerformanceTitle=ダイナ・モー・ハム Condition/&ConditionStaggeringSmiteEnemyDescription=精神的なダメージを受けてしまいます。 @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=あなたは味方の痛みを麻痺させる Spell/&BlessingOfRimeTitle=樹氷の祝福 Spell/&BrainBulwarkDescription=期間中、あなたまたは範囲内で見える自発的なクリーチャー 1 体は精神的ダメージに対する耐性を持ち、また魅了、恐怖、恐怖、精神支配、精神支配状態に対する免疫を持ちます。 Spell/&BrainBulwarkTitle=ブレインブルワーク +Spell/&ElementalBaneDescription=範囲内にいる、見ることができるクリーチャー 1 体を選択し、以下のダメージ タイプから 1 つを選択します: 酸、冷気、火、稲妻、または雷。ターゲットは耐久力セーヴィング スローに成功しなければ、呪文の持続時間中、呪文の影響を受けます。影響を受けたターゲットが各ターンで最初に選択したタイプのダメージを受けると、ターゲットはそのタイプの追加ダメージを 2d6 受けます。さらに、ターゲットは呪文が終了するまで、そのダメージ タイプに対する抵抗力を失います。5 レベル以上の呪文スロットを使用してこの呪文を発動する場合、4 レベルを超えるスロット レベルごとに、さらに 1 体のクリーチャーをターゲットにすることができます。クリーチャーをターゲットにする場合、クリーチャーは互いに 30 フィート以内にいなければなりません。 +Spell/&ElementalBaneSpecificDescription=範囲内にいる、見ることができるクリーチャーを 1 体選択してください。ターゲットは耐久力セーヴィング スローに成功しなければ、呪文の持続時間中、呪文の影響を受けます。影響を受けたターゲットが各ターンで初めて {0} ダメージを受けると、ターゲットは追加で 2d6 {0} ダメージを受けます。さらに、ターゲットは呪文が終了するまで {0} ダメージに対する抵抗力を失います。5 レベル以上の呪文スロットを使用してこの呪文を発動する場合、4 レベルを超えるスロット レベルごとに 1 体のクリーチャーを追加でターゲットできます。クリーチャーをターゲットにする場合、クリーチャーは互いに 30 フィート以内にいなければなりません。 +Spell/&ElementalBaneSpecificTitle=エレメンタルベイン: {0} +Spell/&ElementalBaneTitle=エレメンタルベイン Spell/&FaithfulHoundDescription=あなたは範囲内で見える空いている空間に幻影の番犬を召喚し、その間そこに留まります。このハウンドは最大 60 フィートの暗視、最大 80 フィートのトゥルーサイトを持ち、あなた以外のすべての生き物には見えず、傷つけられることはありません。あなたの各ターン中、ハウンドはフリーアクションとして、5フィート以内にいるあなたに敵対的な1匹のクリーチャーに噛みつくことを試みることができます。ハウンドの攻撃ボーナスは、呪文詠唱能力修正値 + 熟練度ボーナスに等しい。ヒットすると、4d8 の貫通ダメージを与えます。 Spell/&FaithfulHoundTitle=モルデンカイネンの忠実な猟犬 Spell/&ForestGuardianDescription=自然の精霊があなたの呼びかけに応え、あなたを強力な守護者に変えます。変身は呪文が終わるまで続く。あなたは獣または木のいずれかの形態を選択します。 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt index 9c0a3bc771..2c2aa4f113 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=일시적인 체력이 있는 경 Condition/&ConditionBlessingOfRimeTitle=라임의 축복 Condition/&ConditionBrainBulwarkDescription=당신은 정신적 피해에 대한 저항력이 있을 뿐만 아니라 매혹, 겁에 질림, 공포, 정신 지배 및 정신 통제 상태에 대한 면역도 가지고 있습니다. Condition/&ConditionBrainBulwarkTitle=뇌방벽 +Condition/&ConditionElementalBaneDescription=매 턴 처음으로 {0} 피해를 입을 때 추가로 2d6 {0} 피해를 입습니다. 게다가, 당신은 주문이 끝날 때까지 {0} 피해에 대한 저항력을 잃습니다. +Condition/&ConditionElementalBaneTitle=엘리멘탈 베인: {0} Condition/&ConditionIrresistiblePerformanceDescription=손이나 입이 필요한 작업은 수행할 수 없지만 그 외에는 정상적으로 행동할 수 있습니다. Condition/&ConditionIrresistiblePerformanceTitle=디나-모에 훔 Condition/&ConditionStaggeringSmiteEnemyDescription=정신적 피해를 입게 됩니다. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=당신은 아군의 고통을 마비시키는 Spell/&BlessingOfRimeTitle=라임의 축복 Spell/&BrainBulwarkDescription=지속 시간 동안 당신 또는 당신이 범위 내에서 볼 수 있는 하나의 의지가 있는 생물은 정신 피해에 대한 저항력을 가질 뿐만 아니라 매혹, 겁에 질림, 공포, 정신 지배 및 정신 제어 상태에 대한 면역을 갖습니다. Spell/&BrainBulwarkTitle=뇌방벽 +Spell/&ElementalBaneDescription=범위 내에서 볼 수 있는 생물 하나를 선택하고 다음 피해 유형 중 하나를 선택하세요: 산, 추위, 불, 번개 또는 천둥. 대상은 체력 구원 굴림에 성공해야 하며, 그렇지 않으면 주문의 지속 시간 동안 주문의 영향을 받습니다. 영향을 받는 대상이 선택한 유형의 피해를 처음 입을 때마다 대상은 해당 유형의 추가 2d6 피해를 입습니다. 게다가 대상은 주문이 끝날 때까지 해당 피해 유형에 대한 모든 저항력을 잃습니다. 5레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전할 때 4레벨 이상의 슬롯 레벨마다 추가로 생물 하나를 대상으로 지정할 수 있습니다. 생물을 대상으로 지정할 때는 서로 30피트 이내에 있어야 합니다. +Spell/&ElementalBaneSpecificDescription=범위 내에서 볼 수 있는 생물 하나를 선택하세요. 대상은 건강 내성 굴림에 성공해야 하며 그렇지 않으면 지속 시간 동안 주문의 영향을 받아야 합니다. 매 턴 처음으로 영향을 받은 대상이 {0}의 피해를 입을 때 대상은 추가로 2d6 {0}의 피해를 입습니다. 더욱이, 대상은 주문이 끝날 때까지 {0} 피해에 대한 저항력을 잃습니다. 5레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전할 때, 4레벨 이상의 각 슬롯 레벨마다 추가 생물 한 마리를 목표로 삼을 수 있습니다. 생물을 목표로 삼을 때 생물은 서로 30피트 이내에 있어야 합니다. +Spell/&ElementalBaneSpecificTitle=엘리멘탈 베인: {0} +Spell/&ElementalBaneTitle=엘리멘탈 베인 Spell/&FaithfulHoundDescription=당신은 범위 내에서 볼 수 있는 빈 공간에 유령 감시견을 불러내며, 그 곳에는 지속 시간 동안 남아 있습니다. 사냥개는 최대 60피트의 암흑 시야, 최대 80피트의 Truesight를 가지며, 당신을 제외한 모든 생물에게 보이지 않으며 해를 입을 수 없습니다. 당신의 각 턴 동안, 사냥개는 자유 행동으로 당신에게 적대적인 5피트 이내의 생물 하나를 물려고 시도할 수 있습니다. 사냥개의 공격 보너스는 주문 시전 능력 수정치 + 숙련도 보너스와 같습니다. 적중 시 4d8의 관통 피해를 입힙니다. Spell/&FaithfulHoundTitle=모덴카이넨의 충실한 사냥개 Spell/&ForestGuardianDescription=자연의 정령이 당신의 부름에 응답하고 당신을 강력한 수호자로 변신시킵니다. 변신은 주문이 끝날 때까지 지속됩니다. 당신은 짐승이나 나무 형태 중에서 선택합니다. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt index 44c799753d..04dbf13ad7 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=Você tem vantagem no teste de res Condition/&ConditionBlessingOfRimeTitle=Bênção do Rime Condition/&ConditionBrainBulwarkDescription=Você tem resistência a danos psíquicos, bem como imunidade às condições Encantado, Assustado, Medo, Dominado pela Mente e Controlado pela Mente. Condition/&ConditionBrainBulwarkTitle=Baluarte do Cérebro +Condition/&ConditionElementalBaneDescription=Na primeira vez em cada turno que você sofre {0} de dano, você sofre 2d6 {0} de dano extra. Além disso, você perde qualquer resistência a {0} de dano até o feitiço terminar. +Condition/&ConditionElementalBaneTitle=Maldição Elemental: {0} Condition/&ConditionIrresistiblePerformanceDescription=Você não pode realizar nenhuma ação que exija as mãos ou a boca, mas pode agir normalmente. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionStaggeringSmiteEnemyDescription=Você é atingido por dano psíquico. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=Você invoca um vento gelado que entorpece a do Spell/&BlessingOfRimeTitle=Bênção do Rime Spell/&BrainBulwarkDescription=Durante a duração, você ou uma criatura voluntária que você possa ver dentro do alcance tem resistência a dano psíquico, bem como imunidade às condições Encantado, Assustado, Medo, Dominado pela Mente e Controlado pela Mente. Spell/&BrainBulwarkTitle=Baluarte do Cérebro +Spell/&ElementalBaneDescription=Escolha uma criatura que você possa ver dentro do alcance e escolha um dos seguintes tipos de dano: ácido, frio, fogo, raio ou trovão. O alvo deve ser bem sucedido em um teste de resistência de Constituição ou será afetado pelo feitiço durante sua duração. Na primeira vez em cada turno, o alvo afetado sofre dano do tipo escolhido, o alvo sofre 2d6 de dano extra daquele tipo. Além disso, o alvo perde qualquer resistência a esse tipo de dano até o feitiço terminar. Quando você conjura esta magia usando um espaço de magia de 5º nível ou superior, você pode escolher uma criatura adicional para cada nível do espaço acima do 4º. As criaturas devem estar a até 9 metros uma da outra quando você as atingir. +Spell/&ElementalBaneSpecificDescription=Escolha uma criatura que você possa ver dentro do alcance. O alvo deve ser bem sucedido em um teste de resistência de Constituição ou será afetado pelo feitiço durante sua duração. Na primeira vez em cada turno, o alvo afetado sofre {0} de dano, o alvo sofre 2d6 {0} de dano extra. Além disso, o alvo perde qualquer resistência a {0} dano até o feitiço terminar. Quando você conjura esta magia usando um espaço de magia de 5º nível ou superior, você pode escolher uma criatura adicional para cada nível do espaço acima do 4º. As criaturas devem estar a até 9 metros uma da outra quando você as atingir. +Spell/&ElementalBaneSpecificTitle=Maldição Elemental: {0} +Spell/&ElementalBaneTitle=Maldição Elemental Spell/&FaithfulHoundDescription=Você conjura um cão de guarda fantasma em um espaço desocupado que você pode ver dentro do alcance, onde permanece durante todo o tempo. O cão tem Visão no Escuro de até 18 metros, Visão Verdadeira de até 25 metros, é invisível para todas as criaturas, exceto você, e não pode ser ferido. Durante cada um de seus turnos, o cão pode tentar morder uma criatura a até 1,5 metro dele que seja hostil a você como uma ação livre. O bônus de ataque do cão é igual ao seu modificador de habilidade de conjuração + seu bônus de proficiência. Se acertar, causa 4d8 de dano perfurante. Spell/&FaithfulHoundTitle=Cão Fiel de Mordenkainen Spell/&ForestGuardianDescription=Um espírito da natureza atende ao seu chamado e transforma você em um poderoso guardião. A transformação dura até o feitiço terminar. Você escolhe entre uma forma de Besta ou de Árvore. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt index 2e78b66670..065847e6ed 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=Вы получаете преим Condition/&ConditionBlessingOfRimeTitle=Благословение инея Condition/&ConditionBrainBulwarkDescription=Вы обладаете сопротивлением психическому урону, а также иммунитетом к состояниям Очарования, Испуга и контролю разума. Condition/&ConditionBrainBulwarkTitle=Оплот разума +Condition/&ConditionElementalBaneDescription=В первый раз за ход вы получаете урон {0}, вы получаете дополнительно 2d6 урона {0}. Более того, вы теряете сопротивление к урону {0}, пока заклинание не закончится. +Condition/&ConditionElementalBaneTitle=Элементальное проклятие: {0} Condition/&ConditionIrresistiblePerformanceDescription=Вы не можете выполнять никаких действий, требующих использования рук или рта, но в остальном можете действовать нормально. Condition/&ConditionIrresistiblePerformanceTitle=Неотразимое исполнение Condition/&ConditionStaggeringSmiteEnemyDescription=Вас поразили психическим уроном. @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=Вы призываете холодный ве Spell/&BlessingOfRimeTitle=Благословение инея Spell/&BrainBulwarkDescription=Пока действует заклинание, вы или одно согласное существо, которое вы можете видеть в радиусе действия заклинания, получает сопротивление психическому урону, а также иммунитет к состояниям Очарования, Испуга и контролю разума. Spell/&BrainBulwarkTitle=Оплот разума +Spell/&ElementalBaneDescription=Выберите одно существо, которое вы видите в пределах дистанции, и выберите один из следующих типов урона: кислота, холод, огонь, молния или гром. Цель должна преуспеть в спасброске Телосложения, иначе заклинание будет воздействовать на нее на время ее действия. В первый раз за каждый ход затронутая цель получает урон выбранного типа, цель получает дополнительно 2d6 урона этого типа. Более того, цель теряет любое сопротивление этому типу урона, пока заклинание не закончится. Когда вы накладываете это заклинание, используя ячейку заклинания 5-го уровня или выше, вы можете выбрать целью одно дополнительное существо за каждый уровень ячейки выше 4-го. Существа должны находиться в пределах 30 футов друг от друга, когда вы нацеливаетесь на них. +Spell/&ElementalBaneSpecificDescription=Выберите одно существо, которое вы видите в пределах дистанции. Цель должна преуспеть в спасброске Телосложения, иначе заклинание будет воздействовать на нее на время ее действия. В первый раз за каждый ход затронутая цель получает урон {0}, цель получает дополнительный урон 2d6 {0}. Более того, цель теряет сопротивление урону {0}, пока заклинание не закончится. Когда вы накладываете это заклинание, используя ячейку заклинания 5-го уровня или выше, вы можете выбрать целью одно дополнительное существо за каждый уровень ячейки выше 4-го. Существа должны находиться в пределах 30 футов друг от друга, когда вы нацеливаетесь на них. +Spell/&ElementalBaneSpecificTitle=Проклятие стихий: {0} +Spell/&ElementalBaneTitle=Стихийное проклятие Spell/&FaithfulHoundDescription=Вы создаёте призрачного сторожевого пса в свободном пространстве, видимом в пределах дистанции, где он и остаётся на время длительности заклинания. Пёс обладает Тёмным зрением до 60 футов и Истинным зрением до 80 футов, невидим для всех существ кроме вас, и ему нельзя причинить вред. В течение каждого вашего хода пёс может попытаться свободным действием укусить одно враждебное вам существо в пределах 5 футов от себя. Бонус атаки пса равен вашему модификатору базовой характеристики + ваш бонус мастерства. При попадании он причиняет 4d8 колющего урона. Spell/&FaithfulHoundTitle=Верный пёс Морденкайнена Spell/&ForestGuardianDescription=Дух природы отвечает на ваш призыв и превращает вас в могущественного стража. Превращение длится до тех пор, пока заклинание не закончится. Вы выбираете одну из следующих форм: «Первобытный зверь» или «Великое древо». diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt index d0dbee6a0f..562988698b 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt @@ -8,6 +8,8 @@ Condition/&ConditionBlessingOfRimeDescription=如果你有任何临时生命值 Condition/&ConditionBlessingOfRimeTitle=雾凇祝福 Condition/&ConditionBrainBulwarkDescription=你对心灵伤害有抗性,并且免疫魅惑、恐慌、害怕、心智支配和精神控制。 Condition/&ConditionBrainBulwarkTitle=心智屏障 +Condition/&ConditionElementalBaneDescription=每回合第一次受到 {0} 点伤害时,您将额外受到 2d6 {0} 点伤害。此外,您将失去对 {0} 点伤害的抵抗力,直到法术结束。 +Condition/&ConditionElementalBaneTitle=元素祸害:{0} Condition/&ConditionIrresistiblePerformanceDescription=你无法执行任何需要用手或嘴但可以正常行动的动作。 Condition/&ConditionIrresistiblePerformanceTitle=动人演出 Condition/&ConditionStaggeringSmiteEnemyDescription=你受到心灵伤害。 @@ -30,6 +32,10 @@ Spell/&BlessingOfRimeDescription=你召唤一股寒风,麻痹你盟友的痛 Spell/&BlessingOfRimeTitle=雾凇祝福 Spell/&BrainBulwarkDescription=在此期间,你或范围内你能看到的一个自愿生物对心灵伤害有抗性,并且免疫魅惑、恐慌、害怕、心智支配和精神控制的状态。 Spell/&BrainBulwarkTitle=心智屏障 +Spell/&ElementalBaneDescription=选择范围内一个你能看见的生物,并选择以下伤害类型之一:酸、冷、火、闪电或雷。目标必须成功通过体质豁免检定,否则将在该法术持续时间内受到该法术的影响。受影响的目标每回合第一次受到所选类型的伤害时,目标将额外受到 2d6 点该类型的伤害。此外,目标将失去对该伤害类型的任何抵抗力,直到法术结束。当你使用 5 级或更高等级的法术位施放此法术时,你可以为高于 4 级的每个法术位额外选择一个生物作为目标。当你瞄准这些生物时,它们之间的距离必须在 30 英尺以内。 +Spell/&ElementalBaneSpecificDescription=选择范围内一个你能看见的生物。目标必须成功进行体质豁免,否则将在该法术持续时间内受到该法术的影响。每回合受影响的目标第一次受到 {0} 点伤害时,目标将额外受到 2d6 {0} 点伤害。此外,目标将失去对 {0} 点伤害的抵抗力,直到法术结束。当你使用 5 级或更高等级的法术位施放此法术时,你可以为高于 4 级的每个法术位额外选择一个生物。当你瞄准这些生物时,它们之间的距离必须在 30 英尺以内。 +Spell/&ElementalBaneSpecificTitle=元素祸害:{0} +Spell/&ElementalBaneTitle=元素祸害 Spell/&FaithfulHoundDescription=你在范围内可以看到的一个未占据的空间中召唤出一只幻影看门狗,并在持续时间内保持在该位置。除了你之外,猎犬对所有生物处于隐形状态,且无法对其造成伤害。在你的每个回合开始时,猎犬都会尝试咬住它周围 5 尺内的一个对你有敌意的生物。猎犬的攻击加值等于 你的施法属性调整值 + 你的熟练加值。击中时,会造成 4d8 穿刺伤害。 Spell/&FaithfulHoundTitle=魔邓肯忠犬 Spell/&ForestGuardianDescription=自然之灵会响应你的召唤,将你转变为强大的守护者。转变会持续到法术结束为止。你可以选择兽林守护者或森林守护者形态。 From a55a7738d0b1115b3718ab55e003e25b3bbbb3ca Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 13:15:18 -0700 Subject: [PATCH 33/52] update diagnostics --- .../UnfinishedBusinessBlueprints/Assets.txt | 13 +- .../ConditionAshardalonStride3.json | 6 +- .../ConditionAshardalonStride4.json | 6 +- .../ConditionAshardalonStride5.json | 6 +- .../ConditionAshardalonStride6.json | 6 +- .../ConditionAshardalonStride7.json | 6 +- .../ConditionAshardalonStride8.json | 6 +- .../ConditionAshardalonStride9.json | 6 +- .../ConditionResonatingStrike.json | 3 +- .../MovementAffinityAshardalonStride3.json | 2 +- .../MovementAffinityAshardalonStride4.json | 2 +- .../MovementAffinityAshardalonStride5.json | 2 +- .../MovementAffinityAshardalonStride6.json | 2 +- .../MovementAffinityAshardalonStride7.json | 2 +- .../MovementAffinityAshardalonStride8.json | 2 +- .../MovementAffinityAshardalonStride9.json | 2 +- .../PowerResonatingStrike.json | 469 ------------------ .../SpellDefinition/AshardalonStride.json | 2 +- 18 files changed, 41 insertions(+), 502 deletions(-) delete mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerResonatingStrike.json diff --git a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt index 2b800590d1..5e4c2ce48d 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt +++ b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt @@ -700,6 +700,11 @@ ConditionDragonWings ConditionDefinition ConditionDefinition d8583f8f-2243-5114- ConditionDualFlurryApply ConditionDefinition ConditionDefinition 2567264f-c871-5687-bd4b-4167a39a02fa ConditionDualFlurryGrant ConditionDefinition ConditionDefinition 0d537837-9941-5ac0-8e2e-4d14816083b3 ConditionEldritchVersatility ConditionDefinition ConditionDefinition 6d8f5d86-b8b3-57d5-9faf-21f5a0d26178 +ConditionElementalBaneDamageAcid ConditionDefinition ConditionDefinition a91531ac-3ccf-536c-98f6-3656eb691bcf +ConditionElementalBaneDamageCold ConditionDefinition ConditionDefinition f592188a-0409-5c44-b5dc-5b6af224d735 +ConditionElementalBaneDamageFire ConditionDefinition ConditionDefinition 70f718e7-3376-5819-a653-890ec4c8ddef +ConditionElementalBaneDamageLightning ConditionDefinition ConditionDefinition de942550-cc5b-5d66-81c4-215418bcd0ce +ConditionElementalBaneDamageThunder ConditionDefinition ConditionDefinition 56edcf13-9b9d-5fec-8775-d853ed33bbb9 ConditionElementalInfusionAcidDamage ConditionDefinition ConditionDefinition 0fb2a5f6-c1ac-5a1c-9c5a-a1e60a87db4e ConditionElementalInfusionAcidResistance ConditionDefinition ConditionDefinition 706ad0f6-44ee-590b-b909-09c0f9db2677 ConditionElementalInfusionColdDamage ConditionDefinition ConditionDefinition 29f0a27b-7e6c-5aa5-b783-ecce5c917610 @@ -3541,7 +3546,6 @@ PowerRangerWildMasterSummonBeastCompanionKindredSpiritEagle FeatureDefinitionPow PowerRangerWildMasterSummonBeastCompanionKindredSpiritWolf FeatureDefinitionPowerSharedPool FeatureDefinition 0f624788-2da9-503d-9fca-8d184d5e19b7 PowerRavenScionDeadlyFocus FeatureDefinitionPower FeatureDefinition 4e4563c9-5a62-5fda-8d33-7a9f7d63a09d PowerRavenScionHeartSeekingShot FeatureDefinitionPower FeatureDefinition 4fe21d5b-9580-5f89-891b-e496918be669 -PowerResonatingStrike FeatureDefinitionPower FeatureDefinition 0f7e45fc-1c0a-549e-b05c-5246d5f68e78 PowerRiftWalkerBlink FeatureDefinitionPower FeatureDefinition 0ddfb64d-6da6-55fa-9944-4ec5a337effa PowerRiftWalkerRiftCloak FeatureDefinitionPower FeatureDefinition 9ec4b595-95d8-5a84-8d01-5378cc0597c3 PowerRiftWalkerRiftPortal FeatureDefinitionPower FeatureDefinition 475b6250-4655-514b-a77d-76c7c65d2089 @@ -6206,7 +6210,6 @@ PowerRangerWildMasterSummonBeastCompanionKindredSpiritEagle FeatureDefinitionPow PowerRangerWildMasterSummonBeastCompanionKindredSpiritWolf FeatureDefinitionPowerSharedPool FeatureDefinitionPower 0f624788-2da9-503d-9fca-8d184d5e19b7 PowerRavenScionDeadlyFocus FeatureDefinitionPower FeatureDefinitionPower 4e4563c9-5a62-5fda-8d33-7a9f7d63a09d PowerRavenScionHeartSeekingShot FeatureDefinitionPower FeatureDefinitionPower 4fe21d5b-9580-5f89-891b-e496918be669 -PowerResonatingStrike FeatureDefinitionPower FeatureDefinitionPower 0f7e45fc-1c0a-549e-b05c-5246d5f68e78 PowerRiftWalkerBlink FeatureDefinitionPower FeatureDefinitionPower 0ddfb64d-6da6-55fa-9944-4ec5a337effa PowerRiftWalkerRiftCloak FeatureDefinitionPower FeatureDefinitionPower 9ec4b595-95d8-5a84-8d01-5378cc0597c3 PowerRiftWalkerRiftPortal FeatureDefinitionPower FeatureDefinitionPower 475b6250-4655-514b-a77d-76c7c65d2089 @@ -11731,6 +11734,12 @@ DivineWrathNecrotic SpellDefinition SpellDefinition 6627d4c5-b7ad-517a-8f1f-60d2 DivineWrathRadiant SpellDefinition SpellDefinition e6d29d57-ae9f-5d52-938b-4a5fb7d44cf7 DraconicTransformation SpellDefinition SpellDefinition 41fc2c5a-6537-5f1d-8a7d-e79aec42727f EarthTremor SpellDefinition SpellDefinition f72bca83-705a-52f8-bd8d-c774e4c80671 +ElementalBane SpellDefinition SpellDefinition 107ae326-a9c7-563a-b479-d78b494c4594 +ElementalBaneDamageAcid SpellDefinition SpellDefinition ab3f5150-13ef-544a-aeb2-f14e1a0352bf +ElementalBaneDamageCold SpellDefinition SpellDefinition 34dc638f-0ba3-53bd-8426-121310c9498d +ElementalBaneDamageFire SpellDefinition SpellDefinition 41c7a494-4278-5f2e-9164-5e766c0b99c4 +ElementalBaneDamageLightning SpellDefinition SpellDefinition e4d12eab-1a45-5985-ab33-45d6fdc2275f +ElementalBaneDamageThunder SpellDefinition SpellDefinition 69ba1ede-f692-5c54-872b-45aadce48b1f ElementalInfusion SpellDefinition SpellDefinition 64167970-ed4e-5094-95b2-d68c40bab971 ElementalWeapon SpellDefinition SpellDefinition f928808f-2083-5f5b-b72c-241c312bdac4 ElementalWeaponDamageAcid SpellDefinition SpellDefinition f939cbed-f517-5ada-8766-0c210dc2a74c diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json index 4a88bd9368..df20497ae6 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride3.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "e13d321e7272a644daf36f792d2677e7", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json index 225aebfdcf..a53f93a278 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride4.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "e13d321e7272a644daf36f792d2677e7", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json index 50ca51e607..026c653603 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride5.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "e13d321e7272a644daf36f792d2677e7", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json index 1dd792dfa9..1a2c81610e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride6.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "e13d321e7272a644daf36f792d2677e7", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json index 6c74dcd1b7..e5cc62ce51 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride7.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "e13d321e7272a644daf36f792d2677e7", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json index 9a20d33c1c..9f8542129d 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride8.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "e13d321e7272a644daf36f792d2677e7", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json index 3f95ada9fe..1bbdf3b40e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionAshardalonStride9.json @@ -47,9 +47,9 @@ }, "conditionParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null + "m_AssetGUID": "e13d321e7272a644daf36f792d2677e7", + "m_SubObjectName": "", + "m_SubObjectType": "" }, "conditionEndParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionResonatingStrike.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionResonatingStrike.json index bc50f84ed2..53a2a13bb8 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionResonatingStrike.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionResonatingStrike.json @@ -4,8 +4,7 @@ "parentCondition": null, "conditionType": "Beneficial", "features": [ - "Definition:AdditionalDamageResonatingStrike:bc01f142-4efe-5133-bb7f-d1c4f2f0bbdf", - "Definition:PowerResonatingStrike:0f7e45fc-1c0a-549e-b05c-5246d5f68e78" + "Definition:AdditionalDamageResonatingStrike:bc01f142-4efe-5133-bb7f-d1c4f2f0bbdf" ], "allowMultipleInstances": false, "silentWhenAdded": true, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json index 38a1792942..9a4c8de6d7 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride3.json @@ -2,7 +2,7 @@ "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", "appliesToAllModes": true, "moveMode": "Walk", - "baseSpeedAdditiveModifier": 2, + "baseSpeedAdditiveModifier": 4, "additiveModifierAdvancement": "None", "additiveModifierByLevelTable": [], "forceMinimalBaseSpeed": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json index 6004b07478..35e34f6ae9 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride4.json @@ -2,7 +2,7 @@ "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", "appliesToAllModes": true, "moveMode": "Walk", - "baseSpeedAdditiveModifier": 3, + "baseSpeedAdditiveModifier": 5, "additiveModifierAdvancement": "None", "additiveModifierByLevelTable": [], "forceMinimalBaseSpeed": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json index 5869d0d07b..86b1103c65 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride5.json @@ -2,7 +2,7 @@ "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", "appliesToAllModes": true, "moveMode": "Walk", - "baseSpeedAdditiveModifier": 4, + "baseSpeedAdditiveModifier": 6, "additiveModifierAdvancement": "None", "additiveModifierByLevelTable": [], "forceMinimalBaseSpeed": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json index 6e44f4d396..5e93377cec 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride6.json @@ -2,7 +2,7 @@ "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", "appliesToAllModes": true, "moveMode": "Walk", - "baseSpeedAdditiveModifier": 5, + "baseSpeedAdditiveModifier": 7, "additiveModifierAdvancement": "None", "additiveModifierByLevelTable": [], "forceMinimalBaseSpeed": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json index 07d44fc13a..e86ba0b461 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride7.json @@ -2,7 +2,7 @@ "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", "appliesToAllModes": true, "moveMode": "Walk", - "baseSpeedAdditiveModifier": 6, + "baseSpeedAdditiveModifier": 8, "additiveModifierAdvancement": "None", "additiveModifierByLevelTable": [], "forceMinimalBaseSpeed": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json index 3d3e9535ba..acd264ded9 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride8.json @@ -2,7 +2,7 @@ "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", "appliesToAllModes": true, "moveMode": "Walk", - "baseSpeedAdditiveModifier": 7, + "baseSpeedAdditiveModifier": 9, "additiveModifierAdvancement": "None", "additiveModifierByLevelTable": [], "forceMinimalBaseSpeed": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json index af12e3e4e8..69329a9ff0 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionMovementAffinity/MovementAffinityAshardalonStride9.json @@ -2,7 +2,7 @@ "$type": "FeatureDefinitionMovementAffinity, Assembly-CSharp", "appliesToAllModes": true, "moveMode": "Walk", - "baseSpeedAdditiveModifier": 8, + "baseSpeedAdditiveModifier": 10, "additiveModifierAdvancement": "None", "additiveModifierByLevelTable": [], "forceMinimalBaseSpeed": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerResonatingStrike.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerResonatingStrike.json deleted file mode 100644 index 57de9ef3c9..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerResonatingStrike.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "$type": "FeatureDefinitionPower, Assembly-CSharp", - "effectDescription": { - "$type": "EffectDescription, Assembly-CSharp", - "rangeType": "Distance", - "rangeParameter": 0, - "halfDamageOnAMiss": false, - "hitAffinitiesByTargetTag": [], - "targetType": "IndividualsUnique", - "itemSelectionType": "None", - "targetParameter": 1, - "targetParameter2": 2, - "emissiveBorder": "None", - "emissiveParameter": 1, - "requiresTargetProximity": false, - "targetProximityDistance": 6, - "targetExcludeCaster": false, - "canBePlacedOnCharacter": true, - "affectOnlyGround": false, - "targetFilteringMethod": "CharacterOnly", - "targetFilteringTag": "No", - "requiresVisibilityForPosition": true, - "inviteOptionalAlly": false, - "slotTypes": [], - "recurrentEffect": "No", - "retargetAfterDeath": false, - "retargetActionType": "Bonus", - "poolFilterDiceNumber": 0, - "poolFilterDieType": "D1", - "trapRangeType": "Triggerer", - "targetConditionName": "", - "targetConditionAsset": null, - "targetSide": "Enemy", - "durationType": "Instantaneous", - "durationParameter": 1, - "endOfEffect": "EndOfTurn", - "hasSavingThrow": false, - "disableSavingThrowOnAllies": false, - "savingThrowAbility": "Dexterity", - "ignoreCover": false, - "grantedConditionOnSave": null, - "rollSaveOnlyIfRelevantForms": false, - "hasShoveRoll": false, - "createdByCharacter": true, - "difficultyClassComputation": "SpellCastingFeature", - "savingThrowDifficultyAbility": "Wisdom", - "fixedSavingThrowDifficultyClass": 15, - "savingThrowAffinitiesBySense": [], - "savingThrowAffinitiesByFamily": [], - "damageAffinitiesByFamily": [], - "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": "Damage", - "addBonusMode": "None", - "applyLevel": "DiceNumberByLevelTable", - "levelType": "CharacterLevel", - "levelMultiplier": 1, - "diceByLevelTable": [ - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 0, - "diceNumber": 0 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 1, - "diceNumber": 0 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 2, - "diceNumber": 0 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 3, - "diceNumber": 0 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 4, - "diceNumber": 0 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 5, - "diceNumber": 1 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 6, - "diceNumber": 1 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 7, - "diceNumber": 1 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 8, - "diceNumber": 1 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 9, - "diceNumber": 1 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 10, - "diceNumber": 1 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 11, - "diceNumber": 2 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 12, - "diceNumber": 2 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 13, - "diceNumber": 2 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 14, - "diceNumber": 2 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 15, - "diceNumber": 2 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 16, - "diceNumber": 2 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 17, - "diceNumber": 3 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 18, - "diceNumber": 3 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 19, - "diceNumber": 3 - }, - { - "$type": "DiceByRank, Assembly-CSharp", - "rank": 20, - "diceNumber": 3 - } - ], - "createdByCharacter": true, - "createdByCondition": false, - "hasSavingThrow": false, - "savingThrowAffinity": "None", - "dcModifier": 0, - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn", - "damageForm": { - "$type": "DamageForm, Assembly-CSharp", - "versatile": false, - "diceNumber": 0, - "dieType": "D8", - "overrideWithBardicInspirationDie": false, - "versatileDieType": "D1", - "bonusDamage": 0, - "damageType": "DamageFire", - "ancestryType": "Sorcerer", - "healFromInflictedDamage": "Never", - "hitPointsFloor": 0, - "forceKillOnZeroHp": false, - "specialDeathCondition": null, - "ignoreFlyingCharacters": false, - "ignoreCriticalDoubleDice": 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": "57ac66403b963da4bad6f5f570a7d540", - "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": "478d5aaddd3e7f14d99664def11dcf96", - "m_SubObjectName": "", - "m_SubObjectType": "" - }, - "beforeImpactParticleReference": { - "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": "", - "m_SubObjectType": "" - }, - "impactParticleReference": { - "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "a2cb9f6aec3460a48a88280b9b516c63", - "m_SubObjectName": "", - "m_SubObjectType": "" - }, - "activeEffectImpactParticleReference": { - "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": "", - "m_SubObjectType": "" - }, - "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": "" - }, - "activeEffectSurfaceParticlePerIndex": "", - "activeEffectSurfaceParticlePerIndexCount": 0, - "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": "" - }, - "forceApplyZoneParticle": false, - "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, - "sortingScoreMultiplier": 1.0, - "dynamicCooldown": false - }, - "animationMagicEffect": "Animation0", - "lightCounterDispellsEffect": false, - "hideSavingThrowAnimation": false - }, - "delegatedToAction": false, - "surrogateToSpell": null, - "triggeredBySpecialMove": false, - "activationTime": "NoCost", - "autoActivationRequiredTargetSenseType": "None", - "autoActivationRequiredTargetCreatureTag": "", - "autoActivationPowerTag": "", - "triggeringPower": null, - "copyTargetingFromTriggeringPower": false, - "reactionContext": "None", - "damageTypes": [], - "reactionName": "", - "reactionActingCharacterParamIdx": 0, - "reactionAttackerParamIdx": -1, - "hasCastingFailure": false, - "castingSuccessComputation": "CasterLevel", - "canUseInDialog": false, - "disableIfConditionIsOwned": null, - "disableIfTargetConditionIsOwned": 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": false, - "shortTitleOverride": "", - "overriddenPower": null, - "includeBaseDescription": false, - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feature/&NoContentTitle", - "description": "Feature/&NoContentTitle", - "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": "0f7e45fc-1c0a-549e-b05c-5246d5f68e78", - "contentPack": 9999, - "name": "PowerResonatingStrike" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json index 0b5a1e3baf..28cdffc104 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/AshardalonStride.json @@ -175,7 +175,7 @@ }, "impactParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "", + "m_AssetGUID": "61bc6938422bdb645997f8f48f8921db", "m_SubObjectName": "", "m_SubObjectType": "" }, From 4ae7383e98f414de81149463562503e9333faf0b Mon Sep 17 00:00:00 2001 From: Ender Wiggin Date: Sat, 8 Jun 2024 23:16:50 +0300 Subject: [PATCH 34/52] replaced `StartBattleTurnOtherContender` wholly to implement support for `FeatureUseLimiter` --- .../Behaviors/FeatureUseLimiter.cs | 18 ++++++ .../Patches/GameLocationCharacterPatcher.cs | 63 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs diff --git a/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs b/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs new file mode 100644 index 0000000000..57ef1bc0ab --- /dev/null +++ b/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs @@ -0,0 +1,18 @@ +using SolastaUnfinishedBusiness.Api.GameExtensions; + +namespace SolastaUnfinishedBusiness.Behaviors; + +//Currently implemented only for reaction restoration of ActionAffinity features +public abstract class FeatureUseLimiter +{ + public static FeatureUseLimiter OncePerTurn = new OncePerTurn(); + public abstract bool CanBeUsed(GameLocationCharacter character, FeatureDefinition feature); +} + +class OncePerTurn : FeatureUseLimiter +{ + public override bool CanBeUsed(GameLocationCharacter character, FeatureDefinition feature) + { + return character.OncePerTurnIsValid(feature.Name); + } +} diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs index 748edf7a50..38034212c4 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs @@ -159,6 +159,69 @@ public static void Postfix(GameLocationCharacter __instance) } } + [HarmonyPatch(typeof(GameLocationCharacter), nameof(GameLocationCharacter.StartBattleTurnOtherContender))] + [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] + [UsedImplicitly] + public static class StartBattleTurnOtherContender_Patch + { + [UsedImplicitly] + public static bool Prefix(GameLocationCharacter __instance) + { + var rulesetCharacter = __instance.RulesetCharacter; + if (__instance.GetActionTypeStatus(ActionDefinitions.ActionType.Reaction) != + ActionDefinitions.ActionStatus.Available) + { + rulesetCharacter.EnumerateFeaturesToBrowse( + __instance.featuresCache, rulesetCharacter.FeaturesOrigin); + foreach (var feature in __instance.featuresCache) + { + var actionAffinity = feature as FeatureDefinitionActionAffinity; + if (actionAffinity == null || !actionAffinity.RechargeReactionsAtEveryTurn) + { + continue; + } + //---- START ---- + //PATCH: support for feature usage limits + if (feature.GetFirstSubFeatureOfType()?.CanBeUsed(__instance, feature) == false) + { + continue; + } + + __instance.IncrementSpecialFeatureUses(actionAffinity.Name); + + //---- END ---- + __instance.RefundActionUse(ActionDefinitions.ActionType.Reaction); + + var actionRefunded = __instance.ActionRefunded; + actionRefunded?.Invoke(__instance, ActionDefinitions.ActionType.Reaction); + } + } + + var db = DatabaseRepository.GetDatabase(); + foreach (var key in __instance.usedSpecialFeatures.Keys) + { + if (db.TryGetElement(key, out var result) + && result is FeatureDefinitionAdditionalDamage {LimitedUsage: FeatureLimitedUsage.OncePerTurn}) + { + __instance.restoredFeatures.Add(result); + } + } + + foreach (var restoredFeature in __instance.restoredFeatures) + { + __instance.usedSpecialFeatures.Remove(restoredFeature.Name); + } + + __instance.restoredFeatures.Clear(); + foreach (var proxy in rulesetCharacter.ControlledEffectProxies) + { + GameLocationCharacter.GetFromActor(proxy)?.StartBattleTurnOtherContender(); + } + + return false; + } + } + [HarmonyPatch(typeof(GameLocationCharacter), nameof(GameLocationCharacter.EndBattleTurn))] [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] [UsedImplicitly] From 44c1ae979474ca3a8799bf0e21f5e1f185271dc0 Mon Sep 17 00:00:00 2001 From: Ender Wiggin Date: Sat, 8 Jun 2024 23:17:13 +0300 Subject: [PATCH 35/52] added new extension to help with UsedSpecialFeatures --- .../GameExtensions/GameLocationCharacterExtensions.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs index fbdee7e3cb..3aea149d45 100644 --- a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs +++ b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs @@ -1,5 +1,7 @@ -using System.Linq; +using System.Collections.Generic; +using System.Linq; using SolastaUnfinishedBusiness.Api.Helpers; +using SolastaUnfinishedBusiness.Api.ModKit.Utility; using SolastaUnfinishedBusiness.Behaviors; using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Builders; @@ -222,7 +224,7 @@ internal static bool CanAct(this GameLocationCharacter instance) { var character = instance.RulesetCharacter; - return character is { IsDeadOrDyingOrUnconscious: false } && + return character is {IsDeadOrDyingOrUnconscious: false} && !instance.IsCharging && !instance.MoveStepInProgress && !character.HasConditionOfTypeOrSubType(RuleDefinitions.ConditionProne) && @@ -277,6 +279,11 @@ internal static bool OnceInMyTurnIsValid(this GameLocationCharacter instance, st Gui.Battle != null && Gui.Battle.ActiveContender == instance; } + internal static void IncrementSpecialFeatureUses(this GameLocationCharacter instance, string key) + { + instance.UsedSpecialFeatures.AddOrReplace(key, instance.UsedSpecialFeatures.GetValueOrDefault(key) + 1); + } + internal static bool OncePerTurnIsValid(this GameLocationCharacter instance, string key) { return !instance.UsedSpecialFeatures.ContainsKey(key); From e9dc795afeb9fc69950a7e2344fc75a97543f75a Mon Sep 17 00:00:00 2001 From: Ender Wiggin Date: Sat, 8 Jun 2024 23:18:37 +0300 Subject: [PATCH 36/52] reworked `Vigilance` of `MartialGuardian` to use `FeatureDefinitionActionAffinity` with `RechargeReactionsAtEveryTurn` flag instead of custom code --- .../FeatureDefinitionActionAffinityBuilder.cs | 6 ++ .../Interfaces/ICharacterBattleListeners.cs | 3 - .../Subclasses/MartialGuardian.cs | 55 ++++--------------- 3 files changed, 16 insertions(+), 48 deletions(-) diff --git a/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionActionAffinityBuilder.cs b/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionActionAffinityBuilder.cs index 10ecd57aa9..68a5ebbb0e 100644 --- a/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionActionAffinityBuilder.cs +++ b/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionActionAffinityBuilder.cs @@ -74,6 +74,12 @@ internal FeatureDefinitionActionAffinityBuilder SetAllowedActionTypes( return this; } + internal FeatureDefinitionActionAffinityBuilder RechargeReactionsAtEveryTurn(bool value = true) + { + Definition.rechargeReactionsAtEveryTurn = value; + return this; + } + #if false internal FeatureDefinitionActionAffinityBuilder SetMaxAttackNumber(int maxAttack) { diff --git a/SolastaUnfinishedBusiness/Interfaces/ICharacterBattleListeners.cs b/SolastaUnfinishedBusiness/Interfaces/ICharacterBattleListeners.cs index 8a1a9158c9..b54f85876f 100644 --- a/SolastaUnfinishedBusiness/Interfaces/ICharacterBattleListeners.cs +++ b/SolastaUnfinishedBusiness/Interfaces/ICharacterBattleListeners.cs @@ -3,7 +3,6 @@ using SolastaUnfinishedBusiness.Api; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Spells; -using SolastaUnfinishedBusiness.Subclasses; namespace SolastaUnfinishedBusiness.Interfaces; @@ -80,8 +79,6 @@ public static void OnCharacterTurnStarted(GameLocationCharacter locationCharacte return; } - //PATCH: supports vigilance feature on Martial Guardian - MartialGuardian.HandleVigilance(rulesetCharacter); SpellBuilders.HandleSkinOfRetribution(); //PATCH: supports EnableMonkDoNotRequireAttackActionForBonusUnarmoredAttack diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs b/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs index d55936978d..a451413058 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs @@ -1,6 +1,5 @@ using System.Collections; using System.Collections.Generic; -using System.Linq; using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Api.Helpers; @@ -26,7 +25,6 @@ namespace SolastaUnfinishedBusiness.Subclasses; public sealed class MartialGuardian : AbstractSubclass { private const string Name = "MartialGuardian"; - private const string ConditionVigilanceName = $"Condition{Name}Vigilance"; public MartialGuardian() { @@ -96,8 +94,9 @@ public MartialGuardian() // Vigilance + //Keeping this for compatibility _ = ConditionDefinitionBuilder - .Create(ConditionVigilanceName) + .Create($"ConditionMartialGuardianVigilance") .SetGuiPresentationNoContent(true) .SetSilent(Silent.WhenAddedOrRemoved) .AddToDB(); @@ -107,6 +106,13 @@ public MartialGuardian() .SetGuiPresentation(Category.Feature) .CannotBeSurprised() .AddToDB(); + + var actionAffinityVigilance = FeatureDefinitionActionAffinityBuilder + .Create($"ActionAffinity{Name}Vigilance") + .SetGuiPresentationNoContent(hidden: true) + .RechargeReactionsAtEveryTurn() + .AddCustomSubFeatures(FeatureUseLimiter.OncePerTurn) + .AddToDB(); // // LEVEL 18 @@ -138,7 +144,7 @@ public MartialGuardian() .AddFeaturesAtLevel(3, actionAffinityCompellingStrike, proficiencySentinel) .AddFeaturesAtLevel(7, savingThrowAffinityUnyielding) .AddFeaturesAtLevel(10, powerGrandChallenge) - .AddFeaturesAtLevel(15, perceptionAffinityVigilance) + .AddFeaturesAtLevel(15, perceptionAffinityVigilance, actionAffinityVigilance) .AddFeaturesAtLevel(18, featureImperviousProtector) .AddToDB(); } @@ -153,47 +159,6 @@ public MartialGuardian() // ReSharper disable once UnassignedGetOnlyAutoProperty internal override DeityDefinition DeityDefinition { get; } - internal static void HandleVigilance(RulesetCharacter rulesetCharacter) - { - if (rulesetCharacter.GetSubclassLevel(Fighter, Name) > 0) - { - return; - } - - if (Gui.Battle == null) - { - return; - } - - foreach (var guardian in Gui.Battle.AllContenders - .Where(x => x.RulesetCharacter.GetSubclassLevel(Fighter, Name) > 0)) - { - var rulesetGuardian = guardian.RulesetCharacter; - - if (guardian.CanReact() || rulesetGuardian.HasConditionOfType(ConditionVigilanceName)) - { - continue; - } - - guardian.RefundActionUse(ActionDefinitions.ActionType.Reaction); - guardian.ActionRefunded?.Invoke(guardian, ActionDefinitions.ActionType.Reaction); - - rulesetGuardian.InflictCondition( - ConditionVigilanceName, - DurationType.Round, - 0, - TurnOccurenceType.StartOfTurn, - AttributeDefinitions.TagEffect, - rulesetGuardian.Guid, - rulesetGuardian.CurrentFaction.Name, - 1, - ConditionVigilanceName, - 0, - 0, - 0); - } - } - // // Compelling Strike // From f73deed63beb70a46f020cd0cab06d92246a2751 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 13:33:01 -0700 Subject: [PATCH 37/52] tweak ReplaceAttackWithCantrips to use its own version of BurnMainAttack --- .../GameLocationCharacterExtensions.cs | 8 ++---- .../Behaviors/ReplaceAttackWithCantrip.cs | 25 +++++++++++++++++-- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs index fbdee7e3cb..9dacefecf2 100644 --- a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs +++ b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs @@ -392,7 +392,7 @@ internal static bool CanCastAnyInvocationOfActionId( return false; } - private static void HandleMonkMartialArts(this GameLocationCharacter instance) + internal static void HandleMonkMartialArts(this GameLocationCharacter instance) { var rulesetCharacter = instance.RulesetCharacter; @@ -436,16 +436,12 @@ internal static void BurnOneMainAttack(this GameLocationCharacter instance) var maxAttacks = rulesetCharacter.AttackModes .FirstOrDefault(attackMode => attackMode.ActionType == ActionType.Main)?.AttacksNumber ?? 0; - // if still attacks left - refund main action if (instance.UsedMainAttacks < maxAttacks) { - instance.currentActionRankByType[ActionType.Main]--; - return; } - //TODO: test this with other features that burn main attack - // instance.CurrentActionRankByType[ActionType.Main]++; + instance.CurrentActionRankByType[ActionType.Main]++; instance.UsedMainAttacks = 0; } diff --git a/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs b/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs index 8f83548e8e..66dfa12971 100644 --- a/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs +++ b/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs @@ -1,4 +1,5 @@ -using SolastaUnfinishedBusiness.Api.GameExtensions; +using System.Linq; +using SolastaUnfinishedBusiness.Api.GameExtensions; using static ActionDefinitions; namespace SolastaUnfinishedBusiness.Behaviors; @@ -41,6 +42,26 @@ actionParams.activeEffect is not RulesetEffectSpell spellEffect || } character.UsedMainCantrip = true; - character.BurnOneMainAttack(); + + // very similar to BurnOneMainAttack but differences are to handle Action Surge and other scenarios + var rulesetCharacter = character.RulesetCharacter; + + character.HandleMonkMartialArts(); + character.HasAttackedSinceLastTurn = true; + character.UsedMainAttacks++; + rulesetCharacter.ExecutedAttacks++; + rulesetCharacter.RefreshAttackModes(); + + var maxAttacks = rulesetCharacter.AttackModes + .FirstOrDefault(attackMode => attackMode.ActionType == ActionType.Main)?.AttacksNumber ?? 0; + + if (character.UsedMainAttacks < maxAttacks) + { + character.currentActionRankByType[ActionType.Main]--; + + return; + } + + character.UsedMainAttacks = 0; } } From c575f3dc09a7e9d8c955c49d3a8b04b7016fd848 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 13:33:25 -0700 Subject: [PATCH 38/52] update translations --- SolastaUnfinishedBusiness/Translations/de/Settings-de.txt | 2 +- SolastaUnfinishedBusiness/Translations/en/Settings-en.txt | 2 +- SolastaUnfinishedBusiness/Translations/es/Settings-es.txt | 2 +- SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt | 2 +- SolastaUnfinishedBusiness/Translations/it/Settings-it.txt | 2 +- SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt | 2 +- SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt | 2 +- SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt b/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt index 0ffd8627d2..a08fe3aeba 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=Füge alle Würfel vom Basiswaffenschaden zum Talent Follow-up-Schlag hinzu. +ModUi/&AccountForAllDiceOnFollowUpStrike=Füge alle zusätzlichen Effekte der Basiswaffe zum Talent Folgeschlag hinzu. ModUi/&AccountForAllDiceOnSavageAttack=Fügen Sie alle Würfel vom Basiswaffenschaden zu Funktionen hinzu, die Basiswaffenschaden hinzufügen, anstatt nur 1 Würfel [Wilder Angriff, 2H-Waffen usw.] ModUi/&AddAllToStore=Alle zum Shop hinzufügen ModUi/&AddBleedingToLesserRestoration=Fügen Sie den Zustand Blutung zu den Zuständen hinzu, die durch Größere und Geringere Wiederherstellung entfernt wurden diff --git a/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt b/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt index 1c46c2134c..a185ed976c 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=Add all dice from base weapon damage to Follow up Strike feat +ModUi/&AccountForAllDiceOnFollowUpStrike=Add all additional effect from base weapon to Follow up Strike feat ModUi/&AccountForAllDiceOnSavageAttack=Add all dice from base weapon damage to features that add base weapon damage instead of 1 dice only [Savage Attack, 2H weapons, etc.] ModUi/&AddAllToStore=Add all to store ModUi/&AddBleedingToLesserRestoration=Add the Bleeding condition to the ones removed by Greater and Lesser Restoration diff --git a/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt b/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt index b2024bfb2f..730b68dca4 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=Añade todos los dados del daño base del arma a la hazaña Golpe de seguimiento. +ModUi/&AccountForAllDiceOnFollowUpStrike=Añade todos los efectos adicionales del arma base a la dote Golpe de seguimiento ModUi/&AccountForAllDiceOnSavageAttack=Añade todos los dados del daño base del arma a funciones que añaden daño base del arma en lugar de 1 dado solamente [Ataque salvaje, armas 2H, etc.] ModUi/&AddAllToStore=Agregar todo a la tienda ModUi/&AddBleedingToLesserRestoration=Agregue la condición de Sangrado a las eliminadas por Mayor y Restauración menor diff --git a/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt index 7ba93a7e30..e02a1fed9f 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=Ajoutez tous les dés des dégâts de base de l'arme au don Assaut de suivi. +ModUi/&AccountForAllDiceOnFollowUpStrike=Ajoutez tous les effets supplémentaires de l'arme de base au don Frappe de suivi. ModUi/&AccountForAllDiceOnSavageAttack=Ajoutez tous les dés des dégâts de base de l'arme aux fonctionnalités qui ajoutent des dégâts de base de l'arme au lieu de 1 dé seulement [Attaque sauvage, armes 2H, etc.] ModUi/&AddAllToStore=Tout ajouter au magasin ModUi/&AddBleedingToLesserRestoration=Ajoutez la condition Saignement à celles supprimées par la Grande et la Restauration moindre diff --git a/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt b/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt index b42410358e..53ac713d26 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=Aggiungi tutti i dadi del danno base dell'arma al talento Colpo Successivo +ModUi/&AccountForAllDiceOnFollowUpStrike=Aggiungi tutti gli effetti aggiuntivi dell'arma base al talento Attacco Successivo ModUi/&AccountForAllDiceOnSavageAttack=Aggiungi tutti i dadi dal danno base dell'arma alle funzionalità che aggiungono danno base dell'arma invece di 1 solo dado [Attacco selvaggio, armi 2H, ecc.] ModUi/&AddAllToStore=Aggiungi tutto al negozio ModUi/&AddBleedingToLesserRestoration=Aggiungi la condizione Sanguinamento a quelle rimosse da Maggiore e Restauro Minore diff --git a/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt index 79f3b0dbaa..97cb8bf8aa 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=基本武器ダメージによるすべてのダイスをフォローアップストライク特技に追加します +ModUi/&AccountForAllDiceOnFollowUpStrike=基本武器のすべての追加効果を追撃攻撃特技に追加します ModUi/&AccountForAllDiceOnSavageAttack=基本武器ダメージからのすべてのダイスを、1 つのダイスのみではなく基本武器ダメージを追加する機能に追加します[サベージ アタック、2H 武器など] ModUi/&AddAllToStore=すべてをストアに追加 ModUi/&AddBleedingToLesserRestoration=出血状態をより大きな修復と小さな修復によって除去された状態に追加します。 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt index fb355ef7a5..cf52d1a3dd 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=기본 무기 피해의 모든 주사위를 후속 공격 피트에 추가합니다. +ModUi/&AccountForAllDiceOnFollowUpStrike=기본 무기의 모든 추가 효과를 후속 공격 피트에 추가 ModUi/&AccountForAllDiceOnSavageAttack=주사위 1개만 추가하는 대신 기본 무기 피해를 추가하는 기능에 기본 무기 피해의 모든 주사위를 추가합니다. [야만적 공격, 2H 무기 등] ModUi/&AddAllToStore=스토어에 모두 추가 ModUi/&AddBleedingToLesserRestoration=상급 및 하급 복원으로 제거된 상태에 출혈 상태를 추가합니다. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt index e0cf09b968..525a0da9b3 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt @@ -1,4 +1,4 @@ -ModUi/&AccountForAllDiceOnFollowUpStrike=Adicione todos os dados do dano base da arma ao talento Follow up Strike +ModUi/&AccountForAllDiceOnFollowUpStrike=Adiciona todos os efeitos adicionais da arma base ao talento Ataque de Acompanhamento ModUi/&AccountForAllDiceOnSavageAttack=Adicione todos os dados do dano base da arma aos recursos que adicionam o dano base da arma em vez de apenas 1 dado [Ataque Selvagem, armas 2H, etc.] ModUi/&AddAllToStore=Adicionar tudo à loja ModUi/&AddBleedingToLesserRestoration=Adicione a condição Sangramento àquelas removidas por Maior e Restauração Menor From 8ce596b36501d903242b511d292829bb144f0395 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 13:52:17 -0700 Subject: [PATCH 39/52] auto format and clean up --- .../GameLocationCharacterExtensions.cs | 2 +- .../Behaviors/FeatureUseLimiter.cs | 2 +- .../Patches/GameLocationCharacterPatcher.cs | 14 ++++++++++---- .../Subclasses/MartialGuardian.cs | 11 ++--------- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs index b801ccac5a..cc6959ae56 100644 --- a/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs +++ b/SolastaUnfinishedBusiness/Api/GameExtensions/GameLocationCharacterExtensions.cs @@ -224,7 +224,7 @@ internal static bool CanAct(this GameLocationCharacter instance) { var character = instance.RulesetCharacter; - return character is {IsDeadOrDyingOrUnconscious: false} && + return character is { IsDeadOrDyingOrUnconscious: false } && !instance.IsCharging && !instance.MoveStepInProgress && !character.HasConditionOfTypeOrSubType(RuleDefinitions.ConditionProne) && diff --git a/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs b/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs index 57ef1bc0ab..c82c8ebeff 100644 --- a/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs +++ b/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs @@ -9,7 +9,7 @@ public abstract class FeatureUseLimiter public abstract bool CanBeUsed(GameLocationCharacter character, FeatureDefinition feature); } -class OncePerTurn : FeatureUseLimiter +internal class OncePerTurn : FeatureUseLimiter { public override bool CanBeUsed(GameLocationCharacter character, FeatureDefinition feature) { diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs index 38034212c4..4a0e2f5934 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs @@ -173,13 +173,18 @@ public static bool Prefix(GameLocationCharacter __instance) { rulesetCharacter.EnumerateFeaturesToBrowse( __instance.featuresCache, rulesetCharacter.FeaturesOrigin); + + // ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator foreach (var feature in __instance.featuresCache) { var actionAffinity = feature as FeatureDefinitionActionAffinity; - if (actionAffinity == null || !actionAffinity.RechargeReactionsAtEveryTurn) + + if (!actionAffinity || + !actionAffinity.RechargeReactionsAtEveryTurn) { continue; } + //---- START ---- //PATCH: support for feature usage limits if (feature.GetFirstSubFeatureOfType()?.CanBeUsed(__instance, feature) == false) @@ -188,20 +193,21 @@ public static bool Prefix(GameLocationCharacter __instance) } __instance.IncrementSpecialFeatureUses(actionAffinity.Name); - + //---- END ---- __instance.RefundActionUse(ActionDefinitions.ActionType.Reaction); - + var actionRefunded = __instance.ActionRefunded; actionRefunded?.Invoke(__instance, ActionDefinitions.ActionType.Reaction); } } var db = DatabaseRepository.GetDatabase(); + foreach (var key in __instance.usedSpecialFeatures.Keys) { if (db.TryGetElement(key, out var result) - && result is FeatureDefinitionAdditionalDamage {LimitedUsage: FeatureLimitedUsage.OncePerTurn}) + && result is FeatureDefinitionAdditionalDamage { LimitedUsage: FeatureLimitedUsage.OncePerTurn }) { __instance.restoredFeatures.Add(result); } diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs b/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs index a451413058..9694430767 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs @@ -94,22 +94,15 @@ public MartialGuardian() // Vigilance - //Keeping this for compatibility - _ = ConditionDefinitionBuilder - .Create($"ConditionMartialGuardianVigilance") - .SetGuiPresentationNoContent(true) - .SetSilent(Silent.WhenAddedOrRemoved) - .AddToDB(); - var perceptionAffinityVigilance = FeatureDefinitionPerceptionAffinityBuilder .Create($"PerceptionAffinity{Name}Vigilance") .SetGuiPresentation(Category.Feature) .CannotBeSurprised() .AddToDB(); - + var actionAffinityVigilance = FeatureDefinitionActionAffinityBuilder .Create($"ActionAffinity{Name}Vigilance") - .SetGuiPresentationNoContent(hidden: true) + .SetGuiPresentationNoContent(true) .RechargeReactionsAtEveryTurn() .AddCustomSubFeatures(FeatureUseLimiter.OncePerTurn) .AddToDB(); From d52723a89b32680da172cddfb0a5b41d57065e32 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 14:10:17 -0700 Subject: [PATCH 40/52] fix action surge interaction with levelled spells --- .../Behaviors/Specific/ActionSwitching.cs | 12 ------------ .../Patches/CharacterActionMagicEffectPatcher.cs | 7 +++++++ .../Patches/GameLocationCharacterPatcher.cs | 7 +++++++ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs b/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs index d9a748abd0..46981f5539 100644 --- a/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs +++ b/SolastaUnfinishedBusiness/Behaviors/Specific/ActionSwitching.cs @@ -271,18 +271,6 @@ internal static void CheckIfActionSwitched( if (actionParams.activeEffect is RulesetEffectSpell rulesetEffectSpell) { - //you can only cast one leveled spell per turn - // ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault - switch (actionParams.ActionDefinition.ActionType) - { - case ActionDefinitions.ActionType.Main when rulesetEffectSpell.SpellDefinition.SpellLevel > 0: - character.UsedBonusSpell = true; - break; - case ActionDefinitions.ActionType.Bonus: - character.UsedMainSpell = true; - break; - } - //supports for action switching interaction with MetamagicQuickenedSpell //you can only cast cantrips after quicken a spell if (rulesetEffectSpell.MetamagicOption == MetamagicQuickenedSpell) diff --git a/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs b/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs index c5e5a4760e..d399478aa3 100644 --- a/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs @@ -60,6 +60,13 @@ private static IEnumerator ExecuteImpl(CharacterActionMagicEffect __instance) // BEGIN PATCH + //PATCH: mark if levelled spell was used for correct action surge interaction + if (__instance is CharacterActionCastSpell actionCastSpell && + actionCastSpell.ActiveSpell.SpellDefinition.SpellLevel > 0) + { + actingCharacter.UsedSpecialFeatures.TryAdd("LevelledSpell", 0); + } + //PATCH: skip spell animation if this is "attack after cast" spell if (baseDefinition.HasSubFeatureOfType()) { diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs index 4a0e2f5934..4f98ea8b04 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs @@ -472,6 +472,13 @@ public static void Postfix( CharacterActionParams actionParams, ActionDefinitions.ActionScope scope) { + //PATCH: ensure we can only cast one levelled spell per turn (required by action surge) + if (__instance.UsedSpecialFeatures.TryGetValue("LevelledSpell", out _)) + { + __instance.UsedBonusSpell = true; + __instance.UsedMainSpell = true; + } + //PATCH: support for `AttackAfterMagicEffect` AttackAfterMagicEffect.HandleAttackAfterMagicEffect(__instance, actionParams); From 5c85a381cab7327f3c6f8b6341c05a95d805fc7b Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 14:10:30 -0700 Subject: [PATCH 41/52] fix attack cantrips dice progression --- .../Spells/SpellBuildersCantrips.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs index 4e3c8abb4d..9caf0331aa 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs @@ -565,8 +565,9 @@ internal static SpellDefinition BuildSunlightBlade() .SetAttackModeOnly() .SetDamageDice(DieType.D8, 1) .SetSpecificDamageType(DamageTypeRadiant) - .SetAdvancement(ExtraAdditionalDamageAdvancement.CharacterLevel, - DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 1), (11, 2), (17, 3))) + .SetAdvancement( + ExtraAdditionalDamageAdvancement.CharacterLevel, + DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) .SetTargetCondition(conditionMarked, AdditionalDamageTriggerCondition.TargetHasCondition) .AddConditionOperation( ConditionOperationDescription.ConditionOperation.Add, @@ -833,8 +834,9 @@ internal static SpellDefinition BuildBoomingBlade() .SetAttackModeOnly() .SetDamageDice(DieType.D8, 1) .SetSpecificDamageType(DamageTypeThunder) - .SetAdvancement(ExtraAdditionalDamageAdvancement.CharacterLevel, - DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 1), (11, 2), (17, 3))) + .SetAdvancement( + ExtraAdditionalDamageAdvancement.CharacterLevel, + DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) .AddConditionOperation( ConditionOperationDescription.ConditionOperation.Add, conditionBoomingBladeSheathed) .SetTargetCondition(conditionMarked, AdditionalDamageTriggerCondition.TargetHasCondition) @@ -976,7 +978,7 @@ internal static SpellDefinition BuildResonatingStrike() .SetSpecificDamageType(DamageTypeFire) .SetAdvancement( ExtraAdditionalDamageAdvancement.CharacterLevel, - DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 1), (11, 2), (17, 3))) + DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) .SetImpactParticleReference(BurningHands_B) .SetAttackModeOnly() .AddToDB(); From af87c6457727ac049e871a6fbf5ddf0b42fe4f8c Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 14:24:28 -0700 Subject: [PATCH 42/52] update collaterals --- .../UnfinishedBusinessBlueprints/Assets.txt | 3 +- .../MartialGuardian.json | 5 ++ ...ctionAffinityMartialGuardianVigilance.json | 48 +++++++++++++++++++ .../AdditionalDamageBoomingBlade.json | 32 ++++++------- .../AdditionalDamageResonatingStrike.json | 32 ++++++------- .../AdditionalDamageSunlightBlade.json | 32 ++++++------- .../ChangelogHistory.txt | 10 ++-- .../Settings/zappastuff.xml | 14 ++++-- 8 files changed, 120 insertions(+), 56 deletions(-) create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionActionAffinity/ActionAffinityMartialGuardianVigilance.json diff --git a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt index 5e4c2ce48d..08dcd1cb2c 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt +++ b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt @@ -910,7 +910,6 @@ ConditionMartialForceKnightPsionicPropulsion8 ConditionDefinition ConditionDefin ConditionMartialForceKnightTelekineticGrasp ConditionDefinition ConditionDefinition 99c014f3-da2a-5822-86b4-039e9eb3ae6c ConditionMartialForceKnightTelekineticGraspNoCost ConditionDefinition ConditionDefinition 7db9a3b5-0841-5969-9c73-313731ee48bd ConditionMartialGuardianImperviousProtector ConditionDefinition ConditionDefinition b9b9c195-e471-5b81-b1e3-c2b73bdf1002 -ConditionMartialGuardianVigilance ConditionDefinition ConditionDefinition 074331ef-ead0-5653-9b36-149e87ed3279 ConditionMartialMountaineerPositionOfStrengthAura ConditionDefinition ConditionDefinition 203be2c9-bb15-51e0-9426-6c6212cbc7c5 ConditionMartialWarlordCoveringStrike ConditionDefinition ConditionDefinition 6bc4a2ea-adc8-5a63-bfaa-807ff1f58ec4 ConditionMartialWarlordCoveringStrikeAlly ConditionDefinition ConditionDefinition 84bfc647-7c15-5cb3-b4d8-dd3339a9ba53 @@ -1524,6 +1523,7 @@ ActionAffinityInnovationVitriolistArsenal FeatureDefinitionActionAffinity Featur ActionAffinityInventorRituals FeatureDefinitionActionAffinity FeatureDefinition ada76dcf-cfb9-5256-ad58-c515ca8f0e71 ActionAffinityIrresistiblePerformance FeatureDefinitionActionAffinity FeatureDefinition 438dce74-607c-5f9a-821c-2a5290fb8ba2 ActionAffinityMartialGuardianCompellingStrike FeatureDefinitionActionAffinity FeatureDefinition ccbd571c-47a1-5915-95ee-f78e50539f19 +ActionAffinityMartialGuardianVigilance FeatureDefinitionActionAffinity FeatureDefinition f6ac6c26-2020-59c7-8b1f-78831b915690 ActionAffinityMasterfulWhirlToggle FeatureDefinitionActionAffinity FeatureDefinition 1aa8d4ea-4e03-589b-91ef-4c6b8adaa679 ActionAffinityNoxiousSpray FeatureDefinitionActionAffinity FeatureDefinition 92fce887-eee5-549c-a04c-a32422effb56 ActionAffinityOrcishFuryToggle FeatureDefinitionActionAffinity FeatureDefinition b813b4c4-7712-5653-b451-697868cb9b41 @@ -4023,6 +4023,7 @@ ActionAffinityInnovationVitriolistArsenal FeatureDefinitionActionAffinity Featur ActionAffinityInventorRituals FeatureDefinitionActionAffinity FeatureDefinitionActionAffinity ada76dcf-cfb9-5256-ad58-c515ca8f0e71 ActionAffinityIrresistiblePerformance FeatureDefinitionActionAffinity FeatureDefinitionActionAffinity 438dce74-607c-5f9a-821c-2a5290fb8ba2 ActionAffinityMartialGuardianCompellingStrike FeatureDefinitionActionAffinity FeatureDefinitionActionAffinity ccbd571c-47a1-5915-95ee-f78e50539f19 +ActionAffinityMartialGuardianVigilance FeatureDefinitionActionAffinity FeatureDefinitionActionAffinity f6ac6c26-2020-59c7-8b1f-78831b915690 ActionAffinityMasterfulWhirlToggle FeatureDefinitionActionAffinity FeatureDefinitionActionAffinity 1aa8d4ea-4e03-589b-91ef-4c6b8adaa679 ActionAffinityNoxiousSpray FeatureDefinitionActionAffinity FeatureDefinitionActionAffinity 92fce887-eee5-549c-a04c-a32422effb56 ActionAffinityOrcishFuryToggle FeatureDefinitionActionAffinity FeatureDefinitionActionAffinity b813b4c4-7712-5653-b451-697868cb9b41 diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json index 138f482870..5a19993323 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json @@ -21,6 +21,11 @@ "featureDefinition": "Definition:PowerMartialGuardianGrandChallenge:015d6844-d0f7-5ca9-b3d3-5a69e616fa0b", "level": 10 }, + { + "$type": "FeatureUnlockByLevel, Assembly-CSharp", + "featureDefinition": "Definition:ActionAffinityMartialGuardianVigilance:f6ac6c26-2020-59c7-8b1f-78831b915690", + "level": 15 + }, { "$type": "FeatureUnlockByLevel, Assembly-CSharp", "featureDefinition": "Definition:PerceptionAffinityMartialGuardianVigilance:b0c29b41-a91c-5a72-acb5-8c0f38bb3b58", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionActionAffinity/ActionAffinityMartialGuardianVigilance.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionActionAffinity/ActionAffinityMartialGuardianVigilance.json new file mode 100644 index 0000000000..388d480376 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionActionAffinity/ActionAffinityMartialGuardianVigilance.json @@ -0,0 +1,48 @@ +{ + "$type": "FeatureDefinitionActionAffinity, Assembly-CSharp", + "allowedActionTypes": [ + true, + true, + true, + true, + true, + true + ], + "eitherMainOrBonus": false, + "maxAttacksNumber": -1, + "forbiddenActions": [], + "authorizedActions": [], + "restrictedActions": [], + "actionExecutionModifiers": [], + "specialBehaviour": "None", + "randomBehaviorDie": "D10", + "randomBehaviourOptions": [], + "rechargeReactionsAtEveryTurn": true, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "f6ac6c26-2020-59c7-8b1f-78831b915690", + "contentPack": 9999, + "name": "ActionAffinityMartialGuardianVigilance" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageBoomingBlade.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageBoomingBlade.json index 7865685e4a..c8470dd0ef 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageBoomingBlade.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageBoomingBlade.json @@ -52,82 +52,82 @@ { "$type": "DiceByRank, Assembly-CSharp", "rank": 5, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 6, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 7, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 8, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 9, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 10, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 11, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 12, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 13, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 14, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 15, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 16, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 17, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 18, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 19, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 20, - "diceNumber": 3 + "diceNumber": 4 } ], "familiesWithAdditionalDice": [], diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageResonatingStrike.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageResonatingStrike.json index 0f9a96d952..8eb8375382 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageResonatingStrike.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageResonatingStrike.json @@ -52,82 +52,82 @@ { "$type": "DiceByRank, Assembly-CSharp", "rank": 5, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 6, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 7, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 8, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 9, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 10, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 11, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 12, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 13, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 14, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 15, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 16, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 17, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 18, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 19, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 20, - "diceNumber": 3 + "diceNumber": 4 } ], "familiesWithAdditionalDice": [], diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageSunlightBlade.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageSunlightBlade.json index 3af5cdce4c..052a0bef75 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageSunlightBlade.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageSunlightBlade.json @@ -52,82 +52,82 @@ { "$type": "DiceByRank, Assembly-CSharp", "rank": 5, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 6, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 7, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 8, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 9, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 10, - "diceNumber": 1 + "diceNumber": 2 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 11, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 12, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 13, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 14, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 15, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 16, - "diceNumber": 2 + "diceNumber": 3 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 17, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 18, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 19, - "diceNumber": 3 + "diceNumber": 4 }, { "$type": "DiceByRank, Assembly-CSharp", "rank": 20, - "diceNumber": 3 + "diceNumber": 4 } ], "familiesWithAdditionalDice": [], diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index ae0e45ba98..69cc4db805 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -1,12 +1,14 @@ 1.5.97.14: - added Ashardalon's Stride, and Elemental Bane spells +- fixed Action Surge interaction with 'replace attacks with cantrips', and 'action switching' +- fixed Booming Blade, Green-Flame Blade, and Sunlit Blade cantrips interaction with Quickened metamagic +- fixed Domain Tempest destructive wrath feature interaction with Transmuted metamagic - fixed Domain Tempest wrath of the storm feature not consuming a reaction +- fixed Martial Guardian vigilance feature bleeding reaction refunds to other fighters - fixed Mind Sharpener infusion not providing advantage on concentration checks -- fixed Pulse Wave spell to offer push/pull options as well as increase distance on upcasting -- fixed Quickened metamagic interaction with Booming Blade, Green-Flame Blade, and Sunlit Blade cantrips -- fixed Stunning Strike behavior to not trigger on stunned enemies and auto disable on a hit -- fixed Transmuted metamagic interaction with Domain Tempest destructive wrath feature +- fixed Pulse Wave spell to offer push/pull options as well as increase motion distance on upcasting +- fixed Stunning Strike behavior to not trigger on stunned enemies and auto disable on a failed saving 1.5.97.12: diff --git a/SolastaUnfinishedBusiness/Settings/zappastuff.xml b/SolastaUnfinishedBusiness/Settings/zappastuff.xml index 790036d9bb..86a2393bdc 100644 --- a/SolastaUnfinishedBusiness/Settings/zappastuff.xml +++ b/SolastaUnfinishedBusiness/Settings/zappastuff.xml @@ -1391,6 +1391,7 @@ FlameArrows WinterBreath BlessingOfRime + ElementalBane ForestGuardian MantleOfThorns FlashFreeze @@ -1421,10 +1422,12 @@ ColorBurst KineticJaunt SpellWeb + AshardalonStride ElementalWeapon FlameArrows IntellectFortress BrainBulwark + ElementalBane FaithfulHound @@ -1466,6 +1469,7 @@ StrikeWithTheWind ConjureGoblinoids AdderFangs + AshardalonStride ElementalWeapon FlameArrows LightningArrow @@ -1517,13 +1521,14 @@ SpellWeb WitherAndBloom AdderFangs + AshardalonStride CorruptingBolt FlameArrows IntellectFortress - PsionicBlast BoomingStep WinterBreath BrainBulwark + PsionicBlast PsychicLance FarStep Incineration @@ -1570,10 +1575,11 @@ CorruptingBolt HungerOfTheVoid IntellectFortress - PsionicBlast SpiritShroud BoomingStep BrainBulwark + ElementalBane + PsionicBlast PsychicLance FarStep FlashFreeze @@ -1638,18 +1644,20 @@ PsychicWhip SpellWeb WitherAndBloom + AshardalonStride CorruptingBolt FlameArrows IntellectFortress VitalityTransfer - PsionicBlast PulseWave SpiritShroud BoomingStep WinterBreath BrainBulwark + ElementalBane GravitySinkhole FaithfulHound + PsionicBlast PsychicLance Dawn FarStep From 38061581649ff25831fe19c87a8e77161fac3483 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 15:44:48 -0700 Subject: [PATCH 43/52] improve Elemental Bane spell --- .../Spells/SpellBuildersLevel04.cs | 75 +++++++++++++------ .../Translations/de/Spells/Spells04-de.txt | 4 +- .../Translations/en/Spells/Spells04-en.txt | 4 +- .../Translations/es/Spells/Spells04-es.txt | 4 +- .../Translations/fr/Spells/Spells04-fr.txt | 4 +- .../Translations/it/Spells/Spells04-it.txt | 4 +- .../Translations/ja/Spells/Spells04-ja.txt | 4 +- .../Translations/ko/Spells/Spells04-ko.txt | 4 +- .../pt-BR/Spells/Spells04-pt-BR.txt | 4 +- .../Translations/ru/Spells/Spells04-ru.txt | 4 +- .../zh-CN/Spells/Spells04-zh-CN.txt | 4 +- 11 files changed, 74 insertions(+), 41 deletions(-) diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs index f55845ba2d..8bba9b542e 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs @@ -378,21 +378,40 @@ internal static SpellDefinition BuildElementalBane() continue; } + var damageTitle = Gui.Localize($"Tooltip/&Tag{damageType}Title"); + + var additionalDamage = FeatureDefinitionAdditionalDamageBuilder + .Create($"AdditionalDamage{NAME}{damageType}") + .SetGuiPresentationNoContent(true) + .SetNotificationTag("ElementalBane") + .SetSpecificDamageType(damageType) + .SetDamageDice(DieType.D6, 2) + .SetFrequencyLimit(FeatureLimitedUsage.OncePerTurn) + .SetImpactParticleReference(magicEffect) + .AddToDB(); + + var conditionAttacker = ConditionDefinitionBuilder + .Create($"Condition{NAME}{damageType}Attacker") + .SetGuiPresentationNoContent(true) + .SetSilent(Silent.WhenAddedOrRemoved) + .SetFeatures(additionalDamage) + .SetSpecialInterruptions(ConditionInterruption.Attacks) + .AddToDB(); + + var title = Gui.Format("Condition/&ConditionElementalBaneTitle", damageTitle); + var description = Gui.Format("Condition/&ConditionElementalBaneDescription", damageTitle); + var condition = ConditionDefinitionBuilder .Create($"Condition{NAME}{damageType}") - .SetGuiPresentation($"Condition{NAME}", Category.Condition, ConditionRestrictedInsideMagicCircle) + .SetGuiPresentation(title, description, ConditionRestrictedInsideMagicCircle) .SetPossessive() .SetConditionType(ConditionType.Detrimental) - .AddCustomSubFeatures(new CustomBehaviorElementalBane(damageType)) + .AddCustomSubFeatures(new CustomBehaviorElementalBane(damageType, conditionAttacker)) .AddToDB(); - var damageTitle = Gui.Localize($"Tooltip/&Tag{damageType}Title"); - var title = Gui.Format("Spell/&ElementalBaneSpecificTitle", damageTitle); - var description = Gui.Format("Spell/&ElementalBaneSpecificDescription", damageTitle); - var spell = SpellDefinitionBuilder .Create(NAME + damageType) - .SetGuiPresentation(title, description) + .SetGuiPresentation(title, Gui.NoLocalization) .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolTransmutation) .SetSpellLevel(4) .SetCastingTime(ActivationTime.Action) @@ -449,11 +468,10 @@ internal static SpellDefinition BuildElementalBane() .AddToDB(); } - private sealed class CustomBehaviorElementalBane(string damageType) + private sealed class CustomBehaviorElementalBane(string damageType, ConditionDefinition conditionAttacker) : IModifyDamageAffinity, IMagicEffectBeforeHitConfirmedOnMe, IPhysicalAttackBeforeHitConfirmedOnMe { private const string Tag = "ElementalBane"; - private readonly EffectForm _damageEffectForm = EffectFormBuilder.DamageForm(damageType, 2, DieType.D6); public IEnumerator OnMagicEffectBeforeHitConfirmedOnMe( GameLocationBattleManager battleManager, @@ -464,16 +482,7 @@ public IEnumerator OnMagicEffectBeforeHitConfirmedOnMe( List actualEffectForms, bool firstTarget, bool criticalHit) { - if (!defender.OnceInMyTurnIsValid(Tag) || - !actualEffectForms.Any(x => - x.FormType == EffectForm.EffectFormType.Damage && - x.damageForm.DamageType == damageType)) - { - yield break; - } - - defender.UsedSpecialFeatures.TryAdd(Tag, 0); - actualEffectForms.Add(_damageEffectForm); + yield return Handle(attacker, defender, actualEffectForms); } public void ModifyDamageAffinity(RulesetActor defender, RulesetActor attacker, List features) @@ -496,7 +505,15 @@ public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnMe( bool firstTarget, bool criticalHit) { - if (!defender.OnceInMyTurnIsValid(Tag) || + yield return Handle(attacker, defender, actualEffectForms); + } + + private IEnumerator Handle( + GameLocationCharacter attacker, + GameLocationCharacter defender, + List actualEffectForms) + { + if (!defender.OncePerTurnIsValid(Tag) || !actualEffectForms.Any(x => x.FormType == EffectForm.EffectFormType.Damage && x.damageForm.DamageType == damageType)) @@ -505,7 +522,23 @@ public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnMe( } defender.UsedSpecialFeatures.TryAdd(Tag, 0); - actualEffectForms.Add(_damageEffectForm); + + var rulesetAttacker = attacker.RulesetCharacter; + var rulesetDefender = defender.RulesetCharacter; + + rulesetAttacker.InflictCondition( + conditionAttacker.Name, + DurationType.Round, + 0, + TurnOccurenceType.EndOfTurn, + AttributeDefinitions.TagEffect, + rulesetDefender.guid, + rulesetDefender.CurrentFaction.Name, + 1, + conditionAttacker.Name, + 0, + 0, + 0); } } diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt index c92793e8b3..eecefe2295 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=Du erhältst 10 temporäre Tre Condition/&ConditionTreeForestGuardianTitle=Wilder Baum Feedback/&AdditionalDamageBeastForestGuardianFormat=Hüter der Natur! Feedback/&AdditionalDamageBeastForestGuardianLine={0} fügt {1} als Beschützer der Wildnis mehr Schaden zu (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=Elementarfluch +Feedback/&AdditionalDamageElementalBaneLine=Elemental Bane verursacht zusätzlichen +{2} Schaden! Feedback/&AdditionalDamageStaggeringSmiteFormat=Atemberaubender Schlag! Feedback/&AdditionalDamageStaggeringSmiteLine={0} fügt {1} mehr Schaden durch einen atemberaubenden Schlag zu (+{2}) Proxy/&ProxyFaithfulHoundDescription=Treuer Hund, der bei einem Treffer 4W8 Stichschaden verursacht. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=Segen von Rime Spell/&BrainBulwarkDescription=Für die Dauer haben Sie oder eine willige Kreatur, die Sie in Reichweite sehen können, Widerstand gegen psychischen Schaden sowie Immunität gegen die Zustände „Bezaubert“, „Verängstigt“, „Furcht“, „Geist dominiert“ und „Geist kontrolliert“. Spell/&BrainBulwarkTitle=Gehirnbollwerk Spell/&ElementalBaneDescription=Wähle eine Kreatur in Reichweite, die du sehen kannst, und wähle eine der folgenden Schadensarten: Säure, Kälte, Feuer, Blitz oder Donner. Das Ziel muss einen Konstitutionsrettungswurf bestehen oder ist für die Dauer des Zaubers von diesem betroffen. Beim ersten Mal in jeder Runde, wenn das betroffene Ziel Schaden der gewählten Art erleidet, erleidet das Ziel zusätzlich 2W6 Schaden dieser Art. Darüber hinaus verliert das Ziel jegliche Resistenz gegen diese Schadensart, bis der Zauber endet. Wenn du diesen Zauber mit einem Zauberplatz der 5. Stufe oder höher wirkst, kannst du für jede Stufe über der 4. eine zusätzliche Kreatur als Ziel wählen. Die Kreaturen müssen sich innerhalb von 30 Fuß voneinander befinden, wenn du sie als Ziel wählst. -Spell/&ElementalBaneSpecificDescription=Wähle eine Kreatur in Reichweite, die du sehen kannst. Das Ziel muss einen Konstitutionsrettungswurf bestehen oder ist für die Dauer des Zaubers von diesem betroffen. Beim ersten Mal in jeder Runde, wenn das betroffene Ziel {0} Schaden erleidet, erleidet das Ziel zusätzlich 2W6 {0} Schaden. Darüber hinaus verliert das Ziel jegliche Resistenz gegen {0} Schaden, bis der Zauber endet. Wenn du diesen Zauber mit einem Zauberplatz der 5. Stufe oder höher wirkst, kannst du für jede Stufe über der 4. eine zusätzliche Kreatur als Ziel wählen. Die Kreaturen müssen sich innerhalb von 30 Fuß voneinander befinden, wenn du sie als Ziel wählst. -Spell/&ElementalBaneSpecificTitle=Elementarfluch: {0} Spell/&ElementalBaneTitle=Elementarfluch Spell/&FaithfulHoundDescription=Sie beschwören einen Phantomwächter in einem unbesetzten Raum, den Sie in Reichweite sehen können, wo er für die Dauer verbleibt. Der Hund verfügt über Dunkelsicht bis zu 60 Fuß und Wahrsicht bis zu 80 Fuß, ist für alle Kreaturen außer dir unsichtbar und kann nicht verletzt werden. In jedem deiner Züge kann der Hund als Freie Aktion versuchen, eine dir feindlich gesinnte Kreatur im Umkreis von 1,5 m um ihn herum zu beißen. Der Angriffsbonus des Hundes entspricht Ihrem Zauberfähigkeitsmodifikator + Ihrem Fähigkeitsbonus. Bei einem Treffer verursacht es 4W8 Stichschaden. Spell/&FaithfulHoundTitle=Mordenkainens treuer Hund diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt index a0b3b48a51..5021b97303 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=You gain 10 temporary hit poin Condition/&ConditionTreeForestGuardianTitle=Wild Tree Feedback/&AdditionalDamageBeastForestGuardianFormat=Guardian of Nature! Feedback/&AdditionalDamageBeastForestGuardianLine={0} deals more damage to {1} as a protector of the wild (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=Elemental Bane +Feedback/&AdditionalDamageElementalBaneLine=Elemental Bane deals extra +{2} damage! Feedback/&AdditionalDamageStaggeringSmiteFormat=Staggering Smite! Feedback/&AdditionalDamageStaggeringSmiteLine={0} deals more damage to {1} through a staggering smite (+{2}) Proxy/&ProxyFaithfulHoundDescription=Faithful Hound that deals 4d8 piercing damage on hit. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=Blessing of Rime Spell/&BrainBulwarkDescription=For the duration, you or one willing creature you can see within range has resistance to psychic damage, as well as Immunity to the Charmed, Frightened, Fear, Mind dominated and Mind controlled conditions. Spell/&BrainBulwarkTitle=Brain Bulwark Spell/&ElementalBaneDescription=Choose one creature you can see within range, and choose one of the following damage types: acid, cold, fire, lightning, or thunder. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes damage of the chosen type, the target takes an extra 2d6 damage of that type. Moreover, the target loses any resistance to that damage type until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them. -Spell/&ElementalBaneSpecificDescription=Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes {0} damage, the target takes an extra 2d6 {0} damage. Moreover, the target loses any resistance to {0} damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them. -Spell/&ElementalBaneSpecificTitle=Elemental Bane: {0} Spell/&ElementalBaneTitle=Elemental Bane Spell/&FaithfulHoundDescription=You conjure a phantom watchdog in an unoccupied space that you can see within range, where it remains for the duration. The hound has Darkvision up to 60 ft, Truesight up to 80 ft, is invisible to all creatures except you and can't be harmed. During each of your turns, the hound can attempt to bite one creature within 5 feet of it that is hostile to you as a free action. The hound's attack bonus is equal to your spellcasting ability modifier + your proficiency bonus. On a hit, it deals 4d8 piercing damage. Spell/&FaithfulHoundTitle=Mordenkainen's Faithful Hound diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt index 3440a8dd84..421cfc4c42 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=Obtienes 10 puntos de vida tem Condition/&ConditionTreeForestGuardianTitle=Árbol salvaje Feedback/&AdditionalDamageBeastForestGuardianFormat=¡Guardián de la Naturaleza! Feedback/&AdditionalDamageBeastForestGuardianLine={0} causa más daño a {1} como protector de lo salvaje (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=Perdición elemental +Feedback/&AdditionalDamageElementalBaneLine=¡Elemental Bane causa +{2} de daño adicional! Feedback/&AdditionalDamageStaggeringSmiteFormat=¡Golpe asombroso! Feedback/&AdditionalDamageStaggeringSmiteLine={0} inflige más daño a {1} mediante un golpe asombroso (+{2}) Proxy/&ProxyFaithfulHoundDescription=Perro fiel que inflige 4d8 de daño perforante al golpear. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=Bendición de la rima Spell/&BrainBulwarkDescription=Mientras dure, tú o una criatura voluntaria que puedas ver dentro del alcance tienes resistencia al daño psíquico, así como inmunidad a las condiciones Encantado, Asustado, Miedo, Dominado por la mente y controlado por la mente. Spell/&BrainBulwarkTitle=Baluarte cerebral Spell/&ElementalBaneDescription=Elige una criatura que puedas ver dentro del alcance y elige uno de los siguientes tipos de daño: ácido, frío, fuego, relámpago o trueno. El objetivo debe superar una tirada de salvación de Constitución o verse afectado por el hechizo mientras dure. La primera vez que cada turno el objetivo afectado recibe daño del tipo elegido, el objetivo recibe 2d6 daños adicionales de ese tipo. Además, el objetivo pierde cualquier resistencia a ese tipo de daño hasta que finaliza el hechizo. Cuando lanzas este hechizo usando un espacio de hechizo de 5º nivel o superior, puedes apuntar a una criatura adicional por cada nivel de espacio por encima del 4º. Las criaturas deben estar a 30 pies de distancia entre sí cuando las apuntes. -Spell/&ElementalBaneSpecificDescription=Elige una criatura que puedas ver dentro del alcance. El objetivo debe superar una tirada de salvación de Constitución o verse afectado por el hechizo mientras dure. La primera vez que cada turno el objetivo afectado sufre {0} de daño, el objetivo sufre 2d6 {0} de daño adicional. Además, el objetivo pierde cualquier resistencia al daño {0} hasta que finalice el hechizo. Cuando lanzas este hechizo usando un espacio de hechizo de 5º nivel o superior, puedes apuntar a una criatura adicional por cada nivel de espacio por encima del 4º. Las criaturas deben estar a 30 pies de distancia entre sí cuando las apuntes. -Spell/&ElementalBaneSpecificTitle=Perdición elemental: {0} Spell/&ElementalBaneTitle=Perdición elemental Spell/&FaithfulHoundDescription=Conjuras un perro guardián fantasma en un espacio desocupado que puedes ver dentro del alcance, donde permanece mientras dura. El sabueso tiene Darkvision de hasta 60 pies, Truesight de hasta 80 pies, es invisible para todas las criaturas excepto para ti y no puede sufrir daño. Durante cada uno de tus turnos, el perro puede intentar morder a una criatura a 5 pies de él que sea hostil hacia ti como acción gratuita. El bono de ataque del perro es igual a tu modificador de habilidad de lanzamiento de hechizos + tu bono de competencia. Con un golpe, causa 4d8 de daño perforante. Spell/&FaithfulHoundTitle=El perro fiel de Mordenkainen diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt index 6377ef4e2e..719fb6e3e7 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=Vous gagnez 10 points de vie t Condition/&ConditionTreeForestGuardianTitle=Arbre sauvage Feedback/&AdditionalDamageBeastForestGuardianFormat=Gardien de la nature ! Feedback/&AdditionalDamageBeastForestGuardianLine={0} inflige plus de dégâts à {1} en tant que protecteur de la nature (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=Fléau élémentaire +Feedback/&AdditionalDamageElementalBaneLine=Elemental Bane inflige +{2} dégâts supplémentaires ! Feedback/&AdditionalDamageStaggeringSmiteFormat=Châtiment stupéfiant ! Feedback/&AdditionalDamageStaggeringSmiteLine={0} inflige plus de dégâts à {1} grâce à un châtiment stupéfiant (+{2}) Proxy/&ProxyFaithfulHoundDescription=Chien fidèle qui inflige 4d8 dégâts perforants à l'impact. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=Bénédiction de Rime Spell/&BrainBulwarkDescription=Pendant toute la durée, vous ou une créature volontaire que vous pouvez voir à portée avez une résistance aux dégâts psychiques, ainsi qu'une immunité aux conditions Charmé, Effrayé, Peur, Dominé par l'Esprit et Contrôlé par l'Esprit. Spell/&BrainBulwarkTitle=Rempart cérébral Spell/&ElementalBaneDescription=Choisissez une créature que vous pouvez voir à portée et choisissez l'un des types de dégâts suivants : acide, froid, feu, foudre ou tonnerre. La cible doit réussir un jet de sauvegarde de Constitution ou être affectée par le sort pendant sa durée. La première fois à chaque tour, la cible affectée subit des dégâts du type choisi, la cible subit 2d6 dégâts supplémentaires de ce type. De plus, la cible perd toute résistance à ce type de dégâts jusqu'à la fin du sort. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 5 ou supérieur, vous pouvez cibler une créature supplémentaire pour chaque niveau d'emplacement supérieur au 4. Les créatures doivent être à moins de 9 mètres les unes des autres lorsque vous les ciblez. -Spell/&ElementalBaneSpecificDescription=Choisissez une créature que vous pouvez voir à portée. La cible doit réussir un jet de sauvegarde de Constitution ou être affectée par le sort pendant sa durée. La première fois à chaque tour, la cible affectée subit {0} dégâts, la cible subit 2d6 {0} dégâts supplémentaires. De plus, la cible perd toute résistance à {0} dégâts jusqu'à la fin du sort. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 5 ou supérieur, vous pouvez cibler une créature supplémentaire pour chaque niveau d'emplacement supérieur au 4. Les créatures doivent être à moins de 9 mètres les unes des autres lorsque vous les ciblez. -Spell/&ElementalBaneSpecificTitle=Fléau élémentaire : {0} Spell/&ElementalBaneTitle=Fléau élémentaire Spell/&FaithfulHoundDescription=Vous invoquez un chien de garde fantôme dans un espace inoccupé que vous pouvez voir à portée, où il reste pendant toute la durée. Le chien a une vision dans le noir jusqu'à 60 pieds, une vision vraie jusqu'à 80 pieds, est invisible pour toutes les créatures sauf vous et ne peut pas être blessé. Durant chacun de vos tours, le chien peut tenter de mordre une créature à moins de 1,50 mètre de lui qui vous est hostile par une action libre. Le bonus d'attaque du chien est égal à votre modificateur de capacité de lancement de sorts + votre bonus de maîtrise. En cas de coup, il inflige 4d8 dégâts perforants. Spell/&FaithfulHoundTitle=Le chien fidèle de Mordenkainen diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt index f6c6d3398d..989f35b456 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=Ottieni 10 punti ferita tempor Condition/&ConditionTreeForestGuardianTitle=Albero selvaggio Feedback/&AdditionalDamageBeastForestGuardianFormat=Guardiano della Natura! Feedback/&AdditionalDamageBeastForestGuardianLine={0} infligge più danni a {1} come protettore della natura (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=Flagello Elementale +Feedback/&AdditionalDamageElementalBaneLine=Il Flagello Elementale infligge +{2} danni extra! Feedback/&AdditionalDamageStaggeringSmiteFormat=Punizione sconcertante! Feedback/&AdditionalDamageStaggeringSmiteLine={0} infligge più danni a {1} attraverso una punizione sconcertante (+{2}) Proxy/&ProxyFaithfulHoundDescription=Segugio fedele che infligge 4d8 danni perforanti al colpo. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=Benedizione di Rime Spell/&BrainBulwarkDescription=Per tutta la durata, tu o una creatura consenziente che puoi vedere entro il raggio d'azione avete resistenza ai danni psichici, così come Immunità alle condizioni Affascinato, Spaventato, Paura, Mente dominata e Mente controllata. Spell/&BrainBulwarkTitle=Baluardo cerebrale Spell/&ElementalBaneDescription=Scegli una creatura che puoi vedere entro il raggio d'azione e scegli uno dei seguenti tipi di danno: acido, freddo, fuoco, fulmine o tuono. Il bersaglio deve superare un tiro salvezza su Costituzione o essere influenzato dall'incantesimo per la sua durata. La prima volta in ogni turno che il bersaglio influenzato subisce danni del tipo scelto, il bersaglio subisce 2d6 danni aggiuntivi di quel tipo. Inoltre, il bersaglio perde qualsiasi resistenza a quel tipo di danno fino al termine dell'incantesimo. Quando lanci questo incantesimo utilizzando uno slot incantesimo di 5° livello o superiore, puoi prendere come bersaglio una creatura aggiuntiva per ogni livello di slot superiore al 4°. Le creature devono trovarsi entro 9 metri l'una dall'altra quando le prendi di mira. -Spell/&ElementalBaneSpecificDescription=Scegli una creatura che puoi vedere e che si trova a gittata. Il bersaglio deve superare un tiro salvezza su Costituzione o essere influenzato dall'incantesimo per la sua durata. La prima volta in ogni turno che il bersaglio influenzato subisce {0} danni, il bersaglio subisce 2d6 {0} danni aggiuntivi. Inoltre, il bersaglio perde qualsiasi resistenza ai danni {0} fino al termine dell'incantesimo. Quando lanci questo incantesimo utilizzando uno slot incantesimo di 5° livello o superiore, puoi prendere come bersaglio una creatura aggiuntiva per ogni livello di slot superiore al 4°. Le creature devono trovarsi entro 9 metri l'una dall'altra quando le prendi di mira. -Spell/&ElementalBaneSpecificTitle=Flagello Elementale: {0} Spell/&ElementalBaneTitle=Flagello Elementale Spell/&FaithfulHoundDescription=Evochi un cane da guardia fantasma in uno spazio non occupato che puoi vedere e a gittata, dove rimane per la durata. Il segugio ha Scurovisione fino a 18 metri, Veravista fino a 80 piedi, è invisibile a tutte le creature tranne te e non può essere danneggiato. Durante ciascuno dei tuoi turni, il segugio può tentare di mordere una creatura entro 1,5 metri da lui che gli sia ostile come azione gratuita. Il bonus di attacco del segugio è pari al tuo modificatore di abilità da incantatore + al tuo bonus di competenza. Se colpisce, infligge 4d8 danni perforanti. Spell/&FaithfulHoundTitle=Il fedele segugio di Mordenkainen diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt index fd714d30c6..a055397d06 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=あなたは一時的に 10 Condition/&ConditionTreeForestGuardianTitle=野生の木 Feedback/&AdditionalDamageBeastForestGuardianFormat=自然の守護者! Feedback/&AdditionalDamageBeastForestGuardianLine={0} は野生の守護者として {1} にさらに多くのダメージを与えます (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=エレメンタルベイン +Feedback/&AdditionalDamageElementalBaneLine=エレメンタルベインは追加の +{2} ダメージを与えます。 Feedback/&AdditionalDamageStaggeringSmiteFormat=驚異のスマイト! Feedback/&AdditionalDamageStaggeringSmiteLine={0} は驚異的な打撃により {1} にさらに多くのダメージを与えます (+{2}) Proxy/&ProxyFaithfulHoundDescription=ヒット時に4d8の貫通ダメージを与える忠実な猟犬。 @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=樹氷の祝福 Spell/&BrainBulwarkDescription=期間中、あなたまたは範囲内で見える自発的なクリーチャー 1 体は精神的ダメージに対する耐性を持ち、また魅了、恐怖、恐怖、精神支配、精神支配状態に対する免疫を持ちます。 Spell/&BrainBulwarkTitle=ブレインブルワーク Spell/&ElementalBaneDescription=範囲内にいる、見ることができるクリーチャー 1 体を選択し、以下のダメージ タイプから 1 つを選択します: 酸、冷気、火、稲妻、または雷。ターゲットは耐久力セーヴィング スローに成功しなければ、呪文の持続時間中、呪文の影響を受けます。影響を受けたターゲットが各ターンで最初に選択したタイプのダメージを受けると、ターゲットはそのタイプの追加ダメージを 2d6 受けます。さらに、ターゲットは呪文が終了するまで、そのダメージ タイプに対する抵抗力を失います。5 レベル以上の呪文スロットを使用してこの呪文を発動する場合、4 レベルを超えるスロット レベルごとに、さらに 1 体のクリーチャーをターゲットにすることができます。クリーチャーをターゲットにする場合、クリーチャーは互いに 30 フィート以内にいなければなりません。 -Spell/&ElementalBaneSpecificDescription=範囲内にいる、見ることができるクリーチャーを 1 体選択してください。ターゲットは耐久力セーヴィング スローに成功しなければ、呪文の持続時間中、呪文の影響を受けます。影響を受けたターゲットが各ターンで初めて {0} ダメージを受けると、ターゲットは追加で 2d6 {0} ダメージを受けます。さらに、ターゲットは呪文が終了するまで {0} ダメージに対する抵抗力を失います。5 レベル以上の呪文スロットを使用してこの呪文を発動する場合、4 レベルを超えるスロット レベルごとに 1 体のクリーチャーを追加でターゲットできます。クリーチャーをターゲットにする場合、クリーチャーは互いに 30 フィート以内にいなければなりません。 -Spell/&ElementalBaneSpecificTitle=エレメンタルベイン: {0} Spell/&ElementalBaneTitle=エレメンタルベイン Spell/&FaithfulHoundDescription=あなたは範囲内で見える空いている空間に幻影の番犬を召喚し、その間そこに留まります。このハウンドは最大 60 フィートの暗視、最大 80 フィートのトゥルーサイトを持ち、あなた以外のすべての生き物には見えず、傷つけられることはありません。あなたの各ターン中、ハウンドはフリーアクションとして、5フィート以内にいるあなたに敵対的な1匹のクリーチャーに噛みつくことを試みることができます。ハウンドの攻撃ボーナスは、呪文詠唱能力修正値 + 熟練度ボーナスに等しい。ヒットすると、4d8 の貫通ダメージを与えます。 Spell/&FaithfulHoundTitle=モルデンカイネンの忠実な猟犬 diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt index 2c2aa4f113..e9c272f3ad 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=당신은 임시 체력 10점 Condition/&ConditionTreeForestGuardianTitle=야생나무 Feedback/&AdditionalDamageBeastForestGuardianFormat=자연의 수호자! Feedback/&AdditionalDamageBeastForestGuardianLine={0}는 야생의 수호자로서 {1}에게 더 많은 피해를 입힙니다. (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=엘리멘탈 베인 +Feedback/&AdditionalDamageElementalBaneLine=원소의 베인은 추가로 +{2}의 피해를 입힙니다! Feedback/&AdditionalDamageStaggeringSmiteFormat=스태킹 스마이트! Feedback/&AdditionalDamageStaggeringSmiteLine={0}는 엄청난 강타(+{2})를 통해 {1}에 더 많은 피해를 입힙니다. Proxy/&ProxyFaithfulHoundDescription=적중 시 4d8의 관통 피해를 주는 충실한 사냥개입니다. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=라임의 축복 Spell/&BrainBulwarkDescription=지속 시간 동안 당신 또는 당신이 범위 내에서 볼 수 있는 하나의 의지가 있는 생물은 정신 피해에 대한 저항력을 가질 뿐만 아니라 매혹, 겁에 질림, 공포, 정신 지배 및 정신 제어 상태에 대한 면역을 갖습니다. Spell/&BrainBulwarkTitle=뇌방벽 Spell/&ElementalBaneDescription=범위 내에서 볼 수 있는 생물 하나를 선택하고 다음 피해 유형 중 하나를 선택하세요: 산, 추위, 불, 번개 또는 천둥. 대상은 체력 구원 굴림에 성공해야 하며, 그렇지 않으면 주문의 지속 시간 동안 주문의 영향을 받습니다. 영향을 받는 대상이 선택한 유형의 피해를 처음 입을 때마다 대상은 해당 유형의 추가 2d6 피해를 입습니다. 게다가 대상은 주문이 끝날 때까지 해당 피해 유형에 대한 모든 저항력을 잃습니다. 5레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전할 때 4레벨 이상의 슬롯 레벨마다 추가로 생물 하나를 대상으로 지정할 수 있습니다. 생물을 대상으로 지정할 때는 서로 30피트 이내에 있어야 합니다. -Spell/&ElementalBaneSpecificDescription=범위 내에서 볼 수 있는 생물 하나를 선택하세요. 대상은 건강 내성 굴림에 성공해야 하며 그렇지 않으면 지속 시간 동안 주문의 영향을 받아야 합니다. 매 턴 처음으로 영향을 받은 대상이 {0}의 피해를 입을 때 대상은 추가로 2d6 {0}의 피해를 입습니다. 더욱이, 대상은 주문이 끝날 때까지 {0} 피해에 대한 저항력을 잃습니다. 5레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전할 때, 4레벨 이상의 각 슬롯 레벨마다 추가 생물 한 마리를 목표로 삼을 수 있습니다. 생물을 목표로 삼을 때 생물은 서로 30피트 이내에 있어야 합니다. -Spell/&ElementalBaneSpecificTitle=엘리멘탈 베인: {0} Spell/&ElementalBaneTitle=엘리멘탈 베인 Spell/&FaithfulHoundDescription=당신은 범위 내에서 볼 수 있는 빈 공간에 유령 감시견을 불러내며, 그 곳에는 지속 시간 동안 남아 있습니다. 사냥개는 최대 60피트의 암흑 시야, 최대 80피트의 Truesight를 가지며, 당신을 제외한 모든 생물에게 보이지 않으며 해를 입을 수 없습니다. 당신의 각 턴 동안, 사냥개는 자유 행동으로 당신에게 적대적인 5피트 이내의 생물 하나를 물려고 시도할 수 있습니다. 사냥개의 공격 보너스는 주문 시전 능력 수정치 + 숙련도 보너스와 같습니다. 적중 시 4d8의 관통 피해를 입힙니다. Spell/&FaithfulHoundTitle=모덴카이넨의 충실한 사냥개 diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt index 04dbf13ad7..bf915278dc 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=Você ganha 10 pontos de vida Condition/&ConditionTreeForestGuardianTitle=Árvore Selvagem Feedback/&AdditionalDamageBeastForestGuardianFormat=Guardião da Natureza! Feedback/&AdditionalDamageBeastForestGuardianLine={0} causa mais dano a {1} como protetor da natureza (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=Maldição Elemental +Feedback/&AdditionalDamageElementalBaneLine=Banimento Elemental causa +{2} de dano extra! Feedback/&AdditionalDamageStaggeringSmiteFormat=Golpe impressionante! Feedback/&AdditionalDamageStaggeringSmiteLine={0} causa mais dano a {1} através de um golpe impressionante (+{2}) Proxy/&ProxyFaithfulHoundDescription=Cão fiel que causa 4d8 de dano perfurante ao acertar. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=Bênção do Rime Spell/&BrainBulwarkDescription=Durante a duração, você ou uma criatura voluntária que você possa ver dentro do alcance tem resistência a dano psíquico, bem como imunidade às condições Encantado, Assustado, Medo, Dominado pela Mente e Controlado pela Mente. Spell/&BrainBulwarkTitle=Baluarte do Cérebro Spell/&ElementalBaneDescription=Escolha uma criatura que você possa ver dentro do alcance e escolha um dos seguintes tipos de dano: ácido, frio, fogo, raio ou trovão. O alvo deve ser bem sucedido em um teste de resistência de Constituição ou será afetado pelo feitiço durante sua duração. Na primeira vez em cada turno, o alvo afetado sofre dano do tipo escolhido, o alvo sofre 2d6 de dano extra daquele tipo. Além disso, o alvo perde qualquer resistência a esse tipo de dano até o feitiço terminar. Quando você conjura esta magia usando um espaço de magia de 5º nível ou superior, você pode escolher uma criatura adicional para cada nível do espaço acima do 4º. As criaturas devem estar a até 9 metros uma da outra quando você as atingir. -Spell/&ElementalBaneSpecificDescription=Escolha uma criatura que você possa ver dentro do alcance. O alvo deve ser bem sucedido em um teste de resistência de Constituição ou será afetado pelo feitiço durante sua duração. Na primeira vez em cada turno, o alvo afetado sofre {0} de dano, o alvo sofre 2d6 {0} de dano extra. Além disso, o alvo perde qualquer resistência a {0} dano até o feitiço terminar. Quando você conjura esta magia usando um espaço de magia de 5º nível ou superior, você pode escolher uma criatura adicional para cada nível do espaço acima do 4º. As criaturas devem estar a até 9 metros uma da outra quando você as atingir. -Spell/&ElementalBaneSpecificTitle=Maldição Elemental: {0} Spell/&ElementalBaneTitle=Maldição Elemental Spell/&FaithfulHoundDescription=Você conjura um cão de guarda fantasma em um espaço desocupado que você pode ver dentro do alcance, onde permanece durante todo o tempo. O cão tem Visão no Escuro de até 18 metros, Visão Verdadeira de até 25 metros, é invisível para todas as criaturas, exceto você, e não pode ser ferido. Durante cada um de seus turnos, o cão pode tentar morder uma criatura a até 1,5 metro dele que seja hostil a você como uma ação livre. O bônus de ataque do cão é igual ao seu modificador de habilidade de conjuração + seu bônus de proficiência. Se acertar, causa 4d8 de dano perfurante. Spell/&FaithfulHoundTitle=Cão Fiel de Mordenkainen diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt index 065847e6ed..8714ca9196 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=Вы получаете 10 в Condition/&ConditionTreeForestGuardianTitle=Великое древо Feedback/&AdditionalDamageBeastForestGuardianFormat=Страж природы! Feedback/&AdditionalDamageBeastForestGuardianLine={0} наносит больше урона {1} как страж природы (+{2}) +Feedback/&AdditionalDamageElementalBaneFormat=Стихийное проклятие +Feedback/&AdditionalDamageElementalBaneLine=«Проклятие стихий» наносит дополнительный урон +{2}! Feedback/&AdditionalDamageStaggeringSmiteFormat=Оглушающая кара! Feedback/&AdditionalDamageStaggeringSmiteLine={0} наносит больше урона {1} с помощью оглушающей кары (+{2}) Proxy/&ProxyFaithfulHoundDescription=Верный пёс, который наносит 4d8 колющего урона при попадании. @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=Благословение инея Spell/&BrainBulwarkDescription=Пока действует заклинание, вы или одно согласное существо, которое вы можете видеть в радиусе действия заклинания, получает сопротивление психическому урону, а также иммунитет к состояниям Очарования, Испуга и контролю разума. Spell/&BrainBulwarkTitle=Оплот разума Spell/&ElementalBaneDescription=Выберите одно существо, которое вы видите в пределах дистанции, и выберите один из следующих типов урона: кислота, холод, огонь, молния или гром. Цель должна преуспеть в спасброске Телосложения, иначе заклинание будет воздействовать на нее на время ее действия. В первый раз за каждый ход затронутая цель получает урон выбранного типа, цель получает дополнительно 2d6 урона этого типа. Более того, цель теряет любое сопротивление этому типу урона, пока заклинание не закончится. Когда вы накладываете это заклинание, используя ячейку заклинания 5-го уровня или выше, вы можете выбрать целью одно дополнительное существо за каждый уровень ячейки выше 4-го. Существа должны находиться в пределах 30 футов друг от друга, когда вы нацеливаетесь на них. -Spell/&ElementalBaneSpecificDescription=Выберите одно существо, которое вы видите в пределах дистанции. Цель должна преуспеть в спасброске Телосложения, иначе заклинание будет воздействовать на нее на время ее действия. В первый раз за каждый ход затронутая цель получает урон {0}, цель получает дополнительный урон 2d6 {0}. Более того, цель теряет сопротивление урону {0}, пока заклинание не закончится. Когда вы накладываете это заклинание, используя ячейку заклинания 5-го уровня или выше, вы можете выбрать целью одно дополнительное существо за каждый уровень ячейки выше 4-го. Существа должны находиться в пределах 30 футов друг от друга, когда вы нацеливаетесь на них. -Spell/&ElementalBaneSpecificTitle=Проклятие стихий: {0} Spell/&ElementalBaneTitle=Стихийное проклятие Spell/&FaithfulHoundDescription=Вы создаёте призрачного сторожевого пса в свободном пространстве, видимом в пределах дистанции, где он и остаётся на время длительности заклинания. Пёс обладает Тёмным зрением до 60 футов и Истинным зрением до 80 футов, невидим для всех существ кроме вас, и ему нельзя причинить вред. В течение каждого вашего хода пёс может попытаться свободным действием укусить одно враждебное вам существо в пределах 5 футов от себя. Бонус атаки пса равен вашему модификатору базовой характеристики + ваш бонус мастерства. При попадании он причиняет 4d8 колющего урона. Spell/&FaithfulHoundTitle=Верный пёс Морденкайнена diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt index 562988698b..a31ed66e18 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt @@ -18,6 +18,8 @@ Condition/&ConditionTreeForestGuardianDescription=你获得 10 点临时生命 Condition/&ConditionTreeForestGuardianTitle=森林守护者 Feedback/&AdditionalDamageBeastForestGuardianFormat=自然守护者! Feedback/&AdditionalDamageBeastForestGuardianLine=由于自然守护者 (+{2}),{0} 对 {1} 造成更多伤害 +Feedback/&AdditionalDamageElementalBaneFormat=元素祸害 +Feedback/&AdditionalDamageElementalBaneLine=元素祸害造成额外 +{2} 伤害! Feedback/&AdditionalDamageStaggeringSmiteFormat=惊惧斩! Feedback/&AdditionalDamageStaggeringSmiteLine={0} 通过惊惧斩对 {1} 造成更多伤害 (+{2}) Proxy/&ProxyFaithfulHoundDescription=忠实的猎犬击中时造成 4d8 穿刺伤害。 @@ -33,8 +35,6 @@ Spell/&BlessingOfRimeTitle=雾凇祝福 Spell/&BrainBulwarkDescription=在此期间,你或范围内你能看到的一个自愿生物对心灵伤害有抗性,并且免疫魅惑、恐慌、害怕、心智支配和精神控制的状态。 Spell/&BrainBulwarkTitle=心智屏障 Spell/&ElementalBaneDescription=选择范围内一个你能看见的生物,并选择以下伤害类型之一:酸、冷、火、闪电或雷。目标必须成功通过体质豁免检定,否则将在该法术持续时间内受到该法术的影响。受影响的目标每回合第一次受到所选类型的伤害时,目标将额外受到 2d6 点该类型的伤害。此外,目标将失去对该伤害类型的任何抵抗力,直到法术结束。当你使用 5 级或更高等级的法术位施放此法术时,你可以为高于 4 级的每个法术位额外选择一个生物作为目标。当你瞄准这些生物时,它们之间的距离必须在 30 英尺以内。 -Spell/&ElementalBaneSpecificDescription=选择范围内一个你能看见的生物。目标必须成功进行体质豁免,否则将在该法术持续时间内受到该法术的影响。每回合受影响的目标第一次受到 {0} 点伤害时,目标将额外受到 2d6 {0} 点伤害。此外,目标将失去对 {0} 点伤害的抵抗力,直到法术结束。当你使用 5 级或更高等级的法术位施放此法术时,你可以为高于 4 级的每个法术位额外选择一个生物。当你瞄准这些生物时,它们之间的距离必须在 30 英尺以内。 -Spell/&ElementalBaneSpecificTitle=元素祸害:{0} Spell/&ElementalBaneTitle=元素祸害 Spell/&FaithfulHoundDescription=你在范围内可以看到的一个未占据的空间中召唤出一只幻影看门狗,并在持续时间内保持在该位置。除了你之外,猎犬对所有生物处于隐形状态,且无法对其造成伤害。在你的每个回合开始时,猎犬都会尝试咬住它周围 5 尺内的一个对你有敌意的生物。猎犬的攻击加值等于 你的施法属性调整值 + 你的熟练加值。击中时,会造成 4d8 穿刺伤害。 Spell/&FaithfulHoundTitle=魔邓肯忠犬 From 606abb4b69fd980822a8ada66c50d9224abf09b1 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 15:45:11 -0700 Subject: [PATCH 44/52] fix Improved Terrific Performance duration --- SolastaUnfinishedBusiness/Subclasses/CollegeOfThespian.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SolastaUnfinishedBusiness/Subclasses/CollegeOfThespian.cs b/SolastaUnfinishedBusiness/Subclasses/CollegeOfThespian.cs index a8c2a98ffb..09a9dcf149 100644 --- a/SolastaUnfinishedBusiness/Subclasses/CollegeOfThespian.cs +++ b/SolastaUnfinishedBusiness/Subclasses/CollegeOfThespian.cs @@ -144,7 +144,7 @@ public CollegeOfThespian() .SetEffectDescription( EffectDescriptionBuilder .Create() - .SetDurationData(DurationType.Round, 1) + .SetDurationData(DurationType.Round, 1, TurnOccurenceType.EndOfSourceTurn) //actual targeting is happening in sub-feature, this is for proper tooltip .SetTargetingData(Side.Enemy, RangeType.Self, 0, TargetType.Sphere, 6) .SetSavingThrowData( From 32acdf7a3bfa3136e944363c550e03d2e3476360 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 16:20:19 -0700 Subject: [PATCH 45/52] update diagnostics --- ...esentation-InvalidSyntaxTranslation-en.txt | 15 +- .../UnfinishedBusinessBlueprints/Assets.txt | 22 +++ .../ConditionElementalBaneDamageAcid.json | 4 +- ...itionElementalBaneDamageAcidAttacker.json} | 12 +- .../ConditionElementalBaneDamageCold.json | 4 +- ...ditionElementalBaneDamageColdAttacker.json | 159 ++++++++++++++++++ .../ConditionElementalBaneDamageFire.json | 4 +- ...ditionElementalBaneDamageFireAttacker.json | 159 ++++++++++++++++++ ...ConditionElementalBaneDamageLightning.json | 4 +- ...nElementalBaneDamageLightningAttacker.json | 159 ++++++++++++++++++ .../ConditionElementalBaneDamageThunder.json | 4 +- ...ionElementalBaneDamageThunderAttacker.json | 159 ++++++++++++++++++ .../ConditionPsionicBlast.json | 158 +++++++++++++++++ .../AbilityCheckAffinityPsionicBlast.json | 113 +++++++++++++ ...nityWizardGraviturgistDensityDecrease.json | 2 +- ...nityWizardGraviturgistDensityIncrease.json | 2 +- ...ditionalDamageElementalBaneDamageAcid.json | 80 +++++++++ ...ditionalDamageElementalBaneDamageCold.json | 80 +++++++++ ...ditionalDamageElementalBaneDamageFire.json | 80 +++++++++ ...nalDamageElementalBaneDamageLightning.json | 80 +++++++++ ...ionalDamageElementalBaneDamageThunder.json | 80 +++++++++ .../CombatAffinityPsionicBlast.json | 62 +++++++ ...OfThespianImprovedTerrificPerformance.json | 2 +- .../ElementalBaneDamageAcid.json | 2 +- .../ElementalBaneDamageCold.json | 2 +- .../ElementalBaneDamageFire.json | 2 +- .../ElementalBaneDamageLightning.json | 2 +- .../ElementalBaneDamageThunder.json | 2 +- .../SpellDefinition/PsionicBlast.json | 77 +++------ 29 files changed, 1454 insertions(+), 77 deletions(-) rename Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/{ConditionMartialGuardianVigilance.json => ConditionElementalBaneDamageAcidAttacker.json} (94%) create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageColdAttacker.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFireAttacker.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightningAttacker.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunderAttacker.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionPsionicBlast.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityPsionicBlast.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageAcid.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageCold.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageFire.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageLightning.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageThunder.json create mode 100644 Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityPsionicBlast.json diff --git a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt index 7d019590f7..8919f44487 100644 --- a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt +++ b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt @@ -108,6 +108,16 @@ CombatAffinityFeatSpellSniperSorcerer Title='Spell Sniper [Sorcerer]'. CombatAffinityFeatSpellSniperWarlock Title='Spell Sniper [Warlock]'. CombatAffinityFeatSpellSniperWizard Title='Spell Sniper [Wizard]'. CombatAffinityWayOfTheDiscordanceTurmoil Title='Turmoil'. +ConditionElementalBaneDamageAcid Title='Elemental Bane: Acid Damage'. +ConditionElementalBaneDamageAcid Description='The first time each turn you take Acid Damage damage, you take an extra 2d6 Acid Damage damage. Moreover, You lose any resistance to Acid Damage damage until the spell ends.'. +ConditionElementalBaneDamageCold Title='Elemental Bane: Cold Damage'. +ConditionElementalBaneDamageCold Description='The first time each turn you take Cold Damage damage, you take an extra 2d6 Cold Damage damage. Moreover, You lose any resistance to Cold Damage damage until the spell ends.'. +ConditionElementalBaneDamageFire Title='Elemental Bane: Fire Damage'. +ConditionElementalBaneDamageFire Description='The first time each turn you take Fire Damage damage, you take an extra 2d6 Fire Damage damage. Moreover, You lose any resistance to Fire Damage damage until the spell ends.'. +ConditionElementalBaneDamageLightning Title='Elemental Bane: Lightning Damage'. +ConditionElementalBaneDamageLightning Description='The first time each turn you take Lightning Damage damage, you take an extra 2d6 Lightning Damage damage. Moreover, You lose any resistance to Lightning Damage damage until the spell ends.'. +ConditionElementalBaneDamageThunder Title='Elemental Bane: Thunder Damage'. +ConditionElementalBaneDamageThunder Description='The first time each turn you take Thunder Damage damage, you take an extra 2d6 Thunder Damage damage. Moreover, You lose any resistance to Thunder Damage damage until the spell ends.'. ConditionElementalInfusionAcidDamage Title='Acid Damage Infusion'. ConditionElementalInfusionAcidDamage Description='Your next melee attack deals an additional 1d6 Acid Damage per slot level spent.'. ConditionElementalInfusionAcidResistance Title='Acid Damage Infusion'. @@ -735,15 +745,10 @@ DieRollModifierDamageTypeDependentFeatElementalMasterDamagePoison Description='P DieRollModifierDamageTypeDependentFeatElementalMasterDamageThunder Title='Elemental Master [Thunder]'. DieRollModifierDamageTypeDependentFeatElementalMasterDamageThunder Description='Thunder damage type spells you cast ignore target's immunity to damage. In addition, when you roll attack for these spells, you can reroll any 1s.'. ElementalBaneDamageAcid Title='Elemental Bane: Acid Damage'. -ElementalBaneDamageAcid Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Acid Damage damage, the target takes an extra 2d6 Acid Damage damage. Moreover, the target loses any resistance to Acid Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. ElementalBaneDamageCold Title='Elemental Bane: Cold Damage'. -ElementalBaneDamageCold Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Cold Damage damage, the target takes an extra 2d6 Cold Damage damage. Moreover, the target loses any resistance to Cold Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. ElementalBaneDamageFire Title='Elemental Bane: Fire Damage'. -ElementalBaneDamageFire Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Fire Damage damage, the target takes an extra 2d6 Fire Damage damage. Moreover, the target loses any resistance to Fire Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. ElementalBaneDamageLightning Title='Elemental Bane: Lightning Damage'. -ElementalBaneDamageLightning Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Lightning Damage damage, the target takes an extra 2d6 Lightning Damage damage. Moreover, the target loses any resistance to Lightning Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. ElementalBaneDamageThunder Title='Elemental Bane: Thunder Damage'. -ElementalBaneDamageThunder Description='Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Thunder Damage damage, the target takes an extra 2d6 Thunder Damage damage. Moreover, the target loses any resistance to Thunder Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.'. FeatAwakenTheBeastWithinCharisma Title='Awaken the Beast [Cha]'. FeatAwakenTheBeastWithinCharisma Description='Increase your Charisma by 1, to a maximum of 20. Whenever you use your Wild Shape ability to transform into a beast, you gain temporary hit points equal to twice your druid level.'. FeatAwakenTheBeastWithinConstitution Title='Awaken the Beast [Con]'. diff --git a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt index 08dcd1cb2c..6de445f7a8 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt +++ b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt @@ -701,10 +701,15 @@ ConditionDualFlurryApply ConditionDefinition ConditionDefinition 2567264f-c871-5 ConditionDualFlurryGrant ConditionDefinition ConditionDefinition 0d537837-9941-5ac0-8e2e-4d14816083b3 ConditionEldritchVersatility ConditionDefinition ConditionDefinition 6d8f5d86-b8b3-57d5-9faf-21f5a0d26178 ConditionElementalBaneDamageAcid ConditionDefinition ConditionDefinition a91531ac-3ccf-536c-98f6-3656eb691bcf +ConditionElementalBaneDamageAcidAttacker ConditionDefinition ConditionDefinition 28ed9d29-bd04-55e2-b73a-4efc91997069 ConditionElementalBaneDamageCold ConditionDefinition ConditionDefinition f592188a-0409-5c44-b5dc-5b6af224d735 +ConditionElementalBaneDamageColdAttacker ConditionDefinition ConditionDefinition 3ea84b0e-1513-5a20-b977-6330be3156ef ConditionElementalBaneDamageFire ConditionDefinition ConditionDefinition 70f718e7-3376-5819-a653-890ec4c8ddef +ConditionElementalBaneDamageFireAttacker ConditionDefinition ConditionDefinition 320107e7-6b89-5467-b762-04213c605e02 ConditionElementalBaneDamageLightning ConditionDefinition ConditionDefinition de942550-cc5b-5d66-81c4-215418bcd0ce +ConditionElementalBaneDamageLightningAttacker ConditionDefinition ConditionDefinition a1f70367-7ed2-53f3-9a46-87e0ec11b9b6 ConditionElementalBaneDamageThunder ConditionDefinition ConditionDefinition 56edcf13-9b9d-5fec-8775-d853ed33bbb9 +ConditionElementalBaneDamageThunderAttacker ConditionDefinition ConditionDefinition f5f5206c-209b-5496-91ca-cabdf78d0343 ConditionElementalInfusionAcidDamage ConditionDefinition ConditionDefinition 0fb2a5f6-c1ac-5a1c-9c5a-a1e60a87db4e ConditionElementalInfusionAcidResistance ConditionDefinition ConditionDefinition 706ad0f6-44ee-590b-b909-09c0f9db2677 ConditionElementalInfusionColdDamage ConditionDefinition ConditionDefinition 29f0a27b-7e6c-5aa5-b783-ecce5c917610 @@ -985,6 +990,7 @@ ConditionPatronEldritchSurgeBlastOverload ConditionDefinition ConditionDefinitio ConditionPatronEldritchSurgeBlastReloadSupport ConditionDefinition ConditionDefinition 174edb24-be35-5d84-bf76-4b1e34894bb2 ConditionPatronMountainBarrierOfStone ConditionDefinition ConditionDefinition 809a17c6-f788-5715-b2a4-5615aff38f59 ConditionPatronMountainClingingStrength ConditionDefinition ConditionDefinition 95f9872c-2452-51f1-8ef1-b78579f8bb50 +ConditionPsionicBlast ConditionDefinition ConditionDefinition cb0c1036-6f3f-592c-b467-a4c6d4725038 ConditionPsychicWhipNoBonus ConditionDefinition ConditionDefinition 35c585b6-2d9c-5fa4-8cec-8eeee7782805 ConditionPsychicWhipNoMain ConditionDefinition ConditionDefinition ccc00964-9d8a-5bbb-a5ea-102706e85f80 ConditionPsychicWhipNoMove ConditionDefinition ConditionDefinition 33e1abaa-4b24-5a56-844b-432d68e40f5d @@ -1474,6 +1480,7 @@ AbilityCheckAffinityMartialArcaneArcherEnfeeblingArrow FeatureDefinitionAbilityC AbilityCheckAffinityPathOfTheSpiritsBearMight FeatureDefinitionAbilityCheckAffinity FeatureDefinition c5e63494-fed8-57c3-90e2-98b58cfd30fb AbilityCheckAffinityPathOfTheSpiritsEagle FeatureDefinitionAbilityCheckAffinity FeatureDefinition e7cba441-714a-533e-98ae-75f009720896 AbilityCheckAffinityPathOfTheSpiritsWolf FeatureDefinitionAbilityCheckAffinity FeatureDefinition d4648506-f55e-5b44-9c27-843a44c6e4a7 +AbilityCheckAffinityPsionicBlast FeatureDefinitionAbilityCheckAffinity FeatureDefinition 90bc26bd-59be-5205-8444-4a86f72b7a33 AbilityCheckAffinityRangerFeyWandererOtherworldlyGlamour FeatureDefinitionAbilityCheckAffinity FeatureDefinition b26da55b-f42b-5e01-a50d-2d7c4da25f33 AbilityCheckAffinityRoguishAcrobatSwiftWind FeatureDefinitionAbilityCheckAffinity FeatureDefinition 5e29062e-1795-5d49-b4d1-8e2aef40a901 AbilityCheckAffinityRoguishArcaneScoundrelDistractingAmbush FeatureDefinitionAbilityCheckAffinity FeatureDefinition 860a2797-24b0-5ffe-b554-08a5a8b1a5d4 @@ -1606,6 +1613,11 @@ AdditionalDamageDomainDefilerDivineStrike FeatureDefinitionAdditionalDamage Feat AdditionalDamageDomainNatureDivineStrike FeatureDefinitionAdditionalDamage FeatureDefinition db964b6b-7b71-5134-b68c-68503c294bee AdditionalDamageDomainSmithDivineStrike FeatureDefinitionAdditionalDamage FeatureDefinition 7b125505-a97c-5e1e-b89e-1e2b1b7f7472 AdditionalDamageDomainTempestDivineStrike FeatureDefinitionAdditionalDamage FeatureDefinition 89a8e81d-fc5e-5e99-98e5-6b62cfa85b1e +AdditionalDamageElementalBaneDamageAcid FeatureDefinitionAdditionalDamage FeatureDefinition 46e8a977-3459-5578-8ea0-a84c4a46da23 +AdditionalDamageElementalBaneDamageCold FeatureDefinitionAdditionalDamage FeatureDefinition a5f1693a-575e-56a3-a447-aed62894eeeb +AdditionalDamageElementalBaneDamageFire FeatureDefinitionAdditionalDamage FeatureDefinition cfe60200-01ad-565d-ab43-b8aaa2ca8ff4 +AdditionalDamageElementalBaneDamageLightning FeatureDefinitionAdditionalDamage FeatureDefinition 07dd08e9-3d9a-5b60-a573-dbf30b996ab4 +AdditionalDamageElementalBaneDamageThunder FeatureDefinitionAdditionalDamage FeatureDefinition b698604d-6cab-56a5-bf73-1f765786bf0a AdditionalDamageElementalInfusionAcid FeatureDefinitionAdditionalDamage FeatureDefinition 903172b2-46bc-580f-a683-b16a4c5a6082 AdditionalDamageElementalInfusionCold FeatureDefinitionAdditionalDamage FeatureDefinition 29bf11ec-ed92-5561-89ff-d3ad416608fb AdditionalDamageElementalInfusionFire FeatureDefinitionAdditionalDamage FeatureDefinition 97b87eb9-a54f-553c-b758-8201e6e73f51 @@ -2039,6 +2051,7 @@ CombatAffinityOathOfDreadMarkOfTheSubmission FeatureDefinitionCombatAffinity Fea CombatAffinityPathOfTheSpiritsHonedAnimalAspectsBear FeatureDefinitionCombatAffinity FeatureDefinition a4b0d96b-c43f-5620-b8d5-e4feca64a910 CombatAffinityPathOfTheSpiritsWolfLeadershipPack FeatureDefinitionCombatAffinity FeatureDefinition 6f352fd3-4444-5b6d-af92-b7778c902dae CombatAffinityPathOfTheYeomanBulwark FeatureDefinitionCombatAffinity FeatureDefinition c0655645-a5b8-5af1-9fe9-43a1a46990c2 +CombatAffinityPsionicBlast FeatureDefinitionCombatAffinity FeatureDefinition c70af40a-901c-5673-94b1-3e3c38181282 CombatAffinityRangerSkyWarriorGiftOfTheWind FeatureDefinitionCombatAffinity FeatureDefinition 683630aa-4cd0-5813-b496-6f1c715c1b0d CombatAffinityRogueCunningStrikeDisarmed FeatureDefinitionCombatAffinity FeatureDefinition 2723f5df-17ca-5655-afa6-266028a21ace CombatAffinityRoguishAcrobatFluidMotions FeatureDefinitionCombatAffinity FeatureDefinition a18c050f-93b7-5cd7-bbc5-a2da036a6671 @@ -3974,6 +3987,7 @@ AbilityCheckAffinityMartialArcaneArcherEnfeeblingArrow FeatureDefinitionAbilityC AbilityCheckAffinityPathOfTheSpiritsBearMight FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAbilityCheckAffinity c5e63494-fed8-57c3-90e2-98b58cfd30fb AbilityCheckAffinityPathOfTheSpiritsEagle FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAbilityCheckAffinity e7cba441-714a-533e-98ae-75f009720896 AbilityCheckAffinityPathOfTheSpiritsWolf FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAbilityCheckAffinity d4648506-f55e-5b44-9c27-843a44c6e4a7 +AbilityCheckAffinityPsionicBlast FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAbilityCheckAffinity 90bc26bd-59be-5205-8444-4a86f72b7a33 AbilityCheckAffinityRangerFeyWandererOtherworldlyGlamour FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAbilityCheckAffinity b26da55b-f42b-5e01-a50d-2d7c4da25f33 AbilityCheckAffinityRoguishAcrobatSwiftWind FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAbilityCheckAffinity 5e29062e-1795-5d49-b4d1-8e2aef40a901 AbilityCheckAffinityRoguishArcaneScoundrelDistractingAmbush FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAbilityCheckAffinity 860a2797-24b0-5ffe-b554-08a5a8b1a5d4 @@ -4102,6 +4116,11 @@ AdditionalDamageDomainDefilerDivineStrike FeatureDefinitionAdditionalDamage Feat AdditionalDamageDomainNatureDivineStrike FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage db964b6b-7b71-5134-b68c-68503c294bee AdditionalDamageDomainSmithDivineStrike FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 7b125505-a97c-5e1e-b89e-1e2b1b7f7472 AdditionalDamageDomainTempestDivineStrike FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 89a8e81d-fc5e-5e99-98e5-6b62cfa85b1e +AdditionalDamageElementalBaneDamageAcid FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 46e8a977-3459-5578-8ea0-a84c4a46da23 +AdditionalDamageElementalBaneDamageCold FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage a5f1693a-575e-56a3-a447-aed62894eeeb +AdditionalDamageElementalBaneDamageFire FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage cfe60200-01ad-565d-ab43-b8aaa2ca8ff4 +AdditionalDamageElementalBaneDamageLightning FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 07dd08e9-3d9a-5b60-a573-dbf30b996ab4 +AdditionalDamageElementalBaneDamageThunder FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage b698604d-6cab-56a5-bf73-1f765786bf0a AdditionalDamageElementalInfusionAcid FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 903172b2-46bc-580f-a683-b16a4c5a6082 AdditionalDamageElementalInfusionCold FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 29bf11ec-ed92-5561-89ff-d3ad416608fb AdditionalDamageElementalInfusionFire FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 97b87eb9-a54f-553c-b758-8201e6e73f51 @@ -4220,6 +4239,7 @@ AbilityCheckAffinityMartialArcaneArcherEnfeeblingArrow FeatureDefinitionAbilityC AbilityCheckAffinityPathOfTheSpiritsBearMight FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAffinity c5e63494-fed8-57c3-90e2-98b58cfd30fb AbilityCheckAffinityPathOfTheSpiritsEagle FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAffinity e7cba441-714a-533e-98ae-75f009720896 AbilityCheckAffinityPathOfTheSpiritsWolf FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAffinity d4648506-f55e-5b44-9c27-843a44c6e4a7 +AbilityCheckAffinityPsionicBlast FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAffinity 90bc26bd-59be-5205-8444-4a86f72b7a33 AbilityCheckAffinityRangerFeyWandererOtherworldlyGlamour FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAffinity b26da55b-f42b-5e01-a50d-2d7c4da25f33 AbilityCheckAffinityRoguishAcrobatSwiftWind FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAffinity 5e29062e-1795-5d49-b4d1-8e2aef40a901 AbilityCheckAffinityRoguishArcaneScoundrelDistractingAmbush FeatureDefinitionAbilityCheckAffinity FeatureDefinitionAffinity 860a2797-24b0-5ffe-b554-08a5a8b1a5d4 @@ -4340,6 +4360,7 @@ CombatAffinityOathOfDreadMarkOfTheSubmission FeatureDefinitionCombatAffinity Fea CombatAffinityPathOfTheSpiritsHonedAnimalAspectsBear FeatureDefinitionCombatAffinity FeatureDefinitionAffinity a4b0d96b-c43f-5620-b8d5-e4feca64a910 CombatAffinityPathOfTheSpiritsWolfLeadershipPack FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 6f352fd3-4444-5b6d-af92-b7778c902dae CombatAffinityPathOfTheYeomanBulwark FeatureDefinitionCombatAffinity FeatureDefinitionAffinity c0655645-a5b8-5af1-9fe9-43a1a46990c2 +CombatAffinityPsionicBlast FeatureDefinitionCombatAffinity FeatureDefinitionAffinity c70af40a-901c-5673-94b1-3e3c38181282 CombatAffinityRangerSkyWarriorGiftOfTheWind FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 683630aa-4cd0-5813-b496-6f1c715c1b0d CombatAffinityRogueCunningStrikeDisarmed FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 2723f5df-17ca-5655-afa6-266028a21ace CombatAffinityRoguishAcrobatFluidMotions FeatureDefinitionCombatAffinity FeatureDefinitionAffinity a18c050f-93b7-5cd7-bbc5-a2da036a6671 @@ -4952,6 +4973,7 @@ CombatAffinityOathOfDreadMarkOfTheSubmission FeatureDefinitionCombatAffinity Fea CombatAffinityPathOfTheSpiritsHonedAnimalAspectsBear FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity a4b0d96b-c43f-5620-b8d5-e4feca64a910 CombatAffinityPathOfTheSpiritsWolfLeadershipPack FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 6f352fd3-4444-5b6d-af92-b7778c902dae CombatAffinityPathOfTheYeomanBulwark FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity c0655645-a5b8-5af1-9fe9-43a1a46990c2 +CombatAffinityPsionicBlast FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity c70af40a-901c-5673-94b1-3e3c38181282 CombatAffinityRangerSkyWarriorGiftOfTheWind FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 683630aa-4cd0-5813-b496-6f1c715c1b0d CombatAffinityRogueCunningStrikeDisarmed FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 2723f5df-17ca-5655-afa6-266028a21ace CombatAffinityRoguishAcrobatFluidMotions FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity a18c050f-93b7-5cd7-bbc5-a2da036a6671 diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json index f1531d81d4..a0bd6ba256 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcid.json @@ -128,8 +128,8 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, - "title": "Condition/&ConditionElementalBaneTitle", - "description": "Condition/&ConditionElementalBaneDescription", + "title": "Elemental Bane: Acid Damage", + "description": "The first time each turn you take Acid Damage damage, you take an extra 2d6 Acid Damage damage. Moreover, You lose any resistance to Acid Damage damage until the spell ends.", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionMartialGuardianVigilance.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcidAttacker.json similarity index 94% rename from Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionMartialGuardianVigilance.json rename to Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcidAttacker.json index eb11d4a42b..56b7cfd7a0 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionMartialGuardianVigilance.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageAcidAttacker.json @@ -3,7 +3,9 @@ "inDungeonEditor": false, "parentCondition": null, "conditionType": "Beneficial", - "features": [], + "features": [ + "Definition:AdditionalDamageElementalBaneDamageAcid:46e8a977-3459-5578-8ea0-a84c4a46da23" + ], "allowMultipleInstances": false, "silentWhenAdded": true, "silentWhenRemoved": true, @@ -15,7 +17,9 @@ "durationParameter": 1, "forceTurnOccurence": false, "turnOccurence": "EndOfTurn", - "specialInterruptions": [], + "specialInterruptions": [ + "Attacks" + ], "interruptionRequiresSavingThrow": false, "interruptionSavingThrowComputationMethod": "SaveOverride", "interruptionSavingThrowAbility": "", @@ -149,7 +153,7 @@ "usedInValleyDLC": false }, "contentCopyright": "UserContent", - "guid": "074331ef-ead0-5653-9b36-149e87ed3279", + "guid": "28ed9d29-bd04-55e2-b73a-4efc91997069", "contentPack": 9999, - "name": "ConditionMartialGuardianVigilance" + "name": "ConditionElementalBaneDamageAcidAttacker" } \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json index 9be44e2199..bd97aaee40 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageCold.json @@ -128,8 +128,8 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, - "title": "Condition/&ConditionElementalBaneTitle", - "description": "Condition/&ConditionElementalBaneDescription", + "title": "Elemental Bane: Cold Damage", + "description": "The first time each turn you take Cold Damage damage, you take an extra 2d6 Cold Damage damage. Moreover, You lose any resistance to Cold Damage damage until the spell ends.", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageColdAttacker.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageColdAttacker.json new file mode 100644 index 0000000000..d121940c2f --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageColdAttacker.json @@ -0,0 +1,159 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:AdditionalDamageElementalBaneDamageCold:a5f1693a-575e-56a3-a447-aed62894eeeb" + ], + "allowMultipleInstances": false, + "silentWhenAdded": true, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [ + "Attacks" + ], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "3ea84b0e-1513-5a20-b977-6330be3156ef", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageColdAttacker" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json index a3ec619e02..fb2c7022fe 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFire.json @@ -128,8 +128,8 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, - "title": "Condition/&ConditionElementalBaneTitle", - "description": "Condition/&ConditionElementalBaneDescription", + "title": "Elemental Bane: Fire Damage", + "description": "The first time each turn you take Fire Damage damage, you take an extra 2d6 Fire Damage damage. Moreover, You lose any resistance to Fire Damage damage until the spell ends.", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFireAttacker.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFireAttacker.json new file mode 100644 index 0000000000..4e79dfc213 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageFireAttacker.json @@ -0,0 +1,159 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:AdditionalDamageElementalBaneDamageFire:cfe60200-01ad-565d-ab43-b8aaa2ca8ff4" + ], + "allowMultipleInstances": false, + "silentWhenAdded": true, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [ + "Attacks" + ], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "320107e7-6b89-5467-b762-04213c605e02", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageFireAttacker" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json index 9bbd880e03..7471fe4858 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightning.json @@ -128,8 +128,8 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, - "title": "Condition/&ConditionElementalBaneTitle", - "description": "Condition/&ConditionElementalBaneDescription", + "title": "Elemental Bane: Lightning Damage", + "description": "The first time each turn you take Lightning Damage damage, you take an extra 2d6 Lightning Damage damage. Moreover, You lose any resistance to Lightning Damage damage until the spell ends.", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightningAttacker.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightningAttacker.json new file mode 100644 index 0000000000..34f68d0c9b --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageLightningAttacker.json @@ -0,0 +1,159 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:AdditionalDamageElementalBaneDamageLightning:07dd08e9-3d9a-5b60-a573-dbf30b996ab4" + ], + "allowMultipleInstances": false, + "silentWhenAdded": true, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [ + "Attacks" + ], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "a1f70367-7ed2-53f3-9a46-87e0ec11b9b6", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageLightningAttacker" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json index 8fff86e9b1..32286cd959 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunder.json @@ -128,8 +128,8 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, - "title": "Condition/&ConditionElementalBaneTitle", - "description": "Condition/&ConditionElementalBaneDescription", + "title": "Elemental Bane: Thunder Damage", + "description": "The first time each turn you take Thunder Damage damage, you take an extra 2d6 Thunder Damage damage. Moreover, You lose any resistance to Thunder Damage damage until the spell ends.", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "0a9aadc34a0fd1244b15ab2727a64be1", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunderAttacker.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunderAttacker.json new file mode 100644 index 0000000000..9fa9fbdf7f --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionElementalBaneDamageThunderAttacker.json @@ -0,0 +1,159 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Beneficial", + "features": [ + "Definition:AdditionalDamageElementalBaneDamageThunder:b698604d-6cab-56a5-bf73-1f765786bf0a" + ], + "allowMultipleInstances": false, + "silentWhenAdded": true, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [ + "Attacks" + ], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "f5f5206c-209b-5496-91ca-cabdf78d0343", + "contentPack": 9999, + "name": "ConditionElementalBaneDamageThunderAttacker" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionPsionicBlast.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionPsionicBlast.json new file mode 100644 index 0000000000..b82399af85 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionPsionicBlast.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [ + "Definition:AbilityCheckAffinityPsionicBlast:90bc26bd-59be-5205-8444-4a86f72b7a33", + "Definition:CombatAffinityPsionicBlast:c70af40a-901c-5673-94b1-3e3c38181282" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": false, + "durationType": "Hour", + "durationParameterDie": "D4", + "durationParameter": 1, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "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 + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "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": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": 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": "Spell/&PsionicBlastTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "6530b9c65863efc4487e6039a5acc474", + "m_SubObjectName": "ConditionConfused", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=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": "cb0c1036-6f3f-592c-b467-a4c6d4725038", + "contentPack": 9999, + "name": "ConditionPsionicBlast" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityPsionicBlast.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityPsionicBlast.json new file mode 100644 index 0000000000..b16619786d --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityPsionicBlast.json @@ -0,0 +1,113 @@ +{ + "$type": "FeatureDefinitionAbilityCheckAffinity, Assembly-CSharp", + "useControllerAbilityChecks": false, + "affinityGroups": [ + { + "$type": "FeatureDefinitionAbilityCheckAffinity+AbilityCheckAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Charisma", + "proficiencyName": "", + "affinity": "None", + "abilityCheckGroupOperation": "SubstractDie", + "abilityCheckModifierDiceNumber": 1, + "abilityCheckModifierDieType": "D6", + "abilityCheckContext": "None", + "lightingContext": "Irrelevant" + }, + { + "$type": "FeatureDefinitionAbilityCheckAffinity+AbilityCheckAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Constitution", + "proficiencyName": "", + "affinity": "None", + "abilityCheckGroupOperation": "SubstractDie", + "abilityCheckModifierDiceNumber": 1, + "abilityCheckModifierDieType": "D6", + "abilityCheckContext": "None", + "lightingContext": "Irrelevant" + }, + { + "$type": "FeatureDefinitionAbilityCheckAffinity+AbilityCheckAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Dexterity", + "proficiencyName": "", + "affinity": "None", + "abilityCheckGroupOperation": "SubstractDie", + "abilityCheckModifierDiceNumber": 1, + "abilityCheckModifierDieType": "D6", + "abilityCheckContext": "None", + "lightingContext": "Irrelevant" + }, + { + "$type": "FeatureDefinitionAbilityCheckAffinity+AbilityCheckAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Intelligence", + "proficiencyName": "", + "affinity": "None", + "abilityCheckGroupOperation": "SubstractDie", + "abilityCheckModifierDiceNumber": 1, + "abilityCheckModifierDieType": "D6", + "abilityCheckContext": "None", + "lightingContext": "Irrelevant" + }, + { + "$type": "FeatureDefinitionAbilityCheckAffinity+AbilityCheckAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Strength", + "proficiencyName": "", + "affinity": "None", + "abilityCheckGroupOperation": "SubstractDie", + "abilityCheckModifierDiceNumber": 1, + "abilityCheckModifierDieType": "D6", + "abilityCheckContext": "None", + "lightingContext": "Irrelevant" + }, + { + "$type": "FeatureDefinitionAbilityCheckAffinity+AbilityCheckAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Strength", + "proficiencyName": "", + "affinity": "None", + "abilityCheckGroupOperation": "SubstractDie", + "abilityCheckModifierDiceNumber": 1, + "abilityCheckModifierDieType": "D6", + "abilityCheckContext": "None", + "lightingContext": "Irrelevant" + }, + { + "$type": "FeatureDefinitionAbilityCheckAffinity+AbilityCheckAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Wisdom", + "proficiencyName": "", + "affinity": "None", + "abilityCheckGroupOperation": "SubstractDie", + "abilityCheckModifierDiceNumber": 1, + "abilityCheckModifierDieType": "D6", + "abilityCheckContext": "None", + "lightingContext": "Irrelevant" + } + ], + "substractBardicDieRoll": false, + "myselfFamilyRestrictions": [], + "otherCharacterFamilyRestrictions": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&PsionicBlastTitle", + "description": "Feature/&NoContentTitle", + "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": "90bc26bd-59be-5205-8444-4a86f72b7a33", + "contentPack": 9999, + "name": "AbilityCheckAffinityPsionicBlast" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityDecrease.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityDecrease.json index ea4a12587c..35ac01b913 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityDecrease.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityDecrease.json @@ -9,7 +9,7 @@ "affinity": "Disadvantage", "abilityCheckGroupOperation": "AddDie", "abilityCheckModifierDiceNumber": 0, - "abilityCheckModifierDieType": "D8", + "abilityCheckModifierDieType": "D1", "abilityCheckContext": "None", "lightingContext": "Irrelevant" } diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityIncrease.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityIncrease.json index 33407afca1..3dbdb5f4e2 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityIncrease.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAbilityCheckAffinity/AbilityCheckAffinityWizardGraviturgistDensityIncrease.json @@ -9,7 +9,7 @@ "affinity": "Advantage", "abilityCheckGroupOperation": "AddDie", "abilityCheckModifierDiceNumber": 0, - "abilityCheckModifierDieType": "D8", + "abilityCheckModifierDieType": "D1", "abilityCheckContext": "None", "lightingContext": "Irrelevant" } diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageAcid.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageAcid.json new file mode 100644 index 0000000000..8c9da44280 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageAcid.json @@ -0,0 +1,80 @@ +{ + "$type": "FeatureDefinitionAdditionalDamage, Assembly-CSharp", + "notificationTag": "ElementalBane", + "limitedUsage": "OncePerTurn", + "firstTargetOnly": true, + "targetSide": "Enemy", + "otherSimilarAdditionalDamages": [], + "triggerCondition": "AlwaysActive", + "requiredProperty": "None", + "attackModeOnly": false, + "attackOnly": false, + "requiredTargetCondition": null, + "requiredTargetSenseType": "Darkvision", + "requiredTargetCreatureTag": "", + "requiredCharacterFamily": null, + "requiredSpecificSpell": null, + "requiredAncestryType": "Sorcerer", + "damageValueDetermination": "Die", + "flatBonus": 0, + "damageDieType": "D6", + "damageDiceNumber": 2, + "additionalDamageType": "Specific", + "specificDamageType": "DamageAcid", + "ancestryTypeForDamageType": "Sorcerer", + "damageAdvancement": "None", + "diceByRankTable": [], + "familiesWithAdditionalDice": [], + "familiesDiceNumber": 1, + "ignoreCriticalDoubleDice": false, + "hasSavingThrow": false, + "savingThrowAbility": "Dexterity", + "dcComputation": "FixedValue", + "savingThrowDC": 10, + "savingThrowDCAbilityModifier": "Dexterity", + "damageSaveAffinity": "None", + "conditionOperations": [], + "addLightSource": false, + "lightSourceForm": null, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "a6e8f7ab481608046a0a955556089c5f", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidImpactParticleReference": null, + "coldImpactParticleReference": null, + "fireImpactParticleReference": null, + "lightningImpactParticleReference": null, + "poisonImpactParticleReference": null, + "computeDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "46e8a977-3459-5578-8ea0-a84c4a46da23", + "contentPack": 9999, + "name": "AdditionalDamageElementalBaneDamageAcid" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageCold.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageCold.json new file mode 100644 index 0000000000..97517a18c7 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageCold.json @@ -0,0 +1,80 @@ +{ + "$type": "FeatureDefinitionAdditionalDamage, Assembly-CSharp", + "notificationTag": "ElementalBane", + "limitedUsage": "OncePerTurn", + "firstTargetOnly": true, + "targetSide": "Enemy", + "otherSimilarAdditionalDamages": [], + "triggerCondition": "AlwaysActive", + "requiredProperty": "None", + "attackModeOnly": false, + "attackOnly": false, + "requiredTargetCondition": null, + "requiredTargetSenseType": "Darkvision", + "requiredTargetCreatureTag": "", + "requiredCharacterFamily": null, + "requiredSpecificSpell": null, + "requiredAncestryType": "Sorcerer", + "damageValueDetermination": "Die", + "flatBonus": 0, + "damageDieType": "D6", + "damageDiceNumber": 2, + "additionalDamageType": "Specific", + "specificDamageType": "DamageCold", + "ancestryTypeForDamageType": "Sorcerer", + "damageAdvancement": "None", + "diceByRankTable": [], + "familiesWithAdditionalDice": [], + "familiesDiceNumber": 1, + "ignoreCriticalDoubleDice": false, + "hasSavingThrow": false, + "savingThrowAbility": "Dexterity", + "dcComputation": "FixedValue", + "savingThrowDC": 10, + "savingThrowDCAbilityModifier": "Dexterity", + "damageSaveAffinity": "None", + "conditionOperations": [], + "addLightSource": false, + "lightSourceForm": null, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "38c44805a1a3e4c4aaf0cd27dbe5f3f6", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidImpactParticleReference": null, + "coldImpactParticleReference": null, + "fireImpactParticleReference": null, + "lightningImpactParticleReference": null, + "poisonImpactParticleReference": null, + "computeDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "a5f1693a-575e-56a3-a447-aed62894eeeb", + "contentPack": 9999, + "name": "AdditionalDamageElementalBaneDamageCold" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageFire.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageFire.json new file mode 100644 index 0000000000..9790574830 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageFire.json @@ -0,0 +1,80 @@ +{ + "$type": "FeatureDefinitionAdditionalDamage, Assembly-CSharp", + "notificationTag": "ElementalBane", + "limitedUsage": "OncePerTurn", + "firstTargetOnly": true, + "targetSide": "Enemy", + "otherSimilarAdditionalDamages": [], + "triggerCondition": "AlwaysActive", + "requiredProperty": "None", + "attackModeOnly": false, + "attackOnly": false, + "requiredTargetCondition": null, + "requiredTargetSenseType": "Darkvision", + "requiredTargetCreatureTag": "", + "requiredCharacterFamily": null, + "requiredSpecificSpell": null, + "requiredAncestryType": "Sorcerer", + "damageValueDetermination": "Die", + "flatBonus": 0, + "damageDieType": "D6", + "damageDiceNumber": 2, + "additionalDamageType": "Specific", + "specificDamageType": "DamageFire", + "ancestryTypeForDamageType": "Sorcerer", + "damageAdvancement": "None", + "diceByRankTable": [], + "familiesWithAdditionalDice": [], + "familiesDiceNumber": 1, + "ignoreCriticalDoubleDice": false, + "hasSavingThrow": false, + "savingThrowAbility": "Dexterity", + "dcComputation": "FixedValue", + "savingThrowDC": 10, + "savingThrowDCAbilityModifier": "Dexterity", + "damageSaveAffinity": "None", + "conditionOperations": [], + "addLightSource": false, + "lightSourceForm": null, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "e446eddf529bfc94c9b972fc384b9986", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidImpactParticleReference": null, + "coldImpactParticleReference": null, + "fireImpactParticleReference": null, + "lightningImpactParticleReference": null, + "poisonImpactParticleReference": null, + "computeDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "cfe60200-01ad-565d-ab43-b8aaa2ca8ff4", + "contentPack": 9999, + "name": "AdditionalDamageElementalBaneDamageFire" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageLightning.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageLightning.json new file mode 100644 index 0000000000..f868f9529c --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageLightning.json @@ -0,0 +1,80 @@ +{ + "$type": "FeatureDefinitionAdditionalDamage, Assembly-CSharp", + "notificationTag": "ElementalBane", + "limitedUsage": "OncePerTurn", + "firstTargetOnly": true, + "targetSide": "Enemy", + "otherSimilarAdditionalDamages": [], + "triggerCondition": "AlwaysActive", + "requiredProperty": "None", + "attackModeOnly": false, + "attackOnly": false, + "requiredTargetCondition": null, + "requiredTargetSenseType": "Darkvision", + "requiredTargetCreatureTag": "", + "requiredCharacterFamily": null, + "requiredSpecificSpell": null, + "requiredAncestryType": "Sorcerer", + "damageValueDetermination": "Die", + "flatBonus": 0, + "damageDieType": "D6", + "damageDiceNumber": 2, + "additionalDamageType": "Specific", + "specificDamageType": "DamageLightning", + "ancestryTypeForDamageType": "Sorcerer", + "damageAdvancement": "None", + "diceByRankTable": [], + "familiesWithAdditionalDice": [], + "familiesDiceNumber": 1, + "ignoreCriticalDoubleDice": false, + "hasSavingThrow": false, + "savingThrowAbility": "Dexterity", + "dcComputation": "FixedValue", + "savingThrowDC": 10, + "savingThrowDCAbilityModifier": "Dexterity", + "damageSaveAffinity": "None", + "conditionOperations": [], + "addLightSource": false, + "lightSourceForm": null, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "7ee946178940d56438b69281484e7a39", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidImpactParticleReference": null, + "coldImpactParticleReference": null, + "fireImpactParticleReference": null, + "lightningImpactParticleReference": null, + "poisonImpactParticleReference": null, + "computeDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "07dd08e9-3d9a-5b60-a573-dbf30b996ab4", + "contentPack": 9999, + "name": "AdditionalDamageElementalBaneDamageLightning" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageThunder.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageThunder.json new file mode 100644 index 0000000000..d23fd10d03 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageElementalBaneDamageThunder.json @@ -0,0 +1,80 @@ +{ + "$type": "FeatureDefinitionAdditionalDamage, Assembly-CSharp", + "notificationTag": "ElementalBane", + "limitedUsage": "OncePerTurn", + "firstTargetOnly": true, + "targetSide": "Enemy", + "otherSimilarAdditionalDamages": [], + "triggerCondition": "AlwaysActive", + "requiredProperty": "None", + "attackModeOnly": false, + "attackOnly": false, + "requiredTargetCondition": null, + "requiredTargetSenseType": "Darkvision", + "requiredTargetCreatureTag": "", + "requiredCharacterFamily": null, + "requiredSpecificSpell": null, + "requiredAncestryType": "Sorcerer", + "damageValueDetermination": "Die", + "flatBonus": 0, + "damageDieType": "D6", + "damageDiceNumber": 2, + "additionalDamageType": "Specific", + "specificDamageType": "DamageThunder", + "ancestryTypeForDamageType": "Sorcerer", + "damageAdvancement": "None", + "diceByRankTable": [], + "familiesWithAdditionalDice": [], + "familiesDiceNumber": 1, + "ignoreCriticalDoubleDice": false, + "hasSavingThrow": false, + "savingThrowAbility": "Dexterity", + "dcComputation": "FixedValue", + "savingThrowDC": 10, + "savingThrowDCAbilityModifier": "Dexterity", + "damageSaveAffinity": "None", + "conditionOperations": [], + "addLightSource": false, + "lightSourceForm": null, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "3e25fca5d3585174f9b7e20aca6ef3d9", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidImpactParticleReference": null, + "coldImpactParticleReference": null, + "fireImpactParticleReference": null, + "lightningImpactParticleReference": null, + "poisonImpactParticleReference": null, + "computeDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "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": "b698604d-6cab-56a5-bf73-1f765786bf0a", + "contentPack": 9999, + "name": "AdditionalDamageElementalBaneDamageThunder" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityPsionicBlast.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityPsionicBlast.json new file mode 100644 index 0000000000..83b7ebfcb4 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityPsionicBlast.json @@ -0,0 +1,62 @@ +{ + "$type": "FeatureDefinitionCombatAffinity, Assembly-CSharp", + "initiativeAffinity": "None", + "canRageToOvercomeSurprise": false, + "attackOfOpportunityImmunity": false, + "attackOfOpportunityOnMeAdvantageType": "None", + "attackOnMeAdvantage": "None", + "attackOnMeCountLimit": -1, + "autoCritical": false, + "criticalHitImmunity": false, + "myAttackAffinityFilter": "Always", + "myAttackAdvantage": "None", + "ignoreCover": false, + "permanentCover": "None", + "ignoreRangeAdvantage": false, + "myAttackModifierValueDetermination": "Die", + "myAttackModifierSign": "Substract", + "myAttackModifierDiceNumber": 1, + "myAttackModifierDieType": "D6", + "myAttackDamageMultiplier": 1.0, + "myDamageReductionValueDetermination": "None", + "myDamageReductionDiceNumber": 1, + "myDamageReductionDieType": "D4", + "situationalContext": "None", + "requiredCondition": null, + "nullifiedBySenses": [], + "nullifiedBySelfSenses": [], + "multiAttackAffinity": false, + "multiAttackDefenseValue": 0, + "readyAttackAdvantage": "None", + "shoveOnReadyAttackHit": false, + "autoFormatDescription": true, + "myselfFamilyRestrictions": [], + "otherCharacterFamilyRestrictions": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&PsionicBlastTitle", + "description": "Feature/&NoContentTitle", + "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": "c70af40a-901c-5673-94b1-3e3c38181282", + "contentPack": 9999, + "name": "CombatAffinityPsionicBlast" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfThespianImprovedTerrificPerformance.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfThespianImprovedTerrificPerformance.json index 3abaaefe96..594f7e45c9 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfThespianImprovedTerrificPerformance.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfThespianImprovedTerrificPerformance.json @@ -33,7 +33,7 @@ "targetSide": "Enemy", "durationType": "Round", "durationParameter": 1, - "endOfEffect": "EndOfTurn", + "endOfEffect": "EndOfSourceTurn", "hasSavingThrow": true, "disableSavingThrowOnAllies": false, "savingThrowAbility": "Wisdom", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json index d6b97a9c5a..d95d58a8ee 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageAcid.json @@ -320,7 +320,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, "title": "Elemental Bane: Acid Damage", - "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Acid Damage damage, the target takes an extra 2d6 Acid Damage damage. Moreover, the target loses any resistance to Acid Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json index 60e16b4fd7..2ab11125a5 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageCold.json @@ -320,7 +320,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, "title": "Elemental Bane: Cold Damage", - "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Cold Damage damage, the target takes an extra 2d6 Cold Damage damage. Moreover, the target loses any resistance to Cold Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json index 9b8418640d..745ac0e891 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageFire.json @@ -320,7 +320,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, "title": "Elemental Bane: Fire Damage", - "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Fire Damage damage, the target takes an extra 2d6 Fire Damage damage. Moreover, the target loses any resistance to Fire Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json index 9f96af934f..a20c2b3939 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageLightning.json @@ -320,7 +320,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, "title": "Elemental Bane: Lightning Damage", - "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Lightning Damage damage, the target takes an extra 2d6 Lightning Damage damage. Moreover, the target loses any resistance to Lightning Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json index 4c41208232..7b4c1f096e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/ElementalBaneDamageThunder.json @@ -320,7 +320,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, "title": "Elemental Bane: Thunder Damage", - "description": "Choose one creature you can see within range. The target must succeed on a Constitution saving throw or be affected by the spell for its duration. The first time each turn the affected target takes Thunder Damage damage, the target takes an extra 2d6 Thunder Damage damage. Moreover, the target loses any resistance to Thunder Damage damage until the spell ends. When you cast this spell using a spell slot of 5th level or higher, you can target one additional creature for each slot level above 4th. The creatures must be within 30 feet of each other when you target them.", + "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json index c225304c2e..a6d84cbdc9 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/PsionicBlast.json @@ -73,56 +73,6 @@ "effectApplication": "All", "effectFormFilters": [], "effectForms": [ - { - "$type": "EffectForm, Assembly-CSharp", - "formType": "Motion", - "addBonusMode": "None", - "applyLevel": "No", - "levelType": "ClassLevel", - "levelMultiplier": 1, - "diceByLevelTable": [], - "createdByCharacter": true, - "createdByCondition": false, - "hasSavingThrow": true, - "savingThrowAffinity": "Negates", - "dcModifier": 0, - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn", - "motionForm": { - "$type": "MotionForm, Assembly-CSharp", - "type": "PushFromOrigin", - "distance": 4, - "forceTurnTowardsSourceCharacterAfterPush": false, - "forceSourceCharacterTurnTowardsTargetAfterPush": false - }, - "hasFilterId": false, - "filterId": 0 - }, - { - "$type": "EffectForm, Assembly-CSharp", - "formType": "Motion", - "addBonusMode": "None", - "applyLevel": "No", - "levelType": "ClassLevel", - "levelMultiplier": 1, - "diceByLevelTable": [], - "createdByCharacter": true, - "createdByCondition": false, - "hasSavingThrow": true, - "savingThrowAffinity": "Negates", - "dcModifier": 0, - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn", - "motionForm": { - "$type": "MotionForm, Assembly-CSharp", - "type": "FallProne", - "distance": 0, - "forceTurnTowardsSourceCharacterAfterPush": false, - "forceSourceCharacterTurnTowardsTargetAfterPush": false - }, - "hasFilterId": false, - "filterId": 0 - }, { "$type": "EffectForm, Assembly-CSharp", "formType": "Damage", @@ -157,6 +107,33 @@ }, "hasFilterId": false, "filterId": 0 + }, + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Condition", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionPsionicBlast", + "conditionDefinition": "Definition:ConditionPsionicBlast:cb0c1036-6f3f-592c-b467-a4c6d4725038", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 } ], "specialFormsDescription": "", From 599eb1e795c432b266fed1c51068721d40a21558 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 16:21:17 -0700 Subject: [PATCH 46/52] refactor FeatureDefinitionAbilityCheckAffinityBuilder --- ...reDefinitionAbilityCheckAffinityBuilder.cs | 27 +++------ SolastaUnfinishedBusiness/Feats/OtherFeats.cs | 6 +- .../Models/CustomConditionsContext.cs | 5 +- .../Models/CustomItemsContext.cs | 4 +- SolastaUnfinishedBusiness/Races/Wyrmkin.cs | 5 +- .../Spells/SpellBuildersLevel04.cs | 58 ++++++++++++++----- .../Builders/InvocationsBuilders.cs | 17 ++++-- .../Subclasses/MartialRoyalKnight.cs | 4 +- .../Subclasses/PathOfTheSpirits.cs | 15 +++-- .../Subclasses/RangerSurvivalist.cs | 5 +- .../Subclasses/WizardGraviturgist.cs | 6 +- 11 files changed, 90 insertions(+), 62 deletions(-) diff --git a/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionAbilityCheckAffinityBuilder.cs b/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionAbilityCheckAffinityBuilder.cs index 0061caab57..ad30cd50cd 100644 --- a/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionAbilityCheckAffinityBuilder.cs +++ b/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionAbilityCheckAffinityBuilder.cs @@ -15,6 +15,7 @@ internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndSetAffinityGroups( CharacterAbilityCheckAffinity affinityType = CharacterAbilityCheckAffinity.None, DieType dieType = DieType.D1, int diceNumber = 0, + AbilityCheckGroupOperation abilityCheckGroupOperation = AbilityCheckGroupOperation.AddDie, params (string abilityScoreName, string proficiencyName, AbilityCheckContext abilityCheckContext)[] abilityProficiencyPairs) { @@ -25,6 +26,7 @@ internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndSetAffinityGroups( abilityScoreName = tuple.abilityScoreName, proficiencyName = (tuple.proficiencyName ?? string.Empty).Trim(), affinity = affinityType, + abilityCheckGroupOperation = abilityCheckGroupOperation, abilityCheckModifierDiceNumber = diceNumber, abilityCheckModifierDieType = dieType, abilityCheckContext = tuple.abilityCheckContext @@ -37,6 +39,7 @@ internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndSetAffinityGroups( CharacterAbilityCheckAffinity affinityType = CharacterAbilityCheckAffinity.None, DieType dieType = DieType.D1, int diceNumber = 0, + AbilityCheckGroupOperation abilityCheckGroupOperation = AbilityCheckGroupOperation.AddDie, params (string abilityScoreName, string proficiencyName)[] abilityProficiencyPairs) { Definition.AffinityGroups.SetRange( @@ -46,6 +49,7 @@ internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndSetAffinityGroups( abilityScoreName = pair.abilityScoreName, proficiencyName = (pair.proficiencyName ?? string.Empty).Trim(), affinity = affinityType, + abilityCheckGroupOperation = abilityCheckGroupOperation, abilityCheckModifierDiceNumber = diceNumber, abilityCheckModifierDieType = dieType })); @@ -57,6 +61,7 @@ internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndAddAffinityGroups( CharacterAbilityCheckAffinity affinityType = CharacterAbilityCheckAffinity.None, DieType dieType = DieType.D1, int diceNumber = 0, + AbilityCheckGroupOperation abilityCheckGroupOperation = AbilityCheckGroupOperation.AddDie, params (string abilityScoreName, string proficiencyName)[] abilityProficiencyPairs) { Definition.AffinityGroups.AddRange( @@ -66,6 +71,7 @@ internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndAddAffinityGroups( abilityScoreName = pair.abilityScoreName, proficiencyName = (pair.proficiencyName ?? string.Empty).Trim(), affinity = affinityType, + abilityCheckGroupOperation = abilityCheckGroupOperation, abilityCheckModifierDiceNumber = diceNumber, abilityCheckModifierDieType = dieType })); @@ -73,30 +79,13 @@ internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndAddAffinityGroups( return this; } - private FeatureDefinitionAbilityCheckAffinityBuilder BuildAndSetAffinityGroups( - CharacterAbilityCheckAffinity affinityType = CharacterAbilityCheckAffinity.None, - DieType dieType = DieType.D1, - int diceNumber = 0, - params string[] abilityScores) - { - return BuildAndSetAffinityGroups(affinityType, dieType, diceNumber, - abilityScores.Select(a => (a, string.Empty)).ToArray()); - } - internal FeatureDefinitionAbilityCheckAffinityBuilder BuildAndSetAffinityGroups( CharacterAbilityCheckAffinity affinityType, params string[] abilityScores) { - return BuildAndSetAffinityGroups(affinityType, DieType.D1, 0, abilityScores); - } - -#if false - internal FeatureDefinitionAbilityCheckAffinityBuilder UseControllerAbilityChecks() - { - Definition.useControllerAbilityChecks = true; - return this; + return BuildAndSetAffinityGroups(affinityType, DieType.D1, 0, AbilityCheckGroupOperation.AddDie, + abilityScores.Select(a => (a, string.Empty)).ToArray()); } -#endif #region Constructors diff --git a/SolastaUnfinishedBusiness/Feats/OtherFeats.cs b/SolastaUnfinishedBusiness/Feats/OtherFeats.cs index 355967de25..f9dc90fd6e 100644 --- a/SolastaUnfinishedBusiness/Feats/OtherFeats.cs +++ b/SolastaUnfinishedBusiness/Feats/OtherFeats.cs @@ -444,8 +444,9 @@ private static FeatDefinition BuildPickPocket() .Create(FeatureDefinitionAbilityCheckAffinitys.AbilityCheckAffinityFeatLockbreaker, "AbilityCheckAffinityFeatPickPocket") .SetGuiPresentation("FeatPickPocket", Category.Feat) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, - (AttributeDefinitions.Dexterity, SkillDefinitions.SleightOfHand)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Advantage, + abilityProficiencyPairs: (AttributeDefinitions.Dexterity, SkillDefinitions.SleightOfHand)) .AddToDB(); var proficiencyFeatPickPocket = FeatureDefinitionProficiencyBuilder @@ -1044,6 +1045,7 @@ private static FeatDefinition BuildDungeonDelver() .SetGuiPresentation(Name, Category.Feat, Gui.NoLocalization) .BuildAndSetAffinityGroups( CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, + AbilityCheckGroupOperation.AddDie, (AttributeDefinitions.Wisdom, SkillDefinitions.Perception, AbilityCheckContext.GadgetInteraction), (AttributeDefinitions.Intelligence, SkillDefinitions.Investigation, diff --git a/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs b/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs index c074cefeb6..d7d6dafb16 100644 --- a/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs +++ b/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs @@ -70,8 +70,9 @@ private static ConditionDefinition BuildLightSensitivity() var abilityCheckAffinityLightSensitivity = FeatureDefinitionAbilityCheckAffinityBuilder .Create("AbilityCheckAffinityLightSensitivity") .SetGuiPresentation(Category.Feature) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Disadvantage, DieType.D1, 0, - (AttributeDefinitions.Wisdom, SkillDefinitions.Perception)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Disadvantage, + abilityProficiencyPairs: (AttributeDefinitions.Wisdom, SkillDefinitions.Perception)) .AddToDB(); var combatAffinityDarkelfLightSensitivity = FeatureDefinitionCombatAffinityBuilder diff --git a/SolastaUnfinishedBusiness/Models/CustomItemsContext.cs b/SolastaUnfinishedBusiness/Models/CustomItemsContext.cs index 9692c4ff05..a13b576386 100644 --- a/SolastaUnfinishedBusiness/Models/CustomItemsContext.cs +++ b/SolastaUnfinishedBusiness/Models/CustomItemsContext.cs @@ -70,8 +70,10 @@ private static ItemDefinition BuildGlovesOfThievery() FeatureDefinitionAbilityCheckAffinityBuilder .Create("AbilityCheckAffinityGlovesOfThievery") .SetGuiPresentation("GlovesOfThievery", Category.Item, Gui.NoLocalization) - .BuildAndSetAffinityGroups(RuleDefinitions.CharacterAbilityCheckAffinity.None, + .BuildAndSetAffinityGroups( + RuleDefinitions.CharacterAbilityCheckAffinity.None, RuleDefinitions.DieType.D1, 5, + RuleDefinitions.AbilityCheckGroupOperation.AddDie, (AttributeDefinitions.Dexterity, SkillDefinitions.SleightOfHand), (AttributeDefinitions.Dexterity, ToolDefinitions.ThievesToolsType)) .AddToDB(), false)) diff --git a/SolastaUnfinishedBusiness/Races/Wyrmkin.cs b/SolastaUnfinishedBusiness/Races/Wyrmkin.cs index 4b25ced75a..8a521edd8e 100644 --- a/SolastaUnfinishedBusiness/Races/Wyrmkin.cs +++ b/SolastaUnfinishedBusiness/Races/Wyrmkin.cs @@ -81,8 +81,9 @@ private static CharacterRaceDefinition BuildCaveWyrmkin(CharacterRaceDefinition var abilityCheckAffinityCaveWyrmkinCaveSenses = FeatureDefinitionAbilityCheckAffinityBuilder .Create($"AbilityCheckAffinity{Name}CaveSenses") .SetGuiPresentation(Category.Feature) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, - (AttributeDefinitions.Wisdom, SkillDefinitions.Survival)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Advantage, + abilityProficiencyPairs: (AttributeDefinitions.Wisdom, SkillDefinitions.Survival)) .AddToDB(); var conditionCaveWyrmkinShovingAttack = ConditionDefinitionBuilder diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs index 8bba9b542e..5a097d4562 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs @@ -181,6 +181,36 @@ internal static SpellDefinition BuildPsionicBlast() { const string NAME = "PsionicBlast"; + var condition = ConditionDefinitionBuilder + .Create($"Condition{NAME}") + .SetGuiPresentation(NAME, Category.Spell, ConditionDistracted) + .SetPossessive() + .SetConditionType(ConditionType.Detrimental) + .SetFeatures( + FeatureDefinitionCombatAffinityBuilder + .Create($"CombatAffinity{NAME}") + .SetGuiPresentation(NAME, Category.Spell, Gui.NoLocalization) + .SetMyAttackModifierSign(AttackModifierSign.Substract) + .SetMyAttackModifierDieType(DieType.D6) + .AddToDB(), + FeatureDefinitionAbilityCheckAffinityBuilder + .Create($"AbilityCheckAffinity{NAME}") + .SetGuiPresentation(NAME, Category.Spell, Gui.NoLocalization) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.None, DieType.D6, 1, + AbilityCheckGroupOperation.SubstractDie, + (AttributeDefinitions.Strength, string.Empty), + (AttributeDefinitions.Strength, string.Empty), + (AttributeDefinitions.Dexterity, string.Empty), + (AttributeDefinitions.Constitution, string.Empty), + (AttributeDefinitions.Intelligence, string.Empty), + (AttributeDefinitions.Wisdom, string.Empty), + (AttributeDefinitions.Charisma, string.Empty)) + .AddToDB()) + .AddToDB(); + + condition.GuiPresentation.description = Gui.NoLocalization; + var spell = SpellDefinitionBuilder .Create(NAME) .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.PsionicBlast, 128)) @@ -203,18 +233,13 @@ internal static SpellDefinition BuildPsionicBlast() .SetEffectForms( EffectFormBuilder .Create() - .HasSavingThrow(EffectSavingThrowType.Negates) - .SetMotionForm(MotionForm.MotionType.PushFromOrigin, 4) + .HasSavingThrow(EffectSavingThrowType.HalfDamage) + .SetDamageForm(DamageTypePsychic, 5, DieType.D8) .Build(), EffectFormBuilder .Create() .HasSavingThrow(EffectSavingThrowType.Negates) - .SetMotionForm(MotionForm.MotionType.FallProne) - .Build(), - EffectFormBuilder - .Create() - .HasSavingThrow(EffectSavingThrowType.HalfDamage) - .SetDamageForm(DamageTypePsychic, 5, DieType.D8) + .SetConditionForm(condition, ConditionForm.ConditionOperation.Add) .Build()) .SetCasterEffectParameters(ViciousMockery) .SetImpactEffectParameters(DreadfulOmen) @@ -290,13 +315,16 @@ internal static SpellDefinition BuildStaggeringSmite() FeatureDefinitionAbilityCheckAffinityBuilder .Create($"AbilityCheckAffinity{NAME}") .SetGuiPresentation(NAME, Category.Spell, Gui.NoLocalization) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Disadvantage, - AttributeDefinitions.Strength, - AttributeDefinitions.Dexterity, - AttributeDefinitions.Constitution, - AttributeDefinitions.Intelligence, - AttributeDefinitions.Wisdom, - AttributeDefinitions.Charisma) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Disadvantage, + [ + AttributeDefinitions.Strength, + AttributeDefinitions.Dexterity, + AttributeDefinitions.Constitution, + AttributeDefinitions.Intelligence, + AttributeDefinitions.Wisdom, + AttributeDefinitions.Charisma + ]) .AddToDB(), FeatureDefinitionActionAffinityBuilder .Create($"ActionAffinity{NAME}") diff --git a/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs b/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs index ee582c9b32..b644016538 100644 --- a/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs +++ b/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs @@ -640,12 +640,17 @@ internal static InvocationDefinition BuildPerniciousCloak() var abilityCheckAffinityPerniciousCloak = FeatureDefinitionAbilityCheckAffinityBuilder .Create($"AbilityCheckAffinity{Name}") .SetGuiPresentation($"Condition{Name}Self", Category.Condition) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, - (AttributeDefinitions.Charisma, SkillDefinitions.Intimidation)) - .BuildAndAddAffinityGroups(CharacterAbilityCheckAffinity.Disadvantage, DieType.D1, 0, - (AttributeDefinitions.Charisma, SkillDefinitions.Deception), - (AttributeDefinitions.Charisma, SkillDefinitions.Performance), - (AttributeDefinitions.Charisma, SkillDefinitions.Persuasion)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Advantage, + abilityProficiencyPairs: (AttributeDefinitions.Charisma, SkillDefinitions.Intimidation)) + .BuildAndAddAffinityGroups( + CharacterAbilityCheckAffinity.Disadvantage, + abilityProficiencyPairs: + [ + (AttributeDefinitions.Charisma, SkillDefinitions.Deception), + (AttributeDefinitions.Charisma, SkillDefinitions.Performance), + (AttributeDefinitions.Charisma, SkillDefinitions.Persuasion) + ]) .AddToDB(); var conditionPerniciousCloakSelf = ConditionDefinitionBuilder diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialRoyalKnight.cs b/SolastaUnfinishedBusiness/Subclasses/MartialRoyalKnight.cs index 6dc18d85d6..a295d9b38e 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialRoyalKnight.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialRoyalKnight.cs @@ -60,9 +60,7 @@ public MartialRoyalKnight() .SetGuiPresentation($"FeatureSet{Name}RoyalEnvoy", Category.Feature) .BuildAndSetAffinityGroups( CharacterAbilityCheckAffinity.HalfProficiencyWhenNotProficient, - DieType.D1, - 0, - (AttributeDefinitions.Charisma, null)) + abilityProficiencyPairs: (AttributeDefinitions.Charisma, string.Empty)) .AddToDB(); var featureSetRoyalEnvoy = FeatureDefinitionFeatureSetBuilder diff --git a/SolastaUnfinishedBusiness/Subclasses/PathOfTheSpirits.cs b/SolastaUnfinishedBusiness/Subclasses/PathOfTheSpirits.cs index be4927c6f2..e9ad0500e2 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PathOfTheSpirits.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PathOfTheSpirits.cs @@ -73,8 +73,9 @@ public PathOfTheSpirits() FeatureDefinitionAbilityCheckAffinityBuilder .Create($"AbilityCheckAffinity{Name}BearMight") .SetGuiPresentationNoContent(true) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, - (AttributeDefinitions.Strength, string.Empty)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Advantage, + abilityProficiencyPairs: (AttributeDefinitions.Strength, string.Empty)) .AddToDB()), BuildAnimalAspectChoice("Eagle", SenseSuperiorDarkvision, @@ -86,8 +87,9 @@ public PathOfTheSpirits() FeatureDefinitionAbilityCheckAffinityBuilder .Create($"AbilityCheckAffinity{Name}Eagle") .SetGuiPresentation("FeatureSetPathOfTheSpiritsAnimalAspectChoiceEagle", Category.Feature) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, - (AttributeDefinitions.Wisdom, SkillDefinitions.Perception)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Advantage, + abilityProficiencyPairs: (AttributeDefinitions.Wisdom, SkillDefinitions.Perception)) .AddToDB()), BuildAnimalAspectChoice("Wolf", FeatureDefinitionProficiencyBuilder @@ -98,8 +100,9 @@ public PathOfTheSpirits() FeatureDefinitionAbilityCheckAffinityBuilder .Create($"AbilityCheckAffinity{Name}Wolf") .SetGuiPresentation("FeatureSetPathOfTheSpiritsAnimalAspectChoiceWolf", Category.Feature) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, - (AttributeDefinitions.Wisdom, SkillDefinitions.Survival)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Advantage, + abilityProficiencyPairs: (AttributeDefinitions.Wisdom, SkillDefinitions.Survival)) .AddToDB(), BuildSpiritSeekerSpell(SpellDefinitions.IdentifyCreatures, RechargeRate.LongRest))) .AddToDB(); diff --git a/SolastaUnfinishedBusiness/Subclasses/RangerSurvivalist.cs b/SolastaUnfinishedBusiness/Subclasses/RangerSurvivalist.cs index 401dc006b4..279cdbcded 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RangerSurvivalist.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RangerSurvivalist.cs @@ -97,8 +97,9 @@ public RangerSurvivalist() var abilityCheckAnalyticalMind = FeatureDefinitionAbilityCheckAffinityBuilder .Create($"AbilityCheck{Name}AnalyticalMind") .SetGuiPresentation($"FeatureSet{Name}AnalyticalMind", Category.Feature) - .BuildAndSetAffinityGroups(CharacterAbilityCheckAffinity.Advantage, DieType.D1, 0, - (AttributeDefinitions.Wisdom, SkillDefinitions.Survival)) + .BuildAndSetAffinityGroups( + CharacterAbilityCheckAffinity.Advantage, + abilityProficiencyPairs: (AttributeDefinitions.Wisdom, SkillDefinitions.Survival)) .AddToDB(); FeatureSetAnalyticalMind.FeatureSet.Add(abilityCheckAnalyticalMind); diff --git a/SolastaUnfinishedBusiness/Subclasses/WizardGraviturgist.cs b/SolastaUnfinishedBusiness/Subclasses/WizardGraviturgist.cs index 53f7c861a6..e1d26ad9bb 100644 --- a/SolastaUnfinishedBusiness/Subclasses/WizardGraviturgist.cs +++ b/SolastaUnfinishedBusiness/Subclasses/WizardGraviturgist.cs @@ -40,8 +40,7 @@ public WizardGraviturgist() .SetGuiPresentation(POWER_DENSITY_INCREASE, Category.Feature, Gui.NoLocalization) .BuildAndSetAffinityGroups( CharacterAbilityCheckAffinity.Advantage, - DieType.D8, 0, - (AttributeDefinitions.Strength, SkillDefinitions.Athletics)) + abilityProficiencyPairs: (AttributeDefinitions.Strength, SkillDefinitions.Athletics)) .AddToDB(), FeatureDefinitionSavingThrowAffinityBuilder .Create($"SavingThrowAffinity{Name}DensityIncrease") @@ -90,8 +89,7 @@ public WizardGraviturgist() .SetGuiPresentation(POWER_DENSITY_DECREASE, Category.Feature, Gui.NoLocalization) .BuildAndSetAffinityGroups( CharacterAbilityCheckAffinity.Disadvantage, - DieType.D8, 0, - (AttributeDefinitions.Strength, SkillDefinitions.Athletics)) + abilityProficiencyPairs: (AttributeDefinitions.Strength, SkillDefinitions.Athletics)) .AddToDB(), FeatureDefinitionSavingThrowAffinityBuilder .Create($"SavingThrowAffinity{Name}DensityDecrease") From e380431917bf9aa658fb9f0660d806c82e8d6b63 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 16:26:07 -0700 Subject: [PATCH 47/52] update Psionic Blast desc --- SolastaUnfinishedBusiness/ChangelogHistory.txt | 1 + .../Translations/de/Spells/Spells04-de.txt | 2 +- .../Translations/en/Spells/Spells04-en.txt | 2 +- .../Translations/es/Spells/Spells04-es.txt | 2 +- .../Translations/fr/Spells/Spells04-fr.txt | 2 +- .../Translations/it/Spells/Spells04-it.txt | 2 +- .../Translations/ja/Spells/Spells04-ja.txt | 2 +- .../Translations/ko/Spells/Spells04-ko.txt | 2 +- .../Translations/pt-BR/Spells/Spells04-pt-BR.txt | 2 +- .../Translations/ru/Spells/Spells04-ru.txt | 2 +- .../Translations/zh-CN/Spells/Spells04-zh-CN.txt | 2 +- 11 files changed, 11 insertions(+), 10 deletions(-) diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index 69cc4db805..686ceff90e 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -9,6 +9,7 @@ - fixed Mind Sharpener infusion not providing advantage on concentration checks - fixed Pulse Wave spell to offer push/pull options as well as increase motion distance on upcasting - fixed Stunning Strike behavior to not trigger on stunned enemies and auto disable on a failed saving +- moved Psionic Blast to spell level 4, and converted into homebrew 1.5.97.12: diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt index eecefe2295..dbc836dc41 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=An einem Punkt, den Sie in Reichweite sehen k Spell/&GravitySinkholeTitle=Schwerkraft-Dolinenloch Spell/&IrresistiblePerformanceDescription=Sie weben ein Lied in die Luft und veranlassen diejenigen, die es hören, seine Großartigkeit zu applaudieren. Alle Kreaturen Ihrer Wahl innerhalb eines 30-Fuß-Würfels in Reichweite müssen einen Charisma-Rettungswurf ausführen oder bis zum Beginn Ihres nächsten Zuges gezwungen werden, zu klatschen und zu schreien. Einer Kreatur, die von dir verzaubert ist, misslingt dieser Rettungswurf immer. Eine klatschende Kreatur kann keine Aktionen ausführen, die ihre Hände oder ihren Mund erfordern, kann sich aber ansonsten normal verhalten. Dieser Zauber hat keine Wirkung auf Kreaturen, die gegen Bezauberung immun sind. Spell/&IrresistiblePerformanceTitle=Unwiderstehliche Leistung -Spell/&PsionicBlastDescription=Du entfesselst eine zerstörerische Welle mentaler Kraft in einem 30-Fuß-Kegel. Jede Kreatur in der Umgebung muss einen Intelligenzrettungswurf machen. Bei einem misslungenen Rettungswurf erleidet das Ziel 5W8 psychischen Schaden, wird 20 Fuß direkt von dir weggestoßen und niedergeschlagen. Bei einem erfolgreichen Rettungswurf erleidet das Ziel nur halb so viel Schaden und wird nicht gestoßen oder niedergeschlagen. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W8 für jeden Platzlevel über der 3. +Spell/&PsionicBlastDescription=Du entfesselst eine lähmende Welle mentaler Kraft in einem 30 Fuß großen Kegel. Jede Kreatur in der Umgebung muss einen Intelligenzrettungswurf machen. Bei einem misslungenen Rettungswurf erleidet das Ziel 5W8 psychischen Schaden und zieht bis zum Ende deines nächsten Zuges d6 von all seinen Angriffswürfen und Fähigkeitsprüfungen ab. Bei einem erfolgreichen Rettungswurf erleidet das Ziel nur halb so viel Schaden. Wenn du diesen Zauber mit einem Zauberplatz der 4. Stufe oder höher wirkst, erhöht sich der Schaden um 1W8 für jeden Platzlevel über der 3. Spell/&PsionicBlastTitle=Psi-Explosion Spell/&PsychicLanceDescription=Sie entfesseln eine schimmernde Lanze psychischer Kraft von Ihrer Stirn auf eine Kreatur, die Sie in Reichweite sehen können. Ein Intelligenzrettungswurf muss ihm gelingen, sonst erleidet er 7W6 psychischen Schaden und ist bis zum Ende deines nächsten Zuges außer Gefecht gesetzt. Bei einem erfolgreichen Rettungswurf erleidet die Kreatur den halben Schaden und wird nicht außer Gefecht gesetzt. Auf höheren Ebenen. Wenn Sie diesen Zauber mit einem Zauberslot der 4. Stufe oder höher wirken, erhöht sich der Schaden um 1W6 für jede Slotstufe über der 4. Stufe. Spell/&PsychicLanceTitle=Raulothims psychische Lanze diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt index 5021b97303..6fa2cedeae 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=A 20-foot-radius sphere of crushing force form Spell/&GravitySinkholeTitle=Gravity Sinkhole Spell/&IrresistiblePerformanceDescription=You weave a song into the air, causing those who hear it to applaud its magnificence. All creatures of your choice inside a 30-foot-cube within range must make a Charisma saving throw or be forced to clap and shout until the start of your next turn. A creature that is charmed by you always fails this saving throw. A clapping creature cannot perform any actions that require their hands or mouth but can otherwise act normally. This spell has no effect on creatures that are immune to charm. Spell/&IrresistiblePerformanceTitle=Irresistible Performance -Spell/&PsionicBlastDescription=You unleash a destructive wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, is pushed 20 feet directly away from you, and is knocked prone. On a successful save, a target takes half as much damage and isn't pushed or knocked prone. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. +Spell/&PsionicBlastDescription=You unleash a debilitating wave of mental power in a 30-foot cone. Each creature in the area must make an Intelligence saving throw. On a failed save, a target takes 5d8 psychic damage, and subtracts d6 from all of its attack rolls and ability checks until the end of your next turn. On a successful save, a target only takes half as much damage. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd. Spell/&PsionicBlastTitle=Psionic Blast Spell/&PsychicLanceDescription=You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. Spell/&PsychicLanceTitle=Raulothim's Psychic Lance diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt index 421cfc4c42..1332d73c0f 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=Una esfera de fuerza aplastante de 20 pies de Spell/&GravitySinkholeTitle=Sumidero de gravedad Spell/&IrresistiblePerformanceDescription=Tejes una canción en el aire, haciendo que quienes la escuchan aplaudan su magnificencia. Todas las criaturas de tu elección dentro de un cubo de 30 pies dentro del alcance deben realizar una tirada de salvación de Carisma o verse obligadas a aplaudir y gritar hasta el comienzo de tu siguiente turno. Una criatura que está encantada por ti siempre falla esta tirada de salvación. Una criatura que aplaude no puede realizar ninguna acción que requiera sus manos o boca, pero puede actuar normalmente. Este hechizo no tiene ningún efecto sobre criaturas que son inmunes al hechizo. Spell/&IrresistiblePerformanceTitle=Rendimiento irresistible -Spell/&PsionicBlastDescription=Desatas una ola destructiva de poder mental en un cono de 30 pies. Cada criatura en el área debe realizar una tirada de salvación de Inteligencia. En una salvación fallida, un objetivo sufre 5d8 de daño psíquico, es empujado a 20 pies directamente de ti y queda derribado. Con una salvación exitosa, el objetivo recibe la mitad de daño y no es empujado ni derribado. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d8 por cada nivel de espacio por encima del 3º. +Spell/&PsionicBlastDescription=Desatas una ola debilitante de poder mental en un cono de 30 pies. Cada criatura en el área debe realizar una tirada de salvación de Inteligencia. En una salvación fallida, un objetivo sufre 5d8 de daño psíquico y resta d6 de todas sus tiradas de ataque y pruebas de habilidad hasta el final de tu siguiente turno. Con una salvación exitosa, el objetivo solo recibe la mitad de daño. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d8 por cada nivel de espacio por encima del 3º. Spell/&PsionicBlastTitle=Explosión psiónica Spell/&PsychicLanceDescription=Liberas una lanza brillante de poder psíquico desde tu frente hacia una criatura que puedes ver dentro del alcance. Debe superar una tirada de salvación de Inteligencia o sufrir 7d6 de daño psíquico y quedar incapacitado hasta el final de tu siguiente turno. Con una salvación exitosa, la criatura sufre la mitad del daño y no queda incapacitada. En niveles superiores. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 por cada nivel de espacio por encima del 4º. Spell/&PsychicLanceTitle=Lanza psíquica de Raulothim diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt index 719fb6e3e7..70a263bb60 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=Une sphère de force écrasante d'un rayon de Spell/&GravitySinkholeTitle=Gouffre gravitationnel Spell/&IrresistiblePerformanceDescription=Vous lancez une chanson dans l'air, ce qui amène ceux qui l'entendent à applaudir sa magnificence. Toutes les créatures de votre choix à l'intérieur d'un cube de 9 mètres à portée doivent effectuer un jet de sauvegarde de Charisme ou être forcées d'applaudir et de crier jusqu'au début de votre prochain tour. Une créature charmée par vous échoue toujours à ce jet de sauvegarde. Une créature qui applaudit ne peut effectuer aucune action nécessitant ses mains ou sa bouche, mais peut autrement agir normalement. Ce sort n'a aucun effet sur les créatures immunisées contre le charme. Spell/&IrresistiblePerformanceTitle=Des performances irrésistibles -Spell/&PsionicBlastDescription=Vous libérez une vague de puissance mentale destructrice dans un cône de 9 mètres. Chaque créature présente dans la zone doit effectuer un jet de sauvegarde d'Intelligence. En cas d'échec, la cible subit 5d8 dégâts psychiques, est poussée à 6 mètres directement de vous et est projetée à terre. En cas de sauvegarde réussie, la cible subit deux fois moins de dégâts et n'est ni poussée ni mise à terre. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. +Spell/&PsionicBlastDescription=Vous déchaînez une vague de puissance mentale débilitante dans un cône de 9 mètres. Chaque créature dans la zone doit effectuer un jet de sauvegarde d'Intelligence. En cas d'échec, la cible subit 5d8 dégâts psychiques et soustrait d6 à tous ses jets d'attaque et de caractéristique jusqu'à la fin de votre prochain tour. En cas de réussite, la cible ne subit que la moitié de ces dégâts. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d8 pour chaque niveau d'emplacement au-dessus du niveau 3. Spell/&PsionicBlastTitle=Explosion psionique Spell/&PsychicLanceDescription=Vous lancez une lance scintillante de pouvoir psychique depuis votre front sur une créature que vous pouvez voir à portée. Il doit réussir un jet de sauvegarde d'Intelligence ou subir 7d6 dégâts psychiques et être neutralisé jusqu'à la fin de votre prochain tour. En cas de sauvegarde réussie, la créature subit la moitié des dégâts et n'est pas incapable d'agir. Aux niveaux supérieurs. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 pour chaque niveau d'emplacement supérieur au 4e. Spell/&PsychicLanceTitle=Lance psychique de Raulothim diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt index 989f35b456..db7db50c98 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=Una sfera di forza schiacciante del raggio di Spell/&GravitySinkholeTitle=Dolina di gravità Spell/&IrresistiblePerformanceDescription=Tessi una canzone nell'aria, facendo sì che coloro che la ascoltano ne applaudano la magnificenza. Tutte le creature di tua scelta all'interno di un cubo di 9 metri entro la gittata devono effettuare un tiro salvezza su Carisma o essere costrette ad applaudire e gridare fino all'inizio del tuo turno successivo. Una creatura affascinata da te fallisce sempre questo tiro salvezza. Una creatura che applaude non può eseguire alcuna azione che richieda l'uso delle mani o della bocca, ma può altrimenti agire normalmente. Questo incantesimo non ha effetto sulle creature immuni allo charme. Spell/&IrresistiblePerformanceTitle=Prestazioni irresistibili -Spell/&PsionicBlastDescription=Scatenerai un'ondata distruttiva di potere mentale in un cono di 9 metri. Ogni creatura nell'area deve effettuare un tiro salvezza su Intelligenza. Se fallisce il tiro salvezza, il bersaglio subisce 5d8 danni psichici, viene spinto a 6 metri direttamente lontano da te e cade prono. Se il tiro salvezza riesce, il bersaglio subisce la metà dei danni e non viene spinto o gettato prono. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d8 per ogni livello dello slot superiore al 3°. +Spell/&PsionicBlastDescription=Rilasci un'ondata debilitante di potere mentale in un cono di 9 metri. Ogni creatura nell'area deve effettuare un tiro salvezza su Intelligenza. Se fallisce il Tiro Salvezza, il bersaglio subisce 5d8 danni psichici e sottrae d6 da tutti i suoi tiri per colpire e prove di abilità fino alla fine del tuo turno successivo. Se il tiro salvezza riesce, il bersaglio subisce solo la metà dei danni. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d8 per ogni livello dello slot superiore al 3°. Spell/&PsionicBlastTitle=Esplosione psionica Spell/&PsychicLanceDescription=Scagli una scintillante lancia di potere psichico dalla tua fronte contro una creatura che puoi vedere e che si trova a gittata. Deve riuscire un tiro salvezza su Intelligenza o subire 7d6 danni psichici ed essere incapace fino alla fine del tuo turno successivo. Se il Tiro Salvezza riesce, la creatura subisce la metà dei danni e non diventa Incapace. A livelli più alti. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 per ogni livello dello slot superiore al 4°. Spell/&PsychicLanceTitle=Lancia psichica di Raulothim diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt index a055397d06..6ce9572c32 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=範囲内で見える地点に半径 6 フィ Spell/&GravitySinkholeTitle=重力シンクホール Spell/&IrresistiblePerformanceDescription=あなたは歌を空中に織り上げ、それを聞いた人々にその素晴らしさを称賛させます。範囲内の 30 フィート立方体内にいる、あなたが選んだすべてのクリーチャーは、魅力セーヴィング スローを行わなければ、あなたの次のターンの開始時まで拍手と叫びを強いられます。あなたに魅了されたクリーチャーは、常にこのセーヴィング スローに失敗します。拍手しているクリーチャーは、手や口を必要とする動作を行うことはできませんが、それ以外は通常どおり行動できます。この呪文は、魅了に耐性のあるクリーチャーには効果がありません。 Spell/&IrresistiblePerformanceTitle=魅力的なパフォーマンス -Spell/&PsionicBlastDescription=30 フィートの円錐形に破壊的な精神力の波を解き放ちます。範囲内のクリーチャーは全員、知力セーヴィング スローを行なわなければなりません。セーヴィング スローに失敗すると、ターゲットは 5d8 の精神ダメージを受け、あなたから 20 フィートまっすぐ押し出され、伏せ状態にされます。セーヴィング スローに成功すると、ターゲットは半分のダメージを受け、押されたり伏せ状態にされたりしません。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、3 レベルを超えるスロット レベルごとにダメージが 1d8 増加します。 +Spell/&PsionicBlastDescription=30 フィートの円錐形に精神力を衰弱させる波を放ちます。範囲内のクリーチャーは全員、知力セーヴィング スローを行なわなければなりません。セーヴィング スローに失敗すると、ターゲットは 5d8 の精神ダメージを受け、次のターンの終了まですべての攻撃ロールと能力値チェックから d6 が減算されます。セーヴィング スローに成功すると、ターゲットは半分のダメージしか受けません。この呪文を 4 レベル以上の呪文スロットを使用して発動すると、3 レベルを超えるスロット レベルごとにダメージが 1d8 増加します。 Spell/&PsionicBlastTitle=サイオニックブラスト Spell/&PsychicLanceDescription=あなたは範囲内に見える生き物に向かって額から超能力のきらめく槍を解き放ちます。それは知性セーヴィング・スローに成功するか、7d6の精神的ダメージを受けて次のターンの終わりまで無力化されなければならない。セーブに成功すると、クリーチャーは半分のダメージを受けますが、無力化されません。より高いレベルで。あなたが第 4 レベル以上の呪文スロットを使用してこの呪文を唱えると、ダメージは第 4 レベル以上のスロット レベルごとに 1d6 ずつ増加します。 Spell/&PsychicLanceTitle=ラウロシムのサイキックランス diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt index e9c272f3ad..42d3a80426 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=반경 20피트의 분쇄력 구체가 범위 Spell/&GravitySinkholeTitle=중력 싱크홀 Spell/&IrresistiblePerformanceDescription=당신은 노래를 공중에 엮어서 듣는 사람들이 그 장엄함에 박수를 치게 만듭니다. 범위 내의 30피트 큐브 안에 있는 당신이 선택한 모든 생물은 카리스마 내성 굴림을 해야 하며 그렇지 않으면 다음 턴이 시작될 때까지 박수를 치거나 소리를 지르도록 강요받아야 합니다. 당신에게 매료된 생물은 항상 이 내성굴림에 실패합니다. 박수치는 생명체는 손이나 입이 필요한 어떤 행동도 수행할 수 없지만 그 외에는 정상적으로 행동할 수 있습니다. 이 주문은 매력에 면역인 생물에게는 효과가 없습니다. Spell/&IrresistiblePerformanceTitle=거부할 수 없는 성능 -Spell/&PsionicBlastDescription=당신은 30피트 원뿔 모양으로 파괴적인 정신력의 파동을 일으킵니다. 그 지역에 있는 각 생물은 지능 내성굴림을 해야 합니다. 저장에 실패하면 대상은 5d8의 정신적 피해를 입고 20피트 떨어진 곳으로 밀려나며 넘어지게 됩니다. 내성굴림에 성공하면 대상은 절반의 피해를 입고 밀리지도 않고 쓰러지지도 않습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 3레벨 이상의 슬롯 레벨마다 피해가 1d8씩 증가합니다. +Spell/&PsionicBlastDescription=당신은 30피트 콘에서 정신력을 약화시키는 파동을 일으킵니다. 그 지역에 있는 각 생물은 지능 내성굴림을 해야 합니다. 저장에 실패하면 대상은 5d8의 심령 피해를 입고 다음 턴이 끝날 때까지 모든 공격 굴림과 능력 검사에서 d6을 뺍니다. 성공적으로 저장하면 대상은 절반의 피해만 입습니다. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 3레벨 이상의 슬롯 레벨마다 피해가 1d8씩 증가합니다. Spell/&PsionicBlastTitle=사이오닉 폭발 Spell/&PsychicLanceDescription=당신은 범위 내에서 볼 수 있는 생물에게 이마에서 반짝이는 심령력의 창을 발사합니다. 지능 내성 굴림에 성공해야 하며, 그렇지 않으면 7d6의 정신적 피해를 입고 다음 턴이 끝날 때까지 무력화되어야 합니다. 내성굴림에 성공하면 생물은 절반의 피해를 입고 무력화되지 않습니다. 더 높은 수준에서. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 4레벨 이상의 슬롯 레벨마다 피해가 1d6씩 증가합니다. Spell/&PsychicLanceTitle=라울로팀의 정신창 diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt index bf915278dc..56775c8689 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=Uma esfera de força esmagadora com 6 metros d Spell/&GravitySinkholeTitle=Sumidouro Gravitacional Spell/&IrresistiblePerformanceDescription=Você tece uma canção no ar, fazendo com que aqueles que a ouvem aplaudam sua magnificência. Todas as criaturas, à sua escolha, dentro de um cubo de 9 metros dentro do alcance devem fazer um teste de resistência de Carisma ou serão forçadas a bater palmas e gritar até o início do seu próximo turno. Uma criatura encantada por você sempre falha neste teste de resistência. Uma criatura que bate palmas não pode realizar nenhuma ação que exija as mãos ou a boca, mas pode agir normalmente. Este feitiço não tem efeito em criaturas imunes a encantamento. Spell/&IrresistiblePerformanceTitle=Desempenho irresistível -Spell/&PsionicBlastDescription=Você libera uma onda destrutiva de poder mental em um cone de 9 metros. Cada criatura na área deve realizar um teste de resistência de Inteligência. Se falhar na resistência, o alvo sofre 5d8 de dano psíquico, é empurrado 6 metros diretamente para longe de você e cai no chão. Se obtiver sucesso, o alvo sofre metade do dano e não é empurrado ou derrubado. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d8 para cada nível do espaço acima do 3º. +Spell/&PsionicBlastDescription=Você libera uma onda debilitante de poder mental em um cone de 9 metros. Cada criatura na área deve realizar um teste de resistência de Inteligência. Se falhar na resistência, o alvo sofre 5d8 de dano psíquico e subtrai d6 de todas as suas jogadas de ataque e testes de habilidade até o final do seu próximo turno. Em um teste bem-sucedido, o alvo sofre apenas metade do dano. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d8 para cada nível do espaço acima do 3º. Spell/&PsionicBlastTitle=Explosão Psiônica Spell/&PsychicLanceDescription=Você libera uma lança cintilante de poder psíquico de sua testa em uma criatura que você possa ver dentro do alcance. Ele deve ter sucesso em um teste de resistência de Inteligência ou sofrerá 7d6 de dano psíquico e ficará incapacitado até o final do seu próximo turno. Se obtiver sucesso, a criatura sofre metade do dano e não fica incapacitada. Em níveis superiores. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 para cada nível do espaço acima do 4º. Spell/&PsychicLanceTitle=Lança Psíquica de Raulothim diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt index 8714ca9196..c177dacdb8 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=Сфера разрушительной сил Spell/&GravitySinkholeTitle=Центр притяжения Spell/&IrresistiblePerformanceDescription=Вы вплетаете в потоки воздуха песню, заставляя всех, кто её слышит, аплодировать её великолепию. Все существа по вашему выбору, находящиеся в 30-футовом кубе в пределах дистанции, должны пройти спасбросок Харизмы или будут вынуждены хлопать и кричать до начала вашего следующего хода. Существо, очарованное вами, всегда проваливает этот спасбросок. Хлопающее существо не может выполнять никаких действий, требующих использования рук или рта, но в остальном может действовать нормально. Это заклинание не действует на существ, невосприимчивых к эффектам очарования. Spell/&IrresistiblePerformanceTitle=Неотразимое исполнение -Spell/&PsionicBlastDescription=Вы высвобождаете разрушительную волну ментальной силы в 30-футовом конусе. Каждое существо в области должно совершить спасбросок по Интеллекту. При провале цель получает психический урон 5d8, отталкивается на 20 футов прямо от вас и сбивается с ног. При успешном спасброске цель получает вдвое меньше урона, ее не толкают и не сбивают с ног. Когда вы накладываете это заклинание, используя ячейку 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. +Spell/&PsionicBlastDescription=Вы высвобождаете изнурительную волну ментальной силы в 30-футовом конусе. Каждое существо в области должно совершить спасбросок по Интеллекту. В случае провала цель получает психический урон 5d8 и вычитает d6 из всех своих бросков атаки и проверок способностей до конца вашего следующего хода. При успешном спасброске цель получает вдвое меньше урона. Когда вы накладываете это заклинание, используя ячейку 4-го уровня или выше, урон увеличивается на 1d8 за каждый уровень ячейки выше 3-го. Spell/&PsionicBlastTitle=Псионический Взрыв Spell/&PsychicLanceDescription=Вы выпускаете мерцающее копье психической силы из своего лба в существо, которое вы можете видеть в пределах дистанции. Цель должна совершить спасбросок Интеллекта. В случае провала цель получает 7d6 урона психической энергией и становится недееспособной до начала вашего следующего хода. В случае успеха существо получает половину этого урона и остаётся дееспособным. Если вы накладываете это заклинание, используя ячейку 5-го уровня или выше, урон увеличивается на 1d6 за каждый уровень ячейки выше 4-го. Spell/&PsychicLanceTitle=Психическое копьё Раулотима diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt index a31ed66e18..62cc028491 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt @@ -44,7 +44,7 @@ Spell/&GravitySinkholeDescription=一个半径为 20 尺的破碎球体会在你 Spell/&GravitySinkholeTitle=引力裂沟 Spell/&IrresistiblePerformanceDescription=你将一首歌曲编织到空中,让听到它的人为它的壮丽而鼓掌。30 尺立方体范围内你选择的所有生物都必须进行魅力豁免检定,否则将被迫拍手喊叫,直到你的下回合开始。被你魅惑的生物总是无法通过豁免检定。拍手的生物不能执行任何需要用手或嘴的动作,但可以正常行动。该法术对免疫魅惑的生物没有效果。 Spell/&IrresistiblePerformanceTitle=动人演出 -Spell/&PsionicBlastDescription=你在 30 尺锥形范围内释放出一道毁灭性的精神力量波。该区域内的每个生物都必须进行敏捷豁免检定。如果豁免失败,目标将受到 5d8 力场伤害,被推离你 20 尺,并被击倒。如果豁免成功,目标将受到一半的伤害,并且不会被推离或击倒。当你使用四环或更高法术位施展该法术时,你使用的法术位每比三环高一环,其伤害就增加 1d8。 +Spell/&PsionicBlastDescription=你在一个 30 英尺的锥形区域内释放出一道令人虚弱的精神力量波。该区域内的每个生物都必须进行智力豁免检定。如果豁免失败,目标将受到 5d8 精神伤害,并从其所有攻击检定和能力检定中减去 d6,直到你的下一回合结束。如果豁免成功,目标将只受到一半的伤害。当你使用 4 级或更高级别的法术位施放此法术时,伤害会随着高于 3 级的每个法术位等级增加 1d8。 Spell/&PsionicBlastTitle=灵能震爆 Spell/&PsychicLanceDescription=你从前额向范围内你能看到的生物释放出一道闪烁着灵能之力的长矛。它必须在智力豁免检定中成功,否则会受到 7d6 心灵伤害并失能,直到你的下一回合结束。豁免成功后,该生物会受到一半伤害并且不会失能。在更高的层次上。当你使用五环或更高环阶的法术位施放此法术时,你使用的法术位每比四环高一环,其伤害就增加 1d6。 Spell/&PsychicLanceTitle=劳洛希姆心灵长枪 From e2bed1d565e942a059517c3fa398ba6e6002abd7 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 18:05:22 -0700 Subject: [PATCH 48/52] more fixes on action switching, attack / replace attack cantrips --- .../Behaviors/ReplaceAttackWithCantrip.cs | 10 +++---- .../Specific/AttackAfterMagicEffect.cs | 26 +++++++++++++++---- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs b/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs index 66dfa12971..0df9849229 100644 --- a/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs +++ b/SolastaUnfinishedBusiness/Behaviors/ReplaceAttackWithCantrip.cs @@ -41,8 +41,6 @@ actionParams.activeEffect is not RulesetEffectSpell spellEffect || return; } - character.UsedMainCantrip = true; - // very similar to BurnOneMainAttack but differences are to handle Action Surge and other scenarios var rulesetCharacter = character.RulesetCharacter; @@ -58,10 +56,10 @@ actionParams.activeEffect is not RulesetEffectSpell spellEffect || if (character.UsedMainAttacks < maxAttacks) { character.currentActionRankByType[ActionType.Main]--; - - return; } - - character.UsedMainAttacks = 0; + else + { + character.UsedMainAttacks = 0; + } } } diff --git a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs index 422dcec6ea..28ecc402d4 100644 --- a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs +++ b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; +using SolastaUnfinishedBusiness.Api.GameExtensions; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.MetamagicOptionDefinitions; @@ -11,6 +12,7 @@ internal sealed class AttackAfterMagicEffect { private const string AttackCantrip = "AttackCantrip"; private const string QuickenedAttackCantrip = "QuickenedAttackCantrip"; + private const string ReplaceAttackCantrip = "ReplaceAttackCantrip"; private const RollOutcome MinOutcomeToAttack = RollOutcome.Success; private const RollOutcome MinSaveOutcomeToAttack = RollOutcome.Failure; @@ -22,17 +24,25 @@ internal static void HandleAttackAfterMagicEffect(GameLocationCharacter characte return; } - if (actionParams.AttackMode.AttackTags.Contains(AttackCantrip)) + var attackTags = actionParams.AttackMode.AttackTags; + + if (attackTags.Contains(AttackCantrip)) { character.UsedMainCantrip = true; + + if (!attackTags.Contains(ReplaceAttackCantrip)) + { + character.SpendActionType(ActionDefinitions.ActionType.Main); + } } - // ReSharper disable once InvertIf - if (actionParams.AttackMode.AttackTags.Contains(QuickenedAttackCantrip)) + if (!attackTags.Contains(QuickenedAttackCantrip)) { - character.UsedMainSpell = true; - character.SpendActionType(ActionDefinitions.ActionType.Bonus); + return; } + + character.UsedMainSpell = true; + character.SpendActionType(ActionDefinitions.ActionType.Bonus); } internal static bool CanAttack([NotNull] GameLocationCharacter caster, GameLocationCharacter target) @@ -112,6 +122,12 @@ internal static List PerformAttackAfterUse(CharacterActio //mark this attack for proper integration with War Magic attackMode.AttackTags.TryAdd(AttackCantrip); + //mark this attack for proper integration with Replace Attack with cantrip + if (actionParams.ActingCharacter.RulesetCharacter.HasSubFeatureOfType()) + { + attackMode.AttackTags.TryAdd(ReplaceAttackCantrip); + } + var twinned = false; if (actionMagicEffect is CharacterActionCastSpell actionCastSpell) From d6b2b5c6c7d418803fee47160f2b8d3cb0c71df3 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 19:21:45 -0700 Subject: [PATCH 49/52] remove fishy code to support Familiar Attack --- .../CursorLocationSelectTargetPatcher.cs | 111 +++++++----------- .../GameLocationBattleManagerPatcher.cs | 2 + 2 files changed, 44 insertions(+), 69 deletions(-) diff --git a/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs b/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs index 3dc374a771..bb858b3f92 100644 --- a/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs @@ -4,14 +4,11 @@ using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Api.LanguageExtensions; -using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Models; using UnityEngine; using static RuleDefinitions; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper; using static SolastaUnfinishedBusiness.Subclasses.SorcerousFieldManipulator; -using static SolastaUnfinishedBusiness.Spells.SpellBuilders; namespace SolastaUnfinishedBusiness.Patches; @@ -33,7 +30,7 @@ public static void Postfix( var actingCharacter = __instance.actionParams.actingCharacter; // required for familiar attack - actingCharacter.UsedSpecialFeatures.Remove("FamiliarAttack"); + // actingCharacter.UsedSpecialFeatures.Remove("FamiliarAttack"); //PATCH: supports `UseOfficialLightingObscurementAndVisionRules` if (__result && @@ -43,82 +40,61 @@ definition is IMagicEffect magicEffect && { __instance.actionModifier.FailureFlags.Add("Failure/&FailureFlagNoPerceptionOfTargetDescription"); __result = false; + } + //PATCH: supports `IFilterTargetingCharacter` + if (!__result) + { return; } - //PATCH: supports `IFilterTargetingCharacter` foreach (var filterTargetingMagicEffect in definition.GetAllSubFeaturesOfType()) { __result = filterTargetingMagicEffect.IsValid(__instance, target); - if (__result) + if (!__result) { - return; + break; } } +#if false + //TODO: need to review below. sounds fishy //PATCH: supports Find Familiar specific case for any caster as spell can be granted to other classes - if (Gui.Battle != null && - actingCharacter.RulesetCharacter is { IsDeadOrDyingOrUnconscious: false } && - __instance.ActionParams.activeEffect is RulesetEffectSpell rulesetEffectSpell && - rulesetEffectSpell.EffectDescription.RangeType is RangeType.Touch or RangeType.MeleeHit) - { - var familiar = Gui.Battle.AllContenders - .FirstOrDefault(x => - x.RulesetCharacter is RulesetCharacterMonster rulesetCharacterMonster && - rulesetCharacterMonster.MonsterDefinition.Name == OwlFamiliar && - rulesetCharacterMonster.AllConditions.Exists(y => - y.ConditionDefinition == ConditionDefinitions.ConditionConjuredCreature && - y.SourceGuid == actingCharacter.Guid)); - - var canAttack = familiar != null && familiar.IsWithinRange(target, 1); - - if (canAttack) - { - var effectDescription = new EffectDescription(); - - effectDescription.Copy(__instance.effectDescription); - effectDescription.rangeParameter = 24; - - __instance.effectDescription = effectDescription; - actingCharacter.UsedSpecialFeatures.Add("FamiliarAttack", 0); - } - else - { - __instance.effectDescription = __instance.ActionParams.RulesetEffect.EffectDescription; - } - } - - //PATCH: support for target spell filtering based on custom spell filters - // used for melee cantrips to limit targets to weapon attack range - if (!__result) + if (Gui.Battle == null || + actingCharacter.RulesetCharacter is not { IsDeadOrDyingOrUnconscious: false } || + __instance.ActionParams.activeEffect is not RulesetEffectSpell rulesetEffectSpell || + rulesetEffectSpell.EffectDescription.RangeType is not (RangeType.Touch or RangeType.MeleeHit)) { return; } - __result = IsFilteringValidMeleeCantrip(__instance, target); - } + var familiar = Gui.Battle.AllContenders + .FirstOrDefault(x => + x.RulesetCharacter is RulesetCharacterMonster rulesetCharacterMonster && + rulesetCharacterMonster.MonsterDefinition.Name == OwlFamiliar && + rulesetCharacterMonster.AllConditions.Exists(y => + y.ConditionDefinition == ConditionDefinitions.ConditionConjuredCreature && + y.SourceGuid == actingCharacter.Guid)); - private static bool IsFilteringValidMeleeCantrip( - CursorLocationSelectTarget __instance, - GameLocationCharacter target) - { - var actionParams = __instance.actionParams; - var attackAfterMagicEffect = - actionParams?.RulesetEffect?.SourceDefinition.GetFirstSubFeatureOfType(); + var canAttack = familiar != null && familiar.IsWithinRange(target, 1); - if (attackAfterMagicEffect == null || - AttackAfterMagicEffect.CanBeUsedToAttack( - __instance, actionParams.actingCharacter, target, out var failure)) + if (canAttack) { - return true; - } + var effectDescription = new EffectDescription(); - __instance.actionModifier.FailureFlags.Add(failure); + effectDescription.Copy(__instance.effectDescription); + effectDescription.rangeParameter = 24; - return false; + __instance.effectDescription = effectDescription; + actingCharacter.UsedSpecialFeatures.Add("FamiliarAttack", 0); + } + else + { + __instance.effectDescription = __instance.ActionParams.RulesetEffect.EffectDescription; + } +#endif } } @@ -132,16 +108,14 @@ public static void Prefix(params object[] parameters) { //PATCH: allows Sorcerous Field Manipulator displacement to select any character if (parameters.Length <= 0 || - parameters[0] is not CharacterActionParams { RulesetEffect: RulesetEffectPower rulesetEffectPower }) + parameters[0] is not CharacterActionParams { RulesetEffect: RulesetEffectPower rulesetEffectPower } || + rulesetEffectPower.PowerDefinition != PowerSorcerousFieldManipulatorDisplacement) { return; } - if (rulesetEffectPower.PowerDefinition == PowerSorcerousFieldManipulatorDisplacement) - { - // allows any target to be selected as well as automatically presents a better UI description - rulesetEffectPower.EffectDescription.inviteOptionalAlly = false; - } + // allows any target to be selected as well as automatically presents a better UI description + rulesetEffectPower.EffectDescription.inviteOptionalAlly = false; } } @@ -154,16 +128,14 @@ public static class Deactivate_Patch public static void Prefix(CursorLocationSelectTarget __instance) { //PATCH: allows Sorcerous Field Manipulator displacement to select any character - if (__instance.actionParams is not { RulesetEffect: RulesetEffectPower rulesetEffectPower }) + if (__instance.actionParams is not { RulesetEffect: RulesetEffectPower rulesetEffectPower } || + rulesetEffectPower.PowerDefinition != PowerSorcerousFieldManipulatorDisplacement) { return; } - if (rulesetEffectPower.PowerDefinition == PowerSorcerousFieldManipulatorDisplacement) - { - // brings back power effect to it's original definition - rulesetEffectPower.EffectDescription.inviteOptionalAlly = true; - } + // brings back power effect to its original definition + rulesetEffectPower.EffectDescription.inviteOptionalAlly = true; } } @@ -385,6 +357,7 @@ public static bool Prefix( out CursorDefinitions.CursorActionResult actionResult) { actionResult = CursorDefinitions.CursorActionResult.None; + if (__instance.RefreshTargetedCharacter()) { __instance.actionModifier.Reset(); diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs index e12ce95578..eaab4c9a2b 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs @@ -1178,10 +1178,12 @@ public static void Prefix( ref CoverType bestCoverType, ref bool ignoreCoverFromCharacters) { +#if false if (attacker.UsedSpecialFeatures.ContainsKey("FamiliarAttack")) { ignoreCoverFromCharacters = true; } +#endif var modifiers = defender.RulesetCharacter.GetSubFeaturesByType(); From 2971d6fbd7b2c9995d4ed139c4af91913a9020ca Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 19:40:55 -0700 Subject: [PATCH 50/52] prefer IFilterTargetingCharacter on AttackAfterMagicEffect --- .../Specific/AttackAfterMagicEffect.cs | 47 +++++++------------ .../CursorLocationSelectTargetPatcher.cs | 10 ++-- .../Spells/SpellBuildersCantrips.cs | 32 +++++++------ .../Translations/de/Others-de.txt | 3 +- .../Translations/en/Others-en.txt | 3 +- .../Translations/es/Others-es.txt | 3 +- .../Translations/fr/Others-fr.txt | 3 +- .../Translations/it/Others-it.txt | 3 +- .../Translations/ja/Others-ja.txt | 3 +- .../Translations/ko/Others-ko.txt | 3 +- .../Translations/pt-BR/Others-pt-BR.txt | 3 +- .../Translations/ru/Others-ru.txt | 3 +- .../Translations/zh-CN/Others-zh-CN.txt | 3 +- 13 files changed, 57 insertions(+), 62 deletions(-) diff --git a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs index 28ecc402d4..cac4317dcd 100644 --- a/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs +++ b/SolastaUnfinishedBusiness/Behaviors/Specific/AttackAfterMagicEffect.cs @@ -1,14 +1,14 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; +using SolastaUnfinishedBusiness.Interfaces; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.MetamagicOptionDefinitions; namespace SolastaUnfinishedBusiness.Behaviors.Specific; -internal sealed class AttackAfterMagicEffect +internal sealed class AttackAfterMagicEffect : IFilterTargetingCharacter { private const string AttackCantrip = "AttackCantrip"; private const string QuickenedAttackCantrip = "QuickenedAttackCantrip"; @@ -16,6 +16,20 @@ internal sealed class AttackAfterMagicEffect private const RollOutcome MinOutcomeToAttack = RollOutcome.Success; private const RollOutcome MinSaveOutcomeToAttack = RollOutcome.Failure; + public bool EnforceFullSelection => false; + + public bool IsValid(CursorLocationSelectTarget __instance, GameLocationCharacter target) + { + var isValid = CanAttack(__instance.ActionParams.ActingCharacter, target); + + if (!isValid) + { + __instance.actionModifier.FailureFlags.Add("Tooltip/&TargetMeleeWeaponError"); + } + + return isValid; + } + internal static void HandleAttackAfterMagicEffect(GameLocationCharacter character, CharacterActionParams actionParams) { @@ -165,31 +179,4 @@ internal static List PerformAttackAfterUse(CharacterActio return attacks; } - - internal static bool CanBeUsedToAttack( - [NotNull] CursorLocationSelectTarget targeting, - GameLocationCharacter caster, - GameLocationCharacter target, - [NotNull] out string failure) - { - failure = String.Empty; - - var maxTargets = targeting.maxTargets; - var remainingTargets = targeting.remainingTargets; - var selectedTargets = maxTargets - remainingTargets; - - if (selectedTargets > 0) - { - return true; - } - - var canAttack = CanAttack(caster, target); - - if (!canAttack) - { - failure = "Failure/&FailureFlagTargetMeleeWeaponError"; - } - - return canAttack; - } } diff --git a/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs b/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs index bb858b3f92..dc468a763d 100644 --- a/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs @@ -48,15 +48,11 @@ definition is IMagicEffect magicEffect && return; } - foreach (var filterTargetingMagicEffect in - definition.GetAllSubFeaturesOfType()) + var filterTargetingMagicEffect = definition.GetFirstSubFeatureOfType(); + + if (filterTargetingMagicEffect != null) { __result = filterTargetingMagicEffect.IsValid(__instance, target); - - if (!__result) - { - break; - } } #if false diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs index 9caf0331aa..0cb1c0ca19 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersCantrips.cs @@ -567,7 +567,7 @@ internal static SpellDefinition BuildSunlightBlade() .SetSpecificDamageType(DamageTypeRadiant) .SetAdvancement( ExtraAdditionalDamageAdvancement.CharacterLevel, - DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) + DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) .SetTargetCondition(conditionMarked, AdditionalDamageTriggerCondition.TargetHasCondition) .AddConditionOperation( ConditionOperationDescription.ConditionOperation.Add, @@ -836,7 +836,7 @@ internal static SpellDefinition BuildBoomingBlade() .SetSpecificDamageType(DamageTypeThunder) .SetAdvancement( ExtraAdditionalDamageAdvancement.CharacterLevel, - DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) + DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) .AddConditionOperation( ConditionOperationDescription.ConditionOperation.Add, conditionBoomingBladeSheathed) .SetTargetCondition(conditionMarked, AdditionalDamageTriggerCondition.TargetHasCondition) @@ -978,7 +978,7 @@ internal static SpellDefinition BuildResonatingStrike() .SetSpecificDamageType(DamageTypeFire) .SetAdvancement( ExtraAdditionalDamageAdvancement.CharacterLevel, - DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) + DiceByRankBuilder.InterpolateDiceByRankTable(0, 20, (5, 2), (11, 3), (17, 4))) .SetImpactParticleReference(BurningHands_B) .SetAttackModeOnly() .AddToDB(); @@ -1022,6 +1022,7 @@ internal static SpellDefinition BuildResonatingStrike() .AddToDB(); spell.AddCustomSubFeatures( + // order matters here as below also implements IFilterTargetingCharacter new CustomBehaviorResonatingStrike(), new AttackAfterMagicEffect(), new UpgradeSpellRangeBasedOnWeaponReach(spell)); @@ -1036,31 +1037,32 @@ private sealed class CustomBehaviorResonatingStrike : IMagicEffectFinishedByMe, public bool EnforceFullSelection => false; - // STEP 0: enforce proper second target selection public bool IsValid(CursorLocationSelectTarget __instance, GameLocationCharacter target) { - if (__instance.SelectionService?.SelectedTargets == null) - { - return false; - } + bool isValid; if (__instance.SelectionService.SelectedTargets.Count == 0) { - var caster = __instance.SelectionService.SelectedCharacters[0]; - var attackMode = caster?.FindActionAttackMode(ActionDefinitions.Id.AttackMain); + isValid = AttackAfterMagicEffect.CanAttack(__instance.ActionParams.ActingCharacter, target); - if (attackMode is not { SourceObject: RulesetItem }) + if (!isValid) { - return false; + __instance.actionModifier.FailureFlags.Add("Tooltip/&TargetMeleeWeaponError"); } - return !attackMode.Ranged && __instance.SelectionService.SelectedCharacters[0] - .IsWithinRange(target, attackMode.reachRange); + return isValid; } var firstTarget = __instance.SelectionService.SelectedTargets[0]; - return firstTarget.IsWithinRange(target, 1); + isValid = firstTarget.IsWithinRange(target, 1); + + if (!isValid) + { + __instance.actionModifier.FailureFlags.Add("Tooltip/&SecondTargetNotWithinRange"); + } + + return isValid; } public IEnumerator OnMagicEffectFinishedByMe(CharacterActionMagicEffect action, BaseDefinition spell) diff --git a/SolastaUnfinishedBusiness/Translations/de/Others-de.txt b/SolastaUnfinishedBusiness/Translations/de/Others-de.txt index 8f2203acf8..3995ecfc4c 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Others-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Others-de.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=Das Unfinished Business-Paket fügt Multiklassen, R ContentPack/&9999Title=Unvollendetes Geschäftspaket Equipment/&BeltOfRegeneration_Function_Description=Regeneriert eine Minute lang 5 Trefferpunkte pro Runde. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=Ihre Angriffe erzielen einen kritischen Treffer bei 18, 19 oder 20, während Sie diese Waffe tragen und auf sie eingestellt sind. -Failure/&FailureFlagTargetMeleeWeaponError=Mit der aktuellen Waffe kann kein Nahkampfangriff auf dieses Ziel ausgeführt werden Feature/&AlwaysBeardDescription={0} % Chancen, einen herrlichen Bart wachsen zu lassen! Feature/&AncestryLevelUpDraconicDescription=Deine drakonische Abstammung verleiht dir eine Affinität zur Schadensart {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Als Bonusaktion können Sie einen unbewaffneten Schlag ausführen. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel=Ist {0} Level {1} Tooltip/&PreReqLevelFormat=Min. Charakterlevel {0} Tooltip/&PreReqMustHaveExtraAttacks=Muss zusätzliche Angriffe haben Tooltip/&PreReqMustKnow=Muss wissen {0} +Tooltip/&SecondTargetNotWithinRange=Der zweite Nahkampfangriff kann nicht auf dieses Ziel ausgeführt werden, da es sich nicht in Reichweite des ersten befindet. Tooltip/&Tag9000Title=Benutzerdefinierter Effekt Tooltip/&TagUnfinishedBusinessTitle=Unerledigte Aufgabe +Tooltip/&TargetMeleeWeaponError=Mit der aktuellen Waffe kann kein Nahkampfangriff auf dieses Ziel ausgeführt werden UI/&CustomFeatureSelectionStageDescription=Wählen Sie zusätzliche Funktionen für Ihre Klasse/Unterklasse aus. UI/&CustomFeatureSelectionStageFeatures=Merkmale UI/&CustomFeatureSelectionStageNotDone=Bevor Sie fortfahren, müssen Sie alle verfügbaren Funktionen auswählen diff --git a/SolastaUnfinishedBusiness/Translations/en/Others-en.txt b/SolastaUnfinishedBusiness/Translations/en/Others-en.txt index 321757e6e1..e79abc0d45 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Others-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Others-en.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=The Unfinished Business pack adds multiclass, races ContentPack/&9999Title=Unfinished Business Pack Equipment/&BeltOfRegeneration_Function_Description=Regenerate 5 hit points per round for one minute. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=Your attacks score a critical hit on an 18, 19 or 20 while you are wielding this weapon and are attuned to it. -Failure/&FailureFlagTargetMeleeWeaponError=Can't perform melee attack on this target with current weapon Feature/&AlwaysBeardDescription={0}% chances to grow a glorious beard! Feature/&AncestryLevelUpDraconicDescription=Your draconic ancestry gives you an affinity to {0} damage type. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=You can make one unarmed strike as a bonus action. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel=Is {0} level {1} Tooltip/&PreReqLevelFormat=Min Character Level {0} Tooltip/&PreReqMustHaveExtraAttacks=Must have extra attacks Tooltip/&PreReqMustKnow=Must know {0} +Tooltip/&SecondTargetNotWithinRange=Can't perform second melee attack on this target as not within range of first Tooltip/&Tag9000Title=Custom Effect Tooltip/&TagUnfinishedBusinessTitle=Unfinished Business +Tooltip/&TargetMeleeWeaponError=Can't perform melee attack on this target with current weapon UI/&CustomFeatureSelectionStageDescription=Select extra features for your class/subclass. UI/&CustomFeatureSelectionStageFeatures=Features UI/&CustomFeatureSelectionStageNotDone=You must select all available features before proceeding diff --git a/SolastaUnfinishedBusiness/Translations/es/Others-es.txt b/SolastaUnfinishedBusiness/Translations/es/Others-es.txt index 53c2e87fc4..aebbcc853b 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Others-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Others-es.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=El paquete Unfinished Business agrega multiclase, r ContentPack/&9999Title=Paquete de asuntos pendientes Equipment/&BeltOfRegeneration_Function_Description=Regenera 5 puntos de vida por ronda durante un minuto. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=Tus ataques obtienen un golpe crítico con un 18, 19 o 20 mientras empuñas esta arma y estás en sintonía con ella. -Failure/&FailureFlagTargetMeleeWeaponError=No se puede realizar un ataque cuerpo a cuerpo contra este objetivo con el arma actual. Feature/&AlwaysBeardDescription=¡{0}% de posibilidades de dejarte crecer una barba gloriosa! Feature/&AncestryLevelUpDraconicDescription=Tu ascendencia dracónica te da afinidad con el tipo de daño {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Puedes realizar un ataque desarmado como acción adicional. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel=Es {0} nivel {1} Tooltip/&PreReqLevelFormat=Nivel mínimo de personaje {0} Tooltip/&PreReqMustHaveExtraAttacks=Debe tener ataques extra Tooltip/&PreReqMustKnow=Debe saber {0} +Tooltip/&SecondTargetNotWithinRange=No se puede realizar un segundo ataque cuerpo a cuerpo contra este objetivo porque no está dentro del alcance del primero. Tooltip/&Tag9000Title=Efecto personalizado Tooltip/&TagUnfinishedBusinessTitle=Negocios inconclusos +Tooltip/&TargetMeleeWeaponError=No se puede realizar un ataque cuerpo a cuerpo contra este objetivo con el arma actual. UI/&CustomFeatureSelectionStageDescription=Seleccione funciones adicionales para su clase/subclase. UI/&CustomFeatureSelectionStageFeatures=Características UI/&CustomFeatureSelectionStageNotDone=Debes seleccionar todas las funciones disponibles antes de continuar. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt index f6b9f7774e..a3b173a18e 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=Le pack Unfinished Business ajoute du multiclasse, ContentPack/&9999Title=Pack d'affaires inachevé Equipment/&BeltOfRegeneration_Function_Description=Régénérez 5 points de vie par tour pendant une minute. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=Vos attaques infligent un coup critique sur 18, 19 ou 20 pendant que vous maniez cette arme et que vous êtes en harmonie avec elle. -Failure/&FailureFlagTargetMeleeWeaponError=Impossible d'effectuer une attaque au corps à corps sur cette cible avec l'arme actuelle Feature/&AlwaysBeardDescription={0} % de chances de laisser pousser une magnifique barbe ! Feature/&AncestryLevelUpDraconicDescription=Votre ascendance draconique vous confère une affinité avec {0} types de dégâts. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Vous pouvez effectuer une frappe à mains nues comme action bonus. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel=Est-ce que {0} est au niveau {1} Tooltip/&PreReqLevelFormat=Niveau de personnage minimum {0} Tooltip/&PreReqMustHaveExtraAttacks=Doit avoir des attaques supplémentaires Tooltip/&PreReqMustKnow=Je dois savoir {0} +Tooltip/&SecondTargetNotWithinRange=Impossible d'effectuer une deuxième attaque de mêlée sur cette cible car elle n'est pas à portée de la première. Tooltip/&Tag9000Title=Effet personnalisé Tooltip/&TagUnfinishedBusinessTitle=Inachevé +Tooltip/&TargetMeleeWeaponError=Impossible d'effectuer une attaque au corps à corps sur cette cible avec l'arme actuelle UI/&CustomFeatureSelectionStageDescription=Sélectionnez des fonctionnalités supplémentaires pour votre classe/sous-classe. UI/&CustomFeatureSelectionStageFeatures=Caractéristiques UI/&CustomFeatureSelectionStageNotDone=Vous devez sélectionner toutes les fonctionnalités disponibles avant de continuer diff --git a/SolastaUnfinishedBusiness/Translations/it/Others-it.txt b/SolastaUnfinishedBusiness/Translations/it/Others-it.txt index e38cf36353..4f79066a5a 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Others-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Others-it.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=Il pacchetto Unfinished Business aggiunge multiclas ContentPack/&9999Title=Pacchetto aziendale incompiuto Equipment/&BeltOfRegeneration_Function_Description=Rigenera 5 punti ferita per round per un minuto. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=I tuoi attacchi ottengono un colpo critico con un 18, 19 o 20 mentre impugni quest'arma e sei in sintonia con essa. -Failure/&FailureFlagTargetMeleeWeaponError=Impossibile eseguire attacchi corpo a corpo su questo bersaglio con l'arma attuale Feature/&AlwaysBeardDescription={0}% di possibilità di far crescere una barba meravigliosa! Feature/&AncestryLevelUpDraconicDescription=La tua stirpe draconica ti dà un'affinità con il tipo di danno {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Puoi effettuare un colpo senz'armi come azione bonus. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel={0} è al livello {1} Tooltip/&PreReqLevelFormat=Livello personaggio minimo {0} Tooltip/&PreReqMustHaveExtraAttacks=Deve avere attacchi extra Tooltip/&PreReqMustKnow=Deve sapere {0} +Tooltip/&SecondTargetNotWithinRange=Non è possibile eseguire il secondo attacco in mischia su questo bersaglio perché non si trova nel raggio del primo Tooltip/&Tag9000Title=Effetto personalizzato Tooltip/&TagUnfinishedBusinessTitle=Lavoro incompleto +Tooltip/&TargetMeleeWeaponError=Impossibile eseguire attacchi corpo a corpo su questo bersaglio con l'arma attuale UI/&CustomFeatureSelectionStageDescription=Seleziona funzionalità extra per la tua classe/sottoclasse. UI/&CustomFeatureSelectionStageFeatures=Caratteristiche UI/&CustomFeatureSelectionStageNotDone=È necessario selezionare tutte le funzionalità disponibili prima di procedere diff --git a/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt index 670004c33e..b0595bf180 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=Unfinished Business パックには、マルチク ContentPack/&9999Title=未完成ビジネスパック Equipment/&BeltOfRegeneration_Function_Description=1分間、ラウンドごとに5ヒットポイントを回復します。 Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=この武器を使用し、それに同調している間、攻撃は 18、19、または 20 でクリティカル ヒットを獲得します。 -Failure/&FailureFlagTargetMeleeWeaponError=現在の武器ではこのターゲットに近接攻撃を実行できません Feature/&AlwaysBeardDescription={0}% の確率で立派なひげが生えてきます。 Feature/&AncestryLevelUpDraconicDescription=あなたの竜族の祖先は、あなたに {0} のダメージ タイプへの親和性を与えます。 Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=ボーナスアクションとして素手攻撃を 1 回行うことができます。 @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel={0} レベルは {1} です Tooltip/&PreReqLevelFormat=最小キャラクターレベル {0} Tooltip/&PreReqMustHaveExtraAttacks=追加攻撃が必要 Tooltip/&PreReqMustKnow={0} を知っておく必要があります +Tooltip/&SecondTargetNotWithinRange=最初の攻撃の射程範囲外のため、このターゲットに2回目の近接攻撃を実行できません Tooltip/&Tag9000Title=カスタムエフェクト Tooltip/&TagUnfinishedBusinessTitle=未完の仕事 +Tooltip/&TargetMeleeWeaponError=現在の武器ではこのターゲットに近接攻撃を実行できません UI/&CustomFeatureSelectionStageDescription=クラス/サブクラスの追加機能を選択します。 UI/&CustomFeatureSelectionStageFeatures=特徴 UI/&CustomFeatureSelectionStageNotDone=続行する前に、利用可能な機能をすべて選択する必要があります diff --git a/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt index a8af8c3f4e..ab5a60e578 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=Unfinished Business 팩은 멀티클래스, 종족, ContentPack/&9999Title=미완성 비즈니스 팩 Equipment/&BeltOfRegeneration_Function_Description=1분 동안 라운드당 5개의 체력을 재생합니다. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=이 무기를 휘두르고 그에 맞춰 조정하는 동안 공격은 18, 19 또는 20에 치명타를 기록합니다. -Failure/&FailureFlagTargetMeleeWeaponError=현재 무기로는 이 대상에 근접 공격을 수행할 수 없습니다. Feature/&AlwaysBeardDescription=멋진 수염이 자랄 확률은 {0}%입니다! Feature/&AncestryLevelUpDraconicDescription=귀하의 용족 조상은 귀하에게 {0} 피해 유형과의 친화성을 부여합니다. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=보너스 행동으로 비무장 공격을 1회 할 수 있습니다. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel={0}레벨은 {1}입니다 Tooltip/&PreReqLevelFormat=최소 캐릭터 레벨 {0} Tooltip/&PreReqMustHaveExtraAttacks=추가 공격이 있어야 합니다. Tooltip/&PreReqMustKnow={0}을(를) 알아야 합니다. +Tooltip/&SecondTargetNotWithinRange=첫 번째 범위 내에 있지 않으므로 이 대상에 대해 두 번째 근접 공격을 수행할 수 없습니다. Tooltip/&Tag9000Title=맞춤 효과 Tooltip/&TagUnfinishedBusinessTitle=끝나지 않은 사업 +Tooltip/&TargetMeleeWeaponError=현재 무기로는 이 대상에 근접 공격을 수행할 수 없습니다. UI/&CustomFeatureSelectionStageDescription=클래스/하위 클래스에 대한 추가 기능을 선택하세요. UI/&CustomFeatureSelectionStageFeatures=특징 UI/&CustomFeatureSelectionStageNotDone=계속하기 전에 사용 가능한 모든 기능을 선택해야 합니다. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt index e46b2e2307..d2c230dc9c 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=O pacote Unfinished Business adiciona multiclasse, ContentPack/&9999Title=Pacote de negócios inacabados Equipment/&BeltOfRegeneration_Function_Description=Regenera 5 pontos de vida por rodada durante um minuto. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=Seus ataques obtêm um acerto crítico em 18, 19 ou 20 enquanto você empunha esta arma e está sintonizado com ela. -Failure/&FailureFlagTargetMeleeWeaponError=Não é possível realizar ataques corpo a corpo neste alvo com a arma atual Feature/&AlwaysBeardDescription={0}% de chances de deixar crescer uma barba gloriosa! Feature/&AncestryLevelUpDraconicDescription=Sua ancestralidade dracônica lhe dá afinidade com o tipo de dano {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Você pode realizar um ataque desarmado como uma ação bônus. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel=É {0} nível {1} Tooltip/&PreReqLevelFormat=Nível mínimo de personagem {0} Tooltip/&PreReqMustHaveExtraAttacks=Deve ter ataques extras Tooltip/&PreReqMustKnow=Preciso saber {0} +Tooltip/&SecondTargetNotWithinRange=Não é possível realizar um segundo ataque corpo a corpo neste alvo porque ele não está dentro do alcance do primeiro Tooltip/&Tag9000Title=Efeito personalizado Tooltip/&TagUnfinishedBusinessTitle=Negócios inacabados +Tooltip/&TargetMeleeWeaponError=Não é possível realizar ataques corpo a corpo neste alvo com a arma atual UI/&CustomFeatureSelectionStageDescription=Selecione recursos extras para sua classe/subclasse. UI/&CustomFeatureSelectionStageFeatures=Características UI/&CustomFeatureSelectionStageNotDone=Você deve selecionar todos os recursos disponíveis antes de continuar diff --git a/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt index 09997935fc..30b8da5f94 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=Мод Неоконченное Дело добав ContentPack/&9999Title=Мод Неоконченное Дело Equipment/&BeltOfRegeneration_Function_Description=Восстанавливает 5 хитов за раунд в течение одной минуты. Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=Ваши атаки становятся критическими попаданиями при бросках 18, 19 или 20, пока вы используете это оружие и настроены на него. -Failure/&FailureFlagTargetMeleeWeaponError=Невозможно провести атаку ближнего боя по этой цели с выбранным оружием Feature/&AlwaysBeardDescription=Шанс {0}% отрастить великолепную бороду! Feature/&AncestryLevelUpDraconicDescription=Ваше драконье наследие роднит вас со стихией {0}. Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=Бонусным действием вы можете совершить один безоружный удар. @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel=Это {0} уровня {1} Tooltip/&PreReqLevelFormat=Минимальный уровень персонажа {0} Tooltip/&PreReqMustHaveExtraAttacks=Должен иметь дополнительные атаки Tooltip/&PreReqMustKnow=Должен знать {0} +Tooltip/&SecondTargetNotWithinRange=Невозможно выполнить вторую рукопашную атаку по этой цели, поскольку она находится вне зоны действия первой. Tooltip/&Tag9000Title=Кастомный эффект Tooltip/&TagUnfinishedBusinessTitle=Неоконченное Дело +Tooltip/&TargetMeleeWeaponError=Невозможно провести атаку ближнего боя по этой цели с выбранным оружием UI/&CustomFeatureSelectionStageDescription=Выберите дополнительные черты для вашего класса/архетипа. UI/&CustomFeatureSelectionStageFeatures=Черты UI/&CustomFeatureSelectionStageNotDone=Вы должны выбрать все черты перед продолжением diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt index e58e0e4eeb..aa5a18b1f6 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt @@ -69,7 +69,6 @@ ContentPack/&9999Description=未竟之业包增加了多职业、种族、子职 ContentPack/&9999Title=未竟之业包 Equipment/&BeltOfRegeneration_Function_Description=每轮恢复 5 点生命值,持续 1 分钟。 Equipment/&DLC3_DwarvenWeapon_Dagger+3_CriticalThreshold=当你使用该武器并对其进行调和时,你的攻击检定会在 18, 19 或 20 点上获得致命一击。 -Failure/&FailureFlagTargetMeleeWeaponError=无法使用当前武器对该目标进行近战攻击 Feature/&AlwaysBeardDescription={0}% 的机会长出漂亮的胡子! Feature/&AncestryLevelUpDraconicDescription=你的龙类血统赋予你对 {0} 伤害类型的亲和。 Feature/&AttackModifierMonkMartialArtsUnarmedStrikeBonusDescription=你可以以附赠动作进行一次徒手攻击。 @@ -308,8 +307,10 @@ Tooltip/&PreReqIsWithLevel={0} 级 {1} Tooltip/&PreReqLevelFormat=最低角色等级 {0} Tooltip/&PreReqMustHaveExtraAttacks=必须有额外的攻击 Tooltip/&PreReqMustKnow=需要已知 {0} +Tooltip/&SecondTargetNotWithinRange=无法对该目标进行第二次近战攻击,因为不在第一次攻击的范围内 Tooltip/&Tag9000Title=自定义效果 Tooltip/&TagUnfinishedBusinessTitle=未竟之业 +Tooltip/&TargetMeleeWeaponError=无法使用当前武器对该目标进行近战攻击 UI/&CustomFeatureSelectionStageDescription=为你的职业/子职业选择额外的特性。 UI/&CustomFeatureSelectionStageFeatures=专长 UI/&CustomFeatureSelectionStageNotDone=在继续之前,你必须选择所有可用特性 From 1c677752dfc2222908f2e02f1b88eceb809b5dfe Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 19:41:10 -0700 Subject: [PATCH 51/52] minor tweaks --- SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs | 2 +- SolastaUnfinishedBusiness/ChangelogHistory.txt | 3 +-- SolastaUnfinishedBusiness/Spells/SpellBuildersLevel01.cs | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs b/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs index c82c8ebeff..e3e6be2f98 100644 --- a/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs +++ b/SolastaUnfinishedBusiness/Behaviors/FeatureUseLimiter.cs @@ -5,7 +5,7 @@ namespace SolastaUnfinishedBusiness.Behaviors; //Currently implemented only for reaction restoration of ActionAffinity features public abstract class FeatureUseLimiter { - public static FeatureUseLimiter OncePerTurn = new OncePerTurn(); + public static readonly FeatureUseLimiter OncePerTurn = new OncePerTurn(); public abstract bool CanBeUsed(GameLocationCharacter character, FeatureDefinition feature); } diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index 686ceff90e..a55993e1ff 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -1,8 +1,7 @@ 1.5.97.14: - added Ashardalon's Stride, and Elemental Bane spells -- fixed Action Surge interaction with 'replace attacks with cantrips', and 'action switching' -- fixed Booming Blade, Green-Flame Blade, and Sunlit Blade cantrips interaction with Quickened metamagic +- fixed Action Surge, Quickened, 'action switching', attack cantrips, and 'replace attacks with cantrips' interactions - fixed Domain Tempest destructive wrath feature interaction with Transmuted metamagic - fixed Domain Tempest wrath of the storm feature not consuming a reaction - fixed Martial Guardian vigilance feature bleeding reaction refunds to other fighters diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel01.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel01.cs index 450e21ce6f..ff9ee89c1a 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel01.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel01.cs @@ -2026,7 +2026,7 @@ public IEnumerator OnAttackBeforeHitPossibleOnMeOrAlly( #region Owl Familiar - internal const string OwlFamiliar = "OwlFamiliar"; + private const string OwlFamiliar = "OwlFamiliar"; internal static SpellDefinition BuildFindFamiliar() { From 19343057b9215bb2dab062ff3a0e37110b7164e6 Mon Sep 17 00:00:00 2001 From: ThyWolf Date: Sat, 8 Jun 2024 23:15:53 -0700 Subject: [PATCH 52/52] prepare for `1.5.97.14` release --- SolastaUnfinishedBusiness/ChangelogHistory.txt | 8 ++++---- SolastaUnfinishedBusiness/Info.json | 2 +- .../SolastaUnfinishedBusiness.csproj | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index a55993e1ff..606c1ff8b3 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -1,14 +1,14 @@ 1.5.97.14: - added Ashardalon's Stride, and Elemental Bane spells -- fixed Action Surge, Quickened, 'action switching', attack cantrips, and 'replace attacks with cantrips' interactions -- fixed Domain Tempest destructive wrath feature interaction with Transmuted metamagic +- fixed Domain Tempest destructive wrath, and Transmuted interactions - fixed Domain Tempest wrath of the storm feature not consuming a reaction -- fixed Martial Guardian vigilance feature bleeding reaction refunds to other fighters +- fixed Haste, Quickened, Surge, 'action switching', 'attack cantrips', and 'replace attacks with cantrips' interactions +- fixed Martial Guardian vigilance feature granting reaction refunds to other fighter subclasses at any level - fixed Mind Sharpener infusion not providing advantage on concentration checks - fixed Pulse Wave spell to offer push/pull options as well as increase motion distance on upcasting - fixed Stunning Strike behavior to not trigger on stunned enemies and auto disable on a failed saving -- moved Psionic Blast to spell level 4, and converted into homebrew +- moved Psionic Blast to spell level 4, and converted it into homebrew 1.5.97.12: diff --git a/SolastaUnfinishedBusiness/Info.json b/SolastaUnfinishedBusiness/Info.json index 9245c2dc8c..6a7b0dc151 100644 --- a/SolastaUnfinishedBusiness/Info.json +++ b/SolastaUnfinishedBusiness/Info.json @@ -1,7 +1,7 @@ { "Id": "SolastaUnfinishedBusiness", "DisplayName": "[Un] Finished Business", - "Version": "1.5.97.12", + "Version": "1.5.97.14", "GameVersion": "1.5.97", "ManagerVersion": "0.24.0", "AssemblyName": "SolastaUnfinishedBusiness.dll", diff --git a/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj b/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj index 5f3aa6adcc..5132934d3e 100644 --- a/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj +++ b/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj @@ -3,7 +3,7 @@ 12 net48 - 1.5.97.12 + 1.5.97.14 https://github.com/SolastaMods/SolastaUnfinishedBusiness git Debug Install;Release Install