奇物批T3+T4:relic_*→feat_*词族全换(feat_table.gd/feats.tres/feats_engine.gd三文件改名+.uid+feat_flags/feat_id/feat_row等全token+config_db注册键feats两端+entities.yaml换代注记——kind值relic/身份前缀relic:/relics存档键/摘要键按数据契约保留);T4渠道白名单过滤(_draw_curio_candidates(channel):通关渠道只出专长/节点渠道零专长——过滤式不拆池,TIER_QUOTAS锚零改动,devour货架保底随渠道定位退役,迁移保feat_id,pick_curio测试feat_id透传;冒烟773/0+run_all 16全绿+断点往返PASS)

This commit is contained in:
DKChan committed 2026-10-05 19:28:20 +08:00
1 parent 8e2694de49
commit 6812ebbb73
24 files changed
+385 -384

No files matched your search

+1 -1
View File
@@ -13,7 +13,7 @@
class_name AdventureTable
extends Resource
## 概念指路:本表的属性值提升与资源,与 relics.tres 的专长,同属一个对象——
## 概念指路:本表的属性值提升与资源,与 feats.tres 的专长,同属一个对象——
## 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。
## 它们是它的分类轴上的枚举(专长 / 属性值提升 / 资源),不是三套系统;
## 本表承载属性值提升与资源的种类配额与件值。
@@ -6,25 +6,25 @@
# 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。
# 它们是它分类轴上的枚举(专长 / 属性值提升 / 资源),不是三套系统;本表承载「专长」(专长 Feat)的逐项定义。
# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「专长」;
# 表名与 relic_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。
# 表名与 feat_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。
# 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见奇物文档 2.1 节。)
# 数据配置 RelicTable schema(奇物·专长定义表;行 = Dictionary 键 relic_id,Rule 4 豁免
# 数据配置 FeatTable schema(奇物·专长定义表;行 = Dictionary 键 feat_id,Rule 4 豁免
# 定义表——TreasureItemTable 先例)。
# 行字段:relic_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名——
# 行字段:feat_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名——
# 投放档映射:common/rare→稀有令牌档、rarest→罕见令牌档;relic 令牌永不入普通档=「挂稀有/罕见档」
# 追认 b 接线口径)/ archetype ∈ ARCHETYPES 七流派标签 / hook ∈ HOOKS 挂点枚举(结算段槽——整合定稿
# §2.1 哈迪斯恩赐槽同构)/ effects Dictionary(hook 消费参数,provisional 投值)。
# 正负双修(整合定稿 B2 判据):effects 允许负向键(cost_* 族)——纯增益件须专项论证(反例 B-3),加载期
# 仅校验键域不禁纯增益(专项论证件以 positive_only 批注登记,人工清单呈报)。
# 档位激活(整合定稿 设计工具 1——以撒套装/小骨铭文):同标签计数 ≥2→档一(流派核心规则)/≥4→档二
# (完全体);散件单体保底=每件效果独立生效,档位只做质变(反例 B-2)——引擎纯函数 RelicsEngine。
# (完全体);散件单体保底=每件效果独立生效,档位只做质变(反例 B-2)——引擎纯函数 FeatsEngine。
# 🔴 层级纪律(任务书红线 2):专长只走局内随机渠道(三选一/商店/格面)——本表行永不入同调位
# (treasure_items 表)/局外树(T8 节点表);扫雷触发点铁律:每流派 ≥1 行 hook ∈ MINE_HOOKS(加载校验,
# 违反=红线①触碰面)。
class_name RelicTable
class_name FeatTable
extends Resource
@export var rows: Array = [] # Array[Dictionary] 键 relic_id
@export var rows: Array = [] # Array[Dictionary] 键 feat_id
## 流派标签词表(七核心——喂雷/淘金不在本批,R5 甲/缓议)
const ARCHETYPES := ["magic", "pierce", "normal", "dig", "flag", "charge", "devour"]
@@ -85,12 +85,12 @@ func validate() -> Array:
return errs # 空表合法态(T1 基建先行——T2 起逐流派填行)
var seen := {}
for row in rows:
var rid: String = row.get("relic_id", "")
var rid: String = row.get("feat_id", "")
if rid == "":
errs.append({"category": "domain", "message": "relic_id 空"})
errs.append({"category": "domain", "message": "feat_id 空"})
continue
if seen.has(rid):
errs.append({"category": "dup_key", "message": "relic_id 重复: %s" % rid})
errs.append({"category": "dup_key", "message": "feat_id 重复: %s" % rid})
continue
seen[rid] = true
if String(row.get("display_name", "")) == "":
@@ -104,7 +104,7 @@ func validate() -> Array:
if not HOOKS.has(hook):
errs.append({"category": "enum", "message": "%s hook 出域(挂点枚举封闭): %s" % [rid, hook]})
for k in row.keys():
if not ["relic_id", "display_name", "rarity", "archetype", "hook", "effects", "note"].has(String(k)):
if not ["feat_id", "display_name", "rarity", "archetype", "hook", "effects", "note"].has(String(k)):
errs.append({"category": "zero_flat", "message": "%s 行键出白名单: %s" % [rid, String(k)]})
var fx: Dictionary = row.get("effects", {}) as Dictionary
for ek in fx.keys():
@@ -126,8 +126,8 @@ func validate() -> Array:
return errs
func row_by_id(relic_id: String) -> Dictionary:
func row_by_id(feat_id: String) -> Dictionary:
for row in rows:
if String(row.get("relic_id", "")) == relic_id:
if String(row.get("feat_id", "")) == feat_id:
return row
return {}
File renamed without changes.
+1 -1
View File
@@ -3,7 +3,7 @@
# A/B 免费切换、彩蛋觉醒能否机械承载(P0——迭代 12 批次二 T8,R1 甲融合案)
# Date: 2026-10-04(双层 BD 实施批 T8;设计权威 双层BD体系-整合定稿-2026-10-03 §1.4)
# 数据配置 MetaTreeTable schema(元进度 回填 owner 批末落文;行 = Dictionary 键 node_id,Rule 4 豁免
# 定义表——RelicTable 先例)。
# 定义表——FeatTable 先例)。
# 行字段:node_id / display_name / vein ∈ VEINS(spine=主干脊柱 row-gating,GP 买深度;forge=锻造脉
# 数值专精;keystone=钥石脉内容解锁;attune=同调脉槽位与规则)/ kind ∈ KINDS(stat=四线数值/
# rule=全局规则/unlock=内容解锁/socket=同调位/fork=A/B 互斥对/easter=彩蛋觉醒)/
@@ -1,11 +1,11 @@
[gd_resource type="Resource" script_class="RelicTable" load_steps=2 format=3]
[gd_resource type="Resource" script_class="FeatTable" load_steps=2 format=3]
[ext_resource type="Script" path="res://data/schemas/relic_table.gd" id="1"]
[ext_resource type="Script" path="res://data/schemas/feat_table.gd" id="1"]
[resource]
script = ExtResource("1")
rows = [{
"relic_id": "arcane_ember",
"feat_id": "arcane_ember",
"display_name": "奥术余烬",
"rarity": "common",
"archetype": "magic",
@@ -14,7 +14,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "mana_weaver",
"feat_id": "mana_weaver",
"display_name": "魔网织者",
"rarity": "rare",
"archetype": "magic",
@@ -24,7 +24,7 @@ rows = [{
"polarity": "magic_vs_magic"
}
}, {
"relic_id": "azure_oath",
"feat_id": "azure_oath",
"display_name": "湛蓝誓约",
"rarity": "rare",
"archetype": "magic",
@@ -34,7 +34,7 @@ rows = [{
"polarity": "magic_vs_heavy"
}
}, {
"relic_id": "mana_resonance",
"feat_id": "mana_resonance",
"display_name": "魔能共鸣",
"rarity": "rarest",
"archetype": "magic",
@@ -43,7 +43,7 @@ rows = [{
"value": 2
}
}, {
"relic_id": "mine_atlas",
"feat_id": "mine_atlas",
"display_name": "雷区图谱",
"rarity": "common",
"archetype": "flag",
@@ -52,7 +52,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "nest_hunter",
"feat_id": "nest_hunter",
"display_name": "猎巢人",
"rarity": "rare",
"archetype": "flag",
@@ -61,7 +61,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "perfect_defense",
"feat_id": "perfect_defense",
"display_name": "完美布防",
"rarity": "rare",
"archetype": "flag",
@@ -70,7 +70,7 @@ rows = [{
"value": 2
}
}, {
"relic_id": "war_banner",
"feat_id": "war_banner",
"display_name": "战旗军规",
"rarity": "rarest",
"archetype": "flag",
@@ -79,7 +79,7 @@ rows = [{
"value": 2
}
}, {
"relic_id": "pierce_shot",
"feat_id": "pierce_shot",
"display_name": "贯穿射击",
"rarity": "rarest",
"archetype": "pierce",
@@ -88,7 +88,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "chain_arrows",
"feat_id": "chain_arrows",
"display_name": "连珠矢",
"rarity": "rare",
"archetype": "pierce",
@@ -98,7 +98,7 @@ rows = [{
"cap": 2
}
}, {
"relic_id": "weak_instinct",
"feat_id": "weak_instinct",
"display_name": "猎弱本能",
"rarity": "rare",
"archetype": "pierce",
@@ -107,7 +107,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "hunter_rapier",
"feat_id": "hunter_rapier",
"display_name": "猎手刺剑",
"rarity": "common",
"archetype": "pierce",
@@ -117,7 +117,7 @@ rows = [{
"polarity": "pierce_vs_light"
}
}, {
"relic_id": "miner_stubborn",
"feat_id": "miner_stubborn",
"display_name": "矿工的执拗",
"rarity": "common",
"archetype": "normal",
@@ -127,7 +127,7 @@ rows = [{
"cap": 5
}
}, {
"relic_id": "miner_hammer",
"feat_id": "miner_hammer",
"display_name": "矿工重锤",
"rarity": "common",
"archetype": "normal",
@@ -137,7 +137,7 @@ rows = [{
"trade_hit": 2
}
}, {
"relic_id": "focus_mind",
"feat_id": "focus_mind",
"display_name": "专注",
"rarity": "rare",
"archetype": "normal",
@@ -146,7 +146,7 @@ rows = [{
"value": 75
}
}, {
"relic_id": "armor_crack",
"feat_id": "armor_crack",
"display_name": "碎甲震击",
"rarity": "rare",
"archetype": "normal",
@@ -155,7 +155,7 @@ rows = [{
"value": 25
}
}, {
"relic_id": "greedy_lantern",
"feat_id": "greedy_lantern",
"display_name": "贪婪矿灯",
"rarity": "common",
"archetype": "dig",
@@ -165,7 +165,7 @@ rows = [{
"cost_mult": 25
}
}, {
"relic_id": "vein_intuition",
"feat_id": "vein_intuition",
"display_name": "矿脉直觉",
"rarity": "rare",
"archetype": "dig",
@@ -175,7 +175,7 @@ rows = [{
"cap": 5
}
}, {
"relic_id": "gambler_pact",
"feat_id": "gambler_pact",
"display_name": "赌徒的血签",
"rarity": "rarest",
"archetype": "dig",
@@ -185,7 +185,7 @@ rows = [{
"cost_mult": 100
}
}, {
"relic_id": "deep_drill",
"feat_id": "deep_drill",
"display_name": "深挖钻头",
"rarity": "rare",
"archetype": "dig",
@@ -195,7 +195,7 @@ rows = [{
"cap": 4
}
}, {
"relic_id": "armory_prep",
"feat_id": "armory_prep",
"display_name": "整备军备",
"rarity": "rarest",
"archetype": "charge",
@@ -205,7 +205,7 @@ rows = [{
"cap": 3
}
}, {
"relic_id": "iron_wall",
"feat_id": "iron_wall",
"display_name": "铁壁整备",
"rarity": "rare",
"archetype": "charge",
@@ -214,7 +214,7 @@ rows = [{
"shield_per_layer": 1
}
}, {
"relic_id": "patient_burst",
"feat_id": "patient_burst",
"display_name": "厚积薄发",
"rarity": "rare",
"archetype": "charge",
@@ -223,7 +223,7 @@ rows = [{
"value": 2
}
}, {
"relic_id": "ley_harvest",
"feat_id": "ley_harvest",
"display_name": "地脉采撷",
"rarity": "common",
"archetype": "devour",
@@ -232,7 +232,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "thorn_weaver",
"feat_id": "thorn_weaver",
"display_name": "荆棘编织者",
"rarity": "rare",
"archetype": "devour",
@@ -241,7 +241,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "purge_sapper",
"feat_id": "purge_sapper",
"display_name": "净化工兵",
"rarity": "rare",
"archetype": "devour",
@@ -250,7 +250,7 @@ rows = [{
"value": 1
}
}, {
"relic_id": "magma_body",
"feat_id": "magma_body",
"display_name": "熔火之躯",
"rarity": "rarest",
"archetype": "devour",
@@ -261,7 +261,7 @@ rows = [{
}]
; 双层 BD 实施批(2026-10-04):规则改写型特性表——行 = 特性定义
; (relic_id/display_name/rarity/archetype/hook/effects)。
; (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 /