Class: BCDice::GameSystem::IfIfIf

Inherits:
Base
  • Object
show all
Defined in:
lib/bcdice/game_system/IfIfIf.rb

Constant Summary collapse

ID =
"IfIfIf"
NAME =

ゲームシステム名

"イフ・イフ・イフ"
SORT_KEY =

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

"いふいふいふ"
HELP_MESSAGE =
<<~TEXT
  100の質問:HQT
  ハイリスク歪み表:HDT
  ローリスク歪み表:LDT
    「HQT1」「LDT4」のように、表の後ろに数字を付けることで、10個の表から個別に振ることができます。
  致命的な歪みの回避:ID
  改竄判定:IM
  強制改竄判定:IE
TEXT
HQT1 =
DiceTable::Table.new(
  "100の質問表その1‐印象質問",
  "1D10",
  [
    "相手の好きなところはどこですか?",
    "相手の苦手なところはどこですか?",
    "相手の尊敬できるところはどこですか?",
    "相手の容姿についてどう思っていますか?",
    "相手の才能についてどう思っていますか?",
    "相手の趣味についてどう思っていますか?",
    "相手の価値観についてどう思っていますか?",
    "相手について理解できないところはどこですか?",
    "相手について心配なところはどこですか?",
    "相手の第一印象と今の印象で変化した点はどこですか?",
  ]
)
HQT2 =
DiceTable::Table.new(
  "100の質問表その2‐日常質問",
  "1D10",
  [
    "ふたりの関係性を一言で表すなら?",
    "二人の日常はどんな様子ですか?",
    "「なんの予定もない、一緒にいる休日」の過ごし方はどんな風ですか?",
    "ふたりの最初の出会いはどんな風でしたか?",
    "ふたりで食事をするときは、どんな様子ですか?",
    "ふたりで買い物をするときは、どんな様子ですか?",
    "ふたりで一緒に寝ることはありますか? あるなら、どんな様子ですか?",
    "ふたりで最近ハマっていることってありますか?",
    "相手といると緊張しますか? 安心しますか?",
    "相手への愚痴ってありますか? この際言っちゃいましょう!"
  ]
)
HQT3 =
DiceTable::Table.new(
  "100の質問表その3‐汎用思い出質問",
  "1D10",
  [
    "喧嘩した思い出はありますか? 詳しく語ってください!",
    "相手を看病した時の思い出はありますか? 詳しく語ってください!",
    "相手からの贈り物で印象深いものはありますか?",
    "ふたりで約束してることはありますか? 教えてください!",
    "お互いしか知らない秘密はありますか? 教えてください!",
    "相手を泣かせた思い出はありますか? 詳しく語ってください!",
    "ふたりで犬 or 猫を目の前にしたときの思い出はありますか?詳しく語ってください!",
    "ふたりでどこかに閉じ込められた思い出はありますか? 詳しく語ってください!",
    "ふたりで旅(旅行)をした思い出はありますか? 詳しく語ってください!",
    "ふたりでいてドキドキした思い出はありますか? 詳しく語ってください!",
  ]
)
HQT4 =
DiceTable::Table.new(
  "100の質問表その4‐情景思い出質問",
  "1D10",
  [
    "ふたりで夜明けを迎えたときの思い出を語ってくれますか?",
    "ふたりで星を見た思い出を語ってくれますか?",
    "ふたりで海に行った思い出を語ってくれますか?",
    "ふたりで暗闇で過ごした思い出を語ってくれますか?",
    "ふたりで炎に巻かれた思い出を語ってくれますか?",
    "ふたりで花畑で過ごした思い出を語ってくれますか?",
    "ふたりで森で過ごした思い出を語ってくれますか?",
    "ふたりで砂漠を歩いた思い出を語ってくれますか?",
    "ふたりで廃墟を歩いた思い出をかたってくれますか?",
    "ふたりで突然雨に降られたときの思い出を語ってくれますか?",
  ]
)
HQT5 =
DiceTable::Table.new(
  "100の質問表その5‐内緒の質問(オフレコ推奨)",
  "1D10",
  [
    "相手に絶対に知られたくない秘密ってありますか? 教えてください!",
    "相手に嘘をついていることはありますか? 教えてください!",
    "相手に知られたら引かれそうなことってありますか? 教えてください!",
    "相手に知られたら怒られそうなことってありますか? 教えてください!",
    "相手に知られたら嫌われそうなことってありますか? 教えてください!",
    "相手に関して正直ちょっと引いたことはありますか? どんなことですか?",
    "相手に恋した瞬間は、どんな感じでしたか?",
    "相手について密かに妄想してることはありますか? 教えてください!",
    "相手について「大っぴらに言うのははばかられるけど、好きなところ」ってありますか? 教えてください!",
    "相手に懺悔したいことはありますか? どんなことですか?",
  ]
)
HQT6 =
DiceTable::Table.new(
  "100の質問表その6‐ブラック質問1",
  "1D10",
  [
    "相手に嫌われたらどうしますか?",
    "相手を傷つけたことはありますか? どんなことですか?",
    "相手を傷つけたいと思ったことはありますか?",
    "相手と殺し合ったことはありますか? そのときのことを教えてください。",
    "相手を殺したいと思ったことはありますか? そのときのことを教えてください。",
    "相手に嫉妬していることはありますか? どんなことですか?",
    "相手を憎んでいることはありますか? どんなことですか?",
    "相手に自分以外の恋人が出来たらどうしますか?",
    "相手が死んだら自分はどうしますか?",
    "自分が死んだら相手にどうしてもらいたいですか?",
  ]
)
HQT7 =
DiceTable::Table.new(
  "100の質問表その7‐ブラック質問2",
  "1D10",
  [
    "相手と出会ってなかったら今頃どうなってたと思いますか?",
    "相手には、あなた以外にどんな人がふさわしいと思いますか?",
    "相手について怖いと思うところはどこですか?",
    "相手と自分の命、どっちのほうが大事ですか?",
    "相手のために、犯罪を犯すことはできますか?",
    "相手が犯罪者になってしまったらどうしますか?",
    "相手が完全な記憶喪失になったらどうしますか?",
    "相手が自分を忘れるのと、自分が相手を忘れるのだと、どちらがマシですか?",
    "相手に「死んでほしい」と言われたらどうしますか?",
    "相手に「殺して欲しい」と頼まれたらどうしますか?",
  ]
)
HQT8 =
DiceTable::Table.new(
  "100の質問表その8‐雑談質問",
  "1D10",
  [
    "相手に対して、自分が自慢できるのはどんなところですか?",
    "相手の寝相についてどう思いますか?",
    "ふたりの体格差って、どんな感じですか?",
    "ふたりとも、幽霊って信じてますか?",
    "ふたりは自炊派? 外食派?",
    "ふたりは辛党? 甘党?",
    "お互いの家族構成、知ってますか? 知らないなら教え合いましょう!",
    "相手のファッション(普段の服装)について、どう思いますか?",
    "相手に手料理を食べさせたことはありますか?",
    "相手がコーヒーや紅茶にお砂糖何杯入れるか、知ってますか?",
  ]
)
HQT9 =
DiceTable::Table.new(
  "100の質問表その9‐ファンタジー質問",
  "1D10",
  [
    "相手の種族についてどう思いますか?",
    "相手の魔法についてどう思いますか?",
    "相手の戦闘能力についてどう思いますか?",
    "戦場にいるときの相手の雰囲気についてどう思いますか?",
    "相手の特殊能力(戦闘面以外)についてどう思いますか?",
    "ふたりには、なにか二つ名や称号はありますか? それについてどう思いますか?",
    "お互いの身分についてどう思いますか?",
    "ふたりに寿命差はありますか? ある場合は、どう考えていますか?",
    "ふたりで敵に襲われたときの思い出を語ってくれますか?",
    "相手とダンジョンに行った思い出を語ってくれますか?",
  ]
)
HQT10 =
DiceTable::Table.new(
  "100の質問表その10‐現代質問",
  "1D10",
  [
    "お互い、どんな学校に通っていますか/通っていましたか?",
    "SNSってやっていますか? お互いのアカウントって知ってますか?",
    "ふたりで映画を見るなら、どんなジャンルですか? そのジャンルは1人で見るときと違いますか?",
    "ふたりでテーマパークに行った思い出はありますか? 詳しく教えてください!",
    "ふたりはよくメールや電話で連絡をとりますか?",
    "お互いの写真って持っていますか? 持っているなら、どんな写真ですか?",
    "ふたりでカラオケに行きますか? 行くならどんな様子ですか?",
    "ふたりで行きたい観光名所はありますか? 具体的な地名で教えてください!",
    "ふたりが好きな季節はいつですか?",
    "目玉焼きに何をかけますか?(塩、醤油、ソース、マヨネーズ……)",
  ]
)
LDT1 =
DiceTable::Table.new(
  "ローリスク歪み表:名前、性別、年齢、人称",
  "1D10",
  [
    "ミドルネームが増える",
    "周囲からあだ名で呼ばれるようになる",
    "人に変なあだ名をつける癖ができる",
    "異性装が趣味になる",
    "理由あって異性として生活していることになる",
    "これ以降、外見年齢があまり変わらなくなる",
    "10歳若返る",
    "10歳歳を取る",
    "一人称が変わる",
    "二人称が変わる",
  ]
)
LDT2 =
DiceTable::Table.new(
  "ローリスク歪み表:外見的特徴",
  "1D10",
  [
    "片目の色が変化する",
    "両目の色が変化する",
    "髪の色が変化する",
    "髪が癖毛(天然パーマ、猫っ毛など)になる",
    "髪の長さが変わる(長髪なら短髪に、短髪なら長髪に)",
    "他者から「美人」と言われる外見になる",
    "眼鏡キャラになる(伊達眼鏡でも可)",
    "特徴的なファッションになる(ゴスロリ、赤一色、常に白衣など)",
    "身長が10cm大きくなる",
    "身長が10cm小さくなる",
  ]
)
LDT3 =
DiceTable::Table.new(
  "ローリスク歪み表:性格",
  "1D10",
  [
    "あらゆることに対する思い切りがよくなる",
    "思考や発想が幼くなる",
    "初対面の人と上手く話せなくなる",
    "感情の起伏が激しくなる",
    "感情を抑えがちになる",
    "泣き虫になる",
    "よく人に甘えるようになる",
    "とてつもなくポジティブになる",
    "天邪鬼になりがちになる",
    "自分を卑下しがちになる",
  ]
)
LDT4 =
DiceTable::Table.new(
  "ローリスク歪み表:得意不得意",
  "1D10",
  [
    "得意不得意が逆転する",
    "運動がすごく得意になる",
    "芸術関係(絵、音楽、書道など)が得意になる",
    "感情を隠すのが下手になる",
    "手先が器用になる",
    "料理が壊滅的に下手になる",
    "四則演算が苦手になる",
    "人の真似が上手になる",
    "役に立たない特技ができる",
    "一般的にあり得ない異能(超能力など)に目覚める",
  ]
)
LDT5 =
DiceTable::Table.new(
  "ローリスク歪み表:社会的立場",
  "1D10",
  [
    "転校/転職したことになる(元居た学校や職場でなくなる)",
    "自分のファンクラブが出来る",
    "学校/仕事の成績が大幅に向上する",
    "学校/仕事の成績が大幅に低下する",
    "賃金/お小遣いが下がる",
    "他人から妙に頼られるようになる",
    "自分に関する悪い噂が流れるようになる",
    "大金持ちになる",
    "ガラが悪い人々(不良、裏稼業など)と繋がっていることになる",
    "誰もが知っている有名人になる",
  ]
)
LDT6 =
DiceTable::Table.new(
  "ローリスク歪み表:パートナーとの関係性や呼び方",
  "1D10",
  [
    "パートナーと恋仲だったことになる",
    "パートナーとお互いに特別な名前で呼び合うようになる",
    "パートナーと寝室が一緒になる",
    "パートナーと家族だったことになる",
    "パートナーとの身体的スキンシップが増える",
    "パートナーと家族ぐるみの付き合いになる",
    "自分がパートナーに精神的に依存する",
    "パートナーが自分に精神的に依存する",
    "パートナーを傷つけたくてたまらなくなる",
    "パートナーが好きで好きでたまらなくなる",
  ]
)
LDT7 =
DiceTable::Table.new(
  "ローリスク歪み表:現在の生活",
  "1D10",
  [
    "近づくと赤ちゃんがギャン泣きする体質になる",
    "義理の家族がある",
    "仕事や学業などに忙殺される生活になる",
    "体調を崩しがちになる(貧血、流行病など)",
    "家族以外の誰かと同居していることになる(シェアハウス、同棲など)",
    "何らかの嗜好品(酒、煙草、甘味など)がやめられなくなる",
    "住居が雨漏りするようになる",
    "住居に心霊現象が発生するようになる",
    "近所の猫に嫌われる",
    "金遣いが荒くなる",
  ]
)
LDT8 =
DiceTable::Table.new(
  "ローリスク歪み表:過去",
  "1D10",
  [
    "昔いじめられていたことになる",
    "以前なにかで表彰されたことになる",
    "以前グレていた時期があったことになる",
    "誰かにお金を借りていたことになる",
    "幼い頃、家出したことがあったことになる",
    "以前誰かに告白して、フラれたことになる",
    "幼い頃、体が弱かったことになる",
    "以前すごく中二病だったことになる",
    "南国で親父に〇〇(任意の特殊技能)を習っていたことになる",
    "誰かとの約束を忘れる",
  ]
)
LDT9 =
DiceTable::Table.new(
  "ローリスク歪み表:自由欄1",
  "1D10",
  [
    "性癖が歪む",
    "ドジっ子属性がつく",
    "人の声が聞き取りにくくなる",
    "落ちている硬貨に必ず気づくようになる",
    "人の顔を覚えるのが苦手になる",
    "とても寒がりになる",
    "血を見るのが怖くなる",
    "ピーマンが苦手になる",
    "動物にやけに好かれるようになる",
    "暗いところが怖くなる",
  ]
)
LDT10 =
DiceTable::Table.new(
  "ローリスク歪み表:自由欄2",
  "1D10",
  [
    "寝床に入ると数秒で寝落ちするようになる",
    "全裸でないと寝られなくなる",
    "見えないはずのものが見える様になる",
    "財布を忘れがちになる",
    "子供を見ると可愛がらざるを得なくなる",
    "夜眠れなくなる",
    "特徴的な口癖ができる",
    "掃除好きになる",
    "お年寄りにやけに好かれるようになる",
    "スリルを感じるのが快感になる",
  ]
)
HDT1 =
DiceTable::Table.new(
  "ハイリスク歪み表:名前、性別、年齢、人称",
  "1D10",
  [
    "名前の綴り、あるいは漢字が変化する",
    "名前の音が変わる",
    "名無しとなり、誰も元の名前を思い出せなくなる",
    "生まれた時から異性だったことになる",
    "後天的に性別が異性に変化する",
    "これ以降一切歳をとらなくなる",
    "外見年齢が歳をとる",
    "外見年齢が幼くなる",
    "一人称が変化する",
    "二人称が変化する",
  ]
)
HDT2 =
DiceTable::Table.new(
  "ハイリスク歪み表:外見的特徴",
  "1D10",
  [
    "片目の色が変化する",
    "両目の色が変化する",
    "髪の色が変化する",
    "全身から色素が抜け落ちる(アルビノ化)",
    "角が生える/もとが有角の場合は角を失う",
    "体の一部が獣のようになる/元が獣型の場合はヒトの形となる",
    "翼が生える/元が有翼の場合は翼を失う",
    "体の一部が人形のようになる/元が人形の場合は人と変わらぬ姿になる",
    "体の何処かに大きな傷が出来る",
    "体の何処かを欠損する",
  ]
)
HDT3 =
DiceTable::Table.new(
  "ハイリスク歪み表:性格",
  "1D10",
  [
    "性格が攻撃的になる",
    "思考や発想が幼くなる",
    "疑心暗鬼になる",
    "感情の起伏が激しくなる",
    "感情の起伏が無くなる",
    "泣き虫になる",
    "よく人に甘えるようになる",
    "とてつもなくポジティブになる",
    "倫理観が欠如する",
    "特定の感情を喪失する",
  ]
)
HDT4 =
DiceTable::Table.new(
  "ハイリスク歪み表:得意不得意",
  "1D10",
  [
    "得意不得意が逆転する",
    "戦闘能力を失う/高負荷の運動ができなくなる",
    "芸術関係(絵、音楽、書道など)が得意になる",
    "感情を隠すのが下手になる",
    "感覚が異様に鋭敏になる",
    "料理が壊滅的に下手になる",
    "四則演算が苦手になる",
    "特異な才能が開花する",
    "才能をひとつ失う",
    "一般的にあり得ない異能(超能力など)に目覚める",
  ]
)
HDT5 =
DiceTable::Table.new(
  "ハイリスク歪み表:社会的立場",
  "1D10",
  [
    "職を失う",
    "周囲から崇められる立場になる",
    "学校/仕事の成績が大幅に向上する",
    "戸籍上死者になる",
    "借金まみれになる",
    "多くの人に慕われる人気者になる",
    "犯罪者として扱われる",
    "大金持ちになる",
    "何らかの組織に追われる身になる",
    "誰もが知っている有名人になる",
  ]
)
HDT6 =
DiceTable::Table.new(
  "ハイリスク歪み表:パートナーとの関係性や呼び方",
  "1D10",
  [
    "パートナーと恋仲だったことになる",
    "パートナーとお互いに特別な名前で呼び合うようになる",
    "パートナーに憎まれる",
    "パートナーと家族だったことになる",
    "パートナーから忘れられる",
    "パートナーの言葉に逆らえなくなる",
    "自分がパートナーに精神的に依存する",
    "パートナーが自分に精神的に依存する",
    "パートナーを傷つけたくてたまらなくなる",
    "パートナーが好きで好きでたまらなくなる",
  ]
)
HDT7 =
DiceTable::Table.new(
  "ハイリスク歪み表:現在の生活",
  "1D10",
  [
    "住居が崩壊する",
    "身に覚えがない子供ができる",
    "仕事や学業などに忙殺される生活になる",
    "体調を崩しがちになる(貧血、流行病など)",
    "住んでいる町(村、国)が滅びる",
    "何らかの嗜好品(酒、煙草、甘味など)がやめられなくなる",
    "故郷が滅びたことになる",
    "パートナー以外の人がいる場所が怖くなる",
    "住んでいる場所が戦場になる",
    "不治の病にかかる",
  ]
)
HDT8 =
DiceTable::Table.new(
  "ハイリスク歪み表:過去",
  "1D10",
  [
    "かつて誰かを殺したことになる",
    "過去の功績がひとつなくなる",
    "過去のすべての記憶を失う",
    "かつてパートナーを傷つけたことがある",
    "幼い頃、自分以外の家族全員が死亡した",
    "以前誰かに告白して、フラれたことになる",
    "犯罪歴ができる",
    "大切な思い出がひとつなかったことになる",
    "悲しい思い出がひとつ増える",
    "誰かとの約束を忘れる",
  ]
)
HDT9 =
DiceTable::Table.new(
  "ハイリスク歪み表:自由欄1",
  "1D10",
  [
    "パートナー以外の人の顔が塗りつぶされて見える",
    "色覚を失う",
    "声を失う",
    "誰かと目を合わせることが怖くなる",
    "零した涙が宝石になる",
    "体の一部に植物が生える",
    "血を見るのが怖くなる",
    "血を見ることに悦びを覚えるようになる",
    "動物にやけに好かれるようになる",
    "人に触れるのが怖くなる",
  ]
)
HDT10 =
DiceTable::Table.new(
  "ハイリスク歪み表:自由欄2",
  "1D10",
  [
    "人の血を啜りたくなる",
    "失明する",
    "見えないはずのものが見える様になる",
    "水に浸かると人魚になってしまう",
    "鏡や写真にうつらなくなる",
    "夜眠れなくなる",
    "影が無くなる",
    "味覚が鈍くなる",
    "痛覚が鈍くなる",
    "意味もなく急に涙があふれるようになる",
  ]
)
TABLES =
{
  "HQT" => DiceTable::ChainTable.new(
    "100の質問",
    "1D10",
    [
      HQT1,
      HQT2,
      HQT3,
      HQT4,
      HQT5,
      HQT6,
      HQT7,
      HQT8,
      HQT9,
      HQT10,
    ]
  ),
  "LDT" => DiceTable::ChainTable.new(
    "ローリスク歪み表",
    "1D10",
    [
      LDT1,
      LDT2,
      LDT3,
      LDT4,
      LDT5,
      LDT6,
      LDT7,
      LDT8,
      LDT9,
      LDT10,
    ]
  ),
  "HDT" => DiceTable::ChainTable.new(
    "ハイリスク歪み表",
    "1D10",
    [
      HDT1,
      HDT2,
      HDT3,
      HDT4,
      HDT5,
      HDT6,
      HDT7,
      HDT8,
      HDT9,
      HDT10,
    ]
  ),
  "HQT1" => HQT1,
  "HQT2" => HQT2,
  "HQT3" => HQT3,
  "HQT4" => HQT4,
  "HQT5" => HQT5,
  "HQT6" => HQT6,
  "HQT7" => HQT7,
  "HQT8" => HQT8,
  "HQT9" => HQT9,
  "HQT10" => HQT10,
  "HDT1" => HDT1,
  "HDT2" => HDT2,
  "HDT3" => HDT3,
  "HDT4" => HDT4,
  "HDT5" => HDT5,
  "HDT6" => HDT6,
  "HDT7" => HDT7,
  "HDT8" => HDT8,
  "HDT9" => HDT9,
  "HDT10" => HDT10,
  "LDT1" => LDT1,
  "LDT2" => LDT2,
  "LDT3" => LDT3,
  "LDT4" => LDT4,
  "LDT5" => LDT5,
  "LDT6" => LDT6,
  "LDT7" => LDT7,
  "LDT8" => LDT8,
  "LDT9" => LDT9,
  "LDT10" => LDT10,
}.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, #initialize, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?

Methods included from Translate

#translate

Constructor Details

This class inherits a constructor from BCDice::Base

Instance Method Details

#check_action(command) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/bcdice/game_system/IfIfIf.rb', line 28

def check_action(command)
  case command
  when "ID"
    eval_common_command("3TY6")
  when "IE"
    dicearr = @randomizer.roll_barabara(3, 6)
    success = dicearr.count(6) == 3
    success_count = dicearr.count(6)
    if success
      Result.success("(3B6=6) > #{dicearr.join(',')} > 6の数:#{success_count}")
    else
      Result.failure("(3B6=6) > #{dicearr.join(',')} > 6の数:#{success_count} 不足数:#{3 - success_count}")
    end
  when "IM"
    dicearr = @randomizer.roll_barabara(3, 6)
    success_count = dicearr.count(6)
    if success_count == 0
      Result.failure("(3B6=6) > #{dicearr.join(',')} > 6の数:#{success_count} 選べるエンド数:#{success_count + 1}")
    else
      Result.success("(3B6=6) > #{dicearr.join(',')} > 6の数:#{success_count} 選べるエンド数:#{success_count + 1}")
    end
  else
    return nil
  end
end

#eval_game_system_specific_command(command) ⇒ Object



24
25
26
# File 'lib/bcdice/game_system/IfIfIf.rb', line 24

def eval_game_system_specific_command(command)
  return check_action(command) || roll_tables(command, TABLES)
end