本文收什么游戏里显示的文字与引擎实际行为不符的条目。 不收单纯的错别字,也不收「翻得不够漂亮」——只收会让玩家做出错误判断的那些。 判据是:照字面理解去配装/加点,会得到与实际不同的结果。

不收什么:数据键本身的语义坑(例如 SOAKSCALEPCT 写小于 100 才是穿甲)属于 239 个 TYPE 的行为解释,不在本文。

怎么写一条

每条固定五段,缺证据的不收:

要求
游戏里显示原样抄,带截图更好
会被理解成一句话说清误解
引擎实际做什么必须落到函数地址或数据文件的具体行
为什么会这样文案模板/译文/共用串,哪一环出的问题
怎么改改哪个文件、哪一行,以及会连带影响谁

001 |「伤害加成」被显示成「持续伤害」

游戏里显示

埃辛诺斯战刃(伪) 的 proc「伊利丹的愤怒」增益图标,悬停显示:

115毒系伤害,持续5 秒*
115物理伤害,持续5 秒*

会被理解成

「接下来 5 秒里,总共造成 115 点毒系伤害」——一个持续伤害(DoT)

按这个理解,玩家会认为这个 proc 每次触发只值 115 点,从而低估它;也会在战斗统计面板里 去找一行叫「伊利丹的愤怒」的伤害,然后发现找不到而以为统计漏了。

引擎实际做什么

它是伤害加成,不是伤害:接下来 5 秒里,你的每一次命中额外附带 115 点毒系伤害

链路(数据侧):

WARGLAIVE.DAT(武器)
  └ AFFIX: WARGLAIVE_DAMAGE_BUFF
      └ [EFFECT] TYPE: CAST SKILL ON MELEE STRIKE,MIN/MAX 100(100% 触发)
          └ SKILL WARGLAIVE_PROC(DISPLAYNAME: 伊利丹的愤怒)
              └ [EVENT_START][AFFIXES] TARGET:SELF  AFFIX: WARGLAIVE_DAMAGE
                  ├ [EFFECT] TYPE: DAMAGE BONUS  DAMAGE_TYPE: PHYSICAL  DURATION: 5
                  └ [EFFECT] TYPE: DAMAGE BONUS  DAMAGE_TYPE: POISON    DURATION: 5
                     STATMODIFYNAME: CHARACTER STRENGTH,STATMODIFYPERCENT: 10

DAMAGE BONUS效果类型 10。伤害结算按伤害通道逐桶取它:

asm
0052DFAD  push 0 / push 2 / push 0Ah   → getStat(10, 2, 0)

即类型 10 的效果按伤害类型 0–6 分七个桶记账,由伤害计算流程读走、加进那一次挥击里。 它自己不产生任何扣血事件,所以战斗统计面板里不可能、也不应该出现独立的一行。 (详见 239 个 TYPE 的行为解释 §2.1

数值也对得上:STATMODIFYPERCENT: 10 取自 CHARACTER STRENGTH,力量约 1150 时正好 115。

为什么会这样

不是中译的锅,英文原文模板就把两件事写成了同一句。 EFFECTSLIST.DAT 里:

类型名称GOODDESOT
10DAMAGE BONUS[VALUE_OT] [DMGTYPE] Damage over [DURATION]
52DAMAGE[VALUE_OT] [DMGTYPE] Damage over [DURATION]

全表 239 个类型里,只有这两个用这句,而且逐字相同。

效果带有限时长时引擎取 GOODDESOT 而不是 GOODDES。对类型 52(真正的持续伤害)这句是 对的;对类型 10 就成了把「加成」说成「伤害」。注意 GOODDES 那句是有 + 号的 (+[VALUE] [DMGTYPE] Damage),偏偏 OT 那句把 + 丢了——歧义正是从这里来的。

对应的中文串在 TRANSLATION.DAT

<STRING>TRANSLATION:[VALUE_OT][DMGTYPE]伤害,持续|cFFecfeff[DURATION]|u

怎么改

不能只改 TRANSLATION.DAT 那一行——它按原文串匹配,类型 10 和 52 共用同一个原文, 改了会把真正的持续伤害一起说成加成。

正确做法是在 EFFECTSLIST.DAT给类型 10 换一句自己的 GOODDESOT,再为这句新原文 补一条译文。例如:

第 10 块  <TRANSLATE>GOODDESOT:+[VALUE_OT] [DMGTYPE] Damage for [DURATION]
译文      命中附带 +[VALUE_OT] [DMGTYPE]伤害,持续 [DURATION]

改动约束EFFECTSLIST.DAT行号就是效果类型 id,块数必须恰好 239,只能改块内 内容、不能增删块(见 239 个 TYPE 的数值槽对照表)。改 GOODDESOT 的文本本身是安全的。

连带影响:只影响类型 10;类型 52 保持原样。另外 BADDESOT(负向版本)有同样的问题, 要改建议一起改。运行时 MOD 的 MEDIA/EFFECTSLIST.DAT 已经在覆盖这个文件(给 BADDES 加了红色标签),改动落在那里即可。

附带结论

战斗统计面板找不到「伊利丹的愤怒」这一行是正确行为,不是统计漏了:引擎层面它没有 独立的伤害事件。它的贡献已经混在「普通攻击」和当时所用技能的数字里。

想验证它确实生效,去面板的**「伤害类型」页**看:一把物理武器打出可观的毒素占比, 那就是这个 buff 的贡献。

要单独量化「这 5 秒加成一共多贡献了多少伤害」,需要对每次命中再按无 buff 重算一遍并相减 ——等于在外部重实现整条伤害公式(暴击、护甲卷、抗性、联机人数曲线全要复刻),算不准, 明确不做。可做且能做准的是增益覆盖率(触发次数 / 战斗内生效时间占比)。