fix: 4个HIGH severity DSL规则bug(子代理审查发现)

子代理审查(对照4个DSL)发现27个bug,本轮修复HIGH级别4个:

1. PhaseMachine wildcard计数用Core.MahjongTile.IsWildcard(静态)→
   不检查配置的红中(35)→_wildcards.CountWildcards(实例)

2. 番型名不匹配:引擎生成 对对胡/暗七对,但DSL定义
   碰碰胡/碰碰和/七对→FanName()动态匹配_fanConfig

3. 十三幺/七对/全不靠/一色双龙会不识别自身番型→
   CheckWin各路径返回前注入番型名+IdentifyFans追加

4. 258将: 七对路径缺检查+IsValid258Pair OR→AND逻辑
   (一张癞子+非258牌应拒绝,不是通过)

此前已修:chi越权(d95eab8)+花牌计分+BEFORE_GAME_START(9b9e4c3)
剩余17个MED/LOW→下一轮评估
This commit is contained in:
xiaoou
2026-07-04 20:32:39 +08:00
parent 9b9e4c310b
commit d5973fd2bc
2 changed files with 51 additions and 19 deletions

View File

@ -83,7 +83,7 @@ public class MahjongPhaseMachine
actions.Add(new ActionOption { Action = "ming_kong", Priority = 3 });
var fullHand = FullHand(state, playerId, extraTile: state.LastDiscard.Value);
int wildInHand = fullHand.Count(Core.MahjongTile.IsWildcard);
int wildInHand = _wildcards.CountWildcards(fullHand);
var result = _solver.CheckWin(fullHand,
wildcardCount: wildInHand, require258Pair: _require258);
if (result != null && result.IsWin)