docs(spec): Boss 招式增加近战 melee(原地近身范围打击)
区别于 dash 横穿冲撞,melee 为原地劈砍/砸地:前摇预警→melee_radius 内判定扣血→后摇。同步更新范围/设计器 kind 列表/验证项。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
|
||||
**范围内**:
|
||||
- 数据驱动的 Boss 多阶段状态机(血量阈值切换)。
|
||||
- 攻击模式注册表:瞬时远程弹幕(环/扇/瞄准/旋转)+ 位移/蓄力招式(冲刺/蓄力重击),带三段式生命周期与前摇预警。
|
||||
- 攻击模式注册表:瞬时远程弹幕(环/扇/瞄准/旋转)+ 位移/蓄力/近战招式(冲刺/蓄力重击/近身劈砍),带三段式生命周期与前摇预警。
|
||||
- 新增 `EnemyBulletManager` 敌方子弹子系统(伤害玩家)。
|
||||
- 保留现有"进阶召唤援军"手感(作为每阶段可选字段)。
|
||||
- 补齐专用事件 `BOSS_PHASE_CHANGED` / `BOSS_KILLED`。
|
||||
@@ -110,6 +110,7 @@ Boss 实体仍留在 EnemyManager SoA(渲染/受击/HP 不变);`BossManage
|
||||
| :--- | :--- | :--- |
|
||||
| `dash`(冲刺) | 前摇:静立 + 播**预警 VFX**(给玩家闪避窗口);生效:以 `dash_speed` 冲向前摇锁定的玩家位置,冲刺中与玩家重叠 → `PlayerStats.take_damage(contact_damage)`(带内部命中冷却 `contact_hit_cd` 防每帧多段);后摇:静立恢复。 | `windup, dash_speed, dash_time, contact_damage, contact_hit_cd, recover, telegraph_vfx` |
|
||||
| `charge_up`(蓄力) | 前摇:静立蓄力 + 播预警 VFX;生效:释放一次**重击**(大 `ring` 或多重 `spread`,由 `release_kind` + 弹幕参数决定);后摇:静立恢复。 | `windup, release_kind, count, speed, half_angle, bullet_damage, bullet_radius, recover, telegraph_vfx` |
|
||||
| `melee`(近战/劈砍) | **原地近身范围打击**(区别于 `dash` 的横穿冲撞)。前摇:静立蓄势 + 播预警 VFX(预示打击范围);生效:判定玩家是否在 `melee_radius` 内 → `PlayerStats.take_damage(melee_damage)`(该次生效仅判定一次);后摇:静立恢复。 | `windup, melee_radius, melee_damage, recover, telegraph_vfx` |
|
||||
|
||||
**公平性约束**:所有位移/蓄力招式**必须**有 `windup` 前摇与 `telegraph_vfx` 预警,否则冲刺不可闪避。
|
||||
|
||||
@@ -168,7 +169,7 @@ Boss 实体仍留在 EnemyManager SoA(渲染/受击/HP 不变);`BossManage
|
||||
3. Manager `_load_json_bosses()` 于 `_ready()` 载入。
|
||||
|
||||
字段化要求(遵守插件规范):
|
||||
- 所有枚举/选项**中英双语、中文在前**(`kind`:`环 ring` / `扇形 spread` / `瞄准 aimed` / `旋转 spiral` / `冲刺 dash` / `蓄力 charge_up`)。
|
||||
- 所有枚举/选项**中英双语、中文在前**(`kind`:`环 ring` / `扇形 spread` / `瞄准 aimed` / `旋转 spiral` / `冲刺 dash` / `蓄力 charge_up` / `近战 melee`)。
|
||||
- `OptionButton` 存 key(如 `ring`),**不**把双语显示串写进 JSON(显示标签数组与存储值数组分离,index 对齐)。
|
||||
- 数值用 `SpinBox`,撑满宽度(`SIZE_EXPAND_FILL`,工厂已内置)。
|
||||
- 可变长的阶段列表 / 招式列表用增删行 UI(➕加 / 🗑删);如结构过深,MVP 可先做「按 boss_type 选择 → 阶段列表 → 每阶段招式行编辑」的分层表单。**禁止手写 JSON 文本框**。
|
||||
@@ -213,7 +214,7 @@ Boss 实体仍留在 EnemyManager SoA(渲染/受击/HP 不变);`BossManage
|
||||
- godot-mcp-pro `validate_script` 校验新脚本语法。
|
||||
- `play_scene` 跳到 W8/W20(或直接 `WaveManager` 起 boss 波),`execute_game_script` 断言:
|
||||
- 敌方子弹生成并使 `PlayerStats.hp` 下降(`ring`/`spread`/`aimed`/`spiral` 各验一次)。
|
||||
- `dash` 前摇静立→冲刺位移→接触扣血(带命中冷却,不每帧多段);`charge_up` 前摇→释放弹幕。
|
||||
- `dash` 前摇静立→冲刺位移→接触扣血(带命中冷却,不每帧多段);`charge_up` 前摇→释放弹幕;`melee` 前摇→近身范围内扣血、范围外不扣。
|
||||
- HP 跨 66%/33%(或配置阈值)发 `BOSS_PHASE_CHANGED`;进阶召唤援军数正确。
|
||||
- Boss 死亡发 `BOSS_KILLED`,波次照常完成。
|
||||
- 设计器 Boss 分页对真实 `bosses.json` 跑回读往返(`execute_editor_script` 断言 `FAILS=0`);改 dock GDScript 后需 `EditorInterface.restart_editor(true)` 清缓存再测。
|
||||
|
||||
Reference in New Issue
Block a user