diff --git a/game/smoke/ui_click_probe.gd b/game/smoke/ui_click_probe.gd index ea9cacd7..3a7d9584 100644 --- a/game/smoke/ui_click_probe.gd +++ b/game/smoke/ui_click_probe.gd @@ -186,21 +186,30 @@ func _ready() -> void: _problems.append("首格未可点(cells=0)") print("[click_probe] 首格可点计时 %dms(进入战斗屏口径,≤500ms AC)· 场景冷启动 %dms(含 UI 构建 %dms,观测项)" % [ first_cell_ms, t_total, t_ui_ready]) - var action_budget := 20000 + const ACTION_BUDGET_FRAMES := 20000 # 主循环帧预算(坏态挂死兜底上限——常态通关远低于此;有挂帧证据才收紧,勿让坏态等满预算才报) + var action_budget := ACTION_BUDGET_FRAMES + # 2026-10-02 修复批(P0-2):c44fb1b 加 bonus 分支时把本 while 循环体整体去缩进——continue 落在 + # 循环外成解析错误、探针不可加载且改后无人实跑。此处还原循环体缩进,bonus 分支保留为体内兄弟分支。 while not _done and action_budget > 0: action_budget -= 1 await get_tree().process_frame - if main.node_overlay.visible: - main.node_overlay.press_continue() - _flags_placed.clear() - continue - if main.bonus_overlay.visible: - # 迭代 10 三选一停点(BonusPickOverlay——奖励节点/通关兑付共用面;T17 硬锁批适配—— - # 本探针此前未适配该层,走到即卡死):真实信号路径点选首件+确认。 - main.bonus_overlay.press_card(0) - main.bonus_overlay.press_confirm() - _flags_placed.clear() - continue + if main.node_overlay.visible: + main.node_overlay.press_continue() + _flags_placed.clear() + continue + if main.bonus_overlay.visible: + # 迭代 10 三选一停点(BonusPickOverlay——奖励节点/通关兑付共用面):按子态分派真实按钮路径。 + # 选取态=点选首件+确认;结果态=按「继续」收面;替换子态=放弃新件(-1)。c44fb1b 初版只处理 + # 选取态——兑付后结果态 visible 恒真,press_confirm 空转刷「无待选停点」拒绝(T2 修复批补分派)。 + if main.bonus_overlay._continue_btn.visible: + main.bonus_overlay.press_continue() + elif main.bonus_overlay._replace_box.visible: + main.bonus_overlay.replace_chosen.emit(-1) + else: + main.bonus_overlay.press_card(0) + main.bonus_overlay.press_confirm() + _flags_placed.clear() + continue if main.level_screen.visible: # 节点图选路口(零自动推进停点)——图上命中路径交替选候选(岔路使用行为;布局决策 2 改造) main.level_screen.press_candidate(_route_clicks % 2)