diff --git a/RuleEngine/Dsl/DslLoader.cs b/RuleEngine/Dsl/DslLoader.cs index ba24688..3591c87 100644 --- a/RuleEngine/Dsl/DslLoader.cs +++ b/RuleEngine/Dsl/DslLoader.cs @@ -196,10 +196,11 @@ public class CapabilityRegistry // 冲关/德国: 仅南昌麻将骰子翻牌定精相关 if (rules.WildcardRules?.Type == "random") - { warnings.Add("骰子翻牌定精: 冲关(精数×2^N)/德国(无精胡)计分规则引擎未实现"); - warnings.Add("骰子翻牌定精: 引擎仅支持标准面子(顺子/刻子/对子)→特殊风牌组合不支持"); - } + + // Wildcard meld mode: 引擎仅支持standard(顺子/刻子/对子) + if (rules.WildcardRules?.MeldMode == "any") + warnings.Add("wildcard_rules.meld_mode=any 引擎未实现→仅支持standard(顺子/刻子/对子)"); // === 引擎功能边界警告: DSL可配置但引擎不支持或部分支持 === @@ -304,6 +305,7 @@ public class WildcardConfig { public string Type { get; set; } = ""; public string Behavior { get; set; } = ""; + public string MeldMode { get; set; } = "standard"; // standard=仅顺子/刻子/对子, any=任意3张可配面子(南昌麻将) public int WildcardEncoding { get; set; } = 50; public int RandomCount { get; set; } = 2; // random type: how many next-tiles are 精 (1=正精 only, 2=正精+副精) public List? Tiles { get; set; } diff --git a/dsl-examples/nanchang.yaml b/dsl-examples/nanchang.yaml index 18e80e5..4846c6a 100644 --- a/dsl-examples/nanchang.yaml +++ b/dsl-examples/nanchang.yaml @@ -27,6 +27,7 @@ deal: # 翻到X,则X+1为正精,X+2为副精。字牌按序循环。 wildcard_rules: type: random + meld_mode: any random_count: 2 wildcard_encoding: 50 behavior: substitute