奇物批T5+T6a:专长门票入表(schema四字段provisional 20%/2/1/5+域校验+runner保底/限购/出现三计数+节点与商店双注入(替换末位占一席,同scope取数零漂移)+拿到即开三入口分支(节点本地重绘/店内临时停点payload.context)+断点扩列两键向后兼容+shop.tres门票行base5+SHELF_KINDS扩+校验豁免+A5/A6断言7条);T6a商店补回复heal行(默认原则:分类内成员都入该渠道池)+registry刷新边界写死(商店自身服务vs奇物授予重抽次数);终局池读数断言4→6键适配(冒烟782/0)
This commit is contained in:
1 parent
6812ebbb73
commit
95b66f0d60
10 files changed
+148
-6
No files matched your search
@@ -72,6 +72,13 @@ func resume_if_pending() -> bool:
|
||||
# 三选一停点(非末关通关恰一次):Boss 胜利先经战斗总结结算面(settlement-summary v1.1——钥石
|
||||
# 增量行在其上),确认后进三选一面(level-clear.md v2);续玩停点恢复同入口(零自动推进契约)
|
||||
func on_presented(payload: Dictionary) -> void:
|
||||
if String(payload.get("context", "")) == "feat_ticket":
|
||||
# T5 店内门票兑付——临时停点开专长三选一面(零胜利总结面;确认后只关面回店)
|
||||
_pending_curio = payload.duplicate(true)
|
||||
_curio_context = "feat_ticket"
|
||||
_open_modal.call(curio_overlay)
|
||||
curio_overlay.open_pick(Narrator.node_curio_header(), _curio_card_texts(payload.get("candidates", []) as Array))
|
||||
return
|
||||
if int(payload.get("aux_cleared", 0)) > 0:
|
||||
toast.show_toast("上关剩余 %d 件秘宝已随关卡结束清空" % int(payload.get("aux_cleared", 0)), "info") # 迭代 7 T4 清空反馈
|
||||
_pending_curio = payload.duplicate(true)
|
||||
@@ -122,7 +129,10 @@ func _curio_card_texts(candidates: Array, treasure_detail: Array = []) -> Array:
|
||||
var rid := String((tok as Dictionary).get("feat_id", ""))
|
||||
var cid := "%s|%s|%s" % [kind, tier, rid]
|
||||
var text := ""
|
||||
if kind == "relic":
|
||||
if kind == "feat_ticket":
|
||||
text = "奇物门票
|
||||
选定即开一次奇物三选一(T5 门票——拿到即开不进持有集)"
|
||||
elif kind == "relic":
|
||||
text = Narrator.feat_card_text(db.feat_row(rid))
|
||||
elif kind == "treasure_item":
|
||||
var iid := String(treasure_detail[treasure_i]) if treasure_i < treasure_detail.size() else ""
|
||||
@@ -183,6 +193,12 @@ func on_pick_confirmed(item_id: String) -> void:
|
||||
var ok: bool = adventure.apply_node_curio(kind, tier, rid) if _curio_context == "reward_node" else adventure.pick_curio(kind, tier, rid)
|
||||
if not ok:
|
||||
push_error("[bonus_interact] 三选一兑付被拒——见输出日志")
|
||||
return
|
||||
# T5——节点渠道门票拿到即开:候选已被替换为专长面,本地读在途态重绘(零 emit——context 保持 reward_node,
|
||||
# 后续兑付/确认仍走节点路径回图选路)
|
||||
if _curio_context == "reward_node" and kind == "feat_ticket":
|
||||
var st2: Dictionary = adventure.node_curio_pending_state()
|
||||
curio_overlay.open_pick(Narrator.node_curio_header(), _curio_card_texts(st2.get("candidates", []) as Array))
|
||||
|
||||
|
||||
func on_treasure_replace_presented(items: Array, incoming: Dictionary) -> void:
|
||||
@@ -221,6 +237,8 @@ func on_continue() -> void:
|
||||
_close_modal.call(curio_overlay)
|
||||
curio_overlay.close_pick()
|
||||
var adventure = _adventure_get.call()
|
||||
if _curio_context == "feat_ticket":
|
||||
return # T5 店内门票面——专长兑付完成后关面回店(无推进/无回图)
|
||||
if _curio_context == "reward_node":
|
||||
var runner = _runner_get.call()
|
||||
if runner != null:
|
||||
|
||||
Reference in new issue
Block a user