Files
pixelheros/docs/superpowers/specs/2026-10-06-boss-phase-content-design.md
panFD e662b63f80 docs: add boss phase content design based on shipped mechanics
Adapt external draft to existing BossPhaseSet capabilities: pool-wide removes for stance-swap semantics, ap/def-only attr mods, 30s/60s time triggers aligned with 90s battle timeout, and 13 ready-to-paste plans across 6 bosses.
2026-10-08 23:12:13 +08:00

307 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Boss 阶段战斗内容设计 v1
> **定位**:本文是 Boss 阶段系统的**内容设计文档**(配什么方案、什么数值),
> 技术机制见规格文档 `docs/superpowers/specs/2026-10-06-boss-phase-system-design.md`。
> **所有设计均基于现有实现能力落地,零机制新增**;外部设计稿(像素大勇者-boss-阶段设计稿.md)
> 仅作理念借鉴,凡与现有实现冲突处一律改写(对照见 §7)。
---
## §1 设计目标
- 6 个现有 Boss 各自拥有 **2~3 个阶段方案**,生成时随机抽一(肉鸽重玩性)
- 每个方案固定 **3 阶段**:P1(基线)→ P2 → P3,两个切换点
- 两种战斗气质:**追加式**(技能池越打越大,数值膨胀)与**换招式**(整组换招,机制重组),
玩家主观强度对齐
- P1→P2 触发条件全 Boss 统一,降低玩家学习成本;P3 是高潮,阈值按 Boss 气质差异化
---
## §2 现有机制能力边界(设计必须遵守)
| 能力 | 现状 | 设计含义 |
|------|------|----------|
| 触发条件 | `hp_pct`(血量≤%)/ `time`(Boss 在场秒数),同点 OR 关系 | 混合触发可直接配 |
| 技能变更 | `adds` 注入 + `removes` 按 id 删除,`delete` 不存在的键无副作用 | **换招式 = removes 列满该定位整个大招池**(见 §3.2) |
| 属性修正 | 仅 `ap_pct` / `defense_pct`,链式乘算 | **不配 hp 修正**(实现已排除,避免血量同步歧义) |
| 技能数值 | `overrides.ap` 系数,口径同 BossUltPools(140~220) | 不引用英雄技能 lv 体系 |
| 新技能 CD | `cd` 缺省 8s,注入后 `ccd: 0` 需等满一个 CD 才首放 | P3 注入技能有 8s 真空期,阈值设计须留窗口 |
| 战斗时长 | `BATTLE_TIMEOUT = 90s`,Boss 延迟 1s 刷出 | **时间触发方案的 P3 阈值 ≤ 60s**(留 ≥28s 收尾窗口) |
| 方案校验 | 恰 2 切换点;hp_pct ∈(0,100) 严格递减且须构成前缀;time 严格递增 | 配错启动期 `validateBossPhaseSet` 报错 |
| 普攻保护 | removes/adds 禁止操作普攻首键 | 只操作大招键 |
---
## §3 通用设计规则
### 3.1 触发维度按 Boss 定位分配(借鉴外部稿注 B,映射到现有 Boss)
| Boss | 定位 | 触发维度 | 理由 |
|------|------|----------|------|
| 6101 兽人首领-双刀dps | 近战 Warrior | **血量**(P2=70% / P3=40%) | 速战速决型,血量阈值直觉明显 |
| 6102 兽人首领-坦克型 | 近战 Tank | **时间**(P2=30s / P3=60s) | 消耗战,时间触发逼玩家在窗口期内输出 |
| 6103 兽人首领-魔法师 | 远程 Mage | **时间**(P2=30s / P3=60s) | 法系读招,时间阈值给玩家"看清招式再反应"的窗口 |
| 6104 兽人首领-射手 | 远程 Archer | **血量**(P2=70% / P3=40%) | 高频弹幕,时间触发会过于喧闹 |
| 6105 亡灵首领-法师 | 远程 Mage | **时间**(P2=30s / P3=60s) | 同 6103 |
| 6106 亡灵首领-骑马战士 | 近战 Tank | **时间**(P2=30s / P3=60s) | 同 6102 |
| 6006 骷髅领主 | 近战 Tank | **血量**(P2=70% / P3=40%) | 低攻速靶子型,血量节奏更稳 |
> 时间阈值为 **Boss 在场时长**(elapsed 从出生起算,暂停不计)。30s/60s 相对 90s 战斗超时
> 留出 P3 ≥28s 的收尾窗口。
### 3.2 换招式(clear_replace)的落地技巧
实现没有"清空"开关,但 `removes` 对不存在的 id 无副作用。因此:
> **换招式 = removes 列满该 Boss 定位对应的整个大招池 id**(近战池 6100~6104 / 远程池 6200~6204 + 6150/6151),
> 无论 RogueConfig 随机注入了哪个大招、之前阶段 adds 了什么,一律清净,再 adds 新技能组。
- 近战定位池:`[6100, 6101, 6102, 6103, 6104]`
- 远程定位池:`[6150, 6151, 6200, 6201, 6202, 6203, 6204]`
### 3.3 双模式强度对齐(借鉴外部稿 Q3,改写为现有口径)
| 模式 | 新鲜感来源 | 数值手段 | 输出口径 |
|------|-----------|----------|----------|
| 追加式(keep_add) | 技能池变大、轮转更密 | `attr_mod.ap_pct` 每段 +15~25% | 技能 overrides 维持标准档(ap 150~180) |
| 换招式(clear_replace) | 招式重组、机制差异 | 新技能 `overrides.ap` 逐段上调(180→200→220) | attr_mod 少量或不配 |
两模式的 P3 理论 DPS 控制在 **±10% 以内**;换招式清掉了随机注入的大招(可能很强),
故新技能给更高系数补偿。
### 3.4 方案 id 规划(10000 段,按 Boss 分组)
| id 段 | Boss | 触发 |
|-------|------|------|
| 10001~10009 | 6101 双刀dps | 血量 |
| 10010~10019 | 6102 坦克型 | 时间 |
| 10020~10029 | 6103 魔法师 | 时间 |
| 10030~10039 | 6104 射手 | 血量 |
| 10040~10049 | 6105 亡灵法师 | 时间 |
| 10050~10059 | 6106 骑马战士 | 时间 |
| 10060~10069 | 6006 骷髅领主 | 血量 |
---
## §4 各 Boss 阶段方案(可直接抄入 BossPhaseSet.ts)
> 以下 `removes` 中的整池列表即 §3.2 的换招技巧;`cd` 缺省 8s 不另写。
### 4.1 6101 兽人首领-双刀dps(血量,近战池)
```ts
// 10001 狂暴进化(已有):P2 换裂气斩、P3 加闪电斩 + 攻+20%
10001: {
name: "狂暴进化",
switches: [
{ trigger: { hp_pct: 70 }, adds: [{ s_uuid: 6102, overrides: { ap: 180 } }], removes: [6100] },
{ trigger: { hp_pct: 40, time: 60 }, adds: [{ s_uuid: 6103, overrides: { ap: 180 } }], attr_mod: { ap_pct: 20 } },
],
},
// 10002 嗜血连斩(追加式):双刀越挥越快,技能只加不换
10002: {
name: "嗜血连斩",
switches: [
{ trigger: { hp_pct: 70 }, adds: [{ s_uuid: 6103, overrides: { ap: 160 } }], attr_mod: { ap_pct: 15 } },
{ trigger: { hp_pct: 40 }, adds: [{ s_uuid: 6104, overrides: { ap: 180 } }], attr_mod: { ap_pct: 25, defense_pct: -10 } },
],
},
// 10003 换刃(换招式):每阶段换一把"刀",系数逐段上调
10003: {
name: "换刃",
switches: [
{ trigger: { hp_pct: 70 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6101, overrides: { ap: 200 } }] },
{ trigger: { hp_pct: 40 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6104, overrides: { ap: 220 } }], attr_mod: { ap_pct: 20, defense_pct: -15 } },
],
},
```
### 4.2 6102 兽人首领-坦克型(时间,近战池)
```ts
// 10010 重压觉醒(追加式):越久越硬,反击越痛
10010: {
name: "重压觉醒",
switches: [
{ trigger: { time: 30 }, adds: [{ s_uuid: 6100, overrides: { ap: 150 } }], attr_mod: { defense_pct: 20 } },
{ trigger: { time: 60 }, adds: [{ s_uuid: 6104, overrides: { ap: 180 } }], attr_mod: { ap_pct: 20 } },
],
},
// 10011 崩岩(换招式):外壳剥落,换进攻形态
10011: {
name: "崩岩",
switches: [
{ trigger: { time: 30 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6102, overrides: { ap: 200 } }], attr_mod: { ap_pct: 15 } },
{ trigger: { time: 60 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6104, overrides: { ap: 220 } }], attr_mod: { ap_pct: 25, defense_pct: -20 } },
],
},
```
### 4.3 6103 兽人首领-魔法师(时间,远程池)
```ts
// 10020 元素汇聚(追加式):元素逐一汇入,弹幕越来越密
10020: {
name: "元素汇聚",
switches: [
{ trigger: { time: 30 }, adds: [{ s_uuid: 6204, overrides: { ap: 150 } }] },
{ trigger: { time: 60 }, adds: [{ s_uuid: 6202, overrides: { ap: 150 } }], attr_mod: { ap_pct: 20 } },
],
},
// 10021 禁咒(换招式):每阶段念诵新禁咒,旧的被遗忘
10021: {
name: "禁咒",
switches: [
{ trigger: { time: 30 }, removes: [6150, 6151, 6200, 6201, 6202, 6203, 6204], adds: [{ s_uuid: 6201, overrides: { ap: 180 } }] },
{ trigger: { time: 60 }, removes: [6150, 6151, 6200, 6201, 6202, 6203, 6204], adds: [{ s_uuid: 6204, overrides: { ap: 200 } }], attr_mod: { ap_pct: 30, defense_pct: -15 } },
],
},
```
### 4.4 6104 兽人首领-射手(血量,远程池)
```ts
// 10030 箭雨升级(追加式):箭种逐段解锁
10030: {
name: "箭雨升级",
switches: [
{ trigger: { hp_pct: 70 }, adds: [{ s_uuid: 6150, overrides: { ap: 150 } }] },
{ trigger: { hp_pct: 40 }, adds: [{ s_uuid: 6151, overrides: { ap: 160 } }], attr_mod: { ap_pct: 20 } },
],
},
// 10031 狙击姿态(换招式):放弃弹幕,换单体重炮
10031: {
name: "狙击姿态",
switches: [
{ trigger: { hp_pct: 70 }, removes: [6150, 6151, 6200, 6201, 6202, 6203, 6204], adds: [{ s_uuid: 6203, overrides: { ap: 180 } }] },
{ trigger: { hp_pct: 40 }, removes: [6150, 6151, 6200, 6201, 6202, 6203, 6204], adds: [{ s_uuid: 6204, overrides: { ap: 200 } }], attr_mod: { ap_pct: 25, defense_pct: -15 } },
],
},
```
### 4.5 6105 亡灵首领-法师(时间,远程池)
```ts
// 10040 亡灵潮汐(追加式):毒雾与雷暴层层叠加
10040: {
name: "亡灵潮汐",
switches: [
{ trigger: { time: 30 }, adds: [{ s_uuid: 6202, overrides: { ap: 150 } }] },
{ trigger: { time: 60 }, adds: [{ s_uuid: 6204, overrides: { ap: 150 } }], attr_mod: { ap_pct: 25 } },
],
},
// 10041 灵魂爆发(换招式):燃尽旧躯壳换新法术
10041: {
name: "灵魂爆发",
switches: [
{ trigger: { time: 30 }, removes: [6150, 6151, 6200, 6201, 6202, 6203, 6204], adds: [{ s_uuid: 6200, overrides: { ap: 180 } }], attr_mod: { defense_pct: 15 } },
{ trigger: { time: 60 }, removes: [6150, 6151, 6200, 6201, 6202, 6203, 6204], adds: [{ s_uuid: 6204, overrides: { ap: 220 } }], attr_mod: { ap_pct: 30 } },
],
},
```
### 4.6 6106 亡灵首领-骑马战士(时间,近战池)
```ts
// 10050 冲锋陷阵(追加式):战马冲锋节奏渐强
10050: {
name: "冲锋陷阵",
switches: [
{ trigger: { time: 30 }, adds: [{ s_uuid: 6101, overrides: { ap: 160 } }] },
{ trigger: { time: 60 }, adds: [{ s_uuid: 6104, overrides: { ap: 180 } }], attr_mod: { ap_pct: 20, defense_pct: -10 } },
],
},
// 10051 背水一战(换招式):弃守转攻,每段更凶更脆
10051: {
name: "背水一战",
switches: [
{ trigger: { time: 30 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6103, overrides: { ap: 200 } }], attr_mod: { ap_pct: 15, defense_pct: -10 } },
{ trigger: { time: 60 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6104, overrides: { ap: 220 } }], attr_mod: { ap_pct: 30, defense_pct: -20 } },
],
},
```
### 4.7 6006 骷髅领主(血量,近战池)
```ts
// 10060 亡灵复苏(追加式):骨架越碎越硬
10060: {
name: "亡灵复苏",
switches: [
{ trigger: { hp_pct: 70 }, adds: [{ s_uuid: 6100, overrides: { ap: 150 } }], attr_mod: { defense_pct: 25 } },
{ trigger: { hp_pct: 40 }, adds: [{ s_uuid: 6102, overrides: { ap: 160 } }], attr_mod: { ap_pct: 15, defense_pct: 15 } },
],
},
// 10061 骷髅狂暴(换招式):拼装新武器,攻高防低
10061: {
name: "骷髅狂暴",
switches: [
{ trigger: { hp_pct: 70 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6103, overrides: { ap: 180 } }] },
{ trigger: { hp_pct: 40 }, removes: [6100, 6101, 6102, 6103, 6104], adds: [{ s_uuid: 6104, overrides: { ap: 220 } }], attr_mod: { ap_pct: 25, defense_pct: -15 } },
],
},
```
### 4.8 heroSet.ts 挂载(phase_ids)
```ts
// 6101 双刀dps: phase_ids: [10001, 10002, 10003],
// 6102 坦克型: phase_ids: [10010, 10011],
// 6103 魔法师: phase_ids: [10020, 10021],
// 6104 射手: phase_ids: [10030, 10031],
// 6105 亡灵法师: phase_ids: [10040, 10041],
// 6106 骑马战士: phase_ids: [10050, 10051],
// 6006 骷髅领主: phase_ids: [10060, 10061],
```
---
## §5 关卡节奏:前期教学 → 后期完整
**现状约束**:`pickPhasePlan` 从 `phase_ids` 均匀随机,无关卡维度;P3 阈值写死在方案里。
**本版策略(零机制改动)**:
- P3 阈值统一标准档(血量 40% / 时间 60s),不做关卡调节
- 前期体验差异由数值自然产生:低关卡玩家 DPS 低、Boss 血量成长低,战斗更快结束,
时间型 Boss 的 P3(60s)在前期自然少见 → 符合"前期教学、后期完整"的意图
- P3 新技能有 8s CD 真空期,残血/收尾阶段常来不及施放 → P3 实际强度比纸面温和,
前期偶发触发不致失控
**后续迭代项(需小改 `pickPhasePlan`,不在本版)**:
按关卡号从 `phase_ids` 过滤"苛刻版/标准版/宽松版"方案副本
(前期 P3 血量 15% / 时间 75s 的副本方案,id 同段递增)。
---
## §6 验证清单
- [ ] `validateBossPhaseSet()` 全量通过(恰 2 切换点 / hp_pct 前缀递减 / time 递增 / 技能引用存在)
- [ ] TestMode 逐个 Boss 跑一遍:追加式 P3 技能池 = 随机大招 + 2 个 adds;换招式 P3 技能池 = 仅 1 个 adds
- [ ] 时间型方案实测:30s/60s 切换,90s 超时前 P3 至少施放 1 次新技能
- [ ] 换招式验证:removes 整池后,RogueConfig 随机注入的大招确实消失(普攻不受影响)
- [ ] 数值抽查:同 Boss 追加式 vs 换招式的 P3 阶段 30s 伤害量差距 ≤10%
---
## §7 与外部设计稿的对照(借鉴 vs 放弃)
| 外部稿概念 | 本文处理 | 原因 |
|-----------|---------|------|
| 4 主题 Boss(破阵先锋/雷巫/霜羽/磐盾) | 映射到现有 6 Boss,按定位分触发维度 | Boss 池由 heroSet 实际条目决定 |
| `phase_mode: clear_replace` 字段 | 用 `removes` 列满定位大招池实现(§3.2) | 实现为纯增量,`delete` 空键无副作用,零机制新增 |
| `property_mod.hp` 血量修正 | **全部放弃**,仅 ap/def | 实现已排除 hp,避免血量同步歧义 |
| P1→P2 固定 60s(时间型) | 改为 **30s** | 适配 `BATTLE_TIMEOUT=90s`,P3 需留收尾窗口 |
| P2→P3 关卡三档调节(5%/20%/35%) | 本版统一标准档,关卡调节列后续迭代 | `pickPhasePlan` 无关卡维度,不为此改机制 |
| 英雄 lv 技能引用(lv8/lv16) | 统一 `SkillSet` 6100~6204 + overrides.ap 口径 | Boss 大招体系与英雄 lv 体系无关 |
| 阶段切换无敌帧/演出 | 维持空钩子 `onPhaseExit/onPhaseEnter` | 表现层后续迭代,接口已预留 |
| 双模式强度对齐 ±5% | 放宽到 ±10%,用 §3.3 口径对齐 | 缺数值模拟工具,先宽松后收敛 |
| Boss 命名美学(方案名) | 全部保留并适配(狂暴进化/禁咒/背水一战…) | 与机制无关,直接采纳 |
---
**版本**:v1(2026-10-06,基于已实现机制重写)
**关联文档**:
- 技术规格:`docs/superpowers/specs/2026-10-06-boss-phase-system-design.md`
- 实现计划:`docs/superpowers/plans/2026-10-06-boss-phase-system.md`
- 外部参考:`y:\构思\像素大勇者-boss-阶段设计稿.md`(仅理念借鉴)