Files
gplan-2/game/data/tables/feats.tres
T
DKChan 072c19b4a5 feat(凭证件裁削): 卡② 同调电池删除+完美保险迁专长+配额净删落地(迭代 31 卡②)
用户 2026-10-18 逐裁四项落码:
- T1/T2 同调电池整件删除:CURIO_KINDS 摘 kind、三字段与三处分发表分支删净、
  runner 侧 _battery_pending/断点键/getter/choose_battery_target 全清(呈现层零接线=有账本无入口)。
- T3 完美保险出池:kind/字段/分发摘除,_pending_insurance 与 level_runner 注入通道
  (voucher_insurance 键、set_voucher_grants 第三参)整链拆除,battle_orchestrator._fx_insurance 删。
- T4 引擎扩签 forgive_seal_miss(EFFECT_KINDS 31→32)+两账相减:新增 _perfect_forgiven 单向累加、
  谓词抽成 perfect_sweep_earned()(有效误标=误标总数−豁免数),_perfect_hit_false 保持纯净=契约 2;
  seal_missed 发射时机与消费点零改动=契约 3(危险直觉·守同事件订阅面在验收组里对拍)。
- T5 feats.tres 第 30 行完美保险专长:rarity rare/cap 省略/domain=battle 显式写出(战斗域首例)/
  desc「本场首次封印落空,不计入完美封印判定」;限次由行 when counter(insurance_used) lt 1 承载,
  do 自带 counter_id 记账由授予段消费点落账(代拍板 3 选型:单行落表,理由见实现报告)。
- T6 配额净删:TIER_QUOTAS rare 9→7、令牌池总量 104→102,validate() 硬断言过;smoke 配额锚/牌库
  构成/专长行数随批换代。
- T7 验收:feat_vouchers_test 39 项全绿(出池反例/断点缺键兼容/账本保留/配额锚/装载/限次一次/
  计数纯净/两账相减真值表/跨战清零/事件不吞)+forge_table 词表闭集断言 31→32。
  变异验证 6 条:5 条证红;「domain battle→adventure」在本 rig 不可观测(未红),已如实登记。
- 存量缺陷顺带修:旧 _emit_row("insurance_used","",…) 空来源会触发行来源断言(旧路径无消费点故从未走红),
  新订阅面给出 source_class=seal_miss。

基线(卡① 合回后 master 4f953ce8):冒烟 1151/0、单元 34 套全绿、探针 --click 全绿(user:// 存档移开态)。
2026-10-19 04:45:49 +08:00

883 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[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")
; 迭代 20 专长实装批 T3——专长重设计 27+2 件换代(奇物.md 基础件表 27 件+迁入登记 2 件=29 行;
; 件数口径=卡文 §10.4 推荐案:29 行=基础 27+迁入 2,V2/V3 断言按落表实数)。旧 27 件随本批整体
; 退役(素材库表二);订阅行 on/when/do 词表=效果引擎封闭集;rarity 四级直映射令牌档;cap=已拿
; 上限(案②解耦——拿了才计刷出不计);数值全 provisional 归调参批;desc 禁「雷/旗」字面
; (契约 6 命名纪律:旗〔旧称〕=封印、危险格=陷阱/巢穴风味层)。dispatch 预评估口径注记:「每第 N 次/积
; 满触发」系 when 于命中前读计数器现值——行 when 按 N-1 落值(双管镐 mod_eq ref 1/地质学家 eq 3/
; 跳格 eq 2/封印匠 mod_eq ref 2/保险丝 eq 1——effect_words_t1_test mod_eq 断言钉住该口径)。
; 迭代 31 卡② 凭证件裁削批 T5——完美保险自资源类迁入专长表(第 30 行):rarity rare/cap 省略
; (承 twin_pick/seal_burst 惯例)/domain=battle 显式写出(现役 29 行全为 adventure 或不写,本行
; 系战斗域首例——豁免计数每战清零)。限次落法=单订阅行:when counter(insurance_used) lt 1 承载
; 「本场首次」,do 自带 counter_id 记账由授予段消费点落账(dispatch 不代执行计数器)。
rows = [
{
"feat_id": "twin_pick",
"display_name": "双管镐",
"rarity": "common",
"desc": "每第 2 次付费开格返 1 AP",
"triggers": [
{
"on": "dig_paid",
"do": {
"kind": "counter_add",
"counter_id": "twin_digs",
"value": 1,
"domain": "adventure"
}
},
{
"on": "dig_paid",
"when": [
{
"fact": "counter",
"id": "twin_digs",
"op": "mod_eq",
"value": 2,
"ref": 1
}
],
"do": {
"kind": "grant_ap",
"value": 1
}
}
]
},
{
"feat_id": "geologist",
"display_name": "地质学家",
"rarity": "common",
"desc": "每首开一种新类型资源格集 1 点,满 4 种→揭示 1 格",
"triggers": [
{
"on": "dig_reveal",
"when": [
{
"fact": "new_resource_type",
"op": "eq",
"value": true
}
],
"do": {
"kind": "counter_add",
"counter_id": "geo_types",
"value": 1
}
},
{
"on": "dig_reveal",
"when": [
{
"fact": "counter",
"id": "geo_types",
"op": "eq",
"value": 3
}
],
"do": {
"kind": "reveal_tiles",
"value": 1
}
},
{
"on": "dig_reveal",
"when": [
{
"fact": "counter",
"id": "geo_types",
"op": "eq",
"value": 3
}
],
"do": {
"kind": "counter_add",
"counter_id": "geo_types",
"set": 0
}
}
]
},
{
"feat_id": "hard_hat",
"display_name": "安全帽",
"rarity": "excellent",
"desc": "开安全格攒 1 层;触陷阱耗层,每层减 1 伤害(一次清零)",
"triggers": [
{
"on": "dig_reveal",
"do": {
"kind": "counter_add",
"counter_id": "helm_layers",
"value": 1
}
},
{
"on": "mine_hit",
"do": {
"kind": "damage_reduce",
"value_counter": "helm_layers"
}
},
{
"on": "mine_hit",
"when": [
{
"fact": "counter",
"id": "helm_layers",
"op": "gte",
"value": 1
}
],
"do": {
"kind": "counter_add",
"counter_id": "helm_layers",
"set": 0
}
}
]
},
{
"feat_id": "skip_mining",
"display_name": "跳格采掘",
"rarity": "excellent",
"desc": "挖开空白格攒 1 点,3 点→揭示 1 格",
"triggers": [
{
"on": "dig_reveal",
"when": [
{
"fact": "is_blank_zero",
"op": "eq",
"value": true
}
],
"do": {
"kind": "counter_add",
"counter_id": "skip_pts",
"value": 1
}
},
{
"on": "dig_reveal",
"when": [
{
"fact": "counter",
"id": "skip_pts",
"op": "eq",
"value": 2
}
],
"do": {
"kind": "reveal_tiles",
"value": 1
}
},
{
"on": "dig_reveal",
"when": [
{
"fact": "counter",
"id": "skip_pts",
"op": "eq",
"value": 2
}
],
"do": {
"kind": "counter_add",
"counter_id": "skip_pts",
"set": 0
}
}
]
},
{
"feat_id": "blast_accounting",
"display_name": "爆破会计",
"rarity": "common",
"desc": "轮末:本轮开格花费 AP≥5 → +1 GP",
"triggers": [
{
"on": "dig_paid",
"do": {
"kind": "counter_add",
"counter_id": "round_blast_spent",
"value": 1,
"value_event": "ap_cost",
"reset_at": "round_start"
}
},
{
"on": "round_end",
"when": [
{
"fact": "counter",
"id": "round_blast_spent",
"op": "gte",
"value": 5
}
],
"do": {
"kind": "grant_gp",
"value": 1
}
}
]
},
{
"feat_id": "frontier_miner",
"display_name": "边陲矿工",
"rarity": "common",
"desc": "挖开棋盘边缘格:产出 +1",
"triggers": [
{
"on": "dig_reveal",
"when": [
{
"fact": "is_edge_cell",
"op": "eq",
"value": true
}
],
"do": {
"kind": "grant_material",
"value": 1
}
}
]
},
{
"feat_id": "seal_echo",
"display_name": "封印回响",
"rarity": "excellent",
"desc": "封印命中计数;轮末计数≥2 → 返 1 AP(下轮)",
"triggers": [
{
"on": "seal_hit",
"do": {
"kind": "counter_add",
"counter_id": "echo_seals",
"value": 1
}
},
{
"on": "round_end",
"when": [
{
"fact": "counter",
"id": "echo_seals",
"op": "gte",
"value": 2
}
],
"do": {
"kind": "grant_ap",
"value": 1,
"mode": "queue"
}
},
{
"on": "round_end",
"when": [
{
"fact": "counter",
"id": "echo_seals",
"op": "gte",
"value": 2
}
],
"do": {
"kind": "counter_add",
"counter_id": "echo_seals",
"set": 0
}
}
]
},
{
"feat_id": "warning_beacon",
"display_name": "示警烟火",
"rarity": "common",
"desc": "封印命中:揭示周围 3×3 的资源类型(不揭安危)",
"triggers": [
{
"on": "seal_hit",
"do": {
"kind": "preview_area",
"value": 1
}
}
]
},
{
"feat_id": "seal_smith",
"display_name": "封印匠",
"rarity": "rare",
"desc": "封印命中每第 3 次 → 该危险格中立移除",
"triggers": [
{
"on": "seal_hit",
"do": {
"kind": "counter_add",
"counter_id": "smith_seals",
"value": 1
}
},
{
"on": "seal_hit",
"when": [
{
"fact": "counter",
"id": "smith_seals",
"op": "mod_eq",
"value": 3,
"ref": 2
}
],
"do": {
"kind": "remove_mines",
"value": 1
}
}
]
},
{
"feat_id": "seal_stake",
"display_name": "封印桩",
"rarity": "common",
"desc": "封印命中:本轮 AC +1",
"triggers": [
{
"on": "seal_hit",
"do": {
"kind": "ac_bonus",
"value": 1,
"mode": "round"
}
}
]
},
{
"feat_id": "pain_memory",
"display_name": "疼痛记忆",
"rarity": "rare",
"desc": "触陷阱攒 1 层;下次攻击附加层值伤害,用后清零",
"triggers": [
{
"on": "mine_hit",
"do": {
"kind": "counter_add",
"counter_id": "pain_layers",
"value": 1,
"domain": "adventure"
}
},
{
"on": "attack_commit",
"when": [
{
"fact": "counter",
"id": "pain_layers",
"op": "gte",
"value": 1
}
],
"do": {
"kind": "attack_bonus",
"value_counter": "pain_layers"
}
},
{
"on": "attack_commit",
"when": [
{
"fact": "counter",
"id": "pain_layers",
"op": "gte",
"value": 1
}
],
"do": {
"kind": "counter_add",
"counter_id": "pain_layers",
"set": 0
}
}
]
},
{
"feat_id": "fuse_wire",
"display_name": "保险丝",
"rarity": "rare",
"desc": "单次受伤 ≥5 攒 1 点,2 点→护盾 1 层",
"triggers": [
{
"on": "damage_taken",
"when": [
{
"fact": "amount",
"op": "gte",
"value": 5
}
],
"do": {
"kind": "counter_add",
"counter_id": "fuse_pts",
"value": 1
}
},
{
"on": "damage_taken",
"when": [
{
"fact": "counter",
"id": "fuse_pts",
"op": "eq",
"value": 1
}
],
"do": {
"kind": "shield",
"value": 1
}
},
{
"on": "damage_taken",
"when": [
{
"fact": "counter",
"id": "fuse_pts",
"op": "eq",
"value": 1
}
],
"do": {
"kind": "counter_add",
"counter_id": "fuse_pts",
"set": 0
}
}
]
},
{
"feat_id": "blood_insight",
"display_name": "见血开窍",
"rarity": "common",
"desc": "触陷阱:揭示 1 格",
"triggers": [
{
"on": "mine_hit",
"do": {
"kind": "reveal_tiles",
"value": 1
}
}
]
},
{
"feat_id": "trap_instinct",
"display_name": "陷阱本能",
"rarity": "excellent",
"desc": "触陷阱:本轮攻击 +2(走攻击面板乘区)",
"triggers": [
{
"on": "mine_hit",
"do": {
"kind": "counter_add",
"counter_id": "instinct_atk",
"value": 2,
"reset_at": "round_start"
}
},
{
"on": "attack_commit",
"do": {
"kind": "attack_bonus",
"value_counter": "instinct_atk"
}
}
]
},
{
"feat_id": "chain_traps",
"display_name": "连环陷阱",
"rarity": "excellent",
"desc": "同轮第 2 次及以后的触陷阱:每次额外 +1 层(疼痛记忆同账)",
"triggers": [
{
"on": "mine_hit",
"do": {
"kind": "counter_add",
"counter_id": "round_mines",
"value": 1,
"reset_at": "round_start"
}
},
{
"on": "mine_hit",
"when": [
{
"fact": "counter",
"id": "round_mines",
"op": "gte",
"value": 1
}
],
"do": {
"kind": "counter_add",
"counter_id": "pain_layers",
"value": 1,
"domain": "adventure"
}
}
]
},
{
"feat_id": "trap_burst",
"display_name": "陷阱爆发",
"rarity": "rare",
"desc": "触陷阱:全体存活敌受陷阱伤×1.5 直伤",
"triggers": [
{
"on": "mine_hit",
"do": {
"kind": "blast_scaled",
"mult": 1.5
}
}
]
},
{
"feat_id": "blood_honey",
"display_name": "血蜜",
"rarity": "common",
"desc": "触陷阱:回复 2 生命(陷阱伤仍净亏血)",
"triggers": [
{
"on": "mine_hit",
"do": {
"kind": "heal",
"value": 2
}
}
]
},
{
"feat_id": "stone_skin",
"display_name": "石肤",
"rarity": "excellent",
"desc": "受伤:AC +1(本场累计,上限 3)",
"triggers": [
{
"on": "damage_taken",
"do": {
"kind": "ac_bonus",
"value": 1,
"mode": "battle",
"cap": 3
}
}
]
},
{
"feat_id": "last_stand",
"display_name": "背水",
"rarity": "rare",
"desc": "生命≤50%:受伤额外 −2",
"triggers": [
{
"on": "damage_taken",
"when": [
{
"fact": "hp_ratio",
"op": "lte",
"value": 50
}
],
"do": {
"kind": "damage_reduce",
"value": 2
}
}
]
},
{
"feat_id": "breaker_strike",
"display_name": "破封一击",
"rarity": "excellent",
"desc": "挖开带封印的危险格:+1 层(疼痛记忆同账)",
"triggers": [
{
"on": "mine_hit",
"when": [
{
"fact": "dug_under_seal",
"op": "eq",
"value": true
}
],
"do": {
"kind": "counter_add",
"counter_id": "pain_layers",
"value": 1,
"domain": "adventure"
}
}
]
},
{
"feat_id": "map_exchange",
"display_name": "弃图兑换",
"rarity": "excellent",
"desc": "停手:剩余 AP≥3 → 折为攻击伤害",
"triggers": [
{
"on": "dig_stop",
"when": [
{
"fact": "ap_left",
"op": "gte",
"value": 3
}
],
"do": {
"kind": "counter_add",
"counter_id": "stop_swap",
"value": 0,
"value_event": "ap_left"
}
},
{
"on": "attack_commit",
"when": [
{
"fact": "counter",
"id": "stop_swap",
"op": "gte",
"value": 1
}
],
"do": {
"kind": "attack_bonus",
"value_counter": "stop_swap"
}
},
{
"on": "attack_commit",
"when": [
{
"fact": "counter",
"id": "stop_swap",
"op": "gte",
"value": 1
}
],
"do": {
"kind": "counter_add",
"counter_id": "stop_swap",
"set": 0
}
}
]
},
{
"feat_id": "last_drop",
"display_name": "一滴不剩",
"rarity": "common",
"desc": "上轮 AP 耗尽 → +1 AP",
"triggers": [
{
"on": "round_start",
"when": [
{
"fact": "ap_exhausted_last",
"op": "eq",
"value": true
}
],
"do": {
"kind": "grant_ap",
"value": 1,
"mode": "queue"
}
}
]
},
{
"feat_id": "market_close",
"display_name": "收盘",
"rarity": "common",
"desc": "轮末:本轮开格 ≥8 → +1 GP",
"triggers": [
{
"on": "dig_reveal",
"do": {
"kind": "counter_add",
"counter_id": "round_digs",
"value": 1,
"reset_at": "round_start"
}
},
{
"on": "round_end",
"when": [
{
"fact": "counter",
"id": "round_digs",
"op": "gte",
"value": 8
}
],
"do": {
"kind": "grant_gp",
"value": 1
}
}
]
},
{
"feat_id": "execution_scholar",
"display_name": "斩首学者",
"rarity": "common",
"desc": "击杀:揭示 1 格",
"triggers": [
{
"on": "kill",
"do": {
"kind": "reveal_tiles",
"value": 1
}
}
]
},
{
"feat_id": "executioner",
"display_name": "处刑台",
"rarity": "excellent",
"desc": "敌血量≤30%:主角对其伤害 +2",
"triggers": [
{
"on": "enemy_hp_threshold",
"when": [
{
"fact": "pct",
"op": "lte",
"value": 30
}
],
"do": {
"kind": "target_attack_bonus",
"value": 2
}
}
]
},
{
"feat_id": "field_dressing",
"display_name": "战地包扎",
"rarity": "common",
"desc": "战斗胜利:回复 3 生命",
"triggers": [
{
"on": "battle_won",
"do": {
"kind": "heal",
"value": 3
}
}
]
},
{
"feat_id": "blood_tax",
"display_name": "血税",
"rarity": "rare",
"desc": "本局每触一次陷阱,最大生命 −2;每封印命中一次,攻击 +1(下一战起生效)",
"triggers": [
{
"on": "mine_hit",
"do": {
"kind": "bonus_delta",
"axis": "max_hp",
"delta": -2
}
},
{
"on": "seal_hit",
"do": {
"kind": "bonus_delta",
"axis": "atk",
"delta": 1
}
}
]
},
{
"feat_id": "venom_edge",
"display_name": "淬毒刃纹",
"rarity": "rare",
"desc": "克制命中追加 +2 伤害",
"triggers": [
{
"on": "clamp_check",
"when": [
{
"fact": "matchup",
"op": "advantageous"
}
],
"do": {
"kind": "modify_ticket",
"mode": "clamp_bonus",
"delta": 2
}
}
]
},
{
"feat_id": "seal_burst",
"display_name": "封印爆裂",
"rarity": "rare",
"desc": "封印命中:全体存活敌 3 点群伤",
"triggers": [
{
"on": "seal_hit",
"do": {
"kind": "open_ticket",
"channel": "blast",
"value": 3
}
}
]
},
{
"feat_id": "perfect_insurance",
"display_name": "完美保险",
"rarity": "rare",
"desc": "本场首次封印落空,不计入完美封印判定",
"triggers": [
{
"on": "seal_missed",
"when": [
{
"fact": "counter",
"id": "insurance_used",
"op": "lt",
"value": 1
}
],
"do": {
"kind": "forgive_seal_miss",
"counter_id": "insurance_used",
"value": 1,
"domain": "battle"
}
}
]
}
]