结算演播期棋盘硬锁v3(T17用户明确令——不可点/不可移/不可挖): _on_board_action排播期(纯队列判据)吞点击+probe排播豁免(Waiting不豁免=收尾链探测面);worktree冒烟628/0(probe卡死系worktree环境已知问题,定案归master复跑)

This commit is contained in:
DKChan committed 2026-10-02 06:29:32 +08:00
1 parent 684e93e71e
commit 939bb8ced9
2 files changed
+15 -4

No files matched your search

+7
View File
@@ -1196,6 +1196,13 @@ func _on_board_action(cell: Vector2i, kind: String) -> void:
# 玩家动作 → 核心写调用的唯一通道(模态/无战斗拒绝在此收口)
if _input_locked():
return
# 结算演播期棋盘冻结(T17 用户明确令 v3——不可点/不可移/不可挖):
# 锁面=排播队列活跃(纯队列判据;_row_pace_wait 有末行尾迹窗口不可作演播中标志)。
# 队列排空即解锁、无状态残留;HUD 按钮不在锁面(停手/明细回看各自通路,开启前
# _flush_row_queue 自行排空)。v1 撞收尾链的教训对策:ui_click_probe 的排播期 stall
# 豁免随批(合法停顿态),Waiting 收尾等待期**不豁免**——probe 报卡即为真回归信号。
if not _row_queue.is_empty():
return
# 魔法道具选中态劫持(迭代 7 T4——两步交互第二步):点格=使用目标拾取,不落挖格;
# 只劫持挖掘点击(move/flag 语义不冲突——选中期玩家仍可移动/插旗)
if _aux_use_selection != 0 and kind == "dig":
+8 -4
View File
@@ -259,10 +259,14 @@ func _ready() -> void:
"settling": diag.settling,
}
if JSON.stringify(st) == JSON.stringify(_last_state):
_stall_frames += 1
if _stall_frames == 30:
_report_stall(st)
return
# 排播演播期豁免(T17 硬锁 v3 随批——合法停顿态):演播期棋盘锁生效、probe 点击被吞、
# 逻辑态恒定属预期。判据=纯队列(与 main 锁同源)。Waiting 收尾等待期**不豁免**——
# 锁若把收尾链卡死,此处 stall 照报(探测面)。
if main._row_queue.is_empty():
_stall_frames += 1
if _stall_frames == 30:
_report_stall(st)
return
else:
_stall_frames = 0
_ap_spent_this_round = 0