Class: BCDice::GameSystem::FilledWith

Inherits:
Base
  • Object
show all
Defined in:
lib/bcdice/game_system/FilledWith.rb,
lib/bcdice/game_system/filled_with/lot_tables.rb,
lib/bcdice/game_system/filled_with/cook_tables.rb,
lib/bcdice/game_system/filled_with/event_tables.rb,
lib/bcdice/game_system/filled_with/tresure_tables.rb,
lib/bcdice/game_system/filled_with/enemy_data_tables.rb

Defined Under Namespace

Classes: D66Table, Difficulty, EventTable, FW, Row

Constant Summary collapse

ID =

ゲームシステムの識別子

'FilledWith'
NAME =

ゲームシステム名

'フィルトウィズ'
SORT_KEY =

ゲームシステム名の読みがな

'ふいるとういす'
HELP_MESSAGE =

ダイスボットの使い方

<<~MESSAGETEXT
  ・判定 (3FW@x#y<=z or z-3FW@x#y)
   3個の6面ダイスを振る判定。
   @x:xにクリティカル値を入力。省略可。(省略時クリティカル値4)
   #y:yにファンブル値を入力。省略可(省略時ファンブル値17)
   <=z or z-:zに目標値を入力。±の計算に対応。省略可。
  ・【必殺技!】 (HST)
   ホムンクルス特技【必殺技!】表。
  ・マジカルクッキング (COOKx)
   マジカルクッキングのシェフのおすすめコース。
   xにクッキングレベルを入力。(1-8)
  ・ナンバーワンくじ (LOTN or LOTP)
   LOTNでノーマルくじ、LOTPでプレミアムくじ。(GURPS-FW版)
  ----------夢幻の迷宮用----------
  ・共通書式
   a:aに地形(1-6の数字)を入力。省略可。(省略時ランダム決定)
    (1:洞窟 2:遺跡 3:山岳 4:水辺 5:森林 6:墓場)
   d:dに難易度を入力。(E:初級 N:中級 H:上級 L:悪夢 X:伝説)
  ・ランダムイベント表 (RANDda)
  ・ランダムエンカウント表 (RENCda)
  ・エネミーデータ表 (REDde)
   エネミーデータ参照表。
   GMがシークレットダイスで参照するとPLに知られずにエネミーデータを参照可能。
   e:3桁のイベントダイスを入力(D666の結果)。
  ・トラップ表 (TRAPd)
  ・財宝表 (TRSr±x)
   r:rに財宝ランクを入力。
   ±x:xに財宝ランク修正値を入力。省略可。
  ・迷宮追加オプション表(ROPd)
MESSAGETEXT
TABLES =
{
  "HST" => DiceTable::Table.new(
    "【必殺技!】",
    "1D6",
    [
      '〔命中〕判定に出目[1,1,1]でクリティカル。更に致傷力に「SLv×20」のボーナスを得る。',
      '〔命中〕判定と致傷力に「SLv×10」のボーナスを得る。',
      '致傷力に「SLv×10」のボーナスを得る。',
      '攻撃が命中するとバッドステータス「転倒」を与える。',
      '通常攻撃。',
      '〔命中〕判定に[6,6,6]でファンブル。更に、使用者がバッドステータス「転倒」を受ける。',
    ]
  )
}.freeze
TRAP_TABLE =
[
  Row.new("トライディザスター:宝箱から広範囲に火炎・冷気・電撃が放たれる罠。PC全員に「%s」の「火炎」「冷気」「電撃」属性ダメージ。", ['3D6+3', '3D6+50', '3D6+70', '3D6+100', '300']),
  Row.new("ペトロブラスター:広範囲に石化光線を放つ罠。PC全員[抵抗-%s]判定を行い、失敗したPCはBS「石化」を受ける。", [2, 4, 6, 8, 10]),
  Row.new("クロスボウストリーム:宝箱から矢の嵐が放たれる罠。PC全員に「%s」の「刺突」属性ダメージ。「ドッジ-%s」で〔回避〕が可能。", ['3D6+20', '3D6+40', '3D6+60', '3D6+90', '200'], [4, 6, 8, 10, 20]),
  Row.new("フォーチュンイーター:PC全員の幸運を食らい、Ftを%s点減少させる。Ftが0の場合「%s」点の防護点無視ダメージ。", [1, 2, 3, 4, 5], ['3D6+30', '3D6+50', '3D6+70', '3D6+100', '300']),
  Row.new("スロット:解除に失敗しても害はないが、スロットが揃うまで開かない宝箱。スロットを1回まわすには%sGPが必要。行動を消費して[感覚-%s]判定に成功すればスロットは揃う。有利な特異点「ビビット反射」があれば判定に+4のボーナス。", [100, 300, 600, 1000, 10000], [4, 6, 8, 10, 15]),
  Row.new("テレポーター:PC全員(とエンカウントしているエネミー)を転送して道に迷わせる。「財宝ランク」が1段階減少する。"),
  Row.new("アイスコフィン:宝箱を開けようとしたキャラクターを氷漬けにする罠。対象1体に「%s」の「冷気」属性ダメージ。更にFPにも%s点の防護点無視ダメージ。", ['3D6+30', '3D6+50', '3D6+70', '3D6+100', '300'], [5, 10, 15, 20, 30]),
  Row.new("クロスボウ:宝箱を開けようとしたキャラクターに強力な矢が放たれる罠。対象1体に「%s」の「刺突」属性ダメージ。「ドッジ-%s」", ['3D6+20', '3D6+40', '3D6+60', '3D6+90', '200'], [4, 6, 8, 10, 20]),
  Row.new("毒針:宝箱を開けようとしたキャラクターに毒針を突き刺す罠対象1体に%s点の防護点無視ダメージ。更に[抵抗-%s]判定に失敗するとシナリオ終了まであらゆる判定に-2のペナルティ。", [15, 30, 45, 60, 150], [4, 6, 8, 10, 15]),
  Row.new("アラーム:即座にその地形のエンカウント表を振って、それに対応したエネミーが出現する。出現したエネミーはそのターンから行動順に組み込まれる。出現するエネミー以外の記述は無視する。"),
  Row.new("殺人鬼の斧:宝箱を開けようとしたキャラクターに斧が振り下ろされる罠。対象1体に「%s」の「打撃」「斬撃」属性ダメージ。「ドッジ-%s」か「シールド-%s」で〔回避〕が可能。", ['3D6+30', '3D6+50', '3D6+70', '3D6+100', '300'], [4, 6, 8, 10, 20], [4, 6, 8, 10, -20]),
  Row.new("死神:宝箱を開けようとしたキャラクターに死神を取り憑かせる罠。4ラウンド目が終了するまであらゆる判定に-3のペナルティを受け、4ラウンド目の終了と同時に「%s」の防護点無視ダメージ。", ['3D6+30', '3D6+50', '3D6+70', '3D6+100', '300']),
  Row.new("幻の宝:宝箱に偽の財宝を入れ、本物の財宝を入手させない罠。トラップが発動すると価値の無い偽の宝物「幻の宝」を入手してしまう。「幻の宝」はアイテム欄を3つ占有し、シナリオ終了まで捨てられない。アイテム欄に空きがない場合は、何かを捨てて誰かが必ず持たなくてはならない。"),
  Row.new("エクスプロージョン:宝箱が大爆発を起こし、中身を粉々にしてしまう罠。宝箱の中身は消滅する。PC全員に「%s」の「打撃」「火炎」属性ダメージ。", ['3D6+10', '3D6+30', '3D6+50', '3D6+80', '200']),
  Row.new("レインボーポイズン:宝箱から七色の毒ガスが放たれる罠。PC全員に「%s」の防護点無視ダメージ。更にシナリオ終了まであらゆる判定に-2のペナルティ。[抵抗-%s]判定に成功すれば無効。", ['3D6+10', '3D6+30', '3D6+50', '3D6+80', '200'], [4, 6, 8, 10, 15]),
  Row.new("デスクラウド:宝箱から致死性の毒ガスを放つ罠。PC全員を即死させる。[抵抗-%s]判定に成功すれば無効。", [2, 4, 6, 8, 12]),
].freeze
OPTION_TABLE =
D66Table.new(
  "迷宮追加オプション表",
  {
    11 => Row.new("黄金の迷宮(財宝ランク+2):全てが黄金で彩られた迷宮。財宝ランクが大きく上昇する。"),
    12 => Row.new("密林の迷宮(財宝ランク+1):密林の中にひっそりとたたずむ迷宮。分類が「魔獣」「獣人」「霊獣」のエネミーが行うあらゆる判定に+2のボーナス。"),
    13 => Row.new("カラクリの迷宮:複雑なカラクリが周囲で絶え間なく動いている迷宮。分類「ギア」のエネミーが行うあらゆる判定に+2のボーナス。クリア時に「アタッチメント割引券」を全員が%s枚獲得。", [1, 2, 3, 5, 10]),
    14 => Row.new("フラウの舞踏会:あちこちに花畑のある迷宮。フラウが発生するランダムイベントが発生した際、「この迷宮を制覇して、私達が舞踏会を開けるようにしてね」とお願いされ、クリア時の報酬に%sが追加される。", ['「キノコの帽子」(装飾品)', '「猛毒の花」(装飾品)', '「フルブロウン」(鎧)', '「緊急召喚の宝珠」(装飾品)', '魔将樹の大剣(剣)']),
    15 => Row.new("アズマ風の迷宮:風流なアズマ風の迷宮。武器に「刀」を持つエネミーが行うあらゆる判定に+2のボーナス。クリア時に「アタッチメント割引券」を全員が%s枚獲得。", [1, 2, 3, 5, 10]),
    16 => Row.new("枯れた泉の迷宮:「全地形1-1」の回復の泉が全て枯れており、回復効果を得ることができない。「山岳1-6」の貴重な水源や、「水辺1-6」の毒の泉などはそのまま存在する。"),
    21 => Row.new("天空への道(財宝ランク+1):上へ上へと果てしなく登っていく迷宮。空気が薄くなって疲労しやすくなる。【特技】特技などによるFP消費が全て+3。"),
    22 => Row.new("灼熱焦土の迷宮(財宝ランク+1):とてつもなく暑く、あちこちで炎が燃え盛る迷宮。エネミーが行う「火炎」属性を含む攻撃の致傷力に+%sのボーナス。", [10, 20, 30, 50, 100]),
    23 => Row.new("灼熱焦土の迷宮(財宝ランク+1):とてつもなく寒く、気温が氷点下の迷宮。エネミーが行う「冷気」属性を含む攻撃の致傷力に+%sのボーナス。", [10, 20, 30, 50, 100]),
    24 => Row.new("盗賊王の迷宮:迷宮内での罠や鍵を解除する[感覚]判定に-3のペナルティ。4ラウンドまでに出現した宝箱の「財宝ランク」+1。"),
    25 => Row.new("ミミック狂暴化:「全地形2-5」のミミックの致傷力に+%sのボーナス。ミミックを見破った場合に得られるGPが%sGP増加する。", [20, 30, 50, 80, 150], [500, 1000, 3000, 5000, 20000]),
    26 => Row.new("トレジャーイーター狂暴化:「全地形2-6」のトレジャーイーターを見破る[知力]判定に-3のペナルティ。4ラウンドまでに出現した宝箱の「財宝ランク」+1。"),
    31 => Row.new("暗闇の迷宮:どこもかしこも真っ暗な迷宮。「猫の目」などがなければ視覚に関する[感覚]判定に-5のペナルティ。"),
    32 => Row.new("騒音の迷宮:常に大音量で謎の音楽(BGM)が鳴っている迷宮。聴覚に関する[感覚]判定に-5のペナルティ。"),
    33 => Row.new("未知の怪物の迷宮(財宝ランク+1):エネミーの姿がシルエットのみになる迷宮。エネミーのデータがいかなる手段でも判明させられなくなる。(通常通り〔HP〕〔FP〕〔先制〕は判明する)"),
    34 => Row.new("氾濫中の迷宮:大雨が降っており、川などが氾濫している迷宮。水泳を行う際の[敏捷]判定に-5のペナルティ。「森林3-6」の山火事イベントの効果は無視できる。"),
    35 => Row.new("間抜けの迷宮(財宝ランク+1):頭がおかしくなりそうな極彩色の迷宮。[知力][意志]判定に-2のペナルティ。[知力]や[意志]そのものが下がるわけではない。"),
    36 => Row.new("瘴気の迷宮(財宝ランク+1):生命力を奪う紫の霧で満ちた迷宮。〔HP〕の最大値に-%sのペナルティ。", [10, 20, 30, 40, 50]),
    41 => Row.new("加速する迷宮:狂ったように針の動く時計が多数された迷宮。「CT:安息の日」以外の【特技】が「CT:なし」になる。"),
    42 => Row.new("停滞する迷宮(財宝ランク+1):動かない時計が多数設置された迷宮。「CT:安息の日」以外のCTの存在する【特技】が「CT:シナリオ終了」になる。この効果はシナリオ終了まで持続する。"),
    43 => Row.new("猛毒の迷宮(財宝ランク+1):見るからに毒々しい紫色の沼があちこちにある迷宮。エネミーが行う、名称に「毒」もしくは「ポイズン」が入る【特技】や、名称に「毒」もしくは「ポイズン」が入るトラップの致傷力に+%sのボーナス。", [10, 20, 40, 50, 100]),
    44 => Row.new("死の迷宮(財宝ランク+2):死の運命から逃れることのできない、血まみれの迷宮。「生命保険証」の効果が適用されない。"),
    45 => Row.new("幸運の迷宮:何者かの加護を感じる迷宮。PC全員のFtの最大値と現在値に+1のボーナス。この効果はシナリオ終了まで持続する。"),
    46 => Row.new("不運の迷宮:PC全員のFt最大値と現在値に-1のペナルティ。この効果はシナリオ終了まで持続する。"),
    51 => Row.new("レアメタルの迷宮:非常にレアなエネミー「レアメタルキャンディー」「レアメタルクラウン」が生息している迷宮。キャンディークラウン(CL40)、ゴールデンクラウン(CL177)から獲得できる通常ドロップのGPが5倍になる。"),
    52 => Row.new("魔力の泉:PCとエネミーの双方が、〔FP〕を消費せずに【魔法】を使用できるようになる。最終的な消費〔FP〕が最大〔FP〕より大きい【魔法】は使用できない。"),
    53 => Row.new("ブルーの迷宮:陰鬱な気分になり、他のキャラクターと関わる気力を失う。PC全員が不利な特異点「嫌な奴」を1段階得る。"),
    54 => Row.new("レッドの迷宮:なぜか興奮して非常に好戦的になる。PC全員が不利な特異点「脳みそ筋肉」を得る。交戦中に「1:回復系」のイベントが発生しても戦闘を終了させることができない。"),
    55 => Row.new("ピンクの迷宮:なんだか身近な異性(同性も?)が気になって仕方なくなる。PC全員が不利な特異点「英雄色を好む」を得る。魔族も戦闘意欲を失い、「分類:魔族」のエネミーが出現するイベントは無視する。"),
    56 => Row.new("ハズレの迷宮(財宝ランク-1):ツギハギだらけの壁などでできた、ハリボテのような貧相な迷宮。宝箱の中身もなんだか貧相になる。"),
    61 => Row.new("ラダマンティスの迷宮(財宝ランク+2):第一魔将ラダマンティスの像が入口に設置された迷宮。全てのエネミーが行うあらゆる判定に+2のボーナス。また、「遺跡6-6」のイベントのダメージ+%s。", [20, 40, 60, 80, 150]),
    62 => Row.new("グレイヴディガーの迷宮(財宝ランク+2):第二魔将グレイヴディガーの像が入口に設置された迷宮。「分類:アンデッド」のエネミーが行うあらゆる判定に+5のボーナス。"),
    63 => Row.new("ハイペリオンの迷宮(財宝ランク+2):第三魔将ハイペリオンの像が入口に設置された迷宮。全てのエネミーが「ターン開始」時に〔HP〕を全回復する。"),
    64 => Row.new("ムスペルニヴルの迷宮(財宝ランク+2):勇ましくも美しい女性の像が設置された迷宮。エネミーが行う「火炎」もしくは「冷気」属性を含む攻撃の致傷力に+%sのボーナス。", [20, 40, 60, 80, 150]),
    65 => Row.new("ウェルスの迷宮:人懐っこそうなアズマ風の青年が設置された迷宮。シナリオ上で第五魔将の正体が明らかに鳴っている場合のみ、PC全員のFtの最大値と現在値に+5のボーナス。この効果はシナリオ終了まで持続する。"),
    66 => Row.new("バロールの迷宮(財宝ランク+2):第六魔将バロールの像が入口に設置された迷宮。「分類:ギア」のエネミーが行うあらゆる判定に+5のボーナス。"),
  }
)
LOT_NORMAL_TABLES =

ナンバーワンノーマルくじ表(GURPS-FW版)

別の表に飛ぶ場合は、遅延評価のためにlambdaでジャンプ先の表を括る。

{
  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
LOT_PREMIUM_TABLES =

ナンバーワンプレミアムくじ表(GURPS-FW版)

別の表に飛ぶ場合は、遅延評価のためにlambdaでジャンプ先の表を括る。

{
  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
COOK_TABLES =

マジカルクッキング表

別の表に飛ぶ場合は、遅延評価のためにlambdaでジャンプ先の表を括る。

{
  1 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 1)",
    "1D6",
    [
      [1, "おべんとミートボール"],
      [2, "パリパリ小魚"],
      [3, "キャロットタルト"],
      [4, "おにぎり"],
      [5..6, lambda { COOK_TABLES[2] }],
    ]
  ).freeze,

  2 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 2)",
    "1D6",
    [
      [1, "カリカリミミズ肉"],
      [2, "竹つきチクワ"],
      [3, "トロピカルジュース"],
      [4, "イナリ寿司"],
      [5..6, lambda { COOK_TABLES[3] }],
    ]
  ).freeze,

  3 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 3)",
    "1D6",
    [
      [1, "ホットミートパイ"],
      [2, "魔界魚の目玉"],
      [3, "パンプキンプリン"],
      [4, "スタミナ丼"],
      [5..6, lambda { COOK_TABLES[4] }],
    ]
  ).freeze,

  4 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 4)",
    "1D6",
    [
      [1, "ジャンボ串焼き"],
      [2, "シルヴァまっしぐら"],
      [3, "フラウアイスクリーム"],
      [4, "ピクニックランチ"],
      [5..6, lambda { COOK_TABLES[5] }],
    ]
  ).freeze,

  5 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 5)",
    "1D6",
    [
      [1, "グラント風香草焼き"],
      [2, "エドマエスシ"],
      [3, "スターフルーツパフェ"],
      [4, "具沢山本格カレー"],
      [5..6, lambda { COOK_TABLES[6] }],
    ]
  ).freeze,

  6 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 6)",
    "1D6",
    [
      [1, "ドラゴンステーキ"],
      [2, "刺身盛り合わせ"],
      [3, "エデンのアップルパイ"],
      [4, "フォートレス炒飯"],
      [5..6, lambda { COOK_TABLES[7] }],
    ]
  ).freeze,

  7 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 7)",
    "1D6",
    [
      [1, "マツザカスペシャル"],
      [2, "オオトロスシ"],
      [3, "スノーホワイトボンブ"],
      [4, "よもつへぐい"],
      [5..6, lambda { COOK_TABLES[8] }],
    ]
  ).freeze,

  8 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 8)",
    "1D6",
    [
      [1, "超特大マンガ肉"],
      [2, "特上うな丼"],
      [3, "魔将樹のかき氷"],
      [4, "ヘブンズランチ"],
      [5..6, lambda { COOK_TABLES[9] }],
    ]
  ).freeze,

  9 => DiceTable::RangeTable.new(
    "マジカルクッキング(Lv 9)",
    "1D6",
    [
      [1..3, "世界樹のサラダ"],
      [4..6, "黄金のラダマン鍋"],
    ]
  ).freeze,
}.freeze
EVENT_TABLES =
[
  cave,
  ruin,
  mountain,
  waterside,
  forest,
  graveyard,
].freeze
TRESURE_TABLES =
{
  0 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "HPポーション(消耗品)",
      "FPポーション(消耗品)",
      "マジックパウダー:火(消耗品)",
      "マジックパウダー:氷(消耗品)",
      "マジックパウダー:雷(消耗品)",
      "500GP",
    ]
  ),
  1 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "高級HPポーション(消耗品)",
      "高級FPポーション(消耗品)",
      "高級抵抗ポーション(消耗品)",
      "高級鉄壁ポーション(消耗品)",
      "マジックパウダー:火、氷、雷の3点セット(消耗品)",
      "1000GP",
    ]
  ),
  2 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "鈴のお守り(装飾品)",
      "盗賊の小手(装飾品)",
      "狩人の羽帽子(装飾品)",
      "狙撃手の指貫(装飾品)",
      "「スタミナバンド」「健康お守り」「レザーマント」3点セット",
      "2000GP",
    ]
  ),
  3 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "最高級HPポーション×2(消耗品)",
      "最高級FPポーション×2(消耗品)",
      "最高級抵抗ポーション×2(消耗品)",
      "任意の装飾品1つ(4000GPまでのもの)",
      "アタッチメント割引券(全員に1枚)",
      "3000GP",
    ]
  ),
  4 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "任意の「ミスリル」武器1つ",
      "ミスリルシールド(盾)",
      "ミスリルスケイル(鎧)",
      "任意の装飾品1つ(5000GPまでのもの)",
      "アタッチメント割引券(全員に2枚)",
      "5000GP",
    ]
  ),
  5 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "任意の武器1つ(10000GPまでのもの)",
      "任意の盾1つ(10000GPまでのもの)",
      "任意の鎧1つ(10000GPまでのもの)",
      "最高級HPポーション(人数分)",
      "任意の装飾品1つ(10000GPまでのもの)",
      "7500GP",
    ]
  ),
  6 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "任意の武器1つ(15000GPまでのもの)",
      "任意の盾1つ(15000GPまでのもの)",
      "任意の鎧1つ(15000GPまでのもの)",
      "任意の装飾品1つ(15000GPまでのもの)",
      "最高級FPポーション(人数分)",
      "10000GP",
    ]
  ),
  7 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "任意の武器1つ(30000GPまでのもの)",
      "任意の盾1つ(30000GPまでのもの)",
      "任意の鎧1つ(30000GPまでのもの)",
      "任意の装飾品1つ(30000GPまでのもの)",
      "蘇生ポーション(消耗品)",
      "20000GP",
    ]
  ),
  8 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "任意の武器1つ(60000GPまでのもの)",
      "任意の盾1つ(60000GPまでのもの)",
      "任意の鎧1つ(60000GPまでのもの)",
      "任意の装飾品1つ(60000GPまでのもの)",
      "蘇生ポーション(装飾品)+アタッチメント割引券10枚(割引券は人数分)",
      "40000GP",
    ]
  ),
  9 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "任意の武器1つ(100000GPまでのもの)",
      "任意の盾1つ(100000GPまでのもの)",
      "任意の鎧1つ(100000GPまでのもの)",
      "任意の装飾品1つ(100000GPまでのもの)",
      "蘇生ポーション(装飾品)+アタッチメント割引券20枚(割引券は人数分)",
      "60000GP",
    ]
  ),
  10 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "任意の武器1つ(150000GPまでのもの)",
      "任意の盾1つ(150000GPまでのもの)",
      "任意の鎧1つ(150000GPまでのもの)",
      "任意の装飾品1つ(200000GPまでのもの)",
      "蘇生ポーション(装飾品)+アタッチメント割引券30枚(割引券は人数分)",
      "黄金の守護者の証(装飾品)(【ハッキング】があれば黄金の電子暗号キー(装飾品)も追加)",
    ]
  ),
  11 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "体力の欠片(大事なもの)(全員に10個)",
      "敏捷の欠片(大事なもの)(全員に10個)",
      "感覚の欠片(大事なもの)(全員に10個)",
      "知力の欠片(大事なもの)(全員に10個)",
      "意志の欠片(大事なもの)(全員に10個)",
      "お好きな副能力の欠片(大事なもの)(1人ずつ好きなものを選択して全員に50個)",
    ]
  ),
  12 => DiceTable::Table.new(
    "財宝表",
    "1D6",
    [
      "体力の欠片(大事なもの)(全員に20個)",
      "敏捷の欠片(大事なもの)(全員に20個)",
      "感覚の欠片(大事なもの)(全員に20個)",
      "知力の欠片(大事なもの)(全員に20個)",
      "意志の欠片(大事なもの)(全員に20個)",
      "お好きな副能力の欠片(大事なもの)(1人ずつ好きなものを選択して全員に100個)",
    ]
  )
}.freeze
AREA_LIST =
[
  "洞窟",
  "遺跡",
  "山岳",
  "水辺",
  "森林",
  "墓場",
].freeze
ENEMY_DATA =
{
  "141" => [
    "キャンディークラウン(CL40)1匹",
    "キャンディクラウン(CL40)「1D-3」匹(最低1匹)",
    "キャンディークラウン「1D-2」匹(最低1匹)出目が6だった場合ゴールデンクラウン(CL177)1匹",
    "ゴールデンクラウン(CL177)とエンカウント",
    "キャンディークラウン(CL40/オリジン)1匹"
  ],
  "142" => [
    "ベルセルク(CL7)3匹",
    "ベルセルク(CL7)3匹(〔命中〕+4、〔HP〕+30、〔FP〕+10、あらゆる致傷力+20)",
    "ベルセルク(CL7)3匹(〔命中〕+8、〔HP〕+60、〔FP〕+20、あらゆる致傷力+40)",
    "ベルセルク(CL7)3匹(〔命中〕+16、〔HP〕+120、〔FP〕+40、あらゆる致傷力+80)",
    "ベルセルク(CL7/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "143" => [
    "ガーゴイル(CL10)2匹",
    "ガーゴイル(CL10)2匹(〔命中〕+4、〔HP〕+20、〔FP〕+10、あらゆる致傷力と防護点+20)",
    "ガーゴイル(CL10)2匹(〔命中〕+8、〔HP〕+40、〔FP〕+20、あらゆる致傷力と防護点+40)",
    "ザッハーク(CL39)3匹",
    "ガーゴイル(CL10/オリジン)2匹(〔HP〕+500、あらゆる致傷力と防護点+100)"
  ],
  "144" => [
    "デビルホイール(CL18)1匹",
    "デビルホイール(CL18)1匹、あらゆる致傷力+20",
    "デビルホイール(CL18)1匹、あらゆる致傷力+40",
    "ムスペルヘイムの獣(CL65)、あらゆる防護点+20",
    "デビルホイール(CL18/オリジン)1匹(〔HP〕+1000、あらゆる致傷力+100)"
  ],
  "145" => [
    "ヘルハウンド(CL12)1匹、インプ(CL3)2匹",
    "フェニックス(CL25)2匹",
    "火龍ヘルブレイザー(CL50)1匹、ケルベロス(CL33)1匹",
    "煉獄龍バーガトリ(CL100)1匹",
    "ヘルハウンド(CL12/オリジン)1匹、インプ(CL3/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "146" => [
    "アイスメイデン(CL10)1匹、アイスリザード(CL7)2匹",
    "クリスタルビースト(CL25)2匹",
    "氷河龍グレイシャル(CL65)1匹",
    "冥界龍コキュートス(CL110)1匹",
    "アイスメイデン(CL10/オリジン)1匹、アイスリザード(CL7/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "241" => [
    "スケルトン(CL3)、アルテミス(CL8)、スターゲイザー(CL10)、ヤシャ(CL10)、ヘルハウンド(CL12)、ゴーレム(CL13)",
    "ナイトスケルトン(CL12)、カラクリフラウ弐式(CL16)、コスモロジスト(CL20)、クリスタルビースト(CL25)、ミスリルゴーレム(CL27)",
    "コガラシ(CL27)、アダマンゴーレム(CL45)、アシュラ(CL48)、火龍ヘルブレイザー(CL50)、氷龍グレイシャル(CL65)",
    "ロックダンサー(CL39)、デスサジタリー(CL45)、コンゴウ(CL60)、カラクリヒメショーグン(CL75)、フェンリル(CL85)、ゴールデンクラウン(CL177)\nゴールデンクラウンが最後に残り【逃走】した場合ドロップ品は入手できない",
    "スケルトン(CL3/オリジン)、アルテミス(CL8/オリジン)、スターゲイザー(CL10/オリジン)、ヤシャ(CL10/オリジン)、ヘルハウンド(CL12/オリジン)、ゴーレム(CL13/オリジン)(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "242" => [
    "アルテミス(CL8)3匹",
    "アルテミス(CL8)3匹(〔命中〕+4、〔HP〕+30、〔FP〕+20、あらゆる致傷力+20)",
    "アルテミス(CL8)3匹(〔命中〕+8、〔HP〕+60、〔FP〕+30、あらゆる致傷力+40)",
    "アルテミス(CL8)3匹(〔命中〕+16、〔HP〕+120、〔FP〕+40、あらゆる致傷力+80)",
    "アルテミス(CL8/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "243" => [
    "スターゲイザー(CL10)2匹",
    "コスモロジスト(CL20)2匹",
    "コスモロジスト(CL20)4匹",
    "デスサジタリー(CL45)2匹",
    "スターゲイザー(CL10/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "244" => [
    "ヤシャ(CL10)1匹、スケルトン(CL3)3匹",
    "ヤシャ(CL10)3匹(〔命中〕+4、〔HP〕+30、〔FP〕+10、あらゆる致傷力+15)",
    "アシュラ(CL48)2匹",
    "コンゴウ(CL60)2匹",
    "ヤシャ(CL10/オリジン)1匹、スケルトン(CL3/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "245" => [
    "ヘルハウンド(CL12)2匹",
    "クリスタルビースト(CL25)2匹",
    "火龍ヘルブレイザー(CL50)1匹、氷河龍グレイシャル(CL65)",
    "『単眼の巨神』アイングロース(CL100/ネームド)",
    "ヘルハウンド(CL12/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "246" => [
    "ゴーレム(CL13)1匹",
    "ミスリルゴーレム(CL27)1匹",
    "アダマンゴーレム(CL45)1匹",
    "カラクリヒメショーグン(CL75)1匹",
    "ゴーレム(CL13/オリジン)1匹(〔HP〕+1000、あらゆる致傷力+100)"
  ],
  "341" => [
    "アイアンプリチン(CL5)5匹",
    "アイアンプリチン(CL5)5匹(〔命中〕+4、〔HP〕+30、〔FP〕+10)",
    "アイアンプリチン(CL5)5匹(〔命中〕+8、〔HP〕+60、〔FP〕+20)",
    "アイアンプリチン(CL5)5匹(〔命中〕+16、〔HP〕+120、〔FP〕+40)",
    "アイアンプリチン(CL5/オリジン)5匹(〔HP〕+300、あらゆる致傷力+100)"
  ],
  "342" => [
    "ウイングスレイブ(CL4)5匹",
    "ウイングスレイブ(CL4)5匹(〔命中〕+4、〔HP〕+30、〔FP〕+10、あらゆる致傷力+20)",
    "ガルーダ(CL40)2匹",
    "栄光の天使(CL60)2匹",
    "ウイングスレイブ(CL4/オリジン)5匹(〔HP〕+300、あらゆる致傷力+100)"
  ],
  "343" => [
    "ブラックナイト(CL10)1匹、ソルジャー(CL4)3匹",
    "デュラハン(CL22)1匹、ブラックナイト(CL10)2匹",
    "サーバントマスター(CL35)1匹、デュラハン(CL22)2匹",
    "ジェネラル(CL55)1匹、サーバントマスター(CL35)2匹",
    "ブラックナイト(CL10/オリジン)1匹、ソルジャー(CL4/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "344" => [
    "ソルジャーアント(CL8)2匹",
    "ソルジャーアント(CL8)2匹(〔命中〕+4、〔HP〕+30、〔FP〕+10、あらゆる致傷力+20)",
    "インペリアルアント(CL30)2匹",
    "『女王キノコ』アカシックツリー(CL50/ネームド)1匹、インペリアルアント(CL30)2匹",
    "ソルジャーアント(CL8/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "345" => [
    "カボチャの魔女(CL8)2匹",
    "カボチャの魔女(CL8)2匹(〔命中〕+4、〔HP〕+30、〔FP〕+10、あらゆる致傷力+20)",
    "カボチャの大魔女(CL35)2匹",
    "堕落の黒天使(CL60)2匹",
    "カボチャの魔女(CL8/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "346" => [
    "フェニックス(CL25)2匹",
    "フェニックス(CL25)2匹(〔命中〕+4、〔HP〕+40、〔FP〕+10、あらゆる致傷力+30)",
    "フェニックス(CL25)2匹(〔命中〕+8、〔HP〕+80、〔FP〕+20、あらゆる致傷力+60)",
    "煉獄フェニックス(CL85)2匹",
    "フェニックス(CL25/オリジン)2匹(〔HP〕+1000、あらゆる致傷力+200)"
  ],
  "441" => [
    "フロストクラブ(CL6)2匹",
    "フロストクラブ(CL6)3匹",
    "『氷海の主』ギガントキャンサー(CL20/ネームド)",
    "『氷海の主』ギガントキャンサー(CL20/ネームド)、フロストクラブ(CL6)3匹",
    "フロストクラブ(CL6/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "442" => [
    "アシガル(CL4)3匹",
    "ハタモト(CL10)3匹",
    "ヒトキリ(CL33)2匹",
    "スカーレス(CL38)3匹",
    "アシガル(CL4/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "443" => [
    "アンブッシュマン(CL5)3匹",
    "アンブッシュマン(CL5)3匹(〔命中〕+4、〔HP〕+20、〔FP〕+10、あらゆる致傷力+10)",
    "シャドウストーカー(CL35)2匹",
    "シャドウストーカー(CL35)3匹",
    "アンブッシュマン(CL5/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "444" => [
    "アップルドール(CL12)2匹",
    "アップルドール(CL12)2匹、ポイズンリリー(CL7)2匹",
    "テラードール(CL30)2匹",
    "テラードール(CL30)2匹、バリアリーフ(CL27)2匹",
    "アップルドール(CL12/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "445" => [
    "ナイトライダー(CL15)1匹",
    "ナイトライダー(CL15)2匹",
    "ジェネラル(CL55)1匹",
    "ジェネラル(CL55)2匹",
    "ナイトライダー(CL15/オリジン)1匹(〔HP〕+800、あらゆる致傷力+100)"
  ],
  "446" => [
    "ジェルスケルトン(CL10)1匹",
    "ジェルスケルトン(CL10)1匹(〔命中〕+4、〔FP〕+10、あらゆる致傷力+20)",
    "ジェルスケルトン(CL10)1匹(〔命中〕+8、〔FP〕+20、あらゆる致傷力+40)",
    "ジェルスケルトン(CL10)1匹(〔命中〕+12、〔FP〕+40、あらゆる致傷力+80)",
    "ジェルスケルトン(CL10/オリジン)1匹(〔HP〕+1500、あらゆる致傷力+200)"
  ],
  "541" => [
    "スナッチャー(CL4)3匹",
    "ゴールデンビースト(CL10)3匹",
    "ヨウコ(CL30)2匹",
    "イビルオーメン(CL42)2匹",
    "スナッチャー(CL4/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "542" => [
    "スターゲイザー(CL10)1匹、オーク(CL3)3匹",
    "スターゲイザー(CL10)1匹、ヘルハウンド(CL12)2匹",
    "コスモロジスト(CL20)1匹、ケルベロス(CL33)1匹",
    "サーバントマスター(CL35)1匹、ケルベロス(CL33)2匹",
    "スターゲイザー(CL10/オリジン)1匹、オーク(CL3/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "543" => [
    "オウルセージ(CL5)1匹、インプ(CL3)3匹。指定エネミー:オウルセージ",
    "オウルセージ(CL5)3匹。指定エネミー:オウルセージ",
    "オウルコマンダー(CL18)1匹、キメラ(CL15)2匹。指定エネミー:オウルコマンダー",
    "オウルコマンダー(CL18)2匹、キメラグレート(CL60)1匹。指定エネミー:オウルコマンダー",
    "オウルセージ(CL/オリジン5)1匹、インプ(CL3/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)。指定エネミー:オウルセージ"
  ],
  "544" => [
    "グリーンアクトレス(CL22)1匹",
    "魔将樹の騎士(CL40)1匹",
    "魔将樹の番人(CL80)1匹",
    "『魔将樹の剣姫』ロジエモール(CL120/ネームド)1匹",
    "グリーンアクトレス(CL22/オリジン)1匹(〔HP〕+200、あらゆる致傷力+200、分類「ネームド」と【始原の力】を追加)"
  ],
  "545" => [
    "ポイズンリリー(CL7)1匹、リリーの尖兵(CL5)1匹",
    "ポイズンリリー(CL7)1匹、リリーの尖兵(CL5)1匹(〔命中〕+4、〔HP〕+30、〔FP〕+10、あらゆる致傷力+20)",
    "バリアリーフ(CL27)1匹、リリーの尖兵(CL5)1匹(〔命中〕+8、〔HP〕+60、〔FP〕+20、あらゆる致傷力+40)",
    "『密林の女王』クイーンリリー(CL70/ネームド)1匹、リリーの尖兵(CL5)1匹(〔命中〕+16、〔HP〕+120、〔FP〕+40、あらゆる致傷力+80)",
    "ポイズンリリー(CL7/オリジン)1匹、リリーの尖兵(CL5/オリジン)1匹(〔HP〕+800、あらゆる致傷力+100)"
  ],
  "546" => [
    "ブラックナイト(CL10)1匹、ソルジャー(CL4)3匹",
    "ヴァルキリー(CL20)1匹、ブラックナイト(CL10)2匹",
    "フレイヤ(CL45)1匹、ヴァルキリー(CL20)2匹",
    "ジェネラル(CL55)1匹、フレイヤ(CL45)2匹",
    "ブラックナイト(CL10/オリジン)1匹、ソルジャー(CL4/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "641" => [
    "ヤコ(CL6)3匹(【狐の送り火】のデータを「疲労:なし」に変更)",
    "ヨウコ(CL30)1匹(【狐の送り火】のデータを「疲労:なし」に変更)",
    "ヨウコ(CL30)3匹(【狐の送り火】のデータを「疲労:なし」に変更)",
    "タタリドラゴン(CL60/ネームド)1匹(【狐の送り火】のデータを「疲労:なし」に変更)",
    "ヤコ(CL6/オリジン)3匹((〔HP〕+500、あらゆる致傷力+100、【狐の送り火】のデータを「疲労:なし」に変更)"
  ],
  "642" => [
    "スケルトン(CL3)4匹",
    "ナイトスケルトン(CL12)3匹",
    "ヒトキリ(CL33)2匹(「分類:アンデッド」を追加)",
    "堕ちた黒龍(CL48)2匹",
    "スケルトン(CL3/オリジン)4匹(〔HP〕+500、あらゆる致傷力+200)"
  ],
  "643" => [
    "ポイズンリリー(CL7)1匹(【華劇:リリーオブザバレー】使用済み)、ファントム(CL5)2匹",
    "ポイズンリリー(CL7)1匹(【華劇:リリーオブザバレー】使用済み)、ゴースト(CL10)3匹",
    "グリーンアクトレス(CL22)1匹(【華劇:フォレストステップ】使用済み)、デュラハン(CL22)2匹",
    "グリーンアクトレス(CL22)1匹(【華劇:フォレストステップ】使用済み)、カラクリヒメショーグン(CL75)1匹",
    "ポイズンリリー(CL7/オリジン)1匹(【華劇:リリーオブザバレー】使用済み)、ファントム(CL5)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "644" => [
    "君たちの冒険はここで終了だ。",
    "君たちの冒険はここで終了だ。",
    "君たちの冒険はここで終了だ。",
    "第二魔将『葬送者』グレイヴディガー(CL200/魔将)1匹、『ディガー様親衛隊長』フュネライユ(CL66/ネームド)1匹、『トラップマスター』アンテルモン(CL65/ネームド)1匹",
    "[現在エネミー未実装の為振り直ししてください]",
  ],
  "645" => [
    "ゴースト(CL10)1匹(通常ドロップ「1000GP」)、ソルジャー(CL4)2匹",
    "ゴースト(CL10)1匹(通常ドロップ「2000GP」)、ハタモト(CL10)3匹",
    "リッチ(CL44)1匹(通常ドロップ「4000GP」)、ミスリルゴーレム(CL27)1匹",
    "エルダーリッチ(CL55)1匹(通常ドロップ「8000GP」)、アダマンゴーレム(CL45)1匹",
    "ゴースト(CL10/オリジン)1匹(通常ドロップ「1000GP」)、ソルジャー(CL4/オリジン)2匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "646" => [
    "ボーンスネーク(CL20)1匹",
    "ボーンスネーク(CL20)2匹",
    "ラダマンティスの蛇(CL50)1匹",
    "ラダマンティスの蛇(CL50)1匹(ネームド仕様[HP4倍、【ネームドエネミー】習得])",
    "ボーンスネーク(CL20/オリジン)1匹(〔HP〕+1500、あらゆる致傷力+200)"
  ],
  "256" => [
    "ボーンスネーク(CL50)1匹",
    "ラダマンティスの蛇(CL50)1匹",
    "銀河龍ラクテア/ドラゴン形態(CL90)1匹",
    "『三つ首の災厄』トライディザスター(CL100/ネームド)1匹",
    "ボーンスネーク(CL50/オリジン)1匹(〔HP〕+2000、あらゆる致傷力+200)"
  ],
  "265" => [
    "キャンディークラウン(CL40)「1D6」匹",
    "キャンディークラウン(CL40)「1D6+1」匹",
    "キャンディークラウン(CL40)「1D6」匹、ゴールデンクラウン(CL177)1匹",
    "キャンディークラウン(CL40)「1D6」匹、ゴールデンクラウン(CL177)2匹",
    "キャンディークラウン(CL40/オリジン)「1D6」匹",
  ],
  "465" => [
    "リビングデッド(CL5)3匹",
    "ゴースト(CL10)3匹",
    "デュラハン(CL22)3匹",
    "リッチ(CL44)3匹",
    "リビングデッド(CL5/オリジン)3匹(〔HP〕+500、あらゆる致傷力+100)"
  ],
  "665" => [
    "カロン(CL12)2匹",
    "カロンキャプテン(CL25)2匹",
    "リッチ(CL44)2匹",
    "エルダーリッチ(CL55)2匹(〔HP〕+10)",
    "カロンキャプテン(CL25/オリジン)2匹"
  ],
  "666" => [
    "『漆黒の戦鬼』ブラックナイト(CL10/ネームド)1匹",
    "『漆黒の戦鬼』ブラックナイト(CL10/ネームド)1匹(〔命中〕+4、あらゆる致傷力+20、〔HP〕+200)",
    "『白銀の猛将』ジェネラル(CL55/ネームド)1匹",
    "『白銀の猛将』ジェネラル(CL55/ネームド)1匹(〔命中〕+4、あらゆる致傷力+20、〔HP〕+500)",
    "[現在エネミー未実装の為振り直ししてください]"
  ],
}.freeze

Instance Attribute Summary

Attributes inherited from Base

#d66_sort_type, #default_cmp_op, #default_target_number, #randomizer, #reroll_dice_reroll_threshold, #round_type, #sides_implicit_d, #upper_dice_reroll_threshold

Instance Method Summary collapse

Methods inherited from Base

#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, eval, #eval, #grich_text, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?

Methods included from Translate

#translate

Constructor Details

#initialize(command) ⇒ FilledWith

Returns a new instance of FilledWith.



49
50
51
52
# File 'lib/bcdice/game_system/FilledWith.rb', line 49

def initialize(command)
  super(command)
  @d66_sort_type = D66SortType::NO_SORT; # d66の差し替え
end

Instance Method Details

#eval_game_system_specific_command(command) ⇒ Result?

Returns 固有コマンドの評価結果.

Parameters:

  • command (String)

    コマンド

Returns:

  • (Result, nil)

    固有コマンドの評価結果



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/bcdice/game_system/FilledWith.rb', line 56

def eval_game_system_specific_command(command)
  # ダイスロールコマンド
  result = FW.roll(command, @randomizer)
  return result if result

  # 各種コマンド
  case command
  when "LOTN"
    roll_jump_table("ナンバーワンノーマルくじ", LOT_NORMAL_TABLES[1])
  when "LOTP"
    roll_jump_table("ナンバーワンプレミアムくじ", LOT_PREMIUM_TABLES[1])
  when /COOK([1-8])/
    lv = Regexp.last_match(1).to_i
    roll_jump_table("マジカルクッキング", COOK_TABLES[lv])
  when /TRAP[ENHLX]/
    roll_trap_table(command)
  when /TRS.*/i
    getTresureResult(command)
  when /RAND.*/
    roll_random_event_table(command)
  when /RENC.*/
    roll_random_event_table(command)
  when /RED.*/i
    fetch_enemy_data(command)
  when /ROP[ENHLX]/
    roll_random_option_table(command)
  else
    roll_tables(command, TABLES)
  end
end

#fetch_enemy_data(command) ⇒ Object

夢幻の迷宮エネミーデータ表



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/bcdice/game_system/filled_with/enemy_data_tables.rb', line 7

def fetch_enemy_data(command)
  m = /^RED([ENHLX])(256|265|465|665|666|[1-6]4[1-6])$/.match(command)
  unless m
    return nil
  end

  difficulty = Difficulty.new(m[1])
  key = m[2]
  area_name = AREA_LIST[key[0].to_i - 1]

  chosen = ENEMY_DATA[key][difficulty.index]

  return "エネミーデータ表(#{key}):#{area_name}<#{difficulty.name}>:#{chosen}"
end

#format_table_roll_result(table_name, number, result) ⇒ String

表を振った結果を独自の書式で整形する

Parameters:

  • table_name (String)

    表の名前

  • number (String)

    出目の文字列

  • result (String)

    結果の文章

Returns:

  • (String)


92
93
94
# File 'lib/bcdice/game_system/FilledWith.rb', line 92

def format_table_roll_result(table_name, number, result)
  "#{table_name}(#{number}):#{result}"
end

#getTresureResult(command) ⇒ Object

夢幻の迷宮財宝表



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/bcdice/game_system/filled_with/tresure_tables.rb', line 7

def getTresureResult(command)
  m = /^TRS(\d+)([+-]\d)?$/.match(command)
  unless m
    return nil
  end

  rank = m[1].to_i + m[2].to_i
  rank = rank.clamp(0, 12)

  return TRESURE_TABLES[rank].roll(@randomizer)
end

#roll_jump_table(table_name, table) ⇒ Result

ジャンプする項目を含む表を振る

Parameters:

Returns:



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/bcdice/game_system/FilledWith.rb', line 100

def roll_jump_table(table_name, table)
  # 出目の配列
  values = []

  loop do
    roll_result = table.roll(@randomizer)
    values.concat(roll_result.values)

    content = roll_result.content
    case content
    when String
      return Result.new(format_table_roll_result(table_name, values.join, content))
    when Proc
      # 次の繰り返しで指定された表を参照する
      table = content.call
    else
      raise TypeError
    end
  end
end

#roll_random_event_table(command) ⇒ Object

夢幻の迷宮ランダムイベント表



351
352
353
354
355
356
357
358
359
360
361
362
363
# File 'lib/bcdice/game_system/FilledWith.rb', line 351

def roll_random_event_table(command)
  m = /^(RAND|RENC)([ENHLX])([1-6])?$/.match(command)
  unless m
    return nil
  end

  type = m[1] == "RAND" ? nil : 4
  difficulty = Difficulty.new(m[2])
  area = m[3]&.to_i || @randomizer.roll_once(6)

  table = EVENT_TABLES[area - 1]
  return table.roll(@randomizer, difficulty, type: type)
end

#roll_random_option_table(command) ⇒ Object

夢幻の迷宮追加オプション表



340
341
342
343
344
345
346
347
348
# File 'lib/bcdice/game_system/FilledWith.rb', line 340

def roll_random_option_table(command)
  m = /^ROP([ENHLX])$/.match(command)
  unless m
    return nil
  end

  difficality = Difficulty.new(m[1])
  return OPTION_TABLE.roll(@randomizer, difficality)
end

#roll_trap_table(command) ⇒ Object

夢幻の迷宮トラップ表



270
271
272
273
274
275
276
277
278
279
280
281
# File 'lib/bcdice/game_system/FilledWith.rb', line 270

def roll_trap_table(command)
  m = /^TRAP([ENHLX])$/.match(command)
  unless m
    return nil
  end

  difficality = Difficulty.new(m[1])
  number = @randomizer.roll_sum(3, 6)
  chosen = TRAP_TABLE[number - 3]

  return "トラップ表<#{difficality.name}>(#{number}):#{chosen.format(difficality)}"
end