Skip to content

refactor: 使用 CodeMatcher 整理拼装修复 - #337

Merged
Pik-4 merged 1 commit into
Pik-4:bepinex5from
CissiBot:codex/refactor-assemble-patch
Nov 11, 2026
Merged

Pik-4 merged 1 commit into
Pik-4:bepinex5from
CissiBot:codex/refactor-assemble-patch

Conversation

@CissiBot

Copy link
Copy Markdown
Contributor

概述 Overview

将拼装修复的手写指令遍历改为 Harmony CodeMatcher:按宝石或边框字段、GetComponent<Renderer>()、enabled = false 的完整序列匹配,通过 Repeat 处理全部命中,使用 Set 保留跳转标签和异常块。缓存具体的泛型方法引用,避免在遍历过程中逐次检查方法名称与泛型参数;方法无法解析时保留原始指令,避免空操作数变成通配条件。

作为 #335 的后续整理,修复仍采用局部 Transpiler,目标方法和判空 helper 保持不变。没有把缺失边框改为宝石引用:Actor 的宝石可能在 ShowCard 期间才初始化,且 GhostCard、ConstructCard 会缓存边框引用并应用材质,改动字段会扩大影响范围。

检查 Check

功能 Function

  • 无新增配置项或本地化字段。
  • 现有修复的内部重构,无新增用户操作。
  • Release 编译通过,0 警告、0 错误。
  • 原有 20 项隔离回归通过,使用仓库自带 Harmony 和 .NET Framework 4.8 宿主,直接执行生产补丁。
  • 空输入、无匹配及连续 3 处匹配的边界检查通过。
  • 当前游戏两个目标方法的 584 条指令,新旧补丁输出逐项一致,包含操作数、跳转标签和异常块;仍分别匹配 2 处和 4 处访问。

风险 Risk

本次未重新进行游戏内验收;此前 #335 的实现已有游戏实测确认,本次另行验证了当前程序集上的输出等价性。仍依赖游戏的指定访问序列,后续游戏更新若调整该序列需要重新核对。

@Pik-4
Pik-4 merged commit 4375890 into Pik-4:bepinex5 Nov 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants