fix: on_win=game_over不再误报(引擎默认行为一致)

所有YAML的on_win=game_over与引擎非血战默认行为一致,
只当on_win≠game_over时才报告警告。

效果: 南昌5→4,武汉2→1,国标2→1,广东1→0条警告
This commit is contained in:
xiaoou
2026-07-05 01:54:51 +08:00
parent 196786f1a7
commit deadd38313

View File

@ -214,8 +214,10 @@ public class CapabilityRegistry
// 未消费字段 // 未消费字段
if (rules.Phases.Any(p => !string.IsNullOrEmpty(p.OnEliminate))) if (rules.Phases.Any(p => !string.IsNullOrEmpty(p.OnEliminate)))
warnings.Add("phase.on_eliminate 已配置但引擎未消费→淘汰逻辑为基本实现"); warnings.Add("phase.on_eliminate 已配置但引擎未消费→淘汰逻辑为基本实现");
if (rules.Phases.Any(p => !string.IsNullOrEmpty(p.SubPhases?.OthersReaction?.OnWin))) foreach (var pp in rules.Phases)
warnings.Add("phase.on_win 已配置但引擎未消费→胡牌终止为默认行为"); if (!string.IsNullOrEmpty(pp.SubPhases?.OthersReaction?.OnWin)
&& pp.SubPhases.OthersReaction.OnWin != "game_over")
warnings.Add($"phase.on_win={pp.SubPhases.OthersReaction.OnWin}→引擎仅支持 game_over");
if (rules.Phases.Any(p => p.FuFlag != null)) if (rules.Phases.Any(p => p.FuFlag != null))
warnings.Add("phase.fu_flag 已配置但引擎用硬编码过水→DSL值不生效"); warnings.Add("phase.fu_flag 已配置但引擎用硬编码过水→DSL值不生效");