秘宝六件迁移+掘进蓄能受理闸数据化+令牌兑付 match 收敛进效果类型(T4+T5——内容数据驱动扩展批)
T4 秘宝侧(六件按 id 硬编码全部拆除,行为与迁移前逐位一致): - 淬毒刃纹:begin_battle attune_venom 注入+伤害控制器特判分支拆除——行 triggers clamp_check modify(mode:clamp_bonus) 双订阅(pierce_vs_ward / magic_vs_heavy eq 行=旧「pierce|magic × 矩阵>0」 的精确集;mode 路由=主角攻击面专享,棋盘克制窗只消费无模式 delta——棋盘不吃毒面保持)。 - 偏运硬币:reward_economy.luck_bias 注入拆除——行 triggers reward_roll bias_rewards 订阅, 发射点命中合计经 _biased_cell_rows 入参(合成序「图级先件级后」不变);冒烟偏斜段断言面随迁。 - 工兵晨令:编排器两处直调入队拆除——行 triggers round_start grant_ap(mode:queue) 订阅, when round_index ≤ effective_rounds(when value_from 行字段定影——新查询面,悬空校验同面补齐)。 - 惊巢反制:_grant_routed 按 id 减半特判拆除——mine_hit damage_mult(50) 订阅命中经 halve_pct 入参(ceil(power×50%) 与旧 ceil(power/2) 逐位一致)+ open_ticket(channel:reflect) 订阅施加。 - 标中殉爆:flag_hit 按 id 开单特判拆除——行 triggers open_ticket(channel:blast, value_from magnitude) 订阅施加(施加位=迁移前开单位:殉爆→净化→图谱)。 - 掘进蓄能:use_treasure 按 id 受理闸特判拆除——treasure_used counter_spend 订阅施加(消耗成功 才受理、积点不足拒绝零消耗,进度文案逐字保留);积点账本迁效果引擎计数器 dig_charge_bank (模判定留编排器侧:「每 N 格积 1 点」在发射点施加架构下无法行内表达先增后判——when 于 dispatch 预评估,逐位等价优先;词汇表边界注记留档,遗留观察项随出口报告呈报)。 - pick_refresh:adventure_runner 按 id 特判拆除——effect_kinds bonus_refresh kind 分发查询 (装配集行 magnitude 合计;刷新件类加件零 id 分支)。 - 主动件 kind 词族换代(reveal_tiles/preview/grant_ap/remove_mines/refresh_pick)挂账保留: 本批只要求 pick_refresh 合流;全词族 rename 波及库存/呈现/单测零行为收益,不随批(出口报告 遗留人闸项呈报)。 - curio_interact_controller 秘宝卡片文案表值化:kind 硬编码映射拆除,读行 desc——13 件 desc 补齐(措辞按现行卡片文本逐字迁移;掘进蓄能/失义件补实际摘要=文案微调呈报级)。 - schema 适配:triggers 与 effect_kinds 互斥校验收窄至 passive 行(active_charged 双形合法= effect_kinds 主动分发+triggers 受理闸);trigger 行豁免「非 N 值 kind magnitude 应 0」与 「非 ap_rounds_front 行 effective_rounds 应 0」两面(行字段=value_from 取数源)。 T5 令牌/树收尾: - _apply_curio_pick match 收敛进效果类型:属性值提升四类(attack/max_hp/armor/ap)改 adventure_table.CURIO_APPLY_ROUTES 声明路由(加算落点键,与效果引擎加法族同构)——加新加算类 令牌=表行+配额/件值键零代码;gp/heal/refresh/relic 副作用通道面显式分支保留。 - meta_tree 规则键同面:先手压制/稳健拓荒两键已在 T3/T4 随 round_start/damage_taken 订阅行 走效果引擎同面(rebuild 合成订阅+发射点施加),旧直调零残留。 验证:冒烟 800 项 0 失败(三闸过)· 单元 17 套全绿。 设计权威:design/research/研究-内容数据驱动扩展架构-2026-10-06.md(案乙)。 任务书:design/research/任务书-内容数据驱动扩展批-2026-10-06.md §六 T4/T5、§五映射表秘宝侧。
This commit is contained in:
1 parent
e28a6cb3c4
commit
a33ddaf542
10 files changed
+215
-111
No files matched your search
@@ -110,8 +110,16 @@ func _push_trigger(source: String, id: String, tr: Dictionary, row: Dictionary)
|
||||
if do_d.has(pair[0]):
|
||||
do_d[pair[1]] = int(row.get(String(do_d[pair[0]]), 0))
|
||||
do_d.erase(pair[0])
|
||||
# when value_from 同面解析(行字段引用条件——dawn_order effective_rounds 先例:字面量出行=数值
|
||||
# 单一事实源破面,行引用随 rebuild 定影)
|
||||
var when_d: Array = (tr.get("when", []) as Array).duplicate(true)
|
||||
for c_v in when_d:
|
||||
var c: Dictionary = c_v as Dictionary
|
||||
if c.has("value_from"):
|
||||
c["value"] = int(row.get(String(c["value_from"]), 0))
|
||||
c.erase("value_from")
|
||||
var t := {"source": source, "id": id, "on": on,
|
||||
"when": (tr.get("when", []) as Array).duplicate(true),
|
||||
"when": when_d,
|
||||
"do": do_d}
|
||||
_triggers.append(t)
|
||||
# 计数器重置点收集(counter_add/counter_spend 行声明 reset_at)
|
||||
@@ -290,12 +298,19 @@ static func validate_trigger_row(rid: String, row: Dictionary, triggers: Array,
|
||||
var kind := String(do_d.get("kind", ""))
|
||||
if not EFFECT_KINDS.has(kind):
|
||||
errs.append({"category": "enum", "message": "%s 效果类型出域(解释器闭集): %s" % [rid, kind]})
|
||||
# value_from/delta_from/mult_from/cap_from 引用面:行字段存在性(悬空=加载致命)
|
||||
# value_from/delta_from/mult_from/cap_from 引用面:行字段存在性(悬空=加载致命)——
|
||||
# do 与 when 两侧同面(when value_from=dawn_order effective_rounds 先例)
|
||||
for vf_k in ["value_from", "delta_from", "mult_from", "cap_from"]:
|
||||
if do_d.has(vf_k):
|
||||
var fld := String(do_d.get(vf_k, ""))
|
||||
if fld != "" and not row.has(fld):
|
||||
errs.append({"category": "dangling", "message": "%s do.%s 悬空(行无字段 %s)" % [rid, vf_k, fld]})
|
||||
for c_v in (tr.get("when", []) as Array):
|
||||
var c_w: Dictionary = c_v as Dictionary
|
||||
if c_w.has("value_from"):
|
||||
var wfld := String(c_w.get("value_from", ""))
|
||||
if wfld != "" and not row.has(wfld):
|
||||
errs.append({"category": "dangling", "message": "%s when.value_from 悬空(行无字段 %s)" % [rid, wfld]})
|
||||
return mine_covered
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user