奇物批T2:运行层bonus_*→curio_*全族换词(_curio_pending/deck/taken/result/candidates+pick_curio/apply_node_curio/curio_choice_presented/curio_resolved等+两文件改名curio_interact_controller/curio_pick_overlay含.uid+CurioPickOverlay/CurioInteractController类名);T2裁点甲案自裁=五存档键引号字面量禁改(全仓对拍六形态全等);_bonus_treasure_carry按T0澄清剔除(秘宝语义);非奇物bonus语义保全(加算区bonus/price_level_bonus/attack_bonus/bp_bonus等);reward_overlay_test红转绿适配(M7 bcard换PanelContainer致c is Button恒0——改数_choice_box子节点数断言语义不变,run_all 16套全绿历史首次)

This commit is contained in:
DKChan committed 2026-10-05 18:44:51 +08:00
1 parent d4cde73976
commit 8e2694de49
17 files changed
+298 -299

No files matched your search

+13 -13
View File
@@ -151,8 +151,8 @@ static func run_adventure(db, seed_val: int, atk_pct: int, hp_pct: int, collect_
adr.wallet_changed.connect(_on_adventure_wallet.bind(st, logger))
# 三选一停点驱动(迭代 10 奖励重构批——big_reward_paid 退役:确定性策略候选取首件、
# 道具件满位替换放弃新件、兑付后推进下一关——零随机流自开,同种子逐位可复放)
adr.bonus_choice_presented.connect(_on_adventure_bonus.bind(st, adr))
adr.bonus_resolved.connect(_on_adventure_bonus_resolved.bind(st, adr))
adr.curio_choice_presented.connect(_on_adventure_bonus.bind(st, adr))
adr.curio_resolved.connect(_on_adventure_curio_resolved.bind(st, adr))
adr.treasure_replace_presented.connect(_on_adventure_treasure_replace.bind(st, adr))
adr.adventure_finished.connect(_on_adventure_finished.bind(st, logger))
adr.set_hero_override(atk_pct, hp_pct)
@@ -220,17 +220,17 @@ static func _on_adventure_node_entered(node: Dictionary, info: Dictionary, adr,
elif t == "reward":
# 奖励节点三选一(迭代 10 追加批——共享池确定性策略;TP0 起 316-f 判读:1 级最稀有、
# 同档并列取最左;替换放弃新件;兑付后 continue_after_node 回图选路)
var ndraw: Dictionary = adr.node_bonus_candidates()
var ndraw: Dictionary = adr.node_curio_candidates()
var ncands: Array = ndraw.get("candidates", []) as Array
st.reward_events.append({"node_bonus_pick": ncands.duplicate(true)})
st.reward_events.append({"node_curio_pick": ncands.duplicate(true)})
if ncands.is_empty():
r.continue_after_node() # 牌库空合法态直通(池耗即枯竭——防御保留)
else:
adr.present_node_bonus(ncands, ndraw.get("aux_detail", []) as Array)
adr.present_node_curio(ncands, ndraw.get("aux_detail", []) as Array)
var npick: Dictionary = _pick_token(ncands, String(st.get("relic_mode", "off")))
if adr.apply_node_bonus(String(npick.get("kind", "")), String(npick.get("tier", "")), String(npick.get("relic_id", ""))):
if not adr._node_bonus_pending.is_empty() and adr._node_bonus_pending.has("incoming"):
adr.resolve_bonus_replace(-1) # 满位替换:放弃新件
if adr.apply_node_curio(String(npick.get("kind", "")), String(npick.get("tier", "")), String(npick.get("relic_id", ""))):
if not adr._node_curio_pending.is_empty() and adr._node_curio_pending.has("incoming"):
adr.resolve_curio_replace(-1) # 满位替换:放弃新件
else:
st.result = "advance_failed"
elif t == "rest":
@@ -260,13 +260,13 @@ static func _on_adventure_wallet(event: String, gp_val: int, extra: Dictionary,
# 三选一停点驱动(迭代 10——确定性策略;TP0 起 316-f 判读:1 级最稀有、同档并列取最左;
# 奖励事件随 reward_events 留档)
static func _on_adventure_bonus(payload: Dictionary, st: Dictionary, adr) -> void:
st.reward_events.append({"bonus_pick": payload.duplicate(true)})
st.reward_events.append({"curio_pick": payload.duplicate(true)})
var candidates: Array = payload.get("candidates", []) as Array
if candidates.is_empty():
st.result = "advance_failed"
return
var pick: Dictionary = _pick_token(candidates, String(st.get("relic_mode", "off")))
if not adr.pick_bonus(String(pick.get("kind", "")), String(pick.get("tier", "")), String(pick.get("relic_id", ""))):
if not adr.pick_curio(String(pick.get("kind", "")), String(pick.get("tier", "")), String(pick.get("relic_id", ""))):
st.result = "advance_failed"
@@ -304,13 +304,13 @@ static func _pick_token(candidates: Array, relic_mode: String = "off") -> Dictio
# 同调位满位替换子交互(确定性策略:放弃新件不获取——分发面按停点上下文裁决节点/通关渠道)
static func _on_adventure_treasure_replace(items: Array, incoming: Dictionary, st: Dictionary, adr) -> void:
st.reward_events.append({"treasure_replace": incoming.duplicate(true)})
if not adr.resolve_bonus_replace(-1):
if not adr.resolve_curio_replace(-1):
st.result = "advance_failed"
# 三选一兑付完成 → 上下文分派(通关停点=推进下一关 / 奖励节点=回图选路)
static func _on_adventure_bonus_resolved(result: Dictionary, st: Dictionary, adr) -> void:
st.reward_events.append({"bonus_resolved": result.duplicate(true)})
static func _on_adventure_curio_resolved(result: Dictionary, st: Dictionary, adr) -> void:
st.reward_events.append({"curio_resolved": result.duplicate(true)})
if String(result.get("context", "")) == "reward_node":
var r = adr.runner()
if r == null or not r.continue_after_node():