class BCDice::GameSystem::Paradiso
Constants
- HELP_MESSAGE
ダイスボットの使い方
- ID
ゲームシステムの識別子
- NAME
ゲームシステム名
- SORT_KEY
ゲームシステム名の読みがな
Public Instance Methods
eval_game_system_specific_command(command)
click to toggle source
# File lib/bcdice/game_system/Paradiso.rb, line 30 def eval_game_system_specific_command(command) # ダイスロールコマンド # 通常判定部分をgetJudgeResultコマンドに切り分け result = getJudgeResult(command) return result unless result.nil? # ダメージチェック部分をgetDamageResultコマンドに切り分け result = getDamageResult(command) return result unless result.nil? # テーブル case command.upcase # 大文字にしてチェックする when 'RMT' result = get_radiomarietta_table when 'TOT' result = get_takeoff_table when 'EXT' result = get_exploration_table when 'SUT' result = get_flightsupply_table end return result unless result.nil? end
getDamageResult(command)
click to toggle source
# File lib/bcdice/game_system/Paradiso.rb, line 111 def getDamageResult(command) biggun = [0, 0, 0] case command when /^DC(\d+)(\[(\d+)(,(\d+))?(,(\d+))?(,(\d+))?(,(\d+))?(,(\d+))?\])?$/i attack = (Regexp.last_match(1) || 1).to_i # ダイス数。省略時は1 biggun[0] = (Regexp.last_match(3) || 0).to_i # コダワリ機銃、省略時は0 biggun[1] = (Regexp.last_match(5) || 0).to_i biggun[2] = (Regexp.last_match(7) || 0).to_i biggun[3] = (Regexp.last_match(9) || 0).to_i biggun[4] = (Regexp.last_match(11) || 0).to_i biggun[5] = (Regexp.last_match(13) || 0).to_i else return nil end dice = 0 dicetext = "" damage = Array.new(20, 0) doubledam = 0 tripledam = 0 biggun.each do |bg| case bg when 30 tripledam += 1 when 20 doubledam += 1 end end attack.times do dice = @randomizer.roll_once(20) if dicetext == "" dicetext = dice.to_s else dicetext = dicetext + "," + dice.to_s end if tripledam >= 1 damage[dice - 1] += 3 tripledam += -1 dicetext += "【30mm】" elsif doubledam >= 1 damage[dice - 1] += 2 doubledam += -1 dicetext += "【20mm】" else damage[dice - 1] += 1 end end result = "\n#{damage[0]}#{damage[1]}#{damage[2]}#{damage[3]}#{damage[4]}\n#{damage[5]}#{damage[6]}#{damage[7]}#{damage[8]}#{damage[9]}\n#{damage[10]}#{damage[11]}#{damage[12]}#{damage[13]}#{damage[14]}\n#{damage[15]}#{damage[16]}#{damage[17]}#{damage[18]}#{damage[19]}" text = "攻撃力#{attack}ダメージチェック > (#{dicetext}) > #{result}" return text end
getJudgeResult(command)
click to toggle source
通常判定
# File lib/bcdice/game_system/Paradiso.rb, line 54 def getJudgeResult(command) case command when /^(\d+)?D20<=(\d+)?(\[(\d+)(,(\d+))?\])?(@(\d+))?$/i number = (Regexp.last_match(1) || 1).to_i # ダイス数。省略時は1 target = (Regexp.last_match(2) || 14).to_i # 目標値。省略時は14 if 空白 then 14 else 記載の値 fumble1 = (Regexp.last_match(4) || 21).to_i # 追加ファンブル値。省略時は21 fumble2 = (Regexp.last_match(6) || 21).to_i # 追加ファンブル値。省略時は21 critical = (Regexp.last_match(8) || 21).to_i # 追加クリティカル値。省略時は21 when /^(\d+)?CP(\d+)?(\[(\d+)(,(\d+))?\])?(@(\d+))?$/i number = (Regexp.last_match(1) || 1).to_i target = (Regexp.last_match(2) || 14).to_i fumble1 = (Regexp.last_match(4) || 21).to_i fumble2 = (Regexp.last_match(6) || 21).to_i critical = (Regexp.last_match(8) || 21).to_i else return nil end dice = 0 dicetext = "" crit_flg = false fumb_flg = false succ_flg = false number.times do dice = @randomizer.roll_once(20) if dicetext == "" dicetext = dice.to_s else dicetext = dicetext + "," + dice.to_s end if [1, critical].include?(dice) crit_flg = true elsif [20, fumble1, fumble2].include?(dice) # パラディーゾではクリティカル優先! fumb_flg = true elsif dice <= target succ_flg = true end end if crit_flg == true result = "クリティカル" elsif fumb_flg == true result = "ファンブル" elsif succ_flg == true result = "成功" else result = "失敗" end text = "(#{number}D20 目標値#{target}) > (#{dicetext}) > #{result}" return text end
get_exploration_table()
click to toggle source
探索表
# File lib/bcdice/game_system/Paradiso.rb, line 245 def get_exploration_table dice = @randomizer.roll_once(20) case dice when 1 text = "クソっ!このマスに付与されていた\[手がかり\]を失う。" when 2 text = "「ツケ払いやがれ!」見に覚えがあるかないか。キミに詰め寄ってくるヤツがいる。【物資点】を10点消費するか、「ツケを伸ばす」のどちらかを選択する。ツケを伸ばすを選択した場合、次にキミが行う「●探索」のアクションでも、探索表の結果は参照せず、自動的にこの効果が適用される。" when 3 text = "謎は深まる。このマスに付与されていた\[手がかり\]を失い、ランダムな場所に再付与する。【情報点】は得られない。" when 4 text = "コネクションは大事だ。「支援チェック」をチェックしていない【キズナ】が1点以上存在すれば、その「支援チェック」を入れたあと、このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" when 5..8 text = "情報を手に入れるためには、少し骨を折る必要がありそうだ。好きな能力値を2つ組み合わせて{探索判定}を行う。成功すればこのマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" when 9 text = "情報を提供してくれるというアイツは見返りを要求してきた。【物資点】を4点消費できる。そうした場合、このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" when 10..13 text = "危なげなく情報ゲット。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。" when 14 text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、【物資点】を5点獲得する。" when 15 text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、アイテム「チケット」(P\.69)を入手する。" when 16 text = "昔の仲間から手がかりについて聞くことになった。ついでに積もる話も少々。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。" when 17 text = "空軍にいる友人から手がかりについて聞くことになった。「なあ、お前もフラフラしてないで空軍に入ったらどうだ?」耳に痛い。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、アイテム「空軍のツテ」(P\.69)を入手する。" when 18 text = "手がかりを追っていたら他にもボロボロと……。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、1D20を二回振り、この「クエストマップ」上のランダムなマス2つを求める。それらのマスに\[手がかり\]が付与されていなければ、\[手がかり\]を付与する。" when 19 text = "あっさり情報を掴むことができてしまった。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。この「●探索」ではアクションを消費せず、追加で別のアクションを宣言する事ができる。" when 20 text = "これは重要な手がかりだ! このマスに付与されていた\[手がかり\]を失い、【情報点】を2点獲得する。" end return "探索表" + "\(" + dice.to_s + "\):" + text end
get_flightsupply_table()
click to toggle source
補給表
# File lib/bcdice/game_system/Paradiso.rb, line 282 def get_flightsupply_table dice = @randomizer.roll_once(20) case dice when 1 text = "……えっ?! キミの【物資点】は0点となる。" when 2 text = "おいおい勘弁してくれよ……。このアクションがそのセグメントの一回目のアクションだった場合、キミは2回目のアクションを行えない。その後【物資点】を5点獲得する。" when 3 text = "取材に巻き込まれる。【物資点】は獲得できないが、記者の発言からはぽろりとなにかが見えたような?1D20を振り、出た目に対応したマスに「手がかり」を1つ配置する。" when 4 text = "成果ゼロ。ま、こんな日もあるかな。【物資点】は獲得できない。" when 5 text = "うまいこと補給できなかった。【物資点】を5点獲得する。" when 6 text = "「一稼ぎと言ったらこれだろ?」と声をかけてくる悪友たち。「カジノ」(『基本ルールブック』P\.55)のスポット効果を即座に適用する。ただしこの処理では判定の失敗により「刑務所」のスポット効果を持つスポットに移動する効果は発生せず、代わりに「酒場」のスポット効果を持つスポットに移動した上で、自身が持つ全ての【キズナ】の「支援チェック」にチェックを入れる。その後、次のセグメントが終了するまでの間アクションは行えない。" when 7..9 text = "のんびり釣りといこう。釣果は運次第だ。1D20を振り、出た目と同じ数だけ【物資点】を獲得する。" when 10..12 text = "なにごともなく補給が完了する。【物資点】を10点獲得する。" when 13 text = "ラジオの音が聞こえる。PCが望むなら、1D20を振り、出た目を「ラジオ・マリエッタ表」(『基本ルールブック』P.29)に照らし合わせて、その結果を反映する。これ以後、朝セグメントで振られたラジオ・マリエッタ表の効果は失われる。その後【物資点】を10点獲得する。" when 14 text = "補給の合間、ちょっと口寂しくなってしまって露店へ。【物資点】を8点獲得し、アイテム「レモネード」(『基本ルールブック』P\.69)を入手する。" when 15 text = "補給の合間、軽くメンテナンス。【機体コンディション】を1点下げることができる。その後【物資点】を10点獲得する。" when 16 text = "補給の合間、店主と軽く談笑。【乗り手コンデイション】を1点下げることができる。その後【物資点】を10点獲得する。" when 17 text = "補給の合間、仲間に軽く挨拶しておこうか。同じマスに他のPCがいた場合、そのPC1人への【キズナ】を1点獲得する。その後【物資点】を10点獲得する。" when 18 text = "補給の合間に通りがかった相手と意気投合。相手はキミへの【キズナ】を1点取得する。【物資点】を10点獲得する。" when 19 text = "あっさり補給が終わってしまった。どうしようかな。この補給ではアクションを消費せず、【物資点】を10点獲得する。" when 20 text = "降って湧いた幸運!【物資点】が20点になる。" end return "補給表" + "\(" + dice.to_s + "\):" + text end
get_radiomarietta_table()
click to toggle source
ラジオマリエッタ表
# File lib/bcdice/game_system/Paradiso.rb, line 171 def get_radiomarietta_table dice = @randomizer.roll_once(20) case dice when 1 text = "「なんてこった! ここで事故のお知らせだ!」\n通行止め……。ランダムなマス1つを決定する。この一日中、そのマスに移動する事はできない。" when 2..4 text = "「今日はまたずいぶんと湿気てるねぇ……。古傷がある人は要注意だよ」\n天候が悪い。この一日中、「●移動」のアクションで移動できるマス数は常に1マス低くなる。" when 5..10 text = "「日常は至上! 異常は退場! なんにもないからラジオは以上! ……なんつて」\nいつもどおりの日々。のんびりとした風で、何事もなし。" when 11, 12 text = "「それじゃ、本日のメインコーナー。行ってみよう!」\n軽妙なトーク。PC全員の【乗り手コンディション】が1点小さくなる。" when 13..15 text = "「いーなー、こんな日はボクも飛んでみたい気分だよ! ブオノあたりまでバーッとね!」\nとんでもなく快晴で絶好のフライト日和。【機体コンディション】【乗り手コンディション】がそれぞれ1点小さくなる。" when 16 text = "「店頭で言えば嬉しい値引き。本日のラッキーワードをメモする用意はできたかい?」\nおトクな情報。この一日中、各PCごとに一回ずつ、「価格」の効果値が2低いものとして効果を処理できる(最低値0)" when 17 text = "「いっやー……熱演だったね。もーぅ次回が待ちきれなぁい!!」\nラジオドラマが神回だった。その日一日に行う「交流」で獲得できる【キズナ】の点数が+1される。" when 18 text = "「イエス!ナイス!エレガンス!あのサーカス団が帰ってくる!」\nサーカス団がやってくる!ランダムなマス1つを決定する。\nこの一日中、そのマスは「娯楽施設:5」(P.55)の効果を得る。" when 19 text = "「ラジオネーム、ハプニングさんからのお便り! おっとぉ、これは興味深い相談だ」\nラジオの話している内容から手がかりが見つかる。\[手がかり\]が1箇所追加で配置される。" when 20 text = "「今夜は素敵なパーリィデイ! みんな!今夜の仮装を何にするかはもう決めてるかな?」\n酒場でパーティだ!「酒場」のスポット効果を持つスポットに「レストラン:「パーティ」」が追加される。" end return "ラジオマリエッタ表" + "\(" + dice.to_s + "\):" + text end
get_takeoff_table()
click to toggle source
移動表
# File lib/bcdice/game_system/Paradiso.rb, line 200 def get_takeoff_table dice = @randomizer.roll_once(20) case dice when 1 text = "エンジンがぶっ壊れた!ただちに【機体コンディション】が「20」となり、このターン中は2つ目のアクションも含め「●移動」することができない。" when 2 text = "離水に失敗した! キミの愛機のダメージマップ上の任意の「翼」部位のダメージボックスに1点のダメージを与え、このターン中は2つ目のアクションも含め「●移動」することができない。" when 3 text = "軽いエンジントラブル。このアクションでは移動することができない。" when 4 text = "同業者に遭遇。しかし煽られて曲芸飛行につきあわされる。\n任意の方向に強制的に3マス移動し、【物資点】3点を失う。" when 5 text = "道を間違えたらしい。【物資点】を5点消費し、ランダムな方向に1マス移動する効果を3回繰り返す。" when 6 text = "気づいたらオイル漏れを起こしていた!【物資点】を3点消費する。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。" when 7 text = "あいにくのにわか雨。あまり飛びたくないなあ。1マスにつき1点の【物資点】を消費して最大2マスまで移動できる。" when 8 text = "唐突な襲撃。一撃加えたあと、謎の襲撃者はいずこかへ去っていった……。命中判定の達成値が12であると扱う、【火力】3のダメージチェックを受ける。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。" when 9 text = "んー、少し調子が悪いかな? 1マスにつき1点の【物資点】を消費して最大3マスまで移動できる。" when 10..12 text = "順調な空の旅。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる。" when 13 text = "島巡りの観光艇と遭遇。ちやほやされていい気分。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、キミの【乗り手コンディション】を2点までの任意の点数下げる事ができる。" when 14 text = "同業者と遭遇。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。" when 15 text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大7マスまで移動できる上、キミの【機体コンディション】を2点までの任意の点数下げる事ができる。" when 16 text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでも続けて「●移動」を行う事ができる。" when 17 text = "通りかかった先に思わぬ情報が!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでは今いるマスに\[手がかり\]が配置されているものとして「●探索」が行える。" when 18 text = "酒場が恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の「酒場」のスポット効果を持つマスに移動する。" when 19 text = "アジトが恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の任意のキミの「アジト」に移動する。" when 20 text = "仲間が恋しい……。【物資点】を5点消費し、即座に任意のPC一人のいる場所に移動する。" end return "移動表" + "\(" + dice.to_s + "\):" + text end