docs(10-11): 迭代修正读者阻断问题(第1轮)

- 修正 B-01..B-13 共 13 条阻断性理解问题(详见 10-11-READER-REVIEW.md 第 1 轮记录)

- src-tour 新增「包从哪来」概念,并在用到包名 import 的篇目交叉引用

- 结构门禁 STRUCT-OK;构建 green、dead link = 0
This commit is contained in:
AncTe committed 2026-10-17 21:50:12 +08:00
1 parent b09da5b129
commit 927611182b
18 files changed
+166 -18

No files matched your search

+6 -2
View File
@@ -42,8 +42,10 @@ mapDamage?.useConverter(new MainMapDamageConverter());
| 激光 | `LaserDamageView` | `getSpecial(24)` | 22 | 同行或同列时造成伤害 |
| 伏击 | `AmbushDamageView` | `hasSpecial(27)` | 未注册 | 返回 0 伤害并附带捕捉标记 |
:::warning
写作时核对源码发现,上表两组 code 并不一致:转换器实际读取的是 15、16、18、24、27,而 `special.ts` 注册的是 13、14、16、22、24,且没有 27。也就是说,按当前 `src/` 代码,内置五类地图伤害与特殊属性的编号尚未对齐。自定义时请以你所用版本的 `mapDamage.ts` 为准:要么让特殊属性使用转换器实际读取的 code,要么同步修改转换器,不要把上表当成已经对齐的最终编号。
:::warning 编号与结算:今日可用 vs 待补齐
- **今日可用**:地图伤害系统本身的三个部件——伤害视图、转换器、合并器——都已实现,注册(`useConverter` / `useReducer`)照常可用。只要让特殊属性使用转换器真正读取的 code,或按下方「受地形遮挡的激光」那样自定义属性 + 转换器,地图伤害就能生效。
- **待补齐(编号未对齐)**:上表两组 code 目前并不一致——转换器实际读取的是 15、16、18、24、27,而 `special.ts` 注册的是 13、14、16、22、24,且没有 27。因此按当前 `src/` 代码,直接给怪物挂上内置的「领域 / 夹击 / 阻击 / 激光」特殊属性,并不会产生对应的地图伤害;「伏击」在内置特殊属性里也没有登记。使用内置编号前,请以你的 `src/data/enemy/mapDamage.ts` 为准二选一:让特殊属性改用转换器真正读取的 code,或修改转换器使其与 `special.ts` 对齐。
- **待补齐(实际结算)**:移动时真正的结算逻辑仍在补齐,见下文「实际结算」。
:::
另外两点以当前代码为准:
@@ -55,6 +57,8 @@ mapDamage?.useConverter(new MainMapDamageConverter());
内置激光使用 `RayRange` 沿四个方向发射,不判断中间是否被地形挡住。下面的示例新增一个「遮挡激光」特殊属性(code 43),沿射线检查路径,遇到非空图块就停止:
示例里的 `@motajs/*`、`@user/*` 是包名,含义见 [src 导览](./src-tour.md) 的「包从哪来」;`map.set(...)` 的 `map` 是 `special.ts` 中 `createSpecials(state)` 建的属性表,见[特殊属性](./enemy-specials.md)。
```ts
/** 43 - 遮挡激光 */
export interface ISpecial43Value {