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:
@ -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
|
||||
- [ ] 加载时合规检查零警告
|
||||
|
||||
Reference in New Issue
Block a user