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:
1 parent
e94ba6f977
commit
ac3cee7daa
8 files changed
+83
-5
No files matched your search
@@ -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 事件 → 三件全重抽(未买不保留——重抽绑购买,无独立刷新动作)
|
||||
|
||||
Reference in new issue
Block a user