专长迁移完成:27 行 triggers 订阅形态全量生效+旧 23 挂点枚举消亡+消费点拆除+断言面随迁(T3——内容数据驱动扩展批)

接手前任中断的 T3 半成品(脏文件三件:battle_orchestrator/effects engine/feats.tres),方向核实无误后续做收口;
承接修正四处随本提交留痕:①perfect_defense 的 when 用了 fact 封闭 9 项外的 flags_hit_all(装载校验必红)——
改 flags_count gte 1 保守判定,全中闸=flag_settle 发射点施加面承载(载荷字段仅供观测);②has 算子语义与行
不匹配(数组包含对 String 恒假)——落非空在场判定(value 缺省)+数组包含(value 给定),查询面落法=代拍板
白名单;③前任漏写 _harmful_adjacent 助手(flag_hit 发射点调用必炸);④counter_add set 键语义 bool() 吞 0
(清零行 set:0 被当 false 走加零通道)——改 has(set) 置值模式,四处施加点同修。

本提交主干(专长族全量迁移——任务书 §六 T3):
- damage_controller:feat_flags 旗面整体退役,五事件施加面接线——attack_commit 命中随单据 context 携带
  (发射点=开单入口,任务书 §3.1 定稿位;主角攻击单恒段内首单,开单现场=结账现场),rider/改写/加值/
  段数/状态五族按迁移前算序施加(重锤两拍/专注/spike 恒全额/猎弱移档/魔网湛蓝猎手克制直调/整备每层
  +1/厚积满层倍乘/奥术+猎巢+执拗 rider 合计后档位暴击);armor_roll 免掷恒折扣、clamp_check 双面
  (hero+board_typed)delta 窗口、kill 溢出弹射(landed×value%)、damage_taken shield 加法族合计。
  _feat_clamp_bonus/13 处旗消费点拆除。
- battle_orchestrator:_combat_segment 换代(dig_streak/charge_layers 注伤害控制器运行态;连珠矢段数
  施加位紧随主角攻击单开立=迁移前开单位,flush 兑现序逐位一致);round_start 发射位前移至行动经济轮
  切换前(树规则 grant_ap queue 当轮入队当轮兑现——先手压制首轮语义锚);深挖快照滚动拆除(计数器
  reset_at 声明承载);熔火/连击旧计数变量退役。
- action_economy:feat_ap_carry/feat_dig_extra/deep_paid_count 旧注入旗拆除;dig_paid 施加面落地
  (counter_spend 对价:AP 富余付全价积计数、不足 fallback 只付基础 1——2026-10-04 降级口径逐位保留)。
- feat_table schema:HOOKS 23 挂点枚举/MINE_HOOKS/EFFECT_KEYS/hook+effects 双形态校验全删——triggers
  订阅形态唯一合法行形(行键白名单收口 feat_id/display_name/rarity/archetype/triggers/desc/note)。
- feats_engine:hooks_for 挂点投影退役(订阅装载序=feats 表序,由效果引擎 rebuild 承载)。
- battle_narrator:专长卡片文案表值化(summaries 硬编码映射拆除,读行 desc——27 件措辞逐字迁移)。
- smoke 断言面随迁(任务书 v1.1 补列项):构造表 5 行换代 triggers 形态;挂点投影断言换代订阅装载面;
  ④-⑧ 求值断言(_feat_flags_for 直呼+旗读数)全量改写为 rebuild+dispatch 命中面(27 件逐事件覆盖);
  深挖钻头付费开掘回归闸改 counter_spend 计数器面;特性卡 desc 直读断言新增。

映射表对拍注记(行为等价优先,.tres 尾注同步留痕):猎巢人/矿工的执拗映射表标 modify_ticket/attack_bonus,
现行为必中附加通道(hero_rider 后置于乘区与下限)——落 add_ticket_rider(per 取数载荷);整备军备现行为
双效果(轮末转蓄力+每层首段攻 +1)——两行订阅;深挖钻头 per-round 计数器对(paid/given)复刻旧 v2
跨轮不对称语义(given 不随轮重置)。

验证:冒烟 800 项 0 失败(三闸过)· 单元 17 套全绿 · S1 魔法流对拍预检=MC formed/off 两态与 T0 pre 锚
(83000 种子段)同种子逐位一致(2×5 局,三档只测不判)——14 件迁移行实战斗承载零分岔。

设计权威:design/research/研究-内容数据驱动扩展架构-2026-10-06.md(案乙)。
任务书:design/research/任务书-内容数据驱动扩展批-2026-10-06.md §六 T3、§五映射表、§七契约 2/4。
This commit is contained in:
DKChan committed 2026-10-06 23:20:05 +08:00
1 parent 225765f3f7
commit e28a6cb3c4
9 files changed
+982 -676

No files matched your search

+390 -92
View File
@@ -9,266 +9,564 @@ rows = [{
"display_name": "奥术余烬",
"rarity": "common",
"archetype": "magic",
"hook": "hero_attack_rider",
"effects": {
"desc": "普攻附加必中伤害",
"triggers": [{
"on": "attack_commit",
"do": {
"kind": "add_ticket_rider",
"value": 1
}
}]
}, {
"feat_id": "mana_weaver",
"display_name": "魔网织者",
"rarity": "rare",
"archetype": "magic",
"hook": "clamp_modifier",
"effects": {
"value": 1,
"polarity": "magic_vs_magic"
"desc": "克制面强化",
"triggers": [{
"on": "clamp_check",
"when": [{
"fact": "matchup",
"op": "eq",
"value": "magic_vs_magic"
}],
"do": {
"kind": "modify_ticket",
"delta": 1
}
}]
}, {
"feat_id": "azure_oath",
"display_name": "湛蓝誓约",
"rarity": "rare",
"archetype": "magic",
"hook": "clamp_modifier",
"effects": {
"value": 1,
"polarity": "magic_vs_heavy"
"desc": "克制面强化",
"triggers": [{
"on": "clamp_check",
"when": [{
"fact": "matchup",
"op": "eq",
"value": "magic_vs_heavy"
}],
"do": {
"kind": "modify_ticket",
"delta": 1
}
}]
}, {
"feat_id": "mana_resonance",
"display_name": "魔能共鸣",
"rarity": "rarest",
"archetype": "magic",
"hook": "first_dig_spell",
"effects": {
"desc": "首格追加奥术矢",
"triggers": [{
"on": "dig_reveal",
"when": [{
"fact": "is_first_dig_of_battle",
"op": "eq",
"value": true
}],
"do": {
"kind": "spawn_spell",
"value": 2
}
}]
}, {
"feat_id": "mine_atlas",
"display_name": "雷区图谱",
"rarity": "common",
"archetype": "flag",
"hook": "flag_resource",
"effects": {
"value": 1
"desc": "标中雷额外得资源",
"triggers": [{
"on": "flag_hit",
"do": {
"kind": "grant_material",
"value": 1,
"label": "(雷区图谱)"
}
}]
}, {
"feat_id": "nest_hunter",
"display_name": "猎巢人",
"rarity": "rare",
"archetype": "flag",
"hook": "nest_aura",
"effects": {
"value": 1
"desc": "控巢攻击光环",
"triggers": [{
"on": "attack_commit",
"do": {
"kind": "add_ticket_rider",
"value": 1,
"per": "nest_count"
}
}]
}, {
"feat_id": "perfect_defense",
"display_name": "完美布防",
"rarity": "rare",
"archetype": "flag",
"hook": "flag_all_hit",
"effects": {
"value": 2
"desc": "全中标旗伤加倍",
"triggers": [{
"on": "flag_settle",
"when": [{
"fact": "flags_count",
"op": "gte",
"value": 1
}],
"do": {
"kind": "modify_ticket",
"value": 2,
"mode": "flag_mult"
}
}]
}, {
"feat_id": "war_banner",
"display_name": "战旗军规",
"rarity": "rarest",
"archetype": "flag",
"hook": "flag_strike",
"effects": {
"value": 2
"desc": "标中旗必中打敌",
"triggers": [{
"on": "flag_settle",
"when": [{
"fact": "flags_count",
"op": "gte",
"value": 1
}],
"do": {
"kind": "open_ticket",
"value": 2,
"channel": "attack"
}
}]
}, {
"feat_id": "pierce_shot",
"display_name": "贯穿射击",
"rarity": "rarest",
"archetype": "pierce",
"hook": "kill_overflow",
"effects": {
"value": 1
"desc": "击杀半额弹射",
"triggers": [{
"on": "kill",
"do": {
"kind": "overflow",
"value": 50
}
}]
}, {
"feat_id": "chain_arrows",
"display_name": "连珠矢",
"rarity": "rare",
"archetype": "pierce",
"hook": "dig_count_segments",
"effects": {
"value": 2,
"cap": 2
"desc": "开格积穿刺矢",
"triggers": [{
"on": "dig_reveal",
"do": {
"kind": "counter_add",
"counter_id": "chain_digs",
"value": 1,
"reset_at": "round_start"
}
}, {
"on": "attack_commit",
"do": {
"kind": "attack_segments",
"value": 2,
"cap": 2,
"per": "dig_streak",
"divisor": 3
}
}]
}, {
"feat_id": "weak_instinct",
"display_name": "猎弱本能",
"rarity": "rare",
"archetype": "pierce",
"hook": "roll_discount",
"effects": {
"value": 1
"desc": "打轻甲更易命中",
"triggers": [{
"on": "clamp_check",
"when": [{
"fact": "matchup",
"op": "ends_with",
"value": "vs_light"
}],
"do": {
"kind": "modify_ticket",
"value": 1,
"mode": "discount_shift"
}
}]
}, {
"feat_id": "hunter_rapier",
"display_name": "猎手刺剑",
"rarity": "common",
"archetype": "pierce",
"hook": "clamp_modifier",
"effects": {
"value": 1,
"polarity": "pierce_vs_light"
"desc": "克制面强化",
"triggers": [{
"on": "clamp_check",
"when": [{
"fact": "matchup",
"op": "eq",
"value": "pierce_vs_light"
}],
"do": {
"kind": "modify_ticket",
"delta": 1
}
}]
}, {
"feat_id": "miner_stubborn",
"display_name": "矿工的执拗",
"rarity": "common",
"archetype": "normal",
"hook": "round_dig_bonus",
"effects": {
"desc": "开格越多打得越疼",
"triggers": [{
"on": "dig_reveal",
"do": {
"kind": "counter_add",
"counter_id": "stubborn_digs",
"value": 1,
"cap": 5
"reset_at": "round_start"
}
}, {
"on": "mine_hit",
"do": {
"kind": "counter_add",
"counter_id": "stubborn_digs",
"set": 0
}
}, {
"on": "attack_commit",
"do": {
"kind": "add_ticket_rider",
"value": 1,
"cap": 5,
"per": "dig_streak"
}
}]
}, {
"feat_id": "miner_hammer",
"display_name": "矿工重锤",
"rarity": "common",
"archetype": "normal",
"hook": "hit_trade",
"effects": {
"desc": "加伤换命中",
"triggers": [{
"on": "attack_commit",
"do": {
"kind": "modify_ticket",
"trade_atk": 25,
"trade_hit": 2
}
}]
}, {
"feat_id": "focus_mind",
"display_name": "专注",
"rarity": "rare",
"archetype": "normal",
"hook": "armor_roll_rewrite",
"effects": {
"value": 75
"desc": "攻击恒75%折扣",
"triggers": [{
"on": "armor_roll",
"do": {
"kind": "modify_ticket",
"value": 75,
"mode": "armor_rewrite"
}
}]
}, {
"feat_id": "armor_crack",
"display_name": "碎甲震击",
"rarity": "rare",
"archetype": "normal",
"hook": "heavy_debuff",
"effects": {
"value": 25
"desc": "打重甲附加破防",
"triggers": [{
"on": "attack_commit",
"when": [{
"fact": "matchup",
"op": "ends_with",
"value": "vs_heavy"
}],
"do": {
"kind": "apply_status",
"status_id": "off_guard"
}
}]
}, {
"feat_id": "greedy_lantern",
"display_name": "贪婪矿灯",
"rarity": "common",
"archetype": "dig",
"hook": "dig_yield_mult",
"effects": {
"desc": "开格产出放大",
"triggers": [{
"on": "dig_reveal",
"do": {
"kind": "yield_mult",
"mult": 25,
"cost_mult": 25
}
}]
}, {
"feat_id": "vein_intuition",
"display_name": "矿脉直觉",
"rarity": "rare",
"archetype": "dig",
"hook": "dig_yield_mult",
"effects": {
"desc": "开格产出放大",
"triggers": [{
"on": "dig_reveal",
"do": {
"kind": "counter_add",
"counter_id": "dig_combo",
"value": 1
}
}, {
"on": "mine_hit",
"do": {
"kind": "counter_add",
"counter_id": "dig_combo",
"set": 0
}
}, {
"on": "dig_reveal",
"do": {
"kind": "yield_mult",
"mult": 10,
"cap": 5
}
}]
}, {
"feat_id": "gambler_pact",
"display_name": "赌徒的血签",
"rarity": "rarest",
"archetype": "dig",
"hook": "dig_yield_mult",
"effects": {
"desc": "开格产出放大",
"triggers": [{
"on": "dig_reveal",
"do": {
"kind": "yield_mult",
"mult": 50,
"cost_mult": 100
}
}]
}, {
"feat_id": "deep_drill",
"display_name": "深挖钻头",
"rarity": "rare",
"archetype": "dig",
"hook": "deep_dig",
"effects": {
"ap_cost": 1,
"cap": 4
"desc": "开格2AP·产出双份",
"triggers": [{
"on": "dig_paid",
"do": {
"kind": "counter_spend",
"counter_id": "deep_paid_round",
"value": 1,
"reset_at": "round_start",
"fallback": 1
}
}, {
"on": "dig_reveal",
"when": [{
"fact": "counter",
"id": "deep_paid_round",
"op": "gte",
"value": 1
}, {
"fact": "counter",
"id": "deep_given_round",
"op": "lt_ref",
"ref": "deep_paid_round"
}],
"do": {
"kind": "grant_material",
"label": "(深挖)"
}
}, {
"on": "dig_reveal",
"when": [{
"fact": "counter",
"id": "deep_paid_round",
"op": "gte",
"value": 1
}, {
"fact": "counter",
"id": "deep_given_round",
"op": "lt_ref",
"ref": "deep_paid_round"
}],
"do": {
"kind": "counter_add",
"counter_id": "deep_given_round",
"value": 1
}
}]
}, {
"feat_id": "armory_prep",
"display_name": "整备军备",
"rarity": "rarest",
"archetype": "charge",
"hook": "ap_carry",
"effects": {
"value": 1,
"cap": 3
"desc": "剩AP转下轮攻击",
"triggers": [{
"on": "round_end",
"do": {
"kind": "grant_ap",
"mode": "transfer"
}
}, {
"on": "attack_commit",
"do": {
"kind": "attack_bonus",
"value": 1,
"per": "charge_layers"
}
}]
}, {
"feat_id": "iron_wall",
"display_name": "铁壁整备",
"rarity": "rare",
"archetype": "charge",
"hook": "charge_shield",
"effects": {
"shield_per_layer": 1
"desc": "蓄力转减伤",
"triggers": [{
"on": "damage_taken",
"do": {
"kind": "shield",
"value": 1,
"per": "charge_layers"
}
}]
}, {
"feat_id": "patient_burst",
"display_name": "厚积薄发",
"rarity": "rare",
"archetype": "charge",
"hook": "charge_spike",
"effects": {
"value": 2
"desc": "蓄满下轮爆发",
"triggers": [{
"on": "attack_commit",
"when": [{
"fact": "charge_layers",
"op": "gte",
"value": 3
}],
"do": {
"kind": "modify_ticket",
"value": 2,
"mode": "spike"
}
}]
}, {
"feat_id": "ley_harvest",
"display_name": "地脉采撷",
"rarity": "common",
"archetype": "devour",
"hook": "terrain_refund",
"effects": {
"value": 1
"desc": "吃地形伤返资源",
"triggers": [{
"on": "damage_taken",
"when": [{
"fact": "terrain_kind",
"op": "has"
}],
"do": {
"kind": "grant_material",
"label": "(地脉补偿)"
}
}]
}, {
"feat_id": "thorn_weaver",
"display_name": "荆棘编织者",
"rarity": "rare",
"archetype": "devour",
"hook": "terrain_dig_double",
"effects": {
"value": 1
"desc": "挖伤害格双产出",
"triggers": [{
"on": "damage_taken",
"when": [{
"fact": "terrain_kind",
"op": "has"
}],
"do": {
"kind": "grant_material",
"label": "(荆棘编织)"
}
}]
}, {
"feat_id": "purge_sapper",
"display_name": "净化工兵",
"rarity": "rare",
"archetype": "devour",
"hook": "flag_neutralize",
"effects": {
"value": 1
"desc": "标旗中和伤害格",
"triggers": [{
"on": "flag_hit",
"when": [{
"fact": "terrain_kind",
"op": "has"
}],
"do": {
"kind": "rewrite_board"
}
}]
}, {
"feat_id": "magma_body",
"display_name": "熔火之躯",
"rarity": "rarest",
"archetype": "devour",
"hook": "variant_counter",
"effects": {
"desc": "吃地形伤反打全体",
"triggers": [{
"on": "damage_taken",
"when": [{
"fact": "terrain_kind",
"op": "has"
}],
"do": {
"kind": "counter_add",
"counter_id": "magma_layers",
"value": 1
}
}, {
"on": "round_end",
"when": [{
"fact": "counter",
"id": "magma_layers",
"op": "gte",
"value": 1
}],
"do": {
"kind": "open_ticket",
"value": 1,
"per": "magma_layers",
"channel": "blast"
}
}, {
"on": "round_end",
"when": [{
"fact": "counter",
"id": "magma_layers",
"op": "gte",
"value": 1
}],
"do": {
"kind": "counter_add",
"counter_id": "magma_layers",
"set": 0
}
}]
}]
; 双层 BD 实施批(2026-10-04):规则改写型特性表——行 = 特性定义
; (feat_id/display_name/rarity/archetype/hook/effects)。
; T2 魔法流四件(整合定稿 §2.3 S1):奥术余烬〔普通·rider+1 必中附加〕/魔网织者〔稀有·magic vs
; magic 克制罚修正〕/湛蓝誓约〔稀有·magic vs heavy 克制加成〕/魔能共鸣〔罕见锚点·rider+2+每战首次
; 开格奥术矢——「每关首次」字面落地为「每战首次」台账披露待追认〕;magic 档一(≥2 件)rider+1 /
; 档二(≥4 件)rider 可暴击——引擎 tiers_for 承载。T3-T6 逐流派续填(flag 4/pierce 4/normal 4/
; dig 4/charge 3/devour 4——整合定稿 §2.3 七流派的件面)。
; 稀有度→投放档映射:common/rare → 稀有令牌档、rarest → 罕见令牌档(relic 永不入普通令牌档
; ——「规则改写型特性带挂稀有/罕见档」追认 b 接线口径,普通档 70 张纯数值维持)。
; 🔴 层级纪律:本表行永不入同调位(treasure_items)/局外树(T8 节点表)——规则改写型特性只走局内随机渠道。
; 数值全 provisional 归 M-4 数值批;effects 键白名单封闭(零裸 flat 同族护栏)。
; 内容数据驱动扩展批(2026-10-06 T3):专长表换代——行 = triggers 事件订阅形态
; (feat_id/display_name/rarity/archetype/desc/triggers——订阅哪个事件 on / 什么条件 when / 什么效果 do)。
; 旧 hook/effects 挂点形态随本批退役(挂点枚举消亡:事件名+效果类型取代——任务书 R4 裁决)。
; 23 挂点逐行移植映射=任务书 §五(等价性对拍底单);desc=文案表值化(呈现层读行,零硬编码)。
; 效果参数值直接写 do 字典(数值单一事实源=本表;效果引擎 DO_KEYS 白名单封闭)。
; 🔴 护栏全部保留:事件/效果/fact/算子四词表封闭(EffectEngine 常量)、行键白名单、悬空引用
; 致命、零裸 flat 禁令、流派扫雷触发铁律(每流派 ≥1 行订阅扫雷侧事件——MINE_EVENTS 同义校验)。
; 映射表对拍注记(T3 落地语义修正,行为等价优先——commit 留痕):
; - terrain_dig_double(荆棘编织者):映射表标 yield_mult(×2),现行为=第二份同格产出兑付
; (grant_material),×2 乘区对 percent 行不等价——落 grant_material。
; - flag_all_hit(完美布防):映射表标 yield_mult(旗伤乘区),现行为=旗伤单值倍增(战旗单据
; 数值改写)——落 modify_ticket(mode:flag_mult)。
; - 连珠矢/矿工的执拗 streak 取数:映射表 on:dig_reveal counter_add 形态与现行为「轮内踩雷全轮
; 清零」不等价(逐格清零后重积≠全轮判定)——计数器行保留(扫雷铁律承载),等价执行读
; attack_commit 载荷 dig_streak(战斗段全轮推导,与迁移前逐位一致)。
; - 厚积薄发:映射表 on:charge_full(满层沿)→spike,现行为=满层持续状态(层数无消耗点,沿触发
; 一次≠持续增强)——落 on:attack_commit + when(charge_layers ≥3) → modify_ticket(mode:spike),
; charge_full 事件仍埋点(R6 框架先行)。
; - 完美布防:「全中」条件装不进 fact 封闭 9 项(需 hits>0 且 misses==0 双读数)——when 落
; flags_count ≥1(可命中保守判定),全中闸=flag_settle 发射点施加面承载(载荷 flags_hit_all
; 仅供观测)——禁私开 fact(停机点纪律),查询面落法=代拍板白名单。
; - 猎巢人/矿工的执拗:映射表标 modify_ticket/attack_bonus,现行为=必中附加通道(伤害控制器
; hero_rider 后置于乘区与下限)——落 add_ticket_rider(per 取数载荷),乘区外恒定兑付逐位一致。
; - 整备军备:现行为双效果(轮末 AP 转蓄力层 + 每层下轮首段攻 +1)——两行订阅:
; round_end grant_ap(mode:transfer) + attack_commit attack_bonus(per:charge_layers)。
; 数值全 provisional 归 M-4 数值批;desc 文案=旧 summaries 表迁移(措辞零变化)。