[Parity][units][S2] getMonsterKindByHcIdx 在 hcIdx >= 410 时因 Expansion 分隔行导致整体错位一行(共 314 处不一致) #713
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题描述
src/common/units/monsters-data.ts中的getMonsterKindByHcIdx(hcIdx, difficulty)(L2152)在构建cachedMonsterKindsByHcIdx数组时,直接按readMonsterKinds(parseTable(RAW_MONSTATS))的顺序遍历推入数组并按arr[hcIdx]索引。然而
RAW_MONSTATS(来自 1.13cMonStats.txt)在hcIdx = 410之前包含一行Expansion分隔行(以及中间存在重复/非标准行,未按MONSTER_HCIDX_TO_ID[hcIdx]对齐),导致从hcIdx >= 410起getMonsterKindByHcIdx(hcIdx)返回的MonsterKind整体错位(与原版 MPQMonStats.txt的hcIdx列及MONSTER_HCIDX_TO_ID相比共有 314 处不一致)。典型错位示例
hcIdx = 544(原版为baalcrab巴尔):getMonsterKindByHcIdx(544)错误返回baalthronehcIdx = 704(原版为ubermephisto超级墨菲斯托):getMonsterKindByHcIdx(704)错误返回mummy6受影响调用处
src/client/ui-model/hud-model.tsL1295、L2017(导致第五幕及资料片怪物的 HUD 悬停血条名称、不死/恶魔属性标记显示错误)src/client/input/command-mapper.tsL788(悬停目标判定monKind错位)修复建议
getMonsterKindByHcIdx(hcIdx, difficulty)应通过MONSTER_HCIDX_TO_ID[hcIdx]查找对应的id,再从对应难度的Map<string, MonsterKind>中按id精确读取(与getMonsterKindByClassId对齐),或在解析RAW_MONSTATS时剔除Expansion分隔行并严格按MONSTER_HCIDX_TO_ID映射表构建索引数组。0..733的hcIdx,断言getMonsterKindByHcIdx(hcIdx, diff)?.id === MONSTER_HCIDX_TO_ID[hcIdx],并与 MPQMonStats.txt逐行比对确保 0 差异。