[BUG] 每日任务(凝素领域):副本内队伍团灭被误判为“战斗正常结束”,随后找宝箱 30s 超时,中断整条每日任务

Author: liuyun847Created Sep 9, 2026Updated Sep 9, 2026
Labelsbugarea: daily/farmingpriority: normal

错误说明: 每日任务刷"凝素领域"(锻造挑战)时,队伍在副本内团灭,脚本未识别死亡,把团灭当作"战斗正常打完",随后在角色阵亡状态下执行"走向宝箱领取",30 秒超时抛 WaitFailedException,整条每日任务中断(领取每日奖励/邮件/战令等后续步骤全部被跳过)。

实际行为:

  1. 副本战斗内队伍血量被打空团灭;
  2. 团灭后游戏弹出复苏弹窗(标题「选择复苏物品」),弹窗延迟数秒出现,脚本未识别;
  3. 日志显示战斗被当作"正常结束",随后 start walk_to_treasure,角色阵亡状态下找宝箱/F 提示 30 秒超时;
  4. 完整报错(核心 traceback,2026-09-09):
File "...\working\src\task\DailyTask.py", line 123, in run
    self.get_task_by_class(ForgeryTask).farm_forgery(daily=True, ...)
File "...\working\src\task\DomainTask.py", line 90, in farm_in_domain
    self.walk_to_treasure()
File "...\working\src\task\BaseWWTask.py", line 221, in do_walk_to_box
    self.wait_until(..., raise_if_not_found=True, ...)
ok.task.exceptions.WaitFailedException
 Daily Task exception stopped

日志关键片段:

16:47:38 ForgeryTask:enter combat          # 副本内战斗
16:48:11 target_enemy failed → break out of combat   # 误判: 战斗"正常结束"
16:48:13 combat_once out of combat break
16:48:29 in_team_and_world 10s 超时        # 人已死
16:48:32 start walk_to_treasure            # 角色阵亡状态下找宝箱
16:49:02 do_walk_to_box 30s 超时 → WaitFailedException → 整链中断

预期行为: 团灭属于角色死亡场景,应被识别并进入现有死亡处理/恢复流程;至少不应在角色阵亡后继续"找宝箱领取",也不应让整条每日任务(后续领取奖励等)因一次战斗失败而中断。

复现步骤:

  1. 队伍:绯雪(主C)→ 千咲 → 琳奈(副C),千咲开启 "Chisa DPS" 配置;每日任务「Which to Farm = Forgery Challenge(凝素领域)」,纯脚本运行、不手动干预;
  2. 副本战斗中让队伍血量被打空直至团灭(无实时低血量保护时较易发生);
  3. 观察:复苏弹窗延迟出现期间脚本已判定"战斗结束"并进入找宝箱流程,约 30 秒后抛 WaitFailedException,每日任务中断。

出现频率: 仅一次(2026-09-09 实测;该流程在未团灭的多次运行中均正常完成)。

相关任务或功能: 每日一条龙(DailyTask)→ 锻造挑战/凝素领域;涉及副本类战斗的通用战后流程(残象/无音区等同样结构)。

角色、队伍顺序及相关设置:

  • 队伍顺序:绯雪 → 千咲 → 琳奈(与日志加载顺序一致);
  • 千咲启用了 "Chisa DPS" 配置(如实际未启用请忽略此条;若有出入请更正);
  • 分辨率 1920x1080;显示模式:全屏;FPS:120。

自动战斗主声骸检查: 已确认:每个角色均已装备主声骸,且界面上能看到声骸技能图标。

输入及显示环境: 默认键位,无手柄/显卡滤镜/覆盖层/多显示器特殊情况(如有请补充)。

出现问题的 OK-WW 版本: v3.6.6 与 v3.6.7(相关代码结构两版本一致)

最近正常的 OK-WW 版本: 未知/不适用(该问题仅在团灭场景触发;未团灭时同流程可正常完成)

Windows 操作系统: Windows 11(build 26200)

日志和截图:

  • 失败截图(2026-09-09 16:49:02, Daily Task):画面正中为「选择复苏物品」复苏弹窗(复苏道具数量 182/2、确认按钮),无宝箱、无 F 键提示、无角色血条;
  • 导出日志

OK-WW-log-issue1668.zip

录屏(可选): [如需要可补 30-60 秒"战斗 → 团灭 → 找宝箱超时中断"的录屏]


补充分析(供维护者参考):

  • 与 PR #1559 的关联:本问题发生在队伍没有低血量保护的战斗中——PR #1559「自动战斗低血量切治疗位」(当前 closed、未合并)若生效,前排血量低于阈值即切治疗位回血,基本不会团灭,也就不会出现本问题。建议一并关注该 PR。
  • 根因定位:① 死亡判定依赖 raise_not_in_combat()单次 2 秒revive_confirm 弹窗探测,复苏弹窗延迟出现时漏判,被当作普通"出战斗"而非角色死亡;② farm_in_domain() 战后直接进入 walk_to_treasure(),等待/行走共 30 秒期间无任何死亡/复苏弹窗检查;③ DailyTask.run() 刷体力段(farm_tacet/farm_forgery/farm_simulation)无异常兜底,异常直接终止整条每日链。
  • 为什么现有防死/保命机制没有兜住:
    1. "Switch to Healer before and after Combat"(战前/战后切治疗位)只认 is_healer 角色;千咲开启 "Chisa DPS" 配置后 char_type = MAIN_DPS(is_healer = False,日志中显示为 Chisa(MainDps)),全队无官方意义的治疗位,该功能与战斗轮换中的治疗分支静默失效;且它只覆盖战斗开始/结束两个时点;
    2. 角色死亡异常处理(CharDeadException/CharRevivedException + revive_action)以 2 秒弹窗探测命中为前提,本例漏判后抛的是普通 NotInCombatException,死亡分支从未进入;
    3. 副本死亡恢复续跑(DomainTask 退本 → 回血 → farm_domain_with_recovery_loop 重进续刷)链路完整,但同样以"死亡被识别并抛异常"为前提,本例从未到达;
    4. 其余同类机制(AutoCombatTask 内死亡通知、FarmEchoTask 大世界复活回血、NightmareNestTask/TacetTask 捕获复活成功异常)均只覆盖各自任务场景,不在「每日任务 → 副本刷取」链路上。 → 官方防死体系依赖两个前提——队伍中存在 is_healer 治疗位 + 死亡瞬间能被单次 2 秒探测捕获;本例两个前提同时失效(治疗位被 DPS 配置覆盖、复苏弹窗延迟出现),所有机制集体静默,最终以找宝箱超时中断收场。

Source: ok-oldking/ok-wuthering-waves