class_name VerdictSegment extends RefCounted # ⑤ 判定段 Segment(P1-1 结算巨函数拆段;段边界=审计五段〔裁点③甲〕)。 # 职责:防御性优先级 hero 先判(双死结构不可达的纵深防御)→ 全量状态快照(despawn 前 # 组装——终局含 result)→ 终局行+收束分派 / 下一轮出口分发。 # 返回值 = 裁定("victory"/"defeat"/"continue")——宿主 _settle 据此保持旧早退语义 #(终局不回置 _settling,_battle_over 接管);本段零算法改动(🔴 零行为变更契约)。 var oc: BattleOrchestrator # 宿主(类型标注=段内 := 推断前提;循环类名引用 Godot 4 全局类安全) 宿主 func _init(host) -> void: oc = host func run(ri: int) -> String: var verdict := "continue" if int(oc._enemy_system.hero_unit().get("hp", 0)) <= 0: verdict = "defeat" elif oc._enemy_system.query_alive("enemy").is_empty(): verdict = "victory" oc._emit_settlement_snapshot(verdict) # 全量状态快照(despawn 前组装——终局含 result) if verdict == "defeat": oc._emit_row({"type": "verdict", "source_class": "", "origin_cell": Vector2i(-1, -1)}, ri, "战斗失败", 0, {}) oc._battle_over("defeat") return verdict if verdict == "victory": oc._emit_row({"type": "verdict", "source_class": "", "origin_cell": Vector2i(-1, -1)}, ri, "战斗胜利", 1, {}) oc._battle_over("victory") return verdict oc._emit_row({"type": "verdict", "source_class": "", "origin_cell": Vector2i(-1, -1)}, ri, "下一轮次", 0, {}) oc._exit_distribution() return verdict