MC-1 商店独立刷新机制(UI落码第三波收官核心批)——level_runner新增shop_refresh/free_left/cost三面(GP扣费+货架整架重抽shop_draw同签+付费计数进离清零)+adventure_table三旋钮(免费0/基价20/曲线1.8 provisional)+shop_overlay刷新钮转正(set_refresh_display投喂面)+presenter on_shop_refresh+main接线+冒烟5断言(752/0)+关卡节点地图v1.6换代+冒险结构v0.15回写。机制=P-C2+Q2裁(基础免费0/天赋增益位预留/GP ceil(20×1.8^n)/池源同源)。闸=冒烟752/0+probe_gate全绿+layout 0

This commit is contained in:
DKChan committed 2026-10-05 03:51:10 +08:00
1 parent e94ba6f977
commit ac3cee7daa
8 files changed
+83 -5

No files matched your search

+28
View File
@@ -73,6 +73,7 @@ var _pool_deck: Array = [] # 共享池令牌库共享引用(Ad
var _pool_consume := Callable() # 池消费 handler(AdventureRunner._consume_pool_purchase——_apply_bonus_pick 同口写加算区+账本+摘牌)
var _shop_shelf: Array = [] # 当前货架(进店抽 3/买后全重抽——令牌字典 {"kind","tier"} 序,同 kind 去重每 kind 至多一卡)
var _shop_visit_buys := 0 # 本次进店已购次数(A 链定价输入——离开清零)
var _shop_paid_refreshes := 0 # 本次进店已付费刷新次数(MC-1——GP 刷新价曲线输入,离开清零)
var hero_atk_pct := 0 # 测试面板覆盖值(切片专用)
var hero_hp_pct := 0
@@ -653,6 +654,7 @@ func continue_after_node() -> bool:
if t == "shop":
_shop_shelf = [] # 离开店面货架态清零(断点快照 shop_shelf 键随离开落空架合法态——迭代 11 第②批 T2)
_shop_visit_buys = 0
_shop_paid_refreshes = 0 # MC-1
return _present_choices()
@@ -742,6 +744,7 @@ func set_shop_pool(deck_ref: Array, consume_handler: Callable) -> void:
# 进店开店(_enter_node shop 分支 pool 模式):进店购买次计数清零 + 抽 3 落架(恰一 shop_draw scope)
func _shop_open_pool() -> void:
_shop_visit_buys = 0
_shop_paid_refreshes = 0 # MC-1——进店付费刷新计数清零
_shop_draw_shelf()
@@ -848,6 +851,31 @@ func shop_shelf() -> Array:
return out
# 商店独立刷新(MC-1——P-C2 裁 2026-10-04 推翻 v1.5「无独立刷新」):免费次数(天赋增益位,基础
# knob=0——Q2 裁「基础免费 0 次」)用尽后 GP 付费刷新;刷新=货架整架重抽(shop_draw 恰一新 scope,
# 与进店/买后重抽同签——重抽同源共享池);池空/非池模式=不可刷新合法态。
func shop_refresh_free_left() -> int:
return maxi(0, int(db.adventure.shop_refresh_free))
func shop_refresh_cost() -> int:
return int(ceil(float(db.adventure.shop_refresh_cost_base)
* pow(db.adventure.shop_refresh_cost_curve, float(_shop_paid_refreshes))))
func shop_refresh() -> bool:
if not _shop_pool_mode or _shop_shelf.is_empty():
return false
if shop_refresh_free_left() <= 0:
var cost := shop_refresh_cost()
if gp < cost:
return false
gp -= cost
_shop_paid_refreshes += 1
_shop_draw_shelf()
return true
# 购买(pool 模式唯一购买口):在架(kind→在架令牌)/余额前置校验零副作用 → handler 消费在架
# 令牌本体(kind+tier——_apply_bonus_pick 同口写加算区+账本+摘牌,跨渠道共库)→ 出账 → 进店购买
# 次计数 → wallet 事件 → 三件全重抽(未买不保留——重抽绑购买,无独立刷新动作)