[P1][T15] 实现词缀抽取:alvl 计算、group 冲突排除、rare 3~6 词缀 #104
Labels
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: troytt/diablo2-web#104
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?
问题
品质判定(T-14)判出 magic / rare 之后,要从 1162 条可生成词缀里选出具体的前后缀。
金标准数据(确证部分)
候选池筛选
列语义见 T-06。
.d2s格式给出的硬约束(确证)所以 magic 只可能是 {前缀} / {后缀} / {前缀+后缀} 三种形态 —— 这是格式层面的铁约束,不是推断。
词缀属性取值
每条词缀最多 3 个 mod(
modNcode/param/min/max):用物品自己的 seed(不是怪物的)—— 这是
.d2s只存 32 位 id 就能复原词缀数值的原因。实现要求
group互斥:选中一条后,把同 group 的从候选池剔除再选下一条。前后缀各自判重。Name列(直接是显示文本,不查 tbl)。待实测确认
以下三项没有二进制背书,必须实测收敛后再定稿。建议在实现时就把实测脚本一起写了。
1. alvl 公式【高可信推断】
这是社区所有词缀计算器在用的式子(戒指 / 护身符 / 珠宝靠
magic lvl抬高 alvl)。未在 1.13c 二进制定位到。收敛方法:固定基底 + 固定 ilvl 刷大量 magic,统计出现过的最高级词缀反解 alvl;或改表把某词缀的
level调到临界点做二分。2. magic 前后缀数量分布【存疑】
社区共识是「前缀、后缀各掷 50%,都没中则重掷」。未核实。
收敛方法:同 seed 大样本统计三种形态的比例。
3. rare 的词缀条数分布【存疑】
社区说法是「起手若干条 + 逐条概率追加,最终 3~6」,具体分布未证实。
收敛方法:大样本形态统计。
4. group 冲突【高可信推断】
「同 group ���两条词缀不能共存」与表结构自洽,但未在二进制确认。
陷阱
验收标准
npm run typecheck0 errornpx vitest run全绿npx tsx scripts/verify-items.ts新增断言通过溯源
data\global\excel\下的MagicPrefix.txt/MagicSuffix.txt/RarePrefix.txt/RareSuffix.txt/Properties.txt/ItemStatCost.txt(本机/usr/local/google/home/taodao/d2-data,挂载序 d2data → d2exp → Patch_D2,Patch_D2 优先).d2s格式约束来自D2Common!6FD77180反汇编(确证)已完成 alvl 公式、group 互斥、前缀/后缀槽位抽取与稀有名称生成(1.13c D2Game!6FC30580 与 RarePrefix/RareSuffix 配对),合并入 main (commit
390816c)。