fix: PhaseMachine硬编码>=8番 → 读DSL win_min_fan

4处修复:
- PhaseMachine构造函数新增 _winMinFan 参数
- GetLegalActions 中 discard win check (line 139): >= 8 → >= _winMinFan
- GetLegalActions 中 self-draw win check (line 165): >= 8 → >= _winMinFan
- CheckCondition 中的 can_win*_and_fan_ge_8 (line 97-98): >= 8 → >= _winMinFan
- MahjongRoom 传参: winMinFan=_rules.WinMinFan

效果: 国标胡牌率 30%→13% (baseFan<8的低番手牌被正确拦截)
58 tests pass, 5 variants 0 errors
This commit is contained in:
xiaoou
2026-07-04 21:46:58 +08:00
parent 17a0d054ff
commit 4e9f06d5cd
2 changed files with 10 additions and 6 deletions

View File

@ -40,7 +40,8 @@ public class MahjongRoom
_phaseMachine = new MahjongPhaseMachine(phases, _solver, wildcardCount: wc, require258: r258,
fanConfig: fanConfig,
jiHuSelfDrawOnly: _rules.WinRule?.JiHuSelfDrawOnly ?? false,
wildcards: State.Wildcards);
wildcards: State.Wildcards,
winMinFan: _rules.WinMinFan);
_scoreEngine = new MahjongScoreEngine(new ScoringConfig
{