test(迁移): 批 B 波 1 G5 套1 末点 AP 封印回归五条迁入新建宿主 seal_polarity_test.gd——新宿主落位+manifest 登记+剪切挂载绿(宿主 5 检查)+按条变异 5/5 验红(受理守卫恒拒/dig 扣费+1/revealed_cells 置空/seal 计费 99/try_spend 耗尽仲裁恒假各验红);smoke_all.gd 同批删函数节头块与调用行;闸01 剩余面 976 绿

This commit is contained in:
DKChan committed 2026-10-23 03:38:50 +08:00
1 parent 9b91731055
commit 5ed1ec99af
4 files changed
+82 -37

No files matched your search

-37
View File
@@ -160,7 +160,6 @@ func _run_core_smoke(db, rng) -> void:
_smoke_full_battle(1, 0, "L1 · 地精")
_smoke_full_battle(2, 0, "L2 · 熊地精")
_smoke_level()
_smoke_seal_ap_exhausted()
_smoke_active_refresh()
_smoke_playtest_logger()
_smoke_battle_log_view()
@@ -1322,42 +1321,6 @@ func _ms_digest(ms, ae) -> Array:
return [[int(ms.hero_pos().x), int(ms.hero_pos().y)], rev, seals, ae.ap, ae.phase, ms.seal_count()]
# ---- 排雷玩法 封印动作耗尽末点 AP 回归(playtest 缺陷②——v1 冒烟盲区:自动玩家不用封印)----
func _smoke_seal_ap_exhausted() -> void:
print("--- 排雷玩法·封印动作耗尽末点 AP 回归 ---")
var rng = load("res://core/rng_service.gd").new()
rng.set_master_seed(20260911)
var settlement = load("res://core/battle_orchestrator.gd").new(_db, rng)
var rounds: Array = []
settlement.round_started.connect(func(ri): rounds.append(ri))
check(settlement.begin_battle({"level_index": 1, "node_depth": 4, "hero_hp": int(_db.hero.max_hp), "node_type": "boss"}), "回归战斗启动(Boss 行——D0 20HP 级会被盲挖粉尘秒杀,无法承载封印回归场景)")
var minesweeper = settlement.minesweeper
# 恰花 (AP-1) 点挖掘,留末点给封印(表驱动——AP 从表读不写死)
var ap_total: int = int(_db.action_economy.ap_per_round)
for i in range(ap_total - 1):
if settlement.action_economy.phase != "Active" or settlement.action_economy.ap == 0:
break
var plan = AutoPlayer.choose_dig(minesweeper)
if plan.is_empty():
break
if plan.hero_cell != minesweeper.hero_pos():
minesweeper.settle_batch([{"action": "move", "cell": plan.hero_cell}])
minesweeper.settle_batch([{"action": "dig", "cell": plan.dig_cell}])
check(settlement.action_economy.phase == "Active" and settlement.action_economy.ap == 1, "%d 次挖掘后恰剩 1 AP(phase=%s ap=%d)" % [ap_total - 1, str(settlement.action_economy.phase), settlement.action_economy.ap])
# 末点 AP 花在封印——轮次必须终结并结算进入第 2 轮
# 封印目标 = 挖掘策略的下一目标格(构造保证:未开、与小人邻接——先把小人移到其邻接已开格)
var plan2 = AutoPlayer.choose_dig(minesweeper)
check(not plan2.is_empty(), "仍存在可挖目标(封印目标来源)")
var out: Array = []
if not plan2.is_empty():
if plan2.hero_cell != minesweeper.hero_pos():
minesweeper.settle_batch([{"action": "move", "cell": plan2.hero_cell}])
out = minesweeper.settle_batch([{"action": "seal_place", "cell": plan2.dig_cell}])
check(not out.is_empty() and bool(out[0].accepted), "末点 AP 封印被受理")
check(rounds.size() >= 2, "封印动作耗尽 AP 触发轮末结算并进入第 2 轮(rounds=%s)" % str(rounds))
# ---- 关卡节点地图·线性推进冒烟----
func _smoke_level() -> void: