这是我对伤害公式的解释的最终版本。有了新的发现,战斗模拟现在几乎 100% 准确——所以我们终于可以说我们已经找到了游戏的真实伤害公式。您可以在战斗模拟器上看到它的实际效果。
公式的简化版本如下所示:
Kills = √Troops × (Attack × Lethality) / (Enemy’s Defense × Enemy’s Health) × SkillMod
- 你的军队数量与平方根成正比,这意味着拥有一支更大的军队并不会大幅增加你的伤害。例如,如果你使用 10,000 名士兵,则平方根为 100,但将你的部队加倍到 20,000 只会将其增加到 144,而不是 200。所以你的伤害不会加倍。
- 攻击 和 杀伤力 由于它们相乘,因此具有相同的影响。这意味着杀伤力并不比攻击力更强或更重要——两者同等重要。
- 你的 攻击力×杀伤力 被敌人分割 防御×生命值,所以“攻击减少防御”“杀伤减少生命”的旧观念是完全错误的。
- 伤害公式中最重要的部分是 技能模组,代表英雄和部队技能的效果。这对伤害的影响最大,因此拥有强大技能的主力英雄和辅助英雄在决定战斗结果方面发挥着巨大作用。
技能模组或“伤害系数”
这部分非常重要,因为它控制木匠技能如何影响你的伤害。公式为:
SkillMod = (DamageUp * OppDefenseDown) / (OppDamageDown * DefenseUp)
在后端(对于加入者),攻击和杀伤力增益的处理相同→它们只是 伤害提升 影响。游戏中“攻击”与“杀伤力”的措辞只是木匠英雄的调味文字。从机械上来说,唯一将它们分开的是它们 effect_op
标识符。
笔记: 下面的代码示例来自我们的模拟器。它们不是来自游戏文件,因此游戏中的实际变量名称可能不同。
为什么不同的加入者(Amane + Chenko)会造成更多伤害
当你堆叠相同的木匠时,他们的增益就会加起来。但是当你堆叠不同的加入者时,增益效果会成倍增加,给你带来稍微更多的伤害。
示例 1:四个相同的英雄(Amane 或 Chenko,各 25%)
Four Amanes → bonus_effects('DamageUp')(102) = 25 + 25 + 25 + 25 = 100
Four Chenkos → bonus_effects('DamageUp')(101) = 25 + 25 + 25 + 25 = 100
damageUp = 1 + 100/100 = 2.0 (100% boost)
示例 2:两个 Amanes + 两个 Chenkos(各 25%)
Amane = effect_op 102 → total 50
Chenko = effect_op 101 → total 50
bonus_effects('DamageUp') = {101: 50, 102: 50}
damageUp = math.prod((1.0 + val/100.0) for val in stats_dict('DamageUp').values())
damageUp = (1 + 50/100) * (1 + 50/100)
damageUp = 1.5 * 1.5 = 2.25 (125% boost)
结果
- 四个相同的英雄 → 2.0(100% 提升)
- 两个Amane + 两个Chenko → 2.25(提升 125%)
那是一个 相对增长12.5% 仅因混合英雄而造成伤害。
为什么会发生这种情况
这 math.prod
函数将每个唯一的相乘 effect_op
分别地:
- 如果所有的英雄都有相同的地方
effect_op
,他们的增益只是加在一起。 - 如果他们有不同的
effect_ops
,增益乘法复合 → 导致更高的伤害。
攻击力与杀伤力——你应该增强哪一个?
现在我们了解了 Kingshot 伤害公式,我们知道 攻击 和 杀伤力 彼此相乘。这意味着加强 降低 它们之间的统计数据可以让你的整体伤害有更大的增加。
在大多数情况下,您的 攻击 比你的高很多 杀伤力,就像你的 防御 通常高于你的 健康 ——主要是因为杀伤力和生命值更难提高。因此,要获得明显的伤害提升,请专注于增加伤害 杀伤力,并为了更有效地减少传入的伤害,努力提高 健康。
一旦你的 杀伤力 和 健康 统计数据足够高,那么关注就开始变得更有意义 攻击 和 防御 再次。