feat(slice): 敌人技能池批收编——废确定性行为环改技能池+开轮摇号(冒烟 263 项全绿)

- 机制:每敌种技能池(池模板/实例池/技能行三层),开轮摇号定拍(behavior_roll 第五流,
  每敌子流 scope=spawn_index×1000000+摇号序,单敌轨迹独立复放);两道闸 = 全技能各自
  冷却(普攻恒 0 锁死)+ 保底 M=4;死亡即不动手改摇定作废不进账;拍结构保留
- 数据:新增 skills.tres+skill_table.gd(五行+保底阈值)/skill_lottery.gd 独立抽签器;
  enemy.tres 六行 pattern→pool(9/1·6/2/2·6/2/2 provisional);status_effects 七→九行
  (empower/fortify——enemy_defense 敌方防御池新词汇);settlement effect_pool_map 增两键
- core:rng_service 增流+open_scope(salt 0x85EBCA7758C24E15,黄金向量 m=42 scope0=
  426657203655691839);unit_container 重写(实例池/冷却/待发/保底);battle_orchestrator
  开轮摇号编排+三乘法链+施放行 cast+敌方防御池乘区;config_db 挂技能表+池跨表校验
- 呈现:快照 pending_* 三字段+敌方增益投影(beat/ring 拆除);敌卡摇定动画位(普攻零
  表示/攻击系⚔/增益系✦);明细具名技能+施放行;状态槽九行全映射
- smoke 211→263:六项验收(回放逐位/单敌独立复放/EV 对锚/死亡作废/空池不可能/加载拒绝)
- 文档:敌人系统 v0.5/战斗结算 v0.11/增益状态 v0.5/难度曲线与Boss v0.6/战斗表现 v0.3/
  HUD框架 v0.4/battle.md 改型注记/registry(skill 新条目+四条目修订+术语七词条)/
  06-待办清单收编;active.md entry 60
- EV 实测(×5000 拍):地精 1.1056(保底闸抬升,登记难度曲线重锚)/熊地精 0.9998/酋长 1.0236
This commit is contained in:
DKChan committed 2026-09-17 02:00:06 +08:00
1 parent d76a023fa9
commit 8ca3da669b
35 files changed
+1309 -356

No files matched your search

+1 -1
View File
@@ -31,7 +31,7 @@
| 文件 | 一句话概要 | 状态 |
|---|---|---|
| `战斗结算.md` | 轮末结算的编排与逐行兑现 | 已定稿·自旧体系迁移 |
| `敌人系统.md` | 敌人数据、行为环、意图呈现 | 已定稿·自旧体系迁移 |
| `敌人系统.md` | 敌人数据、技能池出招、意图呈现 | 已定稿·自旧体系迁移(2026-09-16 技能池批 v0.5) |
| `增益状态.md` | 增益/减益状态的容器、叠层与衰减 | 已定稿·自旧体系迁移 |
| `地图战斗资源.md` | 格面资源的产出、极性字典与清图奖励封装 | 已定稿·自旧体系迁移 |
| `战斗表现.md` | 战斗动画与演出(旧体系未单独成文) | 范围草案·待设计 |
+6 -4
View File
@@ -17,11 +17,13 @@ MVP 做到两关:第二层不新造结构,与第一层共用节点链模板
**三种**,含一个 Boss(enemy.tres 六行 = 第一关五场遭遇 + 第二层锚行):
| 敌人 | 定位 | 行为环 |
| 敌人 | 定位 | 技能池(权重) |
|---|---|---|
| 地精 | 教学杂鱼,可成群(1–3 个) | 只会攻击 |
| 熊地精 | 主力,可成群 | 攻击 → 蓄力 → 重击三拍循环 |
| 食人魔酋长 | 第一关 Boss,单个 | 攻击 → 攻击 → 蓄力 → 重击四拍循环 |
| 地精 | 教学杂鱼,可成群(1–3 个) | 普攻 9 · 突刺 1 |
| 熊地精 | 主力,可成群 | 普攻 6 · 蓄力 2 · 重击 2 |
| 食人魔酋长 | 第一关 Boss,单个 | 普攻 6 · 重击 2 · 硬化 2(硬化独占) |
出招 = 开轮摇号(2026-09-16 敌人技能池批——固定出招剧本废除,池语义见[敌人系统](systems/战斗循环/敌人系统.md))。
每种敌人配一档护甲(轻甲 / 魔法护甲 / 重甲),正好构成"轻甲 → 魔法护甲 → 重甲"的教学梯度。MVP 不加新敌种,也不做同深度多敌种混搭。
+59 -3
View File
@@ -154,13 +154,21 @@
### 敌人系统
#### 单拍行为环的体验验证
#### 单拍行为环的体验验证(改型:技能池节奏体验验证)
**现状**:地精恒定出手、无自然空窗的单拍环是否站得住,登记为预注册试玩验证项(playtest 证伪项),至今未执行
**现状**:原登记对象(地精单拍行为环)已随 2026-09-16 敌人技能池批整体退役——行为环废除后本条失去原载体;验证问题改型为"技能池出招的节奏体验":普攻基底 + 随机特殊技的纹理是否成立、保底 M=4 与冷却值是否制造可背诵节奏或过旱/过涝,随下次 playtest 批采集(关联:池 EV 含闸实测读数已登记敌人系统/难度曲线调参表)
**归属**:难度曲线与Boss 与敌人系统共裁
**状态**:待办
**状态**:待办(2026-09-16 改型)
#### 行为环废除与蓄力拍退役
**现状**:确定性出招剧本(行为环:拍枚举/环指针/同种锁步/heavy_multiplier)已整体废除,改技能池开轮摇号出招;旧"蓄力→猛击"固定配对(哥布林弹珠拷贝)随批退役,蓄力改型为纯攻击增益技、Boss 池改独占增益技"硬化"——本条即原"删行为环取消蓄力拍"登记的收编关闭(2026-09-16 用户拍板,设计权威 docs/proposal-skill-pool.md v1.0)
**归属**:敌人系统(主 owner,v0.5)
**状态**:已解决(2026-09-16)——落批见敌人系统 v0.5 / 战斗结算 v0.11 / registry 同批登记
#### 伏击量纲与上限的联动复核
@@ -218,6 +226,54 @@
**状态**:待办
#### 技能池情境条件触发器
**现状**:低血触发防御、玩家停手时的偷袭技等情境出招——载体 = 技能行触发条件字段(P1 字段位已预留);启用是敌人系统修订,不是调参
**归属**:[敌人系统](systems/战斗循环/敌人系统.md)(P1)
**状态**:待办
#### 个体化变体池
**现状**:A 型好斗 / B 型守势、精英专属池(技能池共识点 A 的 A2 案);现行同敌种同池模板,实例分歧只来自摇号涌现
**归属**:[敌人系统](systems/战斗循环/敌人系统.md)(P1)
**状态**:待办
#### 全局特殊间隔旋钮
**现状**:异名特殊技背靠背现行概率低(是变化不是失控);若实测仍嫌,备用闸 = 全局"特殊技后至少隔 N 拍"——登记备用,未实测不启用
**归属**:[敌人系统](systems/战斗循环/敌人系统.md) 与[难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md)(P1)
**状态**:待办
#### 技能池新效应词汇批
**现状**:妨害技(对主角施减益)、固定值伤害分量、多段命中(每段一掷)——三类新效应词汇,技能行 P1 字段位已预留;启用随对应内容批
**归属**:[敌人系统](systems/战斗循环/敌人系统.md) 与[战斗结算](systems/战斗循环/战斗结算.md)共裁(P1)
**状态**:待办
#### 第二关技能池与投放
**现状**:第二关生效前提 = 深度轴行值填齐(关联条目:冒险循环「第二关深度轴行值未填充」);池内容(新技能/新敌种池)随投放批定,投放节奏归难度曲线
**归属**:[难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md)(P1)
**状态**:待办
#### 敌方技能图鉴 / 学习呈现
**现状**:池与权重不公开(D4/D5)口径下的进阶信息面——玩家侧技能知识系统(见过 → 认得 → 记谱);首发三池学习成本低,后置
**归属**:[HUD 框架](systems/表现与支撑/HUD框架.md) 与[敌人系统](systems/战斗循环/敌人系统.md)(P2)
**状态**:待办
### 增益状态
#### 叠层不续命的读感
@@ -22,7 +22,7 @@
| 遭遇数量与攻击浮动 | 每个坐标行的敌人数量区间与攻击浮动宽度(掷定执行归[战斗结算](../战斗循环/战斗结算.md)) |
| 生存链区间模型 | 每战"打不打得过"的三档判定与关级通关恒等式——难度验收的现行模型 |
| 期望值带 | 通关率带、通关余量带、形态带——调参的"正确行为"基准 |
| Boss 设计 | 关底 Boss 的血量锚、数值台阶与行为环配型;精英修饰只留预留位 |
| Boss 设计 | 关底 Boss 的血量锚、数值台阶与专属池配型(独占技 + 权重轮廓);精英修饰只留预留位 |
| 调参联动纪律 | 禁独立调参网络与对账重跑义务的登记与执行 |
不负责:
@@ -54,8 +54,8 @@
| 轴 | 规则 | 说明 |
|---|---|---|
| 关间台阶(关卡序号) | 每关至少投放一项新内容(新敌种或既有敌种新行为环段),加基准数值跳升 | 台阶必须能归因到看得见的变化,不是纯数字膨胀;投放断档是内容生产缺口,调参修补不了 |
| 关内坡度(节点深度) | 同敌种数值平缓上移,深度也可表达为敌人成群 | 数量是比单体质变更优先的深度表达:保持行为环读数不变、总量受控 |
| 关间台阶(关卡序号) | 每关至少投放一项新内容(新敌种或既有池新技能),加基准数值跳升 | 台阶必须能归因到看得见的变化,不是纯数字膨胀;投放断档是内容生产缺口,调参修补不了(技能池批措辞修订 2026-09-16:行为环段 → 既有池新技能) |
| 关内坡度(节点深度) | 同敌种数值平缓上移,深度也可表达为敌人成群 | 数量是比单体质变更优先的深度表达:保持技能池 EV 读数不变(权重即旋钮、EV 重锚随批登记)、总量受控 |
| Boss 与精英修饰(预留第三轴) | Boss 走最深深度直填行;精英只有字段命名空间预留 | Boss 不走修饰表;修饰乘数表 MVP 为空表、零行为,首个使用场景 = 精英节点(随[关卡节点地图](关卡节点地图.md)定稿联动);数值所有权在本系统,[棋盘生成](../排雷循环/棋盘生成.md)只按表生成 |
**结论**:关内坡度 = 每深一档,同敌种生命按 5%–20% 线性上移;关间台阶 = 相邻关同敌种基准乘 1.3–1.6。
@@ -71,7 +71,7 @@ base(L+1) ≈ base(L) × k_L k_L ∈ [1.3, 1.6](仅同敌
| D | 节点深度,Boss = 本关最深深度 |
| s_hp / k_L | 每档增幅 / 关间倍率,域内取值、provisional |
MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的行(见调参表);敌种切换不受此式约束——台阶值直接定。新敌种登场时基准按其行为环复杂度重定,关间倍率不适用于这种场景。
MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的行(见调参表);敌种切换不受此式约束——台阶值直接定。新敌种登场时基准按其技能池复杂度重定,关间倍率不适用于这种场景。
### 生存链区间模型:一场战斗"打不打得过"的三档判定
@@ -91,7 +91,7 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的
| 变量 | 含义 |
|---|---|
| 进场生命 | 主角进入本战时的生命;跨战斗持久,归[冒险结构](冒险结构.md)的 HP 账本 |
| 受伤峰值 / 谷值 | 敌方最坏 / 最好一轮的输出(攻击、拍别倍率、伏击附加、减伤、削弱的合计构成见[战斗结算](../战斗循环/战斗结算.md)战斗段) |
| 受伤峰值 / 谷值 | 敌方最坏 / 最好一轮的输出(攻击、技能倍率、池闸长期速率、伏击附加、减伤、削弱的合计构成见[战斗结算](../战斗循环/战斗结算.md)战斗段;技能池批口径——出招构成为摇号分布,峰值/谷值构成按含闸长期速率复核而非固定剧本拍) |
| 输出峰值 / 谷值 | 玩家最好 / 最坏一轮的总输出(分量构成同上) |
| 一次性伤害 | 清障炸药一类当场引爆的大额伤害 |
@@ -120,7 +120,7 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的
### Boss 设计:食人魔酋长与关底血量锚
首发关底 Boss 是食人魔酋长,摆在每关最深深度行上。Boss 约定有三条:位置 = 最深深度直填行,不走修饰表;定位 = 本关最大的单场消耗;行为环 = 专属四拍环且含蓄力拍——蓄力空拍是玩家的规划窗口(行为环语义见[敌人系统](../战斗循环/敌人系统.md))。
首发关底 Boss 是食人魔酋长,摆在每关最深深度行上。Boss 约定有三条:位置 = 最深深度直填行,不走修饰表;定位 = 本关最大的单场消耗;技能池 = 专属池承载——独占技能 + 权重轮廓(现行:独占增益技"硬化"——敌方防御池词汇载体;2026-09-16 敌人技能池批改写,旧"专属四拍环且含蓄力拍"约定随行为环退役,增益 ≤1 纪律下旧蓄力拍不进 Boss 池;池语义见[敌人系统](../战斗循环/敌人系统.md))。
**结论**:Boss 生命 ≈ 全关普通战斗敌方生命期望合计 × 血量锚比率,比率域 [0.5, 1.1];Boss 攻击基线不低于本关普通战的最高行。
@@ -215,16 +215,25 @@ Boss 战的棋盘用本关最大板形(第一关为 12×12),板参数仍
敌人表行值(第一关五行 + 第二关锚行,全部 provisional):
| 坐标 | 敌种(数据键) | 生命 | 攻击(浮动区间) | 数量 | 行为环 | 护甲 |
| 坐标 | 敌种(数据键) | 生命 | 攻击(浮动区间) | 数量 | 技能池(权重) | 护甲 |
|---|---|---|---|---|---|---|
| 第一关 D0(教学位) | 地精 goblin | 24 | 7 [4,10] | [1,2] | 攻击 | 轻甲 |
| 第一关 D1 | 地精 goblin | 13 | 5 [2,8] | [2,3] | 攻击 | 轻甲 |
| 第一关 D2(首遇固定) | 熊地精 bugbear | 40 | 9 [6,12] | 1 | 攻击/蓄力/重击 | 魔法护甲 |
| 第一关 D3 | 熊地精 bugbear | 18 | 6 [3,9] | [2,3] | 攻击/蓄力/重击 | 魔法护甲 |
| 第一关 D4(Boss) | 食人魔酋长 ogre_chief | 150 | 9 [6,12] | 1 | 攻击/攻击/蓄力/重击 | 重甲 |
| 第二关 D0(锚行) | 熊地精 bugbear | 30 | 7 [4,10] | 1 | 攻击/蓄力/重击 | 魔法护甲 |
| 第一关 D0(教学位) | 地精 goblin | 24 | 7 [4,10] | [1,2] | 普攻 9 · 突刺 1 | 轻甲 |
| 第一关 D1 | 地精 goblin | 13 | 5 [2,8] | [2,3] | 普攻 9 · 突刺 1 | 轻甲 |
| 第一关 D2(首遇固定) | 熊地精 bugbear | 40 | 9 [6,12] | 1 | 普攻 6 · 蓄力 2 · 重击 2 | 魔法护甲 |
| 第一关 D3 | 熊地精 bugbear | 18 | 6 [3,9] | [2,3] | 普攻 6 · 蓄力 2 · 重击 2 | 魔法护甲 |
| 第一关 D4(Boss) | 食人魔酋长 ogre_chief | 150 | 9 [6,12] | 1 | 普攻 6 · 重击 2 · 硬化 2 | 重甲 |
| 第二关 D0(锚行) | 熊地精 bugbear | 30 | 7 [4,10] | 1 | 普攻 6 · 蓄力 2 · 重击 2 | 魔法护甲 |
重击倍率全员 2(provisional);单轮伏击授予上限 4(已定稿)。攻击浮动开战时掷定一次、整战持久;数量区间同流掷定,教学位(地精 ×[1,2])与首遇位都不豁免——没有区间上界的行自然取定值,那不是豁免,是区间宽度为零。
单轮伏击授予上限 4(已定稿)。攻击浮动开战时掷定一次、整战持久;数量区间同流掷定,教学位(地精 ×[1,2])与首遇位都不豁免——没有区间上界的行自然取定值,那不是豁免,是区间宽度为零。
技能池投值(池权重/冷却/保底的所有权本文,机制归[敌人系统](../战斗循环/敌人系统.md),全部 provisional;建议池行值随 2026-09-16 敌人技能池批落地):
| 参数 | 现行值 | 说明 |
|---|---|---|
| 池权重 | 三敌种见上表(地精 9/1 · 熊地精 6/2/2 · 酋长 6/2/2) | 权重即旋钮:抬特殊技权重 = 抬输出频率,EV 随之重锚 |
| 技能冷却(拍) | 突刺 2 · 蓄力 3 · 重击 3 · 硬化 4 · 普攻恒 0 | 普攻冷却恒 0 不可配(空池不可能的结构前提——域校验锁死) |
| 保底 M | 4(全局单旋钮,技能表 pity_threshold) | 连续 M 拍执行普攻 → 下拍必出特殊技;地精这类单特殊技低权重池受保底支配(突刺率 10% → ~22%) |
| 池 EV 锚 | 静态份额:地精 1.05 · 熊地精 1.00 · 酋长 1.00 | 含闸长期速率实测(2026-09-16 实施批 ×5000 拍):地精 1.106 / 熊地精 1.000 / 酋长 1.024——EV 重锚与权重投值随本表修订 |
主角表与棋盘参数表(provisional):
@@ -274,3 +283,4 @@ Boss 战的棋盘用本关最大板形(第一关为 12×12),板参数仍
| v0.3 | 2026-09-15 | 雾格残留清理:关闭「待拍板」的雾相关供给验算失义条目(原供给与对账验算含雾板分层、雾成本负担比等输入分量);第二关新内容投放缺口条目改为引用「已从设计中移除的机制」(见不做清单)。曲线规则、供给带与对账义务不变 |
| v0.4 | 2026-09-15 | **护甲等级批(与战斗结算 / 敌人系统 / registry 同批登记)**:生存链区间模型补记护甲等级掷点带宽口径——峰值/谷值构成各含最坏/最好掷点带宽;EV 中性引入成文(期望伤害对齐现行表值、现行行值不重调,折扣档位与掷点形式定稿前区间扫描维持全额口径、带宽项随定稿批补扫,"零红档"验收与三档判定式不变);调参联动表新增"护甲等级 ↔ 攻击基线 ↔ 区间带宽"一行 |
| v0.5 | 2026-09-16 | **护甲等级掷点批·定稿落地(与战斗结算 / 敌人系统 / registry / 切片代码同批)**:带宽口径改写为"换装点锚定"——掷点形式与档位定稿(d20 / 缺口 1-3→×0.75 · 4-7→×0.5 · 8+→×0.25 / nat20 暴击 ×2 恒全额),基准 AC10 自带约 −21% 敌方输出期望(AC11 25% / AC12 28.75%),对比退役的 defense_up 满层 −60% 减伤墙为结构性削弱 + 伤害下限使零承伤轮结构性消失,方向性偏移与加难杠杆扫描合并处理、不单独重调行值;带宽补扫义务含暴击档与折扣档(并入加难扫描批);护甲等级行值:主角 10(暂定)、敌方首关 0(暂定,正式行值归怪物设定批);调参联动表"护甲等级"行改定稿口径;调参表主角表行与状态强度行同步(减伤 −30 → 护甲强化 +1 AC ×2 层) |
| v0.6 | 2026-09-16 | **敌人技能池批(与敌人系统 / 战斗结算 / 增益状态 / registry / 切片代码同批)**:曲线纪律两处改写(关间台阶"既有敌种新行为环段" → "既有池新技能";关内坡度"保持行为环读数不变" → "保持技能池 EV 读数不变〔权重即旋钮、EV 重锚随批登记〕");Boss 约定改专属池承载(独占技"硬化" + 权重轮廓,旧"专属四拍环且含蓄力拍"退役);调参表敌人行值表"行为环"列改"技能池(权重)"列并落建议池行值,新增"技能池投值"四行(池权重 / 技能冷却 / 保底 M / 池 EV 锚——含闸长期速率实测登记:地精 1.106〔保底闸抬升〕/ 熊地精 1.000 / 酋长 1.024);重击倍率注记随倍率归技能行删除;区间模型受伤峰值/谷值构成改按含闸长期速率复核口径;行值零改动(EV 中性锚定维持,重锚与权重投值随加难扫描批合并处理) |
+21 -12
View File
@@ -133,9 +133,9 @@
容器还有一条快照纪律:实例的幅度、初始次数、量纲在授予那一刻从表行拷贝。战斗中配置表即使被重载,已授予实例不受任何影响,只影响后续授予。
### 现在有哪些状态:MVP 六行内容
### 现在有哪些状态:现行九行内容
MVP 阶段状态表恰有六行:两个主角增益(挖安全格拿)、三个敌方效果(踩雷的伏击增强、标中旗的削弱、标空旗反噬的暴走)、一个主角减益(标空旗反噬的失衡)。六行全部是一次性、全部用叠加合并;数值全部 provisional(临时值,过锚验收后才定稿)。
现行状态表恰有九行:两个主角增益(挖安全格拿)、一个主角减益(标空旗反噬的失衡)、一个主角削弱(乏力——雷格负向的 weaken 型)、四个敌方效果(踩雷的伏击增强、标中旗的削弱、标空旗反噬的暴走、敌方技能池的蓄力/硬化增益)、一个敌方防御增益(硬化)。全部用同构实例承载;数值全部 provisional(临时值,过锚验收后才定稿)。
| 字段 | 取值 | 说明 |
|---|---|---|
@@ -148,14 +148,19 @@ MVP 阶段状态表恰有六行:两个主角增益(挖安全格拿)、三
| stack_policy | stack / refresh / independent | 同名再授予的合并策略 |
| max_stack | 整数 [1,16] | 叠层上限,仅叠加策略消费 |
| 状态 | 效果一句话 | 发给谁 | 幅度(现行值) | 叠层上限 | 来源类别 |
| 状态 | 效果一句话 | 发给谁 | 幅度(现行值) | 时限 / 合并 | 来源类别 |
|---|---|---|---|---|---|
| attack_up 增伤 | 主角攻击提升 | 主角 | +50%(provisional) | 2 | 安全格 |
| ac_up 护甲强化 | 主角护甲等级提升(掷点折扣判定阈值——AC 轴,不入池) | 主角 | +1 护甲等级/层(2026-09-16 换装,原 defense_up 减伤 −30% 退役) | 2 | 安全格 |
| ambush 伏击 | 敌方攻击附带额外伤害 | 敌方 | +3 固定值/层(provisional) | 16 | 踩雷 / 标空旗反噬 |
| weaken 削弱 | 敌方攻击被削弱 | 敌方 | −65%(provisional,取值域 [60,85]) | 16 | 标中旗 |
| enrage 暴走 | 敌方攻击提升 | 敌方 | +25%(provisional) | 16 | 标空旗反噬 |
| off_guard 失衡 | 主角承伤加深(+25 个百分点进承伤修正池) | 主角 | +25%(provisional) | 16 | 标空旗反噬 |
| attack_up 增伤 | 主角攻击提升 | 主角 | +50%(provisional) | 1 次 / 叠加 ×2 | 安全格 |
| ac_up 护甲强化 | 主角护甲等级提升(掷点折扣判定阈值——AC 轴,不入池) | 主角 | +1 护甲等级/层(2026-09-16 换装,原 defense_up 减伤 −30% 退役) | 1 次 / 叠加 ×2 | 安全格 |
| ambush 伏击 | 敌方攻击附带额外伤害 | 敌方 | +3 固定值/层(provisional) | 1 次 / 叠加 ×16 | 踩雷 / 标空旗反噬 |
| weaken 削弱 | 敌方攻击被削弱 | 敌方 | −65%(provisional,取值域 [60,85]) | 1 次 / 叠加 ×16 | 标中旗 |
| enrage 暴走 | 敌方攻击提升 | 敌方 | +25%(provisional) | 1 次 / 叠加 ×16 | 标空旗反噬 |
| off_guard 失衡 | 主角承伤加深(+25 个百分点进承伤修正池) | 主角 | +25%(provisional) | 1 次 / 叠加 ×16 | 标空旗反噬 |
| sapped 乏力 | 主角输出降低(weaken 型负向,hero_offense 池) | 主角 | −25%(provisional) | 1 次 / 叠加 ×16 | 雷格负向(2026-09-15 格面资源批) |
| empower 蓄力 | 敌方输出 ×2(enemy_output 池——蓄力技载体) | 敌方 | +100%(provisional) | 2 次 = 1 个有效增益拍 / 刷新 ×1 | 敌方技能施放(2026-09-16 敌人技能池批) |
| fortify 硬化 | 敌方防御提升(**敌方防御池 enemy_defense**——硬化技载体,主角攻击折半) | 敌方 | +100%(provisional) | 2 次 = 1 个有效增益拍 / 刷新 ×1 | 敌方技能施放(2026-09-16 敌人技能池批) |
empower 与 fortify 是敌方技能池增益技在容器侧的数据落点(技能行 buff_ref 引用,施放时长由技能行覆盖——技能冷却与增益持续是两个计时器):两行 duration = 2 的口径是"先兑付后衰减含施放当轮"——施放发生在第 N 结算战斗段,存活到第 N+1 结算战斗段才兑付"下一拍",即"持续 1 个有效结算"(proposal 语义的容器落地)。敌方防御池(enemy_defense)是第四个乘区池:敌方作为防守方的百分比修正池,消费面 = [战斗结算](战斗结算.md)主角攻击的池乘区——四池对称(敌打主角 = hero_defense × enemy_output,主角打敌 = hero_offense × enemy_defense),容器语义零延伸:仍是同构实例、side-wide 加算、不封顶不保底。
削弱行是当量锚在容器侧的数据落点:标中旗的收益折算成统一价值后,必须严格高于最低档主角增益——"标中旗必须比随便挖一格更值",否则没人愿意插旗。这条锚的契约归[行动经济](../排雷循环/行动经济.md),对照验收归[战斗结算](战斗结算.md);伏击行的固定值量纲定义与惩罚上限锚归[敌人系统](敌人系统.md)。暴走与失衡两行是[战斗结算](战斗结算.md)标错反噬机制(标空旗的三选一确定性惩罚)在容器侧的数据落点:三池内容与载体裁决归它,本表只承载行值。
@@ -191,7 +196,7 @@ MVP 阶段状态表恰有六行:两个主角增益(挖安全格拿)、三
| 优先级 | 内容 | 后置原因 |
|---|---|---|
| P1 | 刷新、并存两类合并策略的首批内容行 | 语义已定义、容器已承载;MVP 六行全用叠加,这两类暂无实际内容,首批上线时随批补验收 |
| P1 | 刷新、并存两类合并策略的后续内容行 | 语义已定义、容器已承载;刷新类已有首批内容(empower/fortify,2026-09-16 敌人技能池批),并存仍空,首个并存内容行上线时随批补验收 |
| P1 | 清图奖励含增益的授予路径 | 来源类别已预留;内容与档位归[地图战斗资源](地图战斗资源.md)定稿 |
| P1 | 单体寻址扩展位 | 现行对敌效果一律全体共享;首个"只作用于其中一个敌人"的效果上线时给实例加目标字段 |
| P2 | 驱散 / 延时 / 转移接口 | 状态一旦生效,玩家没有任何手段摘掉、延后或挪给别人——省掉一整类界面复杂度是明确的设计决定;要加属于新增接口的修订,不是调参 |
@@ -211,8 +216,11 @@ MVP 阶段状态表恰有六行:两个主角增益(挖安全格拿)、三
| weaken 幅度 | 百分比取值域 [60,85],取负生效 | −65(provisional) | 削弱;须过"标中旗锚"对照 |
| enrage 幅度 | 百分比 [−100,100] 且非 0 | +25(provisional) | 暴走;标错反噬三池之一,进敌方输出修正池 |
| off_guard 幅度 | 百分比 [−100,100] 且非 0 | +25(provisional) | 失衡;标错反噬三池之一,进主角承伤修正池(承伤 ×1.25) |
| 六行初始剩余次数 | 整数 [1,99] | 1 × 6(provisional) | 一次性语义;拉长 = 恢复跨轮延续、规划变简单 |
| 六行叠层上限 | 整数 [1,16] | 2 / 2 / 16 / 16 / 16 / 16(provisional) | 仅叠加策略消费;调低 = 重复奖励更容易变溢出 |
| sapped 幅度 | 百分比 [−100,100] 且非 0 | −25(provisional) | 乏力;雷格负向 weaken 型,进主角输出修正池(2026-09-15 格面资源批补登记) |
| empower 幅度 | 百分比 [−100,100] 且非 0 | +100(provisional) | 蓄力;敌方技能池增益技载体,进敌方输出修正池(敌方输出 ×2) |
| fortify 幅度 | 百分比 [−100,100] 且非 0 | +100(provisional) | 硬化;敌方技能池增益技载体,进**敌方防御池 enemy_defense**(主角攻击折半) |
| 初始剩余次数 | 整数 [1,99] | 七行 1 次 · empower/fortify 2 次(provisional) | 七行一次性语义;empower/fortify 2 次 = 1 个有效增益拍(先兑付后衰减含施放当轮);拉长 = 恢复跨轮延续、规划变简单 |
| 叠层上限 | 整数 [1,16] | 2 / 2 / 16 / 16 / 16 / 16 / 16 / 1 / 1(provisional) | 仅叠加策略消费;empower/fortify 用刷新 ×1(冷却闸下不可能自叠加) |
非调参的冻结项:三类合并策略语义、两种量纲语义、来源类别枚举、"先兑付后衰减"时序、拒绝原子性、零随机——改动走本文修订流程,不走调参。
@@ -244,3 +252,4 @@ MVP 阶段状态表恰有六行:两个主角增益(挖安全格拿)、三
| v0.2 | 2026-09-15 | 状态表四行改六行:补暴走(enrage,敌方 +25%)与失衡(off_guard,主角承伤 +25%)两行,承载[战斗结算](战斗结算.md)标错反噬机制(2026-09-12 批已上线);来源类别四选一改五选一(新增标空旗);连带更新"MVP 四行/四类"表述与调参表 |
| v0.3 | 2026-09-15 | 并存分支补容量语义(实例数上界 = 受理授予数,有界确定、无满层语义);P2 后置登记并存行高频授予(持续伤害类)的容量复核 |
| v0.4 | 2026-09-16 | **护甲等级掷点批·换装(与战斗结算 / 难度曲线与Boss / registry / 切片同批)**:defense_up(减伤 −30% ×2 层)整行退役换装 ac_up(护甲强化 +1 护甲等级 ×2 层)——unit 新增 ac 量纲(护甲等级阈值轴,幅度域 [−20,20] 且非 0,不入任何池),消费面 = 战斗结算护甲等级掷点判定;例子表与调参表同步;"叠满减伤触池底"的免伤墙随换装结构性消失。注:sapped 行与极性路由措辞的文档同步归增益状态既有修订批(本批不扩 scope) |
| v0.5 | 2026-09-16 | **敌人技能池批(与敌人系统 / 战斗结算 / 难度曲线与Boss / registry / 切片同批)**:状态表六行 → 九行——新增 empower(蓄力:敌方 +100% 入 enemy_output 池)与 fortify(硬化:敌方 +100% 入**敌方防御池 enemy_defense** 新池——硬化技载体,主角攻击乘区消费面归战斗结算)两行敌方技能施放增益,来源类别 = 敌方技能施放(技能行 buff_ref 引用、施放时长由技能行 buff_duration 覆盖——技能冷却与增益持续两个计时器);两行 duration 2 = 1 个有效增益拍的容器口径成文;**顺手清偿 v0.4 挂起的 sapped 文档同步**(2026-09-15 格面资源批入表未登记的文档漂移——状态行表与调参表补行);P1"刷新类首批内容行"核销(empower/fortify 即首批) |
+32 -17
View File
@@ -65,7 +65,7 @@
| ④ 衰减段 | 移除到期的临时效果;每轮恰好一次,含末轮——清图奖励先兑付、效果后衰减 |
| ⑤ 判定段 | 先判主角倒下(负),再判敌人清空(胜),都不满足则继续下一轮 |
结算本体是纯逻辑步骤流:零界面依赖、禁止动画等待,随机消费只走封闭随机流。触发只读行动经济的相位读数与轮末标记,这条消息有棋盘路径和停手路径两个发射源,到达先后不承载语义。这些性质共同保证结算可回放:同样的种子、同样的事件序列,跑出的步骤流逐位复现——录像回放与断言复测都建立在它上面。随机消费恰两处:战斗开始掷骰定敌方实际数量与攻击基线浮动,属于初始化随机、发生在结算步骤流之外;护甲等级掷点属于回合内随机、发生在步骤流之内——两处都消费封闭随机流,掷点消费专用的 `armor_roll` 封闭流(逐次掷逐次取号,可逐位回放)。
结算本体是纯逻辑步骤流:零界面依赖、禁止动画等待,随机消费只走封闭随机流。触发只读行动经济的相位读数与轮末标记,这条消息有棋盘路径和停手路径两个发射源,到达先后不承载语义。这些性质共同保证结算可回放:同样的种子、同样的事件序列,跑出的步骤流逐位复现——录像回放与断言复测都建立在它上面。随机消费恰三处(2026-09-16 敌人技能池批由两处扩为三处):战斗开始掷骰定敌方实际数量与攻击基线浮动,属于初始化随机、发生在结算步骤流之外;技能摇号属于回合内随机,但时点前置到每轮开轮、同样发生在结算步骤流之外(消费专用 `behavior_roll` 封闭流,每敌按生成序派生独立子流,单敌出招轨迹可独立复放、互不穿插);护甲等级掷点属于回合内随机、发生在步骤流之内(消费专用 `armor_roll` 封闭流,逐次掷逐次取号,可逐位回放)。三处皆封闭随机流,同种子同输入逐位复现。
举证:五段为流程编排,无计算;段序常量存配置表,加载时校验与定稿顺序完全一致,不一致拒绝启动。
@@ -81,7 +81,7 @@
| 溢出未生效行 | 踩雷超出伏击上限,超出的每颗一行 |
| 奖励未生效行 | 满层拒收、满血治疗等合法例外一行 |
| 标旗未中行 | 旗插空的零值归因行,每颗雷只记一次;标错的负向兑付另记效果行 |
| 蓄力行 | 敌人本拍蓄力不动手(攒下一击)时记一行 |
| 蓄力行 | 敌人本拍蓄力不动手(攒下一击)时记一行 **(2026-09-16 敌人技能池批改型为施放行 `cast`:敌人本拍施放增益技——0 伤害动作、具名技能、不兑付伏击;蓄力语义改写为纯攻击增益技,见[敌人系统](敌人系统.md))** |
| 衰减行 | 到期临时效果移除一行 |
| 判定行 | 胜 / 负 / 继续各一行;终局判定行同时是胜负画面的数据锚 |
| 高光行 | 完美排雷成立时一行,只记实际有效兑付 |
@@ -151,7 +151,19 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 ×
### 战斗段与胜负判定:谁先动手、怎么扣血、怎么定胜负
战斗段是兑现的最后一刀。主角的基础攻击恒存在——这是项目拍板:若基线为零,百分比增益乘上去永远是零,增益系统就空转了。攻击力域 [1, 999]、0 于加载期拒绝,现行值 6(provisional)。顺序固定:主角先手攻击顺位最前的存活敌人,随后按行序逐个存活敌人还手;每个敌人依次走"查攻击、结算伤害、推进行动环"三步且恰好推进一次,主角不在推进范围。主角中途倒下,剩余敌人全部停手,直接进判定段。
战斗段是兑现的最后一刀。主角的基础攻击恒存在——这是项目拍板:若基线为零,百分比增益乘上去永远是零,增益系统就空转了。攻击力域 [1, 999]、0 于加载期拒绝,现行值 6(provisional)。顺序固定:主角先手攻击顺位最前的存活敌人,随后按行序逐个存活敌人按本拍摇定技能还手;每个敌人依次走"按技能行兑现、结算伤害、执行上报(技能进冷却 + 保底计数)"三步且恰行动一次,主角不在其列。主角中途倒下,剩余敌人全部停手,直接进判定段。
**开轮摇号与敌方技能兑现**(2026-09-16 敌人技能池批):敌人每拍做什么由开轮摇号决定——每轮轮次开始时,本系统在换算层排除冷却中技能,按行序逐敌从 `behavior_roll` 封闭流的独立子流摇定本拍动作写入实例池(首轮同样摇号;每轮恰摇一次;轮内刷新换图不重摇),随后冷却递减。摇定后、兑现前死亡 → 本拍技能作废、不动手(死亡即不动手)。结算战斗段只按技能行兑现:伤害技走三乘法链(见下),增益技记一行施放行并把状态效果按技能行持续回合挂入[增益状态](增益状态.md)容器——0 伤害动作不掷不折、不兑付伏击。池模板、技能行、冷却与保底语义归[敌人系统](敌人系统.md)(引用不转述)。
**三乘法链**(技能伤害的合成顺序,技能倍率乘在最前,其后既有链一字不动):
```
① 攻击伤害值 A = 攻击基线 × 技能伤害倍率 (普通攻击倍率恒 1;主角侧恒 1)
② AC 判断值:d20 vs 防守方护甲等级 → 档位折扣;nat20 → 暴击 ×2(量程上下限)
③ 命中伤害 H = (A × a) × 甲效倍率 (克制 1.5 / 中性 1.0 / 被克 0.5;敌打主角无甲轴恒中性)
── 以下既有链不动 ──
增益池乘区(含敌方防御池)→ 伏击附加(后置加法、必中全额、不吃 AC)→ 向下取整 → 伤害下限 max(1,·)
```
主角先手攻击由三个分量逐项取整后相加:普通分量(攻击力经增益修正,可被池封顶压到零)、穿刺分量、魔法分量。**攻击类型是伤害的属性轴**——它只决定这个分量查甲效表的哪一行,定义里不含任何棋盘来源。分量各自查表后取整相加;甲效表把攻击类型与敌方护甲类型交叉成一张 3×3 克制倍率:
@@ -174,19 +186,20 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 ×
两条都是奖励侧现行定义(暂存结算表 `charge_grants`,正式归属见「待办」):换桶、换量、或把开格奖励换成增益与道具,都不触动攻击类型与甲效矩阵。
**护甲等级掷点:必中、非归零,只吃基础攻击分量**(2026-09-16 定稿落地,判定式与全部数值已拍板)。防守方由此多了一条数值轴——护甲等级(数据键 `armor_class`):攻击永远命中,没有 miss、没有零收益白回合;只有吃掷点的分量在掷点低于防守方护甲等级时按减伤档位打折,档位再重也不归零。判定式:攻击结算时掷 1d20,掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额;掷点 < 护甲等级按缺口(护甲等级 − 掷点)打折——缺口 1-3 → ×0.75,缺口 4-7 → ×0.5,缺口 8+ → ×0.25,三档皆非零档。暴击:天然 20(nat20)使该次基础攻击分量 ×2,双方同规,且 nat20 恒全额(暴击与折扣互斥)。伤害下限:任何攻击落地伤害至少 1(全局 max(1, ·))——"被减伤归零 v=0"零值伤害行语义随批退役,重档折扣的攻击行在行文本记"被压制"。掷点范围:只有基础攻击分量吃掷点——主角先手攻击的普通分量,敌方攻击拍与重击拍的基线伤害(基线 × 重击倍率);穿刺与魔法两个充能分量不吃;棋盘来源一律无视护甲等级——伏击附加、爆裂、清障炸药、奖励即时伤害全部必中全额不掷,这是本机制的边界切口,与"奖励/惩罚必中"同构。护甲等级(数值轴,掷点打折)与护甲类型(属性轴,克制乘区)严格分离:护甲类型不做护甲等级映射,克制矩阵 150/100/50 消费面不变,两概念在文档、表字段与代码键中不得混用。数值载体:主角基准护甲等级 10(暂定),ac_up(护甲强化)+1/层 ×2 层在其上加算;敌方首关行值暂定 0,正式行值归怪物设定批(登记[待办清单](../../06-待办清单.md))。攻击加成(`attack_bonus`)为结构位预留字段,切片恒 0,未来归元进度 / 武器附魔投值。掷点时机在结算战斗段内、每次基础攻击伤害计算时判定,消费 `armor_roll` 封闭流(逐次掷逐次取号,可逐位回放)。
**护甲等级掷点:必中、非归零,只吃基础攻击分量**(2026-09-16 定稿落地,判定式与全部数值已拍板;判定对象措辞随敌人技能池批改述)。防守方由此多了一条数值轴——护甲等级(数据键 `armor_class`):攻击永远命中,没有 miss、没有零收益白回合;只有吃掷点的分量在掷点低于防守方护甲等级时按减伤档位打折,档位再重也不归零。判定式:攻击结算时掷 1d20,掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额;掷点 < 护甲等级按缺口(护甲等级 − 掷点)打折——缺口 1-3 → ×0.75,缺口 4-7 → ×0.5,缺口 8+ → ×0.25,三档皆非零档。暴击:天然 20(nat20)使该次基础攻击分量 ×2,双方同规,且 nat20 恒全额(暴击与折扣互斥;nat20 暴击是掷点层概念,与技能重击〔池技能〕严格区分——两层不得混述)。伤害下限:任何攻击落地伤害至少 1(全局 max(1, ·))——"被减伤归零 v=0"零值伤害行语义随批退役,重档折扣的攻击行在行文本记"被压制"。掷点范围:只有基础攻击分量吃掷点——主角先手攻击的普通分量,敌方技能的基础伤害分量(= 攻击基线 × 技能伤害倍率,普通攻击倍率 1 为特例);无伤害分量的技能(增益类)不掷不折;穿刺与魔法两个充能分量不吃;棋盘来源一律无视护甲等级——伏击附加、爆裂、清障炸药、奖励即时伤害全部必中全额不掷,这是本机制的边界切口,与"奖励/惩罚必中"同构。护甲等级(数值轴,掷点打折)与护甲类型(属性轴,克制乘区)严格分离:护甲类型不做护甲等级映射,克制矩阵 150/100/50 消费面不变,两概念在文档、表字段与代码键中不得混用。数值载体:主角基准护甲等级 10(暂定),ac_up(护甲强化)+1/层 ×2 层在其上加算;敌方首关行值暂定 0,正式行值归怪物设定批(登记[待办清单](../../06-待办清单.md))。攻击加成(`attack_bonus`)为结构位预留字段,切片恒 0,未来归元进度 / 武器附魔投值。掷点时机在结算战斗段内、每次基础攻击伤害计算时判定,消费 `armor_roll` 封闭流(逐次掷逐次取号,可逐位回放)。
EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10 期望减免 21.25%,AC11 25%,AC12 28.75%;对比旧 defense_up 满层 −60% 的减伤墙已整体退役换装为 AC(无双轨)。微调旋钮 = 档位边界与档位值,不动护甲等级值。换装点锚定:基准 AC10 自带约 −21% 敌方输出期望,该方向性偏移与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)已登记的加难杠杆扫描合并处理;其生存链区间模型按掷点带宽口径复核(带宽含暴击档与折扣档),"零红档"验收保留。
**结论**:先合成、再取整、全程非负;吃掷点分量必中非归零、低掷按档位折扣、nat20 暴击翻倍恒全额、落地伤害保底 ≥1;溢杀丢弃、治疗封顶、死亡即时判定。
```
敌方一次攻击 = max(1, floor( 掷点档位基线 + 伏击附加 ) × 主角防御乘数 × 敌方输出乘数 );伏击为后置加法,不进乘区、不掷不折
乘数 = 1 + 池合成值 ÷ 100;池内加算、每池独立封顶 ±100 百分点 → 乘数域 [0, 2]
敌方一次技能攻击 = max(1, floor( 掷点档位技能基础分量 + 伏击附加 ) × 主角防御乘数 × 敌方输出乘数 );伏击为后置加法,不进乘区、不掷不折
主角一次攻击 = max(1, floor( Σ三分量 × (100 + 敌方防御乘数池合成值) ÷ 100 ) )——敌方防御池(硬化载体)乘在三分量合计之后
乘数 = 1 + 池合成值 ÷ 100;池内加算、每池独立封顶 ±100 百分点 → 乘数域 [0, 2];四池对称:敌打主角 = hero_defense × enemy_output,主角打敌 = hero_offense × enemy_defense(切片现状注记:hero_offense 现行走普通分量增益直乘、未并入合计乘区——正式化随 ADR 批收口,见待办清单)
护甲等级掷点:掷 1d20,掷点 ≥ 护甲等级 + 攻击加成 → 全额;低掷按缺口查档——1-3 → ×0.75 · 4-7 → ×0.5 · 8+ → ×0.25(无零档)
暴击:nat20 → 该次基础攻击分量 ×2 且恒全额(双方同规)
暴击:nat20 → 该次基础攻击分量 ×2 且恒全额(双方同规;掷点层概念,与技能重击严格区分)
伤害下限:任何攻击落地伤害 ≥ 1(全局 max(1, ·)——折扣与池归零都不产生 v=0 伤害行)
吃掷点分量 = 主角普通分量 / 敌方攻击拍与重击拍基线;穿刺、魔法、伏击附加与棋盘来源伤害不掷不折
吃掷点分量 = 主角普通分量 / 敌方技能基础伤害分量;穿刺、魔法、增益施放与棋盘来源伤害不掷不折
治疗量 = min( 当前生命 + 表值, 生命上限 )
```
@@ -194,7 +207,7 @@ EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10
|---|---|
| 修正池封顶 | 同侧百分比修正加算后每池独立收口 ±100 百分点;乘数可为 0——输出压制触池底时落地伤害由全局下限保底 ≥1(叠满免伤归零的结构面已随护甲等级换装消失) |
| 伤害下限 | 任何攻击落地伤害至少 1(全局 max(1, ·));"被减伤归零 v=0"零值伤害行语义退役,重档折扣行文本记"被压制"——免伤与零输出仍逐行可见 |
| 护甲等级掷点 | 必中非归零:掷 1d20 对防守方护甲等级 + 攻击加成(恒 0),低掷按缺口三档折扣、档位不设零档;nat20 暴击 ×2 恒全额;只吃基础攻击分量(主角普通分量、敌方攻击/重击拍基线),棋盘来源伤害不掷不折 |
| 护甲等级掷点 | 必中非归零:掷 1d20 对防守方护甲等级 + 攻击加成(恒 0),低掷按缺口三档折扣、档位不设零档;nat20 暴击 ×2 恒全额;只吃基础攻击分量(主角普通分量、敌方技能基础伤害分量),棋盘来源伤害与增益施放不掷不折 |
| 溢杀 | 一刀超出目标剩余生命的部分丢弃:不转移给下一个敌人、不存续、无负生命中间态 |
| 治疗 | 生命不溢出上限;满血正向治疗零兑付,记"奖励未生效"行 |
| 死亡判定 | 生命归 0 即倒下;敌人受击即死;主角倒下战斗段立即短路;判定段先判主角、再判敌人(防御性次序) |
@@ -218,7 +231,7 @@ EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10
挖掘期刷新是玩家在挖掘中途主动换图,经[行动经济](../排雷循环/行动经济.md)扣费:扣费成功后按"旧板退役、生成新板、装板、资源预分配恰一次"编排,本轮不打断——没有结算段、没有轮次结束。储备不足被拒是玩家决策的合法结果,不是编排错误。刷新图不发清图奖励,完美排雷计数随装板重置。
战斗开始按固定序列开张:关上配置热重载的闸门、打开增益状态容器、掷骰定敌方实际数量、生成敌人、装板并预分配资源恰一次、发开轮通知。上一关的大奖励(如血上限提升)经战斗开始入参的覆盖值通道生效,内容归[冒险结构](../冒险循环/冒险结构.md)。
战斗开始按固定序列开张:关上配置热重载的闸门、打开增益状态容器、掷骰定敌方实际数量、生成敌人、装板并预分配资源恰一次、发开轮通知并执行开轮摇号(摇定首轮各敌本拍动作)。上一关的大奖励(如血上限提升)经战斗开始入参的覆盖值通道生效,内容归[冒险结构](../冒险循环/冒险结构.md)。
举证:本节为编排流程,无计算。
@@ -232,7 +245,7 @@ EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10
| 上游 | [行动经济](../排雷循环/行动经济.md) | 轮末两字段消息的接收方;回发换图指令、结算完成与战斗结束通知;挖掘期刷新经它扣费;五条经济契约的对账责任方 |
| 上游 | [排雷玩法](../排雷循环/排雷玩法.md) | 订阅其三事件流(挖开格、旗判定、轮次结束);换图时调用装板与退役 |
| 上游 | [棋盘生成](../排雷循环/棋盘生成.md) | 换图时调用其生成接口 |
| 上游 | [敌人系统](敌人系统.md) | 单位接口全调用面:生成、查询、扣血、推进、默认目标、伏击授予、清场;护甲等级(防守方掷点判定读数)随单位数据供给 |
| 上游 | [敌人系统](敌人系统.md) | 单位接口全调用面:生成、查询、扣血、摇定写入、执行上报、默认目标、伏击授予、清场;护甲等级(防守方掷点判定读数)随单位数据供给;池模板与技能行数据归它 |
| 上游 | [增益状态](增益状态.md) | 状态容器接口全调用面:开域、授予、读值、衰减、闭域 |
| 上游 | [地图战斗资源](地图战斗资源.md) | 格面资源接口:预分配、身份查询、受理、清图对象、当量供给投影、映射退役 |
| 上游 | [冒险结构](../冒险循环/冒险结构.md) | 战斗触发、遭遇上下文与主角入参覆盖值(provisional,MVP 冒烟直供) |
@@ -246,7 +259,7 @@ EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10
| 呈现面 | 形态 | 载荷与语义 |
|---|---|---|
| 呈现状态快照 `presentation_snapshot` | 只读函数,全量 | 轮次、战斗结果、相位、行动点与储备、刷新可用性、主角(生命/上限/攻击/存活)、敌人数组(顺位/显示名/生命/敌种/护甲类型/当前拍/行动环进度/伏击层数/存活)、伏击层数、主角活跃效果投影——呈现层唯一的状态读取出口 |
| 呈现状态快照 `presentation_snapshot` | 只读函数,全量 | 轮次、战斗结果、相位、行动点与储备、刷新可用性、主角(生命/上限/攻击/存活)、敌人数组(顺位/显示名/生命/敌种/护甲类型/护甲等级/摇定动作〔pending_skill/type/name〕/敌方增益 effects/伏击层数/存活)、伏击层数、主角活跃效果投影——呈现层唯一的状态读取出口(敌人技能池批批 2 定稿:行为环当前拍/环进度字段拆除,池与权重不公开) |
| 战斗进行中谓词 `is_battle_live` | 只读函数,布尔 | 战斗未出结果且主角在场——组合根高频相位判断的低成本面 |
| 奖励身份查询 `query_reward_identity` | 只读函数,单格 | 已开格奖励身份解析的代理,转[地图战斗资源](地图战斗资源.md)的身份查询(就绪相位守卫归对方)——组合根注入棋盘徽章回调 |
| 结算快照信号 `settlement_snapshot` | 信号,每次结算末 | 对象销毁前组装的全量状态快照(终局含胜负结果)——测试记录与数值分析消费 |
@@ -256,11 +269,11 @@ EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10
## P0 最小闭环
1. 战斗开始序列跑完(关闸门、开容器、掷骰定敌数、生成敌人、装板并预分配资源、发开轮通知),进入第一轮挖掘期。
1. 战斗开始序列跑完(关闸门、开容器、掷骰定敌数、生成敌人、装板并预分配资源、发开轮通知 + 开轮摇号),进入第一轮挖掘期。
2. 挖掘期本系统只缓冲事实流(开格、标旗、撤旗入结算队列),不做任何兑付。
3. 轮末自动触发五段结算,触发与事件到达序无关。
4. 授予段先做抵消过滤(标旗后被撤旗的不结算),再按极性矩阵三批兑现:开安全格 / 标中旗兑正向、开雷格 / 标错旗兑负向、清图发清图奖励对象(完美翻倍)。
5. 增益合成、主角先手加逐敌还手、衰减恰好一次。
5. 增益合成、主角先手加逐敌按摇定技能兑付(伤害技三乘法链 / 增益技施放行)、衰减恰好一次。
6. 判定段先主角后敌人:继续通知同图、清图换图续轮、胜负走战斗结束清理(魔法道具背包不清)。
7. 明细流水全程落行,供呈现、回放与导出。
@@ -302,13 +315,14 @@ EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10
- 极性路由正确:开安全格 / 标中旗只兑正向、开雷格 / 标错旗只兑负向;兑付效果与该格资源类型的字典行一一对应。
- 伏击守恒:blast 负向兑付超出上限时兑付数等于上限,超出部分逐颗记"溢出未生效"行;多敌共享同一伏击池值。
- 完美排雷:零误标且至少一面标中时第二份兑付恰一次并发高光行;出现误标或零标中则无高光;计数换图重置。
- 战斗段次序:主角先手后逐敌"查攻击、结算伤害、推进"各恰一次;主角倒下立即短路,剩余敌人不行动。
- 护甲等级掷点:吃掷点分量(主角普通分量、敌方攻击/重击拍基线)逐次掷 d20——掷点 ≥ 防守方护甲等级 + 攻击加成全额兑付;低掷按缺口查档(1-3 → ×0.75 · 4-7 → ×0.5 · 8+ → ×0.25),档位不设零档;nat20 暴击该分量 ×2 且恒全额;穿刺/魔法分量与棋盘来源伤害(伏击附加、爆裂、清障炸药、奖励即时)不掷不折。
- 开轮摇号:每轮恰摇一次(首轮同样;轮内刷新换图不重摇);摇定后兑现前死亡 → 本拍技能作废(零敌方行动行)、不进冷却不进保底计数;已兑现技能进冷却、保底计数按执行结果更新。
- 战斗段次序:主角先手后逐敌"按摇定技能行兑现、结算伤害、执行上报"各恰一次;主角倒下立即短路,剩余敌人不行动。
- 护甲等级掷点:吃掷点分量(主角普通分量、敌方技能基础伤害分量)逐次掷 d20——掷点 ≥ 防守方护甲等级 + 攻击加成全额兑付;低掷按缺口查档(1-3 → ×0.75 · 4-7 → ×0.5 · 8+ → ×0.25),档位不设零档;nat20 暴击该分量 ×2 且恒全额;穿刺/魔法分量与棋盘来源伤害(伏击附加、爆裂、清障炸药、奖励即时)及增益施放不掷不折。
- 伤害下限与留档:任何攻击落地伤害 ≥1,全流水零 v=0 伤害行、零"被减伤归零"行;掷点读数、护甲等级与档位随伤害行留档,nat20 行带暴击标记。
- 数值边界:伤害下限保底后全程无零值/负值伤害;溢杀丢弃不转移;治疗封顶不溢出。
- 出口分发:先判主角倒下(负)再判敌清空(胜);停手与耗尽轮恒同图,清图轮才允许换图。
- 关卡收束:关卡结束清空魔法道具背包恰一次并返回清空前计数;战斗结束不清背包。
- 可回放(封闭随机流口径):同种子同输入两遍步骤流逐位复现;随机消费仅限封闭随机流——开战掷骰(初始化随机)与护甲等级掷点(回合内随机),无未登记随机源、零界面等待。
- 可回放(封闭随机流口径):同种子同输入两遍步骤流逐位复现;随机消费仅限三处封闭随机流——开战掷骰(初始化随机)、技能摇号 `behavior_roll`(回合内、开轮时点、步骤流之外)、护甲等级掷点 `armor_roll`(回合内、步骤流之内),无未登记随机源、零界面等待;单敌出招轨迹可独立复放、互不穿插。
- 无来源即炸:每行明细都能指回一个来源事实(棋盘格、单位、清图或段级结论);找不到来源即断言失败,行型与来源类别两层豁免清单见明细流水一节,豁免行仍受其它契约约束。
- 行型封闭:流水只出现本文登记的 10 类行型;新增或下线行型必须走本文修订并同步呈现层行格式化,未登记行型不得落行。
@@ -330,3 +344,4 @@ EV 参考数(按判定式复算,作对照锚写进文档):基准 AC10
| v0.8 | 2026-09-15 | **护甲等级批(用户拍板登记,只改文档与 registry、不动代码)**:战斗段新增护甲等级掷点规则——必中、非归零,掷点低于防守方护甲等级按减伤档位折扣,没有 miss、没有零收益白回合;只吃基础攻击分量(主角普通分量 / 敌方攻击拍与重击拍基线),穿刺/魔法充能分量不吃;棋盘来源(伏击附加、道具、清障炸药、奖励即时)一律无视;护甲等级(数值轴,数据键 `armor_class`)与护甲类型(克制属性轴)命名区分成文。随机口径修订:结算换算层首次引入回合内随机,可回放契约从"结算路径零随机"改为"封闭随机流可回放"(同种子同输入逐位复现);开战掷骰属初始化随机维持不变。调参表新增护甲等级掷点 / 减伤档位表 / `armor_class` 三行(全部 provisional 未定值);伤害行补掷点读数与折扣档位随行留档(行型 10 类封闭不变);验收标准新增护甲等级掷点与折扣零值归路两条、可回放条改封闭随机流口径;EV 中性引入成文(期望伤害对齐现行表值,"零红档"验收保留);待拍板新增"掷点形式与数值域""掷点的随机流归属"两条 |
| v0.9 | 2026-09-16 | 新增「呈现只读面」节(06 清单「呈现只读面契约登记缺口」闭合):把切片已实现的呈现面函数与信号登记为对外契约——呈现状态快照 `presentation_snapshot`、战斗进行中谓词 `is_battle_live`、奖励身份查询 `query_reward_identity`、结算快照信号 `settlement_snapshot`、战斗结束信号 `battle_finished` 五件成文(载荷字段、消费方、销毁前捕获语义),并登记"呈现层唯一状态读取出口、禁链式穿透"的出口纪律与诊断观测面的非契约定位;依赖与输出表 HUD 框架下游行补指路 |
| v0.10 | 2026-09-16 | **护甲等级掷点批·定稿落地(用户拍板,数字即规范——与敌人系统 / 难度曲线与Boss / registry / 切片代码同批)**:判定式定稿——掷 1d20,掷点 ≥ 防守方护甲等级 + 攻击加成(结构位 `attack_bonus`,切片恒 0)→ 全额,低掷按缺口三档折扣(1-3 → ×0.75 · 4-7 → ×0.5 · 8+ → ×0.25,无零档);nat20 暴击该基础攻击分量 ×2 且恒全额(双方同规);伤害下限全局 max(1, ·)(`damage_floor` = 1)——"被减伤归零 v=0"零值伤害行语义退役,重档折扣行文本记"被压制";百分比减伤增益 defense_up 整体退役换装 ac_up(护甲强化 +1 AC/层 ×2 层,`unit=ac` 新量纲、不入任何池,无双轨),off_guard 与池结构零改动;护甲等级与护甲类型分离成文(数值轴 / 属性轴,不做映射)。数值载体:主角 armor_class 10(暂定)、敌方首关 0(暂定,正式行值归怪物设定批,登记待办清单);掷点流归属定稿 = `armor_roll` 封闭流(逐次掷逐次取号,可逐位回放),调参表掷点/档位/下限/加成五行由未定改拍板值;EV 参考数成文(AC10 21.25% / AC11 25% / AC12 28.75%,按判定式复算),换装点锚定(基准 AC10 自带约 −21% 敌方输出期望)与加难杠杆扫描合并处理;验收标准改写掷点条目 + 新增伤害下限与留档条目;切片同批:settlement.tres 七参数入表、战斗段掷点判定/暴击/下限/行留档(roll/ac/tier/crit 字段)、armor_roll 流接入 rng_service(黄金向量 m=42 scope0 = 4806095330042243845)、零值伤害行分支删除、冒烟护栏与掷点行为断言(nat20 种子 / AC12 档位分布 / 池触底保底 / 棋盘必中)、英雄卡与敌人卡 AC 展示、ac_up 状态槽图标、nat20 金框高亮 |
| v0.11 | 2026-09-16 | **敌人技能池批(用户拍板,设计权威 docs/proposal-skill-pool.md v1.0——与敌人系统 / 增益状态 / 难度曲线与Boss / 战斗表现 / HUD框架 / registry / 切片代码同批)**:① 随机口径两处 → 三处——技能摇号 `behavior_roll` 封闭流(回合内、开轮时点、步骤流之外,每敌按生成序派生独立子流、单敌轨迹可独立复放)入册,可回放契约扩写为"三处皆封闭流,同种子同输入逐位复现";② 战斗段成文开轮摇号与敌方技能兑现(每轮恰摇一次、轮内刷新不重摇、摇定后兑现前死亡作废)、增益技 = 施放行 + 状态授予(0 伤害不掷不折不兑伏击);③ 三乘法链成文(技能倍率乘在最前:基线 × 倍率 → AC 掷点 → 甲效 → 既有链不动);④ AC 判定对象措辞四处改述("敌方攻击拍与重击拍基线" → "敌方技能基础伤害分量",含正文/公式行/边界表/验收标准);⑤ 敌方防御池入乘区(`enemy_defense` 新池——硬化载体):主角攻击 Σ三分量后 ×(100+enemy_defense)/100,四池对称成文(hero_offense 现行走普通分量直乘的切片现状登记待办);⑥ 行型改型:蓄力行 `charge` → 施放行 `cast`(10 类封闭不变);⑦ 呈现快照敌人数组字段定稿(当前拍/行动环进度 → 摇定动作三字段 + 敌方增益 effects);验收标准新增开轮摇号条目、战斗段次序与可回放条目改写;切片同批:`_roll_round_actions` 开轮编排、技能摇号器独立服务类、单位容器实例池/冷却/执行上报、settlement.tres effect_pool_map 增 empower/fortify、施放行格式化、摇定动画位 |
@@ -62,7 +62,7 @@
| 输入 | 登记处 | 将来要做的 |
|---|---|---|
| 受击反馈 / 死亡表现 / 顺位标记 | [敌人系统](敌人系统.md)的资产需求下限三类(终稿归样张批,呈现语义已归 battle.md) | 终稿资产与动画兑现;死亡不得瞬消 |
| 敌种姿态资产定稿 | battle.md 意图线索映射目录(数据面已锁:首发两敌种,一态与三态) | 把已锁的姿态清单做成终稿资产 |
| 特殊技技能动画定稿 | [敌人系统](敌人系统.md)三档可见性规格(2026-09-16 敌人技能池批改型:行为环姿态预告〔一态与三态〕退役——现行数据面 = 普通攻击零表示、特殊技攻/防系两型动画〔攻击系/增益系〕,暴击为掷点层无前置表示;battle.md 意图线索映射目录已同步改型注记) | 把摇定动画映射(两型)做成终稿资产 |
| 溢出未生效行的呈现 | [增益状态](增益状态.md)定稿时登记(数据源是[战斗结算](战斗结算.md)的明细协议) | 让这类行在演出中可读、不被吞掉 |
| 效果来源格的可读化 | 同上(候选形态:缩略图或格子高亮,坐标不直接呈现) | 把"效果来自哪一格"翻译成玩家可读的演出 |
| 坍塌显形的连锁动画 | [游戏概念](../../00-游戏概念.md)的概念层拍板——坍塌显形是[连锁展开](../排雷循环/排雷玩法.md)的玩家可见名,与音频方向同批配对登记 | 连锁展开触发时的连锁演出 |
@@ -155,3 +155,4 @@ MVP 不要求本文的闭环:不做清单把战斗动画演出列为 MVP 打
|---|---|---|
| v0.1 | 2026-09-15 | 自归档线索整合为范围草案(旧体系未单独成文) |
| v0.2 | 2026-09-16 | 新增「一屏样张的验收标准」:内容清单、五项按序判定与判定回退成文,四件锁定物(角色剪影/动画方案/战斗空间/敌层插入位置)的过判口径落到已冻结口径上(06 清单「样张验收标准未成文」闭合);依赖与输出表"五区"改"四区"随 UI 收口批同步 |
| v0.3 | 2026-09-16 | **敌人技能池批(与敌人系统 / 战斗结算 / HUD框架 / registry / 切片代码同批)**:上游呈现输入清单「敌种姿态资产定稿」行改型——行为环姿态预告(一态与三态)随行为环退役,改「特殊技技能动画定稿」(普通攻击零表示、特殊技攻/防系两型动画映射,暴击掷点层无前置表示);摇定动画位呈现语义 = 开轮摇定即可见、纯类型级提醒(池与权重不公开),样张验收联动口径不变 |
+138 -81
View File
@@ -1,6 +1,6 @@
# 敌人系统
> 一句话:敌人数据、行为环、意图呈现
> 一句话:敌人数据、技能池出招、意图呈现
> 状态:已定稿(自旧体系迁移)
> 旧版参考:../../../archive/gdd-2026-09-14/b2-enemy-system.md
@@ -8,19 +8,21 @@
敌人系统回答战斗里四个问题:对面是谁、有多强、接下来要干什么、怎么被打死。它同时管主角和敌人的数据面——双方共用同一套受伤与死亡的接口,所以它也是踩雷代价的收件人:惊动巢穴喂给怪物的每一分优势,最终都落在它管的血量上。没有它,惩罚没有落点、胜负没有主体、难度曲线没有施加对象。
它向玩家兑现三条承诺。威胁可推测:读怪物的姿态就知道它下一招要干什么。强弱有来处:它强是我踩雷喂的,它弱是我插旗拆的。越下越险:深层敌人更凶,是下探氛围的可见刻度。反向护栏只有一条——威胁绝不能是无源暗账,玩家说不出"它为什么变强、这一拳为什么这么重",就是本系统失职。
它向玩家兑现三条承诺。威胁可推测:特殊技有一次开轮类型级预告、结算明细具名到技能,普攻之外的行动都读得懂来龙去脉。强弱有来处:它强是我踩雷喂的,它弱是我插旗拆的。越下越险:深层敌人更凶,是下探氛围的可见刻度。反向护栏只有一条——威胁绝不能是无源暗账,玩家说不出"它为什么变强、这一拳为什么这么重",就是本系统失职。
出招的质感目标是动作游戏怪物 AI:以普通攻击为基底,随机时机出特殊技——出招序列不可背诵,但每一次出手都离散、具名、可归因。
## 系统范围
边界这样划:本系统是战斗单位的"数据与语义层"——单位有哪些数值、行为怎么轮转、挨打之后状态怎么变,都归这里;什么时候结算、一笔伤害最终算多少,归战斗结算编排;增益层数存放在哪,归增益状态;画成什么样,归 HUD 框架与战斗表现。本系统编排被动:自己从不主动做事,零随机、不碰界面、不订阅事件,一切等战斗结算来调。
边界这样划:本系统是战斗单位的"数据与语义层"——单位有哪些数值、技能池怎么构成、摇定之后状态怎么变,都归这里;什么时候结算、一笔伤害最终算多少、摇号怎么摇,归战斗结算编排;增益层数存放在哪,归增益状态;画成什么样,归 HUD 框架与战斗表现。本系统编排被动:自己从不主动做事,零随机、不碰界面、不订阅事件,一切等战斗结算来调。
负责:
| 负责 | 说明 |
|---|---|
| 单位数据与接口 | 主角与敌人共用的血量、存活、行为环指针;对外的"查状态"与"受动作"两组能力 |
| 两张单位表的定义与回填 | 敌人表与主角表的字段、取值域、表值回填(表本体的承载与读取归数据配置) |
| 行为环语义 | 拍的枚举、推进与死亡冻结规则、跨轮次跨图延续 |
| 单位数据与接口 | 主角与敌人共用的血量、存活;对外的"查状态"与"受动作"两组能力 |
| 两张单位表与技能表的定义与回填 | 敌人表(含池模板)、主角表、技能表的字段、取值域、表值回填(表本体的承载与读取归数据配置) |
| 技能池语义 | 池构成纪律、技能行词汇表、实例池与冷却状态、死亡作废规则 |
| 目标顺位规则 | 敌方打谁、玩家与道具默认打谁的固定顺位 |
| 伏击词条量纲 | 每层伏击附加多少伤害、单轮授予上限的表值 |
@@ -28,19 +30,19 @@
| 不负责 | 归谁 |
|---|---|
| 结算编排与伤害消费(何时调用、伤害合成、死亡判定时机、护甲克制矩阵) | [战斗结算](战斗结算.md) |
| 状态层数的存放与衰减(伏击层池、削弱层池) | [增益状态](增益状态.md) |
| 摇号执行与结算编排(何时摇、伤害合成、死亡判定时机、护甲克制矩阵) | [战斗结算](战斗结算.md) |
| 状态层数的存放与衰减(伏击层池、削弱层池、蓄力/硬化增益) | [增益状态](增益状态.md) |
| 奖励内容与掉落 | [地图战斗资源](地图战斗资源.md) |
| 棋盘规则(挖格、插旗、惊动巢穴等事实的发生) | [排雷玩法](../排雷循环/排雷玩法.md) |
| 遭遇构成(何时开战、坐标与数量怎么定)与跨战斗血量保留 | [关卡节点地图](../冒险循环/关卡节点地图.md) |
| 单位数值曲线与难度修饰 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) |
| 呈现(线索映射清单、顺位与血条、受击与死亡演出) | [HUD 框架](../表现与支撑/HUD框架.md) 与 [战斗表现](战斗表现.md) |
| 单位数值曲线、池权重/冷却/保底投值与难度修饰 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) |
| 呈现(线索映射清单、顺位与血条、摇定动画、受击与死亡演出) | [HUD 框架](../表现与支撑/HUD框架.md) 与 [战斗表现](战斗表现.md) |
| 配置表的 schema 与读取机制 | [数据配置](../表现与支撑/数据配置.md) |
## 在核心循环中的位置
```
战斗开始:战斗结算按遭遇坐标调本系统生成单位 ──▶ 每轮轮末结算:读拍兑付 → 受击 → 推进 ──▶ 敌全灭 / 主角归零,回流战斗结算判胜负
战斗开始:战斗结算按遭遇坐标调本系统生成单位(池快照成实例池)──▶ 每轮开轮摇号定拍 → 轮末结算按技能行兑现 ──▶ 敌全灭 / 主角归零,回流战斗结算判胜负
```
敌人系统站在"战斗兑现"这一段的单位层。上游是战斗结算的编排调用,以及经它转化而来的棋盘事实(踩了雷、插了旗);下游回给战斗结算两样东西——胜负判定素材和带来源的伤害分量。
@@ -56,7 +58,7 @@
| 状态 | 怎么进入 | 此时会发生什么 |
|---|---|---|
| 未上场 | 单位刚创建、还没开战 | 无任何作用,唯一出口是开战时被实例化 |
| 存活 | 开战时按表值(敌人)或血量入参(主角)生成 | 可被指定目标、按行为环出招、计入全灭判定 |
| 存活 | 开战时按表值(敌人)或血量入参(主角)生成 | 可被指定目标、按摇定技能行动、计入全灭判定 |
| 已死亡 | 血量归 0(判定时机归战斗结算) | 移出顺位、不再出招;不可逆(MVP 无复活);死亡记录保留只读可查 |
| 已消亡 | 战斗结束统一清场 | 逻辑失效:查询返回空、作用接口拒绝;唯一出口是下一场重新生成 |
@@ -66,7 +68,7 @@
战斗开始时,编排方给出遭遇坐标(关卡序号 + 节点深度),本系统据此在敌人表里精确匹配一种敌种,把本战实际数量的敌人生成出来——每场战斗 1 到 3 个敌人,全部同种同属性,来自同一行表值;战斗中敌人只减不增,不做召唤、增援、分裂。主角同时以当前血量入参生成,血量越界(高于上限或不超过 0)整单拒绝、不留半实例。
生成拿到的是当时的表值快照:开战那一刻把数值抄一份,之后改表不影响已生成的单位。若数量或攻击基线配成了区间,由战斗结算用封闭随机流在开战时掷定一次后传入确定值——本系统自身始终零随机;掷定后整场持久,攻击基线不逐拍重掷(数字要可读)。
生成拿到的是当时的表值快照:开战那一刻把数值和池模板各抄一份,之后改表不影响已生成的单位。池模板快照成每实例自己的实例池(各技能冷却清零),此后各自独立摇号、互不干涉。若数量或攻击基线配成了区间,由战斗结算用封闭随机流在开战时掷定一次后传入确定值——本系统自身始终零随机;掷定后整场持久,攻击基线不逐拍重掷(数字要可读)。
| 规则 | 含义 |
|---|---|
@@ -74,80 +76,120 @@
| 每个坐标只出一种敌种 | 敌人表按(关卡序号 × 节点深度)存放,同一坐标的行集内敌种唯一,违规加载期报错止动;同关随深度换敌种合法 |
| 主角数据行 | 主角战斗数值单独放一张全局单行表:生命上限、基础攻击力、护甲等级三字段(见调参表) |
| 基础攻击恒存在 | 基础攻击不许配 0(配置为 0 加载期拒绝)——零基线乘任何百分比增益恒为零,"胜利路径恒有"的保障从数据层杜绝死锁 |
| 先手攻击不是行为环拍 | 每次结算战斗段主角先手攻击顺位最前的存活敌人,这是固定动作;奖励侧的道具与增益是基础攻击之外的规划面伤害,归[地图战斗资源](地图战斗资源.md) |
| 先手攻击不是敌方技能拍 | 每次结算战斗段主角先手攻击顺位最前的存活敌人,这是固定动作;奖励侧的道具与增益是基础攻击之外的规划面伤害,归[地图战斗资源](地图战斗资源.md) |
首发敌种共三种,名字是玩家可见专名:地精、熊地精、食人魔酋长(末者为首发关底 Boss)。
| 敌种 | 行为环 | 护甲类型 | 护甲等级 | 现行定位 |
| 敌种 | 技能池(权重,provisional) | 护甲类型 | 护甲等级 | 现行定位 |
|---|---|---|---|---|
| 地精 | 攻击(单拍环) | 轻甲 | 0(暂定) | 首发杂兵;教学位节点 ×[1,2],开战掷定 |
| 熊地精 | 攻击 / 蓄力 / 重击(三拍环) | 魔法护甲 | 0(暂定) | 首发主力;重击倍率 2 |
| 食人魔酋长 | 攻击 / 攻击 / 蓄力 / 重击(四拍 Boss 环) | 重甲 | 0(暂定) | 首发关底 Boss;重击倍率 2 |
| 地精 | 普通攻击 9 · 突刺 1 | 轻甲 | 0(暂定) | 首发杂兵;教学位节点 ×[1,2],开战掷定 |
| 熊地精 | 普通攻击 6 · 蓄力 2 · 重击 2 | 魔法护甲 | 0(暂定) | 首发主力;重击倍率 2 |
| 食人魔酋长 | 普通攻击 6 · 重击 2 · 硬化 2 | 重甲 | 0(暂定) | 首发关底 Boss;重击倍率 2、硬化独占 |
护甲类型(轻甲 / 魔法护甲 / 重甲)与攻击类型的克制结算矩阵归[战斗结算](战斗结算.md),本系统只提供每个敌种的护甲类型数据。护甲等级是另一条数值轴(防守方字段,基础攻击掷点的折扣判定读数——2026-09-15 护甲等级批新增,2026-09-16 定稿落地):敌人表与主角表各增 `armor_class` 一列(域 [0, 999]),掷点与折扣的结算归[战斗结算](战斗结算.md),行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)——三敌种首关暂定 0(第一关怪物 AC 相对较低,正式行值待怪物设定投值,登记[待办清单](../../06-待办清单.md)),主角暂定 10,两条轴的概念与字段不得混用。举证:生成与护甲为数据面规则,无计算。
护甲类型(轻甲 / 魔法护甲 / 重甲)与攻击类型的克制结算矩阵归[战斗结算](战斗结算.md),本系统只提供每个敌种的护甲类型数据。护甲等级是另一条数值轴(防守方字段,基础攻击掷点的折扣判定读数):敌人表与主角表各增 `armor_class` 一列(域 [0, 999]),掷点与折扣的结算归[战斗结算](战斗结算.md),行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)——三敌种首关暂定 0(第一关怪物 AC 相对较低,正式行值待怪物设定投值,登记[待办清单](../../06-待办清单.md)),主角暂定 10,两条轴的概念与字段不得混用。举证:生成与护甲为数据面规则,无计算。
### 行为环:敌人按排好的剧本轮流出招,走到哪一拍零随机
### 技能池:每敌种一张带权技能池,每拍开轮摇号出招
每种敌人有一条行为环——一份排好的出招剧本,"拍"就是环里的一格行动。战斗开始时指针指向环首,之后每轮轮末结算恰推进一拍:先把当前拍的招打出去,再走一格(先作用后推进);环尾回环首;跨轮次、跨雷图延续,除战斗结束清场外没有任何重置入口。全程零随机,走到哪一拍由结算次数唯一决定——这正是"读怪"可以学会的原因。
每种敌人有一张技能池——一组带出招权重的技能行。敌人每拍做什么由一次摇号决定:把它实例池里冷却中的技能排除,剩下的按权重份额归一摇一个。**中签率 = 该技能权重 ÷ 当前可摇技能权重合计**——权重是份额不是固定百分比,排除谁,谁的份额按比例摊给其余技能。出招序列不可背诵,但摇号只决定"做什么";伤害多少由三乘法链在结算段算(见[战斗结算](战斗结算.md))。
死亡即从环上摘除:轮到它之前被打死,本拍不出手、指针就地冻结(MVP 无复活,永久冻结);行动完成后才死,则这一拍已打出、也已推进。其余存活敌人照常轮转。同种敌人永远同拍——它们都从环首出发、每场结算各推进一次。主角没有行为环,对主角调用环接口一律拒绝。
三层对象,模板与实例分离:
每次结算内"读当前拍 → 兑付 → 受击 → 推进"的调用次序由战斗结算钉死:推进必须放在受击之后,次序颠倒就会读到下一拍。
| 层 | 对象 | 载体 | 职责 |
|---|---|---|---|
| 定义层 | 技能行 | 独立技能表(数据配置承载、本系统回填) | 技能是什么:类型、倍率、冷却、效果引用——多敌种共享 |
| 定义层 | 池模板 | 内嵌敌行 pool 数组:{skill_id, weight} | 敌种用什么、多常用——难度曲线的调参单点 |
| 实例层 | 实例池 | 单位实例(开战把模板快照一份) | 这一只在什么状态:各技能冷却剩余、摇定动作、保底计数 |
| 拍 | 状态 | 语义 |
技能行字段词汇表:
| 字段 | 适用类型 | 说明 |
|---|---|---|
| 攻击 | 启用 | 对主角造成基线攻击点伤害 |
| 蓄力 | 启用 | 空拍不兑付——威胁的"预备动作",也是玩家的规划窗口;不兑付伏击 |
| 重击 | 启用 | 基线攻击 × 重击倍率 |
| 自防 / 强化 / 妨害 / 召唤 | 预留 | 配进表会被校验拒绝(加载期报错);启用走本文修订,不是调参 |
| skill_id | 全部 | 主键,池条目引用键 |
| display_name | 全部 | 玩家可见名(明细行与动画共用) |
| type | 全部 | 封闭枚举 {普通攻击, 伤害, 增益};新类型走本文修订 |
| damage_mult | 仅伤害 | 伤害倍率;域 [1.1, 16] provisional。普通攻击恒 1、不可配 |
| cooldown_beats | 全部 | 施放后连续 N 拍不可摇中;普通攻击恒 0、不可配 |
| buff_ref / buff_duration | 仅增益 | 效果引用(指向状态效果行)与增益持续回合数 |
| P1 字段位 | — | 触发条件、命中段数、目标数、固定值分量——随对应后置批加列 |
举证:**当前拍 = 环序列按步数取模,行动完成后步数加一。**
普通攻击也是一行技能行,两条域校验锁死它的特殊性:倍率恒 1、冷却恒 0——想配倍率或冷却的就不是普攻,是伤害技。技能伤害存倍率、不存固定值:伤害 = 施放者攻击基线 × 技能倍率——同一行"重击",熊地精用是 9×2=18,深层强化行自动缩放,这是共享技能表成立的前提;固定值分量若将来需要,是加字段的事(P1)。增益技带效果引用与持续回合,百分比天然按施放者同池生效,无缩放问题。
池构成纪律(加载校验,违规拒绝入表):**每池恰一行普通攻击**(普攻冷却恒 0 → 可摇集合恒非空,"空池不可能"由结构保证,最坏情况怪物平砍等待——那是玩家的反打窗口而非死拍);**每池增益类技能 ≤1**(非 RPG,怪物连出不同增益显得呆);池条目 skill_id 悬空致命;权重 > 0、冷却 ≥ 0。
两道闸(建议值 provisional,投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)):
| 闸 | 语义 | 现行值 |
|---|---|---|
| 技能冷却 | 每技能行带冷却拍数;施放后连续 N 拍不可摇中 | 普攻 0 · 突刺 2 · 蓄力 3 · 重击 3 · 硬化 4 |
| 保底 | 连续 M 拍执行的都是普通攻击 → 下一拍必出特殊技(特殊技内按权重,不受冷却限制) | M = 4 |
结构红利:增益存续期内下一拍必是伤害技(池里其余全是伤害技、增益自身还在冷却)——**增益不可能白白过期**,"连出不同增益"被池构成纪律结构性消除。同一技能连发不可能(自身冷却杜绝);异名特殊技背靠背概率低(是变化不是失控,全局特殊间隔闸登记 P1 备用旋钮)。
开轮摇号时序(随机消费全部在[战斗结算](战斗结算.md)换算层):
```
当前拍 = 环[步数 mod 环长] 开战时步数 = 0(指向环首)
行动完成后步数 + 1 轮到前被杀 → 步数冻结(死亡即不动手)
开轮(轮次开始):排除冷却中技能 → 按行序逐敌摇定本拍行动(behavior_roll 封闭流,每敌独立子流)→ 冷却递减
挖掘期:按摇定结果播类型级动画(特殊技)/ 零表示(普通攻击)
结算段:按技能行兑现——掷点、乘区、增益挂接、明细落行
判定段之后进入下一轮开轮……
```
首轮同样摇号;每轮恰摇一次,轮内刷新换图不重摇。摇号随机走封闭随机流、每敌按生成序派生独立子流——单敌出招轨迹可独立复放、互不穿插;本系统自身语义零随机不变,单位容器收到的是确定结果(armor_roll 先例同构)。
死亡即不动手(保留):摇定后、兑现前死亡(主角先手 / 授予段直伤),本拍技能作废——不动手、不进冷却、不进保底计数;其余存活敌人照常。拍结构保留:**每结算每存活敌恰行动一次、按行序、先作用后推进**——变的只是"轮到什么",由固定剧本改为摇号。同种敌人不再锁步:各自实例池独立摇号、独立冷却,怪物 1 的重击在冷却里不影响怪物 2,轨迹分歧是涌现,不设开战分配机制。
蓄力语义(2026-09-16 纠偏定稿):蓄力不是重击前奏——它是一行增益技:0 伤害动作,施加"攻击×2"状态,持续 1 个有效结算(provisional)。旧环"蓄力→猛击"的固定配对是哥布林弹珠的拷贝(给玩家输出窗口用的),随行为环一并退役;蓄力与重击之间**没有任何组合语义**——增益与技能倍率恰好同拍只是两层乘法共存(×2 遇 ×2 = ×4),蓄力后摇中普通攻击则是基线×2 的加成平砍,两者同为平常事,不是设计的连招。技能冷却(几拍内不能再摇中,技能行属性)与增益持续(状态挂几回合,状态行属性)是两个计时器,互不相干。旧蓄力拍"零兑付、不读伏击"的语义由施放行继承:0 伤害技能不兑付伏击——"本轮喂的伏击若逢施放拍不兑现"的读怪奖励保留。
Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(现行:酋长池含独占增益技"硬化"——敌方防御池词汇载体;旧"专属四拍环且含蓄力拍"约定随批退役,增益 ≤1 纪律下旧蓄力拍不进 Boss 池)。
举证:**摇定结果 = 可摇集合按权重份额归一的一次抽签;当前可摇集合 = 实例池排除冷却中技能(保底命中时 = 全部特殊技)。**连带可判别:把权重当固定百分比、把冷却当只锁高伤技、把蓄力当重击前奏,都是与本规约相悖的旧口径。
### 伏击:每踩一颗雷,敌方全体多叠一层附加伤害
玩家挖开惩罚格(雷格在玩家侧的叫法,首发类型是怪物巢穴)就是惊动巢穴:敌方全体获得一层"伏击"——敌方侧的增益词条。一层伏击 = 敌人每次攻击类行为(攻击或重击)额外附加 3 点固定伤害,按主角血量点数计。伏击只活一轮:轮末结算清零,没有跨轮存量。单轮授予有上限(现行 4 层):上限内逐颗叠加,达到上限后多踩的雷不生效,但逐颗记一行"溢出未生效"结算明细——惩罚不静默蒸发。
玩家挖开惩罚格(雷格在玩家侧的叫法,首发类型是怪物巢穴)就是惊动巢穴:敌方全体获得一层"伏击"——敌方侧的增益词条。一层伏击 = 敌人每次伤害类技能(普通攻击或伤害技)额外附加 3 点固定伤害,按主角血量点数计。伏击只活一轮:轮末结算清零,没有跨轮存量。单轮授予有上限(现行 4 层):上限内逐颗叠加,达到上限后多踩的雷不生效,但逐颗记一行"溢出未生效"结算明细——惩罚不静默蒸发。
上限 4 是对"单轮连踩 5–8 颗雷"灾难轮的反灾难护栏;单轮踩雷数天然受每轮行动点预算约束(现行 8 点),这是上限默认值的结构背景。上限配 0 表示该敌种免疫伏击:每颗雷都记明细、都可见、都无效。
上限 4 是对"单轮连踩 5–8 颗雷"灾难轮的反灾难护栏;单轮踩雷数天然受每轮行动点预算约束(现行 6 点),这是上限默认值的结构背景。上限配 0 表示该敌种免疫伏击:每颗雷都记明细、都可见、都无效。
| 细则 | 含义 |
|---|---|
| 附加是后置加法 | 伏击不进重击倍乘,倍率只乘基线伤害 |
| 蓄力拍零兑付 | 蓄力不出手、不读伏击层——本轮喂的伏击若逢敌人全是蓄力拍,一点不兑现(读怪的奖励) |
| 附加是后置加法 | 伏击不进技能倍率乘区,倍率只乘基线伤害 |
| 施放行零兑付 | 增益技不出手、不读伏击层——本轮喂的伏击若逢敌人全是施放拍,一点不兑现(读怪的奖励) |
| 层池共享不消耗 | 同一次结算多个敌人读同一层数,不均分、不先到先得 |
| 当轮授予当轮兑付 | 授予发生在兑付之前:本轮踩的雷,若该轮有攻击拍,当轮就生效 |
| 当轮授予当轮兑付 | 授予发生在兑付之前:本轮踩的雷,若该轮有伤害拍,当轮就生效 |
| 溢出可见 | 生效层数 = min(当轮新踩雷数, 上限),其余逐颗记"溢出未生效"明细 |
举证:**攻击拍伤害 = 基线 + 层数 × 3;重击拍伤害 = 基线 × 倍率 + 层数 × 3;蓄力拍恒为 0。**
举证:**伤害拍伤害 = 攻击基线 × 技能倍率 + 层数 × 3;施放拍恒为 0。**
```
攻击拍:伤害 = atk + 3 × L L = 当轮伏击层数(表值 3 provisional,量纲已定稿)
重击拍:伤害 = atk × 倍率 + 3 × L
蓄力拍:伤害 = 0 不读伏击层
伤害拍:伤害 = atk × 倍率 + 3 × L L = 当轮伏击层数(表值 3 provisional,量纲已定稿)
普攻拍:伤害 = atk + 3 × L 倍率恒 1 的特例
施放拍:伤害 = 0 不读伏击层
生效层数 L = min(当轮新踩雷数, 单轮上限) 溢出 = 雷数 − L,逐颗记明细
```
验算(表值 provisional,读数见调参表):熊地精基线 9、倍率 2、4 层伏击的重击拍 = 9 × 2 + 12 = 30;若把伏击塞进倍乘会算出 (9 + 12) × 2 = 42——后置加法由此判别。
验算(表值 provisional,读数见调参表):熊地精基线 9、重击倍率 2、4 层伏击的重击拍 = 9 × 2 + 12 = 30;若把伏击塞进倍乘会算出 (9 + 12) × 2 = 42——后置加法由此判别。
### 目标顺位与意图线索:打谁不用选,下一招靠看图推测
### 目标顺位与意图线索:打谁不用选,特殊技开轮有一次类型级预告
敌方一侧没有选择可言:所有存活敌人各自按当前拍作用于主角,主角是敌方唯一目标。玩家与道具一侧用固定顺位:单体效果默认打生成序最前的存活敌人,它死了顺延到下一个;范围效果打全体存活敌人,同样无需选择。场上只有一个敌人时,顺位与范围自然重合,是合法退化不是错误。顺位必须对玩家可读——"下一个被打的是谁"要能推测出来。
敌方一侧没有选择可言:所有存活敌人各自按摇定技能作用于主角,主角是敌方唯一目标。玩家与道具一侧用固定顺位:单体效果默认打生成序最前的存活敌人,它死了顺延到下一个;范围效果打全体存活敌人,同样无需选择。场上只有一个敌人时,顺位与范围自然重合,是合法退化不是错误。顺位必须对玩家可读——"下一个被打的是谁"要能推测出来。
意图呈现走"视觉推测":界面不直接预告敌人下一拍的行为与数值——威胁靠看图读出来,它弓起背,下一拍就是重击。即将执行的一拍在挖掘期(玩家花行动点挖格的阶段)全程亮出;精确数字只在轮末结算明细里兑现。线索映射以敌种为键、每一局恒定、禁止重掷——一旦重掷,"读怪"就退化成"猜怪"。首发敌种最长三拍环,学习成本刻意压低。
意图呈现走"摇定动画 + 具名明细"的组合,池与权重不公开、不做技能池界面。摇定结果的信息面分三档:
本系统只锁下面这张数据面规格;线索映射清单与视觉规格归[HUD 框架](../表现与支撑/HUD框架.md),姿态与受击死亡演出归[战斗表现](战斗表现.md)。
| 摇中 | 挖掘期呈现 | 结算揭示 |
|---|---|---|
| 普通攻击 | 零表示——完全不可预测 | 明细行"普通攻击(暴击/被压制)" |
| 特殊技 | 技能动画占位(攻击系 / 增益系不同)——纯类型级提醒,不预告技能名与数值 | 明细行具名技能 + 数值 |
| nat20 暴击 | 无前置表示(掷点层,与技能重击严格区分) | 明细行"(暴击)"标注 |
即:普攻完全不可预测;特殊技有一次类型级预告,不可撤销,但给"继续挖还是停手"的决策依据。旧环"下一拍全程亮出(意图徽标 + 环点)"的预告粒度随行为环退役。技能动画的攻/防系映射归[战斗表现](战斗表现.md),敌人卡摇定动画位归[HUD 框架](../表现与支撑/HUD框架.md),本系统只锁上面这张三档规格。
| 规格 | 含义 |
|---|---|
| 图像与行为一一对应 | 同一敌种的同一行为恒同一视觉状态(如熊地精蓄力拍 = 弓背蓄力姿态) |
| 形态暗示强度 | 敌种长相承载强度档位与环长的直觉编码("大个子多半有重击"式) |
| 映射每局恒定 | 以敌种为键,跨局不重掷 |
| 数字只在明细 | 预告面是图像,数字面是结算明细 |
| 预告时序锁定 | 呈现的是即将执行的一拍,挖掘期全程可见;结算时不另播意图动画 |
| 池与权重不公开 | 无技能池界面、无权重数值露出;实例池的可见面 = 摇定结果本身 |
| 类型级预告 | 特殊技只预告攻/防系类型,不预告技能名与数值 |
| 映射每局恒定 | 动画映射以技能类型为键,跨局不重掷 |
| 数字只在明细 | 预告面是类型级动画,数字面是结算明细(具名技能 + 数值) |
| 预告时序锁定 | 开轮摇定即可见,挖掘期全程;轮内刷新换图不重摇 |
举证:本节为顺位与呈现数据面规则,无计算。
@@ -157,42 +199,45 @@
| 方向 | 系统 | 接口要点 |
|---|---|---|
| 上游 | [战斗结算](战斗结算.md) | 唯一编排调用方:开战生成、结算内查询/受击/推进的次序由它钉死;踩雷到伏击施加的转化(每颗雷恰一次)也由它编排 |
| 上游 | [数据配置](../表现与支撑/数据配置.md) | 敌人表与主角表的 schema 承载与类型化读取;本系统是两表的回填责任方 |
| 上游 | [战斗结算](战斗结算.md) | 唯一编排调用方:开战生成、开轮摇号(随机消费)、结算内兑现/受击/执行上报的次序由它钉死;踩雷到伏击施加的转化(每颗雷恰一次)也由它编排 |
| 上游 | [数据配置](../表现与支撑/数据配置.md) | 敌人表、主角表、技能表的 schema 承载与类型化读取;本系统是三表的回填责任方 |
| 相邻 | [增益状态](增益状态.md) | 伏击词条的量纲与作用域由本系统定稿并登记;层数容器与轮末衰减归它,层数由战斗结算读出后作参数传入——运行时零直接调用 |
| 下游 | [战斗结算](战斗结算.md) | 胜负判定素材(敌全灭 / 主角归零)与伤害分量(基线 + 伏击)的供给方;护甲克制矩阵归它 |
| 下游 | [战斗结算](战斗结算.md) | 胜负判定素材(敌全灭 / 主角归零)与伤害分量(基线 × 技能倍率 + 伏击附加)的供给方;护甲克制矩阵归它 |
| 下游 | [地图战斗资源](地图战斗资源.md) | 固定顺位是道具伤害的默认目标规则;基础攻击恒在,奖励侧是基础攻击之外的规划面伤害 |
| 下游 | [关卡节点地图](../冒险循环/关卡节点地图.md) | 遭遇构成(何时开战、坐标与数量怎么定)归它;跨战斗血量是否保留归冒险循环裁决 |
| 下游 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | 两表曲线数值与遭遇分布的调参所有权归它;难度修饰施加点在行值快照之前(MVP 零修饰) |
| 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 线索映射清单、单位顺位与血条、敌方增益层数的呈现归它(引用不转述) |
| 下游 | [战斗表现](战斗表现.md) | 行为环视觉状态(蓄力姿态等)、受击与死亡表现的呈现归它(引用不转述) |
| 下游 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | 曲线数值与池权重/冷却/保底投值的调参所有权归它;难度修饰施加点在行值快照之前(MVP 零修饰) |
| 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 线索映射清单、单位顺位与血条、摇定动画位、敌方增益显示的呈现归它(引用不转述) |
| 下游 | [战斗表现](战斗表现.md) | 技能动画(攻/防系映射)、受击与死亡表现的呈现归它(引用不转述) |
对外接口只有两组能力:查状态(血量 / 当前拍 / 顺位 / 存活)与受动作(受击 / 推进 / 消亡)。什么时候调、按什么顺序调,全归战斗结算。
对外接口只有两组能力:查状态(血量 / 摇定动作 / 顺位 / 存活)与受动作(受击 / 摇定写入 / 执行上报 / 消亡)。什么时候调、按什么顺序调,全归战斗结算。
## P0 最小闭环
1. 战斗开始:战斗结算按遭遇坐标调本系统生成单位——读表快照实例化本战数量的敌人(指针指向环首),主角以血量入参生成。
2. 挖掘期踩雷:事实经战斗结算转化为伏击施加——每颗雷恰一次、上限截流、溢出逐颗记账。
3. 每轮结算:主角先手攻击顺位最前的存活敌人;每个存活敌人读当前拍兑付(攻击 / 重击附加伏击,蓄力空拍)。
4. 受击上报、血量递减;归 0 即移出顺位、指针冻结(死亡即不动手)。
5. 存活敌人各推进一拍(先作用后推进,环尾回环首)。
6. 敌全灭或主角归零,回流战斗结算作胜负判定素材。
7. 战斗结束:全部单位消亡、不跨战斗,下一场重新生成。
1. 战斗开始:战斗结算按遭遇坐标调本系统生成单位——读表快照实例化本战数量的敌人(池模板快照成实例池、冷却全零),主角以血量入参生成。
2. 开轮摇号:战斗结算换算层排除冷却中技能、按行序逐敌摇定本拍动作写入实例池,随后冷却递减(首轮同样摇;轮内刷新换图不重摇)。
3. 挖掘期踩雷:事实经战斗结算转化为伏击施加——每颗雷恰一次、上限截流、溢出逐颗记账。
4. 每轮结算:主角先手攻击顺位最前的存活敌人;每个存活敌人按摇定技能行兑付(伤害技 = 基线 × 倍率 + 伏击附加,增益技 = 施放行 + 状态授予)。
5. 受击上报、血量递减;归 0 即移出顺位(摇定后兑现前死亡 → 本拍作废不进账)。
6. 执行上报:已兑现的技能进冷却、保底计数更新(普攻 +1 / 特殊技归零)。
7. 敌全灭或主角归零,回流战斗结算作胜负判定素材。
8. 战斗结束:全部单位消亡、不跨战斗,下一场重新生成。
## P1 / P2 后置
| 优先级 | 内容 | 后置原因 |
|---|---|---|
| P1 | 预留行为拍(自防 / 强化 / 妨害 / 召唤)启用 | 拍枚举封闭——启用是本文修订,不是调参;排垂直切片 / Alpha |
| P1 | 敌种名录扩容与投放节奏 | 投放节奏是关卡命脉,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md);排垂直切片 / Alpha |
| P1 | 情境条件触发器(低血触发防御、玩家停手时偷袭技等) | 载体 = 技能行触发条件字段加列;登记[待办清单](../../06-待办清单.md) |
| P1 | 个体化变体池(A 型好斗 / B 型守势、精英专属池) | 共识点 A 的 A2 案;登记[待办清单](../../06-待办清单.md) |
| P1 | 全局特殊间隔旋钮 | 特殊技背靠背实测仍嫌时的备用闸;登记[待办清单](../../06-待办清单.md) |
| P1 | 新效应词汇批(妨害技:对主角施减益;固定值分量;多段命中每段一掷) | 技能行字段位已预留;登记[待办清单](../../06-待办清单.md) |
| P1 | 敌种名录扩容与投放节奏(含第二关池与投放) | 投放节奏是关卡命脉,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) |
| P1 | 单体寻址("只打某一个敌人"的目标指定) | 首个单体效果上线时随批裁决归集语义与呈现 |
| P1 | 蓄力拍的音频前摇 | 读招的第二通道,垂直切片可选项 |
| P2 | 敌人图鉴 / 列表界面 | 首发名录学习成本低,名录扩容时再议 |
| P2 | 敌方技能图鉴 / 学习呈现(玩家侧技能知识系统) | 池不公开口径下的进阶信息面;登记[待办清单](../../06-待办清单.md) |
| P2 | 精英 / Boss 遭遇编码位 | 现表键结构没有编码位,改键随[关卡节点地图](../冒险循环/关卡节点地图.md)定稿强制核对(见待办) |
## 调参表
配置表共两张,参数域如下;首发行值全部 provisional、曲线调参所有权归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md),已锁数值以 [registry 的 enemy 与 hero 条目](../../../registry/entities.yaml) 为准。
配置表共三张,参数域如下;首发行值全部 provisional、曲线调参所有权归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md),已锁数值以 [registry 的 enemy / hero / skill 条目](../../../registry/entities.yaml) 为准。
敌人表(按关卡坐标存放,每坐标行集恰一敌种):
@@ -205,10 +250,19 @@
| armor_class(护甲等级) | int [0, 999],缺省 0 | 0(首关暂定——正式行值归怪物设定批) | 防守方护甲等级——基础攻击掷点的折扣判定读数,掷点结算归[战斗结算](战斗结算.md);与 armor_type(克制属性轴)两概念不得混用 |
| hp | [1, 999] | provisional | 单位生命基线(难度修饰前) |
| atk | [0, 999] | provisional | 攻击基线;0 合法 = 纯伏击伤敌种 |
| heavy_multiplier | [1, 16] | 2(provisional) | 无重击拍的敌种不消费,非校验项 |
| pattern | 环长 [1, 8] | 三敌种见核心规则 | 校验域 = 攻击 / 蓄力 / 重击;预留值拒绝 |
| pool(池模板) | {skill_id, weight} 数组,weight ∈ (0, 9999] | 三敌种见核心规则(全部 provisional) | 技能行引用在技能表;池构成纪律与悬空引用加载期拒绝(校验在数据配置跨表通道) |
| advantage_per_round_cap | [0, 16] | 4(定稿) | 单轮伏击授予上限;0 = 免疫伏击;也是扫雷经济侧对账的惩罚上限供给值 |
技能表(全局单表,技能行主键 skill_id):
| 参数 | 取值域 | 现行值 | 说明 |
|---|---|---|---|
| type | {普通攻击, 伤害, 增益} | 五行:普攻 / 突刺 / 蓄力 / 重击 / 硬化 | 封闭枚举;新类型走本文修订 |
| damage_mult | [1.1, 16] | 突刺 1.5 · 重击 2(provisional) | 仅伤害技;普通攻击恒 1 不可配(域校验锁死) |
| cooldown_beats | [0, 99] | 普攻 0 · 突刺 2 · 蓄力 3 · 重击 3 · 硬化 4(provisional) | 普通攻击恒 0 不可配(域校验锁死——空池不可能的结构前提) |
| buff_ref / buff_duration | 效果引用 / [1, 99] | 蓄力 → empower · 硬化 → fortify(持续 2 结算 = 1 个有效增益拍) | 仅增益技;悬空引用加载期拒绝 |
| pity_threshold(保底 M) | [1, 99] | 4(provisional) | 全局单旋钮:连续 M 拍执行普攻 → 下拍必出特殊技 |
主角表(单行全局):
| 参数 | 取值域 | 现行值 | 说明 |
@@ -217,22 +271,24 @@
| atk | [1, 999] | 6(原型锚 provisional) | 基础攻击;配 0 加载期拒绝——基础攻击恒在 |
| armor_class(护甲等级) | int [0, 999] | 10(暂定,2026-09-16 拍板) | 主角作为防守方的护甲等级基准,ac_up(护甲强化 +1/层 ×2 层)在其上加算;掷点结算归[战斗结算](战斗结算.md) |
三敌种现行行值(全部 provisional,出处 registry):地精教学位 24 生命 / 7 攻击 ×[1,2](开战掷定)、群行 13/5 ×[2,3];熊地精 40/9 ×1、群行 18/6 ×[2,3]、深层锚行 30/7;食人魔酋长 150/9 ×1。护甲等级行值首关暂定 0(正式行值归怪物设定批,登记[待办清单](../../06-待办清单.md))。
三敌种现行行值(全部 provisional,出处 registry):地精教学位 24 生命 / 7 攻击 ×[1,2](开战掷定)、群行 13/5 ×[2,3];熊地精 40/9 ×1、群行 18/6 ×[2,3]、深层锚行 30/7;食人魔酋长 150/9 ×1。护甲等级行值首关暂定 0(正式行值归怪物设定批,登记[待办清单](../../06-待办清单.md))。池 EV 锚(静态份额口径,provisional):地精 1.05(突刺倍率 >1 必然抬 EV,+5% 偏移显式登记不硬凑)、熊地精 1.00、酋长 1.00;**含闸长期速率实测(2026-09-16 实施批,×5000 拍):地精 1.106(保底闸把突刺率从自然 10% 抬到 ~22%——唯一特殊技低权重的池受保底支配)、熊地精 1.000(普攻+重击与蓄力零乘加权守恒,结构性恒 1)、酋长 1.024**——EV 重锚与权重投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)。
结构冻结(非调参项,修订走本文流程):行为拍枚举封闭、死亡即不动手、先作用后推进、伏击层池共享读法、附加后置加法、伏击按主角血量点计量纲、固定顺位、每坐标恰一敌种、零随机(口径修订 2026-09-15:本系统自身语义零随机不变——行为环与顺位由结算次数唯一决定;随机消费一律在[战斗结算](战斗结算.md)结算换算层按封闭随机流掷定,可回放契约 = 同种子同输入逐位复现)。联动纪律:单轮上限 × 攻击基线(支配边界联动)、数量 × 上限(单结算上界双线性)、倍率 × 攻击(重击拍支配)禁止独立调参,联调须重跑方向性预检并同步 registry(见待办)。
结构冻结(非调参项,修订走本文流程):技能类型枚举封闭、每池恰一普攻、每池增益 ≤1、死亡即不动手(摇定后兑现前死亡作废不进账)、每结算每存活敌恰行动一次、行序、先作用后推进、伏击层池共享读法、附加后置加法、伏击按主角血量点计量纲、固定顺位、每坐标恰一敌种、零随机(本系统自身语义零随机不变——摇号与掷点随机一律在[战斗结算](战斗结算.md)结算换算层按封闭随机流掷定,可回放契约 = 同种子同输入逐位复现,单敌出招轨迹可独立复放)。联动纪律:单轮上限 × 攻击基线(支配边界联动)、数量 × 上限(单结算上界双线性)、技能倍率 × 攻击(伤害拍支配)、权重 × 冷却 × 保底(池节奏三联动)禁止独立调参,联调须重跑方向性预检并同步 registry(见待办)。
## 验收标准
- 开战生成:按遭遇坐标精确匹配一行,实例化数量与数值投影同行值快照;主角以血量入参,越界(高于上限或不超过 0)拒绝且不留半实例。
- 行为环确定性:初拍恒为环首;任意推进序列后当前拍 = 环[步数 mod 环长];环长 1 恒同一拍;同种多敌全程同拍;除战斗结束清场外无任何重置入口。
- 死亡即不动手:轮到前被杀——本拍不出手、指针冻结;行动完成后才死——已出招已推进;对已死亡单位上报受击被拒绝且状态不变。
- 伏击读值:攻击拍读值 = 基线 + 层数 × 3;重击拍 = 基线 × 倍率 + 层数 × 3(与"伏击进倍乘"的错算可判别);蓄力拍恒为 0;同层数多敌读值一致、读值前后单位状态零变化。
- 开战生成:按遭遇坐标精确匹配一行,实例化数量与数值投影同行值快照;池模板快照成实例池且冷却全零;主角以血量入参,越界(高于上限或不超过 0)拒绝且不留半实例。
- 摇号确定性:同种子回放逐位复现(步骤流与各实例摇定动作序列逐位相同);单敌轨迹独立复放——只喂该敌子流(scope = 生成序 × 派生向量 + 摇号序)即可逐位重建其出招序列、互不穿插。
- 池节奏:中签率 = 权重 ÷ 可摇权重合计(排除冷却中技能后归一);施放后连续 N 拍不可摇中;连续 M 拍执行普攻 → 下拍必出特殊技(特殊技内按权重、不受冷却限制);同技能连发不可能;首轮摇号、每轮恰摇一次、轮内刷新不重摇。
- 死亡即不动手:摇定后、兑现前被杀——本拍技能作废(零行动明细行),不进冷却、不进保底计数;行动完成后才死——已兑付已进账;对已死亡单位上报受击被拒绝且状态不变。
- 空池不可能:每池恰一行普通攻击(域校验),普攻冷却恒 0 → 任意实例任意拍可摇集合恒非空。
- 伏击读值:伤害拍读值 = 基线 × 倍率 + 层数 × 3(与"伏击进倍乘"的错算可判别);普攻 = 倍率 1 特例;施放拍恒为 0;同层数多敌读值一致、读值前后单位状态零变化。
- 伏击授予与溢出:生效层数 = min(雷数, 上限),且生效 + 溢出 = 雷数(零静默蒸发);上限 4 时踩 6 颗雷生效 4、溢出 2;上限配 0 时全部记溢出且全部无效。
- 目标顺位:多敌时单体目标恒为生成序最前存活者,杀最前后顺延;杀至空返回空;单敌时顺位与范围效果重合。
- 快照抗改表:实例化后修改敌人表,已生成单位的数值投影与行为环逐字不变;新实例才用新表值。
- 表校验:越域值、预留拍、同坐标第二敌种均在加载期报错止动;域内合法极端(攻击基线 0、上限 0)不拒;主角表恰一行、攻击配 0 拒绝。
- 零随机回放:同一动作与受击序列驱动两个独立实例,存活投影、逐单位拍轨迹、顺位返回序列逐项相同。
- 表实一致:两张配置表字段与 registry 的 enemy / hero 条目逐字段一致。
- 快照抗改表:实例化后修改敌人表,已生成单位的数值投影与实例池逐字不变;新实例才用新表值。
- 表校验:越域值、池权重 ≤ 0、空池、普攻配倍率/冷却、池增益 > 1、skill_id 悬空、同坐标第二敌种均在加载期报错止动;域内合法极端(攻击基线 0、上限 0)不拒;主角表恰一行、攻击配 0 拒绝。
- 零随机回放:同一动作与受击序列驱动两个独立实例,存活投影、逐实例摇定轨迹、顺位返回序列逐项相同。
- 表实一致:三张配置表字段与 registry 的 enemy / hero / skill 条目逐字段一致。
## 待办
@@ -246,3 +302,4 @@
| v0.2 | 2026-09-15 | 教学位掷骰口径自洽(随[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)同批修订):unit_count 字段说明、地精敌种定位与现行行值句中"教学位固定 1 只/固定不掷"改为 ×[1,2] 开战掷定 |
| v0.3 | 2026-09-15 | **护甲等级批(用户拍板登记,与战斗结算 / 难度曲线与Boss / registry 同批,不动代码)**:敌人表与主角表 schema 各增 armor_class(护甲等级)字段(取值域随掷点形式定稿,provisional);三敌种表补护甲等级列(行值未定);护甲等级(数值轴)与护甲类型(克制属性轴)命名区分成文;结构冻结清单"零随机"措辞按新口径修订——本系统自身语义零随机不变,掷点随机在战斗结算换算层按封闭随机流消费、可回放契约 = 同种子同输入逐位复现;待拍板新增"护甲等级行值未定"条目 |
| v0.4 | 2026-09-16 | **护甲等级掷点批·定稿落地(与战斗结算 / 难度曲线与Boss / registry / 切片代码同批)**:armor_class 域定稿 [0, 999](缺省 0 向后兼容);主角行值 10(暂定)、三敌种首关行值 0(暂定)——"行值未定"改"暂定值 + 待办",敌方正式行值归怪物设定批(第一关怪物 AC 相对较低,值待怪物设定投值,登记待办清单);敌种表护甲等级列同步落值;调参表两行改域与现行值 |
| v0.5 | 2026-09-16 | **敌人技能池批(用户拍板,设计权威 docs/proposal-skill-pool.md v1.0;与战斗结算 / 增益状态 / 难度曲线与Boss / 战斗表现 / HUD框架 / registry / 切片代码同批)**:行为环章节整体退役——固定出招剧本、拍枚举(攻击/蓄力/重击)、环指针、同种锁步、heavy_multiplier 字段全部废除;技能池语义成文(三层对象〔技能行/池模板/实例池〕、技能行词汇表、池构成纪律、两道闸〔全技能各自冷却 + 保底〕、开轮摇号时序、死亡作废、独立子流);蓄力语义改写(纯攻击增益技、与重击无组合语义——纠偏二;施放行继承零兑付伏击);Boss 专属身份改专属池承载;意图呈现改三档可见性(普攻零表示 / 特殊技类型级预告 / 暴击掷点层);敌人表 schema pattern → pool;调参表增技能表与池 EV 锚(含闸长期速率实测登记);验收标准按摇号口径重写 |
@@ -154,7 +154,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
| 上游 | [排雷玩法](../排雷循环/排雷玩法.md) | 棋盘只读投影(格态、数字、旗、小人)与移动路径查询;玩家意图批次经组合根提交 |
| 上游 | [行动经济](../排雷循环/行动经济.md) | 行动点 / 储备 / 相位只读值;刷新入口可用性预判加返回值兜底 |
| 上游 | [战斗结算](../战斗循环/战斗结算.md) | 明细流水是结算明细带的统一数据源(现行 10 类行封闭协议);段序编排信号经组合根接线 |
| 上游 | [敌人系统](../战斗循环/敌人系统.md) | 英雄与敌人的只读投影(血量、顺位、当前拍、存活) |
| 上游 | [敌人系统](../战斗循环/敌人系统.md) | 英雄与敌人的只读投影(血量、顺位、摇定动作〔pending_skill/type/name〕、敌方增益 effects、存活——经战斗结算呈现快照;敌人技能池批批 2 定稿:当前拍/行动环进度字段拆除,池与权重不公开) |
| 上游 | [增益状态](../战斗循环/增益状态.md) | 状态投影经战斗结算呈现面取得,零直读 |
| 上游 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格奖励身份投影(`query_identity` 只读回调,组合根注入)零直读 |
| 上游 | [关卡节点地图](../冒险循环/关卡节点地图.md) | 节点链、当前节点、跨战斗生命携带的读数;胜利后推进 |
@@ -227,7 +227,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
- 结算逐行实时滚出且每行带来源标注;未生效类行聚合计数并带形状冗余;零值行不被吞;效果行的单次贡献与池合成值分示、禁相加误读。
- 高光三档:标中旗行金框、清图奖励行金框、完美排雷全屏喝彩级——庆祝不打在空兑现上(首份即零兑付则不发高光)。
- 状态槽显示图标加层数加剩余结算次数,悬停见来源;极性按键级表呈现(金满框 / 红缺框),空态整排隐藏、数据框上移补位;战斗结束全清有微文案。
- 敌人卡:意图徽标是下一拍预告且挖掘期全程可见、映射跨局恒定、顺位可读、血量数字可读、敌方共享层数各卡同值;死亡灰化加碎裂退场(禁止瞬间消失)且就地更新不丢灰化态。
- 敌人卡:意图徽标 = 本拍摇定结果的动画占位(敌人技能池批三档可见性——普通攻击零表示、特殊技类型级提示〔攻/防系两型〕,不预告技能名与数值、池与权重不公开)且挖掘期全程可见、映射跨局恒定、顺位可读、血量数字可读、敌方共享层数各卡同值;死亡灰化加碎裂退场(禁止瞬间消失)且就地更新不丢灰化态。
- 终局:胜利金蜡封、失败暮蓝氛围层(明度不变);储备清零与状态全清两反馈不合并、时序不倒挂(关卡末清库反馈义务载体 = 魔法道具背包,随魔法道具 P0 落地补验收)。
- 任一模态层打开时遮挡物隐藏或输入锁定、关闭逐层恢复;tooltip 与明细行等动态区固定槽高、换行裁剪不推挤布局。
- 终局呈现只消费流水与快照:核心对象销毁后呈现层对生命周期状态零回读;终局后重放渲染与实时渲染一致。
@@ -245,4 +245,5 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
|---|---|---|
| v0.1 | 2026-09-15 | 自归档 GDD 压缩改写 |
| v0.2 | 2026-09-15 | 雾格残留清理:关闭「待拍板」五条雾失义登记(雾图例条目、雾首遇一次性提示、四格态中的两个雾态、雾纹带与已开雾格 tint 残留、雾区全开合并域完成信号)。现行口径 = 格态两态一眼可辨(已开 / 未开)、图例面板只载现行格态与变异语义;通用变异框架的纹带形状通道保留为未来变异类型的呈现位 |
| v0.4 | 2026-09-16 | **敌人技能池批(与敌人系统 / 战斗结算 / registry / 切片代码同批)**:敌人卡义务改写——行为环环点拆除(proposal §2.4),意图徽标语义改「本拍摇定结果的动画占位」(普通攻击零表示 / 特殊技类型级提示两型:攻击系 ⚔ / 增益系 ✦),护甲行(护甲类型 + AC)保留常驻;敌方增益显示(蓄力/硬化)入敌卡状态行 + 状态槽图标键增 empower/fortify 两键(状态表九行全映射);呈现快照敌人字段消费面同步(摇定动作三字段 + effects,池与权重不投影);上游敌人系统行与验收条目同步 |
| v0.3 | 2026-09-16 | 格面资源批 UI 欠账收口(可选类道具与其轮末窗口已随 2026-09-15 代码批删除):战斗屏布局五区 → 四区(删 E 道具栏行,D 区加宽至约 1036px 并同步装板校验变量);删道具窗口弹层条款(原位点亮、非模态不入栈)、P0 闭环窗口锚点条目、「道具窗口原位点亮 / 至多选一件 / 禁用件带原因 / 空库存不弹窗」验收行;依赖与输出表的窗口选择提交、道具使用窗口呈现、库存查询义务删除或改述为现行口径(奖励身份投影经 `query_identity` 只读回调,零直读);关卡末清库反馈义务改载魔法道具背包,随魔法道具 P0 落地。魔法道具预留义务行与「待拍板」登记保持 |
@@ -60,7 +60,8 @@
| 行动经济表 `ActionEconomyTable` | 每轮行动点、动作价目、停手与刷新门槛 | [行动经济](../排雷循环/行动经济.md) |
| 棋盘生成参数表 `BoardGenTable` | 板尺寸、雷密度、可推理率目标等(进度键表) | [棋盘生成](../排雷循环/棋盘生成.md) |
| 变异表 `VariationTable` | 变异类型清单(现行空清单,合法态) | [地形变异](../排雷循环/地形变异.md) |
| 敌人表 `EnemyTable` | 敌种基线数值、遭遇数量区间、护甲类型、行为环(进度键表) | [敌人系统](../战斗循环/敌人系统.md) |
| 敌人表 `EnemyTable` | 敌种基线数值、遭遇数量区间、护甲类型、技能池模板(进度键表) | [敌人系统](../战斗循环/敌人系统.md) |
| 技能表 `SkillTable` | 技能行定义(类型/倍率/冷却/增益引用)与保底阈值 | [敌人系统](../战斗循环/敌人系统.md) |
| 主角表 `HeroTable` | 主角生命上限与基础攻击 | [敌人系统](../战斗循环/敌人系统.md) |
| 状态效果表 `StatusEffectTable` | 增益/减益效果定义行 | [增益状态](../战斗循环/增益状态.md) |
| 奖励表 `RewardTable` | 奖励条目、类别、权重与档位 | [地图战斗资源](../战斗循环/地图战斗资源.md) |
+55 -17
View File
@@ -20,8 +20,8 @@ entities:
owner: design/gdd/systems/表现与支撑/数据配置.md
attributes:
kind: autoload
streams: [board_gen, reward_roll, encounter, armor_roll]
stream_names: 当前封闭清单(增流需改代码 + P1 支柱评审;combat_var 已于 2026-09-07 full 评审删除——玩法随机不预置基础设施;encounter 增流 2026-09-12 用户拍板——遭遇随机化批,scope_event_binding = 每次战斗实例化恰一 scope;**armor_roll 增流 2026-09-16 用户拍板**——护甲等级掷点批,回合内随机首次入流:scope_event_binding = 每次掷点恰一 scope〔逐次掷逐次取号、可逐位回放〕,消费面 = 战斗结算 吃掷点分量判定)
streams: [board_gen, reward_roll, encounter, armor_roll, behavior_roll]
stream_names: 当前封闭清单(增流需改代码 + P1 支柱评审;combat_var 已于 2026-09-07 full 评审删除——玩法随机不预置基础设施;encounter 增流 2026-09-12 用户拍板——遭遇随机化批,scope_event_binding = 每次战斗实例化恰一 scope;**armor_roll 增流 2026-09-16 用户拍板**——护甲等级掷点批,回合内随机首次入流:scope_event_binding = 每次掷点恰一 scope〔逐次掷逐次取号、可逐位回放〕,消费面 = 战斗结算 吃掷点分量判定;**behavior_roll 增流 2026-09-16 用户拍板**——敌人技能池批(开轮摇号):回合内随机、时点前置到每轮开轮〔结算步骤流之外〕,scope_event_binding = 每敌每摇号恰一 scope,**派生向量 = spawn_index × 1000000 + 单敌摇号序**〔单敌出招轨迹可独立复放、敌互不穿插;取号门 = open_scope(stream, scope) 显式 scope 取号——计数器仍单调 +1 供观测〕,消费面 = 战斗结算 开轮摇号换算层 + 技能摇号器 SkillLottery)
stream_facade: open_stream(stream) 取号(计数器+1→派生→返回已播种实例);derive_at(stream, scope) 纯函数供测试/预览(不推计数器)
scope_event_binding: board_gen=每次生成新扫雷图(棋盘生成);reward_roll=每次 board install(格奖励批 + 清图奖励批)(地图战斗资源——2026-09-09 接口漂移改写,原"每次奖励结算 roll 批次";地图战斗资源 Rule 2/AC-1 为契约源);encounter=每次战斗实例化恰一 scope(战斗结算 begin_battle 实例化期、扫雷开始前——unit_count 区间均匀骰,挖掘决策域之外 P1 合规);armor_roll=每次掷点恰一 scope(战斗结算 战斗段吃掷点分量逐次判定——1d20,护甲等级掷点批 2026-09-16);armor_roll=每次掷点恰一 scope(战斗结算 战斗段吃掷点分量逐次判定——1d20,护甲等级掷点批 2026-09-16)
unseeded_access: 致命中止
@@ -34,17 +34,17 @@ entities:
attributes:
variables: [SALT_s, master_seed, scope]
output_range: "[0, 2^63)"
golden_vectors: 见《数据配置》Formulas-R2 向量表(7 常量:board_gen m=42 scope0-3 · reward_roll m=42 scope0=7422916049646135537 · encounter m=42 scope0=1061841193803499209 · armor_roll m=42 scope0=4806095330042243845——2026-09-16 护甲等级掷点批 armor_roll 增流补向量)
golden_vectors: 见《数据配置》Formulas-R2 向量表(7 常量:board_gen m=42 scope0-3 · reward_roll m=42 scope0=7422916049646135537 · encounter m=42 scope0=1061841193803499209 · armor_roll m=42 scope0=4806095330042243845——2026-09-16 护甲等级掷点批 armor_roll 增流补向量 · behavior_roll m=42 scope0=426657203655691839——2026-09-16 敌人技能池批 behavior_roll 增流补向量)
salt_board_gen: 0xA0761D6478BD642F
salt_reward_roll: 0xE7037ED1A0B428DB
salt_encounter: 0x8EBC6AF09C88C6E3(2026-09-14 encounter 增流——互异奇常数 ≠ 乘数)
salt_armor_roll: 0xC2B2AE3D27D4EB2F(2026-09-16 armor_roll 增流——互异奇常数 ≠ 乘数)
salt_armor_roll: 0xC2B2AE3D27D4EB2F(2026-09-16 armor_roll 增流——互异奇常数 ≠ 乘数)
salt_behavior_roll: 0x85EBCA7758C24E15(2026-09-16 behavior_roll 增流——互异奇常数 ≠ 乘数)
multiplier: 0x9E3779B97F4A7C15
impl_spec: wrap64=二补数自然回绕;禁 float 中间量、禁对中间量用 %、禁"主动修复溢出";常量用分段表达式书写;掩码收尾
reproducibility_claim: 同冒险内同流各 scope 无碰撞 + 跨版本恒定(不做跨 master_seed 全局单射声明)
master_seed_int64_min: 致命(abs 恒等回绕→与 0 静默别名)
set_master_seed_precondition: 仅全流计数器全零时受理(4 流——2026-09-14 数据配置 漂移批口径 + 2026-09-16 护甲等级掷点批 armor_roll 增流)
set_master_seed_precondition: 仅全流计数器全零时受理(5 流——2026-09-14 数据配置 漂移批口径 + 2026-09-16 护甲等级掷点批 armor_roll 增流 + 同日敌人技能池批 behavior_roll 增流)
referenced_by: [棋盘生成, 战斗结算, 地图战斗资源, 冒险结构, 存档序列化]
- name: difficulty_row_resolution
@@ -131,6 +131,8 @@ entities:
enrage: { display_name: 暴走(敌方增伤), target_side: enemy, magnitude: "+25 percent", duration_settlements: 1, max_stack: 16, stack_policy: stack, source_class: flag_miss } # 2026-09-12 标错反噬批上线——三池之一(进 enemy_output 池)
off_guard: { display_name: 失衡(我方承伤加深), target_side: hero, magnitude: "+25 percent", duration_settlements: 1, max_stack: 16, stack_policy: stack, source_class: flag_miss } # 2026-09-12 标错反噬批上线——三池之一(进 hero_defense 池,承伤 ×1.25);2026-09-15 格面资源批起 = defense 型负向(标错 defense 型安全格 / 踩到 defense 型雷格兑付)
sapped: { display_name: 乏力(我方输出降低), target_side: hero, magnitude: "-25 percent", duration_settlements: 1, max_stack: 16, stack_policy: stack, source_class: flag_miss } # 2026-09-15 格面资源批新增——weaken 型负向(标错 weaken 型安全格 / 踩到 weaken 型雷格兑付),进 hero_offense 池(attack_up 镜像);值 provisional
empower: { display_name: 蓄力(敌方输出 ×2), target_side: enemy, magnitude: "+100 percent", duration_settlements: 2, max_stack: 1, stack_policy: refresh } # 2026-09-16 敌人技能池批新增——蓄力技载体(敌方增益技施放,source_class=enemy_action),进 enemy_output 池;duration 2 = 1 个有效增益拍(先兑付后衰减含施放当轮);值 provisional
fortify: { display_name: 硬化(敌方防御 +100), target_side: enemy, magnitude: "+100 percent", duration_settlements: 2, max_stack: 1, stack_policy: refresh } # 2026-09-16 敌人技能池批新增——硬化技载体(Boss 池独占),进 enemy_defense 新池(敌方防御池:主角攻击乘区消费面归 战斗结算);duration 2 = 1 个有效增益拍;值 provisional
value_status: 七行值全部 provisional(2026-09-15 四行→六行——标错反噬批 enrage/off_guard 两行收编;六行→七行——格面资源批 sapped 收编为 weaken 型负向;伏击复用为反噬第三池项〔现为 blast 型负向〕;**2026-09-16 护甲等级掷点批:defense_up 行退役换装 ac_up〔护甲强化 +1 ac ×2 层〕——行数不变、一行换装,ac 幅度暂定值随掷点批定稿),验收锚——weaken→行动经济 F1 条款 2(地图战斗资源/战斗结算)· ambush 量纲→敌人系统(条款 3,**量纲已定稿见 ambush_unit_definition**)· 对照表→战斗结算(条款 1)· **weaken 已按 战斗结算 F0 裁决修订 −25→−65(2026-09-10,值域 [60,85]、终值共裁 战斗结算 OQ2——见 anchor_warning 回执)**
ambush_unit_definition: **量纲已定稿(2026-09-09 敌人系统 GDD Rule 6/F2——registry OQ2 关闭条件兑现)**:+3 flat = 每层伏击为每次攻击类行为(attack/heavy)附加 3 点主角 HP 伤害(后置加法、不进倍乘);charge 拍零兑付(空拍蒸发);值仍 provisional(锚验收归 地图战斗资源/战斗结算——行动经济 F1 条款 3;敌人系统 供给 cap 表值与单结算自然边界口径见 clause3_supply 条目)
anchor_warning: weaken 行 vs 行动经济 F1 条款 2 锚两独立线性代理同向预检不过(百分点·结算暴露 25 vs 100;原型战斗量级 ≈1 vs ≈4 当量)——战斗结算 对照验收优先裁决,登记 战斗结算 强制检查点输入。**修复空间不对称(2026-09-09 增补)**:每结算瞬时当量归一 m_w≥51 可行(F2 越域界随移 AP 界 −408%/表界 −816%);每 AP 总暴露归一 m_w>100 被 percent ∈ [-100,100] 域禁止(该分支不可行)——OQ1 前置步骤:战斗结算 先钉死归一口径,口径落定前禁止数值修订;落总暴露则现实解 = 地图战斗资源 重定最低档参照。**参照对象迁移注记(2026-09-09 地图战斗资源 评审;2026-09-11 回迁)**:最低档安全格 buff 当量的参照对象曾迁 defense_up 当量(attack_up 时为死行——地图战斗资源 F4 迁移)——**2026-09-11 用户裁决"基础攻击恒存在"(HeroTable.atk 域 [1,999]、0 加载拒绝、MVP=6)后 attack_up 复活,参照对象回迁 attack_up 当量**(消费面 = 主角战斗段先手攻击——战斗结算 GDD 同批;defense_up 迁移退役为历史记录,attack_up 入池时 tier_min_buff 重算);本条与 clause3_supply.direction_precheck 的 25 vs 100 预检算术系 attack_up 口径历史登记——defense_up |−50|×dur2 与 attack_up 数值巧合全等(100pp),今日结论不变;**迁移后预检未按新参照重跑**的义务已于 2026-09-14 战斗结算 重算批兑现(F0/F1 按 attack_up 当量重跑 + F1 锚对照实物改 attack_up 行——本迁移注记关闭)。**F0 裁决回执(2026-09-10 战斗结算 GDD——红警关闭)**:归一口径 = **每结算瞬时当量**(总暴露分支被 percent schema 域禁止 + 与"单结算自然边界"已锁事实冲突,排除);m_w 修订 −25 → **值域 [60,85]/默认 −65**(mvp_content.weaken 已同批改写——锚两腿 @D_ref=12:7.8 > 6.0 严格大于 ✓ / 7.8 ≥ E_dig 4.5 ✓〔E_dig 读数 2026-09-14 战斗结算 重算批按 难度曲线与Boss v3 曲线重推——原 7.2 随口径退役〕);地板 = 乘数零点 −100pp、交叉层数 = ⌈100/m_w⌉ = 2(原"7 层触地板"预读按 −400% 合成带估读,更正);defense_up 参照保持(总暴露分支的"重定参照"现实解未采纳);终值 = 地图战斗资源/战斗结算 共裁(战斗结算 OQ2);增益状态 GDD 正文不改以本条为准(收编先例)
@@ -201,9 +203,16 @@ entities:
单意图批: settle_batch 只装一个意图 ≡ 直接调 try_dig 等便捷 API,行为逐项相同
作废(voided): 轮次结束后未获执行的批次意图——零棋盘效果、零扣费、零事件,区别于非法拒绝
连锁不越旗: 连锁展开不经过插旗格(旗格不入链、不作传播源——2026-09-09 评审 GD-1 定稿,经典 flood 惯例)
行为环: 敌种出招的固定顺序表(如攻击→蓄力→重击),按结算轮转、环尾回环首——零随机、可学习(敌人系统 首次定义)
拍: 行为环里的一格行动("这一拍是重击")——敌人系统 首次定义
同步轮转: 同种敌人永远处于同一拍,任何死亡时序都不会让幸存者乱拍(敌人系统 F1 定理)
行为环: 【2026-09-16 敌人技能池批退役——本词条留档】敌种出招的固定顺序表(如攻击→蓄力→重击),按结算轮转、环尾回环首——零随机、可学习(敌人系统 首次定义;替代术语 = 技能池/开轮摇号)
拍: 一格行动的时间单位("这一拍是重击")——敌人系统 首次定义;2026-09-16 技能池批起"拍"保留为时间量词,拍的内容由开轮摇号决定〔原"行为环里的一格"定义随行为环退役〕
同步轮转: 【2026-09-16 敌人技能池批退役——本词条留档】同种敌人永远处于同一拍,任何死亡时序都不会让幸存者乱拍(敌人系统 F1 定理;技能池下同种各实例独立摇号,锁步不再存在)
技能池(池模板): 敌种用什么技能、多常用——带出招权重的技能行集合,内嵌敌行 pool 数组 {skill_id, weight};权重是份额不是固定百分比(敌人系统 首次定义,2026-09-16 敌人技能池批)
实例池: 单只敌人在开战时刻从池模板快照出的私有副本——各技能冷却剩余、摇定动作、保底计数;同种多敌各自实例池独立摇号互不干涉(敌人系统 首次定义,2026-09-16 敌人技能池批)
技能行: "技能是什么"的定义行——类型〔普通攻击/伤害/增益〕、倍率、冷却、效果引用,独立技能表承载、多敌种共享(敌人系统 首次定义,2026-09-16 敌人技能池批)
开轮摇号: 每轮轮次开始时为每个存活敌摇定本拍动作——排除冷却中技能后按权重份额归一抽签,中签率 = 权重 ÷ 可摇权重合计;随机消费在 战斗结算 换算层 behavior_roll 封闭流(敌人系统 首次定义,2026-09-16 敌人技能池批)
保底: 连续 M 拍执行的都是普通攻击 → 下拍必出特殊技(特殊技内按权重、不受冷却限制)——反旱季闸(敌人系统 首次定义,2026-09-16 敌人技能池批)
技能冷却: 施放后连续 N 拍不可摇中的技能行属性——与增益持续(状态行属性)是两个计时器互不相干(敌人系统 首次定义,2026-09-16 敌人技能池批)
施放行: 增益技的结算明细行型(cast)——0 伤害动作、具名技能、不兑付伏击;由蓄力行(charge)改型(敌人系统/战斗结算 首次定义,2026-09-16 敌人技能池批)
伏击池: 敌方侧共享的伏击层数——本轮踩几颗雷就几层,轮末清零(side-wide 语义,敌人系统 首次定义)
溢出(伏击): 单轮踩雷超过上限(cap)的部分——转为"溢出未生效"明细行可见、不生效(敌人系统 首次定义)
死亡即不动手: 轮到某敌人行动时它已死 → 这一下不打、招式轮转停格(2026-09-09 用户拍板,敌人系统 首次定义)
@@ -246,16 +255,15 @@ entities:
unit_count_max: int [unit_count, 3] 可省略(2026-09-14 难度曲线与Boss 修订批新增——遭遇区间上界;缺省 = 定值,旧行零迁移)
atk_min/atk_max: 可选配对 int [0,999](2026-09-14 敌方攻击区间批——上阶/下阶区间随机;缺省 = 定值行向后兼容;跨字段:必成对 · **atk = (min+max)/2 中点锚**;roll 时机 = 遭遇骰同流〔encounter 恰一 scope,数量骰先、atk 骰后〕spawn 期**整战持久**〔每拍抖动否决——数字可读性锚〕,战斗结算.begin_battle roll → 敌人系统.spawn enemy_atk_override 收确定值〔敌人系统 零随机纪律保持〕;MVP 六行 ±3 provisional 归 难度曲线与Boss;验收 = 完美策略档 0 加成通关 ≤40%〔OQ7〕;接口漂移 = 敌人系统.spawn 签名 +1 参数〔正式侧 GDD/registry 修订批随 ADR-0009 同批〕)
armor_type: enum {light, ward, heavy} 缺省 light(2026-09-14 护甲克制批转正登记——攻击类型 × 护甲克制,克制矩阵 = settlement_table.armor_effectiveness〔克制 ×150 / 中性 ×100 / 被克 ×50〕;MVP 映射 goblin=light / bugbear=ward / ogre_chief=heavy;**2026-09-15 命名统一批:原 enum {none, a, b} 为位置键(无语义、且"无甲/甲A/甲B"在文档间已分裂成四种写法),改 {light, ward, heavy} = 轻甲 / 魔法护甲 / 重甲**;数值 provisional 归 难度曲线与Boss)
armor_class: int 取值域未定(**2026-09-15 护甲等级批新增,provisional**——防守方护甲等级,主角基础攻击普通分量 / 敌方攻击拍与重击拍基线的掷点折扣判定读数,掷点与折扣结算归 settlement_table.ac_roll / ac_discount_tiers〔战斗结算〕;**与 armor_type〔克制属性轴 light/ward/heavy〕是两个概念、字段与文档口径不得混用**;三敌种行值未定,投值归 难度曲线与Boss 随掷点形式定稿批)
armor_class: int [0,999] 缺省 0(**2026-09-15 护甲等级批新增,2026-09-16 定稿落地**——防守方护甲等级,主角普通分量 / 敌方技能基础伤害分量的掷点折扣判定读数,掷点与折扣结算归 settlement_table.ac_roll / ac_discount_tiers〔战斗结算〕;**与 armor_type〔克制属性轴 light/ward/heavy〕是两个概念、字段与文档口径不得混用**;三敌种首关行值 0 暂定,正式行值归怪物设定批〔06 清单登记〕)
hp: int [1,999](knob——难度修饰前基线;MVP 18 provisional 出处待查)
atk: int [0,999](knob——attack 行为伤害基值;MVP 4 provisional 出处待查;0 = 纯伏击伤敌种合法)
heavy_multiplier: int [1,16](knob;无 heavy 拍敌种不消费——非校验项,增益状态 max_stack 先例;MVP 2 provisional)
pattern: StringList(行为环;元素 ∈ {attack, charge, heavy} MVP 校验域——guard/boost/hinder/summon 预留值校验拒绝〔棋盘生成 solver_rules 冻结先例〕;环长 [1,8])
pool: Array of {skill_id, weight}(**2026-09-16 敌人技能池批——池模板**,定义层;weight ∈ (0,9999] knob、池内 skill_id 不重复;每池恰一行普通攻击 + 增益技 ≤1 + skill_id 悬空致命〔加载校验在 config_db.validate_skill_pool_links 跨表通道〕;实例池〔快照+冷却状态〕在 单位容器 spawn——三敌种建议池 goblin {attack 9, lunge 1} / bugbear {attack 6, charge 2, heavy 2} / ogre_chief {attack 6, heavy 2, harden 2},全部 provisional 归 难度曲线与Boss;EV 锚 静态 1.05/1.00/1.00,含闸长期速率实测 1.106/1.000/1.024〔×5000 拍,随批登记〕)。**历史(2026-09-16 退役)**:heavy_multiplier int [1,16](重击倍率归技能行 damage_mult)与 pattern StringList(行为环环数组)两字段随行为环整体退役——固定出招剧本废除
advantage_per_round_cap: int [0,16](knob;**MVP 默认 4 定稿**〔2026-09-09——反灾难护栏定位,旧默认 8 溢出协议死码已废弃〕;0 = 免疫伏击合法极端;行动经济 F1 条款 3 供给表值来源字段)
rowset_rule: 每行集恰一敌种(行集内 enemy_id 唯一 = 表结构校验,违规加载期致命)——多敌种同深度选择规则归 关卡节点地图/难度曲线与Boss(provisional);精英/Boss 编码位预登记 敌人系统 OQ7(键冻结下同深度第二敌种行触发行集致命——改键走 数据配置 Rule 4 接口漂移,关卡节点地图 定稿时强制核对)
mvp_content: **恰 3 敌种(2026-09-14 难度曲线与Boss 修订批转正——DND 更名批用户指令:grub→goblin / ambusher→bugbear / boss_guardian→ogre_chief;旧两敌种登记由本条替代;敌人系统 AC-16③ 物种集断言随批更新为 {goblin, bugbear, ogre_chief})**:goblin(地精,[attack] 单拍环——L1 D0 24hp/7atk ×[1,2] 教学位固定 ×1、L1 D1 群 13/5 ×[2,3];armor=light)· bugbear(熊地精,[attack,charge,heavy] 三拍环——L1 D2 40/9 ×1、L1 D3 群 18/6 ×[2,3]、L2 D0 锚行 30/7;armor=ward)· ogre_chief(食人魔酋长,[attack,attack,charge,heavy] 四拍 Boss 环——L1 D4 150/9 ×1;armor=heavy);heavy_multiplier=2 全员;出处 = 切片 enemy.tres v3(试玩批次 1 裁决 + 遭遇随机化批),曲线数值归 难度曲线与Boss
load_bearing_rules: 多敌模型(1–3 同敌种单位,增益状态 单敌假设回验不成立——见 status_effect.single_enemy_assumption)· 行为环确定性轮转(零随机;先作用后推进;死亡即不动手——轮到前被杀本拍不打指针冻结;同步轮转定理)· 效果 side-wide(伏击池 = side 共享,增益状态 零接口变更)· 行值快照抗热重载(增益状态 EC9 同款)· 零随机零 UI 零事件订阅(排雷玩法 事件面不含 敌人系统——事实经 战斗结算 转化)
settlement_obligations: 六项(敌人系统 GDD 门禁评审缺项即 blocking)——① 推进每结算恰一次(敌单位专属——主角无环)+ 结算内调用序成文 query_attack→apply_damage→advance ② 雷→伏击恰一次转化 ③ clamp/负值/溢杀与死亡判定时机成文 ④ F1 条款 3 闭合对账(cap 表值 + 量纲 + 棋盘生成 actuals p10 非 target 参数)⑤ 默认目标消费与单体/AOE 分流 ⑥ 伏击 cap 溢出"溢出未生效"明细行协议。**履行回执(2026-09-10)**:六项已全数落位 战斗结算 GDD(Core Rules 5/6/9/10/12 + Formulas F3/F4——落位映射 = 战斗结算 AC 覆盖矩阵)
mvp_content: **恰 3 敌种(2026-09-14 难度曲线与Boss 修订批转正——DND 更名批用户指令:grub→goblin / ambusher→bugbear / boss_guardian→ogre_chief;旧两敌种登记由本条替代;敌人系统 AC-16③ 物种集断言随批更新为 {goblin, bugbear, ogre_chief})**:goblin(地精,池 {attack 9, lunge 1}——L1 D0 24hp/7atk ×[1,2]、L1 D1 群 13/5 ×[2,3];armor=light)· bugbear(熊地精,池 {attack 6, charge 2, heavy 2}——L1 D2 40/9 ×1、L1 D3 群 18/6 ×[2,3]、L2 D0 锚行 30/7;armor=ward)· ogre_chief(食人魔酋长,池 {attack 6, heavy 2, harden 2}——L1 D4 150/9 ×1;armor=heavy);**2026-09-16 敌人技能池批**:行为环拍序列([attack] 单拍环 / [attack,charge,heavy] 三拍环 / [attack,attack,charge,heavy] 四拍环)与 heavy_multiplier=2 退役,改池模板 + 技能表共享技能行(重击倍率 2 = 技能行 damage_mult);出处 = 切片 enemy.tres(技能池批改型),曲线数值与池权重归 难度曲线与Boss
load_bearing_rules: 多敌模型(1–3 同敌种单位,增益状态 单敌假设回验不成立——见 status_effect.single_enemy_assumption)· 行为环确定性轮转(零随机;先作用后推进;死亡即不动手——轮到前被杀本拍不打指针冻结;同步轮转定理)· 效果 side-wide(伏击池 = side 共享,增益状态 零接口变更)· 行值快照抗热重载(增益状态 EC9 同款——池模板同在快照范围,实例池冷却全零起步)· **技能池摇号出招(2026-09-16 敌人技能池批改写——原"行为环确定性轮转/同步轮转定理"退役)**:每拍做什么 = 实例池权重摇号〔开轮时点,随机消费在 战斗结算 换算层 behavior_roll 封闭流;本系统语义零随机不变、单位容器收确定值〕;两道闸 = 全技能各自冷却 + 保底 M;死亡即不动手(摇定后兑现前死亡 → 本拍作废不进账);拍结构保留(每结算每存活敌恰行动一次/行序/先作用后推进)· 零随机零 UI 零事件订阅(排雷玩法 事件面不含 敌人系统——事实经 战斗结算 转化)
settlement_obligations: 六项(敌人系统 GDD 门禁评审缺项即 blocking)——① 行动每结算恰一次(敌单位专属——主角无环)+ 结算内调用序成文 按摇定技能行兑现→apply_damage→commit_action〔2026-09-16 技能池批改型——原 query_attack→apply_damage→advance 随行为环退役〕 ② 雷→伏击恰一次转化 ③ clamp/负值/溢杀与死亡判定时机成文 ④ F1 条款 3 闭合对账(cap 表值 + 量纲 + 棋盘生成 actuals p10 非 target 参数)⑤ 默认目标消费与单体/AOE 分流 ⑥ 伏击 cap 溢出"溢出未生效"明细行协议。**履行回执(2026-09-10)**:六项已全数落位 战斗结算 GDD(Core Rules 5/6/9/10/12 + Formulas F3/F4——落位映射 = 战斗结算 AC 覆盖矩阵)
hud_obligations: 四项(视觉推测型呈现,缺项即 blocking)——① enemy_id→图像线索映射清单成文(预告时序=下一拍预告、挖掘期全程可见;含强度档位/环长直觉编码说明;形状+色相双通道)② 映射全局恒定(enemy_id 键——跨 run 禁重掷)③ 顺位与存活可读 ④ 敌方 side 池呈现口径
rule4_status: 本表是进度成长表(棋盘生成 BoardGenTable 同型,无 Rule 4 豁免)
referenced_by: [战斗结算, 地图战斗资源, 关卡节点地图, 难度曲线与Boss, HUD框架, 战斗表现, 教学引导]
@@ -273,6 +281,22 @@ entities:
hp_persistence: 跨战斗 HP 持久性归 关卡节点地图/冒险结构(provisional)——敌人系统 单位接口以初始 hp 入参,不定义冒险内持久性
referenced_by: [战斗结算, 地图战斗资源, 难度曲线与Boss]
- name: skill
type: schema_data
owner: design/gdd/systems/战斗循环/敌人系统.md
attributes:
table: SkillTable(**2026-09-16 敌人技能池批新增**——数据配置 承载、敌人系统 回填 owner;行 = Dictionary 键 skill_id,Rule 4 豁免;全局单表多敌种共享)
fields:
skill_id: String 全表唯一(池条目引用键——悬空引用加载致命〔config_db.validate_skill_pool_links〕)
display_name: String 非空(玩家可见名——明细行与动画共用,本地化归 设置与本地化)
type: enum {basic, damage, buff}(封闭枚举 = 普通攻击/伤害/增益;新类型走 敌人系统 修订)
damage_mult: float [1.1,16] 仅伤害技(provisional——**存倍率不存固定值**:伤害 = 施放者攻击基线 × 倍率,三乘法链第一乘〔战斗结算〕;普通攻击恒 1 不可配——域校验锁死)
cooldown_beats: int [0,99](provisional 现行 突刺 2 · 蓄力 3 · 重击 3 · 硬化 4 · 普攻恒 0 不可配——域校验锁死,空池不可能的结构前提;施放后连续 N 拍不可摇中,技能冷却与增益持续两计时器分账)
buff_ref / buff_duration: 仅增益技(效果引用 → StatusEffectTable 活行 + 持续回合;悬空引用加载致命;现行 charge→empower / harden→fortify,buff_duration=2 = 1 个有效增益拍〔先兑付后衰减含施放当轮〕;施放时长由技能行覆盖状态行时长——战斗结算 apply_effect duration_override)
pity_threshold: int [1,99] 全局单旋钮(provisional 现行 4——保底 M:连续 M 拍执行普攻 → 下拍必出特殊技〔特殊技内按权重、不受冷却限制〕;地精类单特殊技低权重池受保底支配)
mvp_content: 五行 = attack 普通攻击(basic)· lunge 突刺(damage ×1.5 cd2)· charge 蓄力(buff→empower cd3)· heavy 重击(damage ×2.0 cd3)· harden 硬化(buff→fortify cd4,Boss 池独占——增益 ≤1 纪律下旧蓄力拍不进 Boss 池)
referenced_by: [敌人系统, 战斗结算, 难度曲线与Boss, 数据配置]
- name: reward_table
type: schema_data
owner: design/gdd/systems/战斗循环/地图战斗资源.md
@@ -317,16 +341,16 @@ entities:
p_perfect: int {100,200} percent(knob,默认 200 provisional——完美排雷清图奖励**第二份兑付触发**;2026-09-10 战斗结算 评审批修订:真实双份交付载体〔Core Rule 13#2〕——100 = 仅高光、200 = 双份交付,非整数倍数乘数无运行时载体、域外加载致命;上界受护栏 B 约束〔双读数:D_ref 口径 24 / DPS 严格读数 ≈8,裁决归 难度曲线与Boss〕)
segment_order: StringList(结构冻结——段序骨架 [grant, buff_debuff, combat, decay, verdict];加载期恒等拍板序校验违例致命,防实现乱序静默漂移;2026-09-15 格面资源批五段——item_window/item 两段随可选类删除下线,旧七段序见底部修订记录)
source_label_map: Dictionary source_class→文案键(结构冻结——P2 归因呈现映射;键集 = 增益状态 source_class ∪ {判定扩展, enemy_action, flag_miss}——2026-09-10 战斗结算 评审批修订;2026-09-15 格面资源批删"道具"扩展键;新增键 = 接口漂移)
effect_pool_map: Dictionary effect_id→pool {hero_offense|hero_defense|enemy_output|flat_attach}(结构冻结——F2 效果语义映射,增益状态 Rule 7 载体;键 ⊆ StatusEffectTable 活行集、悬空加载期致命;新 effect_id 上线须随批登记——2026-09-15 格面资源批随 sapped 行收编登记:sapped → hero_offense;**2026-09-16 护甲等级掷点批:删 defense_up → hero_defense 键**〔减伤百分比行退役,hero_defense 池现仅 off_guard 正向行〕;ac_up 为 AC 阈值轴效果、不入任何池)
effect_pool_map: Dictionary effect_id→pool {hero_offense|hero_defense|enemy_output|enemy_defense|flat_attach}(结构冻结——F2 效果语义映射,增益状态 Rule 7 载体;键 ⊆ StatusEffectTable 活行集、悬空加载期致命;新 effect_id 上线须随批登记——2026-09-15 格面资源批随 sapped 行收编登记:sapped → hero_offense;**2026-09-16 护甲等级掷点批:删 defense_up → hero_defense 键**〔减伤百分比行退役,hero_defense 池现仅 off_guard 正向行〕;ac_up 为 AC 阈值轴效果、不入任何池;**2026-09-16 敌人技能池批:增 empower → enemy_output · fortify → enemy_defense**〔敌方防御池新词汇——硬化载体,消费面 = 主角攻击 Σ三分量后 ×(100+clamp(enemy_defense))/100,四池对称:敌打主角 = hero_defense × enemy_output、主角打敌 = hero_offense × enemy_defense;切片现状注记:hero_offense 现行走普通分量 attack_up 直乘、未并入合计乘区,正式化归 ADR 批〕)
pool_clamp_lo: int pp(结构冻结 −100——percent 池地板域下界,乘数域随之 [0,2];2026-09-10 统一八字段口径)
pool_clamp_hi: int pp(结构冻结 +100——percent 池地板域上界;原"七字段 pool_clamp_lo_hi"措辞作废,数据配置 GDD 行按收编先例以本条为准)
round_direction: enum {floor}(结构冻结——单一取整规则)
charge_grants: Dictionary 奖励触发源→{attack_type, per_unit, cap}(**2026-09-15 攻击类型/奖励抽象分离批新增**——攻击类型 = 伤害的属性轴(定义不含来源),充能 = 按攻击类型分桶的附加伤害储备;"哪类棋盘事实充哪个桶、每单位多少点"归本字典 = 奖励定义,替换字典即改奖励内容,攻击类型与 armor_effectiveness 不动;现行 safe_cell(开格)→ pierce 1/格 cap 8 · flag_hit(标中旗)→ magic 2/雷 cap 0=不封顶;**原 pierce_per_cell / pierce_cap / magic_per_flag("类型×来源"焊死命名,更早为 damage_a_per_cell / damage_a_cap / damage_b_per_flag)同批作废**;数值 provisional 归 难度曲线与Boss;正式归属(地图战斗资源 的奖励类别/效果面)见 战斗结算「待办」)
armor_effectiveness: Dictionary 攻击类型×护甲→百分比(键集结构冻结 {normal, pierce, magic} × {light, ward, heavy};默认 normal 全 100 / pierce→ward=150、heavy=50 / magic→heavy=150、ward=50——克制 ×150 / 中性 ×100 / 被克 ×50;**2026-09-15 命名统一批:改为语义键,原 {base, dmg_a, dmg_b} × {none, a, b} 位置键作废**;数值 provisional 归 难度曲线与Boss)
ac_roll: 护甲等级掷点(**2026-09-16 护甲等级掷点批定稿,数字即规范**——骰面 roll_faces=20、nat 最大面 crit_roll=20、暴击倍率 crit_multiplier=200、攻击加成 attack_bonus=0〔结构位,元进度/武器附魔未来投值〕、伤害下限 damage_floor=1、流名 armor_roll_stream="armor_roll";判定式:掷 1d20,掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额、低掷按缺口查档〔见 ac_discount_tiers〕,nat20 暴击该基础攻击分量 ×2 且恒全额〔双方同规〕;任何攻击落地伤害 ≥ damage_floor〔全局 max(1,·)——零值伤害行语义退役,重档折扣行文本记"被压制"〕;吃掷点分量 = 主角先手攻击普通分量 / 敌方攻击拍与重击拍基线伤害,穿刺/魔法充能分量与棋盘来源伤害〔伏击附加 / 爆裂 / 清障炸药 / 奖励即时〕必中全额不掷;回合内随机、消费 armor_roll 封闭流逐次掷逐次取号,可逐位回放)
ac_roll: 护甲等级掷点(**2026-09-16 护甲等级掷点批定稿,数字即规范**——骰面 roll_faces=20、nat 最大面 crit_roll=20、暴击倍率 crit_multiplier=200、攻击加成 attack_bonus=0〔结构位,元进度/武器附魔未来投值〕、伤害下限 damage_floor=1、流名 armor_roll_stream="armor_roll";判定式:掷 1d20,掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额、低掷按缺口查档〔见 ac_discount_tiers〕,nat20 暴击该基础攻击分量 ×2 且恒全额〔双方同规〕;任何攻击落地伤害 ≥ damage_floor〔全局 max(1,·)——零值伤害行语义退役,重档折扣行文本记"被压制"〕;吃掷点分量 = 主角先手攻击普通分量 / 敌方技能基础伤害分量〔= 攻击基线 × 技能伤害倍率——2026-09-16 敌人技能池批改述,原"敌方攻击拍与重击拍基线伤害"退役;无伤害分量的增益技不掷不折〕,穿刺/魔法充能分量与棋盘来源伤害〔伏击附加 / 爆裂 / 清障炸药 / 奖励即时〕必中全额不掷;回合内随机、消费 armor_roll 封闭流逐次掷逐次取号,可逐位回放)
ac_discount_tiers: Dictionary 缺口档边界→档位值 percent(**2026-09-16 定稿**——roll_tier_bounds=[3,7] · roll_tier_discounts=[75,50,25],档数 = 边界数 + 1;缺口 1-3 → ×0.75 · 4-7 → ×0.5 · 8+ → ×0.25,档位不设零档〔非归零〕,取整沿全局 floor;EV 参考数〔按判定式复算〕= AC10 期望减免 21.25% / AC11 25% / AC12 28.75%;微调旋钮 = 边界与档位值,不动 AC 值;难度曲线与Boss 生存链区间带宽补扫含暴击档与折扣档、"零红档"验收保留)
validation: segment_order 违例致命 · effect_pool_map 悬空致命 · p_perfect 域 {100,200}(2026-09-10 载体域——100 = "完美必须 ≥ 不加倍"机制语义下界,200 = 双份交付)——战斗结算 冒烟三行致命 manifest(segorder_violation / poolmap_dangling / pperfect_oob)
mechanics: 结算段序骨架唯一权威载体(授予→增益/减益→战斗→衰减→判定——2026-09-15 格面资源批五段,item_window/item 两段随可选类删除下线)· **随机口径(2026-09-15 护甲等级批修订)**:结算换算层引入回合内随机(ac_roll 护甲等级掷点——必中非归零、低掷按 ac_discount_tiers 档位折扣),掷点流归属未定〔rng_service 流封闭清单 board_gen/reward_roll/encounter 不含结算内消费——新增流须改代码+P1 支柱评审、复用 encounter 则改"实例化期恰一 scope"绑定,登记 战斗结算「待办」,rng_service 条目随定稿批修订〕· 可回放契约 = **封闭随机流可回放**(同 master_seed 同意图序列 ⇒ 步骤流逐位复现——数据配置 AC-15 落点,原"结算路径零随机 / 步骤流逐行相同"口径随批作废;开战掷区间 / 装板摇号属初始化随机维持不变)· 调用序钉死 query_attack→apply_damage→advance · 衰减恒执行含末轮 · 高光双落载体(perfect_sweep P_perfect——2026-09-10 修订为真实双份兑付载体 / 标中旗 highlight 标记)· 流水行协议字段分层(公共 7 字段 + 行类型特有 target/effect_id/pool_value/聚合计数——2026-09-10 评审批修订;行类型封闭枚举 10 类——2026-09-15 格面资源批由 15 类收拢:删道具行 / 已消耗未生效行 / 使用被拒行 / 窗口打开锚行 window_open / 窗口跳过锚行 window_skip 五类随可选类删除下线〔2026-09-15 窗口锚行批曾由 13 扩为 15,同日回撤〕;行来源断言两层豁免集合同批修订 = 行型豁免 {decay, verdict} × 来源类别豁免 {hero_attack, enemy_action, clear_reward},豁免不等于免检——豁免行仍受公共字段与各自语义约束,清单改动须同步 战斗结算 明细流水一节与 battle_log_view 格式化)· **穿刺/魔法 充能与护甲克制结算规格 = 战斗结算 GDD F6(W3 补全,2026-09-14 重算批;2026-09-15 命名统一批)**——挖掘期充能/战斗段消费/单轮生命周期、不吃 percent、逐分量 armor_effectiveness 查表 floor 相加
mechanics: 结算段序骨架唯一权威载体(授予→增益/减益→战斗→衰减→判定——2026-09-15 格面资源批五段,item_window/item 两段随可选类删除下线)· **随机口径(2026-09-15 护甲等级批修订)**:结算换算层引入回合内随机(ac_roll 护甲等级掷点——必中非归零、低掷按 ac_discount_tiers 档位折扣),掷点流归属未定〔rng_service 流封闭清单 board_gen/reward_roll/encounter 不含结算内消费——新增流须改代码+P1 支柱评审、复用 encounter 则改"实例化期恰一 scope"绑定,登记 战斗结算「待办」,rng_service 条目随定稿批修订〕· 可回放契约 = **封闭随机流可回放**(同 master_seed 同意图序列 ⇒ 步骤流逐位复现——数据配置 AC-15 落点,原"结算路径零随机 / 步骤流逐行相同"口径随批作废;开战掷区间 / 装板摇号属初始化随机维持不变)· 调用序钉死 按摇定技能行兑现→apply_damage→commit_action(2026-09-16 技能池批改型——原 query_attack→apply_damage→advance 随行为环退役;行型 10 类同批改型:蓄力行 charge → 施放行 cast〔增益技 0 伤害施放、具名技能、不兑伏击〕)· 衰减恒执行含末轮 · 高光双落载体(perfect_sweep P_perfect——2026-09-10 修订为真实双份兑付载体 / 标中旗 highlight 标记)· 流水行协议字段分层(公共 7 字段 + 行类型特有 target/effect_id/pool_value/聚合计数——2026-09-10 评审批修订;行类型封闭枚举 10 类——2026-09-15 格面资源批由 15 类收拢:删道具行 / 已消耗未生效行 / 使用被拒行 / 窗口打开锚行 window_open / 窗口跳过锚行 window_skip 五类随可选类删除下线〔2026-09-15 窗口锚行批曾由 13 扩为 15,同日回撤〕;行来源断言两层豁免集合同批修订 = 行型豁免 {decay, verdict} × 来源类别豁免 {hero_attack, enemy_action, clear_reward},豁免不等于免检——豁免行仍受公共字段与各自语义约束,清单改动须同步 战斗结算 明细流水一节与 battle_log_view 格式化)· **穿刺/魔法 充能与护甲克制结算规格 = 战斗结算 GDD F6(W3 补全,2026-09-14 重算批;2026-09-15 命名统一批)**——挖掘期充能/战斗段消费/单轮生命周期、不吃 percent、逐分量 armor_effectiveness 查表 floor 相加
closure_receipt: 行动经济 F1 条款①②③⑤闭合 owner = 战斗结算(2026-09-10 F0–F5 首版验算完成——F0 瞬时当量口径 + m_w 值域裁决见 status_effect.anchor_warning;条款③ clause3_supply 闭合回执;条款⑤ clause5_dominance 条目;actuals p10 交付后强制重跑)
referenced_by: [HUD框架, 战斗表现, 音频, 教学引导, 难度曲线与Boss]
@@ -651,3 +675,17 @@ entities:
# ④ status_effect:defense_up 行退役换装 ac_up(护甲强化 +1 ac ×2 层,unit=ac 新量纲,不入任何池);
# ⑤ reward_table:defense 型正向行 defense_up → ac_up(显示名暂定"护甲强化",权重/档位/cell_type 零改动);
# ⑥ settlement_table.effect_pool_map 删 defense_up 键(hero_defense 池现仅 off_guard 正向行——×0 免伤墙结构面消失)。
# 2026-09-16 敌人技能池批(用户拍板 2026-09-16,设计权威 docs/proposal-skill-pool.md v1.0——与 敌人系统 v0.5 /
# 战斗结算 v0.11 / 增益状态 v0.5 / 难度曲线与Boss v0.6 / 战斗表现 v0.3 / HUD框架 v0.4 / 数据配置 / 03-内容规模 /
# 02-系统清单 / 关卡节点地图 / 06-待办清单 / ux battle.md / architecture.md / 切片代码同批):
# ① rng_service 增流 behavior_roll(开轮摇号——回合内随机、时点前置到每轮开轮;派生向量 = spawn_index×1000000 +
# 单敌摇号序,单敌轨迹独立复放)+ salt_behavior_roll 0x85EBCA7758C24E15 + 黄金向量(m=42 scope0 =
# 426657203655691839)+ open_scope 显式 scope 取号门 + 重播种前提改 5 流;
# ② 新增 skill 条目(SkillTable 五行:普攻/突刺/蓄力/重击/硬化 + pity_threshold=4——池构成纪律与悬空引用加载校验);
# ③ enemy 条目:pattern/heavy_multiplier 退役改 pool 池模板(建议池 goblin 9/1 · bugbear 6/2/2 · 酋长 6/2/2,
# EV 静态锚 1.05/1.00/1.00、含闸实测 1.106/1.000/1.024);armor_class 行值改暂定 0 口径;
# ④ status_effect:新增 empower(蓄力 → enemy_output)/ fortify(硬化 → enemy_defense 新池)两行;
# ⑤ settlement_table:effect_pool_map 增 empower/fortify 两键(enemy_defense 敌方防御池新词汇——硬化载体);
# ac_roll 吃掷点分量措辞改"敌方技能基础伤害分量"(三乘法链:倍率乘在最前);调用序改 摇定兑现→apply_damage→
# commit_action;行型改型 蓄力行 charge → 施放行 cast;
# ⑥ terminology:技能池/实例池/技能行/开轮摇号/保底/技能冷却/施放行 七新词条;行为环/同步轮转退役留档、拍 改时间量词。
+3 -3
View File
@@ -111,7 +111,7 @@
|---|---|---|---|---|---|
| A | LevelStripView | 步进条 | 节点链 + 当前位置 | 只读(点击节点不可跳) | ✅ level_strip_view.gd 迁移 |
| B | 英雄卡 | 卡片 | 小人像、HP 条、攻击值、状态效果槽 ×4 | 只读 | HUDView 拆分 |
| B | 敌人卡 ×1–3 | 卡片 | 敌像、血条、顺位徽标、意图徽标、行为环点、状态槽(含敌方 side 池口径:伏击层数为全体敌人共享单值、各卡同值呈现——数据源 = 战斗结算流水经增益状态投影,敌人系统×4④) | 只读 | 新建 |
| B | 敌人卡 ×1–3 | 卡片 | 敌像、血条、顺位徽标、意图徽标、状态槽(含敌方 side 池口径:伏击层数为全体敌人共享单值、各卡同值呈现——数据源 = 战斗结算流水经增益状态投影,敌人系统×4④;2026-09-16 敌人技能池批改型:行为环点拆除〔proposal §2.4〕,意图徽标语义 = 本拍摇定结果的动画占位——普通攻击零表示 / 特殊技类型级提示,敌方增益〔蓄力/硬化〕入状态行) | 只读 | 新建 |
| B | 轮次·阶段指示 | 标签 | "第 N 轮 · 挖掘中/结算中"(终局定格「战斗结束」;Boss 变体附 Boss 名) | 只读 | 新建 |
| B | 结算明细带 | 滚动列表 | 结算期逐行流水([战斗结算](../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 10 类行协议);挖掘期收起为上轮摘要 1 行 | 点击展开明细回看 overlay | battle_log_view.gd 改造 |
| B | 结算明细回看 | 模态 overlay | 完整流水逐行(现行 10 类行协议;未生效类行聚合计数) | 关闭 | battle_log_view.gd 改造 |
@@ -136,7 +136,7 @@
- **上游修订(2026-09-12 已落稿,OQ11)**:① 行动经济 `request_refresh` Active 相位受理 + 每轮上限 2 次(Waiting 代理退役)② 排雷玩法装板受理域增 Active·仅刷新路径 ③ 编排 owner = **战斗结算 `refresh_board`**(行动经济扣费 → 排雷玩法 retire → 棋盘生成 generate → 排雷玩法 install → 地图战斗资源 roll_board 恰一次;无结算段、无 round_end——战斗结算编排唯一性原则保持)④ 旧板旗随旧板**作废**(零兑付、旗 AP 不返还——排雷玩法 EC11 全量重置承载;确认微交互须显式提示)。**经济预警**:当场刷新无结算发生,原「敌方时间税」自惩失效——行动经济 OQ3 弃图率/刷新率预警阈值联动复核。
- 备选(已否决):结算期决策提示(Waiting 内联)——结算期不做刷新决策(用户拍板);挖掘期预承诺 stop+reroll 复合——决策即终轮,不符「换图继续挖」语义。
**敌人意图线索映射目录(敌人系统×4① 成文占位,2026-09-12)**:
**敌人意图线索映射目录(敌人系统×4① 成文占位,2026-09-12;2026-09-16 敌人技能池批改型注记:行为环三态〔攻击/蓄力/重击〕预告随行为环退役——现行数据面 = 敌人系统三档可见性规格〔普攻零表示 / 特殊技类型级动画〔攻击系/增益系两型〕/ 暴击掷点层无前置〕,池与权重不公开;下表 grub/ambusher 三态清单留档作废,终稿资产目录随战斗表现样张批重立)**:
| enemy_id | 视觉状态(意图线索) | 强度档位编码 | 环长编码 |
|---|---|---|---|
@@ -278,7 +278,7 @@
| AP / RAP / 本轮刷新计数 | 行动经济 | Read | 常显;刷新入口可用性 = RAP 读数客户端预判(RAP≥8)+ `request_refresh` 返回值(行动经济 无 `can_request_refresh` API——仅 bool 返回 + 只读观测量;行动经济 EC13 拒绝合法可见) |
| 结算流水行(10 类封闭协议) | [战斗结算](../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 流水协议 | Read | 逐行来源标注(P2);未生效类行(溢出未生效/奖励未生效)聚合计数呈现 |
| 判定 verdict | 战斗结算 判定段 | Read | 终局画面数据锚 |
| 敌单位 hp/顺位/意图环下一拍/enemy_id/存活 | 敌人系统 只读面 | Read | 意图线索映射全局恒定(敌人系统×4②);**despawn 前捕获**(旧版台账 entry 17③——缺陷②教训) |
| 敌单位 hp/顺位/摇定动作(pending_skill/type/name)/敌方增益/enemy_id/存活 | 敌人系统 只读面(经战斗结算呈现快照) | Read | 意图线索映射全局恒定(敌人系统×4②,技能池批三档口径);**despawn 前捕获**(旧版台账 entry 17③——缺陷②教训) |
| 状态效果投影(含空态/极性/溢出) | 增益状态 投影口径 | Read | 极性映射数据源 = 战斗结算 SettlementTable 效果语义,非 magnitude 符号(增益状态×③) |
| 已开格奖励身份(奖励徽章) | 地图战斗资源 `query_identity`(经 board_view 身份解析只读回调,组合根注入) | Read | 已开格身份常读——挖掘期 Active 相位内有效;reward_id 全局恒定、禁止重掷;徽章绘制优先级见 §Component Inventory BoardView 行 |
| 节点链/当前节点/HP 携带 | 关卡节点地图 lite · LevelRunner | Read | A 区进度条 |