此模组修改了 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 反应的模组不兼容。
发表评论