docs: 全面更新 README + DSL规范

README.md:
- 测试数: 45→58, 玩法: 4→5 (新增南昌)
- 番型: 16→39 种完整清单
- 新增: 精牌类型(fixed/random), 计分倍数, 5种玩法覆盖表
- 新增: 压测结果表, 引擎代码规模

dsl-specification.md:
- scoring 段新增 self_draw/discard_win/dealer 倍数字段
- 已知限制更新: 花牌(完全支持), wildcard type(fixed+random)
- 快速清单新增 wildcard.type + scoring倍数 检查项
This commit is contained in:
xiaoou
2026-07-04 22:02:47 +08:00
parent 42b032339c
commit 359e43ce23
2 changed files with 133 additions and 69 deletions

View File

@ -181,14 +181,22 @@ phases:
### scoring (必需)
```yaml
scoring:
mode: fan_table # 当前仅支持"fan_table"
max_cap: 100 # 番数上限
pre_hooks: # 可选,结算前执行的hook
- name: check_hua_zhu # 检查花猪(仅血战)
mode: fan_table # 当前仅支持"fan_table"
max_cap: 999 # 番数上限, 默认无限
self_draw_multiplier: 1 # 自摸: 每家付 baseFan × N (默认 1)
discard_win_multiplier: 3 # 点炮: 放炮者付 baseFan × N (默认 3)
dealer_multiplier: 1 # 庄家输赢 × N (默认 1, 南昌=2)
pre_hooks: # 可选, 结算前执行的 hook
- name: check_hua_zhu # 检查花猪 (仅血战)
condition: deck_exhausted
- name: check_ting # 检查听牌(仅血战)
- name: check_ting # 检查听牌 (仅血战)
condition: deck_exhausted AND not hua_zhu
```
**计分倍数规则**
- `self_draw_multiplier`: 自摸胡牌时每位非赢家支付 `baseFan × N`,赢家收入总和
- `discard_win_multiplier`: 点炮胡牌时放炮者支付 `baseFan × N`,赢家收入
- `dealer_multiplier`: 庄家赢 → 每家付倍数;闲家赢 → 仅庄家付倍数
- 不设置时使用默认值,现有玩法向后兼容
### pre_hooks (可选)
```yaml
@ -260,10 +268,11 @@ flower_rules:
3. **scoring.mode**: 仅支持 `fan_table`。不支持 `multiply_score`
4. **牌库生成器**: 仅支持 `generator: mahjong`。不支持其他牌库类型。
5. **玩家数**: 仅支持 4 人。不支持 2 人/3 人。
6. **花牌计分**: `flower_rules.scoring` 的各字段都支持,但 `replace_tiles` 仅在广东鸡平胡(BEFORE_GAME_START)和国标(留空=on_draw replace)下正确
6. **花牌计分**: 完全支持。初始花牌 (`deal_cards_with_flowers`) 和游戏中摸到花牌都正确补牌while 循环处理递归花牌)
7. **pre_hooks**: 仅 `wildcard_count`/`check_hua_zhu`/`check_ting` 被引擎识别。其他名称会在合规检查中警告。
8. **特殊花色**: 不区分风圈/箭刻/门风。番型 `圈风刻`/`门风刻`/`箭刻` 不在识别列表中
8. **wildcard type**: 支持 `fixed`(指定牌为癞子)和 `random`(骰子翻牌定精)
9. **番型组合: 一色三同顺/一色三节高/三色三同顺/花龙/组合龙/推不倒/无番和**: 不在识别列表中。
10. **精的冲关/德国计分**: 引擎不支持南昌麻将的冲关精数×2^N和德国无精胡牌加分复杂计分规则。
---
@ -284,6 +293,8 @@ flower_rules:
- [ ] `fan_types``condition` 在支持列表中(或为空)
- [ ] `phases` 的 actions 在支持列表中
- [ ] `wildcard_rules.behavior` = "substitute"
- [ ] `wildcard_rules.type` = "fixed" 或 "random"
- [ ] `scoring.mode` = "fan_table"
- [ ] `scoring` 倍数 (self_draw/discard_win/dealer) 设置正确
- [ ] `pre_hooks` 仅含 known hooks
- [ ] 加载时合规检查零警告