# frozen_string_literal: true

require "bcdice/dice_table/range_table"

module BCDice
  module GameSystem
    class FilledWith
      # ナンバーワンノーマルくじ表（GURPS-FW版）
      #
      # 別の表に飛ぶ場合は、遅延評価のためにlambdaでジャンプ先の表を括る。
      LOT_NORMAL_TABLES = {
        1 => DiceTable::RangeTable.new(
          "ナンバーワンノーマルくじ（phase 1）",
          "1D6",
          [
            [1..3, "イレブンチキン"],
            [4..5, lambda { LOT_NORMAL_TABLES[2] }],
            [6, lambda { LOT_NORMAL_TABLES[3] }],
          ]
        ).freeze,

        2 => DiceTable::RangeTable.new(
          "ナンバーワンノーマルくじ（phase 2）",
          "1D6",
          [
            [1, "バロールたわし"],
            [2, "イグニスジッポ"],
            [3, "ヤコ仮面or梟の文鎮(選択可)"],
            [4, "ナレッジのハンモックorジンジャビースト"],
            [5..6, lambda { LOT_NORMAL_TABLES[3] }],
          ]
        ).freeze,

        3 => DiceTable::RangeTable.new(
          "ナンバーワンノーマルくじ（phase 3）",
          "1D6",
          [
            [1, "特性HPポーション"],
            [2, "特性MPポーション"],
            [3, "黒い甲冑"],
            [4, "天体望遠鏡"],
            [5, "金獅子の剥製"],
            [6, lambda { LOT_NORMAL_TABLES[4] }],
          ]
        ).freeze,

        4 => DiceTable::RangeTable.new(
          "ナンバーワンノーマルくじ（phase 4）",
          "1D6",
          [
            [1, "特性スタミナポーション"],
            [2, "戦乙女の兜"],
            [3, "フェンリルの首輪"],
            [4, "フェニックスカーペット"],
            [5, "動くアダマンゴーレム"],
            [6, lambda { LOT_NORMAL_TABLES[5] }],
          ]
        ).freeze,

        5 => DiceTable::RangeTable.new(
          "ナンバーワンノーマルくじ（phase 5）",
          "1D6",
          [
            [1, "キャンディークッション"],
            [2, "屑鉄の金床"],
            [3, "薪割り王の斧"],
            [4, "ロジエの水差し"],
            [5, "箱舟の模型"],
            [6, lambda { LOT_PREMIUM_TABLES[5] }],
          ]
        ).freeze,
      }.freeze

      # ナンバーワンプレミアムくじ表（GURPS-FW版）
      #
      # 別の表に飛ぶ場合は、遅延評価のためにlambdaでジャンプ先の表を括る。
      LOT_PREMIUM_TABLES = {
        1 => DiceTable::RangeTable.new(
          "ナンバーワンプレミアムくじ（phase 1）",
          "1D6",
          [
            [1..3, "プレミアムチキン"],
            [4, lambda { LOT_NORMAL_TABLES[3] }],
            [5..6, lambda { LOT_PREMIUM_TABLES[2] }],
          ]
        ).freeze,

        2 => DiceTable::RangeTable.new(
          "ナンバーワンプレミアムくじ（phase 2）",
          "1D6",
          [
            [1, "親衛隊バッジ"],
            [2, "ハタモトチャブダイ"],
            [3, "星のコンパス"],
            [4, "白銀の甲冑"],
            [5, lambda { LOT_NORMAL_TABLES[4] }],
            [6, lambda { LOT_PREMIUM_TABLES[3] }],
          ]
        ).freeze,

        3 => DiceTable::RangeTable.new(
          "ナンバーワンプレミアムくじ（phase 3）",
          "1D6",
          [
            [1, "特性クイックHPポーション"],
            [2, "特性クイックMPポーション"],
            [3, "特製クイックスタミナポーション"],
            [4, "火龍のフィギュアor氷龍のフィギュア(選択可)"],
            [5, "ヒメショーグンドレス"],
            [6, lambda { LOT_PREMIUM_TABLES[4] }],
          ]
        ).freeze,

        4 => DiceTable::RangeTable.new(
          "ナンバーワンプレミアムくじ（phase 4）",
          "1D6",
          [
            [1, "クイックユグドラポーション"],
            [2, "銀河龍のフィギュア/ドラゴン"],
            [3, "銀河龍のフィギュア/魔族"],
            [4, "魔族チェスセット"],
            [5, "イグニスコンロ"],
            [6, lambda { LOT_PREMIUM_TABLES[5] }],
          ]
        ).freeze,

        5 => DiceTable::RangeTable.new(
          "ナンバーワンプレミアムくじ（phase 5）",
          "1D6",
          [
            [1, "グレヴディバリウス"],
            [2, "天使の望遠鏡orデスの目覚まし時計(選択可)"],
            [3, "世界樹の蔦"],
            [4, "死神の飾りドレス"],
            [5, "ザバーニヤ等身大フィギュア"],
            [6, lambda { LOT_PREMIUM_TABLES[6] }],
          ]
        ).freeze,

        6 => DiceTable::RangeTable.new(
          "ナンバーワンプレミアムくじ（phase 6）",
          "1D6",
          [
            [1, "イレブンチキン"],
            [2, "イレブンチキン(2ピース)"],
            [3, "イレブンチキン(3ピース)"],
            [4, "イレブンチキン(6ピース)"],
            [5, "イレブンチキン(12ピース)"],
            [6, "wish star"],
          ]
        ).freeze,
      }.freeze
    end
  end
end
