战斗机制详解

战斗机制详解

本文一步步讲解 Leek Wars 中战斗的运作方式,说明攻击是如何计算和结算的。文中也会介绍每种伤害类型的特点,以及各种进阶机制(吸血、伤害反弹、侵蚀、暴击等)。

攻击类型简介

在 Leek Wars 中,每次攻击都可能对应以下一种(或多种)效果:

每种伤害的结算逻辑大体相同,只有少数例外(中毒无视护盾,LIFE_DAMAGE 不触发吸血,等等)。下面各节将详细说明每种攻击的结算步骤。

攻击的结算流程

随机抽取基础伤害

使用武器或芯片时,它的基础伤害(在描述中标明,也可通过 getWeaponEffects 或 getChipEffects 获取)会在 [min, max] 范围内按均匀分布只抽取一次。

> 示例: > 马格南的伤害范围是 [25, 40],攻击时会在 25 到 40 之间抽取一个随机值。

如果武器(或芯片)有多个伤害效果,每个效果都会沿用同一个抽取值(比如机关枪的 3 次命中基础值都相同)。不过,之后的所有步骤(力量、护盾等)会对每个效果分别计算。

属性加成:力量、魔法、科学、威力

> 力量:作用于 EFFECT_DAMAGE 和 EFFECT_LIFE_DAMAGE。 > 魔法:作用于 EFFECT_POISON。 > 科学:作用于 EFFECT_NOVA_DAMAGE。

对于物理攻击和新星攻击,通用公式为:

其中 stat(属性)根据伤害类型取力量、魔法或科学。

芯片惩戒的伤害(EFFECT_LIFE_DAMAGE)是个特例:

(这种伤害不会触发吸血。)

威力

在大逃杀 模式中(或击破宝箱时),威力属性会不断累积(可通过 getPower 获取),它同样参与计算:

对 EFFECT_LIFE_DAMAGE 的作用方式也类似:

> 注意: 在大逃杀以外的模式中,getPower 函数返回 0,所以一套通用代码就能适用于所有游戏模式。

范围伤害(AoE)的衰减

如果武器或芯片带有范围效果(例如榴弹发射器),距离爆炸中心每远 1 格,伤害就降低 20%。

> 示例: > 在爆炸中心,榴弹发射器造成 100% 的伤害(力量为 0 时为 [55,63])。距离 1 格时造成 80%([44, 50]);距离 2 格时造成 60%([33,37]),依此类推。

护盾与易伤

> (中毒和新星攻击跳过这一步。)

护盾

护盾分为两类:百分比护盾(以 % 计)和固定护盾(固定数值)。算出总伤害后,按以下公式计算护盾:

> 示例: > 目标有 20 点百分比护盾和 15 点固定护盾,不考虑力量时,一次 [75,120] 的攻击最终会对它造成 [45,81] 点伤害。

> 示例 2: > 面对机关枪 [10-15] x3,目标有 15 点固定护盾,不考虑力量时,每颗子弹最多造成 15 - 15 = 0 点伤害。目标因此毫发无伤。

注意: 如果目标有 100 点百分比护盾,它就免疫伤害(除非它身上有易伤,或者有其他负面机制降低了它的护盾)。

易伤

易伤分两种:固定易伤(EFFECT_ABSOLUTE_VULNERABILITY)和百分比易伤(EFFECT_VULNERABILITY)。它们分别从目标的固定护盾或百分比护盾中扣除,甚至可以让护盾变成负数(此时受到的伤害反而会增加)。

> 示例: > - 霰弹枪 [33,43] 击中一个有 15 点固定护盾的目标:造成 [18,28] 点伤害。 > - 紧接着对它施加 -20 点固定护盾(易伤)。目标的固定护盾变为 -5。 > - 第二次 [33,43] 的攻击就会造成 [38,48] 点伤害(因为负护盾会增加受到的伤害)。

造成伤害

根据攻击类型,最终伤害(经过力量/魔法/科学、威力、AoE、护盾和易伤计算之后)会作用到目标身上。

侵蚀

侵蚀(也就是新星伤害)会在实体受到伤害时降低它的最大生命值。

> 示例: > - 受到直接攻击损失 100 点生命值 = 最大生命值降低 5 点。 > - 因中毒损失 100 点生命值 = 最大生命值降低 10 点。

吸血

> *(仅适用于 EFFECT_DAMAGE:攻击自己不会吸血,EFFECT_LIFE_DAMAGE、中毒和新星伤害也不会触发吸血。)*

护盾计算完毕后,攻击者可以按一定比例回复所造成的伤害,比例取决于它的智慧:

伤害反弹

> (中毒和新星攻击不触发。)

如果目标拥有伤害反弹(EFFECT_DAMAGE_RETURN),攻击者会受到一定比例的反弹伤害,按目标护盾生效之前的伤害计算。

这部分伤害不计攻击者的护盾,所以如果目标护盾很厚,或者伤害反弹超过 100%,反弹伤害可能比最终伤害还高。

击杀获得威力

在大逃杀中,或击破宝箱时,击杀一个实体可以获得威力加成(击杀韭葱得 10 点,击杀球茎得 2 点,另外再加上受害者已累积威力的 50%)。如果同一次行动中连续结算多个效果,这可能会影响后续攻击的伤害。

各伤害类型的细节与特点

物理攻击(EFFECT_DAMAGE 和 EFFECT_LIFE_DAMAGE)

结算顺序(每个效果分别结算)

1. 随机抽取基础伤害(只抽一次)。 2. 被遗忘武器的被动效果(攻击者)。 3. 属性加成(力量/威力)。 4. AoE 衰减(如适用)。 5. 护盾(防御者)+ 可能存在的易伤。 6. 造成伤害(防御者)。 7. 侵蚀(防御者)。 8. 被遗忘武器的被动效果(防御者)。 9. 吸血(攻击者)。 10. 伤害反弹(防御者),以及反弹造成的侵蚀(攻击者)。 11. 击杀获得威力(大逃杀中或击破宝箱时)。

> 注意: > - EFFECT_LIFE_DAMAGE(芯片惩戒)的伤害基于攻击者的生命值,而且不会吸血。 > - 如果攻击者和防御者是同一个实体(例如攻击自己),吸血和伤害反弹都不生效。

魔法攻击(中毒 – EFFECT_POISON)

中毒无视护盾、吸血和伤害反弹。结算顺序为:

1. 随机抽取基础伤害(只抽一次)。 2. 被遗忘武器的被动效果(攻击者)。 3. 属性加成(魔法/威力)。 4. AoE 衰减(如适用)。

然后,在目标的回合开始时:

1. 造成伤害(防御者)。 2. 侵蚀(防御者)。 3. 被遗忘武器的被动效果(防御者)。 4. 击杀获得威力。

> 注意 > 每个回合开始时,会按 getEffects 返回的顺序计算当前韭葱身上的效果。也就是说,治疗和毒素伤害的先后顺序很重要:韭葱可能在治疗之前就死了,反过来也一样

后遗症(EFFECT_AFTEREFFECT)

与中毒类似,但在施加时还会立即造成伤害:

1. 随机抽取后遗症(伤害)的基础值(只抽一次)。 2. 被遗忘武器的被动效果(施法者)。 3. 属性加成(施法者的科学)+ AoE 衰减。 4. 造成伤害(承受者)+ 侵蚀。 5. 被遗忘武器的被动效果(承受者)。

然后,在承受者的每个回合开始时:

1. 再次造成伤害(承受者)。 2. 侵蚀(承受者)。 3. 被遗忘武器的被动效果(承受者)。 4. 击杀获得威力(大逃杀中或击破宝箱时)。

后遗症无法用芯片解药移除。

新星伤害(EFFECT_NOVA_DAMAGE)

新星伤害针对的是目标的最大生命值,最多只能削减到目标已损失的生命值为止:

1. 随机抽取基础新星伤害(只抽一次)。 2. 被遗忘武器的被动效果(攻击者)。 3. 属性加成(科学/威力)。 4. AoE 衰减(如适用)。 5. 造成新星伤害(防御者)(无视护盾和伤害反弹,不会吸血)。 6. 被遗忘武器的被动效果(防御者)。

进阶交互

暴击

触发暴击时,从随机抽取伤害这一步起(第 1 步)就会乘以 1.3 的倍率(常量 CRITICAL_FACTOR)。因此物品的全部效果(伤害等)都会提高 30%。此外:

被遗忘武器的被动效果

被遗忘武器可能带有被动效果(比如 EFFECT_DAMAGE_TO_ABSOLUTE_SHIELD,它会把所受伤害的一定百分比转化为固定护盾)。这些被动效果:

被动效果的名称形式为 EFFECT_[événement]_TO_[caractéristique]([événement] 为事件,[caractéristique] 为属性)。检测到该事件时,会对持有被遗忘武器的实体施加一个效果。这个效果的类型总是 EFFECT_RAW_[caractéristique]。例如,EFFECT_MOVED_TO_MP 会在实体被位移时触发,此时它会获得一个 EFFECT_RAW_BUFF_MP 效果

总结

每种效果(物理、中毒、后遗症、新星)都有各自的特点,以及特有的交互(护盾、侵蚀、伤害反弹、吸血)。需要记住的要点有:

1. 基础伤害只确定一次(即使是多段攻击也一样)。 2. 之后由属性(力量、魔法、科学、威力)修正这个伤害。 3. 护盾(百分比和固定)对物理攻击生效,但对中毒和新星伤害无效。 4. 造成的伤害会产生侵蚀,降低韭葱的最大生命值。 5. 其他机制(吸血、伤害反弹、暴击、被遗忘武器的被动效果)也可能在各个步骤中触发。

弄清每一步的具体流程,你就能根据局势更好地优化自己的进攻和防守策略。祝你在竞技场上好运!