bcdice/BCDice

View on GitHub
lib/bcdice/game_system/meikyu_kingdom/name_tables.rb

Summary

Maintainability
A
1 hr
Test Coverage
A
100%
# 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