flowchart TD
  Start([玩家开始一局抽奖]) --> Dir[选择方向：顺时针 或 逆时针]
  Dir --> Ante[选择底注倍数]
  Ante --> Type{本局是否使用免费抽奖券?}

  Type -->|是| Free[免费局]
  Type -->|否且平台币足够| Paid[付费局：扣除底注对应平台币]

  Free --> PoolKill[按「杀分奖池」的 T1～T5 档位概率抽签]
  Paid --> KillCheck{彩金池已开启杀分<br/>且彩金池累计盈利 ≥ 安全线?}
  KillCheck -->|是| PoolKill
  KillCheck -->|否| PlayerW[按该玩家在「玩家管理」<br/>配置的 T1～T5 档位概率抽签]

  PoolKill --> DrawTier[随机抽出档位 T1～T5]
  PlayerW --> DrawTier

  DrawTier --> PickRow[在「色子奖励权重」中<br/>取该档位 + 本局方向的所有行<br/>按行权重随机一条]
  PickRow --> Got[得到：色子点数、结算金额、所属档位、落点格位]

  Got --> KillMode{本局是否走杀分档位概率?}
  KillMode -->|是| NoLeo[不发放豹子大奖<br/>且不会抽到仅能豹子的点数 5、30]
  KillMode -->|否| NormalPath[按普通规则继续]
  NoLeo --> DiceShow[生成五颗骰子并结算]

  NormalPath --> Leopard{色子点数是否为<br/>5 / 10 / 15 / 20 / 25 / 30?}
  Leopard -->|否| NormalWin[五颗骰子点数和 = 该点数<br/>奖金 = 结算金额 × 底注]
  Leopard -->|是| LeoRule{点数?}
  LeoRule -->|5 或 30| MustBig[必定豹子大奖]
  LeoRule -->|10 / 15 / 20 / 25| BigRate[按「奖励配置」页签「大奖权重」<br/>该点数权重决定真豹子或普通展示]
  MustBig --> BigPay[豹子奖金 = 大奖结算金额 × 底注<br/>本局不再发该点数的普通奖]
  BigRate -->|命中豹子| BigPay
  BigRate -->|未中豹子| NonLeo[五颗骰子为非豹子组合<br/>奖金 = 结算金额 × 底注]

  NormalWin --> T5Check
  NonLeo --> T5Check
  BigPay --> EndBig([本局结束：以豹子大奖为准])
  DiceShow --> T5Check{档位为 T5 再来一次?}
  T5Check -->|是| FreeTicket[赠送 1 次免费抽奖券<br/>下次免费局须相同底注]
  T5Check -->|否| EndNormal([本局结束：以普通奖或惩罚为准])
  FreeTicket --> EndNormal

  style Start fill:#e8f4fc
  style EndNormal fill:#e8fce8
  style EndBig fill:#fff3e0
