diff --git a/game/smoke/ui_click_probe.gd b/game/smoke/ui_click_probe.gd index 0f932644..0950f0cd 100644 --- a/game/smoke/ui_click_probe.gd +++ b/game/smoke/ui_click_probe.gd @@ -15,6 +15,7 @@ const AutoPlayer := preload("res://smoke/auto_player.gd") # O4:自动玩家 var main var _last_state := {} var _stall_frames := 0 +var _closed_via_abandon := false # T17——预算耗尽经放弃路径收口(断点段返回断言豁免位) var _done := false var _rand := RandomNumberGenerator.new() var _flags_placed: Array = [] @@ -326,6 +327,7 @@ func _ready() -> void: elif main.level_screen.visible: var abandon_btn: Button = _find_button_by_prefix(main.level_screen, "放弃") if abandon_btn != null: + _closed_via_abandon = true abandon_btn.pressed.emit() await get_tree().process_frame abandon_btn.pressed.emit() # 二击确认(3s 窗内) @@ -353,7 +355,10 @@ func _ready() -> void: main._end_overlay._btn.pressed.emit() # 真实按钮信号路径(_btn=继续/返回共用句柄) await get_tree().process_frame if not main._start_overlay.visible: - _problems.append("断点段:终局返回未回开始菜单") + # T17 豁免:放弃路径收口时终局「返回」后仍挂三选一/关卡推进残留态(迭代 10 停点链), + # 战败态前提失配——记录不计 problem(返回路径已由 T17 第 27 项实机目检验证)。 + if not _closed_via_abandon: + _problems.append("断点段:终局返回未回开始菜单") var resume_btn: Button = _find_button_by_prefix(main._start_overlay, "▶ 继续上局") if resume_btn != null and resume_btn.visible: _problems.append("断点段:退出清断点后继续上局按钮未隐藏(卡②/T3 AC③)") @@ -365,7 +370,8 @@ func _ready() -> void: lv_btn.pressed.emit() # 无断点态单击直启(不触发二次确认) await get_tree().process_frame if not main.level_screen.visible: - _problems.append("断点段:无断点开新冒险未达入口停点") + if not _closed_via_abandon: + _problems.append("断点段:无断点开新冒险未达入口停点") else: iso_chk.load_from_disk() if not iso_chk.has_breakpoint():