来源与附着对象
这是个什么属性
除了 AttachEffectTypes 内配置的 AE 对象固有属性,如自动武器是否只发射一次,叠层检测到底检测几层外
任何AE都有两个在实际使用中才会产生的固有属性:
- 附着对象是谁
- AE来源是谁
许多 AE 的效果器都涉及到附着对象和 AE 来源,只读 INI 的语句含义最终绝对无法理解 AE ini如何运作,必须根据给出的规则想象物体之间的互动和 AE 溯源/ AE 链条的传递。
这个属性怎么构成
假设有单位 A,单位 B 两个单位,A 发射武器 P,使用弹头 W,抛射体 P,攻击 B。
对于一般情况
如 P 上写着 AttachEffectTypes=AE
,则 AE 的附着对象为 P,来源为 A。
但是如果 P 上的 AE 是自动武器,此自动武器永远视为 A 发射的(因为只有单位可以发射武器),而不是抛射体 P 发射的,用抛射体上的自动武器贴上的 AE 来源一律视为 A 而不是抛射体 P。
如 W 上写着 AttachEffectTypes=AE
,命中 B 后,AE 附着在 B 上,来源为 A。
如上述 W 上写着 AttachToSource=yes
,命中 B 后,AE 附着在 A 上,来源为 B。
如果 W 上写的 AE 是自伤,则 B 受到来自 A 的伤害(正常结算击杀经验),搭配 ForceMission
弹头即可达成点对点的嘲讽。
如果 W 上写着的 AE 是礼物盒,则 A 打完 B,B 身上生成 C 。
- 如果礼物盒 AE 中指定
GiftBox.AttachEffects
,且GiftBox.Remove=no
,则B不会移除, 生成所属方和 A 相同的 C ,获得来自 B(生成 C 的物体来源,而非礼物盒 AE 来源)的 AE。 - 如果礼物盒 AE 中指定
GiftBox.AttachEffects
,且GiftBox.Remove=yes
,则B移除,生成所属方和 A 相同的 C。C 无法和 B 互动,身上的 AE 来源已经没有意义,毕竟 B 已经移除了。 - 如果需要保持 C 和 B 的所属一致,礼物盒 AE 需要写上
ReceiverOwn=yes
。
对于广播的情况
如 W 上写着的 AE 是 ReceiverOwn=no
的广播,则命中后,B 获得广播效果,粘贴 AE2,则所有广播对其他对象产生的 AE2 都来自于 A
如果上述广播 ReceiverOwn=yes
,则所有广播产生的 AE2 都来自于 B。
如果广播的是自动武器标记,则在没有 ReceiverOwn 情况下,ReceiverAttack 正常,但武器所属无法自动调整,会视为来自广播目标。掰不明白的话就记住广播贴的 AE,如果不是你清楚知道自己在干什么,一定要带 ReceiverOwn
对于复仇类的情况
如果 W 上写着的 AE 是复仇类效果,则 A 打完 B 后,B 获得来自 A 的复仇。设第三个单位 C 攻击 B。
默认情况下复仇触发后,会从 B 身上发射武器或粘贴 AE 到 C。
Revenge.FromSource=yes
时,将会从 A 上发射武器或附着 AE。Revenge.ToSource=yes
时,将会发射武器或附着 AE 到 A 上。
对于叠层检测的情况
如果 W 上写着的 AE 是叠层检测,条件通过后粘贴 AE2,则 A 打完 B 后,B 获得来自 B 的 AE2。
如果上述的叠层检测 Stack.AttachToSource=yes
,则AE2的去向是 A(跟随检测器来源),来源是 B。
因为叠层检测用处广泛,且经常互相嵌套,其来源和附着对象常常乱成一团,在复杂 ini 中把人耍得团团转。嵌套时,必须理清相互的关系。
对于武器标记的情况
如果你使用 AutoWeapon.IsAttackerMark=yes
启用了武器标记,
- 若
AutoWeapon.ReceiverAttack=yes
,意思为自动武器标记 AE 将会使得这个 AE 的附着对象发射武器到 AE 的来源。 - 若
AutoWeapon.ReceiverAttack=no
,则 AE 的来源发射武器到 AE 的附着对象。
若 AutoWeapon.ReceiverOwnBullet=yes
,则炮弹视为AE的附着对象发射。炮弹的归属和其他自动武器语句无关,包括 AutoWeapon.FireToTarget
或 AutoWeapon.ReceiverAttack
,也就是可以从 A 的炮口发射出属于 B 的炮弹。
如果你的 ini 设计中存在许多 AE 嵌套,且你想和人讨论你的设计图,那么你必须声明其中所有的AE从哪里来,到哪里去,如果用效果贴,那么谁给谁贴。如此你的设计才是语言层面上可理解的。