feat: --check系统性覆盖所有DSL字段→引擎消费验证
新增4项完整性检查: 1. deck.generator≠mahjong→仅支持mahjong 2. flower_rules.replace_tiles≠BEFORE_GAME_START→部分支持 3. win condition can_win*_and_fan_ge_8→引擎用硬编码替代 4. scoring.pre_hooks condition→引擎不评估 --check现在覆盖37类DSL字段验证: 番型(6) + 精牌(4) + 阶段(10) + 计分(6) + 花牌(3) + 合规(8) = 37项完整审计 效果: 南昌4/武汉2/国标2/血战4/广东1条功能边界警告
This commit is contained in:
@ -236,6 +236,25 @@ public class CapabilityRegistry
|
||||
if (f.Condition != "hand_contains_wildcard")
|
||||
warnings.Add($"番型「{f.Name}」condition={f.Condition}→引擎仅支持hand_contains_wildcard");
|
||||
|
||||
// Deck generator
|
||||
if (rules.Deck.Generator != "mahjong")
|
||||
warnings.Add($"deck.generator={rules.Deck.Generator}→引擎仅支持mahjong");
|
||||
|
||||
// Flower replace_tiles: warning about partial support
|
||||
if (rules.FlowerRules != null && !string.IsNullOrEmpty(rules.FlowerRules.ReplaceTiles)
|
||||
&& rules.FlowerRules.ReplaceTiles != "BEFORE_GAME_START")
|
||||
warnings.Add($"flower_rules.replace_tiles={rules.FlowerRules.ReplaceTiles}→仅BEFORE_GAME_START完全支持");
|
||||
|
||||
// Condition strings: can_win*_and_fan_ge_8 is known but fanSum=0 in CheckCondition
|
||||
if (rules.Phases.Any(p =>
|
||||
(p.SubPhases?.SelfAction?.Options?.Any(o => o.Condition == "can_win_tumo_and_fan_ge_8") == true)
|
||||
|| (p.SubPhases?.OthersReaction?.Options?.Any(o => o.Condition == "can_win_and_fan_ge_8") == true)))
|
||||
warnings.Add("win condition can_win*_and_fan_ge_8 引擎用硬编码检查替代→DSL condition不生效");
|
||||
|
||||
// Scoring pre_hooks: conditions not evaluated
|
||||
if (rules.Scoring.PreHooks.Any(h => !string.IsNullOrEmpty(h.Condition)))
|
||||
warnings.Add("scoring.pre_hooks 的 condition 字段引擎不评估→条件逻辑为硬编码");
|
||||
|
||||
return warnings;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user