T6吞噬流+地形转化+商店保底(迭代12——整合定稿S7/B4):relics.tres填4行(地脉采撷common·受地形伤资源补偿——伤害仍发生/荆棘编织者rare·挖开伤害型格双产出/净化工兵rare·标中旗中和相邻伤害型格——🔴R4甲仅限伤害型过滤=variation effect=flat_damage判据信息型永不清除/熔火之躯rarest锚点·受地形伤积层轮末反打——触发键通用不按种类特化);BoardData.clear_variants中和口;orchestrator地形伤兑付点四面(refund/double/counter/轮末blast反打后清零——行格=英雄格修(-1,-1)越界);商店保底=货架零流派件时挤掉最后一张普通卡换devour件(占位制货架恒≤3——首版追加4卡断言红返工;按关变异精细绑定归数值批披露)+relic卡定价15固定锚公式同构+投影display/value走relic行;冒烟断言适配relic卡合法态(词表放行+价格分叉)表换代27件→696/0三闸+run_all全绿——批次一铺量27件收官

This commit is contained in:
DKChan committed 2026-10-04 02:12:04 +08:00
1 parent e216232e05
commit bfbb473375
5 files changed
+149 -11

No files matched your search

+35 -3
View File
@@ -762,6 +762,26 @@ func _shop_draw_shelf() -> void:
_shop_shelf.append(tok)
if _shop_shelf.size() >= 3:
break
# 商店保底(迭代 12 T6——「本关变异交互件必刷」简化口径:货架零流派件时**挤掉最后一张普通卡**
# 换吞噬流件〔地形交互件广义映射——按关变异精细绑定归数值批,台账披露待追认〕;占位制货架恒
# ≤3;池内无 devour 令牌=不保底合法态)
var has_relic := false
for tok in _shop_shelf:
if String((tok as Dictionary).get("kind", "")) == "relic":
has_relic = true
break
if not has_relic and not _shop_shelf.is_empty():
for row in db.relic_rows():
if String(row.get("archetype", "")) != "devour":
continue
var rid := String(row.get("relic_id", ""))
for t in _pool_deck:
var tok2: Dictionary = t as Dictionary
if String(tok2.get("kind", "")) == "relic" and String(tok2.get("relic_id", "")) == rid:
_shop_shelf[_shop_shelf.size() - 1] = {"kind": "relic", "tier": String(tok2.get("tier", "")), "relic_id": rid}
break
if String((_shop_shelf[_shop_shelf.size() - 1] as Dictionary).get("kind", "")) == "relic":
break # 换一张即止
# 库存余量(TP0——令牌库内该 kind 剩余枚数单点读;未注入/防御读 = 0)
@@ -774,9 +794,14 @@ func pool_stock(kind: String) -> int:
# 现价 = ceil(基价 × b^(关序−1) × A^(本次进店已购次数))(P4 甲 ceil 向上单一取整——玩家不利向;
# A/b 表 knob provisional;核心现算,呈现层禁复算——契约 5)
# A/b 表 knob provisional;核心现算,呈现层禁复算——契约 5)。relic 卡(保底占位——shop 词表外)
# 基价 provisional 15 固定锚(台账披露待追认——shop.tres 词表扩列归数值批)。
func pool_price(kind: String) -> int:
var row: Dictionary = db.shop_pool_row(kind)
if row.is_empty():
if kind == "relic":
return int(ceil(15.0 * pow(db.shop_price_b(), float(maxi(0, int(level_row.level_index) - 1))) * pow(db.shop_price_a(), float(_shop_visit_buys))))
return 999999
var base := float(maxi(1, int(row.get("base_price", 1))))
var price_f: float = base * pow(db.shop_price_b(), float(maxi(0, int(level_row.level_index) - 1))) \
* pow(db.shop_price_a(), float(_shop_visit_buys))
@@ -791,11 +816,18 @@ func shop_shelf() -> Array:
var kind := String((tok as Dictionary).get("kind", ""))
var tier := String((tok as Dictionary).get("tier", ""))
var row: Dictionary = db.shop_pool_row(kind)
var display := String(row.get("display_name", kind))
var value := int(db.adventure.bonus_value(kind, tier))
if row.is_empty() and kind == "relic":
var rrow: Dictionary = db.relic_row(String(tok.get("relic_id", "")))
display = String(rrow.get("display_name", "流派件"))
value = 0
out.append({
"kind_id": kind,
"tier": tier,
"display_name": String(row.get("display_name", kind)),
"value": int(db.adventure.bonus_value(kind, tier)),
"relic_id": String(tok.get("relic_id", "")),
"display_name": display,
"value": value,
"price": pool_price(kind),
"stock_left": pool_stock(kind),
})