{
  "gameId": "69241047772e94def7b8e064",
  "name": "Mahjong Ways",
  "version": "1.0.0",
  "description": "Classic Mahjong Ways slot with 4x5 grid, tumble mechanics, golden symbol transformations, and multiplier escalation",
  "config": {
    "grid": {
      "type": "rectangular",
      "rows": 4,
      "cols": 5
    },

    "symbols": [
      { "id": 0,  "code": "NU", "name": "Null",       "category": "system",  "description": "Empty position" },
      { "id": 1,  "code": "H1", "name": "High 1",     "category": "premium", "description": "Highest paying symbol" },
      { "id": 2,  "code": "H2", "name": "High 2",     "category": "premium", "description": "Second highest paying symbol" },
      { "id": 3,  "code": "H3", "name": "High 3",     "category": "premium", "description": "Third highest paying symbol" },
      { "id": 4,  "code": "H4", "name": "High 4",     "category": "premium", "description": "Fourth highest paying symbol" },
      { "id": 11, "code": "N1", "name": "Normal 1",   "category": "regular",  "description": "Low-value symbol" },
      { "id": 12, "code": "N2", "name": "Normal 2",   "category": "regular",  "description": "Low-value symbol" },
      { "id": 13, "code": "N3", "name": "Normal 3",   "category": "regular",  "description": "Low-value symbol" },
      { "id": 14, "code": "N4", "name": "Normal 4",   "category": "regular",  "description": "Low-value symbol" },
      { "id": 31, "code": "SC", "name": "Scatter",    "category": "scatter",  "description": "Triggers free spins when 3+ appear" },
      { "id": 50, "code": "WD",  "name": "Wild",           "category": "wild",    "description": "Substitutes for any symbol" },
      { "id": 55, "code": "H1W", "name": "Golden High 1",  "category": "golden",  "description": "Golden version of H1 — sent by backend when frameInfo=2 (H1 id 1 + 54). Acts as Wild during tumble." },
      { "id": 56, "code": "H2W", "name": "Golden High 2",  "category": "golden",  "description": "Golden version of H2 — sent by backend when frameInfo=2 (H2 id 2 + 54). Acts as Wild during tumble." },
      { "id": 57, "code": "H3W", "name": "Golden High 3",  "category": "golden",  "description": "Golden version of H3 — sent by backend when frameInfo=2 (H3 id 3 + 54). Acts as Wild during tumble." },
      { "id": 58, "code": "H4W", "name": "Golden High 4",  "category": "golden",  "description": "Golden version of H4 — sent by backend when frameInfo=2 (H4 id 4 + 54). Acts as Wild during tumble." },
      { "id": 65, "code": "N1W", "name": "Golden Normal 1","category": "golden",  "description": "Golden version of N1 — sent by backend when frameInfo=2 (N1 id 11 + 54). Acts as Wild during tumble." },
      { "id": 66, "code": "N2W", "name": "Golden Normal 2","category": "golden",  "description": "Golden version of N2 — sent by backend when frameInfo=2 (N2 id 12 + 54). Acts as Wild during tumble." },
      { "id": 67, "code": "N3W", "name": "Golden Normal 3","category": "golden",  "description": "Golden version of N3 — sent by backend when frameInfo=2 (N3 id 13 + 54). Acts as Wild during tumble." },
      { "id": 68, "code": "N4W", "name": "Golden Normal 4","category": "golden",  "description": "Golden version of N4 — sent by backend when frameInfo=2 (N4 id 14 + 54). Acts as Wild during tumble." }
    ],

    "payTable": {
      "numOfKindTiers": [
        { "label": "3 of a kind", "count": 3 },
        { "label": "4 of a kind", "count": 4 },
        { "label": "5 of a kind", "count": 5 }
      ],
      "regular": [
        { "symbolId": 1,  "code": "H1", "payouts": [15, 60, 100] },
        { "symbolId": 2,  "code": "H2", "payouts": [10, 40, 80] },
        { "symbolId": 3,  "code": "H3", "payouts": [8, 20, 60] },
        { "symbolId": 4,  "code": "H4", "payouts": [6, 15, 40] },
        { "symbolId": 11, "code": "N1", "payouts": [4, 10, 20] },
        { "symbolId": 12, "code": "N2", "payouts": [4, 10, 20] },
        { "symbolId": 13, "code": "N3", "payouts": [2, 5, 10] },
        { "symbolId": 14, "code": "N4", "payouts": [2, 5, 10] }
      ],
      "scatter": {
        "symbolId": 31,
        "code": "SC",
        "note": "Does not pay directly, triggers free spins",
        "triggerCount": 3,
        "baseFreeSpins": 12,
        "additionalPerScatter": 2
      }
    },

    "rules": {
      "minNumOfKind": 3,
      "maxNumOfKind": 5,
      "triggerCount": 3,
      "baseFreeSpins": 12,
      "freeSpinsFormula": "12 + 2 * (scatterCount - 3)",
      "retrigger": true,
      "retriggerDescription": "3+ scatters during free game adds more free spins",
      "maxWin": 250000,
      "maxWinDescription": "Game caps at 250,000 (25000 * 10x multiplier)"
    },

    "options": {
      "totalBet": [10, 600]
    },

    "states": [
      { "id": 0, "name": "BaseGame", "label": "Base Game" },
      { "id": 1, "name": "FreeGame", "label": "Free Game" }
    ],

    "winTypes": [
      { "id": 0, "name": "NoWin",     "label": "No Win" },
      { "id": 1, "name": "NormalWin", "label": "Normal Win" },
      { "id": 2, "name": "FreeGame",  "label": "Free Game Trigger" },
      { "id": 3, "name": "MaxWin",    "label": "Max Win Reached" }
    ],

    "mechanics": {
      "winType": "ways-pay",
      "winDescription": "3+ matching symbols on consecutive columns from left to right (Mahjong Ways mechanic)",
      "tumble": true,
      "tumbleDescription": "Winning symbols removed, remaining drop down, new symbols cascade from top",
      "wild": true,
      "wildDescription": "Wild (WD) substitutes for any regular symbol in winning combinations",
      "goldenSymbols": true,
      "goldenSymbolsDescription": "Golden symbols (frameInfo=2) convert to Wild during tumble instead of being eliminated",
      "escalatingMultiplier": true,
      "escalatingMultiplierDescription": "Multiplier increases with each consecutive win (combo). Mode 0: 1x→2x→3x→5x. Mode 1: 2x→4x→6x→10x",
      "comboCounter": true,
      "comboCounterDescription": "Tracks consecutive winning tumbles - resets on non-win",
      "buyFeature": true,
      "buyFeatureDescription": "Directly trigger free game mode without scatter (same bet cost)"
    },

    "modes": [
      {
        "id": 0,
        "name": "Normal",
        "description": "Standard play mode",
        "isBuyFeature": false,
        "totalBet": 10,
        "multipliers": [1, 2, 3, 5]
      },
      {
        "id": 1,
        "name": "Buy Feature",
        "description": "Directly enter free game mode",
        "isBuyFeature": true,
        "totalBet": 600,
        "multipliers": [2, 4, 6, 10]
      }
    ]
  }
}
