feat(tooltip/affix): 词条合并、抗性与伤害区间聚合及按 ItemStatCost 优先级排序 #125
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?
背景与现状
当前装备词条渲染流水线存在以下两项与原版 Diablo II 显著不符的缺陷:
fire-min: +2,后缀提供fire-max: +8),当前系统将其渲染为两行分离的文本。而原版会将二者合并为统一的伤害区间行:Adds 2-8 Fire Damage。dmg-min与dmg-max应该合并为Adds X-Y Damage;res-fire,res-cold,res-ltng,res-pois)数值相等时,原版会合并为单行All Resistances +X%,而非冗余输出 4 行;str,dex,vit,enr)数值相等时,原版会合并为+X to All Attributes。暗黑2 1.13c 原版规范 (Ground Truth)
totalMin = sum(min),totalMax = sum(max),统一渲染为Adds {totalMin}-{totalMax} {Element} Damage。All Resistances +N%,超出公共值的单独保留单抗行。+N to All Attributes。ItemStatCost.txt为每个 stat 定义了descpriority(0..255)。渲染时必须按descpriority从大到小降序排列:allskills,classskills,skilltab): priority ~ 160fcr,fhr,ias,frw): priority ~ 140dmg%): priority ~ 130lifesteal,manasteal): priority ~ 125ac%,ac): priority ~ 115str,dex,vit,enr): priority ~ 100hp,mana): priority ~ 90dmg-fire,dmg-cold,dmg-ltng,dmg-pois): priority ~ 80res-all,res-fire,res-cold等): priority ~ 70mag%,gold%): priority ~ 60待实现功能清单 (TODOs)
src/game/item-tooltip.ts中建立词条预处理聚合管道aggregateAndSortProperties:fire-min+fire-max->Adds X-Y Fire Damageltng-min+ltng-max->Adds X-Y Lightning Damagecold-min+cold-max->Adds X-Y Cold Damagedmg-min+dmg-max->Adds X-Y DamageAll Resistances +X%+X to All AttributesItemStatCost.txt的descpriority权重映射,并在格式化输出前统一执行排序。修复完成并验证通过 (Commit
f68b1de)aggregateAndSortProperties词条聚合与优先级排序流水线:fire-min+fire-max->Adds X-Y Fire Damage(冰cold-min/max、电ltng-min/max、毒pois-min/max、物理dmg-min/max同理)。dgrp=2四系相等抗性为All Resistances +X(超出部分单独保留单抗),dgrp=1四维属性为+X to All Attributes。ItemStatCost.txtdescpriority(180..0) 降序排列。tests/item-tooltip-123-125.test.ts与生产构建验证通过。