How Combat Numbers Work属性 · 攻击 · 承伤
从四个主属性怎么变成战力,到一次攻击如何拆成多股伤害算出去,再到伤害落在目标身上怎么一层层被减免、最后扣掉多少血 —— 一张图讲清游戏里每个数字的来龙去脉。面向想搞懂机制、想调数值的模组玩家与作者。
四个属性,四种战力 The Four Stats
角色面板上的力量 / 敏捷 / 专注 / 体力不是摆设 —— 每一点都按固定规则换算成具体战斗数值。升级每级给 5 点。
力量
Strength- 武器物理伤害 +0.5% / 点
- 暴击伤害 +0.4% / 点
敏捷
Dexterity- 暴击几率 曲线
- 闪避几率 曲线
- 命中率 +2.5% / 点
- 减少"失手"惩罚
专注
Focus- 技能伤害 +0.5% / 点
- 元素武器伤害 +0.5% / 点
- 最大法力 +0.5 / 点
- 双击几率(斩杀)· 招架几率 曲线
体力
Vitality- 最大生命 +3.6 / 点
- 护甲放大 +0.25% / 点
- 格挡几率 曲线
原版曲线,直接从数据文件读出来
数据源 GRAPHS/STATS/*.DAT(每 25 点采样)。★暴击=闪避=格挡=招架四条完全重合成一条;双击(EXECUTE)更高、失手(FUMBLE)向下走。横轴=单项属性投入点数,纵轴=几率%。
代入数字看看
一次攻击是怎么打出去的 Dealing Damage
很多人以为"打一下 = 一个伤害数"。其实一次攻击天生是多股伤害:一把武器可以同时带物理 + 火 + 冰,命中时每种元素各算各的,互不干扰。
同一次攻击,五种元素各走各的
武器和技能的伤害都拆成五个独立通道。你砍一刀,如果武器带火附魔,那就是"物理一股 + 火焰一股"同时飞过去,落地时分别被对方的物理护甲和火焰抗性减免。所以"一次攻击有多次结算"是对的 —— 但那不是攻击了好几次,而是一次攻击被拆成几股元素分量,一起结算。
从"挥一刀"到"伤害数字"的四步
-
合成武器伤害Weapon Damage取武器面板伤害,乘上稀有度加成和攻速加成,再过一条按角色等级放大的曲线。加上力量给的 +物理%、专注给的 +元素%/技能%。
-
拆成五元素Split按武器/技能的元素配比,把总伤害分到物理·火·冰·电·毒五个通道,在 MIN~MAX 区间内各自 roll 一个值。
-
暴击判定Critical先用敏捷决定的暴击几率掷骰。中了 → 整发攻击乘上暴击伤害(力量决定,基础起步 ×1.5,上限 ×6=+500%)。暴击会把你攒的累计伤害立即刷成蓝、并跳一个"暴击!"(见 Ⅴ)。暴击几率 ← 敏捷暴击伤害 ← 力量硬上限 +500%
-
命中判定Hit / Miss攻击方的命中率对上防御方的闪避:被闪避=这下完全落空(只有近战武器攻击能被闪避)。武器攻击还要再过防御方的格挡。都没躲过 → 命中,进入承伤结算(见下一段)。命中 ← 敏捷闪避只挡近战格挡挡得更宽
一次挥砍,可能同时是"物理 + 火 + 冰"三股伤害、每股独立被减、还叠一层暴击 —— 头顶那一个数字,其实是这几股加起来的总和。
伤害落地,一层层减下来 Taking Damage
命中之后,伤害不是直接扣血,而是按固定顺序过好几道关卡。每一关都可能把它削掉一截,甚至归零。
减免的先后顺序
| 关卡 | 怎么减 | 要点 |
|---|---|---|
| 格挡 | 掷格挡骰,成功则拦下 | 玩家格挡 = 这一下整发免疫(不是减一点,是全免);怪物的盾则是吸收一个固定的"盾值",超过就把盾打碎、余下穿透。玩家格挡需要装盾,上限 75%(我们的模组可提到 85%)。 |
| 护甲 / 抗性 | 五元素各自被对应护甲减 | 关键 护甲减伤带随机 —— 每次实际生效的护甲是面板值的 50%~100% 之间随机取一个。所以同样护甲挡同一击,每次减的量都不一样。火伤只被火抗减,物理只被护甲减,互不通用。 |
| 减伤% | 各种"减少X%受到伤害"叠加 | 护甲算完后再乘一道总减伤。玩家硬上限 75%(我们的金刚灵石可破到 95%);怪物可以到 100%(免疫)。 |
| 护盾缓冲 | 某些技能给的护盾条 | 在护甲之后、扣血之前,直接吸掉一截。吸满了就"护盾破碎",余下的才进血。 |
伤害到底从哪来 Where Damage Comes From
武器、技能、燃烧、中毒、反弹…看着五花八门,其实都汇进同一条扣血通道。分清它们只在于"怎么产生"和"要不要过抗性"。
| 来源 | 怎么产生 | 特点 |
|---|---|---|
| 武器攻击 | 武器伤害合成 → 五元素 | 能被闪避 + 格挡;近战按挥砍弧命中 |
| 技能直伤 | 弹道 / 范围命中 | 命中之后和武器攻击完全同一条链 —— 只是前面产生方式不同 |
| 持续伤害 DOT 燃烧 / 中毒 / 触电 / 冰缓 | 命中时先 roll 元素抗性,中了才挂上 | 不是当场算完 —— 挂上之后每一帧跳一次伤害,持续几秒。着火的怪头顶不停跳数字,就是这个 |
| 控制效果 击晕 / 减速 / 定身 / 击退 | 命中时 roll 对应抗性 | 不直接扣血,是施加状态。你面板上的"减速抗性 / 定身抗性"挡的就是这类,挡不了直接伤害 |
| 反弹伤害 | 受击时按反弹%弹回攻击者 | 沿同一条扣血通道打回去 |
不管伤害从哪来 —— 武器、技能、DOT 的每一跳、反弹 —— 真正扣血永远走同一个出口。这也是为什么模组要做"全局减伤 / 吸血 / 伤害统计",只要接住这一个出口,就能覆盖所有伤害。
头顶那个数字什么颜色,什么意思 Floating Numbers
游戏里跳的伤害字有几种颜色 —— 引擎把你的连续伤害攒成一堆汇总显示,再叠上暴击和失手(伤害打折的命中)两种特殊情况。跟远近、元素、"能不能格挡"都无关。
一次攻击,引擎按顺序算了这么多 The Attack Sequence
你点一下攻击,引擎不是"算个伤害"这么简单 —— 它按固定顺序掷好几次骰、算好几层,而且这些骰之间还互相排斥。把顺序捋清,前面那些颜色、数字就全串起来了。
★ 失手判定在暴击判定之前 —— 一旦失手,就不再掷暴击。这就是"失手 ↔ 暴击互斥"。
· 近战平砍(左键点怪):是武器自己"直接挥一下" —— ★不是技能、不耗资源、即时命中(碰到就算,没有飞行物)。
· 远程平砍(弓 / 枪 / 法杖):看着也是"普通攻击",其实是发射一个内置技能,打出一颗弹道飞过去。
· 技能攻击:伤害 / 元素 / 形状由技能自己定义,耗魔力 / 充能;还能带专属属性(不可格挡、范围 AOE、多段命中)。
· 范围 AOE / 持续伤害(燃烧中毒)等还有各自的出手方式。—— 这么多入口,命中后一律汇入上面那条流程。所以暴击/失手/元素减免这些规律,近战平砍、远程、放技能全都一样成立;换出手方式只改"打出多少、什么元素、什么特效",不改"怎么结算"。
按顺序,一步步掷
- 命中判定Hit / Miss你的命中率对上对方闪避。被闪避 → 这下完全落空,后面都不算(只有近战武器攻击能被闪避)。命中 ← 敏捷被闪避=落空
- 失手 或 暴击(★互斥)Fumble XOR Crit命中之后掷一次决定这击的"性质":要么可能失手(伤害被打折,跳紫字),要么可能暴击(伤害大涨,跳蓝字)。引擎二选一,同一击不会既失手又暴击。暴击 ← 敏捷几率 / 力量倍率失手 ← 失手率
- 合成五元素Split把这击拆成物理·火·冰·电·毒五股,在 MIN~MAX 区间各 roll 一个值(见 Ⅱ)。暴击时整发再 ×(1+暴击伤害),硬上限 +500%。
- 护甲 / 抗性减免Mitigate每股被对方对应元素的护甲减免 —— ★护甲是直接扣掉一坨(平减,不是减百分比)。扣的量 = 面板护甲的 50%~100% 随机,同护甲每次都不同(见 Ⅶ)。平减 · 非百分比护甲随机 50–100%
- 扣血Apply五股加起来落到血条。这里就接上了 Ⅶ 的"承伤收口"。
模组向:第二关那条 stat 叫 MISS CHANCE(攻击方自身),不是对方的属性。
所有伤害,最后都走同一个出口 Taking the Hit
不管伤害从哪来 —— 武器、技能、燃烧中毒、反弹 —— 落到血条前都汇到同一个收口。搞懂这个收口,就搞懂了"改伤害"的所有开关在哪拧。
任何来源命中后都汇到同一个承伤收口扣血 —— hook 这个收口,一次覆盖所有伤害来源。
五种来源(武器攻击、技能直伤、持续伤害 DOT、控制、反射)产生方式各不同,但命中之后全走同一条:先过减免(格挡→护甲→护盾),再由这个收口真正扣血。所以要做"全局减伤 / 吸血 / 伤害统计"这类 MOD,只要盯住这个收口就覆盖了所有来源,不用去追每一个产生点。
★由此推出一条反直觉的结论:护甲对小额高频伤害超值(可能几乎全免),对单发巨伤杯水车薪 —— 跟"减百分比"到处等效的想法正相反。真正的百分比减伤是另一层(见下条),上限 −75%。元素"抗性"= 每个元素各有一条自己的护甲,走完全相同的这套平减。
模组向:逆向挖穿了这个"咬合系数"—— 它不是一个通用常数,而是 SOAKSCALEPCT(每个技能自带,实测 20~80%,主旋钮)× 武器 SECONDARY_DMG_PCT(0/25/33/50/100)× 伤害标量。所以不同技能"咬"护甲的深浅是刻意调出来的:同一身护甲,挨这个技能掉得多、挨那个少。
真打一场:狂战士 vs 大区长 A Real Fight
前面全是规则,这里拿原版第一章尾的 BOSS —— 大区长 Eldrayn 当靶子,把一个 50 级狂战士的完整面板摆在旁边,一次攻击两边的数字怎么走 —— 一目了然。怪物数值直接从游戏 DAT 读出,玩家派生值按前面的真实公式逐条算出。
怪物数值不是写死的 —— 三层缩放
大区长面板写着 HP 2200,但你在游戏里几乎不会正好打它 2200 血。怪物 DAT 里的 HP/护甲/伤害其实是相对等级曲线的百分比(base = 100 = 100% = 1.0×),真实数值要过三层:
| 档位(难度 / 周目 →) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| BOSS 承受玩家伤害 × | 1.0 | 0.51 | 0.315 | 0.195 | 0.14 | 0.105 | 0.09 | 0.075 |
| BOSS 还手伤害 × | 1.0 | 1.4 | 1.74 | 2.05 | 2.31 | 2.52 | 2.71 | 2.86 |
这就是"BOSS 是伤害海绵"的真正来源 —— 不是它血特别多,而是到了高难度 / 高周目,同一发伤害它只吃 7.5%、回敬你近 3 倍。曲线文件 都能改。
一次交手,两边的数字
同一次攻击,可能打出什么(玩家 → 大区长)
| 这一击的结果 | 触发 | 打出伤害 · 护甲前 | 飘字 |
|---|---|---|---|
| 结实命中(普通) | 主要情况 | 170–255 | 橙 |
| 暴击 | 12.9% · 敏捷 | 350–525 | 蓝 |
| 双击 / 斩杀 | 17.5% · 专注 · 双持 | 上面再叠一份 ≈ 翻倍 | — |
| 失手擦伤 | 没过命中两掷 | 打折(× 失手系数) | 紫 |
所以"一次攻击"从来不是一个固定数字,而是一组可能:大多数时候普通命中,偶尔暴击翻倍跳蓝字,双持还有几率双击再叠一份,偶尔失手擦伤跳紫字 —— 再各自过护甲平减 + 周目乘数才落到血条。这就是你盯着同一只怪、伤害数字却一直在跳的全部原因。
规则是抽象的,一场仗是具体的。同一套公式,换个 BOSS、换套配点,数字全变 —— 但流向永远是这一条。
实例拆解:武器 DPS 与元素技能 Weapon DPS & Elemental Skills
前面讲的是"拿到伤害之后怎么算";这一节讲伤害怎么生出来 —— 武器那个"每秒伤害"从哪来、5 个元素怎么并行、以及像冰封球这种"X% 武器 DPS"技能怎么把武器伤害折算成技能的元素。拿一把塔拉夏的元素法杖 + 冰封球当靶子,数字全对得上。
① 武器"每秒伤害 DPS" = 五通道平均之和 ÷ 攻击间隔
| 元素通道 | 伤害范围 | 平均 (min+max)/2 |
|---|---|---|
| 物理 | 3388–4744 | 4066 |
| 电 | 3813–5337 | 4575 |
| 火 | 3813–5337 | 4575 |
| 冰 | 3813–5337 | 4575 |
| 毒 | 4320–6048 | 5184 |
| 合计 / 每击 | — | 22975 |
DPS = 22975 ÷ 0.64 ≈ 35898 —— 正是工具提示那个 35897(差个 1,因为 .64 是取整显示,真实攻击间隔 ≈0.6401s)。所以 DPS 就是"一击打出的全部元素伤害平均 × 每秒攻击次数";攻速越快、每通道越高,DPS 越大。
② 元素伤害不是"附加",是 5 条并行通道
你平砍一下,引擎给每个通道各在自己的 [MIN, MAX] 里 roll 一个值(物理 roll 3388–4744、冰 roll 3813–5337……),打包成一个含 5 个数的攻击包;每通道各吃各的加成(这把杖 +15% 毒只放大毒那一份);命中后每通道被目标对应元素的护甲各自减免(冰伤被冰护甲减、火伤被火护甲减,互不干扰);目标掉血 = 5 通道减免后之和。所以一把彩虹杖 = 5 份伤害一起飞出去,对方每种抗性各挡各的。
③ "X% 武器 DPS"技能(冰封球)怎么折算
武器给你"每秒能打多少",技能决定"这一下打成什么元素、再加多少固定量"。DPS 是地基,五元素通道是骨架,"%武器DPS"技能就是把地基折过来的那只手。