BadWolf-LootFilter.txt (S14V1.99) 规则层深度审计报告:格式、%CONTINUE% 冲突、覆盖遮蔽与注释一致性(共 20 项,附 PDF 报告) #4

Open
opened 2026-10-31 03:21:54 +00:00 by troytt · 0 comments

📎 完整排版 PDF 审计报告附件


📌 审计基准与核心结论

  • 审计基准:BadWolf-LootFilter.txt (S14V1.99, commit fb2cf35)(共 4,474 行、554,217 字节;含 438 条 Alias、72 条 Formula、2,554 条 ItemDisplay 规则)及 build/build.ps1(901 行)。
  • 审计范围:仅聚焦过滤器自身规则质量——格式与悬停显示、规则冲突与 %CONTINUE% 断链、覆盖不对与规则遮蔽/模块失步、条件与注释不符 四大维度(全篇基础语法、括号配对、公式算术与占位符拼写已 100% 校验通过)。
  • 核心结论:
    1. S14V1.70 (Issue #3) 大部分问题已完成修复:L3230 元素小符副词缀阈值、L3287–3376 极品亮金 {%NAME%}、build.ps1 平铺模块探测 (L86–89)、Get-Lines 跨平台换行切分 (L159)、Alias 括号与粘连自检 (L349–362)、连字符占位符校验 (L199–201) 及 build/item_codes.txt 均已就位。
    2. 本轮检出 20 项过滤器自身问题(3 项 P0 阻断 + 8 项 P1 严重 + 9 项 P2 中低危):其中最关键的阻断问题是 V1.71–V1.99 重构估值模块时删掉了第二章 121 条辅助评分规则的 %CONTINUE%(截断后续提示与第三章地面掉落提醒)、SHOW_GOODRARE 极品亮金置于 亮金装备词缀透视 之前且无 %CONTINUE%(导致极品亮金反而 100% 看不到词缀透视标签),以及 build/00..39-*.txt 模块仍停留在 S14V1.70(滞后主文件 29 个小版本)。

零、四大维度问题全景矩阵

图 1:BadWolf-LootFilter (S14V1.99) 四大维度 20 项问题全景分布(3 项 P0 + 8 项 P1 + 9 项 P2)

编号 级别 维度 行号定位 (S14V1.99) 问题摘要
CNF-01 P0 规则冲突 L2049–2051, L2763–2939 第二章 121 条辅助评分规则漏写 %CONTINUE%(其中 71 条无 !GROUND),截断地面掉落提醒与后续洗珠/手工提示
CNF-02 P0 规则冲突 L3287–3376 vs L3378–3997 SHOW_GOODRARE 极品亮金排在 亮金装备词缀透视 之前且无 %CONTINUE%,极品亮金 100% 丢失全部词缀透视标签
COV-05 P0 版本同步 build/00..39-*.txt, build.ps1 build/ 模块仍停在 S14V1.70(4,406 行 vs 主文件 4,474 行),且 $MergedPath 仍输出到 build/ 子目录
FMT-01 P1 格式显示 L2951–2980 5.9 手工等级 CA_ALL / CA_GOOD 漏排 !CIRC,头环悬停输出残缺方括号 [ - 最高档词缀均有几率洗出]
FMT-02 P1 格式显示 L1614–1633, L1725–1751 可能孔数提示未排除不可打孔投掷武器 (MAXSOCKETS=0),劣质装缺左括号 [,已腐化白板误拼 /损坏]
CNF-03 P1 规则冲突 L157–160, L4000–4003, L4400–4444 HIDE_JEW1~4 与 FILTLVL>4/5 强绑定且缺 GROUND:均衡档开开关不屏蔽,严格档默认不滤低级珠、开开关又清空背包名
CNF-04 P1 规则冲突 L4458–4473 末尾白板兜底 L4458 漏判 EQUIPPED / MERC 且 L4460/L4473 缺 GROUND,CLVL>30 出城清空身上/佣兵白板及镶嵌装名
CNF-05 P1 规则冲突 L4372–4374 vs L4473 开荒 0 孔弓拉苏克打孔提示误加 %CONTINUE%,未命中高星底材时直接落入 L4473 在地面被空名隐藏
COV-01 P1 规则遮蔽 L2774/L971, L757–758, L3165 防御项链 L2774 被 L2770/2772 100% 遮蔽;BELT_5_4/5_5 同组最大抗词缀互斥永假;L3165 超大符误用小符后缀
COV-02 P1 覆盖不对 L2811–2814 5.5 盾牌评测排除 !NECHEAD 后漏写死灵盾规则;DIN 误覆盖圣骑专属双手剑且漏判圣骑盾 +1/+2技能 PREFIX~566-567
CMT-01 P1 注释不符 L3152–3236 57 条 //已鉴定的有用...神符 规则全部漏写 ID(未鉴定地面剧透且绕过 HIDE_CHAM1~6),终结规则截断 Veng 与洗板提示
CMT-02 P1 注释不符 L227–228 vs L4252–4253 THROW_INFUSION_1/2 开关标明“显示无孔无形鬼魂尖枪/翼鱼叉”,实际规则漏写 ETH,把有形普通底材全部放行
FMT-03 P2 格式显示 L1001–1009, L1043, L2800–2853 手套/腰带/鞋子公式封顶 MIN(8,...) 但展示分母写 /7(出现 8/7);蓝项链 MA_A 无封顶出现 8/6
FMT-04 P2 格式显示 L1871 vs L2037, L1807–1817 L2037 PVP 地图漏 %NAME% 覆盖 L1871 开启提示;3.4 升级提示仅 L1817 排除 leg 致维特之脚缺闭合 )
FMT-05 P2 格式显示 L2392–2393, L2401–2711, L3074, L3139 4 条暗金/套装评测首行多出孤立 | ;qf2 与赌博 aqv/cqv 误用 %CL% 丢失橙/红色;L3139 尾部残留多余 %CL%
COV-03 P2 覆盖不对 L2956–2958 5.9 权杖 SCEPTER 在 CRAFTALVL=75 掉入三不管盲区;CA_GOOD 对 7 类武器先排除又原样 OR 回来
COV-04 P2 覆盖不对 L4210–4275, L1865 vs L4393 第 9 节 6 类注入底材(含默认开启的 CHEST_INFUSION)缺 ▋/■ 提示;KNOWN_CODES 与 L888 漏收 irrn
CMT-03 P2 注释不符 L157–158 vs L4002–4003, L4400–4401 HIDE_JEW1/2 注释说明 ILVL<67 / ILVL>66(66+ 可出 40ED),实际规则写成 ILVL<68 / ILVL>67
CMT-04 P2 注释不符 L2804–2805 vs L1006 5.5 腰带注释与触发门槛均含 IAS 和 冰冻减半 (STAT118),但 Formula[RBE_A] 完全未计入这两项分数
CMT-05 P2 注释不符 L4281–4284, L4311–4324, L433–436 开荒 FCR 漏掉 CIRC/amu/rin、MF 仅限手套、冰冻减半法球误标 生命/法力、死灵 L4323 被 L4324 冗余包含、SPEARBASE 注释残留 15ED

一、格式与悬停显示错误(Formatting, Brackets & Tooltip Bugs)

1.1 [FMT-01 / P1] 5.9 手工词缀等级提示对头环 (CIRC) 输出残缺方括号 [ - ...]

  • 定位:BadWolf-LootFilter.txt L2951–2980
  • 问题现象:当背包或地面上出现 CRAFTALVL >= 71 的魔法/亮金头环(ci0..ci3)时,鼠标悬停会多出一行无标题、无数值的残缺方括号文本:
    • CRAFTALVL >= 75:[ - 最高档词缀均有几率洗出]
    • CRAFTALVL 71–74:[ - 可以洗出大多数词缀]
  • 原因分析:在过滤器分类中,头环 CIRC 属于 HELM 的子集。L2951(换行)、L2966(输出 手工词缀等级: )和 L2974(输出 %CRAFTALVL%)都显式写了 !CIRC 排除头环,但重构抽出的 L2956 Alias[CA_ALL] 中 (HELM CRAFTALVL>74) 与 L2957 Alias[CA_GOOD] 中 (HELM CRAFTALVL~71-74) 漏写了 !CIRC,导致头环仍命中 L2967–2968(左括号 [)与 L2979–2980(右半截说明 - ...])。
  • 修复建议:将 L2956 的 (HELM CRAFTALVL>74) 改为 (HELM !CIRC CRAFTALVL>74),L2957 的 (HELM CRAFTALVL~71-74) 改为 (HELM !CIRC CRAFTALVL~71-74)。

1.2 [FMT-02 / P1] 可能孔数提示对投掷武器 (THROWING)、劣质装备 (INF) 与已腐化白板 (STAT360>0) 拼出畸形文本

  • 定位:L1614–1633(白板可能孔数)、L1725–1751(非底材装备可能孔数)
  • 三处拼接缺陷:
    1. 不可打孔投掷武器(THROWING 标枪/飞斧/飞刀/投掷药剂,MAXSOCKETS=0)误出打孔提示:THROWING 属于 WEAPON(单手投掷同时属于 1H)且 SOCK=0,但无法打孔(MAXSOCKETS=0)。由于 L1614–1633 与 L1726–1751 未加 MAXSOCKETS>0(或 !THROWING),泰坦的复仇、雷击、各类标枪和投掷药水悬停都会显示 [8, 11, ●:1-0, 任务:0, 腐化:1-0/损坏] 或 [任务:1, 谜盒:1-0, 腐化:1-0]。
    2. 劣质白板 (INF) 缺失左括号 [ 且首字符多出逗号:L1614、L1621、L1633 均未写 !INF,唯独输出左括号 [ 的 L1616–1619 写了 !INF,导致劣质白板悬停拼出 可能的孔数:, 任务:X, 腐化:1-X/损坏]。
    3. 已腐化无孔白板 (STAT360>0) 误拼 /损坏:L1624–1631 仅在 STAT360=0(未腐化)时输出 , 腐化:1-X,但收尾 L1633 未判断 STAT360=0 即无条件追加 /%RED%损坏%TAN%],使已腐化无孔白板显示 任务:4/损坏]。
  • 修复建议:
    • 在 L1614–1633 与 L1725–1751 统一增加 MAXSOCKETS>0(或在 WEAPON 处加 !THROWING);
    • 在 L1614、L1621、L1624–1631、L1633 补齐 !INF(或为 INF 单独输出左括号 [);
    • 将 L1633 拆为:STAT360=0 追加 /%RED%损坏%TAN%],STAT360>0 仅追加 %TAN%]。

1.3 [FMT-03 / P2] 5.5 / 5.6 装备评分分母与公式封顶上限不一致,出现 8/7、8/6

  • 定位:L1001–1009、L1043 vs L2800–2808、L2853
  • 问题详情:
    1. 手套(RG_A、RG_B)、腰带(RBE_A)、鞋子(RBO_A)的强化分满分均为 /2(与戒指/头环 8+2=10、头盔/胸甲 7+3=10 统一组成 10 分制),因此 L1001, 1003, 1006, 1009 四个公式均用 MAX(0,MIN(8,...)) 封顶为 8 分(L1005 注释亦写明 全局 0~8),但 L2800, 2801, 2805, 2808 展示文本却写成了 %WHITE%/7,高分装备会出现 7.5/7、8/7。
    2. L1043 Formula[MA_A] 未加 MIN(6, ...) 封顶且未像 L967 RA_A 那样扣减 +50生命 腐化 (IF(STAT360==61,50,0)),魔法项链经腐化+亵渎叠加技能/施法/生命后,在 L2853(/6)会出现 7/6、8/6。
  • 修复建议:将 L2800, 2801, 2805, 2808 的 %WHITE%/7 改为 %WHITE%/8;为 L1043 Formula[MA_A] 增加 MAX(0,MIN(6,...)) 及腐化项扣减。

1.4 [FMT-04 / P2] PVP 地图前置悬停提示被覆盖丢弃 + 升级提示对维特之脚 (leg) 右括号失配

  • 定位:L1871 vs L2037;L1807–1817
  • 问题详情:
    1. L1871 ItemDisplay[MAPTIER=0] 写入 {%RED%以开启PVP区域%CL%在萝格营地右键点击}%CONTINUE%,但后续 L2037 ItemDisplay[MAPTIER=0] 的 {...} 未引用 %NAME%,把 L1871 刚写入的开启方式说明 100% 覆盖清空。应在 L2037 末尾补 %CL%%NAME%(或合并两行)。
    2. 3.4 装备升级提示中,L1807(输出 , 升级后需求:(力:%UPSTR%)、L1811、L1814 的排除列表均未包含 leg(维特之脚),唯独收尾补右括号 ) 的 L1817 排除了 leg,导致亮金/手工维特之脚出现未闭合左括号 升级后需求:(力:..., 等级:...。应在 L1784, 1796, 1801, 1807, 1811, 1814 同步排除 leg。

1.5 [FMT-05 / P2] 首字符孤立竖线 | 、%CL% 误重置颜色及火炬尾部多余空行

  • 定位:L2392–2393、L2401、L2403、L2415、L2711、L3074、L3139
  • 问题详情:
    • 孤立竖线:L2401(安头)、L2403(巨骷髅)、L2415(羽蛇神面)、L2711(坦克雷的皮靴)在 { 后直接写了 {%BLACK%| %CORAL%基础:,悬停首行开头多出孤立 | ,应改为 {%CORAL%基础:。
    • %CL% 误重置颜色:L3074(卡里姆的意志 qf2)误把 %NL% 写成 %CL%(对比 L3054–3060 任务道具均用 %NL% 保持 %ORANGE%),导致上半句台词变白;L2392–2393(赌博 aqv/cqv)在同档暗金名之间用 %CL% 换行但漏补颜色,使 天境、深渊结界 丢失 %RED%,疾风利刺、扞卫钢条 丢失 %ORANGE%。
    • 多余空行:L3139 (cm2 UNI ID) {...火炬碎片%CL%} 删掉 %NAME% 后残留了末尾 %CL%,去掉末尾 %CL% 即可消除多余空行。

二、规则冲突与 %CONTINUE% 断链(Rule Conflicts & Pipeline Truncation)

图 2:S14V1.99 单一顺序流水线(L1 ➔ L4474)三大核心规则断链与冲突路径

2.1 [CNF-01 / P0] 第二章 121 条辅助评分规则漏写 %CONTINUE%(其中 71 条无 !GROUND),截断地面掉落提醒与后续提示

  • 定位:
    • 4.2 秘境地图评级:L2049–2051(3 条,无 !GROUND、无 %CONTINUE%)
    • 5.5 亮金/手工价值评测:L2763–2847(50 条,有 !GROUND、无 %CONTINUE%,带 %DOT-0A%)
    • 5.6 魔法装备价值评测:L2853–2882(22 条,无 !GROUND、无 %CONTINUE%,带 %DOT-0A%)
    • 5.7 符文之语价值评测:L2888–2939(46 条,无 !GROUND、无 %CONTINUE%)
  • 冲突原因与实际影响:
    L2758、L2850、L2885 的注释写道“本模块靠不写 %CONTINUE% 实现互斥”,但过滤器是全文件从上到下单一流水线串联执行(对比 5.3 暗金评测 L2399–2686 和 5.4 套装评测 L2688–2753 全部正确保留了 %CONTINUE%):
    1. 地面掉落提醒被直接吞没:4.2(蓝/黄地图)、5.6(22 条高价值已鉴定蓝装,如红白珠 L2859、6 技能法球/魔杖、3/20 手套、3 技能项链)、5.7(46 条符文之语)既未限制 !GROUND,又未写 %CONTINUE%。当已鉴定极品蓝装(如腐化区掉落已鉴定装备或玩家扔地上展示交易)或蓝黄地图掉在地上时,在第二章直接终止,第三章的小地图光柱 %BORDER%、%MAP%、%TIER% 及红白珠改名 (L3126) 全部失效。
    2. 截断后续辅助模块:命中 5.5 或 5.6 的珠宝与装备在 L2763–2882 终止后,位于其下方的 5.8 洗珠宝提示 (L2942–2947)、5.9 手工词缀等级提示 (L2950–2980) 以及 L3122 珠宝转碎片提示 全部被跳过;同时 5.5/5.6 共 72 条背包评测规则中冗余写入了地面小地图点 %DOT-0A%。
  • 修复建议:
    1. 为 L2049–2051、L2763–2847、L2853–2882、L2888–2939 全部恢复末尾 %CONTINUE%;
    2. 为 5.6 (L2853–2882) 和 5.7 (L2888–2939) 补齐 !GROUND !EQUIPPED !MERC(与 5.5 保持一致),并移除 5.5/5.6 中的 %DOT-0A%;
    3. 同部位多分支互斥通过精确收窄条件实现(例如 L2792 通用头盔写成 HELM !CIRC !BAR !DRU 即自然与 L2784–2785 头环、L2788–2790 蛮头兽头互斥;物理+施法双修戒如 L2763 vs L2765 在低优先级行加 !(MINDMG+MAXDMG>16 OR ...) 排除即可)。

2.2 [CNF-02 / P0] SHOW_GOODRARE 极品亮金排在 亮金装备词缀透视 之前且无 %CONTINUE%,极品亮金反而丢失全部词缀标签

  • 定位:L3285–3376(潜在极品永久显示,62 条,无 %CONTINUE%) vs L3378–3997(亮金装备词缀透视,600+ 条,全带 %CONTINUE%)
  • 冲突原因与实际影响:
    • 默认 SHOW_GOODRARE=TRUE 下,所有命中 4★/5★ 潜在极品组合的未鉴定亮金装备(项链、戒指、箭矢、盔甲、手套、鞋子、腰带、头环、头盔、盾牌、武器、专属装备)在 L3287–3376 直接匹配终止(无 %CONTINUE%),输出 %GREEN%★ %NAME% %GREEN%★。
    • 而为未鉴定亮金追加 [2法师]、[20%施法]、[300%增伤]、[40攻速] 等词缀透视标签的 L3378–3997 却排在 L3376 之后。这导致无论是掉在地上还是捡进背包未鉴定:普通亮金能看到词缀透视标签,越是极品的 SHOW_GOODRARE 亮金反而一个词缀标签都看不到!
  • 修复建议:将整个 亮金装备词缀透视 区块(L3378–3997,全部带 %CONTINUE%)上移至 潜在极品永久显示(L3285–3376,不带 %CONTINUE%)之前。调整后:极品亮金会先累加所有命中词缀标签,随后命中 SHOW_GOODRARE 加上星级光柱/地图图标/音效并终止(不会被 L4403–4440 地面基础屏蔽隐藏);非极品亮金则在累加词缀标签后按 FILTLVL 正常走后续开关与地面屏蔽逻辑。

2.3 [CNF-03 / P1] 珠宝自定义屏蔽开关 HIDE_JEW1~4 与 FILTLVL 逻辑冲突且漏写 GROUND

  • 定位:L157–160、L4000–4003、L4400–4401、L4443–4444
  • 三重逻辑冲突:
    对比宝石(L3090–3091)、符文(L3112–3114)、护身符(L3239–3244)的手动屏蔽开关(均不绑定 FILTLVL),L4400–4401 与 L4443–4444 写成了 HIDE_JEW1 jew RARE ILVL<68 !ID FILTLVL>4: / HIDE_JEW2 ... FILTLVL>5::
    1. 默认均衡档 (FILTLVL=4) 下开启开关完全不屏蔽:玩家在 FILTLVL=1..4 打开设置面板勾选 HIDE_JEW1 或 HIDE_JEW3 时,因不满足 FILTLVL>4,只会取消 L4000/4002 的星标,地面未鉴定珠宝照常显示,开关失效;
    2. 严格档 (FILTLVL=5/6) 下默认不屏蔽低级垃圾珠宝:由于 HIDE_JEW1~4 默认均为 FALSE,即便切到 FILTLVL=5(比较严格)或 FILTLVL=6(极其严格),地面 <67 级亮金珠和 <85 级单缀蓝珠也完全不会被过滤;
    3. 漏写 GROUND 误伤背包:当同时满足 HIDE_JEW*=TRUE 与 FILTLVL>4/5 时,因未写 GROUND,背包和仓库里存放的未鉴定珠宝名称也会被清空。
  • 修复建议:将手动开关与 FILTLVL 自动过滤解耦,并全部加上 GROUND:
    // 亮金珠宝屏蔽(手动开关任意档生效;FILTLVL>4 自动屏蔽低级亮金珠,但保留词缀透视命中的好珠)
    ItemDisplay[jew RARE ILVL<67 !ID GROUND (HIDE_JEW1 OR (FILTLVL>4 !(GR_JEWS_DMG OR GR_JEWS_CAST OR GR_JEWS_STAT)))]:
    ItemDisplay[HIDE_JEW2 jew RARE ILVL>66 !ID GROUND]:
    // 魔法珠宝屏蔽(手动开关任意档生效;FILTLVL>4 自动屏蔽 ILVL<85 低级魔法珠)
    ItemDisplay[jew MAG ILVL<85 !ID GROUND (HIDE_JEW3 OR FILTLVL>4)]:
    ItemDisplay[HIDE_JEW4 jew MAG ILVL>84 !ID GROUND]:
    

2.4 [CNF-04 / P1] 末尾白板兜底 L4458 漏判已穿戴与佣兵装备 (EQUIPPED / MERC),出城清空装备名称

  • 定位:L4458–4473
  • 问题分析:
    • L4458 写了 (ARMOR OR WEAPON OR QUIVER) (TOWN OR INVENTORY OR CUBE OR STASH OR GUILDVAULT OR TROPHYCASE) !GROUND FILTLVL>0,漏掉了角色自身穿戴 (EQUIPPED) 与佣兵穿戴 (MERC);
    • 当角色 CLVL>30(或 FILTLVL>1)走出城镇 (!TOWN) 打开装备栏查看自己或佣兵穿戴的非符文之语镶嵌装(如黄宝石头、电珠盾)、白板底材或普通箭袋时,不会命中 L4458,而是直接穿透到末尾 L4473:
      ItemDisplay[(ARMOR OR WEAPON OR QUIVER) NMAG !THROWPOTS ((CLVL>30 FILTLVL>0) OR FILTLVL>1)]:{%NAME%}
    • 因 L4473 冒号后没有 %NAME%,已穿戴装备的名称在城外会被直接抹成空白(同理 L4460 劣质物品屏蔽也漏写了 GROUND,城外穿戴劣质开荒装同样会被清空名字)。
  • 修复建议:
    • L4458 直接简化为 ItemDisplay[(ARMOR OR WEAPON OR QUIVER) !GROUND FILTLVL>0]:%NAME%{%NAME%}(或补入 OR EQUIPPED OR MERC);
    • 为 L4460 和 L4473 补上 GROUND。

2.5 [CNF-05 / P1] 开荒 0 孔弓拉苏克打孔提示 L4372–4374 误加 %CONTINUE%,落入 L4473 被空名隐藏

  • 定位:L4371–4374 vs L4473
  • 问题分析:同在第十节开荒佣兵底材区,长柄(L4365–4366)、长矛(L4368–4369)、4 孔弓弩(L4371)均不带 %CONTINUE%(命中即正常显示地面名称);唯独 L4372–4374 三条 0 孔弓(Larzuk for 4 sockets)末尾多写了 %CONTINUE%。当玩家处于 FILTLVL=2 或 FILTLVL=1 且 CLVL>30 时,未命中第 8 章高星底材的开荒 0 孔弓在 L4372–4374 继续向下执行,没有任何规则承接,最终撞上 L4473(:{%NAME%}),在地面变成空名隐藏无法拾取。
  • 修复建议:去掉 L4372–4374 末尾的 %CONTINUE%。

三、覆盖不对、规则遮蔽与模块版本失步(Wrong Coverage, Shadowing & Build Desync)

3.1 [COV-01 / P1] 三组 100% 永不触发的死规则 / 同组互斥词缀 / 错用护身符词缀

  1. L2774 防御项链评测与 L971 Formula[RA_C] 被前置规则 100% 遮蔽:
    • L2770 无条件匹配 RARE_NOTE amu (RARE OR CRAFT) ID PHYSISKILL ...,L2772 无条件匹配 RARE_NOTE amu (RARE OR CRAFT) ID CASTERSKILL ...;
    • 紧随其后的 L2774 条件为 RARE_NOTE amu (RARE OR CRAFT) ID (CASTERSKILL OR PHYSISKILL) STAT110>49 ...,其匹配集合是 L2770 ∪ L2772 的严格子集,在任何写法下都会被上方两条规则拦截(若将 L2774 上移至 L2770 之前并限定高减毒/最大抗特化条件,或合并进 RA_A/RA_B,方可生效)。
  2. L757–758 Alias[BELT_5_4] 与 Alias[BELT_5_5](用于 L3308 5★ 亮金腰带)同组词缀互斥永假:
    • L757–758 中,PREFIX=982(最大火抗)、PREFIX=984(最大毒抗)、PREFIX=986(最大电抗)、PREFIX=988(最大冰抗)属于互斥的同一前缀组,单件亮金腰带最多只能骰出其中 1 条;
    • 但 BELT_5_4 用空格 AND 要求同时具备 3 条最大抗前缀,BELT_5_5 要求同时具备 2 条最大抗前缀,100% 无法在亮金腰带上生成。应改为 (PREFIX=982 OR PREFIX=984 OR PREFIX=986 OR PREFIX=988) 搭配高单抗/高力量/高生命/FHR/减毒词缀组合。
  3. L3165 圣骑战斗元素超大护身符误用小护身符专属后缀:
    • L3165 写了 ItemDisplay[cm3 MAG PREFIX=466 (SUFFIX=705 OR SUFFIX=717 OR SUFFIX=729)]:...;
    • 其中 SUFFIX=705/717/729 是仅限小型护身符 (cm1) 的元素伤害后缀,不可能出现在超大护身符 (cm3) 上;对比紧邻 L3166(法师火焰板 SUFFIX=721),L3165 应改为超大护身符对应的元素伤后缀 (SUFFIX=709 OR SUFFIX=721 OR SUFFIX=733)。

3.2 [COV-02 / P1] 5.5 盾牌评测漏掉死灵法师专属盾 (NECHEAD),且 DIN 误覆盖圣骑双手剑、漏判圣骑盾技能前缀

  • 定位:L2811–2814
  • 三处覆盖偏差:
    1. 死灵盾完全轮空:L2811–2812 用 SHIELD !PALASHIELD !NECHEAD 排除了圣骑盾与死灵盾,但下方 L2813–2814 只补写了圣骑盾,没有任何规则覆盖死灵法师专属盾 (NECHEAD),导致所有亮金/手工死灵盾无评分;
    2. DIN 误覆盖圣骑双手剑:L2813–2814 写的是 DIN 而非 PALASHIELD——PD2 新增的圣骑专属双手剑(crs2、9cr2、7cr2)同样属于 DIN,命中 L2813–2814 后会被当成盾牌按格挡公式 RSH_A/RSH_B 评分(若恢复 %CONTINUE% 还会与武器评分重复叠加);
    3. 圣骑盾技能前缀写错:L2814 写了 (PREFIX~562-563 OR PREFIX~466-467),其中 562-563 是项链/头环的圣骑技能前缀,圣骑盾实际的 +1/+2 圣骑士技能 前缀应包含 PREFIX~566-567(与 L3776–3777 亮金盾牌词缀透视一致)。

3.3 [COV-03 / P2] 5.9 权杖 SCEPTER 在 CRAFTALVL=75 掉入盲区 + Alias[CA_GOOD] 自相矛盾冗余

  • 定位:L2956–2958
  • 问题详情:
    1. CA_ALL 要求 (WEAPON CRAFTALVL>75)(即 >=76),CA_GOOD 排除了 !SCEPTER,CA_SKILL 只覆盖 (SCEPTER CRAFTALVL~60-74),导致 CRAFTALVL=75 的权杖同时落空三个别名,悬停仅输出无颜色、无括号的裸文本 手工词缀等级: 75。将 CA_SKILL 改为 (SCEPTER CRAFTALVL~60-75)(或归入 CA_GOOD)即可闭合区间。
    2. L2957 Alias[CA_GOOD] 中 ((WEAPON !(SCEPTER OR STAFF OR WAND OR SOR OR BOW OR XBOW OR (ZON JAV) OR DAGGER OR CLUB OR TMACE OR (THROWING AXE)) CRAFTALVL~51-75) OR ((BOW OR XBOW OR (ZON JAV) OR DAGGER OR CLUB OR TMACE OR (THROWING AXE)) CRAFTALVL~51-75)) 将同一组 7 类武器先排除又在同区间 51-75 原样 OR 回来,可直接化简为 (WEAPON !(SCEPTER OR STAFF OR WAND OR SOR) CRAFTALVL~51-75)。

3.4 [COV-04 / P2] 第 9 节注入底材提示覆盖脱节 + KNOWN_CODES 漏收 irrn

  • 定位:L4210–4275;L1865 vs L4393
  • 问题详情:
    1. 第 9 节下半部分定义了 29 个 *_INFUSION 显示规则(其中 CHEST_INFUSION 默认 TRUE),但上半部分追加 ▋/■ 注入标识与等级说明的 L4210–4232 漏掉了 CHEST_INFUSION、SIN_INFUSION_3、WEAPON_INFUSION_1/2、SHIELD_INFUSION_1/2 共 6 类注入底材(导致默认开启的 CHEST_INFUSION 掉在地上只是普通白字无任何注入标记);反之 L4210–4231 的头环/专属底材提示又未绑定各自的 *_INFUSION 开关(开关为 FALSE 时背包内所有无孔白板头环/专属底材仍被强加 ▋/■ 注入后缀)。
    2. L1865 匹配了 (imrn OR irrn),但 L4393 Alias[KNOWN_CODES] 与 L888 掉落音效仅写了 imrn 漏写了 irrn(补入 irrn 可避免潜在未知物品误报)。

3.5 [COV-05 / P0] build/ 模块化源码停留在 S14V1.70,且 build/build.ps1 输出路径与换行配置仍错位

  • 定位:build/00..39-*.txt vs 根目录 BadWolf-LootFilter.txt;build/build.ps1 L59–61、L114–116、L132–133
  • 三处工程问题:
    1. 模块源码严重滞后 29 个小版本:build/00..39-*.txt 拼接后仍为 S14V1.70(4,406 行、538,366 字节),而根目录 BadWolf-LootFilter.txt 已迭代至 S14V1.99(4,474 行、554,217 字节,累计 1,853 行 diff)。此时一旦运行构建同步,会直接将 V1.71–V1.99 的全部更新覆盖回退为 V1.70。
    2. $MergedPath 仍指向 build/ 子目录:build.ps1 虽然新增了 L86–89 平铺模块探测,但 L59–61 $Root = $PSScriptRoot; $MergedPath = Join-Path $Root 'BadWolf-LootFilter.txt' 未同步上移一层父目录,check/build 实际比对和写入的是 build/BadWolf-LootFilter.txt 而非仓库根目录主文件。
    3. 缺少 .gitattributes 与 item_codes.txt 跳过白名单:仓库未提交 .gitattributes(*.txt text eol=crlf),Git 默认按纯 LF 检出时 L132–133 会对全部 40 个模块报“存在裸 LF 换行”中止 build;且 L114–116 未排除 item_codes.txt,每次运行都会对 item_codes.txt 打印黄色非模块警告。

四、条件与注释不符(Condition vs. Comment Mismatches)

4.1 [CMT-01 / P1] 第三章 57 条护身符规则注释均写明“已鉴定”,但条件全部漏写 ID(剧透词缀、绕过屏蔽并截断后续提示)

  • 定位:L3152–3236 vs L3239–3244
  • 不一致证据与连锁后果:
    • L3152(//已鉴定的有用巨型神符)、L3191(//已鉴定的有用大型神符)、L3214(//已鉴定的有用小型神符)三处分节注释均明确声明仅匹配已鉴定护身符(且紧随其后的元素伤护身符 L3189、L3212、L3230 均写了 MAG ID);
    • 但 L3153–3186(29 条)、L3192–3209(18 条)、L3215–3227(10 条)共 57 条规则全部漏写了 ID:
      1. 未鉴定地面剧透并绕过 HIDE_CHAM1~6 屏蔽开关:未鉴定护身符掉在地上时即命中这 57 条规则直接改名终止,导致下方 L3239–3244 的 HIDE_CHAM1~6 屏蔽开关对词缀护身符完全失效;
      2. 终结规则仍截断 Veng 与洗板提示:L3177–3186、L3200–3209、L3219–3227 未加 %CONTINUE%,双词缀元素神符(如高电伤+7MF 小符)仍无法走到 L3189/3212/3230 的 Veng 提示,也无法走到 L3233–3236 的 91+ 洗符提示;
      3. 洗护身符文案误套洗珠宝规则:L3232 注释写 //91级以上可以洗的超大型护身符,但 L3235 写成了 90+ 护身符 必定双缀——85+ 必定双缀 仅适用于魔法珠宝,魔法护身符在任何等级都不是必定双缀(91+ 超大符的核心价值是可洗出 41–45 生命 词缀)。
  • 修复建议:为全部 57 条已鉴定护身符规则补齐 ID 并在收尾分支补 %CONTINUE%(收尾补一条 ItemDisplay[(cm1 OR cm2 OR cm3) MAG ID]:%NAME%{%NAME%} 承接),同时将 L3233–3236 文案修正为 91+ 超大符可洗 41–45 生命说明。

4.2 [CMT-02 / P1] 注入开关 THROW_INFUSION_1/2 注释写明“无孔无形”,但规则漏写 ETH

  • 定位:L227–228 vs L4252–4253
  • 不一致详情:L227–228 开关标签为 @显示无孔无形鬼魂尖枪@、@显示无孔无形翼鱼叉@(同系列亮金 L4030–4031 与魔法 L4063–4064 均正确带有 ETH),但 L4252–4253 实际条件仅写了 NMAG (glv OR 9gl OR 7gl) SOCK=0 GROUND 与 (tsp OR 9ts OR 7ts),漏写了 ETH,开启开关后会把大量无价值的有形普通标枪一并显示。
  • 修复建议:在 L4252 与 L4253 中补上 ETH。

4.3 [CMT-03 / P2] 亮金珠宝开关 HIDE_JEW1/2 注释写明 ILVL<67 / ILVL>66,规则却写成 <68 / >67

  • 定位:L157–158 vs L4002–4003、L4400–4401
  • 不一致详情:L157–158 注释写明 @屏蔽ILVL<67亮金珠宝@ 说明:物品等级大于66以确保可以出40ED词缀、@屏蔽ILVL>66亮金珠宝@(且第二章 5.8 L2943 洗珠宝提示亦以 REROLLALVL>65 即 >=66 为界),但 L4002–4003 与 L4400–4401 全部写成了 ILVL<68 与 ILVL>67,导致 ILVL=67 的亮金珠宝与注释描述相悖被归入低级档。
  • 修复建议:将 L4002、L4400 改为 ILVL<67,L4003、L4401 改为 ILVL>66(或若以 66 级为界则改为 ILVL<66 / ILVL>65 并同步更新开关文字)。

4.4 [CMT-04 / P2] 5.5 腰带注释与触发门槛包含 IAS 和 冰冻减半,但 Formula[RBE_A] 漏算得分

  • 定位:L2804–2805 vs L1006
  • 不一致详情:L2804 注释明确列出 腰带:重要项任一(FCR/FHR/IAS/冰冻减半/高力/高血/技能/抗性>=40/物免%/最大抗),L2805 触发条件也包含 IAS>4 OR STAT118>0,但 L1006 Formula[RBE_A] 完全未把 (IAS-IF(STAT360==34,10,0)) 与 (STAT118-IF(STAT360==77,1,0)) 纳入计分(计 0 分)。
  • 修复建议:在 Formula[RBE_A] 中补入 (IAS-IF(STAT360==34,10,0))*0.075 与 (STAT118-IF(STAT360==77,1,0))*0.8 等对应权重。

4.5 [CMT-05 / P2] 第 10 节开荒过滤与第 8 节底材注释的多处图文不符

  • 定位:L4281–4284、L4311–4313、L4323–4324、L433–436
  • 不一致清单:
    1. L4281–4282:注释写 // FCR法球/法杖/魔杖/权杖/棍棒/头环/项链/戒指,但条件只写了 WEAPON RARE(漏掉了 CIRC、amu、rin,又把刀剑斧枪等非施法武器囊括进来,且漏写 !ID);应改为 (SOR OR STAFF OR WAND OR SCEPTER OR CLUB OR CIRC OR amu OR rin) RARE !ID ...。
    2. L4283–4284:注释写 // 20+mf装备,但条件仅写了 GLOVES RARE SUFFIX~287-288(只匹配亮金手套,不含鞋子/头环/戒指/项链,且 SUFFIX=287 为 16–25% MF)。
    3. L4311–4313:注释写 //生命、法力/减半冰冻时间,但输出仅写 %ORANGE%生命/法力,仅骰出 SUFFIX=182(冰冻减半)的法球也会被显示成 生命/法力。
    4. L4323–4324:死灵开荒白板对比法师 (L4293–4294) 与刺客 (L4316–4317)(普通难度 >1,全难度 >2 且限定职业底材),L4324 仍写 >1 且未限定 (WAND OR NEC),导致 L4323 在非 1 孔时被 L4324 完全冗余覆盖。
    5. L433–436:Alias[SPEARBASE4_1] / SPEARBASE4_2 上方注释仍写 15ED,而实际条件已是 PD2 满变 ED=20。

五、建议修复落地顺序(Checklist)

  1. 第一步(先对齐 build/ 模块基准,COV-05):先将当前根目录 S14V1.99 的 BadWolf-LootFilter.txt 反向拆回 build/00..39-*.txt,修复 build/build.ps1 的 $MergedPath(指向父目录 <repo>/BadWolf-LootFilter.txt)并新增 .gitattributes(*.txt text eol=crlf),防止误跑 build 回退掉 V1.71–V1.99 的更新。
  2. 第二步(修复两条 P0 规则断链,CNF-01 & CNF-02):
    • 为 L2049–2051、L2763–2939 共 121 条评测规则补回 %CONTINUE%(并为 5.6/5.7 补 !GROUND !EQUIPPED !MERC、移除冗余 %DOT-0A%,收窄同部位重叠条件);
    • 将 亮金装备词缀透视(L3378–3997)整体上移至 SHOW_GOODRARE(L3285–3376)之前。
  3. 第三步(修复 8 项 P1 覆盖/屏蔽/格式/注释问题):补齐 5.9 头环 !CIRC(FMT-01)、可能孔数 MAXSOCKETS>0 与 !INF(FMT-02)、解耦 HIDE_JEW1~4 与 FILTLVL 并加 GROUND(CNF-03)、白板兜底放行 EQUIPPED/MERC(CNF-04)、去掉 L4372–4374 %CONTINUE%(CNF-05)、修正 3 组死规则(COV-01)、补上死灵盾评测与 PALASHIELD(COV-02)、补齐 57 条神符 ID 与 THROW_INFUSION_1/2 ETH(CMT-01/CMT-02)。
  4. 第四步(清理 9 项 P2 细节):修正 /8 分母与 MA_A 上限、MAPTIER=0 %NAME%、维特之脚 !leg、孤立竖线与 %CL% 颜色重置、权杖 75 级盲区、第 9 节注入标识、irrn 收录、HIDE_JEW1/2 67 级边界、RBE_A 腰带公式权重及第 10 节开荒条件。
### 📎 完整排版 PDF 审计报告附件 - **[📄 点击下载《BadWolf-LootFilter_S14V1.99_深度审计与改进报告.pdf》(8 页 A4 矢量图表排版完整版)](https://git.projectdiablo2.cn/attachments/32147aa0-3b82-4f76-928f-a8798c92cc1f)** - **说明**:本次针对最新主分支 `S14V1.99`(commit `fb2cf35`)对过滤器规则文件与 `build/build.ps1` 进行了全量静态与规则链路审计,聚焦 **格式与悬停显示**、**规则冲突与 `%CONTINUE%` 断链**、**覆盖不对与规则遮蔽/模块失步**、**条件与注释不符** 四大维度,汇总 `20` 项具体问题与逐行修复建议供参考。 --- > **📌 审计基准与核心结论** > > - **审计基准**:[BadWolf-LootFilter.txt (`S14V1.99`, commit `fb2cf35`)](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt)(共 `4,474` 行、`554,217` 字节;含 `438` 条 `Alias`、`72` 条 `Formula`、`2,554` 条 `ItemDisplay` 规则)及 [build/build.ps1](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/build/build.ps1)(`901` 行)。 > - **审计范围**:仅聚焦过滤器自身规则质量——**格式与悬停显示**、**规则冲突与 `%CONTINUE%` 断链**、**覆盖不对与规则遮蔽/模块失步**、**条件与注释不符** 四大维度(全篇基础语法、括号配对、公式算术与占位符拼写已 `100%` 校验通过)。 > - **核心结论**: > 1. **`S14V1.70` ([Issue #3](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/issues/3)) 大部分问题已完成修复**:`L3230` 元素小符副词缀阈值、`L3287–3376` 极品亮金 `{%NAME%}`、`build.ps1` 平铺模块探测 (`L86–89`)、`Get-Lines` 跨平台换行切分 (`L159`)、`Alias` 括号与粘连自检 (`L349–362`)、连字符占位符校验 (`L199–201`) 及 `build/item_codes.txt` 均已就位。 > 2. **本轮检出 `20` 项过滤器自身问题(`3` 项 P0 阻断 + `8` 项 P1 严重 + `9` 项 P2 中低危)**:其中最关键的阻断问题是 `V1.71–V1.99` 重构估值模块时**删掉了第二章 `121` 条辅助评分规则的 `%CONTINUE%`**(截断后续提示与第三章地面掉落提醒)、**`SHOW_GOODRARE` 极品亮金置于 `亮金装备词缀透视` 之前且无 `%CONTINUE%`**(导致极品亮金反而 `100%` 看不到词缀透视标签),以及 **`build/00..39-*.txt` 模块仍停留在 `S14V1.70`**(滞后主文件 `29` 个小版本)。 --- ## 零、四大维度问题全景矩阵 ![图 1:BadWolf-LootFilter (S14V1.99) 四大维度 20 项问题全景分布(3 项 P0 + 8 项 P1 + 9 项 P2)](https://git.projectdiablo2.cn/attachments/9ca46d07-e0a2-4d63-819e-a6a041e6625c) | 编号 | 级别 | 维度 | 行号定位 (`S14V1.99`) | 问题摘要 | | :--- | :---: | :---: | :--- | :--- | | **CNF-01** | **P0** | 规则冲突 | `L2049–2051`, `L2763–2939` | 第二章 `121` 条辅助评分规则漏写 `%CONTINUE%`(其中 `71` 条无 `!GROUND`),截断地面掉落提醒与后续洗珠/手工提示 | | **CNF-02** | **P0** | 规则冲突 | `L3287–3376` vs `L3378–3997` | `SHOW_GOODRARE` 极品亮金排在 `亮金装备词缀透视` 之前且无 `%CONTINUE%`,极品亮金 `100%` 丢失全部词缀透视标签 | | **COV-05** | **P0** | 版本同步 | `build/00..39-*.txt`, `build.ps1` | `build/` 模块仍停在 `S14V1.70`(`4,406` 行 vs 主文件 `4,474` 行),且 `$MergedPath` 仍输出到 `build/` 子目录 | | **FMT-01** | **P1** | 格式显示 | `L2951–2980` | `5.9` 手工等级 `CA_ALL` / `CA_GOOD` 漏排 `!CIRC`,头环悬停输出残缺方括号 `[ - 最高档词缀均有几率洗出]` | | **FMT-02** | **P1** | 格式显示 | `L1614–1633`, `L1725–1751` | 可能孔数提示未排除不可打孔投掷武器 (`MAXSOCKETS=0`),劣质装缺左括号 `[`,已腐化白板误拼 `/损坏]` | | **CNF-03** | **P1** | 规则冲突 | `L157–160`, `L4000–4003`, `L4400–4444` | `HIDE_JEW1~4` 与 `FILTLVL>4/5` 强绑定且缺 `GROUND`:均衡档开开关不屏蔽,严格档默认不滤低级珠、开开关又清空背包名 | | **CNF-04** | **P1** | 规则冲突 | `L4458–4473` | 末尾白板兜底 `L4458` 漏判 `EQUIPPED` / `MERC` 且 `L4460`/`L4473` 缺 `GROUND`,`CLVL>30` 出城清空身上/佣兵白板及镶嵌装名 | | **CNF-05** | **P1** | 规则冲突 | `L4372–4374` vs `L4473` | 开荒 0 孔弓拉苏克打孔提示误加 `%CONTINUE%`,未命中高星底材时直接落入 `L4473` 在地面被空名隐藏 | | **COV-01** | **P1** | 规则遮蔽 | `L2774`/`L971`, `L757–758`, `L3165` | 防御项链 `L2774` 被 `L2770/2772` `100%` 遮蔽;`BELT_5_4/5_5` 同组最大抗词缀互斥永假;`L3165` 超大符误用小符后缀 | | **COV-02** | **P1** | 覆盖不对 | `L2811–2814` | `5.5` 盾牌评测排除 `!NECHEAD` 后漏写死灵盾规则;`DIN` 误覆盖圣骑专属双手剑且漏判圣骑盾 `+1/+2技能` `PREFIX~566-567` | | **CMT-01** | **P1** | 注释不符 | `L3152–3236` | `57` 条 `//已鉴定的有用...神符` 规则全部漏写 `ID`(未鉴定地面剧透且绕过 `HIDE_CHAM1~6`),终结规则截断 `Veng` 与洗板提示 | | **CMT-02** | **P1** | 注释不符 | `L227–228` vs `L4252–4253` | `THROW_INFUSION_1/2` 开关标明“显示无孔无形鬼魂尖枪/翼鱼叉”,实际规则漏写 `ETH`,把有形普通底材全部放行 | | **FMT-03** | **P2** | 格式显示 | `L1001–1009`, `L1043`, `L2800–2853` | 手套/腰带/鞋子公式封顶 `MIN(8,...)` 但展示分母写 `/7`(出现 `8/7`);蓝项链 `MA_A` 无封顶出现 `8/6` | | **FMT-04** | **P2** | 格式显示 | `L1871` vs `L2037`, `L1807–1817` | `L2037` PVP 地图漏 `%NAME%` 覆盖 `L1871` 开启提示;`3.4` 升级提示仅 `L1817` 排除 `leg` 致维特之脚缺闭合 `)` | | **FMT-05** | **P2** | 格式显示 | `L2392–2393`, `L2401–2711`, `L3074`, `L3139` | 4 条暗金/套装评测首行多出孤立 `\| `;`qf2` 与赌博 `aqv/cqv` 误用 `%CL%` 丢失橙/红色;`L3139` 尾部残留多余 `%CL%` | | **COV-03** | **P2** | 覆盖不对 | `L2956–2958` | `5.9` 权杖 `SCEPTER` 在 `CRAFTALVL=75` 掉入三不管盲区;`CA_GOOD` 对 7 类武器先排除又原样 `OR` 回来 | | **COV-04** | **P2** | 覆盖不对 | `L4210–4275`, `L1865` vs `L4393` | 第 9 节 6 类注入底材(含默认开启的 `CHEST_INFUSION`)缺 `▋`/`■` 提示;`KNOWN_CODES` 与 `L888` 漏收 `irrn` | | **CMT-03** | **P2** | 注释不符 | `L157–158` vs `L4002–4003`, `L4400–4401` | `HIDE_JEW1/2` 注释说明 `ILVL<67` / `ILVL>66`(66+ 可出 40ED),实际规则写成 `ILVL<68` / `ILVL>67` | | **CMT-04** | **P2** | 注释不符 | `L2804–2805` vs `L1006` | `5.5` 腰带注释与触发门槛均含 `IAS` 和 `冰冻减半 (STAT118)`,但 `Formula[RBE_A]` 完全未计入这两项分数 | | **CMT-05** | **P2** | 注释不符 | `L4281–4284`, `L4311–4324`, `L433–436` | 开荒 FCR 漏掉 `CIRC/amu/rin`、MF 仅限手套、冰冻减半法球误标 `生命/法力`、死灵 `L4323` 被 `L4324` 冗余包含、`SPEARBASE` 注释残留 `15ED` | --- ## 一、格式与悬停显示错误(Formatting, Brackets & Tooltip Bugs) ### 1.1 `[FMT-01 / P1]` `5.9` 手工词缀等级提示对头环 (`CIRC`) 输出残缺方括号 `[ - ...]` - **定位**:[BadWolf-LootFilter.txt L2951–2980](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2951) - **问题现象**:当背包或地面上出现 `CRAFTALVL >= 71` 的魔法/亮金头环(`ci0..ci3`)时,鼠标悬停会多出一行无标题、无数值的残缺方括号文本: - `CRAFTALVL >= 75`:`[ - 最高档词缀均有几率洗出]` - `CRAFTALVL 71–74`:`[ - 可以洗出大多数词缀]` - **原因分析**:在过滤器分类中,头环 `CIRC` 属于 `HELM` 的子集。`L2951`(换行)、`L2966`(输出 `手工词缀等级: `)和 `L2974`(输出 `%CRAFTALVL%`)都显式写了 `!CIRC` 排除头环,但重构抽出的 `L2956` `Alias[CA_ALL]` 中 `(HELM CRAFTALVL>74)` 与 `L2957` `Alias[CA_GOOD]` 中 `(HELM CRAFTALVL~71-74)` **漏写了 `!CIRC`**,导致头环仍命中 `L2967–2968`(左括号 `[`)与 `L2979–2980`(右半截说明 ` - ...]`)。 - **修复建议**:将 `L2956` 的 `(HELM CRAFTALVL>74)` 改为 `(HELM !CIRC CRAFTALVL>74)`,`L2957` 的 `(HELM CRAFTALVL~71-74)` 改为 `(HELM !CIRC CRAFTALVL~71-74)`。 ### 1.2 `[FMT-02 / P1]` 可能孔数提示对投掷武器 (`THROWING`)、劣质装备 (`INF`) 与已腐化白板 (`STAT360>0`) 拼出畸形文本 - **定位**:[L1614–1633](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1614)(白板可能孔数)、[L1725–1751](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1725)(非底材装备可能孔数) - **三处拼接缺陷**: 1. **不可打孔投掷武器(`THROWING` 标枪/飞斧/飞刀/投掷药剂,`MAXSOCKETS=0`)误出打孔提示**:`THROWING` 属于 `WEAPON`(单手投掷同时属于 `1H`)且 `SOCK=0`,但无法打孔(`MAXSOCKETS=0`)。由于 `L1614–1633` 与 `L1726–1751` 未加 `MAXSOCKETS>0`(或 `!THROWING`),泰坦的复仇、雷击、各类标枪和投掷药水悬停都会显示 `[8, 11, ●:1-0, 任务:0, 腐化:1-0/损坏]` 或 `[任务:1, 谜盒:1-0, 腐化:1-0]`。 2. **劣质白板 (`INF`) 缺失左括号 `[` 且首字符多出逗号**:`L1614`、`L1621`、`L1633` 均未写 `!INF`,唯独输出左括号 `[` 的 `L1616–1619` 写了 `!INF`,导致劣质白板悬停拼出 `可能的孔数:, 任务:X, 腐化:1-X/损坏]`。 3. **已腐化无孔白板 (`STAT360>0`) 误拼 `/损坏`**:`L1624–1631` 仅在 `STAT360=0`(未腐化)时输出 `, 腐化:1-X`,但收尾 `L1633` 未判断 `STAT360=0` 即无条件追加 `/%RED%损坏%TAN%]`,使已腐化无孔白板显示 `任务:4/损坏]`。 - **修复建议**: - 在 `L1614–1633` 与 `L1725–1751` 统一增加 `MAXSOCKETS>0`(或在 `WEAPON` 处加 `!THROWING`); - 在 `L1614`、`L1621`、`L1624–1631`、`L1633` 补齐 `!INF`(或为 `INF` 单独输出左括号 `[`); - 将 `L1633` 拆为:`STAT360=0` 追加 `/%RED%损坏%TAN%]`,`STAT360>0` 仅追加 `%TAN%]`。 ### 1.3 `[FMT-03 / P2]` `5.5` / `5.6` 装备评分分母与公式封顶上限不一致,出现 `8/7`、`8/6` - **定位**:[L1001–1009](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1001)、[L1043](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1043) vs [L2800–2808](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2800)、[L2853](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2853) - **问题详情**: 1. 手套(`RG_A`、`RG_B`)、腰带(`RBE_A`)、鞋子(`RBO_A`)的强化分满分均为 `/2`(与戒指/头环 `8+2=10`、头盔/胸甲 `7+3=10` 统一组成 10 分制),因此 `L1001, 1003, 1006, 1009` 四个公式均用 `MAX(0,MIN(8,...))` 封顶为 `8` 分(`L1005` 注释亦写明 `全局 0~8`),但 `L2800, 2801, 2805, 2808` 展示文本却写成了 `%WHITE%/7`,高分装备会出现 `7.5/7`、`8/7`。 2. `L1043` `Formula[MA_A]` 未加 `MIN(6, ...)` 封顶且未像 `L967` `RA_A` 那样扣减 `+50生命` 腐化 (`IF(STAT360==61,50,0)`),魔法项链经腐化+亵渎叠加技能/施法/生命后,在 `L2853`(`/6`)会出现 `7/6`、`8/6`。 - **修复建议**:将 `L2800, 2801, 2805, 2808` 的 `%WHITE%/7` 改为 `%WHITE%/8`;为 `L1043` `Formula[MA_A]` 增加 `MAX(0,MIN(6,...))` 及腐化项扣减。 ### 1.4 `[FMT-04 / P2]` PVP 地图前置悬停提示被覆盖丢弃 + 升级提示对维特之脚 (`leg`) 右括号失配 - **定位**:[L1871](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1871) vs [L2037](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2037);[L1807–1817](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1807) - **问题详情**: 1. `L1871` `ItemDisplay[MAPTIER=0]` 写入 `{%RED%以开启PVP区域%CL%在萝格营地右键点击}%CONTINUE%`,但后续 `L2037` `ItemDisplay[MAPTIER=0]` 的 `{...}` 未引用 `%NAME%`,把 `L1871` 刚写入的开启方式说明 `100%` 覆盖清空。应在 `L2037` 末尾补 `%CL%%NAME%`(或合并两行)。 2. `3.4` 装备升级提示中,`L1807`(输出 `, 升级后需求:(力:%UPSTR%`)、`L1811`、`L1814` 的排除列表均未包含 `leg`(维特之脚),唯独收尾补右括号 `)` 的 `L1817` 排除了 `leg`,导致亮金/手工维特之脚出现未闭合左括号 `升级后需求:(力:..., 等级:...`。应在 `L1784, 1796, 1801, 1807, 1811, 1814` 同步排除 `leg`。 ### 1.5 `[FMT-05 / P2]` 首字符孤立竖线 `| `、`%CL%` 误重置颜色及火炬尾部多余空行 - **定位**:[L2392–2393](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2392)、[L2401](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2401)、[L2403](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2403)、[L2415](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2415)、[L2711](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2711)、[L3074](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L3074)、[L3139](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L3139) - **问题详情**: - **孤立竖线**:`L2401`(安头)、`L2403`(巨骷髅)、`L2415`(羽蛇神面)、`L2711`(坦克雷的皮靴)在 `{` 后直接写了 `{%BLACK%| %CORAL%基础:`,悬停首行开头多出孤立 `| `,应改为 `{%CORAL%基础:`。 - **`%CL%` 误重置颜色**:`L3074`(卡里姆的意志 `qf2`)误把 `%NL%` 写成 `%CL%`(对比 `L3054–3060` 任务道具均用 `%NL%` 保持 `%ORANGE%`),导致上半句台词变白;`L2392–2393`(赌博 `aqv`/`cqv`)在同档暗金名之间用 `%CL%` 换行但漏补颜色,使 `天境`、`深渊结界` 丢失 `%RED%`,`疾风利刺`、`扞卫钢条` 丢失 `%ORANGE%`。 - **多余空行**:`L3139` (`cm2 UNI ID`) `{...火炬碎片%CL%}` 删掉 `%NAME%` 后残留了末尾 `%CL%`,去掉末尾 `%CL%` 即可消除多余空行。 --- ## 二、规则冲突与 `%CONTINUE%` 断链(Rule Conflicts & Pipeline Truncation) ![图 2:S14V1.99 单一顺序流水线(L1 ➔ L4474)三大核心规则断链与冲突路径](https://git.projectdiablo2.cn/attachments/e20f1785-44f3-4abc-939b-b0955e736229) ### 2.1 `[CNF-01 / P0]` 第二章 `121` 条辅助评分规则漏写 `%CONTINUE%`(其中 `71` 条无 `!GROUND`),截断地面掉落提醒与后续提示 - **定位**: - `4.2` 秘境地图评级:[L2049–2051](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2049)(`3` 条,无 `!GROUND`、无 `%CONTINUE%`) - `5.5` 亮金/手工价值评测:[L2763–2847](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2763)(`50` 条,有 `!GROUND`、无 `%CONTINUE%`,带 `%DOT-0A%`) - `5.6` 魔法装备价值评测:[L2853–2882](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2853)(`22` 条,无 `!GROUND`、无 `%CONTINUE%`,带 `%DOT-0A%`) - `5.7` 符文之语价值评测:[L2888–2939](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2888)(`46` 条,无 `!GROUND`、无 `%CONTINUE%`) - **冲突原因与实际影响**: `L2758`、`L2850`、`L2885` 的注释写道“本模块靠不写 `%CONTINUE%` 实现互斥”,但过滤器是**全文件从上到下单一流水线串联执行**(对比 `5.3` 暗金评测 `L2399–2686` 和 `5.4` 套装评测 `L2688–2753` 全部正确保留了 `%CONTINUE%`): 1. **地面掉落提醒被直接吞没**:`4.2`(蓝/黄地图)、`5.6`(22 条高价值已鉴定蓝装,如红白珠 `L2859`、6 技能法球/魔杖、3/20 手套、3 技能项链)、`5.7`(46 条符文之语)既未限制 `!GROUND`,又未写 `%CONTINUE%`。当已鉴定极品蓝装(如腐化区掉落已鉴定装备或玩家扔地上展示交易)或蓝黄地图掉在地上时,在第二章直接终止,**第三章的小地图光柱 `%BORDER%`、`%MAP%`、`%TIER%` 及红白珠改名 (`L3126`) 全部失效**。 2. **截断后续辅助模块**:命中 `5.5` 或 `5.6` 的珠宝与装备在 `L2763–2882` 终止后,位于其下方的 **`5.8 洗珠宝提示` (`L2942–2947`)**、**`5.9 手工词缀等级提示` (`L2950–2980`)** 以及 **`L3122` 珠宝转碎片提示** 全部被跳过;同时 `5.5`/`5.6` 共 `72` 条背包评测规则中冗余写入了地面小地图点 `%DOT-0A%`。 - **修复建议**: 1. 为 `L2049–2051`、`L2763–2847`、`L2853–2882`、`L2888–2939` 全部恢复末尾 `%CONTINUE%`; 2. 为 `5.6` (`L2853–2882`) 和 `5.7` (`L2888–2939`) 补齐 `!GROUND !EQUIPPED !MERC`(与 `5.5` 保持一致),并移除 `5.5`/`5.6` 中的 `%DOT-0A%`; 3. 同部位多分支互斥通过精确收窄条件实现(例如 `L2792` 通用头盔写成 `HELM !CIRC !BAR !DRU` 即自然与 `L2784–2785` 头环、`L2788–2790` 蛮头兽头互斥;物理+施法双修戒如 `L2763` vs `L2765` 在低优先级行加 `!(MINDMG+MAXDMG>16 OR ...)` 排除即可)。 ### 2.2 `[CNF-02 / P0]` `SHOW_GOODRARE` 极品亮金排在 `亮金装备词缀透视` 之前且无 `%CONTINUE%`,极品亮金反而丢失全部词缀标签 - **定位**:[L3285–3376](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L3285)(`潜在极品永久显示`,62 条,无 `%CONTINUE%`) vs [L3378–3997](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L3378)(`亮金装备词缀透视`,600+ 条,全带 `%CONTINUE%`) - **冲突原因与实际影响**: - 默认 `SHOW_GOODRARE=TRUE` 下,所有命中 4★/5★ 潜在极品组合的未鉴定亮金装备(项链、戒指、箭矢、盔甲、手套、鞋子、腰带、头环、头盔、盾牌、武器、专属装备)在 `L3287–3376` 直接匹配终止(无 `%CONTINUE%`),输出 `%GREEN%★ %NAME% %GREEN%★`。 - 而为未鉴定亮金追加 `[2法师]`、`[20%施法]`、`[300%增伤]`、`[40攻速]` 等词缀透视标签的 `L3378–3997` 却排在 `L3376` **之后**。这导致无论是掉在地上还是捡进背包未鉴定:**普通亮金能看到词缀透视标签,越是极品的 `SHOW_GOODRARE` 亮金反而一个词缀标签都看不到**! - **修复建议**:将整个 **`亮金装备词缀透视` 区块(`L3378–3997`,全部带 `%CONTINUE%`)上移至 `潜在极品永久显示`(`L3285–3376`,不带 `%CONTINUE%`)之前**。调整后:极品亮金会先累加所有命中词缀标签,随后命中 `SHOW_GOODRARE` 加上星级光柱/地图图标/音效并终止(不会被 `L4403–4440` 地面基础屏蔽隐藏);非极品亮金则在累加词缀标签后按 `FILTLVL` 正常走后续开关与地面屏蔽逻辑。 ### 2.3 `[CNF-03 / P1]` 珠宝自定义屏蔽开关 `HIDE_JEW1~4` 与 `FILTLVL` 逻辑冲突且漏写 `GROUND` - **定位**:[L157–160](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L157)、[L4000–4003](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4000)、[L4400–4401](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4400)、[L4443–4444](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4443) - **三重逻辑冲突**: 对比宝石(`L3090–3091`)、符文(`L3112–3114`)、护身符(`L3239–3244`)的手动屏蔽开关(均不绑定 `FILTLVL`),`L4400–4401` 与 `L4443–4444` 写成了 `HIDE_JEW1 jew RARE ILVL<68 !ID FILTLVL>4:` / `HIDE_JEW2 ... FILTLVL>5:`: 1. **默认均衡档 (`FILTLVL=4`) 下开启开关完全不屏蔽**:玩家在 `FILTLVL=1..4` 打开设置面板勾选 `HIDE_JEW1` 或 `HIDE_JEW3` 时,因不满足 `FILTLVL>4`,只会取消 `L4000/4002` 的星标,**地面未鉴定珠宝照常显示,开关失效**; 2. **严格档 (`FILTLVL=5/6`) 下默认不屏蔽低级垃圾珠宝**:由于 `HIDE_JEW1~4` 默认均为 `FALSE`,即便切到 `FILTLVL=5`(比较严格)或 `FILTLVL=6`(极其严格),地面 `<67` 级亮金珠和 `<85` 级单缀蓝珠也完全不会被过滤; 3. **漏写 `GROUND` 误伤背包**:当同时满足 `HIDE_JEW*=TRUE` 与 `FILTLVL>4/5` 时,因未写 `GROUND`,背包和仓库里存放的未鉴定珠宝名称也会被清空。 - **修复建议**:将手动开关与 `FILTLVL` 自动过滤解耦,并全部加上 `GROUND`: ```text // 亮金珠宝屏蔽(手动开关任意档生效;FILTLVL>4 自动屏蔽低级亮金珠,但保留词缀透视命中的好珠) ItemDisplay[jew RARE ILVL<67 !ID GROUND (HIDE_JEW1 OR (FILTLVL>4 !(GR_JEWS_DMG OR GR_JEWS_CAST OR GR_JEWS_STAT)))]: ItemDisplay[HIDE_JEW2 jew RARE ILVL>66 !ID GROUND]: // 魔法珠宝屏蔽(手动开关任意档生效;FILTLVL>4 自动屏蔽 ILVL<85 低级魔法珠) ItemDisplay[jew MAG ILVL<85 !ID GROUND (HIDE_JEW3 OR FILTLVL>4)]: ItemDisplay[HIDE_JEW4 jew MAG ILVL>84 !ID GROUND]: ``` ### 2.4 `[CNF-04 / P1]` 末尾白板兜底 `L4458` 漏判已穿戴与佣兵装备 (`EQUIPPED` / `MERC`),出城清空装备名称 - **定位**:[L4458–4473](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4458) - **问题分析**: - `L4458` 写了 `(ARMOR OR WEAPON OR QUIVER) (TOWN OR INVENTORY OR CUBE OR STASH OR GUILDVAULT OR TROPHYCASE) !GROUND FILTLVL>0`,漏掉了角色自身穿戴 (`EQUIPPED`) 与佣兵穿戴 (`MERC`); - 当角色 `CLVL>30`(或 `FILTLVL>1`)走出城镇 (`!TOWN`) 打开装备栏查看自己或佣兵穿戴的非符文之语镶嵌装(如黄宝石头、电珠盾)、白板底材或普通箭袋时,不会命中 `L4458`,而是直接穿透到末尾 `L4473`: `ItemDisplay[(ARMOR OR WEAPON OR QUIVER) NMAG !THROWPOTS ((CLVL>30 FILTLVL>0) OR FILTLVL>1)]:{%NAME%}` - 因 `L4473` 冒号后没有 `%NAME%`,**已穿戴装备的名称在城外会被直接抹成空白**(同理 `L4460` 劣质物品屏蔽也漏写了 `GROUND`,城外穿戴劣质开荒装同样会被清空名字)。 - **修复建议**: - `L4458` 直接简化为 `ItemDisplay[(ARMOR OR WEAPON OR QUIVER) !GROUND FILTLVL>0]:%NAME%{%NAME%}`(或补入 `OR EQUIPPED OR MERC`); - 为 `L4460` 和 `L4473` 补上 `GROUND`。 ### 2.5 `[CNF-05 / P1]` 开荒 0 孔弓拉苏克打孔提示 `L4372–4374` 误加 `%CONTINUE%`,落入 `L4473` 被空名隐藏 - **定位**:[L4371–4374](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4371) vs [L4473](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4473) - **问题分析**:同在第十节开荒佣兵底材区,长柄(`L4365–4366`)、长矛(`L4368–4369`)、4 孔弓弩(`L4371`)均不带 `%CONTINUE%`(命中即正常显示地面名称);唯独 `L4372–4374` 三条 0 孔弓(`Larzuk for 4 sockets`)末尾多写了 `%CONTINUE%`。当玩家处于 `FILTLVL=2` 或 `FILTLVL=1 且 CLVL>30` 时,未命中第 8 章高星底材的开荒 0 孔弓在 `L4372–4374` 继续向下执行,没有任何规则承接,最终撞上 `L4473`(`:{%NAME%}`),在地面变成空名隐藏无法拾取。 - **修复建议**:去掉 `L4372–4374` 末尾的 `%CONTINUE%`。 --- ## 三、覆盖不对、规则遮蔽与模块版本失步(Wrong Coverage, Shadowing & Build Desync) ### 3.1 `[COV-01 / P1]` 三组 `100%` 永不触发的死规则 / 同组互斥词缀 / 错用护身符词缀 1. **`L2774` 防御项链评测与 `L971` `Formula[RA_C]` 被前置规则 `100%` 遮蔽**: - [L2770](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2770) 无条件匹配 `RARE_NOTE amu (RARE OR CRAFT) ID PHYSISKILL ...`,[L2772](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2772) 无条件匹配 `RARE_NOTE amu (RARE OR CRAFT) ID CASTERSKILL ...`; - 紧随其后的 [L2774](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2774) 条件为 `RARE_NOTE amu (RARE OR CRAFT) ID (CASTERSKILL OR PHYSISKILL) STAT110>49 ...`,其匹配集合是 `L2770 ∪ L2772` 的严格子集,在任何写法下都会被上方两条规则拦截(若将 `L2774` 上移至 `L2770` 之前并限定高减毒/最大抗特化条件,或合并进 `RA_A/RA_B`,方可生效)。 2. **`L757–758` `Alias[BELT_5_4]` 与 `Alias[BELT_5_5]`(用于 `L3308` 5★ 亮金腰带)同组词缀互斥永假**: - [L757–758](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L757) 中,`PREFIX=982`(最大火抗)、`PREFIX=984`(最大毒抗)、`PREFIX=986`(最大电抗)、`PREFIX=988`(最大冰抗)属于互斥的同一前缀组,单件亮金腰带最多只能骰出其中 `1` 条; - 但 `BELT_5_4` 用空格 `AND` 要求同时具备 `3` 条最大抗前缀,`BELT_5_5` 要求同时具备 `2` 条最大抗前缀,`100%` 无法在亮金腰带上生成。应改为 `(PREFIX=982 OR PREFIX=984 OR PREFIX=986 OR PREFIX=988)` 搭配高单抗/高力量/高生命/FHR/减毒词缀组合。 3. **`L3165` 圣骑战斗元素超大护身符误用小护身符专属后缀**: - [L3165](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L3165) 写了 `ItemDisplay[cm3 MAG PREFIX=466 (SUFFIX=705 OR SUFFIX=717 OR SUFFIX=729)]:...`; - 其中 `SUFFIX=705/717/729` 是仅限小型护身符 (`cm1`) 的元素伤害后缀,不可能出现在超大护身符 (`cm3`) 上;对比紧邻 `L3166`(法师火焰板 `SUFFIX=721`),`L3165` 应改为超大护身符对应的元素伤后缀 `(SUFFIX=709 OR SUFFIX=721 OR SUFFIX=733)`。 ### 3.2 `[COV-02 / P1]` `5.5` 盾牌评测漏掉死灵法师专属盾 (`NECHEAD`),且 `DIN` 误覆盖圣骑双手剑、漏判圣骑盾技能前缀 - **定位**:[L2811–2814](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2811) - **三处覆盖偏差**: 1. **死灵盾完全轮空**:`L2811–2812` 用 `SHIELD !PALASHIELD !NECHEAD` 排除了圣骑盾与死灵盾,但下方 `L2813–2814` 只补写了圣骑盾,**没有任何规则覆盖死灵法师专属盾 (`NECHEAD`)**,导致所有亮金/手工死灵盾无评分; 2. **`DIN` 误覆盖圣骑双手剑**:`L2813–2814` 写的是 `DIN` 而非 `PALASHIELD`——PD2 新增的圣骑专属双手剑(`crs2`、`9cr2`、`7cr2`)同样属于 `DIN`,命中 `L2813–2814` 后会被当成盾牌按格挡公式 `RSH_A`/`RSH_B` 评分(若恢复 `%CONTINUE%` 还会与武器评分重复叠加); 3. **圣骑盾技能前缀写错**:`L2814` 写了 `(PREFIX~562-563 OR PREFIX~466-467)`,其中 `562-563` 是项链/头环的圣骑技能前缀,圣骑盾实际的 `+1/+2 圣骑士技能` 前缀应包含 `PREFIX~566-567`(与 `L3776–3777` 亮金盾牌词缀透视一致)。 ### 3.3 `[COV-03 / P2]` `5.9` 权杖 `SCEPTER` 在 `CRAFTALVL=75` 掉入盲区 + `Alias[CA_GOOD]` 自相矛盾冗余 - **定位**:[L2956–2958](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2956) - **问题详情**: 1. `CA_ALL` 要求 `(WEAPON CRAFTALVL>75)`(即 `>=76`),`CA_GOOD` 排除了 `!SCEPTER`,`CA_SKILL` 只覆盖 `(SCEPTER CRAFTALVL~60-74)`,导致 **`CRAFTALVL=75` 的权杖同时落空三个别名**,悬停仅输出无颜色、无括号的裸文本 `手工词缀等级: 75`。将 `CA_SKILL` 改为 `(SCEPTER CRAFTALVL~60-75)`(或归入 `CA_GOOD`)即可闭合区间。 2. `L2957` `Alias[CA_GOOD]` 中 `((WEAPON !(SCEPTER OR STAFF OR WAND OR SOR OR BOW OR XBOW OR (ZON JAV) OR DAGGER OR CLUB OR TMACE OR (THROWING AXE)) CRAFTALVL~51-75) OR ((BOW OR XBOW OR (ZON JAV) OR DAGGER OR CLUB OR TMACE OR (THROWING AXE)) CRAFTALVL~51-75))` 将同一组 7 类武器先排除又在同区间 `51-75` 原样 `OR` 回来,可直接化简为 `(WEAPON !(SCEPTER OR STAFF OR WAND OR SOR) CRAFTALVL~51-75)`。 ### 3.4 `[COV-04 / P2]` 第 `9` 节注入底材提示覆盖脱节 + `KNOWN_CODES` 漏收 `irrn` - **定位**:[L4210–4275](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4210);[L1865](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1865) vs [L4393](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4393) - **问题详情**: 1. 第 `9` 节下半部分定义了 `29` 个 `*_INFUSION` 显示规则(其中 `CHEST_INFUSION` 默认 `TRUE`),但上半部分追加 `▋`/`■` 注入标识与等级说明的 `L4210–4232` **漏掉了 `CHEST_INFUSION`、`SIN_INFUSION_3`、`WEAPON_INFUSION_1/2`、`SHIELD_INFUSION_1/2` 共 6 类注入底材**(导致默认开启的 `CHEST_INFUSION` 掉在地上只是普通白字无任何注入标记);反之 `L4210–4231` 的头环/专属底材提示又未绑定各自的 `*_INFUSION` 开关(开关为 `FALSE` 时背包内所有无孔白板头环/专属底材仍被强加 `▋`/`■` 注入后缀)。 2. `L1865` 匹配了 `(imrn OR irrn)`,但 `L4393` `Alias[KNOWN_CODES]` 与 `L888` 掉落音效仅写了 `imrn` 漏写了 `irrn`(补入 `irrn` 可避免潜在未知物品误报)。 ### 3.5 `[COV-05 / P0]` `build/` 模块化源码停留在 `S14V1.70`,且 `build/build.ps1` 输出路径与换行配置仍错位 - **定位**:`build/00..39-*.txt` vs 根目录 `BadWolf-LootFilter.txt`;[build/build.ps1 L59–61](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/build/build.ps1#L59)、[L114–116](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/build/build.ps1#L114)、[L132–133](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/build/build.ps1#L132) - **三处工程问题**: 1. **模块源码严重滞后 `29` 个小版本**:`build/00..39-*.txt` 拼接后仍为 `S14V1.70`(`4,406` 行、`538,366` 字节),而根目录 `BadWolf-LootFilter.txt` 已迭代至 `S14V1.99`(`4,474` 行、`554,217` 字节,累计 `1,853` 行 diff)。此时一旦运行构建同步,会直接将 `V1.71–V1.99` 的全部更新覆盖回退为 `V1.70`。 2. **`$MergedPath` 仍指向 `build/` 子目录**:`build.ps1` 虽然新增了 `L86–89` 平铺模块探测,但 `L59–61` `$Root = $PSScriptRoot; $MergedPath = Join-Path $Root 'BadWolf-LootFilter.txt'` 未同步上移一层父目录,`check`/`build` 实际比对和写入的是 `build/BadWolf-LootFilter.txt` 而非仓库根目录主文件。 3. **缺少 `.gitattributes` 与 `item_codes.txt` 跳过白名单**:仓库未提交 `.gitattributes`(`*.txt text eol=crlf`),Git 默认按纯 `LF` 检出时 `L132–133` 会对全部 `40` 个模块报“存在裸 LF 换行”中止 `build`;且 `L114–116` 未排除 `item_codes.txt`,每次运行都会对 `item_codes.txt` 打印黄色非模块警告。 --- ## 四、条件与注释不符(Condition vs. Comment Mismatches) ### 4.1 `[CMT-01 / P1]` 第三章 `57` 条护身符规则注释均写明“已鉴定”,但条件全部漏写 `ID`(剧透词缀、绕过屏蔽并截断后续提示) - **定位**:[L3152–3236](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L3152) vs [L3239–3244](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L3239) - **不一致证据与连锁后果**: - `L3152`(`//已鉴定的有用巨型神符`)、`L3191`(`//已鉴定的有用大型神符`)、`L3214`(`//已鉴定的有用小型神符`)三处分节注释均明确声明仅匹配**已鉴定**护身符(且紧随其后的元素伤护身符 `L3189`、`L3212`、`L3230` 均写了 `MAG ID`); - 但 `L3153–3186`(`29` 条)、`L3192–3209`(`18` 条)、`L3215–3227`(`10` 条)共 **`57` 条规则全部漏写了 `ID`**: 1. **未鉴定地面剧透并绕过 `HIDE_CHAM1~6` 屏蔽开关**:未鉴定护身符掉在地上时即命中这 `57` 条规则直接改名终止,导致下方 `L3239–3244` 的 `HIDE_CHAM1~6` 屏蔽开关对词缀护身符完全失效; 2. **终结规则仍截断 `Veng` 与洗板提示**:`L3177–3186`、`L3200–3209`、`L3219–3227` 未加 `%CONTINUE%`,双词缀元素神符(如高电伤+7MF 小符)仍无法走到 `L3189/3212/3230` 的 `Veng` 提示,也无法走到 `L3233–3236` 的 `91+` 洗符提示; 3. **洗护身符文案误套洗珠宝规则**:`L3232` 注释写 `//91级以上可以洗的超大型护身符`,但 `L3235` 写成了 `90+ 护身符 必定双缀`——`85+ 必定双缀` 仅适用于魔法珠宝,魔法护身符在任何等级都不是必定双缀(91+ 超大符的核心价值是可洗出 `41–45 生命` 词缀)。 - **修复建议**:为全部 `57` 条已鉴定护身符规则补齐 `ID` 并在收尾分支补 `%CONTINUE%`(收尾补一条 `ItemDisplay[(cm1 OR cm2 OR cm3) MAG ID]:%NAME%{%NAME%}` 承接),同时将 `L3233–3236` 文案修正为 91+ 超大符可洗 41–45 生命说明。 ### 4.2 `[CMT-02 / P1]` 注入开关 `THROW_INFUSION_1/2` 注释写明“无孔无形”,但规则漏写 `ETH` - **定位**:[L227–228](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L227) vs [L4252–4253](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4252) - **不一致详情**:`L227–228` 开关标签为 `@显示无孔无形鬼魂尖枪@`、`@显示无孔无形翼鱼叉@`(同系列亮金 `L4030–4031` 与魔法 `L4063–4064` 均正确带有 `ETH`),但 `L4252–4253` 实际条件仅写了 `NMAG (glv OR 9gl OR 7gl) SOCK=0 GROUND` 与 `(tsp OR 9ts OR 7ts)`,漏写了 `ETH`,开启开关后会把大量无价值的有形普通标枪一并显示。 - **修复建议**:在 `L4252` 与 `L4253` 中补上 `ETH`。 ### 4.3 `[CMT-03 / P2]` 亮金珠宝开关 `HIDE_JEW1/2` 注释写明 `ILVL<67` / `ILVL>66`,规则却写成 `<68` / `>67` - **定位**:[L157–158](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L157) vs [L4002–4003](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4002)、[L4400–4401](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4400) - **不一致详情**:`L157–158` 注释写明 `@屏蔽ILVL<67亮金珠宝@ 说明:物品等级大于66以确保可以出40ED词缀`、`@屏蔽ILVL>66亮金珠宝@`(且第二章 `5.8` `L2943` 洗珠宝提示亦以 `REROLLALVL>65` 即 `>=66` 为界),但 `L4002–4003` 与 `L4400–4401` 全部写成了 `ILVL<68` 与 `ILVL>67`,导致 `ILVL=67` 的亮金珠宝与注释描述相悖被归入低级档。 - **修复建议**:将 `L4002`、`L4400` 改为 `ILVL<67`,`L4003`、`L4401` 改为 `ILVL>66`(或若以 66 级为界则改为 `ILVL<66` / `ILVL>65` 并同步更新开关文字)。 ### 4.4 `[CMT-04 / P2]` `5.5` 腰带注释与触发门槛包含 `IAS` 和 `冰冻减半`,但 `Formula[RBE_A]` 漏算得分 - **定位**:[L2804–2805](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L2804) vs [L1006](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L1006) - **不一致详情**:`L2804` 注释明确列出 `腰带:重要项任一(FCR/FHR/IAS/冰冻减半/高力/高血/技能/抗性>=40/物免%/最大抗)`,`L2805` 触发条件也包含 `IAS>4 OR STAT118>0`,但 `L1006` `Formula[RBE_A]` 完全未把 `(IAS-IF(STAT360==34,10,0))` 与 `(STAT118-IF(STAT360==77,1,0))` 纳入计分(计 `0` 分)。 - **修复建议**:在 `Formula[RBE_A]` 中补入 `(IAS-IF(STAT360==34,10,0))*0.075` 与 `(STAT118-IF(STAT360==77,1,0))*0.8` 等对应权重。 ### 4.5 `[CMT-05 / P2]` 第 `10` 节开荒过滤与第 `8` 节底材注释的多处图文不符 - **定位**:[L4281–4284](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4281)、[L4311–4313](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4311)、[L4323–4324](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L4323)、[L433–436](https://git.projectdiablo2.cn/lonelywolf/ZYLPD2-Filter-Lonelywolf/src/commit/fb2cf351872e197470cf8c3f0a5e12c38b9d0089/BadWolf-LootFilter.txt#L433) - **不一致清单**: 1. `L4281–4282`:注释写 `// FCR法球/法杖/魔杖/权杖/棍棒/头环/项链/戒指`,但条件只写了 `WEAPON RARE`(漏掉了 `CIRC`、`amu`、`rin`,又把刀剑斧枪等非施法武器囊括进来,且漏写 `!ID`);应改为 `(SOR OR STAFF OR WAND OR SCEPTER OR CLUB OR CIRC OR amu OR rin) RARE !ID ...`。 2. `L4283–4284`:注释写 `// 20+mf装备`,但条件仅写了 `GLOVES RARE SUFFIX~287-288`(只匹配亮金手套,不含鞋子/头环/戒指/项链,且 `SUFFIX=287` 为 `16–25% MF`)。 3. `L4311–4313`:注释写 `//生命、法力/减半冰冻时间`,但输出仅写 `%ORANGE%生命/法力`,仅骰出 `SUFFIX=182`(冰冻减半)的法球也会被显示成 `生命/法力`。 4. `L4323–4324`:死灵开荒白板对比法师 (`L4293–4294`) 与刺客 (`L4316–4317`)(普通难度 `>1`,全难度 `>2` 且限定职业底材),`L4324` 仍写 `>1` 且未限定 `(WAND OR NEC)`,导致 `L4323` 在非 1 孔时被 `L4324` 完全冗余覆盖。 5. `L433–436`:`Alias[SPEARBASE4_1]` / `SPEARBASE4_2` 上方注释仍写 `15ED`,而实际条件已是 PD2 满变 `ED=20`。 --- ## 五、建议修复落地顺序(Checklist) 1. **第一步(先对齐 `build/` 模块基准,`COV-05`)**:先将当前根目录 `S14V1.99` 的 `BadWolf-LootFilter.txt` 反向拆回 `build/00..39-*.txt`,修复 `build/build.ps1` 的 `$MergedPath`(指向父目录 `<repo>/BadWolf-LootFilter.txt`)并新增 `.gitattributes`(`*.txt text eol=crlf`),防止误跑 `build` 回退掉 `V1.71–V1.99` 的更新。 2. **第二步(修复两条 `P0` 规则断链,`CNF-01` & `CNF-02`)**: - 为 `L2049–2051`、`L2763–2939` 共 `121` 条评测规则补回 `%CONTINUE%`(并为 `5.6`/`5.7` 补 `!GROUND !EQUIPPED !MERC`、移除冗余 `%DOT-0A%`,收窄同部位重叠条件); - 将 `亮金装备词缀透视`(`L3378–3997`)整体上移至 `SHOW_GOODRARE`(`L3285–3376`)之前。 3. **第三步(修复 `8` 项 `P1` 覆盖/屏蔽/格式/注释问题)**:补齐 `5.9` 头环 `!CIRC`(`FMT-01`)、可能孔数 `MAXSOCKETS>0` 与 `!INF`(`FMT-02`)、解耦 `HIDE_JEW1~4` 与 `FILTLVL` 并加 `GROUND`(`CNF-03`)、白板兜底放行 `EQUIPPED`/`MERC`(`CNF-04`)、去掉 `L4372–4374` `%CONTINUE%`(`CNF-05`)、修正 3 组死规则(`COV-01`)、补上死灵盾评测与 `PALASHIELD`(`COV-02`)、补齐 `57` 条神符 `ID` 与 `THROW_INFUSION_1/2` `ETH`(`CMT-01`/`CMT-02`)。 4. **第四步(清理 `9` 项 `P2` 细节)**:修正 `/8` 分母与 `MA_A` 上限、`MAPTIER=0` `%NAME%`、维特之脚 `!leg`、孤立竖线与 `%CL%` 颜色重置、权杖 `75` 级盲区、第 9 节注入标识、`irrn` 收录、`HIDE_JEW1/2` `67` 级边界、`RBE_A` 腰带公式权重及第 10 节开荒条件。
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: lonelywolf/ZYLPD2-Filter-Lonelywolf#4
No description provided.