博德之门3

ArcaneWardReactionFix (ArcaneWardReactionFix)

5.0 (0人评)
0 次
v1.0
1 热度

此模组修改了 Interrupt.txt 文件中 Shield 条目中的代码,从:

data "Properties" "IF(HasInterruptedAttack()):AdjustRoll(-5);IF(IsSpellChildOrVariantFromContext('Projectile_MagicMissile')):SetRoll(0);ApplyStatus(INTERRUPT_SHIELD_WIZARD,100,1);ApplyStatus(OBSERVER_OBSERVER,SHIELD,100,1);IF(HasPassive('ArcaneWard',context.Source)):ApplyStatus(SELF,ARCANE_WARD,100,-1)

修改为类似于 Passives.txt 中的 “ArcaneWard_Cast” 代码,但添加了 “ArcaneWard” 被动技能检查:

data "Properties" "IF(HasInterruptedAttack()):AdjustRoll(-5);IF(IsSpellChildOrVariantFromContext('Projectile_MagicMissile')):SetRoll(0);ApplyStatus(INTERRUPT_SHIELD_WIZARD,100,1);ApplyStatus(OBSERVER_OBSERVER,SHIELD,100,1);IF(HasPassive('ArcaneWard',context.Source) and not ArcaneWardOverflow(true)):ApplyStatus(OBSERVER_OBSERVER,ARCANE_WARD,100,Target.ARCANE_WARD.Duration+SpellPowerLevel);IF(ArcaneWardOverflow(true)):ApplyStatus(OBSERVER_OBSERVER,ARCANE_WARD,100,2*ClassLevel(Wizard))

这似乎可以正确地在选择反应时增加 Arcane Ward 的充能次数。基础游戏中的 Counterspell 似乎能够正常工作以增加 Arcane Ward 的充能。

经过进一步调查,根本原因是使用近战攻击时角色仍然处于攻击状态中,UseSpell 不会执行。Larian 的解决方法是将 Shield 作为状态应用(而不是实际施放 Shout_Shield 法术),因此 “ArcaneWard_Cast” 条目永远不会被调用。不幸的是,这意味着我必须修改所有 18 个 Interrupt 条目(考虑到多职业的情况)以手动增加充能次数,否则 SpellPowerLevel 将始终等于 1。

希望 Larian 能够正式修复 Shield 反应问题,这样我可以废弃这个模组。

注意

与其他覆盖 Shield 反应的模组不兼容。