额外攻击兼容性(EAC)

额外攻击兼容性(EAC)

允许多个模组在不使用兼容补丁的情况下,将法术和能力包含或排除在额外攻击之外。

实用工具

允许多个模组在不使用兼容性补丁的情况下,在额外攻击中包含或排除法术和能力。
这是通过使用新的条件函数实现的,这些函数会检查法术的"SpellRoll"字段中是否包含特定字符串。

用户

如果另一个模组需要此模组,你只需像其他模组一样下载并包含在你的加载顺序中。就是这样!

加载顺序

它在加载顺序中的位置并不重要。
然而,那些不使用本模组内置工具来修改额外攻击的模组,如果加载在本模组之后,将会覆盖我的修改。
因此,将此模组放在加载顺序的最底部,可以最大限度地减少任何潜在的不兼容问题。

模组制作者

要使用此兼容性模组提供的工具,您只需在希望包含或排除额外攻击的法术的"SpellRoll"字段中包含特定字符串。在不破坏法术效果的前提下,最佳方式是添加一个包含该字符串的虚拟HasStatus()函子。

为了使法术能与额外攻击协同工作,请添加
不具有状态('改造额外攻击')
到其"SpellRoll"字段的末尾。如下所示:

data "SpellRoll" " 非豁免检定(敏捷属性,计算法术DC(体质属性,上下文来源))且不拥有状态('改装额外攻击')"

同样地,要确保某个法术不与额外攻击效果叠加,需添加
且不拥有状态('ModdedNonExtraAttack')
像这样:

数据 "法术豁免" "非豁免检定(能力.敏捷, 计算法术DC(能力.体质, 上下文.来源)) 且 无状态('改造非额外攻击')"

你不需要为每个不会触发额外攻击的法术添加这个,只需为那些默认会触发它的法术添加即可。
一个检查不存在的状态的HasStatus()总是会返回false,因此除了决定是否包含在额外攻击中外,这部分额外内容不会对法术结果产生任何影响。即使EAC不在加载顺序中,包含这部分也不会破坏任何功能!

请确保不要修改您自己模组中的"ExtraAttack" PassiveData或"EXTRA_ATTACK" StatusData。当然,还要确保您的模组用户知道,要使模组的额外攻击功能正常工作,必须安装EAC!

我为什么需要它?

触发额外攻击的法术和能力由"ExtraAttack" PassiveData条目和"EXTRA_ATTACK" StatusData条目定义。
遗憾的是,由于模组Stats条目的覆盖机制,任何修改这些条目的模组都会覆盖加载顺序中更靠前的所有相同字段的修改。
这意味着要让两个模组协同工作,必须将它们对这些条目的修改合并在一起(即需要兼容性补丁)。
任何修改额外攻击的模组组合都需要进行这种处理。

因此,Mod A 和 Mod B 可能需要与补丁 Z 一起使用,但 Mod A 和 Mod C 可能需要补丁 Y,Mod B 和 Mod C 一起则需要补丁 X,而 Mod A、B 和 C 三者一起则需要补丁 W。这些补丁之间并不兼容,因为它们修改的是相同的字段。

它是如何运作的?

EAC 的工作原理非常简单。
我在额外攻击中添加了函数,用于检查法术的 SpellRoll 字段中是否存在特定字符串。
如果找到该字符串,该法术将被视为有效的额外攻击能力(或明确无效,具体取决于字符串)。

这些字符串可以出现在法术的SpellRoll字段中的任何位置,但如上所述,使用HasStatus()是一种有效的方式,可以在不改变法术结果的情况下包含该字符串。理论上,任何带有字符串参数且不检查该字符串是否为有效实例(无论该函子检查什么)就返回值的函子都可以实现这一点。或者实际上,任何能在不使表达式字段失效的情况下包含字符串的方法都可行。

将EAC包含在您自己的模组中

  1. 你可以将EAC的改动整合进自己的模组中,而不必强制要求使用EAC。
  2. 我只要求你在使用时注明我的贡献!

我已提供未打包的模组文件版本,以便您更轻松地将EAC整合到您的模组中。将Scripts和Stats文件夹合并到您自己的模组中,即可包含EAC正常运行所需的所有内容。