Files
gplan-2/game/data/tables/feats.tres
T
DKChan 32fdf957fd refactor(代码术语): 卡① flag→seal 全族换代+game/ 禁用词清扫(迭代 31 卡①)
标识符面:flag_*→seal_ 族(含 Godot 信号 flag_judged→seal_judged 与连接/回调同名、
FACTS 两键 flags_count→seals_count/dug_under_flag→dug_under_seal 全链、
.tres 键名与 schema .gd 同批同步);显式豁免零改动=size_flags_*(Godot 布局属性)+_fatal_flag。
中文面:金币→GP(金币袋→GP 袋)/插旗→封印/雷格→危险格/惩罚格→危险格/旗→封印·封印印记族,
game/ 内 *.gd/.tres/.md/.json 四类禁用词与 flag 双双零命中(V1/V4)。
守卫字面量不动(被检查的禁字不是使用):smoke_all V21 零「雷/旗」检查面、
ui_font_asset_test 字形集攻/雷/旗/封 保持原断言逻辑。
代拍板:板面单字槽 glyph「旗」→「封」(禁字纪律+单字位宽,消费面四处同名随动)。
素材换代(2026-10-18 用户裁案甲):assets/art/board/flag_seal.png→seal_mark.png(素材不入 git,
盘上改名+导入重刷),代码两处 res:// 字符串+COL_FLAG/CURSOR_FLAG 常量同步,
闸件四处随批(run_all_gates.sh/render_gate.sh/golden_baseline_refresh.sh/path_check.py)。
anchor.json 键名手改,重锚与改前改后 diff 随本卡收口(同裁案甲)。

基线读数(改前,主区 ed2dfaf6):冒烟 1151 检查 0 失败/单元 34 套全绿/探针 --click
存量红仅 screen_flow_probe(user:// 断点污染在册已知项)。
改后同批读数(本 worktree):冒烟 1151 检查 0 失败/探针 --click 同一存量红、其余全绿。
2026-10-19 02:52:38 +08:00

854 lines
15 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 断言钉住该口径)。
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
}
}
]
}
]