伤害计算

From Stoneshard wiki
Jump to navigation Jump to search
战斗机制:总览 | 术语对照 | 攻击判定 | 伤害计算 | 伤害类型 | 防御属性 | 身体部位与伤势 | 特殊伤害 | 其他规则

本页讲一次攻击最终扣掉多少生命。全作只有一条出伤管线,普通攻击、技能、法咒、陷阱与反伤都按同一套次序结算。

次序是:伤害构成 → 格挡 → 防护 → 抗性 → 所受伤害 → 取整。防御环节分三句,次序不能颠倒:格挡是防御方挡住或拨开攻击、削减冲击,持盾牌时还能格挡远程攻击,法术不能格挡;防护是攻击的效果被防具完全或部分抵消,在抗性之前生效;抗性按百分比减少某一类伤害。

伤害构成

面板上的十三类伤害各自取值,再分成两个乘区:

组 类型 乘的系数
物理(4 类) 劈砍 / 穿刺 / 钝击 / 撕裂 兵器伤害 ÷ 100
自然 + 魔法(9 类) 灼烧 / 霜冻 / 电击 / 中毒 / 腐蚀 / 秘术 / 神圣 / 邪术 / 灵能 法力 ÷ 100

即:

物理 4 类 → × (兵器伤害 / 100)
其余 9 类 → × (法力 / 100)

兵器与法力是两个独立乘区,不互换。一件纯物理兵器上附带的 +8 灼烧伤害,吃的是法力,不是兵器伤害。

再乘上攻击判定阶段定下的全局倍率(暴击为暴击效果、失手为 0.5、反伤为反伤百分比)。这个倍率同时缩放物理与魔法两部分。

几个特例

情况 结果
玩家主手槽没有兵器 兵器伤害系数强制为 100%
敌人徒手 伤害 = 1.2 × 力量,且不吃兵器伤害系数
术士召唤的星体幻影 秘术伤害被转化为治疗


格挡吸收

格挡力量是一条会涨会跌的数值

格挡力量不是「有 30 点就永远能挡 30 点」的阈值,而是面板上写着「当前 / 上限」的那条数值,像生命条一样会被打掉、又会每回合回涨。格挡吸收分三层:

  1. 现在还剩多少 —— 每次格挡成功都要从这条数值里扣掉一部分,每回合再按格挡力量恢复的百分比涨回来。
  2. 一次格挡能动用多少 —— 能动用的就是「现在还剩下」的那个数。它不是每种伤害类型各自扣一份,而是把这一整笔数当作总预算,按这次攻击里各类型伤害所占的份额切开,每类只用自己的那一份。
  3. 物理与魔法各算一遍 —— 物理四类按上面的办法分一遍,魔法九类再拿同一笔数重新分一遍,两次互不影响。两趟扣掉的总量一起从这条数值里减去。

具体到每次格挡,每种类型能用的额度各自独立算出来:

该类型额度 = k × 格挡力量 × ( 该类型伤害 ÷ 本次攻击十三类伤害之和 )
该类型实际挡下 = min( 该类型伤害, 该类型额度 )

用格挡力量上限 30 承受 20 劈砍 + 10 灼烧:

类型 份额 该分到的预算 实际吸收 穿透后剩余
劈砍 20 20/30 1 × 30 × 0.667 = 20.0 20.0 0
灼烧 10 10/30 0.66 × 30 × 0.333 = 6.6 6.6 3.4
伤害组 吸收效率
物理(劈砍 / 穿刺 / 钝击 / 撕裂) 1 点格挡力量吸 1 点
自然与魔法(其余 9 类) 1 点格挡力量只吸 0.66 点,即减弱 33%

吸收效率与消耗速度

格挡对魔法伤害与自然伤害的折扣分两层,量的是两件事:

量的是什么 数值 表现
吸收效率 每点格挡力量吸 0.66 点魔法伤害 「减弱 33%」
格挡力量的消耗 每吸 1 点魔法伤害,格挡力量掉 2 点 即所谓「2 点抵 1 点」

即魔法伤害挡得少(67%),而且掉得快(2 倍);物理伤害则是 1 : 1。

格挡力量每回合按格挡力量恢复的百分比回涨,上限 30、恢复 20% 时每回合回 6 点。

格挡力量上限与力量有关,且受所用兵器类别影响:

兵器 系数 兵器 系数
单手刀剑 1.10 双手刀剑 1.25
长杆刃器 1.00 长柄法杖 0.90
双手锤棒 0.90 双手斧 0.85
单手锤棒 0.75 单手斧 0.75
匕首 0.50 盾牌 / 空手 —

用盾牌格挡损耗盾牌耐久,不用盾牌格挡损耗兵器耐久。


防护

防护同样是一份预算按份额分摊,而且先减防护、再乘抗性。

净伤 = 取整( (类型伤害 − 穿甲系数 × k × 部位防护 × 类型份额) × max(1 − 抗性/100, 0) × 所受伤害/100 )

符号 含义
类型份额 该类型伤害 ÷ 总伤害
k 物理 = 1,自然与魔法 = 0.66
部位防护 被命中那一个部位的防护值
穿甲系数 1 − 护甲穿透/100
抗性 该类型的部位抗性
所受伤害 面板「所受伤害」÷ 100
  1. 混合伤害会把防护稀释。20 劈砍 + 10 灼烧打 8 点防护时,劈砍只分到 8 × 20/30 = 5.33,灼烧分到 0.66 × 8 × 10/30 = 1.76。
  2. 自然与魔法伤害的防护效率只有 0.66。
  3. 穿甲 100% 时防护完全失效。法咒用法咒护甲穿透,兵器用护甲穿透。
  4. 防护对物理与自然 / 魔法的减免是同一条公式,只是系数不同。

防护分四个数值,对应四组部位:

部位 取用哪件防具的防护
头部 头部防具
躯干 躯干防具
手臂(左手 / 右手) 手部护具
足部(双腿 / 右腿) 足部护具

每次攻击打哪个部位是随机的。

抗性

抗性直接乘在上面那条算式的中间段:× max(1 − 抗性/100, 0)。

抗性可以为负,此时它是伤害放大器(−50% 抗性 → ×1.5)。

算例:10 点灼烧伤害,因下雨处于潮湿获得合计 50% 灼烧抗性,实际受到 5 点。

抗性的完整分类见防御属性。


所受伤害

最后一道总系数,在防护与抗性之后生效。

玩家「所受伤害」的下限是 25%,所以不可能把伤害归零。

取整

取整发生在三个阶段:

  1. 每一种伤害类型各自取整一次,且各自做一次「不小于 0」的下限;
  2. 十三项相加时,魔法组、自然组各先取整一次;
  3. 最后总和再取整一次。

不存在「最后统一取整」,所以手算与面板之间会有零头差异。


示例

设定:

  • 攻击方:劈砍 20 + 灼烧 10,兵器伤害 100%、法力 100%;本次未暴击、未失手。
  • 防守方:生命上限 100,被命中右腿,腿部防护 8;全抗性 0%,所受伤害 100%;本次未格挡。
步 阶段 算式 结果
1 伤害构成 (20 × 1.0) + (10 × 1.0) 30
2 部位选取 随机抽中右腿(本示例指定) 右腿
3 防护 劈砍 20 − 1 × 8 × 20/30
灼烧 10 − 0.66 × 8 × 10/30
round(14.67) = 15
round(8.24) = 8
4 抗性 均为 0% 15 / 8
5 所受伤害 × 1.0 15 / 8
6 结算 round(15 + 8) 23 点生命

防护按份额分摊,不是每类型各减 8:劈砍只分到 8 × 20/30 = 5.33 的预算。结算发生在部位选定之后,所以打哪里会直接决定这次攻击吃多少防护。

与生命损失并行结算、互不影响的还有副效果进度条、疼痛与肢体伤害,见特殊伤害与身体部位与伤势。

出伤路径

除了下面七个入口,游戏里没有别的造成伤害的方式,因此任何伤害都走同一套防御结算:

场景 全局倍率
普通命中 1,或暴击效果
失手 / 闪躲降格 0.5
格挡 1 / 0.5 / 暴击效果,再扣格挡预算
反伤 反伤百分比
技能 / 环境直伤 由技能给定
法咒 暴击时用奇观效果
陷阱 固定 1