接手前任中断的 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。
573 lines
12 KiB
Plaintext
573 lines
12 KiB
Plaintext
[gd_resource type="Resource" script_class="FeatTable" load_steps=2 format=3]
|
||
|
||
[ext_resource type="Script" path="res://data/schemas/feat_table.gd" id="1"]
|
||
|
||
[resource]
|
||
script = ExtResource("1")
|
||
rows = [{
|
||
"feat_id": "arcane_ember",
|
||
"display_name": "奥术余烬",
|
||
"rarity": "common",
|
||
"archetype": "magic",
|
||
"desc": "普攻附加必中伤害",
|
||
"triggers": [{
|
||
"on": "attack_commit",
|
||
"do": {
|
||
"kind": "add_ticket_rider",
|
||
"value": 1
|
||
}
|
||
}]
|
||
}, {
|
||
"feat_id": "mana_weaver",
|
||
"display_name": "魔网织者",
|
||
"rarity": "rare",
|
||
"archetype": "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",
|
||
"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",
|
||
"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",
|
||
"desc": "标中雷额外得资源",
|
||
"triggers": [{
|
||
"on": "flag_hit",
|
||
"do": {
|
||
"kind": "grant_material",
|
||
"value": 1,
|
||
"label": "(雷区图谱)"
|
||
}
|
||
}]
|
||
}, {
|
||
"feat_id": "nest_hunter",
|
||
"display_name": "猎巢人",
|
||
"rarity": "rare",
|
||
"archetype": "flag",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"desc": "击杀半额弹射",
|
||
"triggers": [{
|
||
"on": "kill",
|
||
"do": {
|
||
"kind": "overflow",
|
||
"value": 50
|
||
}
|
||
}]
|
||
}, {
|
||
"feat_id": "chain_arrows",
|
||
"display_name": "连珠矢",
|
||
"rarity": "rare",
|
||
"archetype": "pierce",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"desc": "开格越多打得越疼",
|
||
"triggers": [{
|
||
"on": "dig_reveal",
|
||
"do": {
|
||
"kind": "counter_add",
|
||
"counter_id": "stubborn_digs",
|
||
"value": 1,
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"desc": "开格产出放大",
|
||
"triggers": [{
|
||
"on": "dig_reveal",
|
||
"do": {
|
||
"kind": "yield_mult",
|
||
"mult": 25,
|
||
"cost_mult": 25
|
||
}
|
||
}]
|
||
}, {
|
||
"feat_id": "vein_intuition",
|
||
"display_name": "矿脉直觉",
|
||
"rarity": "rare",
|
||
"archetype": "dig",
|
||
"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",
|
||
"desc": "开格产出放大",
|
||
"triggers": [{
|
||
"on": "dig_reveal",
|
||
"do": {
|
||
"kind": "yield_mult",
|
||
"mult": 50,
|
||
"cost_mult": 100
|
||
}
|
||
}]
|
||
}, {
|
||
"feat_id": "deep_drill",
|
||
"display_name": "深挖钻头",
|
||
"rarity": "rare",
|
||
"archetype": "dig",
|
||
"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",
|
||
"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",
|
||
"desc": "蓄力转减伤",
|
||
"triggers": [{
|
||
"on": "damage_taken",
|
||
"do": {
|
||
"kind": "shield",
|
||
"value": 1,
|
||
"per": "charge_layers"
|
||
}
|
||
}]
|
||
}, {
|
||
"feat_id": "patient_burst",
|
||
"display_name": "厚积薄发",
|
||
"rarity": "rare",
|
||
"archetype": "charge",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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
|
||
}
|
||
}]
|
||
}]
|
||
|
||
; 内容数据驱动扩展批(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 表迁移(措辞零变化)。
|