Stoneshard Wiki

战斗公式

想判断一击为何没打出预期结果,要依次看准度门槛、闪躲与失手的互动、暴击或格挡分支,再看动作倍率、伤害类型、防护、抗性和所受伤害。兵器面板上的基础伤害只是输入之一,不能直接当成本次最终伤害。

目录

为什么会命中、闪躲或失手

游戏先分别抽取失手与格挡,再检查准度。目标闪躲几率为负时,其绝对值会加到准度输入;非负时,准度门槛通过后才进行闪躲抽样。超过 100 的准度会从这次闪躲输入中扣除超出的部分。

闪躲抽样成功并不总是零伤害:原攻击没有失手时,它会把攻击变成失手,以 0.5 动作倍率进入防护、抗性等后续结算;这不保证最终生命损失恰好减半。原攻击已经失手时,才会完全闪开并造成 0 伤害。最终处理优先级是完全闪躲、格挡、失手、普通命中;暴击只会在准度通过、没有失手且没有触发闪躲改写时抽取。

为什么会命中、闪躲或失手
步骤输入结果
预先抽样失手几率;目标格挡几率且格挡力量至少为 1保存结果,稍后按分支优先级使用
准度门槛准度;负闪躲会增加输入失败即完全未命中
闪躲抽样闪躲几率 − max(0, 准度 − 100)把正常攻击变失手,或把原本失手完全闪开
暴击抽样暴击几率 × (1 − 目标暴击避免 ÷ 100)通过后使用暴击效果倍率及兵器暴击效果
最终分支完全闪躲 → 格挡 → 失手 → 命中格挡可以与失手或暴击组合

命中后怎样得到最终伤害

标准路径先把每种物理伤害乘以动作倍率和兵器伤害 ÷ 100,把魔法、自然伤害乘以动作倍率和法力 ÷ 100。普通命中的动作倍率为 1,失手为 0.5;暴击先应用兵器种类的暴击修正,再用暴击效果 ÷ 100。

若发生格挡,每个物理分量扣除“格挡力量 × 该分量占总伤害比例”,每个非物理分量按 0.66 倍格挡力量计算这项扣减。0.66 是格挡力量对非物理伤害的权重,并非把非物理伤害直接乘以 0.66。

格挡的分量占比使用格挡前总伤害;格挡完成后会重算剩余总伤害,防护扣减再使用“剩余分量 ÷ 剩余总伤害”的占比。随后逐类型应用抗性,最后乘以所受伤害并取整。身体部位会决定本次读取的防护和类型抗性;各类型处理后再合计,所以混合伤害不能只用一个总面板数套一次减伤。

机会语义、算例与输入边界

机会函数抽取 0 到 100 的整数,共 101 种等可能结果。输入至少 100 时必定成功,输入不大于 0 时必定失败;0 到 100 之间的输入 x,真实概率是 ceil(x) ÷ 101。于是整数 80 对应 80 ÷ 101 ≈ 79.21%,并非恰好 80%。

完整假设算例:攻击者准度 80、失手几率 0、暴击几率 20;目标闪躲几率 20、格挡几率 0、暴击避免 25。准度门失败为 20.79%;准度通过后闪躲成功会把攻击变成使用 0.5 动作倍率的失手,总概率 15.68%;进入普通命中/暴击池的概率为 63.52%。暴击输入为 15,条件概率 14.85%,这次攻击最终进入暴击命中分支的概率约 9.43%。这些结论只适用于列出的输入与无额外修改的假设。

下表只列本页已在玩家属性重算分支中核实的边界。敌人与简化单位走不同分支;具体攻击仍可能在进入抽样或伤害公式前应用动作、兵器暴击效果和临时状态等修正,因此边界值不是每次攻击必然使用的最终输入。

机会语义、算例与输入边界
官方属性重算边界
暴击避免−20—100
所受伤害25—200

远程命中还会扣除什么

远程最终输入为“传入准度 + 适用的命中修正 − 目标闪躲几率 ÷ 2 − 路径惩罚 − 距离惩罚”。若目标身上的相关夜间命中状态生效而攻击者没有夜视,传入准度先减 5;有夜视时不扣这 5 点。路径扫描在抵达目标时停止,并依次累加此前有尺寸对象的惩罚:小型 15、中型 30、大型或巨型 100;累计达到 100 时也会停止扫描。对应被动会把小型降为 10、中型降为 20。

距离大于 2 格时,距离惩罚是 2 × 完整距离;对应被动将系数降为 1。在启用近距离惩罚的通常调用中,弓在 1 格与 2 格时改用 50 与 25,被动下为 35 与 15。投石索的对应被动在适用调用中另加 max(0, 30 − 5 × 距离) 准度。

假设传入准度 80、目标闪躲几率 20、距离 4 格、相关夜间状态不生效、路径无尺寸对象且无对应被动,远程输入为 80 − 10 − 8 = 62,对应 62 ÷ 101 ≈ 61.39%。目标不可作为伤害目标或直线存在投射物屏障时,这条直线路径无法通过远程预检,不进行普通命中抽样;普通未命中还可能把投射物改投到别处。

穿透与逐类型伤害算例

护甲穿透或法咒护甲穿透由调用路径二选一,先换算为“1 − 穿透 ÷ 100”,只缩小防护扣减。抗性在防护之后独立应用,所以 50% 护甲穿透不会把 25% 斩击抗性降成 12.5%。非物理分量的防护扣减还使用 0.66 权重。

标准单一斩击算例:原始斩击 20、动作倍率 1、兵器伤害 100、无格挡,目标该部位防护 8、斩击抗性 0、所受伤害 100。护甲穿透为 0/50/100 时,最终分别为 12/16/20。若护甲穿透 50 且斩击抗性 25,结果为 12。同条件改为暴击效果 150 的暴击、抗性仍为 0,则分量先变为 30,最终为 26。这就是为什么基础面板数不能直接当最终伤害。

标准路径边界与仍需运行时输入的内容

上面的伤害公式是明确假设下的标准路径。某些状态会替换伤害包、把动作倍率或法力归零,徒手或特殊敌人也可能改写伤害类型;具体技能还会在进入通用公式前后修改属性。遇到这些情况,应以对应技能或状态词条为准。

静态源码能够证明分支与公式,却不能复原某一击的临时效果、身体部位选择、路径对象和随机整数。要重放单次战斗仍需当时的攻击者、目标、动作、位置、前置状态与全部随机结果;本页因此提供可核对的标准算例,而不是承诺从装备面板预测每次实战结果。

参考资料

资料版本 0.9.4.25

  1. 0.9.4.25 官方属性名称与说明
  2. 0.9.4.25 攻击、机会抽样与结果分支源码
  3. 0.9.4.25 伤害分量、格挡、防护、抗性与穿透源码
  4. 0.9.4.25 远程命中预检与未命中处理源码
回到开头 ↑