南昌麻将无清一色/混一色/带幺九概念,只保留: 对对胡(碰碰胡)/暗七对(七对)/杠上开花/海底捞月/抢杠胡/天胡/地胡/癞子胡/鸡胡 --check: 6→5条警告(去掉base_fan=0误报)
101 lines
2.6 KiB
YAML
101 lines
2.6 KiB
YAML
game:
|
||
name: 南昌麻将
|
||
type: mahjong
|
||
engine_type: mahjong
|
||
players: { min: 4, max: 4 }
|
||
|
||
requires:
|
||
- deck.generator_mahjong
|
||
- meldsolver.standard_win
|
||
- meldsolver.seven_pairs
|
||
- meldsolver.wildcard
|
||
- meldsolver.all_orphans
|
||
- phase.mahjong_turn
|
||
- phase.priority_arbitration
|
||
- scoring.fan_exclusion
|
||
|
||
deck:
|
||
generator: mahjong
|
||
include_honors: true
|
||
include_flowers: false
|
||
total: 136
|
||
|
||
deal:
|
||
cards_per_player: 13
|
||
dealer_extra: 1
|
||
|
||
# 南昌麻将的精(癞子)系统:骰子翻牌定精
|
||
# 翻到X,则X+1为正精,X+2为副精。字牌按序循环。
|
||
wildcard_rules:
|
||
type: random
|
||
meld_mode: any
|
||
random_count: 2
|
||
wildcard_encoding: 50
|
||
behavior: substitute
|
||
fan_calculation_policy: optimal
|
||
scoring:
|
||
per_wildcard_in_win: 2
|
||
independent_bonus: true
|
||
|
||
fan_types:
|
||
# 南昌麻将基础番型(无清一色/混一色/带幺九——这些不是南昌规则)
|
||
- { name: 对对胡, base_fan: 2 } # 碰碰胡
|
||
- { name: 暗七对, base_fan: 4 } # 七对
|
||
# 事件番型
|
||
- { name: 杠上开花, base_fan: 1, excludes: [海底捞月] }
|
||
- { name: 海底捞月, base_fan: 1 }
|
||
- { name: 抢杠胡, base_fan: 1 }
|
||
- { name: 天胡, base_fan: 10 }
|
||
- { name: 地胡, base_fan: 5 }
|
||
# 癞子相关
|
||
- { name: 癞子胡, base_fan: 1, condition: hand_contains_wildcard }
|
||
# 兜底
|
||
- { name: 鸡胡, base_fan: 1 }
|
||
|
||
fan_stacking: add
|
||
max_fan: 999
|
||
|
||
phases:
|
||
- name: deal
|
||
type: auto
|
||
action: deal_cards
|
||
next: play
|
||
|
||
- name: play
|
||
type: mahjong_turn
|
||
turn_order: counter_clockwise
|
||
sub_phases:
|
||
draw:
|
||
type: auto
|
||
action: draw_card
|
||
on_empty_deck: exhausted
|
||
self_action:
|
||
options:
|
||
- { action: discard }
|
||
- { action: an_kong }
|
||
- { action: bu_kong, condition: has_punged_pair }
|
||
- { action: win, condition: can_win_tumo }
|
||
others_reaction:
|
||
options:
|
||
- { action: chi, priority: 1, condition: can_chi }
|
||
- { action: pung, priority: 2, condition: has_two_same }
|
||
- { action: ming_kong, priority: 3, condition: has_three_same }
|
||
- { action: win, priority: 4, condition: can_win }
|
||
- { action: pass, priority: 0 }
|
||
priority_policy: highest_wins
|
||
on_win: game_over
|
||
end_conditions:
|
||
- { type: player_wins, action: settle }
|
||
- { type: deck_exhausted, action: draw_game }
|
||
|
||
- name: settle
|
||
type: auto
|
||
action: calculate_scores
|
||
next: null
|
||
|
||
scoring:
|
||
mode: fan_table
|
||
max_cap: 999
|
||
self_draw_multiplier: 1 # 自摸每家付1倍
|
||
discard_win_multiplier: 1 # 放炮付1倍(南昌麻将放炮不翻倍)
|
||
dealer_multiplier: 2 # 庄家输赢×2 |