奇物批T3+T4:relic_*→feat_*词族全换(feat_table.gd/feats.tres/feats_engine.gd三文件改名+.uid+feat_flags/feat_id/feat_row等全token+config_db注册键feats两端+entities.yaml换代注记——kind值relic/身份前缀relic:/relics存档键/摘要键按数据契约保留);T4渠道白名单过滤(_draw_curio_candidates(channel):通关渠道只出专长/节点渠道零专长——过滤式不拆池,TIER_QUOTAS锚零改动,devour货架保底随渠道定位退役,迁移保feat_id,pick_curio测试feat_id透传;冒烟773/0+run_all 16全绿+断点往返PASS)
This commit is contained in:
1 parent
8e2694de49
commit
6812ebbb73
24 files changed
+385
-384
No files matched your search
+13
-30
@@ -479,7 +479,7 @@ func _start_battle(node: Dictionary) -> bool:
|
||||
"hero_armor_class": effective_ac(), "hero_ap_bonus": effective_ap_bonus(),
|
||||
"attunement": _attunement,
|
||||
"attune_charges": _attune_charges,
|
||||
"relics": _relics,
|
||||
"feats": _feats,
|
||||
"tree_rules": _tree_rules,
|
||||
"node_type": String(node.get("type", ""))}):
|
||||
push_error("[关卡节点地图] 战斗启动失败(depth %s)" % str(node.get("node_depth", -1)))
|
||||
@@ -591,18 +591,18 @@ func set_attunement(ids: Array) -> void:
|
||||
|
||||
|
||||
# 特性持有集注入(迭代 12 T1——AdventureRunner._start_current_level 唯一调用方;begin_battle
|
||||
# enc.relics 携带进战斗求值;**共享引用不复制**——关内奖励节点兑付的 relic 须当关后续战斗生效
|
||||
# enc.feats 携带进战斗求值;**共享引用不复制**——关内奖励节点兑付的 relic 须当关后续战斗生效
|
||||
# (attune_charges 共享账本同款);空集=零扰动)
|
||||
var _relics: Array = []
|
||||
var _feats: Array = []
|
||||
|
||||
|
||||
func set_relics(ids: Array) -> void:
|
||||
_relics = ids
|
||||
func set_feats(ids: Array) -> void:
|
||||
_feats = ids
|
||||
|
||||
|
||||
# 特性持有集读面(迭代 12 呈现补齐——HUD C 区特性段数据源)
|
||||
func relics_held() -> Array:
|
||||
return _relics.duplicate()
|
||||
func feats_held() -> Array:
|
||||
return _feats.duplicate()
|
||||
|
||||
|
||||
# 树 rule 键集注入(迭代 12 T10——begin_battle enc.tree_rules 携带;Fork 激活侧 effects)
|
||||
@@ -638,7 +638,7 @@ func grant_treasure_item(item_id: String, source: String) -> Dictionary:
|
||||
|
||||
# 三选一 GP 袋件入账(迭代 10——钱包收口扩「奖励入账」入口;复用战斗完成同一入账原语,
|
||||
# wallet_changed 载荷带 source 供呈现归因)
|
||||
func grant_bonus_gp(amount: int) -> void:
|
||||
func grant_curio_gp(amount: int) -> void:
|
||||
gp = maxi(0, gp + amount)
|
||||
wallet_changed.emit("gain", gp, {"amount": amount, "source": "curio_pick"})
|
||||
|
||||
@@ -779,26 +779,9 @@ 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 # 换一张即止
|
||||
# 商店保底退役(迭代 15 卡② T4——渠道轴定位裁决:商店渠道只出属性值提升+资源,专长在非 Boss
|
||||
# 渠道只以门票形态出现(奇物.md v2.7/A4 断言)。迭代 12 T6「货架零特性挤卡换吞噬流件」简化口径
|
||||
# 与渠道白名单直接冲突(devour=规则改写型=专长系),随渠道分离退役;专长商店入口=T5 门票。
|
||||
|
||||
|
||||
# 库存余量(TP0——令牌库内该 kind 剩余枚数单点读;未注入/防御读 = 0)
|
||||
@@ -836,13 +819,13 @@ func shop_shelf() -> Array:
|
||||
var display := String(row.get("display_name", kind))
|
||||
var value := int(db.adventure.curio_value(kind, tier))
|
||||
if row.is_empty() and kind == "relic":
|
||||
var rrow: Dictionary = db.relic_row(String(tok.get("relic_id", "")))
|
||||
var rrow: Dictionary = db.feat_row(String(tok.get("feat_id", "")))
|
||||
display = String(rrow.get("display_name", "特性"))
|
||||
value = 0
|
||||
out.append({
|
||||
"kind_id": kind,
|
||||
"tier": tier,
|
||||
"relic_id": String(tok.get("relic_id", "")),
|
||||
"feat_id": String(tok.get("feat_id", "")),
|
||||
"display_name": display,
|
||||
"value": value,
|
||||
"price": pool_price(kind),
|
||||
|
||||
Reference in new issue
Block a user