终末地模组兼容修复 v1.2 · 跨版本适配
程序更新：2026-10-16；当前游戏材质规则：2026-10-15

使用方法
1. 完整解压，双击 EndfieldModRepair.exe。
2. 选择 EFMI 文件夹；也可选择 Mods 或上级 XXMI Launcher 文件夹。
3. 点击“仅扫描”查看识别结果，或点击“一键备份并修复”。
4. 完成后进游戏按 F10，检查角色近景、远景与材质。
5. 撤销时选择同一目录，点击“还原上次修复”。
本工具处理已安装的 INI，不直接修改 ZIP，也不会安装或更换 RabbitFX。

v1.2 与 v1.1 的区别
v1.1 仍需要辨认旧版本正则的具体写法。
v1.2 改为：确认贴图和特效的提交接口后，接入工具内置的当前游戏识别规则，
保留原版的特效模板、按键和清理逻辑，不再逐字修改旧版正则。
RabbitFX 版本号不参与支持与否的判断，也没有 2.7 / 4.2 的版本白名单。
旧版主识别规则保留在文件中并停用，防止它与新规则重复修改同一个着色器。
其他阴影规则保持原样。全部原始文件另有逐字节备份。

哪些其他版本可以处理
沿用相同贴图、特效提交接口的版本，可以使用这一适配路径，
即使它的版本号、旧版材质布局或旧正则写法与两个真实样本不同。
版本注释缺失、文件夹更名、配置节大小写和多种换行格式均不影响判断。

真实样本：用户提供的 2.7 压缩包，以及 Mods 中原有的 4.2 Experimental 4。
另外测试了旧布局变化、不同正则写法、完全重写旧规则、已原生支持当前布局等
离线构造变体；这些变体不是更多真实发行版，不能当成所有版本的实测证明。

支持边界
如果其他版本更换了资源接口、使用新的特效数据、位置编号捕获，或有额外的
主材质处理阶段，本工具可能无法安全迁移，会说明具体缺少什么并跳过依赖修改。
不能保证任意未知版本或未来版本必定兼容；不会把未适配项标记为已修复。
如有此类报告，应提供该版本的原始 RabbitFX 配置后再扩展兼容接口。
新增跨版本路径已做离线验证，仍需进入游戏核对实际效果。

其他功能
- 全 Mods 扫描、固定贴图槽位适配、RabbitFX 深度通道贴图同步。
- 盐濑纱良 v1.5 版陈千语的法线和深度专用适配。
- 无 RabbitFX 时，为已识别的固定槽位模组生成独立的主材质识别规则。
- 重复运行不叠加；v1.0 / v1.1 修复和备份可识别、升级、逐次还原。
- 保留 UTF8、UTF16、GB18030 编码，以及 CRLF、LF、CR、CRCRLF 和混合换行。
- 多个启用的 RabbitFX、通道编号冲突或被改动的补丁会明确提示。

备份与还原
写入前自动备份到 EFMI\_ModRepairBackups\时间编号\。
originals 保存原始字节，manifest.xml 保存前后校验值，report.txt 保存报告。
修复失败会尝试回滚本批写入；还原失败也会尝试回滚本次还原。
修复后文件若再次被修改或升级，程序会停止还原，避免覆盖后续改动。
每次只还原最近一批尚未撤销的修复；多次修复可依次还原，备份不删除。

不改动的内容
XXMI 启动方式、游戏文件、DLL、模型、DDS、d3dx_user.ini，
以及 RabbitFX 的缓存开关、deltaTime、原按键和特效设计。
DISABLED 前缀目录、备份目录和目录链接不会扫描。
不会联网、注入或启动游戏。本包不含原始 RabbitFX 或其他模组资源。
这是显示兼容工具，不包含卡顿或底层 DLL 优化。

测试与构建
本次 45 项自动检查通过：28 项跨版本/接口/备份/规则检查、8 项原有批处理回归、
9 项事务/路径/界面控件检查。
PCRE2 验证 85 份既有游戏着色器样本，新规则得到相同的 82 个匹配，
颜色、光照、法线槽位和指令范围与已有验证记录一致；旧主规则不会重复命中。
这些检查不等同于所有 RabbitFX 发行版或所有模组均已在游戏中实测。

Windows 10/11，.NET Framework 4.8；无需 Python，无需安装本工具。
EXE 和 EndfieldModRepair.exe.config 应保持同目录，以支持长路径。
程序需要对所选 Mods 和备份目录有写入权限，未作代码签名。
source 文件夹包含源码、当前材质规则和 Build.ps1；构建时会把规则嵌入 EXE，
运行时无需读取 source 文件夹。源码采用 MIT 许可证；模组权利归原作者。

命令行
EndfieldModRepair.exe --scan "X:\XXMI Launcher\EFMI" --report "report.txt"
EndfieldModRepair.exe --apply "X:\XXMI Launcher\EFMI" --report "report.txt"
EndfieldModRepair.exe --restore "X:\XXMI Launcher\EFMI" --report "report.txt"
返回码：0=完成；2=配置冲突未写入；3=操作失败；4=有未适配或跳过项目。
