fix: 续玩停点恢复 main.gd:717 崩值(用户实机 F5 定位)——resume_adventure 三选一停点分支在 level_started 之前同步 curio_choice_presented.emit〔resume 提前 return〕,GP 总结 lambda 求值时 runner 尚未赋值(null.gp 炸);修=_gp_summary_text runner 缺位守卫+断点快照 gp 兜底(合计语义=恢复面合计即存档合计,与 _bonus_summary_text 同款守卫式);回归=ui_struct_probe⑦resume 专项(先红后绿实证:Nil.gp 同栈复现→修后总结面开+快照合计 24 断言);轻闸冒烟782/0+run_all 16套+probe_gate --click 全绿

This commit is contained in:
DKChan committed 2026-10-06 05:09:50 +08:00
1 parent 02fcc55fca
commit c32bb6ca08
2 files changed
+48

No files matched your search

+7
View File
@@ -713,7 +713,14 @@ func _on_battle_finished(payload: Dictionary) -> void:
# 战利品行装配(battle.md OQ14——胜利总结结算展示 GP 总量+增量;账本语义零改动,纯呈现读数):
# 增量 = battle_finished 载荷 gp_dropped(战斗域上抛);总量 = runner.gp 现值(LevelRunner 入账
# 连接先于组合根 handler——此读数即战后入账完毕的总量)。
# runner 缺位守卫(2026-10-06 用户实机 main.gd:717 崩值定位——续玩停点恢复分支:adventure_runner
# resume_adventure 的 bonus_pending 分支在 level_started 之前同步 curio_choice_presented.emit
# 〔resume 提前 return〕,本 lambda 求值时 runner 尚未赋值;合计改读断点快照 gp 兜底——恢复源快照
# 此刻必在档,语义=续玩恢复面的合计即存档合计;与 _bonus_summary_text 同款守卫式)
func _gp_summary_text(payload: Dictionary) -> String:
if runner == null:
var bp: Dictionary = save_manager.breakpoint_snapshot() if save_manager != null else {}
return "战利品 GP +%d · 合计 %d" % [int(payload.get("gp_dropped", 0)), int(bp.get("gp", 0))]
return "战利品 GP +%d · 合计 %d" % [int(payload.get("gp_dropped", 0)), int(runner.gp)]