fix: 番型互斥从未应用 + FanValue兜底乱给分 + 白名单过滤

Root cause:
1. ApplyFanExclusions定义但从未被调用 → 互斥(清一色⊃缺一门)形同虚设
2. FanValue中 _=>1 兜底 → '缺一门''平胡'等不在DSL的番型也被+1分
3. IdentifyFans返回所有结构模式 → 与DSL配置不一致

修复:
- CheckWin五处IdentifyFans调用后加ApplyFanExclusions
- FanValue去掉_=>1,改为只认DSL配置+硬编码知名番型
- IdentifyFans末尾白名单过滤:只返回DSL或知名番型
- PhaseMachine.GetFanValue同步更新
- ScoreEngine: 不在DSL的番型→0分
This commit is contained in:
xiaoou
2026-07-04 18:12:06 +08:00
parent 87df914c8d
commit a06f40bd2d
3 changed files with 19 additions and 16 deletions

View File

@ -84,15 +84,17 @@ public class MahjongScoreEngine
{
if (_fanConfig.TryGetValue(fan, out var def))
return def.BaseFan;
// Fallback for fan names not in config
// Hardcoded values for well-known fans not in every DSL
return fan switch
{
"清一色" => 4,
"清一色" => 24,
"混一色" => 6,
"对对胡" => 2,
"暗七对" => 4,
"暗七对" => 8,
"七对" => 8,
"带幺九" => 2,
"十三幺" => 88,
_ => 1
_ => 0
};
}
}