两文件是流水线流程件而非游戏描述件,此前住在 design/gdd/ 造成三处不适配: gdd_lint 必须为它们逐条关掉体裁规则、格式权威却写在 doc-conventions §12、 与同族的 roadmap(在仓库根)分居两处。迁到根后按 roadmap.md 的无编号风格改名。 - 迁出:design/gdd/06-待办清单.md → 待办清单.md;07-体验验证清单.md → 体验验证清单.md - 指向改写 53 个文件:GDD 各系统文档指路存根、四份规约、02 根索引、README/roadmap/AGENTS - 两份清单自身 74 处出站链接按新基址重指(../art → design/art、systems → design/gdd/systems) - gdd_lint:待办/体验验证两文件的 R1/R3/R5/R7 豁免行随迁删除(已脱离扫描面),后门表清零 - pipeline_gate 默认路径、log_analysis/render_gate 称谓、repo_structure_audit 根文件白名单同步 - 保护面补写:两份清单列入实现批禁写清单(AGENTS 两类批条 / process-conventions §12 / 架构文档域表), 条目状态只由流水线各段推进 - 范围外未动(用户令「全不碰」):reports/ 与 design/research/ 的 22 处历史指向、game/ 两处注释
47 KiB
奇物(Wondrous Item)
一次冒险之内,通过各渠道给予玩家的增益总称——奖励节点给的、商店里买的、打赢关底 Boss 给的,都是奇物。它装的是"这一局你捞到了什么",不管从哪个渠道来。
它是一个概念,不是一套东西。下面有两根互不相干的轴:
- 分类轴回答"给的是什么"——三个枚举:专长 / 属性值提升 / 资源;
- 渠道轴回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败(即通过这一关)。
一个奇物属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。
兑付频率(先看这条,它是三条渠道的共同前提):奇物不是打一场战斗给一份。关内的普通战斗节点打完了什么也不给;一关之内奇物只兑付一次,触发点是关底 Boss 被击败——而按 冒险结构 的定义,打掉关底 Boss 恰好就等于"通过这一关",这两件事是同一个时刻,不是一条链上的两步。
状态:已实现(2026-10-04 双层 BD 实施批落地)。本文件是奇物的唯一定义文档。
数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是
game/data/tables/feats.tres与game/data/tables/adventure.tres。
专长(重设计·基础框架 v1)
本节是专长分类的现行事实源(2026-10-07 用户终审认同写入文档)。件表为设计声明——数值全 provisional 归调参批;命名全为代号,正式命名归用户。新框架已随迭代 20 专长实装批落地(2026-10-11):
feats.tres29 行=基础 27+迁入 2,行为与数据行 1:1。
设计原则
- 触发器句式:每件专长的效果声明为「当 X 时 Y」(on / when / do 三字段,词表=效果引擎封闭集)。件的性格来自它挂在哪个事件上;combo 靠事件共享自然涌现——不设流派标签、不设档位机制。
- 事件族组织(设计侧分组工具,不上卡面):开格系 / 封印系 / 踩雷系 / 节奏系 / 战斗系五族。族名禁上玩家可见面(命名铁律)。
- 准入校验:代价与收益须同账可核算——「纯代价件」禁止出生;契约件的代价必须一句话讲得清(契约不可怕,糊涂账才可怕)。
- 信息红线:禁止任何效果让数字说谎(信息规则不豁免);揭示类效果只揭真格。
- 防兑换环:互相转换的通道必须有损耗或每轮上限;单向通道优先。
落行注记(迭代 20 反哺写入,2026-10-12 追认⑤):「每第 N 次 / 积满触发」的数据行条件写 N−1——效果引擎 dispatch 时 when 先于 do 读计数器现值(预评估),故「满 N 触发」落行写 N−1(例:地质学家「满 4 种」写 eq 3、封印匠「每第 3 次」写 mod_eq ref 2、双管镐「每第 2 次」写 mod_eq ref 1)。行为仍为每第 N 次准点触发,单元测试钉住;新件落行照此口径。
基础件表(27 件,五族 + 跨族桥 + 契约尖点)
开格系(6)
| 代号 | on / when / do(声明要点) | 账 |
|---|---|---|
| 双管镐 | on 付费挖格:每第 2 次返 1 AP | 挖格效率体感 +25%;要持续挖才赚 |
| 地质学家 | on 开格:每首开一种新类型资源格集 1 点,满 4 种→揭示 1 格 | 鼓励均衡开格路线;收益=真信息(扩签:类型集合计数器) |
| 安全帽 | on 开安全格:攒 1 层;on 踩雷:耗层,每层减 1 伤害 | 开格↔踩雷的桥;攒层一次清零,自爆流友好 |
| 跳格采掘 | on 挖开空白 0 格(连锁展开):攒 1 点,3 点→任意揭示 1 格 | 奖励连锁;收益=真信息(扩签:空白连锁判定) |
| 爆破会计 | on 轮末:本轮挖格花费 AP ≥5 → +1 GP | 勤奋奖,账透明(扩签:本轮挖格花费) |
| 边陲矿工 | on 挖开棋盘边缘格:产出 +1 | 微光时代可规划的路线选择(扩签:边缘格判定) |
封印系(4)
| 代号 | on / when / do(声明要点) | 账 |
|---|---|---|
| 封印回响 | on 标中:计数;on 轮末:计数 ≥2 → 返 1 AP(下轮) | 推理压力换 AP 增量,不占既有兑付位 |
| 示警烟火 | on 标中:揭示该雷周围 3×3 的资源类型(不揭危险格与安全格) | 标中换信息;信息红线安全(类型≠危险格与安全格) |
| 封印匠 | on 标中:每第 3 次 → 该危险格中立移除 | 三次标中换一次排雷;频率闸死 |
| 封印桩 | on 标中:本轮 AC +N | 生存奖励挂正确推理;与封印回响共享事件零新增挂点 |
踩雷/受伤系(9)
| 代号 | on / when / do(声明要点) | 账 |
|---|---|---|
| 疼痛记忆 | on 踩雷:攒 1 层;下一次攻击附加层值伤害,用后清零 | 雷罚转延迟输出;自爆流骨架(「下场战斗」系笔误,2026-10-12 追认⑥改定) |
| 保险丝 | on 受伤:单次 ≥5 攒 1 点,2 点→护盾 1 层 | 大额伤害缓冲(扩签:单次伤害量) |
| 见血开窍 | on 踩雷:揭示 1 格 | 错误资源化;零新增代价 |
| 陷阱本能 | on 踩雷:本轮攻击 +N(当轮即效、不结转,走攻击面板乘区) | 踩雷当场变火力;与战斗系同乘区互相喂(2026-10-11 用户裁走面板) |
| 连环陷阱 | on 同轮第 2 颗及以后的踩雷:每颗额外 +1 层(疼痛记忆同账) | 纯加成件、本身零收益——与疼痛记忆 combo 涌现(扩签:本轮踩雷数计数器) |
| 陷阱爆发 | on 踩雷:全体存活敌受 雷伤×倍率 直伤 | 角色与怪物互相吃伤害;倍率 >1 系结构锚(引爆有代价、回报须更高),数值归调参批(扩签:雷罚伤害量) |
| 血蜜 | on 踩雷:回复 N 生命 | 引爆仍然净亏血、只是亏得慢;比值 <1 系结构锚,N 归调参批 |
| 石肤 | on 受伤:AC +1(本场累计,上限 M) | 受击成长型护甲——越挨打越硬;恒定减伤形态被否(用户裁「太硬霸」),M 归调参批 |
| 背水 | when 生命 ≤50%:受伤额外 −N | 风险联动减伤——低血不再是纯劣势;自爆流刀口舔血兜底(扩签:生命比例〔条件事实——实现前置需求,待办清单在册〕) |
踩雷转化对账锚(自爆流 kill-switch,2026-10-11 用户裁顺带登记):踩雷的净血账期望必须为负——雷伤 > 血蜜回复 + 其余转化件的血当量;对账归调参批,两轮数值迭代压不住则砍血蜜。防「见雷就踩」退化(喂雷流 R5 甲教训同源);主动/误踩不判定(用户裁:不预判玩家意图,拿件自选收益最高的操作)。
跨族桥(封印系 × 踩雷系)(1)
| 代号 | on / when / do(声明要点) | 账 |
|---|---|---|
| 破封一击 | on 挖开有封印印记的危险格:额外 +1 层(疼痛记忆同账) | 印记=标定引信、挖=引爆——推理定位的显式回报;挂棋盘事实(挖开格当时有封印印记)非玩家意图判定(扩签:被挖格当时有封印印记) |
节奏系(3)
| 代号 | on / when / do(声明要点) | 账 |
|---|---|---|
| 弃图兑换 | on 停手:剩余 AP ≥3 → 剩余 AP 1:1 折为停手后首次攻击附加伤害(全额、用后清零;多攻击不拆分) | 资源转换件;单向无环(扩签:停手挂点)(落法 2026-10-12 追认⑧回写——停手后紧跟战斗段序,「下轮」前移为首战首攻) |
| 一滴不剩 | on 轮始:上轮 AP 耗尽 → +1 AP | 奖励节奏打满;憋 AP 没份 |
| 收盘 | on 轮末:本轮开格 ≥8 → +1 GP | 勤奋奖(扩签:本轮开格数) |
战斗系(3)
| 代号 | on / when / do(声明要点) | 账 |
|---|---|---|
| 斩首学者 | on 击杀:揭示 1 格 | 战斗反哺扫雷的桥;收益=真信息 |
| 处刑台 | on 敌血量阈值 ≤30%:主角对其伤害 +N | 处刑线;数值归调参批 |
| 战地包扎 | on 战斗胜利:回复 N 生命 | 战后通用恢复,不绑踩雷——非自爆流玩家的恢复答案 |
契约尖点(1)
| 代号 | 契约 | 账 |
|---|---|---|
| 血税 | 本局:踩雷 −2 最大生命;标中 +1 攻击(均下一战起生效——战末汇入冒险加算区) | 双向都痛都爽,一句话讲得清;双向同账、本局累积、冒险收束清零。max_hp/攻击系战界重建属性,即时改会被重建冲掉,故滞后一战兑付(2026-10-12 追认⑨回写;卡面 desc 同步补「下一战起生效」) |
迁入登记(秘宝域迁出件;实装批落地后并入件表)
| 代号沿用 | 目标族 | on / when / do 要点 | 备注 |
|---|---|---|---|
| 淬毒刃纹 | 战斗系(克制向) | on attack_commit;when 克制(advantageous);do 追加 +N | 数值归调参批 |
| 封印爆裂 | 封印系 | on flag_hit;do 全体存活敌 N 群伤 | 封印系补第 4 件;数值归调参批 |
惊巢反制=退役进素材库(不迁入)。
资源类迁出件(2026-10-18 用户裁):完美保险自资源类迁入专长——理由:它给的是规则豁免而非可调动的余量(§1.1 判据「给规则的是专长」),效果=本场首次封印落空不计入完美封印判定。旧「资源类成员」归类系 2026-10-08 框架批写入、无用户裁断支撑,随本次改判注销。专长行已于迭代 31 卡② 落表(合并 3e076e22):feats.tres 单行 when counter(insurance_used) lt 1 承载「本场首次」,效果类型 forgive_seal_miss 随引擎扩签;配额按净删重裁(rare 9→7、总量 104→102)。
扩签登记(迭代 20 实装已承载——2026-10-12 追认④写入文档换代)
- 落地结果:事实候选 10 条中 6 条落 FACTS 词位(边缘格判定/空白连锁判定/单次伤害量/被挖格当时有封印印记/雷罚伤害量/生命比例),4 条改道 adventure 域计数器(类型集合计数器/本轮挖格花费/本轮开格数/本轮踩雷数计数器——跨事件累积量走计数器+value_event 比较,不占 fact 词位,T0 定架构);停手事件已落(dig_stop);实现随裁补位=battle_won 事件(战地包扎所需,登记未列)、mod_eq 算子(周期触发)、hp_ratio(百分比 int 口径)等 3 项事实、新效果类型 7 项。
- 连带:净化工兵退役,rewrite_board 效果类型自引擎除名(扩签「暂缓:清图事件」不受影响,继续挂起)。
- 暂缓:清图事件(随清图奖励题)。
老 27 件处置
老 27 件已全数退役,名单见道具退役素材库表二;feats.tres 在役行随重设计实装批删除替换。任何一件要进新体系须重新过准入校验、分界尺与定义卡三关,不默认继承。
资源(重设计·基础框架 v1)
本节是补给分类的现行事实源。补给成员 = 转换源:不是系统资源本身,是「到手即结算成一笔系统数值的凭证」——凭证加完消尽,被写入的系统资源各有自己的寿命档位(五档轴见核心循环「生命周期轴」节)。判据句与归类方法见 §1.3/§1.4。新凭证已随迭代 20 专长实装批落表(2026-10-11);2026-10-18 用户裁削两件后,现行成员=新 3+留任 2(同调电池删除、完美保险归专长——见 git 提交史 v3.18)。
凭证件表(新 3 + 留任 2;代号制命名归用户;稀有度档、配额与面值数值归调参批)
2026-10-18 用户裁削两件:同调电池删除——秘宝是「局外同调件」、冒险中零更换途径,与
cf04bd66撤换装券/删回能器同一原则(且 UI 层从未接线选件入口);完美保险迁出资源类改归专长——它给的是规则豁免,不是余量,见 §1.4 判据。两件原职责账(秘宝充能/完美资格)同步自 §1.3 账清单注销。
| 代号 | 写进哪笔系统资源(寿命档) | 一句话 | 备注 |
|---|---|---|---|
| 刷新券 | 刷新存量账(冒险级) | 存量刷新次数 +1 | 语义=存量加仓(已裁);实现依赖刷新件写错账修复(同批) |
| 储备金袋 | 储备池 RAP(节点级) | 储备池 +N | 给停手/刷新雷图经济加燃料;战斗结束清零系既有语义,兼容 |
| 时沙 | 下一战首轮 AP 队列(拾取挂账,兑付即消尽) | 下一战首轮 AP +2 | 一次性节奏件;与「AP 上限+1」(属性轴)不撞——一个改池子、一个改上限(落法=hero_ap_bonus 既有通道,2026-10-12 追认⑦回写;拾取时战斗在途同样等下一战首轮) |
| 小 GP 袋 | GP 钱包(冒险级) | (留任)+20 / +50 | 计价物不自售维持(不进商店) |
| 应急口粮 | 生命账(冒险级) | (留任)回复 +6 | 在商店内(默认原则) |
- 上架原则:新凭证按默认原则全渠道可出(分类成员都在池子里);稀有度档、配额与面值数值归调参批。
- 池子档位形态与三选一抽取规则:见「池结构与抽取(重设计 v1)」节(2026-10-07 用户裁案D——归档打底做翼+曝光槽)。
池结构与抽取(重设计 v1)
令牌牌库(奖励节点与商店共用)的组织与三选一抽取规则(2026-10-07 用户裁案D——归档打底做翼 + 曝光槽)。
- 令牌=出现次数上限:每个成员在牌库里有 N 张令牌——拿了消耗、没拿回池(刷新重抽同样不消耗),所以「最多被拿 N 次」= 池里放 N 张,天然成立,不另设计数器;「只刷出、没拿」不计次数(现行 TP0 语义沿用)。
- 概率与上限解耦(设计约束,新内容必检):每个成员标注两个独立属性——概率位(档+权重/令牌数)与已拿上限(cap;拿了才计、刷出不计)。概率不决定上限、上限不影响概率。
- 已知耦合问题(实装批选型注意):现行令牌模型里「N 张令牌」同时承担概率与上限两个职责,无法独立设定(例:档概率需 3 张 vs 单件限拿 2 次——3 张压不住上限、2 张保不住概率)。实现路径候选三案:①抽象权重表+独立已拿计数器(解耦彻底;代价=推翻 TP0 实体牌库模型、「池耗即上限」语义改写)②令牌池+提前退役计数器(保留模型;代价=名义概率与有效概率两层、对账复杂化)③维持耦合(设计自我设限——用户已否)。选型归实装批;影响面=MC 对账模型与断点存档(已拿计数器须进断点附随件)。
- 内容归档(打底+做翼):普通档=属性件+小额钱(每拿都有底的面粉);优秀/稀有档=功能凭证与改手感件(期待位);传说档=惊喜位。归档按决策影响力、不按数值大小;面值数值归调参批。
- 曝光槽:每次三选一呈现 = 2 格按全池抽 + 1 格按「优秀档以上」子池抽;高档子池空 → 该格回退按全池抽(池空直通同族兜底)。格数与档配比归调参批。
- 凭证边界:凭证(专长获取)维持独立计数体系(概率/配额/限购/计步保底),不进曝光槽子池——避免两套保底互相干扰。
- 配额纪律:新凭证入池的令牌数与档配额改动按 TP0 纪律须用户重裁(schema 结构锚,非调参项)。
- 联动注记:曝光槽提高高档件被拿速度,高档子池更快耗尽后回退全池(预期行为非异常);MC「最稀有优先」策略的读数影响随实装复核。
设计目的
一次冒险要走三关,如果走完时角色和开局毫无区别,中途的每一次取舍就都不算数了。奇物就是那个把"这一局玩成了什么样"落下来的东西:让玩家在冒险过程中不断变强,且每一局变强的方向不同。
它同时要和跨冒险的成长隔开:永久保留的东西是秘宝(带在身上的物品)与元进度(账号级的树),奇物只在当局存在,冒险收束即清零——它不是"你的存档变强了",而是"这一次下矿的你变强了"。
边界判据(一句话):一次冒险内获得、冒险收束即清零的,是奇物;跨冒险跟着你走的,是秘宝。
这条判据走的是生命周期,不走"是不是物品"。原因:奇物这个筐里既装"角色自身的变化",也装 GP 这类一次性兑付物——用"拿在手里 vs 带在身上"去切,切不开它们,但用"当局清零 vs 跨局保留"能一刀切开,且对筐里所有东西都成立。
系统范围
| 负责 | 不负责 |
|---|---|
| 奇物的定义、三个分类、以及分类与渠道的交叉开关 | 每件效果怎么接入结算——归订阅事件所属文档(战斗结算、行动经济、地形变异) |
| 生命周期边界:何时出现、何时生效、何时清零 | 卡面排版与界面呈现细则——见 HUD框架 |
| 获取渠道的口径与约束 | 秘宝与元进度——归上表两份文档 |
| 与相邻概念的边界 | 格面资源、关卡节点、商店本身的规则——归各自所属文档 |
在核心循环中的位置
一次冒险 = 三关串联,每关 = 一条节点链 + 一个关底 Boss
关内普通战斗节点 ──▶ 打完不给奇物,继续往下走
│
├─ 奖励节点 ──▶ 一次三选一(属性值提升 / 资源,专长凭证)
├─ 商店 ──▶ 花钱买(属性值提升 / 资源,专长凭证)
│
关底 Boss 击败 ═══╗ ← 打掉关底 Boss 就是「通过这一关」,同一件事
╰──────────╬──▶ 一次专长三选一(专长)
╰──▶ 通关回血 ──▶ 进下一关,带着它继续
关键:一关只兑付一次,不是一场战斗给一份。 触发点是关底 Boss 被击败,而这恰好就等于"通过这一关"(冒险结构 定义:通关一关 = 该关关底 Boss 被击杀)——这两件事是同一个时刻,不是一条链上的两步。关内普通战斗节点打完了什么也不给,直接往下走。
奇物处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是三条渠道,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。
核心规则
1. 分类轴:三个枚举
奇物只有一个名词,但它下面分三类。这三类各有自己的专名,不是描述——文档正文、代码词族、帮助与百科页面都用这三个词指代它们。
| 分类 | 它给的是什么 | 落点 | 事实源 |
|---|---|---|---|
| 专长(Feat) | 给规则。订阅结算管线的某个事件(订阅哪个事件 / 什么条件 / 什么效果三字段声明) | 各结算段事件发射点 | feats.tres(逐项定义) |
| 属性值提升(ASI) | 给数字。抬高角色某项战斗属性的基础值 | 冒险加算区的生命上限 / AC / 攻击三轴 | adventure.tres(种类配额与值) |
| 补给 | 给系统资源加一笔。不抬高战斗属性,也不改规则 | 行动经济、三选一界面、局内钱包;不进加算区、多数不进持有集 | adventure.tres(种类配额与值) |
三类的共性:都在当局获得、都在当局消费完或随冒险收束清零;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。
1.1 专长:规则改写
专长改的是规则而不是数字——它给自己加一条"在某种条件下,本来不会发生的事现在会发生"的规则。它不是任何一条属性轴的延伸,玩家也无法用"加了多少"来衡量它。
专长的现行体系以本文「专长(重设计·基础框架 v1)」节为现行事实源:触发器句式(on/when/do)+ 事件族组织,不设流派标签、不设集件档位。它和另两类最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。
专长凭证是专长在非 Boss 渠道的出现形式:奖励节点与商店不直接给专长,而是给一张名为「专长获取」的凭证——拿到后立刻开一次专长 N 选一。它不是独立于专长的一件东西,而是专长在这两条渠道上的兑付形态;交叉表上专长行因此记「凭证形式」,不是「不出现」。详见 2.2。
1.2 属性值提升:纯属性三项
三项,各改一条战斗属性轴:
| 项 | 改什么 |
|---|---|
| 生命上限 | 抬高角色的生命上限 |
| AC(护甲) | 抬高角色的护甲 |
| 攻击 | 抬高角色的攻击 |
三项都直接进冒险加算区,跨关携带且关间不清零。这一类是封闭的:成员增减走文档修订。行动点上限自资源分类迁入本轴(2026-10-09 用户令)即一例,随实装批落表;落地前现役代码按三项运行。
1.3 补给:转换源
资源这一类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西。成员现行事实源=本文件「资源(重设计·基础框架 v1)」节的凭证件表(新 3+留任 2);旧枚举四项的去向:行动点上限归属性值提升轴(见 1.2)、刷新次数由刷新券替代、GP 与回复留任为小 GP 袋/应急口粮。
资源为什么单独成一类:它的成员不满足"抬高战斗属性"(那归属性值提升),也不满足"改写规则"(那归专长),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。即时兑付的 GP 与回复同留本类、不独立成第四类(2026-10-05 用户定)——判据与资源完全同源,拆出去只会让读者多查一张表。
判据句:补给成员是转换源——不是系统资源本身,而是「到手即结算成一笔系统数值的凭证」,凭证加完消尽;被写入的系统资源(GP 钱包/刷新存量/储备池/时沙暂记)各有自己的寿命档位。拿不准一项该归哪类时问三句:它进不进角色自己的属性数值(进→属性值提升);它改不改规则(改→专长);都不是、而是给某一笔系统资源做一次性加仓的,归补给。
补给类内部的异质性(统一表述):凭证全部即时消尽——不存在「持有凭证」这种状态;异质性不在凭证上,而在被写入的系统资源的寿命上:GP 钱包 / 生命 / 刷新存量 = 冒险级,储备池 = 节点级,时沙暂记 = 至下一战首轮兑付(系统资源清单对齐「凭证件表(新 3+留任 2)」节;「AP 上限」已归属性值提升轴,见 1.2)。
- 原在册的「秘宝充能」「完美资格」两笔随 2026-10-18 两件裁削注销——
attune_charges账本本身仍为秘宝基础设施保留(迭代 11,主动件充能每冒险重置),本次只删奇物侧写它的入口。 - 完美资格的豁免走订阅式自有累加账:授予段在
seal_missed命中时累加豁免数,判定取「误标总数 − 豁免数」得有效数;不改写误标账本身、不拦截事件(迭代 31 卡② 契约 2/3)。 - 登记此节防止把凭证当成会持续生效的东西去结算。
1.4 分类判据
给规则的是专长,给数字的是属性值提升,给系统资源加一笔的是补给。
拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(专长)、"某个数字少了一截"(属性值提升)、还是"能调动的系统资源少了一笔"(补给)。
1.5 命名出处
专长与属性值提升都取自 DND 规则书的既有名词:专长对应 Feat,属性值提升对应 Ability Score Improvement(ASI)。顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(专长改规则 / 属性值提升改数字 / 资源给余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。资源取"资源"这个常用词(用户 2026-10-05 定)——刷新券、储备金袋、时沙这类凭证与小 GP 袋、应急口粮都是可以调动、可以花掉的余量。它确实偏泛(能力资源、财富资源都叫资源),所以这一类的判据句必须写死:给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升——这一句是把"资源"从泛用词收回到本类定义里的唯一凭据,不能省。三个分类的专名在 v2.7 去掉了「类」字后缀——此前写作「机制类 / 属性提升类 / 资源类」,那是描述不是专名;去掉后缀后三个词各自都能独立成词、与 DND 官方中文一致,理由与逐条依据见 1.6 节。 玩家可见文案只写效果,不出现任何分类名。
2026-10-19 第三类改名「补给」——「系统资源」已定为 GP/钥石/行动点等数值容器的规范名(定义见核心循环「系统资源」节),类名再叫「资源」会把"给系统资源加一笔的件"误读成"系统资源本身";改名后本类的判据句以 §1.3 为准,本段保留的是命名沿革。
1.6 三层结构与命名(本概念的完整层级)
奇物这个概念只有三层,任何一处提到它都属于其中一层:
| 层 | 名称 | 例子 | 谁看得到 |
|---|---|---|---|
| 一层 总称 | 奇物(Wondrous Item) | 「这一局你捞到的全部奇物」 | 全部玩家可见面 |
| 二层 分类 | 专长 / 属性值提升 / 资源 | 「这四件是属性值提升」 | 帮百科与成就页可见;卡面与详情页不出现 |
| 三层 单件 | 具体那一件的名称 | 双管镐、疼痛记忆、生命上限 +1 | 全部玩家可见面 |
两层是两件事,别混:
- 命名是本节的规矩——三个分类各有一个专名,文档、代码词族、帮百科一律用它。指代某个分类时直接说「专长」,不说「机制类」「专长那一类」。
- 呈现是另一件事(归 battle 与 node-reward,本节不裁决):玩家看到某件奇物时,卡面只写这件东西的名字与效果,不附带它的分类。玩家可以从效果反推它属于哪一类,但界面不替他说破。
为什么两层都要有:分类名在卡面上不出现,不等于玩家对它没有概念——帮助手册、百科条目、成就名称三处一定会用到它(「首次集齐 4 件专长」「三件属性值提升」),效果描述里出现指代时也需要名字(如「本项属专长」类归类指代)。所以它必须是一个玩家读得懂、读一遍就懂的正式名词,不能是内部描述或自造词。
代码侧词族对应(本批只做命名对齐,代码改动见需求卡片):顶层 curio_*(奇物总称)/ 专长 feat_* / 属性值提升 asi_* / 资源 res_*。reward_* 已被既有标识符占用(reward_pick / reward_node / reward_preview),禁止使用。
2. 渠道轴:与分类的交叉
三个渠道各只取走分类的一部分。这张表是奇物概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。
| 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败=通过这一关(见 2.1) |
|---|---|---|---|
| 专长 | 凭证形式(见 2.2) | 凭证形式(见 2.2) | 直接给(唯一的直接渠道) |
| 属性值提升 | 出 | 出(口径「训练」) | 不出现 |
| 补给 | 出 | 出(GP 除外,见 2.4) | 不出现 |
这张表的形状:Boss 渠道是专长的独占渠道,也是唯一直接给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的凭证。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奇物的获取节奏由完全不同的机制决定——前者靠打赢,后者靠抽取与购买。
渠道定位 vs 默认原则(两句,别混):
- 渠道出哪些分类,是渠道轴自己的定位决定,不是例外——Boss 渠道只出专长,所以另两类在此"不出现",这是"Boss 是专长独占渠道"的同义表述,不需要另外找理由。
- 默认原则只管分类内部(用户 2026-10-05 定):一个渠道一旦确定要出某个分类,该分类的成员就都要在这个渠道的池子里。它的默认值是"出",任何成员缺席都必须有已登记的规则,没有理由的缺席是缺陷不是设计。
两条的管辖范围不同:前者决定"这张表的格子填不填",后者决定"填了的格子里装不装得全"。
2.1 专长的主渠道:关底 Boss 击败(即通过这一关)
专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。
这个渠道的触发点就是「关底 Boss 被击败」——而按 冒险结构 的定义,打掉关底 Boss 恰好就等于"通过这一关"。所以这条渠道的全名是关底 Boss 击败(即通过这一关):它不是"战斗结算之后再来一次奖励"的独立步骤,而就是关卡推进本身那一刻。关内的普通战斗节点打完了什么也不给;一关之内奇物只兑付这一次。
终局那关的 Boss 击败后不给:兑付只发生在还有下一关可去的那些关底 Boss 身上——打赢最终 Boss 时冒险已经结束,没有后续关卡可消费,给了也无处生效。三关结构下,一局的确定性专长兑付次数由此确定(每个终局前 Boss 一次)。
不新增节点类型:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),关卡节点地图 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此完成裁决。
2.2 专长凭证:非 Boss 渠道怎么给专长
奖励节点与商店不直接给专长——它们给的是一张凭证:一个名为「专长获取」的奇物项,选中或买下之后,立刻开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。
它是专长在这条渠道上的形态,不是另一件东西:凭证兑付的就是一次专长三选一,本身不是独立于专长的一件成员。所以在交叉表上,专长在非 Boss 渠道的表现是只以凭证形式出现,不是「不出现」。为什么不直接给专长,见下条。
为什么非 Boss 渠道只给凭证:如果商店也能直接买到一个指定的专长,玩家就能用 GP 把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。凭证保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。
凭证的三个性质
- 拿到即开,不可囤积(用户 2026-10-05 定):凭证不进持有集,选中或买下的同一时刻就开专长三选一。玩家不能攒几张一次连开——可囤积会让玩家把关键决策无限推迟到最优时机,破坏 Boss 渠道的节奏感;而且"攥着一张票"就是把持有物语义从后门放回来了。它叫"道具"只是卡面表现,不是持有物。
- 不推翻确定性:专长的主渠道仍然是 Boss 击败后,玩家不会因为没抽到凭证就构筑不起来。
- 稀有只在概率,不在价格:凭证的"稀有"只体现在它出现的概率上——它在货架上的价格与其他商品相当,不靠高价劝退。一局内限购一次(现行口径)。
保底:第 6 次必出
光靠概率,运气差的玩家可能整局都见不到凭证——那就等于这个机制对他不存在。所以凭证带一条计步保底:
连续 5 次三选一展示中没有出现凭证,第 6 次展示必定出现。
| 项 | 口径 |
|---|---|
| 计数对象 | 三选一的展示次数,不是"节点次数"——刷新后的重新展示计入次数(用户 2026-10-05 明定含刷新) |
| 计数范围 | 奖励节点与商店共享同一计数,不各算各的 |
| 触发后 | 计数清零,重新累计 |
| 与限购的关系 | 一局限购一次;已经买过(限购用满)之后,保底不再触发——凭证已经用掉了,没有再给的理由 |
为什么是"展示次数"而不是"节点次数":保底要保的是"玩家看到的脸",刷新本来就是让玩家多一次看脸的机会,若刷新不计入,保底与刷新两套机制会打架——玩家可以用刷新绕开保底的计数语义。
玩家视角它长这样:在普通的三选一奇物或商店货架里,偶尔会冒出一张不一样的卡——拿到它,立刻再开一次专长选择。它是奇物面里的惊喜,不是奇物面的常态;而连续几次没见到之后,它一定会来一次。
2.3 商店口径:训练
商店这一侧走的叙事是「训练」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励节点那一侧完全相同:都是往同一个持有集里加一项奇物。
2.4 渠道约束分三层:白名单 / 可计算条件 / 显式例外
一个"某分类在某渠道出不出现"的判断,实际由三层叠起来决定:
| 层 | 是什么 | 判据来源 | 新增渠道或奇物时 |
|---|---|---|---|
| 一层 分类白名单 | 分类轴决定渠道——专长走 Boss、另两类走奖励节点与商店 | 分类本身 | 新分类按 1.4 判据归类,自动继承该类的渠道 |
| 二层 可计算条件 | 渠道与奇物之间的结构性关系,能算出来 | 对象与渠道的内在关系 | 自动适用,不用改表 |
| 三层 显式例外清单 | 人为的设计选择,没有内在理由可推 | 设计决定 | 只能逐条加,每条必须写理由 |
先诚实回答"计价物不自售不就是特判吗":形式上是的——它确实是在分类白名单之外又加了一道过滤,不是从分类推出来的。但它和三层那种"死特判"有实质区别:
| 写法 | 新增渠道/奇物时 | 维护方式 | |
|---|---|---|---|
| 死特判 | "GP 不进商店"(一条记录) | 每多一个例外加一条记录 | 靠人记住,容易漏 |
| 可计算条件 | "X 是渠道 C 的计价物 → X 不进 C"(一个函数) | 自动判定,不用改表 | 判据在对象属性上,不会漏 |
所以准确的说法是:它没有消除"在白名单外加过滤"这件事,但把过滤从"枚举例外"变成了"计算条件"。以后新增渠道或奇物,只要"不出现"的原因是结构性的——来自奇物与渠道的内在关系(计价物、即时兑付、需要先决条件等)——就能写成条件自动判定;如果原因是设计性的("我就是想让它在这一关不出"),那就只能进三层清单。
所以要害不是"有没有例外",而是"例外能不能被算出来"。三层清单不是不能用,但每一条都必须写出理由;一条写不出理由的例外,就是坏味道,应该回头质疑分类是不是分错了。
为什么不干脆拆成第四个分类(零例外的那条路):分类轴回答的是"给的是什么",GP 给的是余量,和刷新券、储备金袋同类。按"能不能进商店"去反推分类,等于用渠道轴的性质去切分类轴,两根轴又缠回一起了——这是本文件 v2.0 专门拆开的东西,不能为了消灭一条例外再缠回去。而且为一个只有一项的分类立枚举,读者会以为它和另三类是同一重量级的划分,实际它只是某一项恰好踩到了一条经济规则。
三个方案的真实代价,摆出来不藏:
| 方案 | 例外数 | 代价 |
|---|---|---|
| 甲:GP 单独立第四个分类 | 0 | 用渠道轴切分类轴,两轴缠回;一项一类,分类失衡 |
| 乙:可计算条件(现行) | 1 条条件 | 分类干净,但"白名单外加过滤"这件事没消失,只是自动化了 |
| 丙:死特判清单 | 1 条记录 | 每加一个例外加一条,靠记忆维护 |
回复在商店内(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则(除登记的特殊规则外,分类内的都要在池子里)它应当在商店中出现。现行 shop.tres 货架(pool_shelf 六行)已含回复——迭代15② 商店补回复批已按默认原则对齐落地(凭证行同批入架,见调参表)。
当前在册的约束清单(就这么两条,都要有理由):
| 约束 | 层 | 理由 |
|---|---|---|
| GP 不进商店 | 二层·可计算条件 | 计价物不自售——商店的计价物是 GP |
| 专长在非 Boss 渠道只给凭证 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 |
| 属性值提升与资源不出现在 Boss 渠道 | 不是约束 | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 |
2.5 在册事项
现行实现里三条渠道共用同一个候选池(商店货架按 2.4 可计算条件切边去掉计价物),三个分类出现条件一样、只有出现概率不同——上表渠道分工中的凭证形式(非 Boss 渠道给凭证 + 保底限购)已随迭代15② 入表实装(见 2.2 与调参表);Boss 渠道直接给专长已裁随专长实装批本批落地(2026-10-11 用户裁,不再分期)。相关的实施批次登记在 待办清单 的 BD 分层条目下,本文件不复制。
池结构选型澄清(2026-10-11):池结构正主=案 D(v3.3 写入文档,用户定夺在案);「概率与上限解耦」的实现路径(v3.4 在册三案)系实装侧自选项,非用户裁定项——按「实现设计不定于现在」的原裁定,实装批内依代码事实自选,不再上问。
3. 作用对象与范围
- 作用对象:角色本人,以及角色参与的结算过程。奇物不改敌人、不改棋盘生成、不改关卡内容。
- 刷新券的例外:凭证不进持有集——到手即结算进刷新存量账(冒险级)、加完消尽。它作用在三选一界面上,改的是"这一局里你能重抽几次",而不是角色身上的任何数字。它是资源里唯一一条作用对象不是角色的项——留在这里是因为它满足另外两条:当局获得、当局有效。
- 时间范围:整局冒险。专长与属性值提升自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;即时兑付凭证(小 GP 袋 / 应急口粮)拿到即结算消尽。
- 归属范围:不进账号永久进度,不带到下一次冒险。
4. 生命周期
未获得 → 进入候选池 → 作为候选出现 → 选定 → 持有/兑付 → 生效 →(冒险收束)清零
↑ ↓
断点恢复 持有集持续累积
| 阶段 | 说明 |
|---|---|
| 候选池构建 | 冒险开局时一次建成。三个分类的候选现同处一个令牌池:属性值提升与资源按配额铺开,专长按定义表的有效行铺开。 |
| 出现 | 玩家在渠道上看到 3 个候选(三选一的形式),看不到整个池。 |
| 选定 | 玩家选定一项后消耗该成员的一张令牌(拿了才计、只刷出〔含刷新重展〕不计);该成员令牌耗尽后不再出现于任何渠道。选到「专长获取」时,立刻再开一次专长 N 选一——这次选择走专长的渠道语义,不占用原本的渠道。 |
| 持有与兑付 | 专长与属性值提升进入持有集后立即生效,跨关携带。凭证即时结算入各自的账,不入持有集。 |
| 清零 | 冒险以任一结局收束时整集清空;下次开局重建。 |
| 断点恢复 | 进行中的冒险把持有集与剩余候选池一并写入断点,续玩后恢复到同一状态(断点里的键名沿用历史形态,不随本次改名变动)。 |
5. 关联与边界
| 相邻概念 | 关系(只写关系,不写对方的规则) |
|---|---|
| 秘宝 | 最需要分清的一对,判据是生命周期:奇物当局清零,秘宝跨冒险保留。两者互不相通——奇物永不进同调位,秘宝永不进当局随机渠道。 |
| 元进度(树) | 树管账号永久的规则与容量,奇物管当局构筑,两层互不代替。 |
| 战斗结算 | 专长订阅的事件发射点位于结算管线的各段;事件词汇与发射时机归结算文档。 |
| 行动经济、地形变异 | 部分事件(付费开掘 / 地形受伤)落在行动点收对价与地形处理上,语义归各自文档。 |
| 关卡节点地图 | 是渠道的载体,不是奇物的属性。专长挂在 Boss 节点兑付面上,节点类型词表零扩类。 |
| 地图战斗资源(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集,也不是渠道给的。 |
| 存档序列化 | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 |
依赖与输出
| 类型 | 内容 |
|---|---|
| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内 GP 钱包、三选一界面 |
| 依赖(数据) | feats.tres(专长定义行)、adventure.tres(属性值提升与资源的种类配额与值)、shop.tres(货架取舍) |
| 输出(对外) | 持有集、生效中的分类投影、剩余候选池、可用重抽次数 |
| 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 |
P0 最小闭环 / P1・P2 后置
- P0(已实现):三个分类可定义 → 进入候选池 → 在渠道上被选中 → 当局生效 → 收束清零。
- P1 后置:三条渠道按第 2 节分工——凭证形式(非 Boss 渠道给凭证+保底限购)已随迭代15② 入表实装(见调参表),其余分工(Boss 渠道直接给专长等)待实施。
- P2 后置:商店里的攻击类型转换服务;喂雷玩法是否保留(尚未拍板,登记在 待办清单)。
调参表
数值所有权归 难度曲线与Boss;本文件只列参数与取值域,不列现行值。
| 参数 | 取值域 | 事实源 |
|---|---|---|
| 专长定义行(标识 / 显示名 / 稀有度 / 效果说明 / 订阅行〔订阅哪个事件 on / 什么条件 when / 什么效果 do〕) | 各字段封闭枚举,行键白名单封闭;事件 / 效果类型 / 条件事实 / 算子四词表封闭(效果引擎单一事实源);稀有度档=新四级(普通/优秀/稀有/传说),schema 字段双脱钩(字段在、设计面按档配比加权) | game/data/tables/feats.tres |
| 专长凭证(出现概率 / 配额 / 限购次数 / 保底计数阈值) | 整数,四参数全 provisional | 已入表(迭代15② 凭证行——shop.tres + adventure_table.gd) |
| 属性值提升种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | game/data/schemas/adventure_table.gd |
| 资源种类 | 种类现行事实源=「凭证件表(新 3+留任 2)」节;凭证已入表(迭代15②) | 同上 |
| 稀有度档位 | 封闭四级(普通 / 优秀 / 稀有 / 传说);配额是结构锚,改总量须重新拍板而非调参 | 同上 |
| 各分类种类 × 档位的配额与值 | 整数 | game/data/tables/adventure.tres |
| 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 |
| 一次三选一的候选展示数 | [1,6] | 同上 |
验收标准
- 三个分类走同一套获取流程,代码里只有一个表示"已持有奇物"的集合。
- 一次冒险内获得的奇物在之后任何关卡都生效;开新冒险后持有集为空。
- 一个成员被拿走后消耗其一张令牌;令牌数=该成员出现次数上限,拿了才计、只刷出(含刷新重展)不计;令牌耗尽后该成员不再出现。
- 专长件的收益必须挂在声明的条件上——把 when 去掉后收益仍然成立的无条件数值件不是专长,归属性值提升。
- 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。
- 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"专长/属性值提升/资源"描述,禁止另造称呼。
- 刷新凭证不进角色加算区、不进持有集——刷新券到手即结算进刷新存量账,只改三选一界面的可用重抽次数。
- 即时兑付凭证(小 GP 袋/应急口粮)不进持有集——到手即结算消尽。
- GP 不出现在商店货架上——这是「计价物不自售」可计算条件自动判定的结果,不是给 GP 单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。
- 一个渠道一旦确定要出某个分类,该分类的成员就都在它的池子里——"渠道出哪些分类"不受这条约束,那是渠道轴的定位。
- 凭证拿到即开,不进持有集,玩家无法囤积——选中或买下的同一时刻就开专长三选一。
- 凭证带有计步保底:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享,刷新后的重新展示计入次数,限购用满后保底不再触发。
实装批落地前,现役代码按旧 27 件专长目录与旧资源成员在同框架下运行;新成员口径(27 件基础件表 / 凭证件表)自实装批起验。
待办
全部待办单点登记于 待办清单(BD 分层条目、命名统一后续条目),本节不复制。