feat(combat/pve): 补全 PvE 深度机制(破免1/5法则、怪物生命自愈、PMH阻止自愈、体型击退与盲目恐吓) #39

Closed
opened 2026-09-17 02:12:54 +00:00 by troytt · 1 comment
Owner

背景与现状

在 Issue #24(里程碑 M9)中,项目已完整实现了核心战斗数学库 src/game/formulas.ts 与独立测试对决擂台 arena.html:

  • 命中率公式(AR vs DR、等级权重、5%~95% 截断)
  • 忽略目标防御(ITD,普通怪生效/Boss失效)
  • 降低目标防御(-% Def,Boss 强制折半规则)
  • 奔跑中姿态(DR=0,格挡折 1/3 且上限 25%)
  • 技能致命一击 (CS) 与装备双倍打击 (DS) 独立投骰、互斥判定与物理限定
  • 压碎打击 (CB) 阶梯比例削减、物理抗性交互与负物抗 1.0 封顶
  • 撕开伤口 (OW) 200帧(8秒)五段流血公式、Boss减半与禁止自愈
  • 生命与法力偷取(实际物理伤害结算、汲取效率与难度惩罚)
  • 冻结目标(Freezes Target +X)概率/持续时间与 Boss 降级减速 (Chilled)
  • 受击硬直(FHR)伤害占比门槛与击退基础判定

通过检索 The Amazon Basin、d2mods.info 以及原版《暗黑破坏神 II》(1.10+) 官方机制,在 PvE(怪物与环境战斗交互) 领域,还有以下关键深度机制未涵盖,需在本 Issue 中立项跟踪与实现。


需补充的 PvE 深度机制清单

1. 免疫破除与 1/5 衰减法则 (Breaking Immunities - 1/5th Rule)

  • 机制规则:当怪物某系抗性 \ge 100\% 时,审判光环 (Conviction,如符文之语「无限」) 与降低抗性诅咒 (Lower Resist) 的减抗效果强制缩减为 1/5 (20% 效能)。
    • 例如:12 级审判原本提供 -85\% 电抗,打在 110\% 电抗怪物身上只能降低 85 / 5 = 17\%,怪物抗性变为 93\%(成功破免)。
  • 装备直接减抗 (-% Enemy Resistance):
    • 如暗金彩虹刻面 (-5%)、格里风之眼 (-20%)。装备减抗无法破除怪物的绝对免疫。
    • 但一旦怪物被审判/诅咒将抗性降至 100\% 以下,装备减抗就会 100% 全额生效,带来毁灭性爆发。

2. 怪物自然生命回复与阻止怪物自愈 (Prevent Monster Heal, PMH)

  • 怪物自愈公式:未受到 OW 或 PMH 抑制时,怪物每帧自动回复生命:
    \text{Regen/frame} = \frac{\text{MaxHP} \times \text{RegenRate}}{4096}
    (地狱关底 Boss 拥有高自愈率,是攻坚战难点之一)。
  • PMH 词缀机制:
    • 近战或远程命中后,怪物的自然生命恢复被完全置零,持续长达 120,000 帧(80 分钟)。
    • 限制与边界:由雇佣兵(佣兵)或铁魔佩戴时完全不生效,必须由玩家本体攻击触发;对超级暗黑破坏神(Dclone)有效,但对地狱火炬 6 Boss(Pandemonium Ubers)无效。

3. 怪物击退体型判定与 Boss 免疫 (Knockback vs Monster Size & Boss Immunity)

  • 体型概率阶梯:
    • 小型怪物(Small,如沉沦魔、刺鼠):100\% 击退几率;
    • 中型怪物(Medium,如僵尸、黑暗猎手):50\% 击退几率;
    • 大型怪物(Large,如粉碎者、牛头怪):25\% 击退几率。
  • Boss 豁免:五大关底 Boss(安达利尔、督瑞尔、墨菲斯托、迪亚波罗、巴尔)及超大型攻城巨兽完全免疫击退。

4. 减速目标机制 (Slows Target by X%)

  • 机制规则:如水魔陷阱(Kelpie Snare 减速 75%)、蛛网腰带(Arachnid Mesh 减速 10%)、黏土石魔。
  • 效果���直接缩减怪物的移动速度与攻击动作帧率(减慢动画播放)。
  • 上限规则:对普通怪最高叠加至 90\%;对暗金 Boss 与精英怪最高封顶 50\%。可与冰冷减速、衰老诅咒协同叠加。

5. 状态异常:使目标盲目 (HBT) 与 击中使怪物逃跑 (HCMTF)

  • 使目标盲目 (Hit Blinds Target +X):命中后对普通怪施加《微暗灵视》(Dim Vision) 诅咒,怪物的视野与索敌半径被压缩至 1 码,停止远程追击与施法。
  • 击中使怪物逃跑 (Hit Causes Monster to Flee):按概率使普通怪物陷入恐惧状态逃跑 5 秒(125 帧)。金怪与关底 Boss 免疫。

6. 离体增伤 (Off-Weapon ED) 与 绝对基础增伤 (Flat +Damage)

  • 伤害分层公式:
    \text{Total Phys Damage} = (\text{Weapon Base} \times (1 + \text{On-Weapon ED}) + \text{Flat Damage}) \times (1 + \text{Off-Weapon ED} + \frac{\text{Str/Dex} \times \text{StatBonus}}{100})
  • 悔恨 (Grief) 纯伤害机制:+340\sim400 绝对伤害直接加在内层基础武器伤害上,再被防具(刚毅 300% ED)、力量和光环技能乘算放大,是物理系输出计算的核心支柱。

7. 毒素伤害的时间片与堆叠法则 (Poison Bit Rates & Averaging)

  • 机制规则:毒素伤害按 1/256 点/帧的速率(Bit Rate)与总帧数(Duration)结算。
  • 多装备堆叠:\text{Total BitRate} = \sum \text{BitRate},\text{Duration} = \frac{\sum \text{Duration}}{N}(速率求和,时间取均值)。
  • 刷新机制:后次攻击不简单累加总伤,仅当新一击的每秒流血速率(Bit Rate)大于当前目标存量时才覆盖重置。

交付目标与实施建议

  1. 在 src/game/formulas.ts 中扩展:
    • calculateMonsterRegeneration(maxHp, regenRate, hasOW, hasPMH)
    • calculateKnockbackSuccess(attackerKnockback, defenderSize, isBoss)
    • calculateSlowTarget(currentSlowPercent, isBoss)
    • calculateResistanceReduction(enemyRes, convictionRes, lowerRes, itemMinusRes)(含 1/5 破免判定)
  2. 在 arena.html 中为怪物增加:体型选择(Small/Medium/Large)、自愈速率、PMH 状态指示。
  3. 单元测试覆盖率与公式推导日志对齐。
## 背景与现状 在 [Issue #24](https://git.projectdiablo2.cn/troytt/diablo2-web/issues/24)(里程碑 M9)中,项目已完整实现了核心战斗数学库 `src/game/formulas.ts` 与独立测试对决擂台 `arena.html`: - 命中率公式(AR vs DR、等级权重、5%~95% 截断) - 忽略目标防御(ITD,普通怪生效/Boss失效) - 降低目标防御(-% Def,Boss 强制折半规则) - 奔跑中姿态(DR=0,格挡折 1/3 且上限 25%) - 技能致命一击 (CS) 与装备双倍打击 (DS) 独立投骰、互斥判定与物理限定 - 压碎打击 (CB) 阶梯比例削减、物理抗性交互与负物抗 1.0 封顶 - 撕开伤口 (OW) 200帧(8秒)五段流血公式、Boss减半与禁止自愈 - 生命与法力偷取(实际物理伤害结算、汲取效率与难度惩罚) - 冻结目标(Freezes Target +X)概率/持续时间与 Boss 降级减速 (Chilled) - 受击硬直(FHR)伤害占比门槛与击退基础判定 通过检索 **The Amazon Basin**、**d2mods.info** 以及原版《暗黑破坏神 II》(1.10+) 官方机制,在 **PvE(怪物与环境战斗交互)** 领域,还有以下关键深度机制未涵盖,需在本 Issue 中立项跟踪与实现。 --- ## 需补充的 PvE 深度机制清单 ### 1. 免疫破除与 1/5 衰减法则 (Breaking Immunities - 1/5th Rule) * **机制规则**:当怪物某系抗性 $\ge 100\%$ 时,审判光环 (Conviction,如符文之语「无限」) 与降低抗性诅咒 (Lower Resist) 的减抗效果**强制缩减为 1/5 (20% 效能)**。 * 例如:12 级审判原本提供 $-85\%$ 电抗,打在 $110\%$ 电抗怪物身上只能降低 $85 / 5 = 17\%$,怪物抗性变为 $93\%$(成功破免)。 * **装备直接减抗 (-% Enemy Resistance)**: * 如暗金彩虹刻面 (-5%)、格里风之眼 (-20%)。**装备减抗无法破除怪物的绝对免疫**。 * 但一旦怪物被审判/诅咒将抗性降至 $100\%$ 以下,装备减抗就会 **100% 全额生效**,带来毁灭性爆发。 ### 2. 怪物自然生命回复与阻止怪物自愈 (Prevent Monster Heal, PMH) * **怪物自愈公式**:未受到 OW 或 PMH 抑制时,怪物每帧自动回复生命: $$\text{Regen/frame} = \frac{\text{MaxHP} \times \text{RegenRate}}{4096}$$ (地狱关底 Boss 拥有高自愈率,是攻坚战难点之一)。 * **PMH 词缀机制**: * 近战或远程命中后,怪物的自然生命恢复被完全置零,持续长达 **120,000 帧(80 分钟)**。 * **限制与边界**:由雇佣兵(佣兵)或铁魔佩戴时**完全不生效**,必须由玩家本体攻击触发;对超级暗黑破坏神(Dclone)有效,但对地狱火炬 6 Boss(Pandemonium Ubers)无效。 ### 3. 怪物击退体型判定与 Boss 免疫 (Knockback vs Monster Size & Boss Immunity) * **体型概率阶梯**: * 小型怪物(Small,如沉沦魔、刺鼠):$100\%$ 击退几率; * 中型怪物(Medium,如僵尸、黑暗猎手):$50\%$ 击退几率; * 大型怪物(Large,如粉碎者、牛头怪):$25\%$ 击退几率。 * **Boss 豁免**:五大关底 Boss(安达利尔、督瑞尔、墨菲斯托、迪亚波罗、巴尔)及超大型攻城巨兽**完全免疫击退**。 ### 4. 减速目标机制 (Slows Target by X%) * **机制规则**:如水魔陷阱(Kelpie Snare 减速 75%)、蛛网腰带(Arachnid Mesh 减速 10%)、黏土石魔。 * **效果**���直接缩减怪物的移动速度与攻击动作帧率(减慢动画播放)。 * **上限规则**:对普通怪最高叠加至 $90\%$;对暗金 Boss 与精英怪最高封顶 **$50\%$**。可与冰冷减速、衰老诅咒协同叠加。 ### 5. 状态异常:使目标盲目 (HBT) 与 击中使怪物逃跑 (HCMTF) * **使目标盲目 (Hit Blinds Target +X)**:命中后对普通怪施加《微暗灵视》(Dim Vision) 诅咒,怪物的视野与索敌半径被压缩至 1 码,停止远程追击与施法。 * **击中使怪物逃跑 (Hit Causes Monster to Flee)**:按概率使普通怪物陷入恐惧状态逃跑 5 秒(125 帧)。金怪与关底 Boss 免疫。 ### 6. 离体增伤 (Off-Weapon ED) 与 绝对基础增伤 (Flat +Damage) * **伤害分层公式**: $$\text{Total Phys Damage} = (\text{Weapon Base} \times (1 + \text{On-Weapon ED}) + \text{Flat Damage}) \times (1 + \text{Off-Weapon ED} + \frac{\text{Str/Dex} \times \text{StatBonus}}{100})$$ * **悔恨 (Grief) 纯伤害机制**:$+340\sim400$ 绝对伤害直接加在内层基础武器伤害上,再被防具(刚毅 300% ED)、力量和光环技能乘算放大,是物理系输出计算的核心支柱。 ### 7. 毒素伤害的时间片与堆叠法则 (Poison Bit Rates & Averaging) * **机制规则**:毒素伤害按 $1/256$ 点/帧的速率(Bit Rate)与总帧数(Duration)结算。 * **多装备堆叠**:$\text{Total BitRate} = \sum \text{BitRate}$,$\text{Duration} = \frac{\sum \text{Duration}}{N}$(速率求和,时间取均值)。 * **刷新机制**:后次攻击不简单累加总伤,仅当新一击的每秒流血速率(Bit Rate)大于当前目标存量时才覆盖重置。 --- ## 交付目标与实施建议 1. 在 `src/game/formulas.ts` 中扩展: - `calculateMonsterRegeneration(maxHp, regenRate, hasOW, hasPMH)` - `calculateKnockbackSuccess(attackerKnockback, defenderSize, isBoss)` - `calculateSlowTarget(currentSlowPercent, isBoss)` - `calculateResistanceReduction(enemyRes, convictionRes, lowerRes, itemMinusRes)`(含 1/5 破免判定) 2. 在 `arena.html` 中为怪物增加:体型选择(Small/Medium/Large)、自愈速率、PMH 状态指示。 3. 单元测试覆盖率与公式推导日志对齐。
Author
Owner

✅ PvE 深度战斗机制 (Issue #39) 已在提交 93a854d 中完整实装并通过全量自动化测试!

1. 核心算法与数学公式实装 (src/game/formulas.ts)

  • 破免 1/5 衰减法则 (calculateResistanceReduction):
    • 严格区分主动破免技能(审判光环 Conviction、降低抗性诅咒 Lower Resist)与装备直接减抗(如格利风 -20% 电抗、彩虹刻面 -5% 等)。
    • 对免疫怪物(Res >= 100%),审判与降低抗性按 1/5 效率(Math.floor(TotalSkillPenalty / 5))扣减;若扣减后抗性仍 >= 100%,装备直减抗 完全不生效。
    • 一旦破免成功(抗性降至 99% 或以下),装备直减抗以 100% 满额 继续扣减(最低至 -100%)。
    • 审判光环仅对火/电/冰生效,对毒素无效;降低抗性诅咒对火/电/冰/毒四系生效。
  • 怪物自然回血与阻止自愈 (calculateMonsterRegeneration & evaluatePreventMonsterHeal):
    • 还原暗黑2原版帧级回血公式:RegenPerFrame = (MaxHP * RegenRate) / 4096(25 fps)。
    • 只要目标处于 撕开伤口 (OW) 流血状态或被挂上 阻止怪物自愈 (PMH),回血速率强制归零。
    • PMH 规则校验:仅限 玩家自身武器攻击 触发(雇佣兵/召唤物无效),持续 120,000 帧(80 分钟),且超级地狱火炬 Boss(Pandemonium Ubers)免疫 PMH。
  • 怪物体型击退阶梯与 Boss 免疫 (calculateKnockbackSuccess):
    • 关底首领(Act Bosses)与攻城兽等特定体型 100% 免疫击退。
    • 近战击退几率:小型怪(Small)100%、中型怪(Medium)50%、大型怪(Large)25%;远程攻击对应减半(50% / 25% / 12.5%)。
  • 减速目标 (calculateSlowTarget):
    • 普通怪物减速上限为 90%,首领/暗金精英怪减速上限严格封顶为 50%。
  • 状态异常控制 (calculateHitBlindsTarget & calculateHitCausesFlee):
    • 致盲目标(HBT / 微暗灵视):基于等级差与词缀加成的命中率公式 50 + (AttackerLvl + Bonus*4 - DefenderLvl)*2(远程 1/3),持续 Bonus*4 + 4 秒,Boss 免疫。
    • 恐吓逃跑(HCMTF):触发后怪物陷入恐惧转身逃窜固定 125 帧(5 秒),期间无法发起攻击,Boss 免疫。
  • 物理伤害分解 (calculatePhysicalWeaponDamage):
    • 还原 悔恨(Grief)纯伤 (+Damage) 与 离体增伤 (Off-Weapon ED%,如刚毅、狂热光环、力量/敏捷加成) 的分层放大:TotalPhys = floor((WeaponBase * (1 + OnWeaponED%) + FlatDamage) * (1 + OffWeaponED% + StatBonus%))。
  • 毒素位速率与多源叠加 (calculatePoisonStack):
    • 实现多件装备毒素伤害的 Bit Rate 累加与持续帧数算术平均(Duration Averaging)。

2. 对决测试擂台 (arena.html & src/arena.ts)

  • 新增 PvE 专项配置面板(审判/降低抗性、四系直减抗、PMH 开关、雇佣兵出手模拟、减速/致盲/逃跑、悔恨纯伤与离体 ED、怪物体型与回血速率、Uber Boss 豁免勾选)。
  • 实装头顶实时状态徽章:[🚫PMH]、[🐌-X%]、[👁️BLIND]、[😱FLEE]、[❄️FROZEN]、[🩸OW] 及破免浮动文字提示与详细数学推导日志。

3. 测试验证 (tests/formulas.test.ts)

  • 新增 24 项 PvE 深度机制专项单元测试,tests/formulas.test.ts 共 75/75 全部通过,全仓 625 项测试 100% 绿灯通过。
✅ **PvE 深度战斗机制 (Issue #39) 已在提交 `93a854d` 中完整实装并通过全量自动化测试!** ### 1. 核心算法与数学公式实装 (`src/game/formulas.ts`) - **破免 1/5 衰减法则 (`calculateResistanceReduction`)**: - 严格区分主动破免技能(审判光环 Conviction、降低抗性诅咒 Lower Resist)与装备直接减抗(如格利风 `-20%` 电抗、彩虹刻面 `-5%` 等)。 - 对免疫怪物(`Res >= 100%`),审判与降低抗性按 **1/5 效率**(`Math.floor(TotalSkillPenalty / 5)`)扣减;若扣减后抗性仍 `>= 100%`,装备直减抗 **完全不生效**。 - 一旦破免成功(抗性降至 `99%` 或以下),装备直减抗以 **100% 满额** 继续扣减(最低至 `-100%`)。 - 审判光环仅对火/电/冰生效,对毒素无效;降低抗性诅咒对火/电/冰/毒四系生效。 - **怪物自然回血与阻止自愈 (`calculateMonsterRegeneration` & `evaluatePreventMonsterHeal`)**: - 还原暗黑2原版帧级回血公式:`RegenPerFrame = (MaxHP * RegenRate) / 4096`(25 fps)。 - 只要目标处于 **撕开伤口 (OW)** 流血状态或被挂上 **阻止怪物自愈 (PMH)**,回血速率强制归零。 - PMH 规则校验:仅限 **玩家自身武器攻击** 触发(雇佣兵/召唤物无效),持续 **120,000 帧(80 分钟)**,且超级地狱火炬 Boss(Pandemonium Ubers)免疫 PMH。 - **怪物体型击退阶梯与 Boss 免疫 (`calculateKnockbackSuccess`)**: - 关底首领(Act Bosses)与攻城兽等特定体型 **100% 免疫击退**。 - 近战击退几率:小型怪(Small)**100%**、中型怪(Medium)**50%**、大型怪(Large)**25%**;远程攻击对应减半(50% / 25% / 12.5%)。 - **减速目标 (`calculateSlowTarget`)**: - 普通怪物减速上限为 **90%**,首领/暗金精英怪减速上限严格封顶为 **50%**。 - **状态异常控制 (`calculateHitBlindsTarget` & `calculateHitCausesFlee`)**: - 致盲目标(HBT / 微暗灵视):基于等级差与词缀加成的命中率公式 `50 + (AttackerLvl + Bonus*4 - DefenderLvl)*2`(远程 1/3),持续 `Bonus*4 + 4` 秒,Boss 免疫。 - 恐吓逃跑(HCMTF):触发后怪物陷入恐惧转身逃窜固定 **125 帧(5 秒)**,期间无法发起攻击,Boss 免疫。 - **物理伤害分解 (`calculatePhysicalWeaponDamage`)**: - 还原 **悔恨(Grief)纯伤 (`+Damage`)** 与 **离体增伤 (`Off-Weapon ED%`,如刚毅、狂热光环、力量/敏捷加成)** 的分层放大:`TotalPhys = floor((WeaponBase * (1 + OnWeaponED%) + FlatDamage) * (1 + OffWeaponED% + StatBonus%))`。 - **毒素位速率与多源叠加 (`calculatePoisonStack`)**: - 实现多件装备毒素伤害的 Bit Rate 累加与持续帧数算术平均(Duration Averaging)。 ### 2. 对决测试擂台 (`arena.html` & `src/arena.ts`) - 新增 PvE 专项配置面板(审判/降低抗性、四系直减抗、PMH 开关、雇佣兵出手模拟、减速/致盲/逃跑、悔恨纯伤与离体 ED、怪物体型与回血速率、Uber Boss 豁免勾选)。 - 实装头顶实时状态徽章:`[🚫PMH]`、`[🐌-X%]`、`[👁️BLIND]`、`[😱FLEE]`、`[❄️FROZEN]`、`[🩸OW]` 及破免浮动文字提示与详细数学推导日志。 ### 3. 测试验证 (`tests/formulas.test.ts`) - 新增 **24 项** PvE 深度机制专项单元测试,`tests/formulas.test.ts` 共 **75/75 全部通过**,全仓 **625 项测试 100% 绿灯通过**。
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#39
No description provided.