From 2a55f4e1b751a44005fdbedcaed95b0993673cfe Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Fri, 2 Oct 2026 07:46:31 +0800 Subject: [PATCH] =?UTF-8?q?T1=20P0=E6=80=A5=E6=95=91:=20=E2=91=A0=E6=97=97?= =?UTF-8?q?=E7=BA=B9=E7=90=86=E6=A7=BD=E5=8F=8C=E5=86=99=E8=B8=A9=E8=B8=8F?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=88=E5=88=A0paint=E5=B0=BE=E9=83=A8T13?= =?UTF-8?q?=E9=81=97=E7=95=99u.tex=5Fflag=3Dnull=E2=80=94=E2=80=94?= =?UTF-8?q?=E4=B8=8EL683=E6=9D=A1=E4=BB=B6=E8=B5=8B=E5=80=BC=E6=9E=84?= =?UTF-8?q?=E6=88=90683=E2=86=92746=E6=89=A7=E8=A1=8C=E5=BA=8F=E8=A6=86?= =?UTF-8?q?=E7=9B=96=3D=E7=B4=A0=E6=9D=90=E5=9C=A8=E4=BD=8D=E6=8F=92?= =?UTF-8?q?=E6=97=97=E6=81=92=E4=B8=8D=E5=8F=AF=E8=A7=81=EF=BC=8Cheadless?= =?UTF-8?q?=E7=BC=BA=E7=9B=98=E5=AD=97=E5=BD=A2=E5=9B=9E=E9=80=80=E6=8E=A9?= =?UTF-8?q?=E7=9B=96=EF=BC=89+ui=5Finput=5Fprobe=20case=E2=91=A3b=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E6=96=AD=E8=A8=80=EF=BC=88=E6=9C=89=E7=9B=98=E6=96=AD?= =?UTF-8?q?=E8=A8=80=E7=BA=B9=E7=90=86=E5=9C=A8=E6=A7=BD/=E7=BC=BA?= =?UTF-8?q?=E7=9B=98=E6=96=AD=E8=A8=80=E5=AD=97=E5=BD=A2=E5=9B=9E=E9=80=80?= =?UTF-8?q?=EF=BC=89=E2=91=A1notify=5Fcombat=5Fend=E6=8B=86=E8=A1=8C?= =?UTF-8?q?=E5=A4=8D=E6=B4=BB=EF=BC=88=E5=8E=9F=E8=A2=ABtab=E4=BA=8B?= =?UTF-8?q?=E6=95=85=E5=B9=B6=E8=BF=9B=E8=A1=8C=E5=B0=BE=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E4=BB=8E=E4=B8=8D=E6=89=A7=E8=A1=8C=3D=E6=88=98=E5=90=8E?= =?UTF-8?q?=E7=9B=B8=E4=BD=8D=E4=B8=8D=E5=9B=9EIdle/RAP=E4=B8=8D=E6=B8=85?= =?UTF-8?q?=E9=9B=B6=EF=BC=8C=E6=AF=8F=E6=88=98=E6=96=B0=E5=BB=BA=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E6=8E=A9=E7=9B=96=EF=BC=89+smoke=5Fall=20=5Frun=5Fbat?= =?UTF-8?q?tle=E6=94=B6=E6=9D=9F=E7=9B=B8=E4=BD=8DIdle=E5=9B=9E=E5=BD=92?= =?UTF-8?q?=E6=96=AD=E8=A8=80=EF=BC=88628=E2=86=92636=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/core/battle_orchestrator.gd | 3 ++- game/presentation/views/board_view.gd | 4 +++- game/smoke/smoke_all.gd | 5 +++++ game/smoke/ui_input_probe.gd | 11 ++++++++++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/game/core/battle_orchestrator.gd b/game/core/battle_orchestrator.gd index d31065bc..464ef271 100644 --- a/game/core/battle_orchestrator.gd +++ b/game/core/battle_orchestrator.gd @@ -795,7 +795,8 @@ func _battle_over(result: String) -> void: _enemy_system.despawn_all() _status_effects.notify_battle_end() if aux_inventory != null: - aux_inventory.retire_overlays() # 迭代 7 T3——叠加层随战斗结束清空(库存不动——关卡域跨战斗) action_economy.notify_combat_end() # → Idle,RAP 清零 + aux_inventory.retire_overlays() # 迭代 7 T3——叠加层随战斗结束清空(库存不动——关卡域跨战斗) + action_economy.notify_combat_end() # → Idle,RAP 清零(2026-10-02 修复批:原被 tab 事故并进上一行行尾注释从不执行——每战新建实例掩盖了症状;P0-3) db.set_reload_gate(false) _reset_round_facts() battle_finished.emit({"result": result, "hero_hp": hero_hp_left, "gp_dropped": gp_dropped}) diff --git a/game/presentation/views/board_view.gd b/game/presentation/views/board_view.gd index ec513c9f..18fc7b89 100644 --- a/game/presentation/views/board_view.gd +++ b/game/presentation/views/board_view.gd @@ -743,7 +743,9 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void: u.proj_band = 0.0 u.tex_facade = null u.facade_strip = false - u.tex_flag = null + # 旗槽不在此重置(2026-10-02 修复批——T13 批的 paint 尾部 `u.tex_flag = null` 与 L683 的条件 + # 赋值构成双写踩踏:执行序 683→此处把旗纹理恒清 null=素材在位时插旗不可见;L683 的 else 分支 + # 已是全路径清残留,尾部重置系冗余且有害,删除) var south_n: Vector2i = c + Vector2i(0, 1) var north_n: Vector2i = c + Vector2i(0, -1) var south_in: bool = south_n.x >= 0 and south_n.y >= 0 and south_n.x < _board.width and south_n.y < _board.height diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index 52fc2a40..a45b5e7e 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -1273,6 +1273,11 @@ func _run_battle(L: int, D: int) -> Dictionary: if out.result == "": out.result = "timeout" out.terminated = out.result == "victory" or out.result == "defeat" + if out.terminated: + # P0-3 回归断言(2026-10-02 修复批):notify_combat_end 曾被并进行尾注释从不执行—— + # 战斗收束后相位必须回 Idle(RAP 清零),任何「相位卡 Waiting」回归在此被抓 + check(action_economy.phase == "Idle", + "战斗收束后行动经济相位回 Idle(notify_combat_end 生效,实测=%s)" % String(action_economy.phase)) return out diff --git a/game/smoke/ui_input_probe.gd b/game/smoke/ui_input_probe.gd index c766672a..e7615c2a 100644 --- a/game/smoke/ui_input_probe.gd +++ b/game/smoke/ui_input_probe.gd @@ -208,6 +208,15 @@ func _ready() -> void: await get_tree().process_frame if not ms.has_flag(flag_t): _problems.append("case④ 核心旗态未落位") + # ---- case④b 旗纹理槽回归断言(P0-1 修复批 2026-10-02):T13 批曾在 paint 尾部无条件 + # `u.tex_flag = null` 覆盖 T17 批的条件赋值=素材在位时插旗不可见(headless 缺盘走字形回退 + # 掩盖)——有盘断言纹理在槽、缺盘断言字形回退,两分支防双写踩踏复活 ---- + var flag_unit = bv._cells.get(flag_t) + if bv._flag_tex != null: + if flag_unit == null or flag_unit.tex_flag != bv._flag_tex: + _problems.append("case④b 旗纹理槽未挂封印旗纹理(tex_flag=%s)" % ["无单元" if flag_unit == null else str(flag_unit.tex_flag)]) + elif flag_unit == null or flag_unit.glyph != "旗": + _problems.append("case④b 缺盘字形回退缺失(glyph=%s)" % ["无单元" if flag_unit == null else String(flag_unit.glyph)]) # ---- case⑤ 双击 chord:禁入格双左击(核心拒挖零副作用)→ chord_attempted ---- _push_click(_pos(bv, forbid_t), MOUSE_BUTTON_LEFT) _push_click(_pos(bv, forbid_t), MOUSE_BUTTON_LEFT) @@ -318,7 +327,7 @@ func _ready() -> void: else: _problems.append("case⑭ 无未开格可验(板面异常)") if _problems.is_empty(): - print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/flag_place/chord/dig/英雄落位/影子构成/朝向/缩格重排/缺位回退/变异角标 十四断言全绿(真实 push_input 路径——⑫图上命中⑬画布拟合 2026-09-28 增,⑭变异角标 2026-09-29 增)") + print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/flag_place/chord/dig/英雄落位/影子构成/朝向/缩格重排/缺位回退/变异角标 十五断言全绿(真实 push_input 路径——⑫图上命中⑬画布拟合 2026-09-28 增,⑭变异角标 2026-09-29 增,④b 旗纹理槽回归 2026-10-02 增)") get_tree().quit(0) else: for p in _problems: