lib/bcdice/game_system/HatsuneMiku.rb
# frozen_string_literal: true
module BCDice
module GameSystem
class HatsuneMiku < Base
# ゲームシステムの識別子
ID = 'HatsuneMiku'
# ゲームシステム名
NAME = '初音ミクTRPG ココロダンジョン'
# ゲームシステム名の読みがな
SORT_KEY = 'はつねみくTRPGこころたんしよん'
# ダイスボットの使い方
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
・判定(Rx±y@z>=t)
能力値のダイスごとに成功・失敗の判定を行います。
x:能力ランク(S,A~D)。数字指定で直接その個数のダイスが振れます
y:修正値。A+2 あるいは A++ のように表記。混在時は A++,+1 のように記述も可能
z:スペシャル最低値(省略:6) t:目標値(省略:4)
例) RA R2 RB+1 RC++ RD+,+2 RA>=5 RS-1@5>=6
結果はネイロを取得した残りで最大値を表示
例) RB
HatsuneMiku : (RB>=4) > [3,5] >
ネイロに3(青)を取得した場合 5:成功
ネイロに5(白)を取得した場合 3:失敗
・各種表
ファンブル表 FT/致命傷表 CWT/休憩表 BT/目標表 TT/関係表 RT
障害表 OT/リクエスト表 RQT/クロウル表 CLT/報酬表 RWT/悪夢表 NMT/情景表 ST
・キーワード表
ダーク DKT/ホット HKT/ラブ LKT/エキセントリック EKT/メランコリー MKT
・名前表 NT
コア別 ダーク DNT/ホット HNT/ラブ LNT/エキセントリック ENT/メランコリー MNT
・オトダマ各種表
性格表A OPA/性格表B OPB/趣味表 OHT/外見表 OLT/一人称表 OIT/呼び名表 OYT
リアクション表 ORT/出会い表 OMT
INFO_MESSAGE_TEXT
def initialize(command)
super(command)
@d66_sort_type = D66SortType::ASC
end
def eval_game_system_specific_command(command)
text = judgeRoll(command)
return text unless text.nil?
return roll_tables(command, TABLES)
end
def judgeRoll(command)
return nil unless /^(R([A-DS]|\d+)([+\-\d,]*))(@(\d))?((>(=)?)([+\-\d]*))?(@(\d))?$/i =~ command
skillRank = Regexp.last_match(2)
modifyText = Regexp.last_match(3)
signOfInequality = (Regexp.last_match(7).nil? ? ">=" : Regexp.last_match(7))
targetText = (Regexp.last_match(9).nil? ? "4" : Regexp.last_match(9))
specialNum = Regexp.last_match(5)
specialNum ||= Regexp.last_match(11)
specialNum ||= 6
specialNum = specialNum.to_i
specialText = (specialNum == 6 ? "" : "@#{specialNum}")
modifyText = getChangedModifyText(modifyText)
commandText = "R#{skillRank}#{modifyText}"
rankDiceList = {"S" => 4, "A" => 3, "B" => 2, "C" => 1, "D" => 2}
diceCount = rankDiceList[skillRank]
diceCount = skillRank.to_i if skillRank =~ /^\d+$/
modify = ArithmeticEvaluator.eval(modifyText)
target = ArithmeticEvaluator.eval(targetText)
diceList = @randomizer.roll_barabara(diceCount, 6).sort
diceText = diceList.join(",")
diceList = [diceList.min] if skillRank == "D"
message = "(#{commandText}#{specialText}#{signOfInequality}#{targetText}) > [#{diceText}]#{modifyText} > "
if diceList.length <= 1
dice = diceList.first
total = dice + modify
result = check_success(total, dice, signOfInequality, target, specialNum)
message += "#{total}:#{result}"
else
texts = []
diceList.each_with_index do |pickup_dice, index|
rests = diceList.clone
rests.delete_at(index)
dice = rests.max
total = dice + modify
result = check_success(total, dice, signOfInequality, target, specialNum)
colorList = ["黒", "赤", "青", "緑", "白", "任意"]
color = colorList[pickup_dice - 1]
texts << " ネイロに#{pickup_dice}(#{color})を取得した場合 #{total}:#{result}"
end
texts.uniq!
message += "\n" + texts.join("\n")
end
return message
end
def getChangedModifyText(text)
modifyText = ""
values = text.split(/,/)
values.each do |value|
case value
when "++"
modifyText += "+2"
when "+"
modifyText += "+1"
else
modifyText += value
end
end
return modifyText
end
def check_success(total_n, dice_n, signOfInequality, diff, special_n)
return "ファンブル" if dice_n == 1
return "スペシャル" if dice_n >= special_n
cmp_op = Normalize.comparison_operator(signOfInequality)
target_num = diff.to_i
if total_n.send(cmp_op, target_num)
"成功"
else
"失敗"
end
end
TABLES = {
"FT" => DiceTable::Table.new(
"ファンブル表",
"1D6",
[
"周囲から活気が失われる。黒以外のすべてのネイロを一つずつ減らす。",
"仲間に迷惑をかけてしまう。自分以外のPC全員の【生命力】が1点減少する。",
"この失敗は後に祟るかもしれない……。自分の【生命力】が1D6点減少する。",
"ココロに疲労感が満ちていく。自分がストレスを1点受ける。",
"1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。",
"ラッキー!特に何も起こらない"
]
),
"CWT" => DiceTable::Table.new(
"致命傷表",
"1D6",
[
"絶望的な攻撃を受ける。そのキャラクターは強制退出になる。",
"苦痛の悲鳴をあげ、無惨にも崩れ落ちる。そのキャラクターは行動不能になる。また、黒のネイロが一つ増える。",
"オトクイの一撃で、あなたは吹き飛ばされてしまう。そのキャラクターは行動不能になる。また、分類が装備のナンバーにストレスを1点受ける。",
"強烈な一撃を受けて気絶する。そのキャラクターは行動不能になる。",
"意識はあるが、立ち上がることができない。そのキャラクターは行動不能になる。次のシーンにまだ【生命力】が0点だった場合、自動的に1点に回復する。",
"奇跡的に踏みとどまり、持ちこたえる。【生命力】が1点になる。"
]
),
"BT" => DiceTable::Table.new(
"休憩表",
"1D6",
[
"仲間との楽しい時間。自分の【想い人】のパトスを一つ回復する。",
"これまでの冒険を思い返す。自分の【能力値】のパトスを一つ回復する。",
"自分のオトダマと会話する。【協力者】のパトスか、ナンバーのパトスを一つ回復する。",
"体をゆっくり休める。自分の【生命力】を2D6点回復する。望むなら、回復を行う前に、自分の【活力】を決め直してもよい。",
"お、ラッキー!いいもの見つけた!自分のコインを1枚増やす。",
"ノイズストアに接続できた。各PCは、自分の【頭脳】のダイスの数と同じ個数まで、アプリを購入できる。"
]
),
"TT" => DiceTable::Table.new(
"目標表",
"1D6",
[
"悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。",
"狡猾。パラグラフ1〜5の中で、もっとも高い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。",
"堅実。PCの中で、その脅威の「判定欄」に書かれた能力値がもっとも低いランクのキャラクター一人を目標に選ぶ。もっとも低いランクのキャラクターが複数いる場合、その中から、もっとも低いモッドのキャラクター一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。",
"豪快。PCの中でもっとも高いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも高いランクの持ち主が複数いる場合、その中から、もっとも高いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。",
"単純。パラグラフ1〜5の中で、もっとも低い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。",
"乱戦。その脅威のいるパラグラフの数値と数値が1離れたパラグラフにいるPC全員を目標に選ぶ。そのパラグラフにPCがいなかった場合、GMが自由に一人目標を選ぶ。"
]
),
"RT" => DiceTable::Table.new(
"関係表",
"1D6",
[
"恋心(プラス)/殺意(マイナス)",
"同情(プラス)/侮蔑(マイナス)",
"憧憬(プラス)/嫉妬(マイナス)",
"信頼(プラス)/疑い(マイナス)",
"共感(プラス)/不気味(マイナス)",
"大切(プラス)/面倒(マイナス)"
]
),
"OT" => DiceTable::Table.new(
"障害表",
"1D6",
[
"あなたのココロに大きな変化が訪れる。1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。",
"あなたは肉体的に大きなダメージを負う。1D6点のダメージを受ける。",
"ノイズの助けを借りて問題を解決する。コインを1D6枚を支払う必要がある。コインを支払う場合、ほかのPCからコインを譲ってもらってもよい。支払いが足りなかった場合、その差額分だけ自分の【生命力】を減らす。",
"大きな疲労感を感じる。ストレスを1点受ける。",
"思わず時間をつかってしまう。【タイム】が1点減少する。",
"場にイヤな気配が満ちていく。黒のネイロが一つ増える。"
]
),
"RQT" => DiceTable::Table.new(
"リクエスト表",
"2D6",
[
"そのエリアの風景が、あなたの【情景】へと書き換えられていく。「お前の始まりの物語を語れ。お前はこの地で何を思った?」",
"あなたは、そのエリアの風景の中に懐かしいものを見つけ、自分の罪を思い出した。「何を見た?なにを悔いている?」",
"そのエリアの風景が、あなたのコアと同じ色に染まる。あなたは、その風景の中になりたい自分の姿を見つける。「それがお前の望みか?お前は未来に何を求める?」",
"あなたの脳裏に、人物欄に書かれた人物一人のイメージが浮かぶ。その人物は何かを囁き、あなたのココロが傷ついた。「そいつは誰だ?一体何と言ったのだ?」",
"あなたは、そのエリアの風景の中に奇妙なものを見つけ、恐怖した。「何を見た?なぜそれを恐れる?」",
"そのエリアにココロダンジョンの持ち主が現れる。その人物は、お前に質問してくる。「私をどう思ってる?なぜ、私を助ける?」",
"あなたのオトダマの姿が、あなたのよく知っている人物に変わる「その人物は誰だ?そいつをどう思っている?」",
"そのエリアに、あなたの持つナンバーが響き渡る。「これがお前のウタか?そのウタの名はなんだ?」",
"あなたのオトダマの姿が、あなたの好きな人物の姿に変わる。「それがお前が焦がれる人物か。そいつをどうしたい?」",
"そのエリアの風景にあなたの日常が浮かび上がる。「お前は何をしている?その暮らしをどう思っている?」",
"あなたの目の前に、あなたの死体が横たわっている。「お前を殺すものは何だ?お前は誰に殺される?」"
]
),
"CLT" => DiceTable::Table.new(
"クロウル表",
"2D6",
[
"パスワードが抜き取られていた! 所持金が無くなっている! 自分のコインを3枚失う。",
"過去に同様のオトクイと出会ったことのある人物に出会う。【技術】で判定を行う。成功すると、「特殊アプリの開発」を行うことができる(この間奏アクションには【タイム】は必要ない)。必要なコインは1枚少なくなる。",
"近所にあるパワースポットを教えてもらう。【霊力】で判定を行う。成功すると、自分の【生命力】を【活力】の値だけ回復することができる。",
"あなたのことを知る人物に出会う。どんな思い出話をしたのだろうか? この質問はリクエストとして扱う。",
"プライベートの友人からメールが届いている。【愛】で判定を行う。成功すると、好きなNPCを協力者として設定することができる。判定に失敗すると苦情のメールだった。ストレスを1点受ける。",
"ノイズメンバーから応援のメッセージをもらう。好きなネイロを1つ獲得する(この効果で。特定のネイロを7個以上にすることはできない)。",
"美味しい食べ物屋さんに関する情報を教えてもらう。【日常】で判定を行う。成功すると、自分のストレスを1点回復できる。",
"オトクイに関する情報を求めているノイズメンバーに出会う。公開されている脅威1つにつき、その情報をコイン1枚で売却できる。このイベントが2度以上起きた場合、すでに売却した脅威の情報を再び売ることはできない。",
"試作アプリの試験者を募集している。好きなアプリ1つを獲得する。ただし、このアプリを使用するときサイコロを1個振ること。1か2が出ると、そのアプリは効果を発揮しない。セッション中に、試作アプリを使用しているとセッション終了時にレポートを提出できる。【頭脳】で判定を行う。成功すると、コインを1枚獲得できる。",
"自分に関する悪口を見つける。そこには、どんな悪口が書かれていたのだろうか。 この質問は、リクエストとして扱う。",
"同じ種類のオトダマと契約しているオトダマ使いと意気投合。このセッションの間、自分のナンバー1つを、修得可能な別のナンバーに変更することができる。",
]
),
"RWT" => DiceTable::Table.new(
"報酬表",
"1D6",
[
"ノイズからオトクイ退治の報酬をもらうことができる。[倒したオトクイの本体のレベル]枚のコインを獲得する。",
"ノイズにオトダマの情報を売ることができる。[自分の【頭脳】のダイスの数]枚のコインを獲得する。",
"冒険を通じて因縁が芽生える。今回登場したキャラクターの中から一人を選ぶ。そのキャラクターを、自分の【想い人】にする。",
"冒険を通じて絆が結ばれる。今回登場したNPCの中から一人を選ぶ。そのキャラクターを、自分の【協力者】にする。",
"冒険の思い出が【ウタの欠片】になる。今回の冒険に登場した仲間、情景、出来事などなどから、キーワードを一つ選ぶ。そのキーワードを【ウタの欠片】のキーワード欄に追加する。",
"戦いの経験が【ウタの欠片】になる。今回の冒険に登場した敵、情景、出来事などなどから、キーワードを一つ選ぶ。そのキーワードを【ウタの欠片】のキーワード欄に追加する。",
]
),
"NMT" => DiceTable::Table.new(
"悪夢表",
"1D6",
[
"絶望のウタに知覚を遮断される。背後にオトクイの気配を感じたと思ったときは遅かった。卑劣な攻撃があなたを襲う。好きな能力値で判定を行う。失敗するとあなたのキャラクターは、オトナシとなり、二度と冒険に参加できない。",
"絶望のウタに混じり、悲痛な叫びが聞こえてくる。ココロダンジョンの持ち主だろうか。あなたは、救えなかったのだ。【日常】で判定を行う。失敗すると、自分の能力値一つを選ぶ。次回のセッションは、その能力値にストレスを受けた状態で始まる。",
"絶望のウタに混じり、オトクイの笑いがこだまする。それは嘲りの笑いだった。オトクイや仲間たち……何より自分への怒りがわき上がる。【日常】で判定を行う。失敗すると、自分の想い人への【想い】を一つ失う。",
"絶望のウタの中に一人取り残される。誰もあなたに気づかない。孤独に耐えながら、何とか日常へ帰還したが……そのときの恐怖がぬぐえない。【日常】で判定を行う。失敗すると、次回のセッションは、自分の【生命力】の現在値が通常の半分(端数切り上げ)の状態で始まる。",
"ココロダンジョンから帰還したあなたを待っていたのは、代わり映えのない日常だった。あなたが任務に失敗しても、世界は変わらない。なら、もう、あんな怖い目をする必要はないんじゃないか? 【日常】で判定を行う。失敗すると、自分のナンバー一つを選ぶ。次回のセッションは、そのナンバーにストレスを受けた状態で始まる。",
"絶望のウタの中を必死で逃げ出した。背後から仲間の声が聞こえた気がする。しかし、あなたは振り返ることができなかった。【日常】で判定を行う。失敗すると、自分に対して【想い】を持っているPC一人を選び、その自分に対する【想い】が失われる。",
]
),
"ST" => DiceTable::D66Table.new(
"情景表",
D66SortType::ASC,
{
11 => "立ち並ぶ本棚の森",
12 => "夕日が差し込む教室",
13 => "鳴り止まない踏切",
14 => "ビルから見下ろした街並み",
15 => "二人で見た星空",
16 => "液晶画面に映る奇妙な光景",
22 => "ガラス窓に並ぶ雨だれ",
23 => "植物園の温室",
24 => "屋台が並ぶ祭りの風景",
25 => "陽炎が立ちのぼるアスファルト",
26 => "0時を示す時計の針",
33 => "無機質な白い天井",
34 => "暗闇に浮かび上がるヘッドライト",
35 => "後ろからついてくる野良猫",
36 => "一面の花畑",
44 => "あなたを見つめる大勢の観衆",
45 => "降り積もる雪",
46 => "古めかしい洋館の応接間",
55 => "おとぎ話に出てくるような森",
56 => "深夜のコンビニ",
66 => "誰もいない体育館"
}
),
"DKT" => DiceTable::D66Table.new(
"ダーク・キーワード表",
D66SortType::ASC,
{
11 => "崩壊する楽園",
12 => "空に堕ちる",
13 => "優しい暴力",
14 => "沈黙の掟",
15 => "闇に溺れる",
16 => "こぼれ落ちた命",
22 => "行き止まりの絶望",
23 => "漆黒の翼",
24 => "眠れぬ夜",
25 => "避けられぬ運命",
26 => "斬り裂かれた景色",
33 => "からっぽな自分",
34 => "仮面の奥",
35 => "月光中毒",
36 => "昏い魔術",
44 => "……オブザデッド",
45 => "ココロを殺す",
46 => "感染する破滅",
55 => "愛の鎖",
56 => "残酷な真実",
66 => "デスゲーム"
}
),
"DNT" => DiceTable::D66Table.new(
"ダーク・名前表",
D66SortType::ASC,
{
11 => "ダーク/濁、搦 ネロ/音呂、寝路",
12 => "クロト/黒斗、玄徒 ヤミ/夜美、闇",
13 => "ネクロ/根黒、寝喰 マコ/魔子、混乎",
14 => "カゲオ/影男、陰夫 オニコ/鬼子、隠忍呼",
15 => "アクタ/芥、悪太 ホタル/蛍、歩足",
16 => "マオウ/魔王、万凹 ミダラ/淫、美堕裸",
22 => "マミヤ/魔美也、狸夜 ジャミ/邪美、蛇実",
23 => "ドクロ/髑髏、毒炉 ヨミ/黄泉、詠",
24 => "マクラ/枕、真暗 サツキ/殺鬼、五月",
25 => "ゲドウ/外道、戯堂 サヤ/小夜、鞘",
26 => "ジゴク/地獄、慈極 ウマル/埋、兎丸",
33 => "エンド/怨人、終 ヨハネ/夜羽、世刎",
34 => "ノロイ/呪、鈍 カバネ/屍、椛音",
35 => "アクム/悪夢、飽夢 クサリ/腐、鎖",
36 => "バツ/罰、× ニエ/贄、沸",
44 => "ネガ/音我、願 リリス/璃々子、離里素",
45 => "ウツロ/虚、洞 ネタミ/妬美、寝多実",
46 => "ハジメ/始、創 ホロビ/滅、亡",
55 => "ザイン/罪印、沙陰 リンボ/淋墓、辺獄",
56 => "ハラワタ/腑、祓輪太 ユガミ/歪、由神",
66 => "イミ/忌、逝美 ムイミ/無意味、無為巳"
}
),
"HKT" => DiceTable::D66Table.new(
"ホット・キーワード表",
D66SortType::ASC,
{
11 => "真夜中をぶっ壊す",
12 => "夢を打ち上げろ",
13 => "譲れない明日",
14 => "あふれ出す衝動",
15 => "獣を解き放て",
16 => "蒸発した涙",
22 => "高らかに叫べ",
23 => "負けられない戦い",
24 => "握りしめた拳",
25 => "疾走する青春",
26 => "ココロに従え",
33 => "がんばれ",
34 => "そのまま進め",
35 => "自分の旗",
36 => "抗い壊し突き進む",
44 => "咲き誇る情熱の花",
45 => "暑苦しい友情",
46 => "オレ色に染まれ",
55 => "世界に八つ当たり",
56 => "消せない炎",
66 => "オーバードライブ"
}
),
"HNT" => DiceTable::D66Table.new(
"ホット・名前表",
D66SortType::ASC,
{
11 => "レッド/烈怒、煉集 アカネ/赤音、茜",
23 => "タケル/武、猛 ヒトミ/瞳、仁美",
36 => "ジョウ/情、丈 アオリ/煽、亜織",
12 => "アツシ/熱、純志 カンナ/神奈、柑菜",
24 => "グレン/紅蓮、九煉 ナツコ/夏子、懐子",
44 => "ロック/六句、麓 フォルテ/鳳流弖、彫照",
13 => "カケル/駆、賭 ハル/晴、春",
25 => "アラシ/嵐、荒 ヒカル/光、晃",
45 => "ヤマト/大和、岳斗 イサミ/伊佐美、勇美",
14 => "ガッツ/牙突、勝 アカリ/紅莉、明里",
26 => "エンジョウ/炎上、円定 コマチ/小町、小真知",
46 => "リュウセイ/流星、龍盛 ミライ/未来、美良依",
15 => "ケン/剣、拳 アスカ/明日香、飛鳥",
33 => "レツ/烈、裂 リズム/理澄、李珠夢",
55 => "イカル/怒、鵤 ヒマワリ/向日葵、火回",
16 => "ゴウ/豪、剛 ヒミコ/日美子、卑弥呼",
34 => "リキ/力、陸希 キョウカ/響歌、驚花",
56 => "ツトム/努、勉 ハナビ/花火、羽夏妃",
22 => "ヒイロ/火色、陽彩 アキラ/晶、爽",
35 => "ホムラ/焔、吠叢 カグヤ/輝夜、赫映",
66 => "レオ/伶央、獅王 マツリ/祭、茉莉"
}
),
"LKT" => DiceTable::D66Table.new(
"ラブ・キーワード表",
D66SortType::ASC,
{
11 => "大人の恋",
12 => "ドキドキが止まらない",
13 => "つないだ手",
14 => "世界を敵に回しても",
15 => "重なる声",
16 => "君のためなら死ねる",
22 => "甘い口づけ",
23 => "まぶたをとじて",
24 => "キミとボク",
25 => "好きとか嫌いとか",
26 => "いつまでも",
33 => "抱きしめたい",
34 => "75億と1千五百万人愛してる",
35 => "自動的な恋",
36 => "会いたい",
44 => "伝えたいコトバ",
45 => "ありがとう",
46 => "時間を止めて",
55 => "大好き",
56 => "素敵な贈り物",
66 => "ビューティフルワールド"
}
),
"LNT" => DiceTable::D66Table.new(
"ラブ・名前表",
D66SortType::ASC,
{
11 => "シアン/詩庵、思杏 アオイ/葵、蒼生",
12 => "ソナタ/奏名太、其方 イズミ/泉、出海",
13 => "ツナグ/繋、継 カレン/可憐、歌恋",
14 => "ミノル/実、稔 コイ/恋、鯉",
15 => "ユウ/優、悠 ラブ/良舞、羅步",
16 => "レイン/玲音、霊印 アマミ/甘味、天海",
22 => "ソウヤ/想夜、添也 フミ/文、芙美",
23 => "イトシ/糸糸、意俊 コイシ/恋志、小石",
24 => "エガオ/笑顔、描生 オモイ/想、念",
25 => "マコト/誠、真実 マナ/真菜、愛",
26 => "ユウリ/有理、悠里 ケイ/恵、佳",
33 => "チヒロ/千尋、茅紘 ウララ/麗、占",
34 => "トモ/友、杜望 ヒナ/雛、比奈",
35 => "ソラ/空、宙 ツユ/露、梅雨",
36 => "ユウダイ/雄大、優大 ノゾミ/望、希海",
44 => "ハグ/剥、抱 キス/喜好、口吻",
45 => "ショウタ/翔太、祥太 アイ/愛、藍",
46 => "ジュン/純、潤 ミサオ/美沙緒、操",
55 => "リョウ/涼、猟 イチズ/一途、意地図",
56 => "シグレ/時雨、紫暮 アオバ/青葉、碧羽",
66 => "ロミオ/路美雄、露澪 ロマン/浪漫、絽萬"
}
),
"EKT" => DiceTable::D66Table.new(
"エキセントリック・キーワード表",
D66SortType::ASC,
{
11 => "シェフのきまぐれニルヴァーナ",
23 => "宇宙人とデート",
36 => "ぷるぷる",
12 => "おかず食べ過ぎ",
24 => "まいにち寝正月",
44 => "夜明けのツタンカーメン",
13 => "バイバイバイアグラ",
25 => "猫がにゃー",
45 => "半額の宴",
14 => "おふとん王国の攻防",
26 => "道草にがい",
46 => "超気持ちいいなにか",
15 => "ぐるぐるとクルクル",
33 => "ブシドーロック!サムライパンク!",
55 => "いあ!いあ!はすたあ!",
16 => "ゴリラの千年王国",
34 => "冷やしインド",
56 => "小学生に貯金で負けた",
22 => "くもん式フランケンシュタイナー",
35 => "生きててよかった",
66 => "秒速1ポロンクセマ"
}
),
"ENT" => DiceTable::D66Table.new(
"エキセントリック・名前表",
D66SortType::ASC,
{
11 => "ライム/来夢、雷鵡 ミドリ/緑、美登里",
12 => "ランポ/乱歩、蘭舗 ビビリ/恐、美々裏",
13 => "シラズ/不知、調頭 ヒスイ/翡翠、陽彗",
14 => "ムウ/夢生、無 キノコ/茸、紀乃子",
15 => "ネコヒコ/猫彦、寝子日子 イヌコ/犬子、夷猫",
16 => "ダダ/駄々、蛇陀 キリコ/切子、霧湖",
22 => "イケメン/活面、逝麺 ラムネ/来夢音、螺旨",
23 => "キョウスケ/狂介、京助 ランマ/乱麻、爛漫",
24 => "ネジ/螺子、寝児 アリス/有栖、亜梨子",
25 => "マワル/回、環 タタミ/畳、多々実",
26 => "キュウ/球、Q ズキン/頭巾、厨琴",
33 => "サバン/沙蛮、裂卍 マニア/摩尼亜、間合",
34 => "カエル/帰、蛙 エリマキ/襟巻、絵里真希",
35 => "ナゾウ/謎宇、何造 カンノン/観音、疳暢",
36 => "イッキュウ/一休、逸宮 ミロク/弥勒、診録",
44 => "シュール/酒潤、終琉 カプリ/華降、噛布里",
45 => "キジン/奇人、鬼神 フシギ/不思議、節黄",
46 => "カブキ/歌舞伎、傾 メロン/芽論、女侖",
55 => "ジョーカー/冗歌、浄化 ピエロ/秘絵呂、道化師",
56 => "ウイロウ/外郎、初弄 マッチャ/抹茶、末耶",
66 => "ビックリ/吃驚、! ハテナ/果菜、?"
}
),
"MKT" => DiceTable::D66Table.new(
"メランコリー・キーワード表",
D66SortType::ASC,
{
11 => "ごめんなさい",
12 => "甘い甘い逃避",
13 => "ひとりぼっち",
14 => "ズルい世界",
15 => "果たせなかった約束",
16 => "取り返しのつかない言葉",
22 => "いっそ死にたい",
23 => "置いてきた夢",
24 => "見あげた青空",
25 => "きみの嘘",
26 => "すれ違う言葉",
33 => "幸せだった昨日",
34 => "こんなはずじゃなかった",
35 => "別れてしまった二つの道",
36 => "また会えたらいいね",
44 => "ここではないどこか",
45 => "青春の終わり",
46 => "大好きだった膝の上",
55 => "誰かぼくをほめて",
56 => "高潔な裏切り",
66 => "ナルシズム"
}
),
"MNT" => DiceTable::D66Table.new(
"メランコリー・名前表",
D66SortType::ASC,
{
11 => "ヴァイス/灰主、唄守 マシロ/真白、万代",
12 => "キズ/傷、疵 ダレカ/誰香、惰麗華",
13 => "ユレル/揺、遊玲流 エモ/絵萌、恵面",
14 => "オボロ/朧、憶露 ホノカ/仄、穂乃香",
15 => "メロ/夢露、芽朗 シズ/静、志津",
16 => "ヒイラギ/柊、氷刺木 カタミ/形見、片実",
22 => "リネン/理然、離念 スノウ/素皇、珠瑙",
23 => "セツナ/切、刹那 シノブ/偲、忍",
24 => "ナミダ/涙、波太 カスカ/霞歌、幽",
25 => "ムスビ/結、息日 カコ/過去、寡子",
26 => "ウソ/嘘、宇曽 アイカ/哀歌、愛香",
33 => "ペイン/閉音、病印 ツラミ/辛美、貫実",
34 => "ヨリミチ/寄道、頼道 シラユキ/白雪、知由樹",
35 => "ヒトリ/独、一人 オトナ/音鳴、乙菜",
36 => "スバル/昴、透遙 ハルカ/遥、晴香",
44 => "バイバイ/梅云、吠々 バニラ/香子蘭、芭韮",
45 => "トオル/透、通 リツ/律、慄",
46 => "タビ/旅、足袋 チギリ/契、千切",
55 => "サイゴ/彩吾、最期 サクラ/桜、咲良",
56 => "アワレ/憐、哀 ヒメイ/悲鳴、姫衣",
66 => "ヘヴン/戸聞、天国 ガラス/硝子、枯州"
}
),
"OPA" => DiceTable::D66Table.new(
"オトダマ性格表A",
D66SortType::ASC,
{
11 => "さわやか",
12 => "単純",
13 => "目立ちたがり",
14 => "笑い上戸",
15 => "P大好き",
16 => "がんばり屋",
22 => "ひょうきん",
23 => "ほれっぽい",
24 => "勇敢",
25 => "好奇心旺盛",
26 => "優しい",
33 => "八方美人",
34 => "博愛",
35 => "感情的",
36 => "おしゃべり",
44 => "無鉄砲",
45 => "元気",
46 => "楽観的",
55 => "自信家",
56 => "自由",
66 => "好戦的"
}
),
"OPB" => DiceTable::D66Table.new(
"オトダマ性格表B",
D66SortType::ASC,
{
11 => "悲観的",
12 => "大人しい",
13 => "臆病",
14 => "クール",
15 => "のんき",
16 => "マジメ",
22 => "夢想家",
23 => "常識人",
24 => "サイコ",
25 => "おおらか",
26 => "平和主義者",
33 => "慎重",
34 => "合理主義者",
35 => "無口",
36 => "照れ屋",
44 => "おひとよし",
45 => "なまけもの",
46 => "腰が低い",
55 => "疑い深い",
56 => "謙虚",
66 => "嘘つき"
}
),
"OHT" => DiceTable::D66Table.new(
"オトダマ趣味表",
D66SortType::ASC,
{
11 => "散歩",
23 => "温泉",
36 => "オークション",
12 => "うわさ話",
24 => "ギャンブル",
44 => "パズル",
13 => "寝る",
25 => "動物",
45 => "占い",
14 => "読書",
26 => "アニメ",
46 => "焼き肉",
15 => "アイドル",
33 => "ガーデニング",
55 => "スポーツ観戦",
16 => "甘味",
34 => "漫画",
56 => "ゲーム",
22 => "飲み会",
35 => "ドラマ",
66 => "動画配信"
}
),
"OLT" => DiceTable::D66Table.new(
"オトダマ外見表",
D66SortType::ASC,
{
11 => "デフォルト",
12 => "王子様/お姫様",
13 => "和装",
14 => "獣系",
15 => "ゴス",
16 => "眼鏡",
22 => "スポーツ",
23 => "軍服",
24 => "天使/悪魔の羽",
44 => "季節イベント",
25 => "学生服",
26 => "メガホン",
33 => "スポーツ系",
34 => "パンク",
35 => "フォーマル",
36 => "ジャージ",
45 => "白衣",
46 => "童話コス",
55 => "バニー",
56 => "水着",
66 => "戦隊コス"
}
),
"OIT" => DiceTable::Table.new(
"オトダマ一人称表",
"2D6",
[
"それがし",
"おいら/あたい",
"自分の名前",
"おれ/あたし",
"わたくし",
"私",
"ぼく/うち",
"自分",
"俺様/あたくし",
"余/妾",
"ミー"
]
),
"OYT" => DiceTable::Table.new(
"オトダマ呼び名表",
"2D6",
[
"ユー",
"(PCの名前)たん/きゅん",
"同志(PCの名前)",
"キミ",
"(PCの名前)くん/ちゃん",
"マスター",
"(PCの名前)さん",
"(PCの名前)様",
"あなた",
"(PCの名前)氏/女史",
"(PCの名前)殿"
]
),
"ORT" => DiceTable::Table.new(
"リアクション表",
"1D6",
[
"オトダマの表の性格を表すセリフ",
"オトダマの裏の性格を表すセリフ",
"PCを応援するセリフ",
"PCをからかうセリフ",
"趣味にまつわるセリフ",
"攻撃を行うときのセリフ"
]
),
"OMT" => DiceTable::Table.new(
"出会い表",
"2D6",
[
"名門オトダマ使い。あなたは、代々オトダマを操る一族に生まれました。あなたには、幼い頃から相棒となるオトダマがいます。あなたは、そのオトダマと共に育ちました。",
"傷ついたオトダマ。ある日、あなたは傷ついたオトダマを発見しました。意識を失い、今にも消えそうなオトダマに触れると、オトダマは意識を取り戻し、あなたを恩人と慕うようになりました。",
"見えないお友達。あなたは孤独な幼年期を過ごしてきました。そのとき、あなたを導いてくれたのが、あなたのオトダマです。オトダマは、あなたに他人のココロのウタを聞き、人々を助ける術を教えてくれました。",
"再生。あなたはオトクイに自分のココロのウタを食べられました。オトダマ使いに憑依したオトクイが倒されたとき、自分のココロの中から新たなオトダマが生まれました。",
"愛するココロ。あなたには、子どもの頃から大好きだったウタがありました。ある日、そのウタを口ずさんでいるとき、突然、後ろから拍手の音が聞こえました。振り向くと、そこにオトダマがいました。",
"動画。あなたは、動画を通じて歌を聞くのが好きでした。あるとき、聞いたことのないような素敵なウタが聞こえてきたかと思うと、画面の向こうからオトダマが飛び出してきました。",
"喪失。ある日、あなたは悲劇に見舞われました。そのとき、あなたはとても大切にしていた何かを失いました。その失ったものを補うかのように、あなたの側にオトダマが現れました。",
"受け継がれるウタ。あなたのオトダマは、あなたが大好きだった人の相棒だったオトダマでした。しかし、その人は悲劇に出会い、あなたの元を去りました。そのとき、あなたにオトダマを託したのです。",
"謎のメール。ある日、友人からあなたの元に一通のメールが送られてきました。そのメールを開くと、不思議な音楽が流れ出し、オトダマが現れました。その友人とは、それ以来、連絡がつきません。",
"封印。ある日、あなたは古いレコード屋で一曲の音盤に出会います。その音盤を再生してみると、オトダマが現れました。そして、オトダマは「封印を解いてくれたお礼に、しばらく付き合ってあげる」と言ってきました。",
"一目惚れ。以前、あなたは様々な楽曲を発表していました。すると、その楽曲に一目惚れしたと言って、あなたの元にオトダマが押しかけてきました。以来、そのオトダマに付きまとわれる毎日です。"
]
),
}.freeze
register_prefix('R[A-DS]?', TABLES.keys)
end
end
end