docs(10-11): 按 D-51 微调特殊属性落点与讲解方式

- 特殊属性实现写进已有文件(aura.ts 等),仅查询属性新建 query.ts
- aura.ts / query.ts 建议用 //#region {code}-{name} 包裹
- 通俗解释「副作用」;地图伤害按计算后怪物计算,光环加的特殊属性会真实生效
- 依赖并修改外部环境应拆成查询 + 光环、用新怪物属性桥接(指向高级教程)
- getCriticalLimit 提一句并指向高级教程;接口讲解改为「为了实现 X,改 Y 接口」
- 追加 batch 10 读者审阅记录
This commit is contained in:
AncTe committed 2026-10-19 19:28:18 +08:00
1 parent a50210aec2
commit e64167b7c5
9 files changed
+85 -42

No files matched your search

+7 -3
View File
@@ -4,9 +4,9 @@
它适合实现「只看自己(和勇士)就能决定」的转换,例如坚固、模仿。整体流程见[战斗总览](./combat-overview.md)。
## 接口
## 最终效果接口
`IEnemyFinalEffect` 只有两个成员:
为了在外部影响都算完后对怪物自己做一次收尾,我们需要实现 `IEnemyFinalEffect` 接口。它只有两个成员:
- `priority`:优先级,越高越先执行;
- `apply(handler)`:读取 `handler.enemy` 与 `handler.hero`,修改 `handler.enemy` 的基础属性。
@@ -100,6 +100,10 @@ apply(handler: IEnemyHandler<IEnemyAttr, IHeroAttr>): void {
所以上表里「读取外部」与「影响外部」同时为「是」的那一格被刻意留空:需要「读外部之后改变自己的结果」,就用查询;需要「影响其他怪物」,就用光环。两者分开、按固定阶段执行,循环依赖就不会出现。
如果一种属性确实同时需要这两件事,不要试图做一个混合效果,而是把它拆成**查询效果 + 光环效果**:查询读取外部、改自己身上的一个新增标记属性,光环再根据这个标记属性去影响其他怪物。两者靠这个新怪物属性桥接。具体写法会在**高级教程**中讲解(预留标记:`高级教程 · 依赖并修改外部环境的属性`),待高级教程就位后替换为链接。
<!-- TODO(advanced): 依赖并修改外部环境的属性 -->
## 自己写最终效果类
只有两种情况需要自己写类:一是效果要按自己的节奏独立执行(比如想单独控制 `priority`、让它在内置效果之前跑完),二是你不打算改动内置文件。
@@ -112,7 +116,7 @@ apply(handler: IEnemyHandler<IEnemyAttr, IHeroAttr>): void {
### 模板:复制什么、改什么
下面是最终效果机制本身的骨架,不含任何具体效果。复制到新文件后按 `[需改]` 修改:
下面是最终效果机制本身的骨架,不含任何具体效果。复制到 `src/data/enemy/final.ts` 末尾后按 `[需改]` 修改(不要另建文件,最终效果的实现集中在这个文件里):
```ts
// [需改] 类名:换成你自己的效果名