Skip to content

支持彼世逢魔 - #1862

Merged
runhey merged 5 commits into
runhey:devfrom
LGG686:dev-f
Oct 4, 2026
Merged

runhey merged 5 commits into
runhey:devfrom
LGG686:dev-f

Conversation

@LGG686

@LGG686 LGG686 commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Sourcery 摘要

接入彼世逢魔自动化流程,并增强图像匹配与战斗绿标能力。

新功能:

  • 新增“彼世逢魔”任务,支持单人、队长和队员模式,并提供次数与时长限制。
  • 扩展战斗绿标配置,支持按固定位置或式神名称识别后进行标记。
  • 增加掩码模板匹配和多尺度模板匹配能力,并在标注工具中展示匹配分数及缩放信息。

错误修复:

  • 增强模板匹配对无效掩码、平坦模板及非有限匹配结果的处理,避免误报和漏检。
  • 修正多尺度匹配命中后使用错误缩放尺寸更新区域的问题。

改进:

  • 将彼世逢魔接入任务配置、菜单、页面导航、国际化及资源定义。
Original summary in English

Sourcery 总结

集成 OtherWorldTwilight 自动化流程,并增强战斗标记和图像匹配功能。

新功能:

  • 添加对单人、队长和队员模式下 OtherWorldTwilight 自动化任务的支持,并限制执行时间和运行次数。
  • 支持通过固定位置或匹配式神名称来选择战斗绿色标记。
  • 添加掩码和多尺度模板匹配选项,并在标注工具中显示匹配分数和缩放信息。

错误修复:

  • 防止无效掩码、纯色模板和非有限匹配结果导致误匹配或漏检。
  • 修正多尺度匹配,使检测区域根据最佳匹配尺度的尺寸进行更新。

改进:

  • 将 OtherWorldTwilight 集成到任务配置、菜单、导航、本地化和资源定义中。
  • 通过要求浏览器重新验证,提升标注静态资源的新鲜度。
Original summary in English

Sourcery 总结

集成“彼世逢魔”自动化流程,并增强战斗绿标与图像匹配能力。

新功能:

  • 新增“彼世逢魔”自动化任务,支持单人、队长和队员模式,并提供运行次数与时长限制。
  • 扩展战斗绿标功能,支持按固定位置或式神名称识别目标。
  • 新增掩码模板匹配和多尺度模板匹配能力,并在标注工具中展示匹配分数与缩放信息。

错误修复:

  • 改进模板匹配对无效掩码、平坦模板及非有限结果的处理,减少误匹配和漏检。
  • 修正多尺度匹配命中后区域尺寸未对应最佳缩放比例的问题。

增强功能:

  • 将“彼世逢魔”接入任务配置、菜单、页面导航、国际化和资源定义。

杂项:

  • 为标注工具静态资源增加浏览器重新验证机制,避免继续使用过期资源。
Original summary in English

Summary by Sourcery

集成“彼世逢魔”自动化流程,并增强战斗绿标与图像匹配能力。

New Features:

  • 新增“彼世逢魔”自动化任务,支持单人、队长和队员模式,并提供运行次数与时长限制。
  • 扩展战斗绿标功能,支持按固定位置或式神名称识别目标。
  • 新增掩码模板匹配和多尺度模板匹配能力,并在标注工具中展示匹配分数与缩放信息。

Bug Fixes:

  • 改进模板匹配对无效掩码、平坦模板及非有限结果的处理,减少误匹配和漏检。
  • 修正多尺度匹配命中后区域尺寸未对应最佳缩放比例的问题。

Enhancements:

  • 将“彼世逢魔”接入任务配置、菜单、页面导航、国际化和资源定义。

Chores:

  • 为标注工具静态资源增加浏览器重新验证机制,避免继续使用过期资源。

LGG686 added 4 commits October 3, 2026 14:11
- config_general_battle: 新增 GreenMarkEnum 及 green_mark_type/green_mark_name 字段
- general_battle: green_mark 拆分为 green_mark_choose 与 green_mark_name
- gb/click.json: 补齐 random_left/right/top/bottom,修复 assets_extract 会误删
  assets.py 中被 GameUi default_pages 引用的手维护资产

来自 mine
- 新增 tasks/OtherWorldTwilight/,支持队长/队员/单人三种模式
- script_task: 队长建房邀请、队员接受邀请、单人直接挑战三种流程
- 注册 config_model / config_menu(Soul Zones) / config_manual
- 补充 zh_CN.xml 与 assets/i18n/zh-CN.json 翻译

来自 mine
- 可用于处理受背景影响较大的模板,比如送的一整套周年庆庭院+主题的阴阳寮图标(暂未处理)
- 新增 "Masked template matching":掩码取模板同目录 xxx_mask.png,非零参与匹配、零忽略,
match/match_all/match_all_any 一并支持,掩码缺失或尺寸不符自动回退普通匹配
- 新增零方差模板拦截与匹配结果 nan/inf 清洗,防同色区域的假阳性与静默漏检
- "Multi-scale template matching" 接入 method 分发与 test_match
- 记录 last_score/last_scale 供测试工具回显真实分数与命中尺度
- 修复 match_multi_scale 回写 roi_front 使用循环残值的问题

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

嘿——我发现了 3 个问题

面向 AI 代理的提示
请处理这次代码审查中的评论:

## 个别评论

### 评论 1
<location path="tasks/OtherWorldTwilight/config.py" line_range="33-36" />
<code_context>
+class OWTBattleConfig(GeneralBattleConfig):
+    hide_fields = dynamic_hide('preset_enable', 'preset_group', 'preset_team', 'green_mark', 'green_mark_type')
+
+    @field_validator('green_mark_type')
+    @classmethod
+    def green_mark_type_validator(cls, v):
+        return GreenMarkEnum.NAME
+
+
</code_context>
<issue_to_address>
**issue (bug_risk):** 验证器仅在执行验证时返回 `GreenMarkEnum.NAME`,但 `green_mark_type` 没有设置 `validate_default=True`;因此,对于新创建的 `OWTBattleConfig`,Pydantic 会原样保留默认值 `CHOOSE`,导致隐藏的 OWT 设置无法可靠地选择基于名称的标记。

**触发条件:** 创建 `OWTBattleConfig()` 时未显式提供 `green_mark_type`。

**建议修复:** 将字段默认值设置为 `GreenMarkEnum.NAME`,或通过 `Field(..., validate_default=True)` 启用默认值验证;避免使用验证器来替换默认值。

```suggestion
    green_mark_type: GreenMarkEnum = Field(default=GreenMarkEnum.NAME, description='green_mark_type_help')
```
</issue_to_address>

### 评论 2
<location path="tasks/OtherWorldTwilight/script_task.py" line_range="57-59" />
<code_context>
+        logger.info('Create team')
+        self.ui_click(self.I_OWT_TEAM, self.I_CHECK_TEAM, interval=1)
+        # 创建房间
+        self.create_room()
+        self.ensure_private()
+        self.create_ensure()
+        # 邀请队友
+        success = True
</code_context>
<issue_to_address>
**issue (bug_risk):** `create_room`、`ensure_private` 和 `create_ensure` 的返回值都被丢弃了。如果创建房间失败,仍会调用 `ensure_private()`,并且由于等待永远不会出现的房间控件而无限循环,而不是终止队长流程。

**触发条件:** 账号没有挑战券,或创建房间的点击操作未生效。

**建议修复:** 检查每个返回值,并在创建房间或确认失败时设置 `success=False`/退出队长流程。
</issue_to_address>

### 评论 3
<location path="module/atom/image.py" line_range="175" />
<code_context>
+        """
+        判断模板在参与匹配的区域内是否逐通道恒为常量。
+
+        CCOEFF_NORMED 归一化时分母来自各通道的方差,参与区域内只要有通道完全没有起伏,
+        分母就是 0,OpenCV 会走特判:无掩码时整张结果矩阵被填成 1.0(恒假阳性,且落点固定
+        在 roi_back 左上角),带掩码时整张变成 0/0 的 nan。两种都让这条规则失去意义,
+        这里提前拦掉,而不是把异常数值当成命中。
+        """
+        if template is None or template.size == 0:
</code_context>
<issue_to_address>
**nitpick:** 文档字符串声称只要有一个通道的方差为零,CCOEFF_NORMED 的分母就会为零,但实现仅拒绝所有参与通道都为常量的模板。因此,文档中描述的条件并不符合实际行为,可能会误导维护人员,使其不清楚哪些模板是有意被拒绝的。

**建议修复:** 描述实际的“所有通道均为常量”条件,或者如果预期条件是按通道拒绝,则修改实现。

```suggestion
        CCOEFF_NORMED 归一化时分母来自各通道的方差,参与区域内所有通道都完全没有起伏时,
```
</issue_to_address>

Sourcery 评估

需要人工审查。 有 2 个发现需要优先处理;此外,这还新增了一个多模式自动化任务,并修改了共享的战斗目标选择和图像匹配行为,因此缺陷可能会选择错误的角色或错误地执行战斗,并消耗有限数量的游戏内尝试次数或资源。回滚可以停止新行为,但已经发生的运行所执行的操作以及消耗的资源无法完全撤销。

阻塞性发现:tasks/OtherWorldTwilight/config.py:36、tasks/OtherWorldTwilight/script_task.py:59


Sourcery 对开源项目免费——如果您喜欢我们的审查,请考虑分享 ✨
Original comment in English

Hey - I've found 3 issues

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="tasks/OtherWorldTwilight/config.py" line_range="33-36" />
<code_context>
+class OWTBattleConfig(GeneralBattleConfig):
+    hide_fields = dynamic_hide('preset_enable', 'preset_group', 'preset_team', 'green_mark', 'green_mark_type')
+
+    @field_validator('green_mark_type')
+    @classmethod
+    def green_mark_type_validator(cls, v):
+        return GreenMarkEnum.NAME
+
+
</code_context>
<issue_to_address>
**issue (bug_risk):** The validator returns `GreenMarkEnum.NAME` only when validation runs, but `green_mark_type` has no `validate_default=True`; Pydantic therefore leaves the default `CHOOSE` untouched for a newly created `OWTBattleConfig`, so the hidden OWT setting does not reliably select name-based marking.

**Triggers:** When `OWTBattleConfig()` is created without explicitly providing `green_mark_type`.

**Suggested fix:** Set the field default to `GreenMarkEnum.NAME` or enable validation of defaults with `Field(..., validate_default=True)`; avoid using a validator to replace the default.

```suggestion
    green_mark_type: GreenMarkEnum = Field(default=GreenMarkEnum.NAME, description='green_mark_type_help')
```
</issue_to_address>

### Comment 2
<location path="tasks/OtherWorldTwilight/script_task.py" line_range="57-59" />
<code_context>
+        logger.info('Create team')
+        self.ui_click(self.I_OWT_TEAM, self.I_CHECK_TEAM, interval=1)
+        # 创建房间
+        self.create_room()
+        self.ensure_private()
+        self.create_ensure()
+        # 邀请队友
+        success = True
</code_context>
<issue_to_address>
**issue (bug_risk):** The return values of `create_room`, `ensure_private`, and `create_ensure` are discarded. If room creation fails, `ensure_private()` is called anyway and loops indefinitely waiting for room controls that cannot appear, instead of terminating the leader flow.

**Triggers:** When the account has no challenge ticket or the room creation click does not take effect.

**Suggested fix:** Check each return value and set `success=False`/exit the leader flow when room creation or confirmation fails.
</issue_to_address>

### Comment 3
<location path="module/atom/image.py" line_range="175" />
<code_context>
+        """
+        判断模板在参与匹配的区域内是否逐通道恒为常量。
+
+        CCOEFF_NORMED 归一化时分母来自各通道的方差,参与区域内只要有通道完全没有起伏,
+        分母就是 0,OpenCV 会走特判:无掩码时整张结果矩阵被填成 1.0(恒假阳性,且落点固定
+        在 roi_back 左上角),带掩码时整张变成 0/0 的 nan。两种都让这条规则失去意义,
+        这里提前拦掉,而不是把异常数值当成命中。
+        """
+        if template is None or template.size == 0:
</code_context>
<issue_to_address>
**nitpick:** The docstring claims that a single channel with zero variance makes the CCOEFF_NORMED denominator zero, but the implementation rejects only templates where every participating channel is constant. The documented criterion therefore does not describe the actual behavior and can mislead maintainers about which templates are intentionally rejected.

**Suggested fix:** Describe the actual all-channels-constant condition, or change the implementation if the intended criterion is per-channel rejection.

```suggestion
        CCOEFF_NORMED 归一化时分母来自各通道的方差,参与区域内所有通道都完全没有起伏时,
```
</issue_to_address>

Sourcery assessment

Needs a human reviewer. 2 findings to address first, and this adds a new multi-mode automation task and changes shared battle targeting and image-matching behavior, so a defect could select the wrong character or run battles incorrectly and consume a bounded number of in-game attempts or resources. Reverting stops the new behavior, but actions and consumed resources from runs that already occurred cannot be fully undone.

Blocking findings: tasks/OtherWorldTwilight/config.py:36, tasks/OtherWorldTwilight/script_task.py:59


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Comment thread tasks/OtherWorldTwilight/config.py
Comment thread tasks/OtherWorldTwilight/script_task.py Outdated
Comment on lines +57 to +59
self.create_room()
self.ensure_private()
self.create_ensure()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (bug_risk): create_room、ensure_private 和 create_ensure 的返回值都被丢弃了。如果创建房间失败,仍会调用 ensure_private(),并且由于等待永远不会出现的房间控件而无限循环,而不是终止队长流程。

触发条件: 账号没有挑战券,或创建房间的点击操作未生效。

建议修复: 检查每个返回值,并在创建房间或确认失败时设置 success=False/退出队长流程。

Original comment in English

issue (bug_risk): The return values of create_room, ensure_private, and create_ensure are discarded. If room creation fails, ensure_private() is called anyway and loops indefinitely waiting for room controls that cannot appear, instead of terminating the leader flow.

Triggers: When the account has no challenge ticket or the room creation click does not take effect.

Suggested fix: Check each return value and set success=False/exit the leader flow when room creation or confirmation fails.

Comment thread module/atom/image.py Outdated
@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Change Summary

  • 新增“彼世逢魔”任务,并接入任务配置、菜单、页面导航、单人/队长/队员流程及次数/时长限制。
  • 扩展共享战斗绿标逻辑,新增按式神名 OCR 匹配;彼世逢魔配置通过验证器强制使用名称模式。
  • 扩展全局模板匹配,加入掩码、多尺度匹配及非有限/平坦模板处理,同时更新标注工具展示信息。

Reconstructed Intent

点击此处展开
  • 这次改动最可能是为了让彼世逢魔在三种组队身份下可自动循环,并复用现有邀请、战斗、换魂和退出能力。
  • 同时希望把彼世逢魔所需的固定绿标改成按式神名定位,并把新增的图像匹配能力作为通用基础设施提供给资源标注和任务页面识别。

Observed Constraints

点击此处展开
  • 任务流程依赖页面识别、房间创建/确认、邀请、战斗结束和退出操作最终回到可识别页面;任一点击或识别失败都必须有有限的失败出口。
  • OWTBattleConfig 的默认绿标模式必须在未显式传值时仍为 NAME;目前仅依赖 field_validator,而默认值未启用默认值校验。
  • 图像匹配改动影响所有既有 RuleImage 使用方;掩码文件缺失会回退普通匹配,多尺度分支则必须对每个尺度的异常匹配结果执行同等的非有限值防护。
  • 绿标 OCR 的候选阈值、坐标裁剪和名称相似度必须足以避免误点其他式神,否则会直接改变战斗目标。

Intent Alignment

  • 实现与“接入彼世逢魔并增强通用匹配/绿标能力”的总体 intent 基本一致,但只部分覆盖了失败安全和默认配置约束。
  • 已有审查指出:默认绿标模式可能仍为 CHOOSE,且队长流程丢弃 create_room、ensure_private、create_ensure 的返回值,失败时可能继续等待或进入无界循环。
  • 另外,多尺度匹配分支调用 cv2.matchTemplate 后未复用 _sanitize_match_result;这与本次新增的“非有限结果视为不匹配”约束并不一致,异常结果仍可能影响最佳尺度/位置判断。

Release Risk

  • 风险等级:高
  • 队长创建房间或确认失败时缺少明确终止条件,可能卡住任务;错误状态下还可能影响后续退出和调度结果。
  • 彼世逢魔默认配置可能未启用名称绿标,导致实际点击策略与任务假设不一致;若名称匹配误命中,则会把战斗标记到错误式神。
  • module/atom/image.py 是共享路径,多尺度/掩码改动可能改变其他任务的识别结果;当前 PR 的 Run 检查为失败,增加了合入前不确定性。

Validation Gaps

点击此处展开
  • 未看到覆盖三种身份的页面状态机测试,尤其是无挑战券、创建房间点击未生效、邀请失败、战斗中超时和退出时处于加载页等路径。
  • 未看到验证 OWTBattleConfig() 在未传入 green_mark_type 时实际得到 GreenMarkEnum.NAME 的配置测试。
  • 未看到绿标 OCR 的同名/近似名/空名称/未识别场景测试,也未看到误点坐标边界验证。
  • 未看到对掩码缺失、掩码尺寸错误、平坦模板、纯色源区域和多尺度非有限结果的匹配回归测试。
  • 当前 CI 的 Run 检查失败,建议先确认失败是否由本 PR 引入,并在真实截图/设备上验证页面导航和房间生命周期。

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • ab.chatgpt.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "ab.chatgpt.com"

See Network Configuration for more information.

Generated by PR Review Intent for #1862 · codex · gpt56 · 13.3 AIC · ⌖ 2.71 AIC · ⊞ 12.1K · ◷

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Findings

  • C1 [风险]
    位置:module/atom/image.py、tasks/Component/GeneralBattle、tasks/OtherWorldTwilight/
    原因:PR 同时新增彼世逢魔流程、修改全局图像匹配、扩展通用绿标逻辑,包含多个独立目标,变更范围未收敛。
    修改:将通用图像匹配和绿标能力拆成独立 PR,当前 PR 仅保留彼世逢魔接入及其必要资源。
  • C2 [风险]
    位置:tasks/OtherWorldTwilight/script_task.py:run_leader、run_member
    原因:队长流程丢弃 create_room、ensure_private、create_ensure 的失败返回值;队员收尾的 while 1 也没有超时或失败退出条件,异常页面下可能持续循环。
    修改:逐项检查房间操作返回值并失败退出;为队员收尾循环增加超时、最大重试次数和明确失败返回。
  • C6 [风险]
    位置:tasks/OtherWorldTwilight/config.py:OWTBattleConfig.green_mark_type_validator
    原因:验证器把值改为 GreenMarkEnum.NAME,但默认值未启用 validate_default;直接创建默认配置时可能仍保留 CHOOSE,导致隐藏配置行为不稳定。
    修改:直接将字段默认值设为 GreenMarkEnum.NAME,或使用 validate_default=True,并补充默认配置测试。

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • ab.chatgpt.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "ab.chatgpt.com"

See Network Configuration for more information.

Generated by PR Review Checklist for #1862 · codex · gpt56 · 22.2 AIC · ⌖ 2.59 AIC · ⊞ 13.4K · ◷

- OWTBattleConfig 重声明 green_mark_type 默认为 NAME,pydantic v2 默认值不触发
  validator,原写法默认仍落在 CHOOSE
- run_leader 检查 create_room/create_ensure 返回值,失败提前退出队长流程,
  不再无限等待不会出现的房间控件
- image: 多尺度分支复用结果清洗,修正零方差模板注释中单通道/全通道的措辞
@LGG686

LGG686 commented Oct 3, 2026

Copy link
Copy Markdown
Contributor Author

@runhey 顺便提一嘴,体服又双叒叕改ui了,下周实装的话估计挺多地方会报错
大概是这些(应该还有漏的)
通用确定,取消按钮,获得奖励界面,狭间暗域确定按钮,换御魂不一致确定按钮,突破刷新确定按钮等等

@runhey

runhey commented Oct 4, 2026

Copy link
Copy Markdown
Owner

@runhey 顺便提一嘴,体服又双叒叕改ui了,下周实装的话估计挺多地方会报错 大概是这些(应该还有漏的) 通用确定,取消按钮,获得奖励界面,狭间暗域确定按钮,换御魂不一致确定按钮,突破刷新确定按钮等等

emm。到时候顺手统一一下所有的这些通用图片呗。我记得有些任务是自个单独截图的

@runhey

runhey commented Oct 4, 2026

Copy link
Copy Markdown
Owner

mark 没有看到图片呀,这个很有用的吗?使用场景是什么都的呢?
绿标的那个,新的战斗系统里面没有做这个,我记得没错的话,现在影响的就是。觉醒、突破和寮突破 以及爬塔

@LGG686

LGG686 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor Author

mark 没有看到图片呀,这个很有用的吗?使用场景是什么都的呢?
绿标的那个,新的战斗系统里面没有做这个,我记得没错的话,现在影响的就是。觉醒、突破和寮突破 以及爬塔

mark的还没加呢,可以应用于十周年庭院+主题(那个卷轴)的阴阳寮图标(就是受背景影响大的模板,中心镂空之类的),实测普通匹配识别不了,只能降低阈值或者把图片再改小点。(可以加这个匹配方法备用🤓)
新战斗可以直接把老战斗的绿标移过去不,绿标感觉还是有必要存在的(虽然有时候可能不太好用)

@runhey

runhey commented Oct 4, 2026

Copy link
Copy Markdown
Owner

加绿标蛮简单的

@runhey
runhey merged commit 85accd8 into runhey:dev Oct 4, 2026
1 of 2 checks passed
@runhey

runhey commented Oct 4, 2026

Copy link
Copy Markdown
Owner

你看mark,能不能加一个新的检测类型,类似于“Template matching”

@LGG686

LGG686 commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

你看mark,能不能加一个新的检测类型,类似于“Template matching”

加了呀,打开标记工具就能看到,顺便把多尺度也加上去了。就是这个mark图要自己处理下

@runhey

runhey commented Oct 4, 2026

Copy link
Copy Markdown
Owner

噢我的不好意思

Maratrain added a commit to Maratrain/OnmyojiAutoScript that referenced this pull request Oct 4, 2026
- OWTBattleConfig 重声明 green_mark_type 默认 NAME:pydantic v2 默认值不触发 validator,原写法默认仍落 CHOOSE(上游 1c0a01f)
- 队长流程检查 create_room/create_ensure 返回值,建房失败提前退出,不再无限等待不会出现的房间控件(上游 1c0a01f)
- 多尺度模板匹配循环内接入结果清洗,防极端缩放档同色模板 nan/inf 假阳性;修正零方差判断注释的单通道/全通道措辞(上游 1c0a01f)
- annotator 静态资源响应加 Cache-Control: no-cache,防浏览器启发式缓存旧 JS(上游 f476727)
- 零方差与结果清洗同族 4 处英文日志中文化

验证:OWT 默认值离线断言 NAME 生效、多尺度匹配冒烟通过、app.py 导入正常;彼世逢魔实机流程待真机验证
lygone added a commit to lygone/OnmyojiAutoScript that referenced this pull request Oct 10, 2026
 / runhey#1886)

2026-10-10 游戏更新改了 UI 美术,上游同日开了三个素材修复 PR,本提交移植与本库相关的部分。
注意:本库与上游 runhey/master 已长期分叉(共同祖先 2025-11-15;上游多 757 个提交、本库多 1062 个),
故按文件取用,而非合并分支。

--- 取自 runhey#1891(smallwin-jq 退出战斗确认按钮)
- gb/gb_exit_ensure.png 换用其素材(135x63 -> 95x46)
- I_EXIT_ENSURE 的 roi 同步收紧:roi_front=(701,414,95,46)、roi_back=(648,388,220,96)
  (原为固定位置比对 (674,388,135,63);新框完全落在金色"确定"按钮内,并容许弹窗轻微位移)
- gb/image.json 标注元数据同步
- 该 PR 其余 5 个文件只是注释/排序等装饰性改动,未采纳
- 交叉校验:与本地独立截取的同一弹窗素材在重叠区一致性 0.9874

--- 取自 runhey#1892(weirj2016-ai 悬赏封印独立奖励识别图)
- 新增 tasks/WantedQuests/wq/ui_rewardnew.png (239x24) 与规则 I_UI_REWARDNEW (threshold 0.7)
- tasks/base_task.py:ui_get_reward() / ui_reward_appear_click() 增加 reward_image 参数,
  默认仍用通用 I_UI_REWARD,行为不变;悬赏的奖励弹窗与通用那张不同型
- tasks/WantedQuests/script_task.py:两处宝箱奖励调用改为传 reward_image=self.I_UI_REWARDNEW
  本库悬赏探索继承探索任务,其"小纸人奖励"路径仍用通用 I_UI_REWARD(已修),未改动
- 未采用上游的 I_UI_REWARDnew 别名写法(本库类直接继承 assets,用 I_UI_REWARDNEW 即可)

--- 取自 runhey#1893(m123711 换御魂确认按钮)
- tasks/Component/SwitchSoul/ss/ss_sou_switch_sure.png 换用其素材(180x61,与 roi_front 尺寸一致,无代码改动)

--- 取自 runhey#1886(allesgutefy 组队邀请默认勾选框)
- check_and_invite() 点击 I_I_NO_DEFAULT 后 sleep(0.8),避免 UI 状态未刷新导致误判

未采纳:runhey#1885(本库已有 run_task_or_default_general_battle)、runhey#1862 彼世逢魔,
以及 runhey#1872/runhey#1870/runhey#1873/runhey#1847/runhey#1822(对应任务本库未启用)。
旧素材均本地备份为同名 .bak-20261010(未纳入版本库)。
barnettfan pushed a commit to barnettfan/OnmyojiAutoScript that referenced this pull request Oct 11, 2026
 / runhey#1886)

2026-10-10 游戏更新改了 UI 美术,上游同日开了三个素材修复 PR,本提交移植与本库相关的部分。
注意:本库与上游 runhey/master 已长期分叉(共同祖先 2025-11-15;上游多 757 个提交、本库多 1062 个),
故按文件取用,而非合并分支。

--- 取自 runhey#1891(smallwin-jq 退出战斗确认按钮)
- gb/gb_exit_ensure.png 换用其素材(135x63 -> 95x46)
- I_EXIT_ENSURE 的 roi 同步收紧:roi_front=(701,414,95,46)、roi_back=(648,388,220,96)
  (原为固定位置比对 (674,388,135,63);新框完全落在金色"确定"按钮内,并容许弹窗轻微位移)
- gb/image.json 标注元数据同步
- 该 PR 其余 5 个文件只是注释/排序等装饰性改动,未采纳
- 交叉校验:与本地独立截取的同一弹窗素材在重叠区一致性 0.9874

--- 取自 runhey#1892(weirj2016-ai 悬赏封印独立奖励识别图)
- 新增 tasks/WantedQuests/wq/ui_rewardnew.png (239x24) 与规则 I_UI_REWARDNEW (threshold 0.7)
- tasks/base_task.py:ui_get_reward() / ui_reward_appear_click() 增加 reward_image 参数,
  默认仍用通用 I_UI_REWARD,行为不变;悬赏的奖励弹窗与通用那张不同型
- tasks/WantedQuests/script_task.py:两处宝箱奖励调用改为传 reward_image=self.I_UI_REWARDNEW
  本库悬赏探索继承探索任务,其"小纸人奖励"路径仍用通用 I_UI_REWARD(已修),未改动
- 未采用上游的 I_UI_REWARDnew 别名写法(本库类直接继承 assets,用 I_UI_REWARDNEW 即可)

--- 取自 runhey#1893(m123711 换御魂确认按钮)
- tasks/Component/SwitchSoul/ss/ss_sou_switch_sure.png 换用其素材(180x61,与 roi_front 尺寸一致,无代码改动)

--- 取自 runhey#1886(allesgutefy 组队邀请默认勾选框)
- check_and_invite() 点击 I_I_NO_DEFAULT 后 sleep(0.8),避免 UI 状态未刷新导致误判

未采纳:runhey#1885(本库已有 run_task_or_default_general_battle)、runhey#1862 彼世逢魔,
以及 runhey#1872/runhey#1870/runhey#1873/runhey#1847/runhey#1822(对应任务本库未启用)。
旧素材均本地备份为同名 .bak-20261010(未纳入版本库)。
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