class_name RunScope extends Node # 一局会话状态承载(局生命周期单点)。 # 会话 = 一次冒险(开新/续玩)或一次调试两层对局;组合根 _begin_session 创建本节点挂树、 # 会话更替/终局整节点 queue_free()——旧手工复位清单(原 main._reset_run_scope 三项 + # _on_battle_end_continue 置空四件)随节点释放机制消亡,此后新增跨局字段零新增泄漏点 #(泄漏=低频难复现脏状态的手工契约病灶,审计 P0-2)。 # 纪律:本节点零信号连接、零视图构建、零核心写调用(信号连接只在组合根): # 纯状态承载,组合根经 run_scope.X 读写。 var adventure = null # 冒险结构编排器(调试两层恒 null) var runner = null # 关卡推进器(冒险每关重取 adventure.runner();调试两层恒 null) var settlement = null # 当前战斗编排器(冒险与调试两层统一读它) var is_adventure := false # 冒险会话标记(inter 层确认分派与终局分派) var level_active := false # 对局激活(状态面板入口点亮/刷新受理分派) var level_screen_active := false # 关卡独立屏激活状态(屏级互斥——形态升格批语义) var boss_active := false # Boss 遭遇变体(阶段指示附 Boss 名) var was_settling := false # 结算相位上升沿检测(结算轮光带触发——演出链批) var hints_shown := {} # 一次性非模态提示去重(每 run 一次:chord/no_adjacent) var settlement_stop_timer := ArmedTimer.new() # 结算框挂起计时(窗口 0=挂起到显式回落) var pending_candidates: Array[Variant] = [] # 结算框挂起期的选路候选暂存(choices_presented 载荷) var locked_click := {} # 锁期点击缓存(T17 v3.1——最后一次;演播完边沿重放) var last_gain_amount := 0 # 最近一笔钱包入账(GP 增量取数面——wallet_changed gain 载荷)