# frozen_string_literal: true

module BCDice
  module GameSystem
    class MeikyuKingdom
      # 名前表
      def mk_name_table
        debug("mk_name_table begin")
        output = "1"
        # 名前表
        name_n = @randomizer.roll_once(6)
        debug("name_n", name_n)

        d1 = @randomizer.roll_d66(D66SortType::ASC)
        d2 = @randomizer.roll_d66(D66SortType::ASC)
        debug("d1, d2", d1, d2)

        debug("name_n", name_n)
        if name_n <= 1
          # 名前表A＋二つ名表A
          output = mk_nick_a_table(mk_name_a_table(d1), d2)
        elsif name_n <= 2
          # 名前表B＋二つ名表A
          output = mk_nick_a_table(mk_name_b_table(d1), d2)
        elsif name_n <= 3
          # 名前表エキゾチック＋二つ名表A
          output = mk_nick_a_table(mk_name_ex_table(d1), d2)
        elsif name_n <= 4
          # 名前表A＋二つ名表B
          output = mk_nick_b_table(mk_name_a_table(d1), d2)
        elsif name_n <= 5
          # 名前表B＋二つ名表B
          output = mk_nick_b_table(mk_name_b_table(d1), d2)
        else
          # 名前表ファンタジー＋二つ名表B
          output = mk_nick_b_table(mk_name_fa_table(d1), d2)
        end

        dice = "#{name_n},#{d1},#{d2}"

        return output, dice
      end

      # 二つ名表A(D66)
      def mk_nick_a_table(output, num)
        table = [
          [11, "“災い転じて福となす”"],
          [12, "“七転び八起きの”"],
          [13, "“冗談にも程がある”"],
          [14, "“虎の尾を踏む”"],
          [15, "“石橋を叩いて渡る”"],
          [16, "“一を聴いて十を知る”"],
          [22, "“喉から手が出る”"],
          [23, "“据え膳食わぬは男の恥の”"],
          [24, "“天につば吐く”"],
          [25, "“風に柳の”"],
          [26, "“目に入れても痛くない”"],
          [33, "“とかく浮世は色と酒の”"],
          [34, "“当たるも八卦、当たらぬも八卦の”"],
          [35, "“泣く子も黙る”"],
          [36, "“天上天下唯我独尊”"],
          [44, "“虫も殺さぬ”"],
          [45, "“花も恥じらう”"],
          [46, "“触らぬ神に祟り無しの”"],
          [55, "“両手に花の”"],
          [56, "“（ゲーム会場の地名）でも一、二を争う”"],
        ]
        if num < 66
          output = get_table_by_number(num, table) + output
        else
          output = "#{output}#{@randomizer.roll_once(6)}世"
        end

        return output
      end

      # 二つ名表B(D66)
      def mk_nick_b_table(output, num)
        table = [
          [11, "“身も蓋もない”"],
          [12, "“七人の敵がいる”"],
          [13, "“ドラゴンも裸足で逃げ出す”"],
          [14, "“われらが”"],
          [15, "“機会攻撃を誘発する”"],
          [16, "“佳人薄命”"],
          [22, "“すねに傷持つ”"],
          [23, "“湯上りは親でも惚れる”"],
          [24, "“叶わぬ時の神頼みの”"],
          [25, "“果報は寝て待つ”"],
          [26, "“清濁併せ呑む”"],
          [33, "“かゆいところに手が届く”"],
          [34, "“酒池肉林の”"],
          [35, "“蛇の道は蛇の”"],
          [36, "“口から先に生まれた”"],
          [44, "“柔よく剛を制す”"],
          [45, "“死人に口なしの”"],
          [46, "“噂をすれば”"],
          [55, "“ミスター／ミス”"],
          [56, "“（好きな名前表）の子”"],
          [66, "“（好きな単語表）の父／母”"],
        ]
        return get_table_by_number(num, table) + output
      end

      # 名前表A(D66)
      def mk_name_a_table(num)
        table = [
          [11, "オレンジ／ジャスミン"],
          [12, "ホオズキ／アサガオ"],
          [13, "クローバー／ダチュラ"],
          [14, "ダフニ／キノコ"],
          [15, "グラナーダ／プリムローズ"],
          [16, "ラディッシュ／マリーゴールド"],
          [22, "サイプレス／マグノリア"],
          [23, "バンブー／オリーブ"],
          [24, "クラウド／クリマ"],
          [25, "タオ／スノウ"],
          [26, "アヴァランチ／エクレール"],
          [33, "ビバシータ／メトロノーム"],
          [34, "カノン／ファゴット"],
          [35, "オーボエ／アルモニカ"],
          [36, "チューバ／オルガノ"],
          [44, "ナン／クッキー"],
          [45, "ウイロウ／カシュカシュ"],
          [46, "スコーン／クスクス"],
          [55, "フラスコ／クリップ"],
          [56, "クラパドーラ／クレヨン"],
          [66, "ソープ／ブルーム"],
        ]

        return get_table_by_number(num, table)
      end

      # 名前表B(D66)
      def mk_name_b_table(num)
        table = [
          [11, "エイジ／ウェンズデイ"],
          [12, "ジョルノ／ノエル"],
          [13, "タスク／マニャーナ"],
          [14, "ウィンター／ジュノー"],
          [15, "ハイラン／ブランカ"],
          [16, "ウォルナット／ルージュ"],
          [22, "グレイ／スカーレット"],
          [23, "シュバルツ／モエギ"],
          [24, "スロット／キリエ"],
          [25, "ジョーカー／ダイス"],
          [26, "ジグソウ／ドミノ"],
          [33, "バックギャモン／マーブル"],
          [34, "シーガロ／ココア"],
          [35, "スピーチカ／オレンジペコー"],
          [36, "ジッポ／ショコラ"],
          [44, "ナインピンズ／ルチャ"],
          [45, "デカスロン／ラクロス"],
          [46, "カバディ／ピンポン"],
          [55, "ポンド／ヴェルベット"],
          [56, "ルーブル／コットン"],
          [66, "シリング／シルク"],
        ]

        return get_table_by_number(num, table)
      end

      # 名前表エキゾチック(D66)
      def mk_name_ex_table(num)
        table = [
          [11, "モアイ／スイショウドクロ"],
          [12, "チュパカブラ／ムベンベ"],
          [13, "カンフー／インヤン"],
          [14, "ブシドー／ミヤコ"],
          [15, "チャンピオン／バービー"],
          [16, "ウパニシャッド／ゾルゲ"],
          [22, "デスマーチ／インテル"],
          [23, "ゴッホ／ヴィクトリア"],
          [24, "ゾンビ／オニャンコポン"],
          [25, "ゲロッパ／カルメン"],
          [26, "オーバーキル／サシミ"],
          [33, "ブッチャー／デヴィ"],
          [34, "ブロンソン／マドンナ"],
          [35, "ガイギャックス／エロイカ"],
          [36, "好きな星の名前（スピカ,オリオン）"],
          [44, "好きな武器の名前（エペ,フランベルジュ）"],
          [45, "好きな動物の名前（イタチ,パグ）"],
          [46, "好きな鉱物の名前（ルビィ,ヒスイ）"],
          [55, "好きな言葉＋ドラゴン"],
          [56, "好きな単語表で決定する"],
          [66, "プレイヤーと同じ名前"],
        ]
        return get_table_by_number(num, table)
      end

      # 名前表ファンタジー(D66)
      def mk_name_fa_table(num)
        table = [
          [11, "アダム／イヴ"],
          [12, "ジャック／モモ"],
          [13, "オズ／アリス"],
          [14, "コナン／レダ"],
          [15, "アーサー／イシス"],
          [16, "エルリック／グローリアーナ"],
          [22, "ギルガメッシュ／アマテラス"],
          [23, "マハラジャ／クリシュナ"],
          [24, "カゲオトコ／クロトカゲ"],
          [25, "オルフェウス／ヴィーナス"],
          [26, "ソロモン／サロメ"],
          [33, "ワタリガラス／ディードリット"],
          [34, "ニャルラトホテプ／バースト"],
          [35, "アンナタール／フォルトゥナ"],
          [36, "ザナドゥ／ヨミ"],
          [44, "アルビオン／ラピュタ"],
          [45, "ゼンダ／ゴーメンガースト"],
          [46, "インスマウス／イース"],
          [55, "フウヌイム／ヤプー"],
          [56, "ザンス／ナルニア"],
          [66, "カレワラ／イーハトーブ"],
        ]

        return get_table_by_number(num, table)
      end
    end
  end
end

# puts BCDice::GameSystem::MeikyuKingdom.new.methods.sort

# exit 1
