S14V1.52: 修复条件优先级/底材星级顺序/估值公式等多项问题,反向同步 build 模块并新增静态检查脚本 #1

Closed
troytt wants to merge 1 commits from troytt/ZYLPD2-Filter-Lonelywolf:fix/s14-v1.52-audit-and-build-sync into main
First-time contributor

你好!对照 ZYLPD2 BH.dll 规则解析引擎及 S14 pd2data.mpq 数据表(CubeMain.txt / ItemStatCost.txt / Misc.txt)对 BadWolf-LootFilter.txt (S14V1.51) 进行了全量静态审计,修复了已确认的语法、优先级、底材星级遮蔽与评分公式问题,并将当前主文件完整反向同步回 build/00..39-*.txt,同时附带了一个零依赖的静态检查与模块同步脚本 build/lint_filter.py。


一、主要修复内容

1. 条件语法错误与 BH.dll 等优先级(隐式 AND = OR)越界修复

  • 粘连与非法比较符修复:
    • Alias[CLUBBASE3_1]:SK224=3OR 补空格为 SK224=3 OR
    • Alias[RIN_CAST_5_1]:)SUFFIX=174 补空格为 ) SUFFIX=174
    • 暗金巨斧 巨大无比 价值提示:(gix OR 9gi 7gi) OR STAT91>19 修正为 (gix OR 9gi OR 7gi) STAT91>19(消除将整组前件 OR 化导致的任意 STR>19 暗金误触发)
    • 亮金圣骑盾过滤:PREFIX=~421-422 修正为 PREFIX~421-422
    • 第 10 章开荒 0 孔长柄规则:(scy OR pax hal ... 7h7 7wc) 补齐两处遗漏的 OR
  • 等优先级括号补齐(BH.dll 中空格隐式 AND 与 OR 优先级相同、从左到右求值):
    • Alias[RIN_UBER_4_3]:PREFIX=334 OR PREFIX=953 (...) 补括号为 (PREFIX=334 OR PREFIX=953) (...),防止任意带 PREFIX=334 单词缀的戒指直接晋升 4 星红光
    • Alias[BOOT_5_1~5_3] / Alias[BOOT_4_1~4_3]:SUFFIX~396-397 OR SUFFIX=1040 外层统一补括号 (SUFFIX~396-397 OR SUFFIX=1040),防止任意仅带高跑后缀的鞋子绕过抗性/属性要求误报 4~5 星
    • 精华地面过滤:(tes OR ceh OR bet OR fed GROUND) FILTLVL>2 修正为 (tes OR ceh OR bet OR fed) GROUND FILTLVL>2,修复 FILTLVL>2 时背包/箱子内前三种精华名字被置空不可见的问题
  • 词缀互斥与职业/场景条件笔误:
    • Alias[GLOVE_SKILL_4_1]:PREFIX=392 PREFIX=412 之间补 OR(同词缀组无法同时出现)
    • 第 10 章开荒圣骑权杖与圣骑盾全抗规则:3 处误写的 NECROMANCER 修正为 PALADIN
    • 第 8.1 章 1 星头盔底材:TOWN 修正为 GROUND,恢复野外掉落显示
    • 第 3.3 节非底材谜盒/腐化可能孔数提示:11 条规则补齐 ID 条件,避免未鉴定暗金/绿装直接剧透天生是否有孔

2. 第 8 章符文之语底材星级顺序重构与克隆 Alias 修复

  • 全小节星级反序修复(8.1 ~ 8.4.12):
    • 原 8.1~8.4 各小节按 0星 -> 1星 -> 2星 -> 3星 -> 4星 排列且无 %CONTINUE%,由于大量高星底材条件是低星底材的子集(如 4 孔 15ED 巨神剑同时满足 SWORDBASE2_4 与 SWORDBASE3_2、3+3 权杖同时满足 2 星与 4 星),在 FILTLVL~1-3 下会被排在前面的低星规则提前截胡,丢失高星紫色边框与 SOUNDID-4721 掉落音效。
    • 现已将 8.1 ~ 8.4.12 全部小节统一调整为 4星 -> 3星 -> 2星 -> 1星 -> 0星 严格递减匹配;移除 8.4.8 魔杖 3 星多余的 %CONTINUE% 及 1/2 星错位的边框等级;补回定义后漏引用的 SWORDBASE1_2 与 SPEARBASE1_2;修正 8.4.11/8.4.12 章节编号与投掷武器 3星 样式标注。
  • 底材与词缀克隆 Alias 修正:
    • SWORDBASE2_4 补 ED>9、SWORDBASE3_2 补 ED>15(与注释 9~14ED / 15ED 对齐)
    • WANDBASE2_2:SK86=3(吸引)修正为 SK84=3(3 骨矛+3 牙)
    • SCEPTERBASE4_4���(SK125>0 OR SK123>0) 修正为 (SK125=3 OR SK123=3),与 3 星 SCEPTERBASE3_5 区分
    • SHIELD_SKILL_4_2:参照 SHIELD_DMG_4_2 合并两个后缀括号组,修复要求 4 个后缀的不可达条件
    • JEW_CAST_2_1:参照 JEW_EK_2_2 合并为 2 词缀组合,消除与 JEW_CAST_3_1 完全重复

3. 价值评分公式、药水动态阈值与 UI 开关/文本宏修复

  • 腐化与价值评测公式校准(对照 S14 CubeMain.txt & ItemStatCost.txt):
    • Formula[C_WAA](移除 28/12 重复加分)、Formula[C_SIN](移除 6/5/77 重复加分)、Formula[C_AB](移除 15 重复加分)
    • Formula[RBE_A]:腰带全属性腐化修正为 STAT360==65(原误写 68 触发双重扣分),并移除 *0.89 组内重复的 STAT360==51
    • 天堂装束:第二个 (FRES-10)/80 修正为 (PRES-10)/80
    • 守护天使 / 钢铁甲壳:STAT350==50 修正为 STAT360==50,+1 全技能 腐化还原基数统一修正为 (ALLSK-2)*2,守护天使毒抗上限腐化修正为 STAT360==56
    • 火焰号叫:AND(MULTI151,102==27,0.5,0)(含 0 恒为 0)修正为 IF(MULTI151,102==27,0.5,0)
    • 衔尾蛇之戒:第二个 STAT360==68 修正为戒指 LAEK 腐化 STAT360==8
    • 塔格奥之翼:火抗腐化 ID 由毒抗 39/56 修正为火抗 36/53
    • 亮金胸甲:首条强化分母 /7 修正为 /3;亮金双手法杖:冰/电法杖腐化公式修正为 FORMULAC_STC / FORMULAC_STD
    • 蓝色附魔冰甲法球:内联公式技能由 SK42+TABSK8 修正为 SK40+TABSK10(冰系技能页)
  • 药水开关与全血蓝区间精确公式:
    • 修复 !SHOW_MP5 hp5 笔误为 !SHOW_HP5 hp5
    • 新增 Formula[HP_LOW80]:IF(CHARSTAT6*5<CHARSTAT7*4,1,0) 与 Formula[MP_LOW80]:IF(CHARSTAT8*5<CHARSTAT9*4,1,0) 替代原先 28 段硬编码折线(修复原 500~550 血蓝档位 10240 少写一个 0 的漏洞,且支持超过 5000 血蓝的角色)
  • BH 面板开关去重、S14 地图与可堆叠材料兼容、输出宏修复:
    • 修正 SHOW_RAREAMA_5/6、SHOW_MAGAMA_5/6、SHOW_RAREWEAPON_1、SHOW_MAGWEAPON_1 的 @按键名@ 重复标签
    • Alias[KNOWNMAPS] 补充 S14 地图代码 t61、t62、t99
    • 手工宝石说明(gpv~skz)与符文修理提示(r08/r09/r33)补充可堆叠形态 *s,修正闪耀手工盔甲 Ei -> El、丰饶手工项链补 [18]
    • 修复 %GRAY%%Steel、抽动挣扎%%CL%、碎骨%%CL%、神蛇之羽CL%、%%LIGHT_GRAY% 等宏拼写问题,以及暗金毁灭小护身符悬停描述漏写 %CL%%NAME%、注入头盔图标 ■ 对齐问题

二、构建分片反向同步与静态检查脚本 (build/lint_filter.py)

  • build/00..39-*.txt 全量反向同步:此前 build/ 目录停留在 V1.45,现已将修复后的 BadWolf-LootFilter.txt (V1.52) 无损反向拆分回全部 40 个分片文件,在 Windows 下运行 build/过滤器生成脚本.bat 生成的结果与根目录 BadWolf-LootFilter.txt 逐字节 100% 一致。
  • 新增 build/lint_filter.py(仅依赖 Python 3 标准库):
    • python build/lint_filter.py:一键检查 build/ 分片同步一致性、指令语法、BH 面板重名开关、条件括号粘连与 AND/OR 等优先级陷阱、公式恒零/重复腐化 ID、残缺颜色宏以及第 8 章底材星级递减顺序(当前 0 错误, 0 警告)
    • python build/lint_filter.py --sync-build:直接编辑根目录 BadWolf-LootFilter.txt 后,一键反向拆分回写 build/00..39-*.txt
    • python build/lint_filter.py --merge-build:修改 build/*.txt 分片后,跨平台一键合并生成 BadWolf-LootFilter.txt
你好!对照 ZYLPD2 `BH.dll` 规则解析引擎及 S14 `pd2data.mpq` 数据表(`CubeMain.txt` / `ItemStatCost.txt` / `Misc.txt`)对 `BadWolf-LootFilter.txt` (`S14V1.51`) 进行了全量静态审计,修复了已确认的语法、优先级、底材星级遮蔽与评分公式问题,并将当前主文件完整反向同步回 `build/00..39-*.txt`,同时附带了一个零依赖的静态检查与模块同步脚本 `build/lint_filter.py`。 --- ### 一、主要修复内容 #### 1. 条件语法错误与 `BH.dll` 等优先级(隐式 `AND` = `OR`)越界修复 * **粘连与非法比较符修复**: * `Alias[CLUBBASE3_1]`:`SK224=3OR` 补空格为 `SK224=3 OR` * `Alias[RIN_CAST_5_1]`:`)SUFFIX=174` 补空格为 `) SUFFIX=174` * 暗金巨斧 **巨大无比** 价值提示:`(gix OR 9gi 7gi) OR STAT91>19` 修正为 `(gix OR 9gi OR 7gi) STAT91>19`(消除将整组前件 `OR` 化导致的任意 `STR>19` 暗金误触发) * 亮金圣骑盾过滤:`PREFIX=~421-422` 修正为 `PREFIX~421-422` * 第 10 章开荒 0 孔长柄规则:`(scy OR pax hal ... 7h7 7wc)` 补齐两处遗漏的 `OR` * **等优先级括号补齐**(`BH.dll` 中空格隐式 `AND` 与 `OR` 优先级相同、从左到右求值): * `Alias[RIN_UBER_4_3]`:`PREFIX=334 OR PREFIX=953 (...)` 补括号为 `(PREFIX=334 OR PREFIX=953) (...)`,防止任意带 `PREFIX=334` 单词缀的戒指直接晋升 4 星红光 * `Alias[BOOT_5_1~5_3]` / `Alias[BOOT_4_1~4_3]`:`SUFFIX~396-397 OR SUFFIX=1040` 外层统一补括号 `(SUFFIX~396-397 OR SUFFIX=1040)`,防止任意仅带高跑后缀的鞋子绕过抗性/属性要求误报 4~5 星 * 精华地面过滤:`(tes OR ceh OR bet OR fed GROUND) FILTLVL>2` 修正为 `(tes OR ceh OR bet OR fed) GROUND FILTLVL>2`,修复 `FILTLVL>2` 时背包/箱子内前三种精华名字被置空不可见的问题 * **词缀互斥与职业/场景条件笔误**: * `Alias[GLOVE_SKILL_4_1]`:`PREFIX=392 PREFIX=412` 之间补 `OR`(同词缀组无法同时出现) * 第 10 章开荒圣骑权杖与圣骑盾全抗规则:3 处误写的 `NECROMANCER` 修正为 `PALADIN` * 第 8.1 章 1 星头盔底材:`TOWN` 修正为 `GROUND`,恢复野外掉落显示 * 第 3.3 节非底材谜盒/腐化可能孔数提示:11 条规则补齐 `ID` 条件,避免未鉴定暗金/绿装直接剧透天生是否有孔 #### 2. 第 8 章符文之语底材星级顺序重构与克隆 `Alias` 修复 * **全小节星级反序修复(8.1 ~ 8.4.12)**: * 原 8.1~8.4 各小节按 `0星 -> 1星 -> 2星 -> 3星 -> 4星` 排列且无 `%CONTINUE%`,由于大量高星底材条件是低星底材的子集(如 4 孔 15ED 巨神剑同时满足 `SWORDBASE2_4` 与 `SWORDBASE3_2`、3+3 权杖同时满足 2 星与 4 星),在 `FILTLVL~1-3` 下会被排在前面的低星规则提前截胡,丢失高星紫色边框与 `SOUNDID-4721` 掉落音效。 * 现已将 `8.1 ~ 8.4.12` 全部小节统一调整为 **`4星 -> 3星 -> 2星 -> 1星 -> 0星`** 严格递减匹配;移除 `8.4.8` 魔杖 3 星多余的 `%CONTINUE%` 及 1/2 星错位的边框等级;补回定义后漏引用的 `SWORDBASE1_2` 与 `SPEARBASE1_2`;修正 `8.4.11/8.4.12` 章节编号与投掷武器 `3星` 样式标注。 * **底材与词缀克隆 `Alias` 修正**: * `SWORDBASE2_4` 补 `ED>9`、`SWORDBASE3_2` 补 `ED>15`(与注释 9~14ED / 15ED 对齐) * `WANDBASE2_2`:`SK86=3`(吸引)修正为 `SK84=3`(3 骨矛+3 牙) * `SCEPTERBASE4_4`���`(SK125>0 OR SK123>0)` 修正为 `(SK125=3 OR SK123=3)`,与 3 星 `SCEPTERBASE3_5` 区分 * `SHIELD_SKILL_4_2`:参照 `SHIELD_DMG_4_2` 合并两个后缀括号组,修复要求 4 个后缀的不可达条件 * `JEW_CAST_2_1`:参照 `JEW_EK_2_2` 合并为 2 词缀组合,消除与 `JEW_CAST_3_1` 完全重复 #### 3. 价值评分公式、药水动态阈值与 UI 开关/文本宏修复 * **腐化与价值评测公式校准(对照 S14 `CubeMain.txt` & `ItemStatCost.txt`)**: * `Formula[C_WAA]`(移除 `28/12` 重复加分)、`Formula[C_SIN]`(移除 `6/5/77` 重复加分)、`Formula[C_AB]`(移除 `15` 重复加分) * `Formula[RBE_A]`:腰带全属性腐化修正为 `STAT360==65`(原误写 `68` 触发双重扣分),并移除 `*0.89` 组内重复的 `STAT360==51` * **天堂装束**:第二个 `(FRES-10)/80` 修正为 `(PRES-10)/80` * **守护天使 / 钢铁甲壳**:`STAT350==50` 修正为 `STAT360==50`,`+1 全技能` 腐化还原基数统一修正为 `(ALLSK-2)*2`,守护天使毒抗上限腐化修正为 `STAT360==56` * **火焰号叫**:`AND(MULTI151,102==27,0.5,0)`(含 `0` 恒为 `0`)修正为 `IF(MULTI151,102==27,0.5,0)` * **衔尾蛇之戒**:第二个 `STAT360==68` 修正为戒指 LAEK 腐化 `STAT360==8` * **塔格奥之翼**:火抗腐化 ID 由毒抗 `39/56` 修正为火抗 `36/53` * **亮金胸甲**:首条强化分母 `/7` 修正为 `/3`;**亮金双手法杖**:冰/电法杖腐化公式修正为 `FORMULAC_STC` / `FORMULAC_STD` * **蓝色附魔冰甲法球**:内联公式技能由 `SK42+TABSK8` 修正为 `SK40+TABSK10`(冰系技能页) * **药水开关与全血蓝区间精确公式**: * 修复 `!SHOW_MP5 hp5` 笔误为 `!SHOW_HP5 hp5` * 新增 `Formula[HP_LOW80]:IF(CHARSTAT6*5<CHARSTAT7*4,1,0)` 与 `Formula[MP_LOW80]:IF(CHARSTAT8*5<CHARSTAT9*4,1,0)` 替代原先 28 段硬编码折线(修复原 `500~550` 血蓝档位 `10240` 少写一个 `0` 的漏洞,且支持超过 `5000` 血蓝的角色) * **BH 面板开关去重、S14 地图与可堆叠材料兼容、输出宏修复**: * 修正 `SHOW_RAREAMA_5/6`、`SHOW_MAGAMA_5/6`、`SHOW_RAREWEAPON_1`、`SHOW_MAGWEAPON_1` 的 `@按键名@` 重复标签 * `Alias[KNOWNMAPS]` 补充 S14 地图代码 `t61`、`t62`、`t99` * 手工宝石说明(`gpv`~`skz`)与符文修理提示(`r08`/`r09`/`r33`)补充可堆叠形态 `*s`,修正闪耀手工盔甲 `Ei` -> `El`、丰饶手工项链补 `[18]` * 修复 `%GRAY%%Steel`、`抽动挣扎%%CL%`、`碎骨%%CL%`、`神蛇之羽CL%`、`%%LIGHT_GRAY%` 等宏拼写问题,以及暗金毁灭小护身符悬停描述漏写 `%CL%%NAME%`、注入头盔图标 `■` 对齐问题 --- ### 二、构建分片反向同步与静态检查脚本 (`build/lint_filter.py`) * **`build/00..39-*.txt` 全量反向同步**:此前 `build/` 目录停留在 `V1.45`,现已将修复后的 `BadWolf-LootFilter.txt` (`V1.52`) 无损反向拆分回全部 40 个分片文件,在 Windows 下运行 `build/过滤器生成脚本.bat` 生成的结果与根目录 `BadWolf-LootFilter.txt` **逐字节 100% 一致**。 * **新增 `build/lint_filter.py`**(仅依赖 Python 3 标准库): * `python build/lint_filter.py`:一键检查 `build/` 分片同步一致性、指令语法、BH 面板重名开关、条件括号粘连与 `AND`/`OR` 等优先级陷阱、公式恒零/重复腐化 ID、残缺颜色宏以及第 8 章底材星级递减顺序(当前 **0 错误, 0 警告**) * `python build/lint_filter.py --sync-build`:直接编辑根目录 `BadWolf-LootFilter.txt` 后,一键反向拆分回写 `build/00..39-*.txt` * `python build/lint_filter.py --merge-build`:修改 `build/*.txt` 分片后,跨平台一键合并生成 `BadWolf-LootFilter.txt`
troytt added 1 commit 2026-10-28 07:38:08 +00:00
5f5b19bd57 S14V1.52: 修复条件优先级/底材星级顺序/估值公式等多项问题,反向同步build分片并新增静态Linter
1. 条件语法与BH等优先级修复:
   - 修复 CLUBBASE3_1(SK224=3OR)、RIN_CAST_5_1()SUFFIX=174)、L2496(多余OR与漏OR)、L3288(PREFIX=~)、L4300(漏2处OR) 等语法解析错误
   - 修复 RIN_UBER_4_3、BOOT_5_1~BOOT_4_3、L2046 精华地面隐藏规则因隐式AND与OR等优先级导致的越界误判/误隐藏
   - 修复 GLOVE_SKILL_4_1 漏 OR 导致词缀互斥死条件
   - 修复第10章开荒圣骑权杖/圣骑盾误绑 NECROMANCER 为 PALADIN,及第8.1章 1星头盔误绑 TOWN 为 GROUND
   - 修复 3.3 非底材谜盒/腐化打孔提示漏判 ID 导致未鉴定暗金/绿装剧透孔数

2. 第8章符文之语底材星级顺序与克隆Alias修复:
   - 将 8.1~8.4.12 全部小节统一调整为高星在前、低星在后(4星->3星->2星->1星->0星),消除低星规则提前截胡高星底材音效/边框及 8.4.8 魔杖 %CONTINUE% 污染问题
   - 补回遗漏引用的 SWORDBASE1_2 与 SPEARBASE1_2,修正章节编号与投掷武器星级标注
   - 修复 SWORDBASE2_4/3_2(ED区间)、WANDBASE2_2(SK84骨矛)、SCEPTERBASE4_4(3级光环)、SHIELD_SKILL_4_2(2+2后缀合并)、JEW_CAST_2_1(2词缀合并)

3. 价值评分公式、药水动态阈值与UI开关/文本宏修复:
   - 修复 C_WAA、C_SIN、C_AB、RBE_A 腐化词缀重复计分与腰带全属性 ID(STAT360==65)
   - 修复 天堂装束(PRES)、天使甲/钢铁甲壳(STAT360==50 与 (ALLSK-2)*2 及毒抗上限腐化56)、火焰号叫(IF替代恒零AND)、衔尾蛇之戒(LAEK腐化8)、塔格奥盾(火抗腐化36/53)、亮金胸甲(/3分母)、亮金法杖(冰/电腐化公式错位)、冰强法球(SK40+TABSK10)
   - 修复 !SHOW_MP5 误控 hp5,新增 Formula[HP_LOW80]/Formula[MP_LOW80] 精确覆盖全血蓝上限区间
   - 修正 5 组 BH 面板重名开关(@按键名@),补充 S14 地图代码(t61/t62/t99)及可堆叠宝石/符文手工修理提示(*s),修复残缺颜色/换行宏与毁灭小护身符描述吞名

4. 构建模块反向同步与静态检查器:
   - 将主文件完整反向同步拆分回 build/00..39-*.txt (与 过滤器生成脚本.bat 拼接结果逐字节100%一致)
   - 新增零依赖静态检查与模块同步脚本 build/lint_filter.py (0 错误, 0 警告)
Owner

与最新分支偏差较大,不并入

与最新分支偏差较大,不并入
lonelywolf closed this pull request 2026-10-28 09:19:52 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 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#1
No description provided.