diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index b160720f..cfc58e4f 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -45,7 +45,7 @@ | `关卡节点图生成.md` | 单关节点图的逐局随机来源:图模板池、抽签与实例化(实施排队 ADR-0007 裁决后) | 设计草案·拍板点全落文 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | -| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(机制类 / 属性提升类 / 资源类三个枚举 × 奖励节点·商店·Boss 击败后三条渠道) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | +| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(三个分类:专长 / 属性值提升 / 资源 × 三条渠道:奖励节点 / 商店 / 关底 Boss 击败) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | ### 跨局循环(`systems/跨局循环/`) @@ -130,8 +130,9 @@ | v1.2 | 2026-10-03 | R3 清账批(gdd_lint 分域随批):四处状态单元格日期批注迁出——敌人系统行事件见敌人系统.md 版本历史 v0.5(技能池批);元进度行见本表 v0.8;camp/shop 行=两文 v1.0 落文(2026-09-30 三裁决执行批);语义零变更 | | v1.3 | 2026-10-05 | 立《特性》:一次冒险内角色自身得到的提升——此前按内部分类被叫成三个名字(规则类称"流派件"、属性类称"数值件"、界面称"本关强化"),现收敛为一个对象的两种形态枚举;文档树冒险循环补行 + 命名对照表补 `ADVENTURE_FEATURE` 行 | | v1.4 | 2026-10-05 | 《特性》v1.1 分类重构:两类由"规则改写型 / 属性加成型"改为"属性提升(ASI)/ 专长(Feat)",属性提升内部再分纯属性组与特殊组;获取途径由两口共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店)+罕见旁路"专长获取" | -| v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(机制类 / 属性提升类 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | +| v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(专长 / 属性值提升 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | | v1.6 | 2026-10-05 | 《奖励》v2.1 交叉表收口:Boss 渠道只出专长(终局 Boss 不给),另两类在此不出现;新增「计价物不自售」规则处理金币不进商店——不拆第四个分类、不开特例,而是两轴交叉处的一条约束 | -| v1.7 | 2026-10-05 | 《奖励》v2.2:机制类在非 Boss 渠道改为「专长获取」门票形式(不直接给专长);渠道约束重构为三层(分类白名单/可计算谓词/显式例外清单),并承认「计价物不自售」形式上是白名单外的一道过滤、与死特判的区别在可计算;立默认原则——除已登记规则外分类内的都要在池子里,据此回复应在商店内(现行货架缺它,须补) | -| v1.8 | 2026-10-05 | 《奇物》v2.5:第三类定名「资源类」(资源偏泛,故在命名出处节写死判据句——给的是可消耗或可重掷的余量,不是属性永久抬升);回复归属定案留在本类不拆第四类;修复 1.5 段末与渠道轴标题粘连 | +| v1.7 | 2026-10-05 | 《奖励》v2.2:专长在非 Boss 渠道改为「专长获取」门票形式(不直接给专长);渠道约束重构为三层(分类白名单/可计算谓词/显式例外清单),并承认「计价物不自售」形式上是白名单外的一道过滤、与死特判的区别在可计算;立默认原则——除已登记规则外分类内的都要在池子里,据此回复应在商店内(现行货架缺它,须补) | +| v1.8 | 2026-10-05 | 《奇物》v2.5:第三类定名「资源」(资源偏泛,故在命名出处节写死判据句——给的是可消耗或可重掷的余量,不是属性永久抬升);回复归属定案留在本类不拆第四类;修复 1.5 段末与渠道轴标题粘连 | +| v1.9 | 2026-10-05 | 《奇物》v2.7 三个子节点正式定名:专长(Feat)/ 属性值提升(ASI)/ 资源——去「类」字后缀,此前是描述式叫法不是专名;新增 1.6 节「三层结构与命名」,定玩家可见的三层(奇物 / 三个分类 / 具体单件),并明确命名与呈现是两件事 | | v1.8 | 2026-10-05 | 《奖励》改名为《奇物》并升 v2.4:顶层定名 Wondrous Item(DND 魔法物品九分类中的兜底杂类,官方中文译名「奇物」)。文档树冒险循环行改名;命名对照表 `ADVENTURE_REWARD` → `ADVENTURE_CURIO`(**不用 `reward_*`**——`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用该词族) | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 183c5193..ad8d320e 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -27,28 +27,28 @@ #### 冒险 BD 各分类获取同渠道、纯概率差——渠道分工目标态(2026-10-04 提问登记;2026-10-05 用户定分工) -**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奇物**(2026-10-05 定名,v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 +**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奇物**(2026-10-05 定名,v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md)),下分**三个枚举分类**:**专长**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性值提升**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),专长只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 **用户定案(2026-10-05,v2.1 收口)**:分类 × 渠道交叉开关表—— | 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败=通过这一关(末关不给) | |---|---|---|---| -| 机制类(专长) | **门票形式** | **门票形式** | **直接给**(唯一直接渠道) | -| 属性提升类 | 出 | 出(训练) | 不出现 | -| 资源类 | 出 | 出(金币除外;**回复在内**) | 不出现 | +| 专长 | **门票形式** | **门票形式** | **直接给**(唯一直接渠道) | +| 属性值提升 | 出 | 出(训练) | 不出现 | +| 资源 | 出 | 出(金币除外;**回复在内**) | 不出现 | **Boss 渠道是专长的独占渠道,也是唯一直接给专长的渠道**——另两类都不走这里;奖励节点与商店不直接给专长,而是给一个**「专长获取」道具(门票)**,拿到后开专长三选一。形状是"一块独占 + 两块并行",不是三块平分。**末关的 Boss 击败后不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在还有下一关可去的那些关底 Boss 身上。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 **兑付频率(2026-10-05 用户纠错后写死)**:这条渠道的触发点是**关底 Boss 被击败**,而按 [冒险结构](systems/冒险循环/冒险结构.md) 的定义,**打掉关底 Boss 恰好就等于"通过这一关"**——两者是同一个时刻,不是一条链上的两步。**奇物不是打一场战斗给一份**:关内普通战斗节点打完了什么也不给,一关之内奇物只兑付一次。(此前《奇物》文档的"核心循环位置"图把"战斗结算 → 通关 → 得到一份奇物"画成一条链,读起来像每场战斗通关都给一份——已于 v2.6 修正为分支图并加此口径,勿再改回链式。) -**门票归机制类,不归资源类**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 +**门票归专长,不归资源**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 **门票机制四条(用户 2026-10-05 定)**:① **拿到即开、不可囤积**——不进持有集,选中或买下同一时刻就开专长三选一(可囤积会让玩家把关键决策无限推迟,且把持有物语义从后门放回来;"道具"只是卡面表现)。② **罕见只在概率,不在价格**——货架价与其他商品相当,不靠高价劝退。③ **一局限购一次**(现行口径)。④ **计步保底**——连续 5 次三选一展示未出现门票,第 6 次展示必定出现;计数对象=**展示次数**(刷新后的重新展示计入,用户明定含刷新),计数范围=奖励节点与商店**共享**,触发后清零,**限购用满后保底不再触发**。 **渠道定位 vs 默认原则(两句,别混)**:**渠道出哪些分类,是渠道轴自己的定位决定,不是例外**——Boss 渠道只出专长,另两类"不出现"是它的同义表述,不需另外找理由(v2.2 曾把它误当成缺理由的缺格,v2.3 修正)。**默认原则只管分类内部**:一个渠道一旦确定要出某个分类,该分类的成员就都要在它的池子里,缺席须有已登记的规则。 -原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:机制类挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 +原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:专长挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 -**gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源类(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 +**gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 **渠道约束分三层(v2.2,用户质疑后重构)**:用户问"计价物不自售不就是特判吗"。**诚实结论:形式上是的**——它确实是在分类白名单之外加的一道过滤,不是从分类推出来的。但和死特判有实质区别: @@ -62,11 +62,11 @@ 三方案代价并列(不藏折中):甲=GP 单独立第四个分类(例外 0,但用渠道轴切分类轴、两轴缠回、一项一类失衡);**乙=可计算谓词(现行,1 条谓词)**;丙=死特判清单(1 条记录,靠记忆维护)。 -**在册约束就两条**:① 金币不进商店(二层·谓词,理由=计价物不自售);② 机制类在非 Boss 渠道只给门票(一层·分类自身形态,理由=防用钱定点买构筑)。 +**在册约束就两条**:① 金币不进商店(二层·谓词,理由=计价物不自售);② 专长在非 Boss 渠道只给门票(一层·分类自身形态,理由=防用钱定点买构筑)。 **回复应在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则它应当在商店出现。现行 `shop.tres` 货架只有 attack / max_hp / armor / ap 四项,**现状与表格不对齐,须在实施批补上**。 -**待拍板/待观察两项**:① ~~资源类的命名~~ 与 ~~回复是否属该类~~ **已定(v2.5)=资源类,回复留在其中不拆第四类**(它与金币同为即时兑付、判据同源;拆出去第四类只剩两项)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 +**待拍板/待观察两项**:① ~~资源的命名~~ 与 ~~回复是否属该类~~ **已定(v2.5)=资源,回复留在其中不拆第四类**(它与金币同为即时兑付、判据同源;拆出去第四类只剩两项)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 ④ **charge 标签件数不足(数据缺陷,独立登记,勿被上条盖掉)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷。 ⑤ ~~顶层命名待定~~ **已定(v2.4)=「奇物」Wondrous Item**:DND 魔法物品九分类中的兜底杂类,官方中文译名即「奇物」,专装"不好归类但有奇效之物"——正好对应三个互不相干的分类。落选:Treasure(偏财物,装不下专长)、Relic(品类惯例,用户否决「遗物」)、全部自造词(进益/造化/机缘/遇获)。**代码词族随之定为 `curio_*` / `ADVENTURE_CURIO`**——原计划的 `feature_* → reward_*` 对齐**作废**:`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用 reward 词族,照做会撞车。 @@ -74,9 +74,9 @@ **状态**:分工已定,**实施待排批**;两项待拍板/待观察(2026-10-05 v2.1 更新) -#### 资源类两个新种类入池——刷新次数、专长获取(2026-10-05 立) +#### 资源两个新种类入池——刷新次数、专长获取(2026-10-05 立) -**现状**:[奇物](systems/冒险循环/奇物.md) v2.0 立了资源类四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 +**现状**:[奇物](systems/冒险循环/奇物.md) v2.0 立了资源四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 **连带约束**:`FEATURE_KINDS` 词表封闭(断点附随件与牌库剔除态依赖它),扩种类须走 `adventure_table.gd` + registry 同步修订;档位配额是**结构锚**(普通 70 / 稀有 25 / 罕见 3 = 98 张,入 schema validate 硬断言),新种类入池要占配额——**改总量须重裁而非调参**。专长获取须带全局限量(一局内可获得次数上限)。 @@ -86,7 +86,7 @@ #### 内部分类禁写入玩家可见面——奇物呈现三处违规待改(2026-10-04 用户立意登记) -**现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项机制类奖励的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 +**现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项专长奖励的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 **连带裁点**:档位激活(同标签 2 件档一/4 件档二)若完全不呈现,玩家只能靠悟——三路待裁:甲=纯隐藏、机制照跑(以撒套装式,最贴用户「流派是玩家挖掘出来的」原则);乙=档位达成那一刻给一次性风味反馈、不点破流派名;丙=连档位机制一起退役。 @@ -98,7 +98,7 @@ **现状**:概念已统一为「奇物」(2026-10-05 v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md))。已完成三件——① 定义文档落位(`design/gdd/systems/冒险循环/奇物.md`);② 称谓统一(代码注释与玩家可见文案,94 处+design/ 侧随改名批同步);③ 数据层标识符统一(`adventure_table.gd` / `adventure.tres` 的常量与字段整体换到 `feature_*` 词族,112 处,值零变更)。 -**未完四件**:⓪ **`feature_*` 词族随顶层改名再换到 `curio_*`**(2026-10-05 v2.0 新增、v2.4 改目标词族)——`FEATURE_KINDS` → `CURIO_KINDS` / `feature_quota()` → `curio_quota()` / `feature_value()` → `curio_value()` / `feature_candidate_count` → `curio_candidate_count` / `feature_quota_*` / `feature_value_*`,涉及 `adventure_table.gd` + `adventure.tres` 键名 + registry。**注意两点**:其一,**目标词族是 `curio_*` 不是 `reward_*`**——`reward_pick`(rng 封闭流 scope)/ `reward_node`(`grant_aux_item` context)/ `reward_preview`(道具 kind)已占用 reward 词族,照 `reward_*` 对齐会撞车;其二,`adventure.tres` 的键名是存档外的表数据,换名只动键不减值,但 `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它,须走本表 + registry 同步修订。① 机制类那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 +**未完四件**:⓪ **`feature_*` 词族随顶层改名再换到 `curio_*`**(2026-10-05 v2.0 新增、v2.4 改目标词族)——`FEATURE_KINDS` → `CURIO_KINDS` / `feature_quota()` → `curio_quota()` / `feature_value()` → `curio_value()` / `feature_candidate_count` → `curio_candidate_count` / `feature_quota_*` / `feature_value_*`,涉及 `adventure_table.gd` + `adventure.tres` 键名 + registry。**注意两点**:其一,**目标词族是 `curio_*` 不是 `reward_*`**——`reward_pick`(rng 封闭流 scope)/ `reward_node`(`grant_aux_item` context)/ `reward_preview`(道具 kind)已占用 reward 词族,照 `reward_*` 对齐会撞车;其二,`adventure.tres` 的键名是存档外的表数据,换名只动键不减值,但 `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它,须走本表 + registry 同步修订。① 专长那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 **次序建议**:⓪ 与 ① 同为"词族对不齐",可同批;② 涉及运行层最广,单批;③ 须与存档版本迁移一起裁。**顶层已改名而代码仍是 `feature_*`,属"文档与代码分开"的临时态**,应在下一个可跑冒烟的批次内收口。 diff --git a/design/gdd/systems/冒险循环/奇物.md b/design/gdd/systems/冒险循环/奇物.md index 2cd0c468..85717557 100644 --- a/design/gdd/systems/冒险循环/奇物.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -4,7 +4,7 @@ > > 它是一个概念,不是一套东西。下面有**两根互不相干的轴**: > -> - **分类轴**回答"给的是什么"——三个枚举:机制类 / 属性提升类 / 资源类; +> - **分类轴**回答"给的是什么"——三个枚举:专长 / 属性值提升 / 资源; > - **渠道轴**回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败(即通过这一关)。 > > 一个奇物属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。 @@ -41,11 +41,11 @@ 关内普通战斗节点 ──▶ 打完不给奇物,继续往下走 │ - ├─ 奖励节点 ──▶ 一次三选一(属性提升类 / 资源类,罕见门票) - ├─ 商店 ──▶ 花钱买(属性提升类 / 资源类,罕见门票) + ├─ 奖励节点 ──▶ 一次三选一(属性值提升 / 资源,罕见门票) + ├─ 商店 ──▶ 花钱买(属性值提升 / 资源,罕见门票) │ 关底 Boss 击败 ═══╗ ← 打掉关底 Boss 就是「通过这一关」,同一件事 - ╰──────────╬──▶ 一次专长三选一(机制类) + ╰──────────╬──▶ 一次专长三选一(专长) ╰──▶ 通关回血 ──▶ 进下一关,带着它继续 ``` @@ -57,25 +57,25 @@ ### 1. 分类轴:三个枚举 -奇物只有一个名词;需要区分时才说它属于哪个分类,不给分类另起名字。 +奇物只有一个名词,但它下面分三类。**这三类各有自己的专名,不是描述**——文档正文、代码词族、帮助与百科页面都用这三个词指代它们。 | 分类 | 它给的是什么 | 落点 | 事实源 | |---|---|---|---| -| **机制类**(专长 Feat) | 给规则。在结算管线某个挂点上给自己加一条规则;同一标签的持有件数达阈值时质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | -| **属性提升类**(ASI) | 给数字。抬高角色某项战斗属性的基础值 | 冒险加算区的生命上限 / AC / 攻击三轴 | `adventure.tres`(种类配额与值) | -| **资源类** | 给"可用的量"。不抬高战斗属性,也不改规则,而是扩充你能调动的余量与机会 | 行动经济、三选一界面、局内钱包;**不进加算区、多数不进持有集** | `adventure.tres`(种类配额与值) | +| **专长**(Feat) | 给规则。在结算管线某个挂点上给自己加一条规则;同一标签的持有件数达阈值时质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | +| **属性值提升**(ASI) | 给数字。抬高角色某项战斗属性的基础值 | 冒险加算区的生命上限 / AC / 攻击三轴 | `adventure.tres`(种类配额与值) | +| **资源** | 给"可用的量"。不抬高战斗属性,也不改规则,而是扩充你能调动的余量与机会 | 行动经济、三选一界面、局内钱包;**不进加算区、多数不进持有集** | `adventure.tres`(种类配额与值) | 三类的共性:都在当局获得、都在当局消费完或随冒险收束清零;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 -#### 1.1 机制类:专长 +#### 1.1 专长:规则改写 专长改的是规则而不是数字——它给自己加一条"在某种条件下,本来不会发生的事现在会发生"的规则。它不是任何一条属性轴的延伸,玩家也无法用"加了多少"来衡量它。 专长带流派标签,同一标签的持有件数达到阈值时发生质变(档位机制归 [战斗结算](../战斗循环/战斗结算.md),本文件不展开)。这是它和另两类最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。 -**专长门票也归这一类**:非 Boss 渠道不直接给专长,而是给一张名为「专长获取」的门票——拿到后立刻开一次专长 N 选一。它给的是"一件你以前不会的事"(只是把选择推迟到一次三选一),按 1.4 的判据归机制类,不归资源类。详见 2.2。 +**专长门票也归专长**:非 Boss 渠道不直接给专长,而是给一张名为「专长获取」的门票——拿到后立刻开一次专长 N 选一。它给的是"一件你以前不会的事"(只是把选择推迟到一次三选一),按 1.4 的判据归专长,不归资源。详见 2.2。 -#### 1.2 属性提升类:纯属性三项 +#### 1.2 属性值提升:纯属性三项 三项,各改一条战斗属性轴: @@ -87,9 +87,9 @@ 三项都直接进冒险加算区,跨关携带且关间不清零。这一类是封闭的:只有这三项,多一项就要走文档修订。 -#### 1.3 资源类:四项 +#### 1.3 资源:四项 -这类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西: +资源这一类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西: | 项 | 给什么 | 备注 | |---|---|---| @@ -98,21 +98,40 @@ | 金币(GP) | 局内钱包进账 | 进钱包即花掉,不进持有集、不持续生效;**不进商店**(计价物不自售,见 2.4) | | 回复 | 当即回血 | 即时兑付,不进持有集、不持续生效;**在商店内**(见 2.4 的默认原则) | -**这类为什么单独存在**:它的成员不满足"抬高战斗属性"(那归属性提升类),也不满足"改写规则"(那归机制类),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 +**资源为什么单独成一类**:它的成员不满足"抬高战斗属性"(那归属性值提升),也不满足"改写规则"(那归专长),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 -**判据句("资源"这个词太泛,这句是唯一的收口凭据)**:这一类给的是**可以调动、可以花掉的余量**,不是角色基础属性的永久抬升。"资源"是常用词,能力资源、财富资源都叫资源——所以判据必须写死:拿不准一项该归哪类时,问它**会不会进角色自己的属性数值**。会进的归属性提升类,不会进、而是变成你手里多出来的次数或多出来的钱的,归资源类。 +**判据句("资源"这个词太泛,这句是唯一的收口凭据)**:资源给的是**可以调动、可以花掉的余量**,不是角色基础属性的永久抬升。"资源"是常用词,能力资源、财富资源都叫资源——所以判据必须写死:拿不准一项该归哪类时,问它**会不会进角色自己的属性数值**。会进的归属性值提升,不会进、而是变成你手里多出来的次数或多出来的钱的,归资源。 -**这类内部的异质性(要诚实登记)**:金币与回复是**即时兑付**——拿到就消失,不进持有集,也没有"持有→生效→清零"的过程;行动点上限与刷新次数则进持有账本、当局持续有效。它们被归在同一类是因为"给的是余量"这个共同性质,不是因为生命周期相同。这条异质性在此显式登记,防止后续把金币当成会持续生效的东西去结算。 +**资源类内部的异质性(要诚实登记)**:金币与回复是**即时兑付**——拿到就消失,不进持有集,也没有"持有→生效→清零"的过程;行动点上限与刷新次数则进持有账本、当局持续有效。它们被归在同一类是因为"给的是余量"这个共同性质,不是因为生命周期相同。这条异质性在此显式登记,防止后续把金币当成会持续生效的东西去结算。 #### 1.4 分类判据 -**给规则的是机制类,给数字的是属性提升类,给余量的是资源类。** +**给规则的是专长,给数字的是属性值提升,给余量的是资源。** -拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(机制类)、"某个数字少了一截"(属性提升类)、还是"能调动的余地变小了"(资源类)。 +拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(专长)、"某个数字少了一截"(属性值提升)、还是"能调动的余地变小了"(资源)。 #### 1.5 命名出处 -机制类与属性提升类都取自 DND 规则书的既有名词:专长对应 Feat,属性提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(规则 / 数字 / 余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。**资源类取"资源"这个常用词**(用户 2026-10-05 定)——行动点上限、刷新次数、金币、回复都是可以调动、可以花掉的余量。它确实偏泛(能力资源、财富资源都叫资源),所以这一类的判据句必须写死:**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**——这一句是把"资源"从泛用词收回到本类定义里的唯一凭据,不能省。玩家可见文案只写效果,不出现任何分类名。 +专长与属性值提升都取自 DND 规则书的既有名词:专长对应 Feat,属性值提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(专长改规则 / 属性值提升改数字 / 资源给余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。**资源取"资源"这个常用词**(用户 2026-10-05 定)——行动点上限、刷新次数、金币、回复都是可以调动、可以花掉的余量。它确实偏泛(能力资源、财富资源都叫资源),所以这一类的判据句必须写死:**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**——这一句是把"资源"从泛用词收回到本类定义里的唯一凭据,不能省。**三个分类的专名在 v2.7 去掉了「类」字后缀**——此前写作「机制类 / 属性提升类 / 资源类」,那是描述不是专名;去掉后缀后三个词各自都能独立成词、与 DND 官方中文一致,理由与逐条依据见 1.6 节。玩家可见文案只写效果,不出现任何分类名。 + +### 1.6 三层结构与命名(本概念的完整层级) + +奇物这个概念只有三层,任何一处提到它都属于其中一层: + +| 层 | 名称 | 例子 | 谁看得到 | +|---|---|---|---| +| 一层 总称 | **奇物**(Wondrous Item) | 「这一局你捞到的全部奇物」 | 全部玩家可见面 | +| 二层 分类 | **专长** / **属性值提升** / **资源** | 「这四件是属性值提升」 | 帮百科与成就页可见;卡面与详情页**不出现** | +| 三层 单件 | 具体那一件的名称 | 奥术余烬、贯穿射击、小幅提升生命上限 | 全部玩家可见面 | + +**两层是两件事,别混**: + +- **命名是本节的规矩**——三个分类各有一个专名,文档、代码词族、帮百科一律用它。指代某个分类时直接说「专长」,不说「机制类」「专长那一类」。 +- **呈现是另一件事**(归 [battle](../ux/battle.md) 与 [node-reward](../ux/node-reward.md),本节不裁决):玩家看到某件奇物时,卡面只写**这件东西的名字与效果**,不附带它的分类。玩家可以从效果反推它属于哪一类,但界面不替他说破。 + +**为什么两层都要有**:分类名在卡面上不出现,不等于玩家对它没有概念——帮助手册、百科条目、成就名称三处一定会用到它(「首次集齐 4 件专长」「三件属性值提升」),效果描述里出现指代时也需要名字(「本项属专长,同标签达到 4 件时质变」)。所以它必须是一个**玩家读得懂、读一遍就懂**的正式名词,不能是内部描述或自造词。 + +**代码侧词族对应**(本批只做命名对齐,代码改动见任务书):顶层 `curio_*`(奇物总称)/ 专长 `feat_*` / 属性值提升 `asi_*` / 资源 `res_*`。`reward_*` 已被既有标识符占用(`reward_pick` / `reward_node` / `reward_preview`),**不得使用**。 ### 2. 渠道轴:与分类的交叉 @@ -120,9 +139,9 @@ | 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败=通过这一关(见 2.1) | |---|---|---|---| -| **机制类**(专长) | 门票形式(见 2.2) | 门票形式(见 2.2) | **直接给**(唯一的直接渠道) | -| **属性提升类** | 出 | 出(口径「训练」) | 不出现 | -| **资源类** | 出 | 出(**金币除外**,见 2.4) | 不出现 | +| **专长**(专长) | 门票形式(见 2.2) | 门票形式(见 2.2) | **直接给**(唯一的直接渠道) | +| **属性值提升** | 出 | 出(口径「训练」) | 不出现 | +| **资源** | 出 | 出(**金币除外**,见 2.4) | 不出现 | **这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**门票**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奇物的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 @@ -133,7 +152,7 @@ 两条的管辖范围不同:前者决定"这张表的格子填不填",后者决定"填了的格子里装不装得全"。 -#### 2.1 机制类的主渠道:关底 Boss 击败(即通过这一关) +#### 2.1 专长的主渠道:关底 Boss 击败(即通过这一关) 专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。 @@ -147,7 +166,7 @@ 奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奇物项,选中或买下之后,**立刻**开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 -**它归机制类,不归资源类**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于机制类。所以在交叉表上,机制类在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 +**它归专长,不归资源**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于专长。所以在交叉表上,专长在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 **为什么非 Boss 渠道只给门票**:如果商店也能直接买到一个指定的专长,玩家就能用金币把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。门票保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。 @@ -184,7 +203,7 @@ | 层 | 是什么 | 判据来源 | 新增渠道或奇物时 | |---|---|---|---| -| **一层 分类白名单** | 分类轴决定渠道——机制类走 Boss、另两类走奖励节点与商店 | 分类本身 | 新分类按 1.4 判据归类,自动继承该类的渠道 | +| **一层 分类白名单** | 分类轴决定渠道——专长走 Boss、另两类走奖励节点与商店 | 分类本身 | 新分类按 1.4 判据归类,自动继承该类的渠道 | | **二层 可计算谓词** | 渠道与奇物之间的**结构性**关系,能算出来 | 对象与渠道的内在关系 | **自动适用,不用改表** | | **三层 显式例外清单** | 人为的设计选择,没有内在理由可推 | 设计决定 | **只能逐条加,每条必须写理由** | @@ -216,8 +235,8 @@ | 约束 | 层 | 理由 | |---|---|---| | 金币不进商店 | 二层·谓词 | 计价物不自售——商店的计价物是 GP | -| 机制类在非 Boss 渠道只给门票 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | -| 属性提升类与资源类不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | +| 专长在非 Boss 渠道只给门票 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | +| 属性值提升与资源不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | #### 2.5 在册事项 @@ -226,8 +245,8 @@ ### 3. 作用对象与范围 - **作用对象**:角色本人,以及角色参与的结算过程。奇物不改敌人、不改棋盘生成、不改关卡内容。 -- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源类里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 -- **时间范围**:整局冒险。机制类与属性提升类自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源类里的金币与回复是即时兑付,拿到即消费完。 +- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 +- **时间范围**:整局冒险。专长与属性值提升自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源里的金币与回复是即时兑付,拿到即消费完。 - **归属范围**:不进账号永久进度,不带到下一次冒险。 ### 4. 生命周期 @@ -240,10 +259,10 @@ | 阶段 | 说明 | |---|---| -| 候选池构建 | 冒险开局时一次建成。三个分类的候选**现同处一个令牌池**:属性提升类与资源类按配额铺开,机制类按定义表的有效行铺开。 | +| 候选池构建 | 冒险开局时一次建成。三个分类的候选**现同处一个令牌池**:属性值提升与资源按配额铺开,专长按定义表的有效行铺开。 | | 出现 | 玩家在渠道上看到若干候选(三选一的形式),看不到整个池。 | -| 选定 | 玩家选定一项后,它从池中剔除,此后任何渠道都不会再见。选到「专长获取」时,立刻再开一次专长 N 选一——这次选择走机制类的渠道语义,不占用原本的渠道。 | -| 持有与兑付 | 机制类与属性提升类进入持有集后立即生效,跨关携带;机制类按同一标签的持有项数决定处于哪一档。金币与回复即时兑付,不入持有集。 | +| 选定 | 玩家选定一项后,它从池中剔除,此后任何渠道都不会再见。选到「专长获取」时,立刻再开一次专长 N 选一——这次选择走专长的渠道语义,不占用原本的渠道。 | +| 持有与兑付 | 专长与属性值提升进入持有集后立即生效,跨关携带;专长按同一标签的持有项数决定处于哪一档。金币与回复即时兑付,不入持有集。 | | 清零 | 冒险以任一结局收束时整集清空;下次开局重建。 | | 断点恢复 | 进行中的冒险把持有集与剩余候选池一并写入断点,续玩后恢复到同一状态(断点里的键名沿用历史形态,不随本次改名变动)。 | @@ -253,9 +272,9 @@ |---|---| | [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对,判据是生命周期:**奇物当局清零,魔法道具跨冒险保留**。两者互不相通——奇物永不进同调位,魔法道具永不进当局随机渠道。 | | [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,奇物管当局构筑,两层互不代替。 | -| [战斗结算](../战斗循环/战斗结算.md) | 机制类的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | +| [战斗结算](../战斗循环/战斗结算.md) | 专长的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | | [行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md) | 部分挂点落在行动点结转与地形处理上,语义归各自文档。 | -| [关卡节点地图](关卡节点地图.md) | 是渠道的载体,不是奇物的属性。机制类挂在 Boss 节点兑付面上,节点类型词表零扩类。 | +| [关卡节点地图](关卡节点地图.md) | 是渠道的载体,不是奇物的属性。专长挂在 Boss 节点兑付面上,节点类型词表零扩类。 | | [地图战斗资源](../战斗循环/地图战斗资源.md)(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集,也不是渠道给的。 | | [存档序列化](../表现与支撑/存档序列化.md) | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 | @@ -264,7 +283,7 @@ | 类型 | 内容 | |---|---| | 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包、三选一界面 | -| 依赖(数据) | `relics.tres`(机制类定义行)、`adventure.tres`(属性提升类与资源类的种类配额与值)、`shop.tres`(货架取舍) | +| 依赖(数据) | `relics.tres`(专长定义行)、`adventure.tres`(属性值提升与资源的种类配额与值)、`shop.tres`(货架取舍) | | 输出(对外) | 持有集、生效中的分类投影、剩余候选池、档位求值结果、可用重抽次数 | | 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | @@ -280,10 +299,10 @@ | 参数 | 取值域 | 事实源 | |---|---|---| -| 机制类定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | +| 专长定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | | 专长门票(出现概率 / 配额 / 全局限量) | 整数 | **尚未入表**,见待办 | -| 属性提升类种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | `game/data/schemas/adventure_table.gd` | -| 资源类种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | +| 属性值提升种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | `game/data/schemas/adventure_table.gd` | +| 资源种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | | 稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | | 各分类种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | | 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | @@ -294,9 +313,9 @@ 1. 三个分类走同一套获取流程,代码里只有一个表示"已持有奇物"的集合。 2. 一次冒险内获得的奇物在之后任何关卡都生效;开新冒险后持有集为空。 3. 一项被选定的奇物不再出现在任何后续渠道。 -4. 每个流派标签至少有一项挂在排雷侧的结算触发点上(防止机制类沦为纯战斗数值)。 +4. 每个流派标签至少有一项挂在排雷侧的结算触发点上(防止专长沦为纯战斗数值)。 5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 -6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"机制类/属性提升类/资源类"描述,不得另造称呼。 +6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"专长/属性值提升/资源"描述,不得另造称呼。 7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 9. 金币不出现在商店货架上——这是「计价物不自售」谓词算出来的结果,不是给金币单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 @@ -310,7 +329,7 @@ 本节只点出四条由本版新立、尚未登记的判断来源: -- **回复归属已定(v2.5)**:留在资源类,不独立成第四类。理由是它与金币同为**即时兑付**、都给的是可花掉的余量,拆出去之后第四类只有两项、且与资源类的判据完全同源——分类的价值在于判据能一刀切得开,拆一个判据同源的类只会让读者多查一张表。 +- **回复归属已定(v2.5)**:留在资源,不独立成第四类。理由是它与金币同为**即时兑付**、都给的是可花掉的余量,拆出去之后第四类只有两项、且与资源的判据完全同源——分类的价值在于判据能一刀切得开,拆一个判据同源的类只会让读者多查一张表。 - **专长门票尚未入表**:出现概率、配额、限购次数、保底计数阈值四个参数都没有事实源;入池时同样受档位结构锚约束(改总量须重裁而非调参)。 - **专长总量与档位阈值的匹配——延后复裁(用户 2026-10-05 定"先不调整")**:终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 的个数。三关结构下是两次,加上门票最多三次,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是后续会有第四关,且届时可能另做获取侧的调整。**复裁触发条件:第四关内容批落地后实测,若配合仍太少再调**。登记于此防止它被忘掉。 - **charge 标签件数不足(数据缺陷,独立登记)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷,随上一条一并延后,但不要被上一条盖掉。 @@ -322,11 +341,13 @@ | v1.0 | 2026-10-05 | 以「特性」为名首次为本概念立定义文档。此前它按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现收敛为一个对象下的分类;性质定为「角色自身得到提升」而非「获得物品」。 | | v1.1 | 2026-10-05 | 分类重构:两类由「规则改写型 / 属性加成型」改为「属性提升 / 专长」。 | | v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | -| **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源类里,同时把它们的即时兑付性质显式登记为类内异质性。 | -| v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | -| v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表机制类在两渠道由"不出现"改为"**门票形式**";门票归机制类(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | +| **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**(当时的写法是「机制类 / 属性提升类 / 资源与机会类」,v2.7 才定名为专长 / 属性值提升 / 资源):专长 / 属性值提升(生命·AC·攻击)/ 资源(行动点上限·刷新次数·金币·回复)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源里,同时把它们的即时兑付性质显式登记为类内异质性。 | +| v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性值提升与资源在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | +| v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表专长在两渠道由"不出现"改为"**门票形式**";门票归专长(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | | v2.3 | 2026-10-05 | **门票机制细化 + 默认原则表述修正**。① 门票**拿到即开、不可囤积**(用户定)——不进持有集,防止玩家把关键决策无限推迟,也防持有物语义从后门回来。② 门票的"罕见"**只在概率不在价格**,一局限购一次,并加**计步保底**:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享、**刷新后的重新展示计入**(用户明定含刷新),限购用满后保底不再触发。③ **修正 v2.2 的误读**:把"分类在某渠道不出现"当成需要理由的缺格是错的——渠道出哪些分类是渠道轴的定位(Boss 只出专长),不是例外;默认原则只管**分类内部**的成员齐不齐。④ 专长总量与档位阈值的匹配按用户决定**延后**(待第四关内容批后实测复裁),另单独登记 charge 标签仅 3 件、永远达不到档二的数据缺陷。 | +| **v2.7** | 2026-10-05 | **三个子节点正式定名(用户拍板:去「类」字后缀)**。此前三个分类只有带后缀的描述(机制类 / 属性提升类 / 资源类),是文档层临时叫法,既非专名也非玩家可读的词。现定专名:**专长**(Feat)/ **属性值提升**(ASI)/ **资源**。定名依据:前两个是 DND 规则书官方中文,且与用户 v1.1 原话一致(当时原话就是「属性提升(ASI)」与「专长」,v1.1 落文时被加了「类」字后缀而退化成描述)。「机制类」这个叫法本身还有硬伤——它的 28 个成员里没有一件是"机制",实际是"在结算挂点上改一条规则",读者看到会误解为游戏机制。 +**新增 1.6 节「三层结构与命名」**(用户 2026-10-05 拍板做玩家可见的三层):奇物(总称)/三个分类/具体单件。明确**命名是本节规矩、呈现是另一件事**——分类名在卡面不出现(归 battle.md / node-reward.md 裁决),但帮百科、成就名、效果描述的指代三处都要用,所以它必须是玩家读一遍就懂的正式名词。连带:修掉批量替换撞出的五处「专长(专长)」类自撞、v2.0 历史行内的自撞并标注当时的旧称、registry 的「资源(命名待定)」过期标注。 | **v2.6** | 2026-10-05 | **修正核心循环位置图:奇物不是打一场战斗给一份**(用户纠错)。原图把"关内 排雷推理 → 战斗结算 → 通关 → 得到一份奇物"画成一条链,读起来就是每场战斗通关都给一份——**错在把关内普通战斗的通关与关底 Boss 的通关混为一谈**。按 [冒险结构](冒险结构.md) 的定义,**通关一关 = 该关关底 Boss 被击杀**,所以"击败 Boss"与"通过这一关"是同一个时刻、不是一条链上的两步。改法:① 图改为分支结构(普通战斗节点→不给、往下走;关底 Boss 击败→专长三选一+通关回血);② **一关只兑付一次**写成显式口径;③ 2.1 节渠道名由"终局前 Boss 击败后"改为"关底 Boss 击败(即通过这一关)",并写明触发点就是关卡推进本身那一刻;④ 文首引言加"兑付频率"条,交叉表渠道名与 registry 同步;⑤ 连带修掉一处污染——节点类型封闭枚举五种里的"奖励"曾被 v2.4 批量替换误伤成"奇物"(节点类型里没有奇物这一类),已复原。 | -| **v2.5** | 2026-10-05 | **第三类定名「资源类」**(用户拍板,父节点定为「奇物」后解锁)。定名依据:行动点上限 / 刷新次数 / 金币 / 回复都是可以调动、可以花掉的余量。「资源」偏泛(能力资源、财富资源都叫资源),因此在 1.5 写死判据句——**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**,这一句是把泛用词收回本类定义的唯一凭据。**回复归属同时定案:留在资源类,不独立成第四类**——它与金币同为即时兑付、判据同源,拆出去第四类只剩两项且与本类判据重合。附带修复:1.5 段末与「### 2. 渠道轴」标题粘连(缺换行)。 | +| **v2.5** | 2026-10-05 | **第三类定名「资源」**(用户拍板,父节点定为「奇物」后解锁)。定名依据:行动点上限 / 刷新次数 / 金币 / 回复都是可以调动、可以花掉的余量。「资源」偏泛(能力资源、财富资源都叫资源),因此在 1.5 写死判据句——**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**,这一句是把泛用词收回本类定义的唯一凭据。**回复归属同时定案:留在资源,不独立成第四类**——它与金币同为即时兑付、判据同源,拆出去第四类只剩两项且与本类判据重合。附带修复:1.5 段末与「### 2. 渠道轴」标题粘连(缺换行)。 | | **v2.4** | 2026-10-05 | **顶层由「奖励」改名为「奇物」(Wondrous Item)**。用户否决了「奖励」「收益」与全部自造词(进益/造化/机缘/遇获),要求回到 DND/西幻既有名词。定名依据:DMG 魔法物品九分类中的 Wondrous Item,官方中文译名即「奇物」,是专装不好归类但有奇效之物的兜底杂类——正好对应本概念下三个互不相干的分类。此前考虑过的 Treasure(宝物)因偏财物、装不下专长而落选;roguelike 品类惯例 Relic 因用户否决遗物落选。**代码词族定为 `curio_*`、`ADVENTURE_CURIO`**(`reward_*` 已被 `reward_pick` / `reward_node` / `reward_preview` 占用,不能对齐)。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 523aa068..14542970 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -326,7 +326,7 @@ entities: table: RewardTable(数据配置 承载,键 = reward_id;地图战斗资源 回填 owner;**2026-09-15 格面资源批结构性重写**——旧 category / use_timing / 库存 / 供给轴随可选类删除整批下线,五型 × 极性字典取代〔历史结构见底部修订记录〕) fields: reward_id: String(表内主键) - cell_type: enum {attack, defense, heal, blast, weaken, pierce, magic, action, gp}——九型封闭(2026-09-18 伤害道具批五→七、2026-09-20 格面资源八型批七→八 +action、同日 GP+商店房批八→九 +gp;格面资源类型身份;CELL_TYPE_KEYS 词表十八格 = 九型 × 正负,表里出现清单外值加载拒绝 fail-fast) # 2026-09-15 新增,取代 category;2026-09-18 扩七型;2026-09-20 八型批扩八型;同日 GP+商店房批扩九型 + cell_type: enum {attack, defense, heal, blast, weaken, pierce, magic, action, gp}——九型封闭(2026-09-18 伤害道具批五→七、2026-09-20 格面资源八型批七→八 +action、同日 GP+商店房批八→九 +gp;格面资源型身份;CELL_TYPE_KEYS 词表十八格 = 九型 × 正负,表里出现清单外值加载拒绝 fail-fast) # 2026-09-15 新增,取代 category;2026-09-18 扩七型;2026-09-20 八型批扩八型;同日 GP+商店房批扩九型 polarity: enum {positive, negative}——同型两行:正向行参与摇号(权重 = 类型频次),负向行纯兑付字典、不消费权重 # 2026-09-15 新增 effect_id: String 可空——percent 类行(attack/defense/weaken 正负两向)必填(StatusEffectTable 精确引用,悬空校验已激活);flat 直付行(直伤/群伤/治疗)恒空 stacks: int [1,16] 可省——多层授予行(原 blast 负向 ambush_double ×2 层——该行随 2026-09-20 八型批退役,现行表无 stacks 行、字段保留 schema 位);缺省 1 @@ -579,16 +579,17 @@ entities: owner: design/gdd/systems/冒险循环/奇物.md attributes: definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奇物。装的是"这一局你捞到了什么",不管从哪个渠道来 - channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奇物的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奇物自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性提升类/资源类不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** + channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奇物的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奇物自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②专长在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性值提升/资源不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奇物属于哪个分类不决定它从哪个渠道来;交叉关系由 [奇物](design/gdd/systems/冒险循环/奇物.md) 第 2 节开关表定死 - categories: 封闭三类 {机制类, 属性提升类, 资源类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres - scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 + categories: 封闭三类 {专长 Feat, 属性值提升 ASI, 资源}(v2.7 定名,**去「类」字后缀**——此前为描述式叫法「机制类 / 属性提升类 / 资源类」,非专名;用户 v1.1 原话即「属性提升(ASI)」与「专长」,v1.1 落文时被加后缀而退化。v2.0 起为三类、v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。 + hierarchy: 玩家可见的三层(用户 2026-10-05 拍板)——一层总称「奇物」/二层三个分类/三层具体单件(如 奥术余烬、贯穿射击)。**命名与呈现是两件事**:分类各有一个正式专名,文档、代码词族、帮百科/成就名/效果描述的指代一律用它;但卡面与详情页只写单件名与效果、不附带分类(呈现面归 battle.md / node-reward.md 裁决,本条目不预断)专长(Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性值提升(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres + scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,专长与属性值提升跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**关底 Boss 击败=通过这一关**(**唯一直接给的渠道**;不新增节点类型、挂 Boss 节点兑付面;末关的 Boss 击败后不给——无后续关卡可消费)。**兑付频率**:奇物不是打一场战斗给一份,关内普通战斗节点不给任何奇物,一关之内只兑付一次(奖励节点与商店同理,各节点各自兑付),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——专长:主渠道=**关底 Boss 击败=通过这一关**(**唯一直接给的渠道**;不新增节点类型、挂 Boss 节点兑付面;末关的 Boss 击败后不给——无后续关卡可消费)。**兑付频率**:奇物不是打一场战斗给一份,关内普通战斗节点不给任何奇物,一关之内只兑付一次(奖励节点与商店同理,各节点各自兑付),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归专长(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性值提升:奖励节点 + 商店(口径「训练」);资源:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奇物;跨冒险跟着你走的是魔法道具**。奇物永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 - data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源类的种类配额与值)/ shop.tres(货架取舍) + data_sources: relics.tres(专长定义行)/ adventure.tres(属性值提升与资源的种类配额与值)/ shop.tres(货架取舍) open_questions: ①类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同,靠这条描述把"资源"从泛用词收回到本类定义内;②专长门票尚未入表(出现概率/配额/限购次数/保底阈值四参数均无事实源);③确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);④charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记,勿被上条盖掉);⑤断点存档键 5 个(bonus_deck / bonus_taken / bonus_pending / bonus_result / bonus_aux_carry)是否随存档版本迁移换名待裁 - naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」,v2.4 定名为「奇物」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。v2.5 第三类定名为「资源类」(用户拍板)。**代码侧三套词族均尚未对齐**:`feature_*` → `curio_*`(103 处)、`relic_*` → 机制类(162 处)、运行层 `bonus_*`(160 处),属临时态,登记于 06-待办清单,须在可跑冒烟批次收口 + naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」,v2.4 定名为「奇物」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。v2.5 第三类定名为「资源」(用户拍板)。**v2.7 三个子节点全部正式定名、去「类」字后缀**:专长(Feat)/ 属性值提升(ASI)/ 资源——此前是描述式叫法不是专名。**代码侧三套词族均尚未对齐**:`feature_*` → `curio_*`(103 处,顶层总称)、`relic_*` → `feat_*`(162 处,专长分类的词族——v2.7 定名后顶层与内层分类各有各的词族)、运行层 `bonus_*` → `curio_*`(160 处),属临时态,登记于 06-待办清单,须在可跑冒烟批次收口 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] - name: adventure_table @@ -599,8 +600,8 @@ entities: fields: | 退役两字段(迭代 10 奇物重构批,2026-09-30 用户拍板):level_clear_hp_bonus(「血回满+上限提升」件随大奇物三件套退役——回血改 clear_heal_pct 部分回血、上限提升改三选一件值列)、keystone_per_level(钥石退役出大奇物改 Boss/精英击杀掉落)。 clear_heal_pct: int [0,100](knob 默认 20——非末关通关部分回血回复生效上限的百分比,封顶上限不回满、满血回 0 合法;难度上压方向,带重扫义务归 难度曲线与Boss) - **2026-10-05 命名统一批**:本表的属性提升类奇物字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 curio 条目(v2.0 顶层改名为「奇物」)。 - feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性提升类奇物兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) + **2026-10-05 命名统一批**:本表的属性值提升奇物字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 curio 条目(v2.0 顶层改名为「奇物」)。 + feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性值提升奇物兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) feature_value_gp_common: int [0,999](GP 袋件定额入钱包);feature_value_ap_rarest: int [0,10](AP 件每场战斗首轮行动点基线增量);bonus_aux_item_count: int [1,9](魔法道具件授予件数) ~~bonus_weight_*(E-S 加权洗牌权重族)~~ / ~~bonus_cap_*(种类次数上限族)~~:**v2.2 令牌池换代退役(迭代 12 TP0——2026-10-03 追认 b 实施批;洗牌改令牌 Fisher-Yates、池消耗即上限)** feature_quota_{kind}_{tier}: int [0,99](**TP0 令牌配额族**——kind×tier 计数:attack 18/5 · max_hp 17/5 · armor 17/5 · gp 18/5 · heal 0/5 · ap 0/0/3〔common/rare/rarest〕;未列组合=0;档位结构锚 70/25/3=98 张入 schema validate 硬断言〔罕见档原列「道具件 2」随 aux_item 池种退役收窄——台账自决披露项〕) diff --git a/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md b/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md index 6f0f921f..0656330f 100644 --- a/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md +++ b/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md @@ -2,7 +2,7 @@ - 日期:2026-10-05 - 设计事实源:[奇物.md](../gdd/systems/冒险循环/奇物.md) v2.6(概念唯一定义,2026-10-05 用户逐轮裁定) -- 登记台账:[06-待办清单](../gdd/06-待办清单.md) 三条目(渠道分工目标态 / 资源类两个新种类入池 / 奇物命名统一后续) +- 登记台账:[06-待办清单](../gdd/06-待办清单.md) 三条目(渠道分工目标态 / 资源两个新种类入池 / 奇物命名统一后续) - 实体登记:[entities.yaml](../registry/entities.yaml) `curio` 条目 - 状态:**定稿待发令**——用户 2026-10-05 令:本批只改文档,代码与配置改动整理成任务书编入迭代 15 - **loop 计划书八件对照**:①目标与完成定义=§一 ②现状事实(代码级,开工自行复核)=§二 ③设计契约(🔴 触碰=L3 停机)=§三 ④范围边界=§四 ⑤任务卡 T0..Tn=§五 ⑥验证闸=§六 ⑦异常分级=§七 ⑧代拍板白名单=§八 @@ -20,7 +20,7 @@ 完成定义(逐条可验): 1. **词族对齐完成**:`feature_*` → `curio_*`(103 处 / 7 文件)、`relic_*` → `curio_*` 或 `feat_*`(162 处 / 12 文件)、运行层 `bonus_*` → `curio_*`(160 处 / 8 文件)全部改完,`game/` 下 `grep -c "feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick"` 归零(存档键 5 个除外,见 T2 裁点) -2. **渠道分工落地**:三条渠道按分类分离——关底 Boss 击败=通过这一关 → 只出机制类;奖励节点 / 商店 → 只出属性提升类 + 资源类,机制类在此只以门票形式出现;三渠道不再共用同一个池 +2. **渠道分工落地**:三条渠道按分类分离——关底 Boss 击败=通过这一关 → 只出专长;奖励节点 / 商店 → 只出属性值提升 + 资源,专长在此只以门票形式出现;三渠道不再共用同一个池 3. **两个新种类入表**:刷新次数、专长获取门票进入 `adventure.tres`,各自带全参数 4. **商店货架补回复**:按默认原则,回复必须在商店货架内(现行缺) 5. **数据缺陷修复**:`relics.tres` 的 charge 标签补至 ≥4 件(档二要求同标签 ≥4,现仅 3 件,永远达不到) @@ -51,7 +51,7 @@ ### 2.3 渠道与池的现状 - 现行**三渠道共用同一个 98 张固定配额令牌池**(普通 70 / 稀有 25 / 罕见 3),三类混编 -- 机制类(专长)只占稀有/罕见档,与属性大件混编;商店货架靠"零机制类挤掉一张普通卡"保底 +- 专长只占稀有/罕见档,与属性大件混编;商店货架靠"零专长挤掉一张普通卡"保底 - 商店货架 = 池 ∖ {GP 袋}(`shop.tres` 的 `pool_shelf` 行族,现为 attack / max_hp / armor_class / ap 四项,**缺回复**) - 奖励节点与通关三选一**共享同一池、同权重同上限**(`node-reward` v2.4) @@ -67,16 +67,16 @@ ## 三、设计契约(违反即返工,🔴 触碰 = L3 停机) 1. 🔴 **兑付频率不可改**:奇物**不是打一场战斗给一份**。关内普通战斗节点打完不给任何奇物;一关之内只兑付一次,触发点是**关底 Boss 被击败**——按 [冒险结构](../gdd/systems/冒险循环/冒险结构.md) 定义"通关一关 = 该关关底 Boss 被击杀",**这两件事是同一个时刻,不是一条链上的两步**。任何把专长挂到"战斗结算后"的实现即为 L3 -2. 🔴 **两条轴互不决定**:分类轴(给的是什么:机制类 / 属性提升类 / 资源类)与渠道轴(从哪来:奖励节点 / 商店 / 关底 Boss 击败)**不得互相推导**。禁止"因为它要进商店所以另立一分类"这类反向推导(= 06 已登记的"两轴缠回去") -3. 🔴 **Boss 渠道独占机制类**:关底 Boss 击败=通过这一关**只出机制类**,属性提升类与资源类在此不出现。这是渠道轴的定位决定,不是例外,不需另找理由。末关的 Boss 击败后不给(无后续关卡可消费) +2. 🔴 **两条轴互不决定**:分类轴(给的是什么:专长 / 属性值提升 / 资源)与渠道轴(从哪来:奖励节点 / 商店 / 关底 Boss 击败)**不得互相推导**。禁止"因为它要进商店所以另立一分类"这类反向推导(= 06 已登记的"两轴缠回去") +3. 🔴 **Boss 渠道独占专长**:关底 Boss 击败=通过这一关**只出专长**,属性值提升与资源在此不出现。这是渠道轴的定位决定,不是例外,不需另找理由。末关的 Boss 击败后不给(无后续关卡可消费) 4. 🔴 **专长门票四条口径不可改**:①**拿到即开、不可囤积**(不进持有集,选中/买下同一时刻开专长三选一);②**罕见只在概率、不在价格**(货架价与其他商品相当);③**一局限购一次**;④**计步保底**——连续 5 次三选一展示未出现 → 第 6 次必定出现(计数=**展示次数**,刷新后的重展计入,奖励节点与商店共享计数,触发后清零,限购用满后不再触发) 5. 🔴 **统一词族不得用 `reward_*`**(已被 `reward_pick` / `reward_node` / `reward_preview` 占用,见 §2.1) 6. 🔴 **档位配额结构锚不可绕过**:`TIER_QUOTAS` 的 70/25/3 有 validate 硬断言。改总量须重裁并留说明,不得调参绕过 -7. 🔴 **不新增节点类型**:`关卡节点地图` 的节点类型封闭枚举五种不变,机制类挂 Boss 节点兑付面 +7. 🔴 **不新增节点类型**:`关卡节点地图` 的节点类型封闭枚举五种不变,专长挂 Boss 节点兑付面 8. 🔴 **魔法道具边界不位移**:奇物**当局清零、跨局带走的是魔法道具**(判据走生命周期,不走"带在身上")。本批任何改动不得让奇物进同调位,也不得让魔法道具进当局随机渠道 9. 🔴 **层级纪律**:奇物只走当局随机渠道(奖励节点 / 商店 / Boss 兑付),不进元进度天赋树 10. **本批不改平衡数值**:所有 `feature_value_*` / `feature_quota_*` 的**值零变更**。入新种类属结构改动(占配额),非调参 -11. **零战斗期新动词**:机制类表达全部经"扫雷决策 → 自动结算"间接生效,不新增手动闪避 / 主动施法 +11. **零战斗期新动词**:专长表达全部经"扫雷决策 → 自动结算"间接生效,不新增手动闪避 / 主动施法 ## 四、范围边界(以下均不在本批,收到即停、不顺手做) @@ -119,10 +119,10 @@ - 建议甲或乙;若判断丙才对,回写本任务书并转 06 - 轻闸:冒烟全量 + **断点存档往返测试绿** + `ui_click_probe`(触碰 presentation) -### T3 词族对齐第三批:`relic_*` → 机制类(≈0.8d) +### T3 词族对齐第三批:`relic_*` → 专长(≈0.8d) - 范围:`relic_table.gd`(+`.uid`)/ `relics.tres` / `relics_engine.gd` / 及 9 个引用文件 -- 目标词族:`feat_*`(机制类 = 专长 Feat,**与顶层 `curio_*` 区分**:顶层是容器,内层分类各有各的词族——`curio_*` 是总称、`feat_*` 是机制类、`asi_*` 是属性提升类、`res_*` 是资源类) +- 目标词族:**`feat_*`**(专长 Feat)。**顶层与内层分类各有各的词族**(v2.7 定名后确立):`curio_*` 是总称「奇物」/`feat_*` 是专长/`asi_*` 是属性值提升/`res_*` 是资源 - **文件名与 `class_name` 改名须同步 `.uid` 与 `.tscn`**(非文本层) - **不新增节点类型**;MINE_HOOKS 红线校验逻辑零改动 - 轻闸:冒烟全量 + 全探针(三) @@ -131,9 +131,9 @@ ### T4 渠道分离:池的拆分(≈0.8d) - 目标:三个渠道各按分类白名单取候选,不再共用同一个 98 张池 - - 关底 Boss 击败 → 只出机制类 - - 奖励节点 / 商店 → 机制类**只以门票形式出现** + 属性提升类 + 资源类 -- ⚠️ **配额结构锚处置**:机制类抽离共享池后,属性与资源类的配额总量是否维持 98?**若须改 `TIER_QUOTAS` 总量,走重裁流程并在本任务书回写理由**(不得调参绕过 validate 硬断言) + - 关底 Boss 击败 → 只出专长 + - 奖励节点 / 商店 → 专长**只以门票形式出现** + 属性值提升 + 资源 +- ⚠️ **配额结构锚处置**:专长抽离共享池后,属性与资源的配额总量是否维持 98?**若须改 `TIER_QUOTAS` 总量,走重裁流程并在本任务书回写理由**(不得调参绕过 validate 硬断言) - 商店货架 = 池 ∖ {GP 袋}(**计价物不自售**规则:凡以某渠道计价物为内容的奖励不进该渠道货架) - 轻闸:冒烟全量 + 探针 + **MC 逐位对拍**(涉核心,必须) @@ -187,14 +187,14 @@ | A1 | 词族归零 | `game/` 下 `feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick` 命中数 = 0(存档键除外) | | A2 | 禁词未用 | `game/` 下无 `reward_pick` / `reward_node` / `reward_preview` **新增**(既有三处不动) | | A3 | 兑付频率正确 | 专长兑付点 = 关底 Boss 击败;**关内普通战斗节点不产奇物**(代码级断言 + 人闸目检双查) | -| A4 | 渠道分离 | 三渠道候选池按分类白名单过滤;机制类在非 Boss 渠道只以门票形态出现 | +| A4 | 渠道分离 | 三渠道候选池按分类白名单过滤;专长在非 Boss 渠道只以门票形态出现 | | A5 | 门票拿到即开 | 门票不进持有集;选中/买下同帧开专长三选一(断言:持有关卡推进后仍无门票残留) | | A6 | 保底计数 | 连续 5 次展示未出 → 第 6 次必出;刷新重展计入;限购用满后不触发 | | A7 | 值零变更 | T1-T3 全部改名的键,值与基线**逐位相等** | | A8 | 存档往返 | 旧断点可读、可续;存档键按 T2 裁点结论验证 | | A9 | 池配额锚 | `TIER_QUOTAS` validate 硬断言绿;若改总量须有重裁说明 | | A10 | 节点类型零扩类 | 节点类型仍为封闭枚举五种 | -| A11 | 玩家可见面无分类名 | 奇物列表 / 三选一面 / 弹窗**不出现**"机制类/属性提升类/资源类"字样(与 06 独立条目协同,本批只做**断言检查**,不改法) | +| A11 | 玩家可见面无分类名 | 奇物列表 / 三选一面 / 弹窗**不出现**"专长/属性值提升/资源"字样(与 06 独立条目协同,本批只做**断言检查**,不改法) | | A12 | 档二通路 | charge 标签 ≥4 件,或已有显式登记"不可达 + 转内容批" | ## 七、异常分级(loop 规范) @@ -205,7 +205,7 @@ **本批预判的 L3 高风险点**: 1. `relic_table.gd` 改名连带 `.uid` / `.tscn` 非文本层引用失败(T3) -2. 机制类抽离共享池后配额结构锚失锚,需重裁(T4) +2. 专长抽离共享池后配额结构锚失锚,需重裁(T4) 3. 存档键换名导致旧断点读不出(T2) ## 八、代拍板白名单(批内可自裁,台账留痕) @@ -239,5 +239,5 @@ | v2.2 | 非 Boss 渠道给**门票**形式(拿到即开、不可囤积);渠道约束重构为**三层**(分类白名单 / 可计算谓词 / 显式例外清单);立**默认原则**——除已登记规则外分类内成员都要在池子里 | | v2.3 | 门票四条口径细化(含**计步保底**:连续 5 次展示未出第 6 次必出,刷新重展计入);修正默认原则表述——**只管分类内部**,"渠道出哪些分类"是渠道轴自己的定位决定 | | v2.4 | 顶层定名**「奇物」Wondrous Item**(DND 魔法物品九分类的兜底杂类);落选 Treasure(偏财物)/ Relic(用户否决)/ 全部自造词;**代码词族定为 `curio_*`**(`reward_*` 已被占用) | -| v2.5 | 第三类定名**「资源类」**(偏泛,故在 1.3 写死判据句);**回复留在资源类**不拆第四类 | +| v2.5 | 第三类定名**「资源」**(偏泛,故在 1.3 写死判据句);**回复留在资源**不拆第四类 | | v2.6 | **修正核心循环图**——奇物不是打一场战斗给一份;关底 Boss 击败=通过这一关是同一时刻;兑付频率写进文首 / 2.1 / 待办 / registry | diff --git a/game/data/schemas/adventure_table.gd b/game/data/schemas/adventure_table.gd index e06c5784..b253e991 100644 --- a/game/data/schemas/adventure_table.gd +++ b/game/data/schemas/adventure_table.gd @@ -13,13 +13,13 @@ class_name AdventureTable extends Resource -## 概念指路:本表的属性提升类与资源类,与 relics.tres 的机制类,同属一个对象—— +## 概念指路:本表的属性值提升与资源,与 relics.tres 的专长,同属一个对象—— ## 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 -## 它们是它的分类轴上的枚举(机制类 / 属性提升类 / 资源类),不是三套系统; -## 本表承载属性提升类与资源类的种类配额与件值。 +## 它们是它的分类轴上的枚举(专长 / 属性值提升 / 资源),不是三套系统; +## 本表承载属性值提升与资源的种类配额与件值。 ## (2026-10-05 命名统一 + v2.0 改名:旧称「数值件」→ 属性提升;顶层「特性」→「奖励」→「奇物」。 ## 常量与字段随之前缀 feature_*,**尚未**随顶层改名换到 reward_*——见 06-待办清单。 -## 分类轴三个枚举:属性提升类〔生命上限 / AC / 攻击〕;资源类〔行动点上限 / +## 分类轴三个枚举:属性值提升〔生命上限 / AC / 攻击〕;资源〔行动点上限 / ## 刷新次数 / 金币 / 回复,命名待定〕——本表两类混编;刷新次数与专长获取两项尚未入表。 ## 类内异质性:金币与回复是即时兑付,不进持有集、不持续生效。) ## 三选一提升池 kind 词表(封闭——断点附随件与牌库剔除态依赖它;扩件走本表+registry 修订)。 diff --git a/game/data/schemas/relic_table.gd b/game/data/schemas/relic_table.gd index 879985ab..6f9a3c65 100644 --- a/game/data/schemas/relic_table.gd +++ b/game/data/schemas/relic_table.gd @@ -2,13 +2,13 @@ # Validation Question: 七核心流派各 ≥3 件入局内随机渠道后,标签+档位激活引擎能否机械判「成型」、 # 专长带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) # Date: 2026-10-04(双层 BD 实施批 T1——任务书五裁定稿;设计权威 双层BD体系-整合定稿-2026-10-03 v3) -# 概念指路:本表的机制类(专长),与 adventure.tres 的属性提升类、资源类,同属一个对象—— +# 概念指路:本表的专长,与 adventure.tres 的属性值提升、资源,同属一个对象—— # 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 -# 它们是它分类轴上的枚举(机制类 / 属性提升类 / 资源类),不是三套系统;本表承载「机制类」(专长 Feat)的逐项定义。 -# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「机制类(专长)」; +# 它们是它分类轴上的枚举(专长 / 属性值提升 / 资源),不是三套系统;本表承载「专长」(专长 Feat)的逐项定义。 +# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「专长」; # 表名与 relic_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。 # 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见奇物文档 2.1 节。) -# 数据配置 RelicTable schema(奇物·机制类定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 +# 数据配置 RelicTable schema(奇物·专长定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 # 定义表——AuxItemTable 先例)。 # 行字段:relic_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名—— # 投放档映射:common/rare→稀有令牌档、rarest→罕见令牌档;relic 令牌永不入普通档=「挂稀有/罕见档」