迭代11第①批:魔法道具同调实施批 T0-T10 全落(重闸 645/0 + MC off 逐位 PASS)
- T1 表与schema:attunement_growth.tres 谓词表(m1/m2/m3+Σgrant≤slot_cap 校验+slots() 求值口径)+道具表扩列(form/charges/slot_cost/unlock_requires/effective_rounds/charge_n+effect_kinds 九kind+KEY_WHITELIST 零裸flat护栏)+七同调行 - T2 save v4(boss_kill_count 收束入账+attunement_equipped+attune_refresh_level+断点 attunement_charges+迁移链 v3→v4) - T3 Attunement 求值服务(纯函数零 await 零 RNG) - T4 营地装配覆盖层(工坊扩容程序占位+Y 升级行 attune_refresh_upgrade 行族) - T5 被动六件接线+装配注入链+刷新 X/Y 双源(BonusPickOverlay 刷新钮,autoplay 默认不刷) - T6 掘进蓄能全链+摆钟能力面(骑库存面差额注入+断点充能键);炸格 P5 甲影响评估破面大→用户裁拆后批,blast_kit deferred 留位 - T7 退役面五件(BONUS_IDS 除名 aux_item+transitional_sync_slots 过渡键退役=迭代10欠账③清偿+授予路/四容量闸拆除+nest_pendulum 换装 active_charged) - T8 冒烟六新断言(645/0)+MC attune 开关+贪心画像分层 off/on 各 N=60 双策略(on 画像功率显著带平移归调参批;off 新锚=对拍正主留盘主区 sim-data,81000 降批入口基准) - T9 连带修订九件(魔法道具定位重写/元进度v1.6/地图战斗资源v0.16/行动经济v0.7/05不做v1.3/关卡节点地图v1.4/node-reward v2.2/registry 三处/06 收口+炸格拆后批新条) - T10 重闸全绿:冒烟 645/0+熵增 PASS+doc 三闸零新增+MC off 复跑同种子逐位一致 PASS;出口人闸后移迭代 12(用户 2026-10-03 令)
This commit is contained in:
1 parent
02cb92a972
commit
a6a2bf885e
37 files changed
+1075
-173
No files matched your search
@@ -254,6 +254,7 @@ func _build_ui() -> void:
|
||||
shop_overlay.buy_requested.connect(_on_shop_buy)
|
||||
shop_overlay.leave_pressed.connect(_on_shop_leave)
|
||||
camp_overlay.buy_requested.connect(_on_camp_buy)
|
||||
camp_overlay.attune_toggled.connect(_on_camp_attune_toggle)
|
||||
camp_overlay.closed.connect(_on_camp_closed)
|
||||
_end_overlay.review_pressed.connect(_on_end_review)
|
||||
_end_overlay.continue_pressed.connect(_on_battle_end_continue)
|
||||
@@ -269,6 +270,7 @@ func _build_ui() -> void:
|
||||
bonus_overlay.pick_confirmed.connect(_on_bonus_pick_confirmed)
|
||||
bonus_overlay.replace_chosen.connect(_on_bonus_replace_chosen)
|
||||
bonus_overlay.continue_pressed.connect(_on_bonus_continue)
|
||||
bonus_overlay.refresh_requested.connect(_on_bonus_refresh)
|
||||
move_child(bonus_overlay, _end_overlay.get_index())
|
||||
|
||||
var start: Dictionary = UiAssembler.build_start_overlay(self, db)
|
||||
@@ -486,6 +488,7 @@ func _on_runner_node(node: Dictionary, info: Dictionary) -> void:
|
||||
_open_modal(bonus_overlay)
|
||||
bonus_overlay.open_pick(Narrator.node_bonus_header(), _bonus_card_texts(node_cands, node_draw.get("aux_detail", []) as Array))
|
||||
adventure.present_node_bonus(node_cands, node_draw.get("aux_detail", []) as Array)
|
||||
bonus_overlay.set_refresh_info(adventure.attune_refresh_left()) # 迭代 11 第①批 T5b——刷新余量投喂
|
||||
log_view.append_bb(Narrator.reward_line())
|
||||
elif t == "rest":
|
||||
var healed: int = int(info.get("healed", 0))
|
||||
@@ -527,6 +530,7 @@ func _show_bonus_pick() -> void:
|
||||
var payload: Dictionary = _pending_bonus
|
||||
_open_modal(bonus_overlay)
|
||||
bonus_overlay.open_pick(Narrator.bonus_pick_header(payload), _bonus_card_texts(payload.get("candidates", []) as Array, payload.get("aux_detail", []) as Array))
|
||||
bonus_overlay.set_refresh_info(adventure.attune_refresh_left() if adventure != null else 0) # 迭代 11 第①批 T5b——刷新余量投喂
|
||||
_refresh_presentations()
|
||||
|
||||
var _last_replace_items: Array = [] # 替换子态续玩重建缓存(aux_replace_presented 载荷)
|
||||
@@ -572,6 +576,19 @@ func _aux_card_line(iid: String) -> String:
|
||||
return "%s · %s" % [String(row.get("display_name", iid)), " ".join(parts)]
|
||||
|
||||
|
||||
# 三选一刷新(迭代 11 第①批 T5b——P1 甲 X/Y 双源;通关停点经重发 bonus_choice_presented 自然重建,
|
||||
# 节点停点在此读在途态重 present——零自动推进契约不破,停点仍在途)
|
||||
func _on_bonus_refresh() -> void:
|
||||
if adventure == null:
|
||||
return
|
||||
if not adventure.refresh_bonus():
|
||||
return
|
||||
if _bonus_context == "reward_node":
|
||||
var st: Dictionary = adventure.node_bonus_pending_state()
|
||||
bonus_overlay.open_pick(Narrator.node_bonus_header(), _bonus_card_texts(st.get("candidates", []) as Array, st.get("aux_detail", []) as Array))
|
||||
bonus_overlay.set_refresh_info(adventure.attune_refresh_left())
|
||||
|
||||
|
||||
func _on_bonus_pick_confirmed(item_id: String) -> void:
|
||||
if adventure == null:
|
||||
return
|
||||
@@ -595,7 +612,7 @@ func _open_bonus_replace(items: Array, incoming: Dictionary) -> void:
|
||||
rec["display_name"] = String(_item_name_lookup().get(String(rec.get("item_id", "")), String(rec.get("item_id", ""))))
|
||||
named.append(rec)
|
||||
bonus_overlay.open_replace(named, String(_item_name_lookup().get(String(incoming.get("item_id", "")), String(incoming.get("item_id", "")))),
|
||||
named.size(), int(db.adventure.transitional_sync_slots))
|
||||
named.size(), Attunement.slots(db, save_manager)) # 迭代 11 第①批 T7——呈现读数源切谓词表求值(过渡键退役)
|
||||
|
||||
|
||||
func _on_bonus_replace_chosen(discard: int) -> void:
|
||||
@@ -1028,6 +1045,7 @@ func _camp_data() -> Dictionary:
|
||||
"balance": meta.keystone_balance() if meta != null else 0,
|
||||
"forge": forge_rows,
|
||||
"workshop": meta.workshop_status() if meta != null else [],
|
||||
"attune": meta.attune_camp_status() if meta != null else {}, # 迭代 11 第①批 T4——同调装配面投影
|
||||
"recent": save_manager.recent_summaries() if save_manager != null else [],
|
||||
}
|
||||
|
||||
@@ -1035,6 +1053,14 @@ func _camp_data() -> Dictionary:
|
||||
func _on_camp_buy(attr: String) -> void:
|
||||
if meta == null:
|
||||
return
|
||||
if attr == "attune_refresh":
|
||||
# Y 刷新升级行购买(迭代 11 第①批 T4——P1 甲;按钮禁用为常态防线,兜底拒绝可见 pattern 1)
|
||||
if not meta.buy_attune_refresh():
|
||||
board_zone.toast.show_toast("钥石不足——买不起这次升级", "warn")
|
||||
return
|
||||
camp_overlay.refresh_camp(_camp_data())
|
||||
_refresh_presentations()
|
||||
return
|
||||
if not meta.buy_forge(attr):
|
||||
# 余额不足(按钮禁用为常态防线——兜底拒绝可见,pattern 1)
|
||||
board_zone.toast.show_toast("钥石不足——买不起这件强化", "warn")
|
||||
@@ -1043,6 +1069,16 @@ func _on_camp_buy(attr: String) -> void:
|
||||
_refresh_presentations()
|
||||
|
||||
|
||||
# 同调装配切换(迭代 11 第①批 T4——装配关系唯一写口经 MetaProgression.toggle_attunement;满位兜底拒绝可见)
|
||||
func _on_camp_attune_toggle(item_id: String) -> void:
|
||||
if meta == null:
|
||||
return
|
||||
if not meta.toggle_attunement(item_id):
|
||||
board_zone.toast.show_toast("同调位已满——先卸下再装配", "warn")
|
||||
return
|
||||
camp_overlay.refresh_camp(_camp_data())
|
||||
|
||||
|
||||
# ---- 商店覆盖层与 GP 钱包(GP+商店房实施批——写调用唯一归组合根)----
|
||||
|
||||
func _on_shop_buy(product_id: String) -> void:
|
||||
|
||||
Reference in new issue
Block a user