You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/docs/方案-配表异常.md

44 lines
1.8 KiB

# 方案:配表异常告警
> 日期:2026-09-09
> 入口:`TableAnomaly`(`assets/script/game/TableAnomaly.ts`)
## 1. 目的
配表与实现契约对不上、或行内自相矛盾时,**只暴露、不兜底**。策划在控制台搜 `【配表异常】` 即可看到表名、id、字段和原因。
禁止用默认值、猜间隔、按单体顶替未知 `atk_type` 等把错误跑通。
## 2. 打印格式
```
【配表异常】 Skill id= 20501 cd 主动技能 cd≤0,实现不会编造间隔 0
```
同 key(表+id+字段+原因)只打一次,避免局内刷屏。热更重新扫会先 `reset`。
## 3. 何时检查
| 时机 | 行为 |
|------|------|
| Boot / Deferred / 全表加载完成 | `TableAnomaly.scan` |
| 配表热更写入后 | 再扫一遍 |
| 运行时发现(如主动 `cd≤0`、未知 `atk_type` 进表现) | `TableAnomaly.warn`,不补逻辑 |
## 4. 加载扫描范围
- **Skill**:`type` 非 1/2;主动 `cd≤0`;`atk_type` 头无索敌实现;`skill` 额外头未落地;主动既无 `atk_type` 也无额外效果
- **Hero**:`herotype` 非法;`atk_id` / `act_skill` 指向不存在的 Skill;武器 id 无 Weapon 行;合成武将 `startweapon` 的 `Weapon.type` 与 `Hero.weapon` 不一致;`atk_id` 长度小于 `level_limit`
- **Weapon**:`type` 非 1–4;`act_skill` 无 Skill;`heroid` 无 Hero 或该英雄 `personalweapon` 不是本武器;战斗武器 `skin` 为空
新契约(新 `atk_type` / 额外效果头)落地后,须同步改 `TableAnomaly` 里的实现集,否则会误报。
## 5. 调用约定
运行时发现配表问题一律:
```ts
TableAnomaly.warn('Skill', skillId, 'cd', '主动技能 cd≤0,不编造连放间隔', baseCd);
```
然后中止或保持空结果,**不要**再写 `?? 默认值` / 编造 CD / 改成已实现的 atk_type。