▶ 打开武器数值设计台 —— 纯客户端,不上传任何东西。

它到底在算什么

装备的 UNIT 级 descriptor 是百分比配方,不是成品。物品创建那一刻,DAT 里的百分比乘上全局等级曲线烘焙成三个东西 —— 基础物理伤害 +0x3A4、下限比值 +0x3B8、DAT 基础元素伤害桶 +0x3EC —— 之后面板、DPS 数字、实战伤害各读各的。 所以「改一个键会怎样」不能只看一个数:

  • 面板浮窗:物理行现算 trunc(MaxDmg × 比值),元素行却用 ceil —— 面板写 20 而实战能打出 19,这不是显示 bug,是两条路的取整方向不同。
  • DPS 数字:computeDPS 只被浮窗和编辑器调用,战斗一行都不读它。它把下限比值乘在了整个和上,平坦加成越多面板越低估。
  • 实战:每个伤害类型是独立的包,各自掷点、各自过护甲或对应抗性。暴击不掷点,全部取上限

设计台把这三条分开列出来,再加一栏「面板偏差」告诉你现在这套写法下面板数字能不能当真。

附加伤害按来源填,不是一排数字

「+N 某类型 伤害」在引擎里有三个来源,行为并不一样,所以输入也按来源分开:

  • 内联 [EFFECT][AFFIXES] 词缀bakeDamageEffectsIntoTable 把它们搬进桶A(+0x3D8),effect 本体随后被删除 —— 这就是为什么扫 effect 列表永远找不到附加伤害。入桶取的是 (int)*(float*)(eff+0xD8),而 +0xD8 = ceil(+0xD4),所以 6.5 会烤成 7
  • 附魔师加的(effect 带 flags & 0x400) → 桶B(+0x400)。祛魔时 clearEnchantedDamage 把桶B 整桶清零、桶A 一点不动 —— 设计台直接给出祛魔前后的面板 DPS 对照。
  • 插槽宝石 → 宝石不是 WEAPON,它的 effect 不会被烤;每次求和都现扫每个插槽宝石的 0 号 effect 链表, 读原始 +0xD4(float,不 ceil),而且每加一条截断一次 —— 两条 6.5 得 12 而不是 13。每颗宝石各不相同,所以逐插槽填。

校准到什么程度

两件真实装备逐位对齐:原版 LEGENDARY_RIFLE01(59 级,MINDAMAGE:50 MAXDAMAGE:80 DAMAGE_PHYSICAL:35 DAMAGE_ICE:20 DAMAGE_POISON:55) 与本 MOD 的「界墟·无面王颅」(100 级,50 / 500,物理 10% + 四元素各 5%)。 后者的读数是 base=3914、物理 39-391、四元素各 20-195、面板 DPS 448、真实均值 DPS 446.5、一刀 115~1171 —— 与静态反编译的手算结果完全一致, 包括 pctArg = trunc(839.9999356) = 839 那一点 float32 损失。

它不算什么

只算武器自身。角色的 +%伤害、力量敏捷加成、技能的武器伤害百分比、怪物抗性与护甲减免都不在里面 —— 那些是 CCharacter 侧的乘数,与 UNIT BLOCK 无关。技能怎么按武器伤害出伤见 怎么正确设计一个 TL2 技能里的 WEAPONDAMAGEPCT / SOAKSCALEPCT 一节。