P1-1 结算巨函数拆段(裁点③甲 审计五段): - game/core/settlement/ 五段类: GrantSegment(授予段体+旗判随段迁入+counter_add 五位/ grant_material 三位分支单点化)/AuraSegment/CombatSegment(原 _combat_segment 体)/ DecaySegment/VerdictSegment(返回裁定,终局早退语义留宿主) - 编排器 1725→1325 行退为段序编排+行发射/开单原语单点;_judge_flag/_combat_segment 旧实现同批删除;smoke 白盒 rig 随段迁址(orch._grant_seg._judge_flag) 姊妹病灶(同批): - damage_controller _resolve_hero_attack 148 行拆四步: _hero_attack_ctx(命中面/按序改写 族四拍)→_hero_attack_base_value(加法族/计数器施加/倍乘)→_hero_attack_redeem(掷点/池乘/ rider/落地/击杀)→_hero_attack_deliver(状态/交付行);ctx/redemption 字典穿线算序逐字保留 验收: - V4 settle_segments_test 16 断言进 run_all(25→26 套) - 逐位一致对拍三变体全同(RUNSUM+JSONL 双面零漂移);冒烟 1077/0+run_all 26 套 +probe click+render golden 0.00%
34 lines
1.5 KiB
GDScript
34 lines
1.5 KiB
GDScript
class_name VerdictSegment
|
||
extends RefCounted
|
||
# ⑤ 判定段 Segment(迭代 27 T2——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("verdict", "", Vector2i(-1, -1), ri, "战斗失败", 0, {}, "")
|
||
oc._battle_over("defeat")
|
||
return verdict
|
||
if verdict == "victory":
|
||
oc._emit_row("verdict", "", Vector2i(-1, -1), ri, "战斗胜利", 1, {}, "")
|
||
oc._battle_over("victory")
|
||
return verdict
|
||
oc._emit_row("verdict", "", Vector2i(-1, -1), ri, "下一轮次", 0, {}, "")
|
||
oc._exit_distribution()
|
||
return verdict
|