Commit Graph

3 Commits

Author SHA1 Message Date
2ef7d57877 fix: 连七对识别器 + 258检查gap + .First() null防御
1. 连七对: IsConsecutiveSameSuitSevenPairs() 检测同色连续7对
   TrySevenPairs成功后检查→ 连七对 vs 暗七对/七对
2. 258 check gap: 十三幺/全不靠/一色双龙会路径加 require258Pair 检查
   武汉麻将中这些牌型无258将概念→258要求下直接拒绝
3. .First() → .FirstOrDefault() + null return:
   ExecuteAnKong / ExecuteBuKong 防御性编程

审计JSON: remaining_issues 清空 (所有已知问题已修复)
2026-07-04 22:49:19 +08:00
c2c326b07a docs: 更新审计JSON, 标注27个问题的修复状态
原始审计 2026-07: 27 bugs (5H/17M/5L)
本轮修复后: 5H全修, 13M已修, 2M待修(影响极小), 5L可忽略

保留历史审计作为参考, 修复状态已标注
2026-07-04 22:42:17 +08:00
9b9e4c310b fix: flower_rules DSL字段全部接入引擎(花牌计分+开局换花)
Root cause: flower_rules.on_draw/着replace_tiles/scoring三个DSL字段
读入但零引擎消费

修复:
- Deal(): replace_tiles="BEFORE_GAME_START"时开局扫描所有手牌换花牌
- ScoreEngine: 花牌计分(FlowerNormalScore×花牌数+配对花牌FlowerMatchScore)
- ScoringConfig: 新增FlowerNormalScore/FlowerMatchScore/FlowerMapping
- MahjongRoom: 从DSL读取花牌计分配置→传入ScoreEngine

Impact:
- Guangdong: BEFORE_GAME_START开局换花+花牌计分(每张1分+配对1分)
- Guobiao: on_draw replace运行时换花(已有) + 花牌不计分(DSL无scoring)
- Xuezhan/Wuhan: 无花牌,不受影响
2026-07-04 20:29:50 +08:00