[Parity][hud][S2][R] 角色面板的防御 / 抗性公式是简化版 #649

Closed
opened 2026-10-02 11:42:51 +00:00 by troytt · 0 comments
Owner

1.13c 客户端保真度审计立项(基准快照:7bd1090 / main @ 77a20c7)

证据标记说明:V-data = 1.13c MPQ 数据表 (.txt / animdata.d2 / .tbl / pal.pl2);V-src = D2MOO 逆向源码;V-bin = 1.13c DLL 反汇编;K = 1.13c 公认行为。

来源审计项:hud#16 — [S2][R] 16. 角色面板的防御 / 抗性公式是简化版

  • 位置:src/client/ui-model/derived-stats.ts:61-84
  • 代码:defense: Math.floor(dex / 4) + stats.get(STAT_ARMORCLASS);Math.min(BASE_MAX_RESIST + stats.get(maxStatId), stats.get(statId) + penalty)
  • 原版:UNITS_GetDefense(D2Common #10431)= dex/4 + armorclass,再按 (item_armor_percent + skill_armor_percent,加上 Holy Shield 的 calc) 百分比加成,最后再按 armor_override_percent 调整(V-src D2Common/src/Units/Units.cpp:2337-2392)。用到这些属性的技能:Frozen / Shiver / Chilling Armor、Shout、Battle Cry、Iron Skin、Defiance、Conviction、Concentrate、Werebear、Cloak of Shadows 用 skill_armor_percent,Berserk 用 armor_override_percent(V-data skills.txt aurastat* / passivestat*)。玩家最大抗性 = min(75 + max*resist, 95)(V-src D2Game/src/UNIT/SUnitDmg.cpp:996,这是服务器伤害端的规则;客户端显示规则未核实)。
  • 影响:上述技能生效时防御显示错误;最大抗性加成超过 +20 时,显示值可能超过 95。
  • 建议:防御直接移植 UNITS_GetDefense;抗性加上 95 的上限。(攻击等级的基础公式与 UNITS_GetAttackRate 一致,见第 4 节。)
  • 已有 issue:—
> **1.13c 客户端保真度审计立项**(基准快照:`7bd1090` / `main @ 77a20c7`) > 证据标记说明:`V-data` = 1.13c MPQ 数据表 (`.txt` / `animdata.d2` / `.tbl` / `pal.pl2`);`V-src` = D2MOO 逆向源码;`V-bin` = 1.13c DLL 反汇编;`K` = 1.13c 公认行为。 ### 来源审计项:`hud#16` — [S2][R] 16. 角色面板的防御 / 抗性公式是简化版 - 位置:`src/client/ui-model/derived-stats.ts:61-84` - 代码:`defense: Math.floor(dex / 4) + stats.get(STAT_ARMORCLASS)`;`Math.min(BASE_MAX_RESIST + stats.get(maxStatId), stats.get(statId) + penalty)` - 原版:`UNITS_GetDefense`(D2Common #10431)= dex/4 + armorclass,再按 (item_armor_percent + skill_armor_percent,加上 Holy Shield 的 calc) 百分比加成,最后再按 armor_override_percent 调整(V-src `D2Common/src/Units/Units.cpp:2337-2392`)。用到这些属性的技能:Frozen / Shiver / Chilling Armor、Shout、Battle Cry、Iron Skin、Defiance、Conviction、Concentrate、Werebear、Cloak of Shadows 用 `skill_armor_percent`,Berserk 用 `armor_override_percent`(V-data skills.txt `aurastat*` / `passivestat*`)。玩家最大抗性 = min(75 + max*resist, 95)(V-src `D2Game/src/UNIT/SUnitDmg.cpp:996`,这是服务器伤害端的规则;客户端显示规则未核实)。 - 影响:上述技能生效时防御显示错误;最大抗性加成超过 +20 时,显示值可能超过 95。 - 建议:防御直接移植 `UNITS_GetDefense`;抗性加上 95 的上限。(攻击等级的基础公式与 `UNITS_GetAttackRate` 一致,见第 4 节。) - 已有 issue:—
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#649
No description provided.