{
  "game": "tome-of-life",
  "displayName": "Crystal Codex",
  "rtpPercent": 99.0,
  "rtpE8": 99000000,
  "engine": "uint32",
  "biasClass": "modulo",
  "params": [
    {
      "name": "lines",
      "desc": "1–20 paylines"
    },
    {
      "name": "bonus_buy",
      "desc": "bool (alt)"
    }
  ],
  "id": "tome-of-life",
  "name": "Tome of Life",
  "symbols": [
    "nine",
    "ten",
    "jack",
    "queen",
    "king",
    "ace",
    "one",
    "two",
    "three",
    "four",
    "five",
    "wild",
    "scatter"
  ],
  "weights": [
    13137,
    12693,
    12255,
    11380,
    10505,
    8754,
    3939,
    3939,
    5252,
    6127,
    6127,
    3142,
    2750
  ],
  "wtotal": 100000,
  "wild": 11,
  "scatter": 12,
  "reels": 5,
  "rows": 3,
  "runPay": {
    "0": {
      "2": 2,
      "3": 5,
      "4": 25,
      "5": 100
    },
    "1": {
      "3": 5,
      "4": 25,
      "5": 100
    },
    "2": {
      "3": 5,
      "4": 25,
      "5": 100
    },
    "3": {
      "3": 5,
      "4": 25,
      "5": 100
    },
    "4": {
      "3": 5,
      "4": 50,
      "5": 100
    },
    "5": {
      "3": 10,
      "4": 50,
      "5": 125
    },
    "6": {
      "2": 2,
      "3": 25,
      "4": 100,
      "5": 750
    },
    "7": {
      "2": 2,
      "3": 25,
      "4": 100,
      "5": 750
    },
    "8": {
      "3": 15,
      "4": 100,
      "5": 400
    },
    "9": {
      "3": 10,
      "4": 75,
      "5": 250
    },
    "10": {
      "3": 10,
      "4": 50,
      "5": 250
    }
  },
  "wildPay": {
    "2": 10,
    "3": 200,
    "4": 2000,
    "5": 10000
  },
  "scatterPay": {
    "2": 2,
    "3": 6,
    "4": 50,
    "5": 500
  },
  "freeSpins": 15,
  "fsMult": 3,
  "fsTrigger": 3,
  "lines": 20,
  "maxWinMult": 0,
  "wildDouble": true,
  "selectableLines": true,
  "fsRetrigger": true,
  "fsCap": 180,
  "fsExemptWild5": true,
  "fsScatterPays": true,
  "bonusBuyMult": 37,
  "paylines": [
    [
      1,
      1,
      1,
      1,
      1
    ],
    [
      0,
      0,
      0,
      0,
      0
    ],
    [
      2,
      2,
      2,
      2,
      2
    ],
    [
      0,
      1,
      2,
      1,
      0
    ],
    [
      2,
      1,
      0,
      1,
      2
    ],
    [
      0,
      0,
      1,
      2,
      2
    ],
    [
      2,
      2,
      1,
      0,
      0
    ],
    [
      1,
      0,
      0,
      0,
      1
    ],
    [
      1,
      2,
      2,
      2,
      1
    ],
    [
      0,
      1,
      1,
      1,
      0
    ],
    [
      2,
      1,
      1,
      1,
      2
    ],
    [
      1,
      0,
      1,
      2,
      1
    ],
    [
      1,
      2,
      1,
      0,
      1
    ],
    [
      0,
      1,
      0,
      1,
      0
    ],
    [
      2,
      1,
      2,
      1,
      2
    ],
    [
      0,
      0,
      1,
      0,
      0
    ],
    [
      2,
      2,
      1,
      2,
      2
    ],
    [
      1,
      1,
      0,
      1,
      1
    ],
    [
      1,
      1,
      2,
      1,
      1
    ],
    [
      0,
      2,
      0,
      2,
      0
    ]
  ],
  "scale": {
    "num": "1",
    "den": "1"
  },
  "note": "cells drawn by weight (reel-major); left-aligned line pays with WILD substitution (wild has its own paytable, substituted combos may double); scatter pays by count; ≥fsTrigger scatters trigger free spins. multiplier_e8 = floor(scale · rel · 1e8) with rel a rational over the active line count."
}
