Class: BCDice::GameSystem::Satasupe

Inherits:
Base
  • Object
show all
Defined in:
lib/bcdice/game_system/Satasupe.rb,
lib/bcdice/game_system/satasupe/tables.rb

Defined Under Namespace

Classes: CREATE_ARMS_STRUCT

Constant Summary collapse

ID =

ゲームシステムの識別子

'Satasupe'
NAME =

ゲームシステム名

'サタスペ'
SORT_KEY =

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

'さたすへ'
HELP_MESSAGE =

ダイスボットの使い方

<<~INFO_MESSAGE_TEXT
  ・判定コマンド (nR>=x[y,z,c] or nR>=x or nR>=[,,c] etc)
   nが最大ロール回数、xが難易度、yが目標成功度、zがファンブル値、cが必殺値。
   y と z と c は省略可能です。(省略時、y=無制限、z=1、c=13(なし))
   c の後ろにSを記述すると必殺が出た時点で判定を終了します。
   例)5R>=5[10,2,7S]
  ・性業値コマンド(SRx or SRx+y or SRx-y x=性業値 y=修正値)
  ・各種表 : コマンド末尾に数字を入れると複数回の一括実行が可能 例)TAGT3
   ・タグ決定表(TAGT)
   ・命中判定ファンブル表(FumbleT)、致命傷表(FatalT)、
     乗物致命傷表(FatalVT)
   ・ロマンスファンブル表(RomanceFT)
   ・アクシデント表(AccidentT)、汎用アクシデント表(GeneralAT)
   ・その後表 (AfterT)、臭い飯表(KusaiMT)、登場表(EnterT)、
     落とし前表(PayT)、時間切れ表(TimeUT)、バッドトリップ表(BudTT)
   ・報酬表(Get〜) : ガラクタ(GetgT)、実用品(GetzT)、値打ち物(GetnT)、
     奇天烈(GetkT)
   ・NPCの年齢と好みを一括出力(NPCT)
   ・「サタスペ」のベースとアクセサリを出力(GETSSTx xはアクセサリ数、省略時1)
  ・以下のコマンドは +,- でダイス目修正、=でダイス目指定が可能
   例)CrimeIET+1 CrimeIET-1 CrimeIET=7
   ・情報イベント表(〜IET) : 犯罪表(CrimeIET)、生活表(LifeIET)、
     恋愛表(LoveIET)、教養表(CultureIET)、戦闘表(CombatIET)
   ・情報ハプニング表(〜IHT) : 犯罪表(CrimeIHT)、生活表(LifeIHT)、
     恋愛表(LoveIHT)、教養表(CultureIHT)、戦闘表(CombatIHT)
   ・遭遇表(~RET):ミナミ遭遇表(MinamiRET)、中華街遭遇表(ChinatownRET)、
     軍艦島遭遇表(WarshipLandRET)、官庁街遭遇表(CivicCenterRET)、
     十三遭遇表(DowntownRET)、沙京遭遇表(ShaokinRET)、
     らぶらぶ遭遇表(LoveLoveRET)、アジト遭遇表(AjitoRET)、
     地獄湯遭遇表(JigokuSpaRET)、JAIL HOUSE遭遇表(JailHouseRET)
   ・イベント表(~IT):治療イベント表(TreatmentIT)、大学イベント表(CollegeIT)
  ・D66ダイスあり
INFO_MESSAGE_TEXT
TAG_TABLE =
DiceTable::D66GridTable.new(
  "タグ決定表",
  [
    ["情報イベント", "エクストリーム(サ)", "カワイイ(サ)", "トンデモ(サ)", "マニア(サ)", "ヲタク(サ)"],
    ["音楽(ア)", "好きなタグ", "トレンド(ア)", "読書(ア)", "パフォーマンス(ア)", "美術(ア)"],
    ["アラサガシ(マ)", "おせっかい(マ)", "好きなタグ", "家事(マ)", "ガリ勉(マ)", "健康(マ)"],
    ["アウトドア(休)", "工作(休)", "スポーツ(休)", "同一タグ", "ハイソ(休)", "旅行(休)"],
    ["育成(イ)", "サビシガリヤ(イ)", "ヒマツブシ(イ)", "宗教(イ)", "同一タグ", "ワビサビ(イ)"],
    ["アダルト(風)", "飲食(風)", "ギャンブル(風)", "ゴシップ(風)", "ファッション(風)", "情報ハプニング"],
  ]
)
CREATE_ARMS_ACCESSORY_TABLE =
{
  11 => ["「パチンコ玉」", "「武器破壊」", lambda { |arm, _r| arm.abilities << "「武器破壊」" }].freeze,
  12 => ["「釘や画鋲、針」", "「毒」", lambda { |arm, _r| arm.abilities << "「毒」" }].freeze,
  13 => ["「砂利や小石、ガラスの破片」", "「散弾」", lambda { |arm, _r| arm.abilities << "「散弾」" }].freeze,
  14 => ["「口紅」", "「(判定前宣言)一度だけ必殺10」", lambda { |arm, _r| arm.kutibeni += 1 }].freeze,
  15 => ["「バネやゼンマイ」", "「フル」", lambda { |arm, _r| arm.abilities << "「フル」" }].freeze,
  16 => ["「捻子やビス」", "「ダメージ+1」", lambda { |arm, _r| arm.damage += 1 }].freeze,
  22 => ["「生ゴミ」", "「衝撃」", lambda { |arm, _r| arm.abilities << "「衝撃」" }].freeze,
  23 => ["「ゴム」", "「ダメージ+1」", lambda { |arm, _r| arm.damage += 1 }].freeze,
  24 => ["「歯車」", "「リボルバー」", lambda { |arm, _r| arm.abilities << "「リボルバー」" }].freeze,
  25 => ["「歯や牙、骨」", "「(判定前宣言)1D6回、ダメージ+2」", lambda { |arm, r| arm.kiba = r.roll_once(6) }].freeze,
  26 => ["「ワイヤー」", "「耐久度+1」", lambda { |arm, _r| arm.life += 1 }].freeze,
  33 => ["「メガネなどのレンズ」", "「命中-1」", lambda { |arm, _r| arm.hit -= 1 }].freeze,
  34 => ["「マッチ」", "「必殺12」", lambda { |arm, _r| arm.abilities << "「必殺12」" }].freeze,
  35 => ["「ガムテープや接着剤」", "「耐久度+1」", lambda { |arm, _r| arm.life += 1 }].freeze,
  36 => ["「洗濯ばさみ」", "「命中-1」", lambda { |arm, _r| arm.hit -= 1 }].freeze,
  44 => ["「花火」", "「弾幕1」", lambda { |arm, _r| arm.abilities << "「弾幕1」" }].freeze,
  45 => ["「食玩」", "「暗器」", lambda { |arm, _r| arm.abilities << "「暗器」" }].freeze,
  46 => ["「真空管やトランジスタ」", "「神秘」", lambda { |arm, _r| arm.abilities << "「神秘」" }].freeze,
  55 => ["「エアコンプレッサ」", "「ダメージ+1」", lambda { |arm, _r| arm.damage += 1 }].freeze,
  56 => ["「豆」", "「マヒ」", lambda { |arm, _r| arm.abilities << "「マヒ」" }].freeze,
  66 => ["「ガスボンベや殺虫剤」", "「爆発3」", lambda { |arm, _r| arm.abilities << "「爆発3」" }].freeze,
}.freeze
NPC_AGE_TABLE =

年齢表

[ # 年齢表
  ["幼年", 6, 2].freeze, # 6+2D6歳
  ["少年", 10, 2].freeze, # 10+2D6歳
  ["青年", 15, 3].freeze, # 15+3D6歳
  ["中年", 25, 4].freeze, # 25+4D6歳
  ["壮年", 40, 5].freeze, # 40+5D6歳
  ["老年", 60, 6].freeze, # 60+6D6歳
].freeze
NPC_LMOOD_TABLE =

好み/雰囲気表

[ # 好み/雰囲気表
  "ダークな",
  "お金持ちな",
  "美形な",
  "知的な",
  "ワイルドな",
  "バランスがとれてる",
].freeze
NPC_LAGE_TABLE =

好み/年齢表

[ # 好み/年齢表
  "年下が好き。",
  "同い年が好き。",
  "年上が好き。",
].freeze
TABLES =
{
  "CrimeIET" => DiceTable::Table.new(
    "情報イベント表/〔犯罪〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "昔やった仕事の依頼人が登場。てがかりをくれる。好きなタグの上位リンク(SL+2)を1つ得る。",
      "謎のメモを発見……このターゲットについて調べている間、このトピックのタグをチーム全員が所有しているものとして扱う",
      "謎の動物が亜侠を路地裏に誘う。好きなタグの上位リンクを2つ得る",
      "偶然、他の亜侠の仕事現場に出くわす。口止め料の代わりに好きなタグの上位リンクを1つ得る",
      "あまりに適切な諜報活動。コストを消費せず、上位リンクを3つ得る",
      "その道の権威を紹介される。現在と同じタグの上位リンクを2つ得る",
      "捜査は足だね。〔肉体点〕を好きなだけ消費する。その値と同じ数の好きなタグの上位リンクを得る",
      "近所のコンビニで立ち読み。思わぬ情報が手に入る。上位リンクを3つ得る",
      "そのエリアの支配盟約からメッセンジャーが1D6人。自分のチームがその盟約に敵対していなければ、好きなタグの上位リンクを2つ得る。敵対していれば、メッセンジャーは「盟約戦闘員(p.127)」となる。血戦を行え",
      "「三下(p.125)」が1D6人現れる。血戦を行え。倒した数だけ、好きなタグの上位リンクを手に入れる"
    ]
  ),
  "LifeIET" => DiceTable::Table.new(
    "情報イベント表/〔生活〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "隣の奥さんと世間話。上位リンクを4つ得る",
      "ミナミで接待。次の1ターン何もできない代わりに、好きなタグの上位リンク(SL+2)を1つ得る",
      "息抜きにテレビを見ていたら、たまたまその情報が。好きなタグの上位リンクを1つ得る",
      "器用に手に入れた情報を転売する。《札巻》を1個手に入れ、上位リンクを3つ得る",
      "情報を得るついでに軽い営業。〔サイフ〕を1回復させ、上位リンクを3つ得る",
      "街の有力者からの突然の電話。そのエリアの盟約の幹部NPCの誰かと【コネ】を結ぶことができる",
      "金をばらまく。〔サイフ〕を好きなだけ消費する。その値と同じ数の任意の上位リンクを得る",
      "〔表の顔〕の同僚が思いがけないアドバイスをくれる。上位リンクを1D6つ得る",
      "謎の情報屋チュンさんが、情報とアイテムのトレードを申し出る。DDの指定するアイテムを1つ手に入れると、どこからともなくチュンさんが現れる。そのアイテムをチュンさんに渡せば、情報ゲット!",
      "ターゲットとは関係ないが、ドデかい情報を掘り当てる。その情報を売って〔サイフ〕が全快する"
    ]
  ),
  "LoveIET" => DiceTable::Table.new(
    "情報イベント表/〔恋愛〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "恋人との別れ。自分に恋人がいれば、1人を選んで、お互いのトリコ欄から名前を消す。その代わり情報ゲット!",
      "とびきり美形の情報提供者と遭遇。〔性業値〕判定で律になると、好きなタグの上位リンクを1つ得る",
      "敵対する亜侠と第一種接近遭遇。キスのあとの濡れた唇から、上位リンクを3つ得る",
      "昔の恋人がそれに詳しかったはず。その日の深夜・早朝に行動しなければ、好きなタグの上位リンク(SL+2)を1つ得る",
      "情報はともかくトリコをゲット。データは「女子高生(p.122)」を使用する",
      "関係者とすてきな時間を過ごす。好きなタグの上位リンクを1つ得る。ただし、次の1ターンは行動できない",
      "持つべきものは愛の奴隷。自分のトリコの数だけ好きなタグの上位リンクを得る",
      "自分よりも10歳年上のイヤなやつに身体を売る。現在と同じタグの上位リンクを1つ得る",
      "有力者からの突然のご指名。チームの仲間を1人、ランダムに決定する。差し出すなら、そのキャラクターは次の1ターン行動できない代わり、その後にそのキャラクターの〔恋愛〕と同じ数の上位リンクを得る",
      "愛する人の死。自分に恋人がいれば、1人選んで、そのキャラクターを死亡させる。その代わり情報ゲット!"
    ]
  ),
  "CultureIET" => DiceTable::Table.new(
    "情報イベント表/〔教養〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "ネットで幻のリンクサイトを発見。すべての種類のタグに上位リンクがはられる",
      "間違いメールから恋が始まる。ハンドルしか知らない「女子高生(p.122)」と恋人(お互いのトリコ)の関係になる",
      "新聞社でバックナンバーを読みふける。上位リンクを6つ得る",
      "巨大な掲示板群から必要な情報をサルベージ。好きなタグの上位リンクを1つ得る",
      "検索エンジンにかけたらすぐヒット。コストを消費せず、上位リンクを4つ得る",
      "警察無線を傍受。興味深い。好きなタグの上位リンクを2つ得る",
      "クールな推理がさえ渡る。〔精神点〕を好きなだけ消費する。その値と同じ数だけ好きなタグの上位リンクを得る",
      "図書館ロールが貫通。好きなタグの上位リンク(SL+3)を1つ得る",
      "図書館で幻の書物を発見。上位リンクを8つ得る。キャラクターシートのメモ欄に<クトゥルフ神話知識>、SANと記入し、それぞれ後ろに+5、-5の数値を書き加える",
      "アジトに謎の手紙が届く。自分のアジトに戻れば、情報ゲット!"
    ]
  ),
  "CombatIET" => DiceTable::Table.new(
    "情報イベント表/〔戦闘〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "昔、お前が『更正』させた大幇のチンピラから情報を得る。〔精神点〕を2点減少し、好きなタグの上位リンク(SL+2)を1つ得る。",
      "大阪市警の刑事から情報リーク。「敵の敵は味方」ということか……? 〔精神点〕を3点減少し、上位リンクを6つ得る。",
      "無軌道な若者達を拳で『更正』させる。彼等は涙を流しながら情報を差し出した。……情けは人のためならず。好きなだけ〔精神点〕を減少する。減少した値と同じ数だけ、上位リンクを得る。",
      "クスリ漬けの流氓を拳で『説得』。流氓はゲロと一緒に情報を吐き出した。2点のダメージ(セーブ不可)を受け、好きなタグの上位リンクを1つ得る。",
      "次から次へと糞どもがやってくる。コストを消費せずに上位リンクを3つ得る。",
      "自称『善良な一市民』からの情報リークを受ける。オマエの持っている異能の数だけ上位リンクを得る。……罠か!?",
      "サウナ風呂でくつろぐヤクザから情報収集。ヤクザは歯の折れた口から、弱々しい呻きと共に情報を吐き出した。好きなだけダメージを受ける(セーブ不可)。好きなタグの受けたダメージと同じ値のSLへリンクを1つ得る。",
      "ゼロ・トレランスオンスロートなラブ&ウォー。2D6を振り、その値が現在の〔肉体点〕以上であれば、情報をゲット!",
      "お前達を狙う刺客が冥土の土産に教えてくれる。お前自身かチームの仲間、お前の恋人のいずれかの〔肉体点〕を0点にすれば、情報をゲットできる。",
      "お前の宿敵(データはブラックアドレス)が1D6体現れる。血戦によって相手を倒せば、情報ゲット。"
    ]
  ),
  "CrimeIHT" => DiceTable::Table.new(
    "情報ハプニング表/〔犯罪〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "警官からの職務質問。一晩拘留される。臭い飯表(p.70)を1回振ること",
      "だますつもりがだまされる。〔サイフ〕を1点消費",
      "気のゆるみによる駐車違反。持っている乗物が無くなってしまう",
      "超えてはならない一線を越える。トラウマを1点受ける",
      "そのトピックを取りしきる盟約に目をつけられる。このトピックと同じタグのトピックからはリンクをはれなくなる",
      "過去の亡霊がきみを襲う。自分の修得している異能の中から好きな1つを選ぶ。このセッションでは、その異能が使用不可になる",
      "敵対する盟約のいざこざに巻き込まれる。〔肉体点〕に1D6点のセーブ不可なダメージを受ける",
      "スリにあう。〔通常装備〕からランダムにアイテムを1個選び、それを無くす",
      "敵対する盟約からの妨害工作。この情報は情報収集のルールを使って手に入れることはできなくなる",
      "頼れる協力者のもとへ行くと、彼(彼女)の無惨な姿が……自分の持っている現在のセッションに参加していないキャラクター1体を選び、〔肉体点〕を0にする。そして、致命傷表(p.61)を振ること"
    ]
  ),
  "LifeIHT" => DiceTable::Table.new(
    "情報ハプニング表/〔生活〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "経理の整理に没頭。この日の行動をすべてそれに費やさない限り、このセッションでは買物を行えなくなる",
      "壮大なる無駄使い。〔サイフ〕を1点消費",
      "「当たり屋(p.124)」が【追跡】を開始",
      "留守の間に空き巣が! 〔アジト装備〕からランダムにアイテムが1個無くなる",
      "「押し売り(p.124)」が【追跡】を開始",
      "新たな風を感じる。自分の好きな〔趣味〕1つをランダムに変更すること",
      "貧乏ひまなし。[1D6-自分の〔生活〕]ターンの間、行動できなくなる",
      "留守の間にアジトが火事に! 〔アジト装備〕がすべて無くなる。明日からどうしよう?",
      "頼りにしていた有力者が失脚する。しわ寄せがこっちにもきて、〔生活〕が1点減少する",
      "覚えのない借金の返済を迫られる。〔サイフ〕を1D6点減らす。〔サイフ〕が足りない場合、そのセッション終了時までに不足分を支払わないと【借金大王】(p.119)の代償を得る"
    ]
  ),
  "LoveIHT" => DiceTable::Table.new(
    "情報ハプニング表/〔恋愛〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "一晩を楽しむが相手はちょっと特殊な趣味だった。アブノーマルの趣味を持っていない限り、トラウマを1点受ける。この日はもう行動できない",
      "一晩を楽しむが相手はちょっと特殊な趣味だった。【両刀使い】の異能を持っていない限り、トラウマを1点受ける。この日はもう行動できない",
      "一晩を楽しむが相手は年齢を10偽っていた。ロマンス判定のファンブル表を振ること",
      "すてきな人を見かけ、一目惚れ。DDが選んだNPC1体のトリコになる",
      "「痴漢・痴女(p.124)」が【追跡】を開始",
      "手を出した相手が有力者の女(ヒモ)だった。手下どもに袋叩きに会い、1D6点のダメージを受ける(セーブ不可)",
      "突然の別れ。トリコ欄からランダムに1体を選び、その名前を消す",
      "乱れた性生活に疲れる。〔肉体点〕と〔精神点〕がともに2点減少する",
      "性病が伝染る。1日以内に病院に行き、治療(価格4)を行わないと、鼻がもげる。鼻がもげると〔恋愛〕が1点減少する",
      "生命の誕生。子供ができる"
    ]
  ),
  "CultureIHT" => DiceTable::Table.new(
    "情報ハプニング表/〔教養〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "アヤシイ書物を読み、一時的発狂。この日はもう行動できない。トラウマを1点受ける",
      "天才ゆえの憂鬱。自分の〔教養〕と同じ値だけ、〔精神点〕を減少させる",
      "唐突に睡魔が。次から2ターンの間、睡眠しなくてはならない",
      "間違いメールから恋が始まる。ハンドルしか知らない「女子高生(p.122)」に偽装した「殺人鬼(p.137)」と恋人(お互いのトリコ)の関係になる",
      "「勧誘員(p.124)」が【追跡】を開始",
      "OSの不調。徹夜で再インストール。この日はもう行動できない上、「無理」をしてしまう",
      "場を荒らしてしまう。このトピックと同じタグのトピックからはリンクをはれなくなる",
      "ボケる。〔教養〕が1点減少する",
      "クラッキングに遭う。いままで調べていたトピックとリンクをすべて失う",
      "ネットサーフィンにハマってしまい、ついつい時間が過ぎる。毎ターンのはじめに〔性業値〕判定を行い、律にならないとそのターンは行動できない。この効果は1日続く"
    ]
  ),
  "CombatIHT" => DiceTable::Table.new(
    "情報ハプニング表/〔戦闘〕",
    "2D6",
    [
      "謎の情報屋チュンさん登場。ターゲットとなる情報を渡し、いずこかへ去る。情報ゲット!",
      "悪を憎む心に支配され、一匹の修羅と化す。キジルシの代償から1種類を選び、このセッションの間、習得すること。修得できるキジルシの代償がなければ、あなたはNPCとなる。",
      "自宅に帰ると、無惨に破壊された君のおたからが転がっていた。「この件から手を引け」という書き置きと共に……。この情報フェイズでは、リンク判定を行ったトピックのタグの〔趣味〕を修得していた場合、それを未修得にする。また、おたからを持っていたなら、このセッション中、そのおたからは利用できなくなる。",
      "「俺にはもっと別の人生があったんじゃないだろうか……!?」突如、空しさがこみ上げて来る……その日は各ターンの始めに〔性業値〕判定を行う。失敗すると、酒に溺れ、そのターンは行動済みになる。",
      "クライムファイター仲間からスパイの容疑を受ける……1点のトラウマを追う。",
      "自宅の扉にメモが……!! 「今ならまだ間に合う」奴等はどこまで知っているんだ!? このトピックからは、これ以上リンクを伸ばせなくなる。",
      "大幇とコンビナートの抗争に何故か巻き込まれる。……なんとか生還するが、次のターンの最後まで行動できず、1D6点のダメージを受ける(セーブ不可)",
      "地獄組の鉄砲玉が君に襲い掛かってきた!! 〔戦闘〕で難易度9の判定に失敗すると、〔肉体点〕が0になる。",
      "「お前はやり過ぎた」の書きおきと共に、友人の死体が発見される〔戦闘〕で難易度9の判定を行う。失敗すると、ランダムに選んだチームの仲間1人が死亡する。",
      "宿敵によって深い疵を受ける。自分の修得している異能の中から、1つ選ぶこと。このセッションのあいだ、その異能を使用することができなくなる。",
      "流氓の男の卑劣な罠にかかり、肥え喰らいの巣に落ちる!! 「掃き溜めの悪魔」1D6体と血戦を行う。戦いに勝たない限り、生きて帰ることはできないだろう……。もちろん血戦に勝ったところで情報は得られない。"
    ]
  ),
  "GeneralAccidentT" => DiceTable::Table.new(
    "汎用アクシデント表",
    "2D6",
    [
      "痛恨のミス。激しく状況が悪化する。以降のケチャップに関する行為判定の難易度に+1の修正がつき、あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す)",
      "最悪の大事故。ケチャップどころではない! 〔犯罪〕で難易度9の判定を行う。失敗したら、ムーブ判定を行ったキャラクターは3D6点のダメージを受け、ケチャップから脱落する。判定に成功すればギリギリ難を逃れる。特に何もなし。",
      "もうダメだ……。絶望感が襲いかかってくる。後3ラウンド以内にケリをつけないと、あなたが追う側なら自動的に逃げる側が勝利する(逃げる側なら追う側が勝利する)",
      "まずい、突発事故だ! ムーブ判定を行ったキャラクターは、1D6点のダメージを受ける。",
      "一瞬ひやりと緊張が走る。 ムーブ判定を行ったキャラクターは、〔精神点〕を2点減少する。",
      "スランプ! 思わず足踏みしてしまう。ムーブ判定を行った者は、ムーブ判定に使用した能力値を使って難易度7の判定を行うこと。失敗したら、ムーブ判定を行ったキャラクターは、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)",
      "イマイチ集中できない。〔性業値〕判定を行うこと。「激」になると、思わず見とれてしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)",
      "古傷が痛み出す。以降のケチャップに関する行為判定に修正が+1つく",
      "うっかり持ち物を見失う。〔通常装備〕欄からアイテムを1個選んで消す",
      "苦しい状態に追い込まれた。ムーブ判定を行ったキャラクターは、今後のムーブ判定で成功度が-1される。",
      "頭の中が真っ白になる。〔精神点〕を1D6減少する。"
    ]
  ),
  "RomanceFumbleT" => DiceTable::Table.new(
    "ロマンスファンブル表",
    "2D6",
    [
      "みんなあいそをつかす。自分のトリコ欄のキャラクターの名前をすべて消すこと",
      "痴漢として通報される。〔犯罪〕の難易度9の判定に成功しない限り、1D6ターン後に検挙されてしまう",
      "へんにつきまとわれる。対象は、トリコになるが、ファンブル表の結果やトリコと分かれる判定に成功しない限り、常備化しなくてもトリコ欄から消えることはない",
      "修羅場! 対象とは別にトリコを所有していれば、そのキャラクターが現れ、あなたと対象に血戦をしかけてくる",
      "恋に疲れる。自分の〔精神点〕が1D6点減少する",
      "甘い罠。あなたが対象のトリコになってしまう",
      "平手うち! 自分の〔肉体点〕が1D6点減少する",
      "浮気がばれる。恋人関係にあるトリコがいれば、そのキャラクターの名前をあなたのトリコ欄から消す",
      "無礼な失言をしてしまう。対象はあなたに対し「憎悪(p.120参照)」の反応を抱き、あなたはその対象の名前を書き込んだ【仇敵】の代償を得る",
      "ショックな一言。トラウマを1点受ける",
      "トリコからの監視! このセッションの間、ロマンス判定のファンブル率が自分のトリコの所持数と同じだけ上昇する"
    ]
  ),
  "FumbleT" => DiceTable::Table.new(
    "命中判定ファンブル表",
    "2D6",
    [
      "自分の持ち物がすっぽぬけ、偶然敵を直撃! 持っているアイテムを1つ消し、ジオラマ上にいるキャラクター1人をランダムに選ぶ。そのキャラクターの〔肉体点〕を1D6ラウンドの間0点にし、行動不能にさせる(致命傷表は使用しない)。1D6ラウンドが経過し、行動不能から回復すると、そのキャラクターの〔肉体点〕は、行動不能になる直前の値にまで回復する",
      "敵の増援! 「三下(p.125)」が1D6体現れて、自分たちに襲いかかってくる(DDは、この処理が面倒だと思ったら、ファンブルしたキャラクターの〔肉体点〕を1D6点減少させてもよい)",
      "お前のいるマスに「障害物」が出現! そのマスに障害物オブジェクトを置き、そのマスにいたキャラクターは全員2ダメージを受ける(セーブ不可)",
      "射撃武器を使っていれば、弾切れを起こす。準備行動を行わないとその武器はもう使えない",
      "転んでしまう。準備行動を行わないと移動フェイズに行動できず、格闘、射撃、突撃攻撃が行えない",
      "急に命が惜しくなる。性業値判定をすること。「激」なら戦闘を続行。「律」なら次のラウンドから全力移動を行い、ジオラマから逃走を試みる。「迷」なら次のラウンドは移動・攻撃フェイズに行動できない",
      "誤って別の目標を攻撃。目標以外であなたに一番近いキャラクターに4ダメージ(セーブ不可)!",
      "誤って自分を攻撃。3ダメージ(セーブ不可)!",
      "今使っている武器が壊れる。アイテム欄から使用中の武器を消すこと。銃器を使っていた場合、暴発して自分に6ダメージ! 武器なしの場合、体を傷つけ3ダメージ(共にセーブ不可)!",
      "「制服警官(p.129)」が1人現れる。その場にいるキャラクターをランダムに攻撃する",
      "最悪の事態。〔肉体点〕を0にして、そのキャラクターは行動不能に(致命傷表は使用しない)"
    ]
  ),
  "FatalT" => DiceTable::Table.new(
    "致命傷表",
    "2D6",
    [
      "死亡。",
      "死亡。",
      "昏睡して行動不能。1D6ラウンド以内に治療し、〔肉体点〕を1以上にしないと死亡。",
      "昏睡して行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと死亡。",
      "大怪我で行動不能。体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。",
      "大怪我で行動不能。1D6ターン以内に治療し、〔肉体点〕を1以上にしないと体の部位のどこかを欠損してしまう。任意の〔能力値〕1つが1点減少。",
      "気絶して行動不能。〔肉体点〕の回復には治療が必要。",
      "気絶して行動不能。1ターン後、〔肉体点〕が1になる。",
      "気絶して行動不能。1D6ラウンド後、〔肉体点〕が1になる。",
      "気絶して行動不能。1D6ラウンド後、〔肉体点〕が1D6回復する。",
      "奇跡的に無傷。さきほどのダメージを無効に。"
    ]
  ),
  "AccidentT" => DiceTable::Table.new(
    "アクシデント表",
    "2D6",
    [
      "ゴミか何かが降ってきて、視界を塞ぐ。以降のケチャップに関する判定に修正が+1つく。あなたが追う側なら逃げる側のコマを2マス進める(逃げる側なら自分を2マス戻す)",
      "対向車線の車(もしくは他の船、飛行機)に激突しそうになる。運転手は難易度9の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は3D6のダメージを受けた上に、ケチャップから脱落",
      "ヤバイ、ガソリンがもうない! 後3ラウンド以内にケリをつけないと逃げられ(追いつかれ)ちまう",
      "露店や消火栓につっこむ。その乗物に1D6ダメージ",
      "一瞬ひやりと緊張が走る。〔精神点〕を2点減らす",
      "何かの障害物に衝突する。運転手は難易度7の〔精神〕の判定を行うこと。失敗したら、乗物と乗組員全員は2D6ダメージを受けた上に、ケチャップから脱落。成功しても、あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)",
      "走ってる途中に〔趣味〕に関する何かが目に映る。性業値判定を行うこと。「激」になると思わず見とれてしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)",
      "軽い故障が起きちまった。以降のケチャップに関する行為判定に修正が+1つく",
      "うっかり落し物。〔通常装備〕欄からアイテムを1個選んで消す",
      "あやうく人にぶつかりそうになる。運転手は難易度9の〔精神〕の判定を行う。失敗したら、その一般人を殺してしまう。あなたが追う側なら逃げる側のコマを1マス進める(逃げる側なら自分を1マス戻す)",
      "信号を無視しちまったら後ろで事故が起きた。警察のサイレンが鳴り響いてくる。DDはケチャップの最後尾に警察の乗物を加えろ。データは「制服警官(p.129)」のものを使用"
    ]
  ),
  "AfterT" => DiceTable::Table.new(
    "その後表",
    "2D6",
    [
      "ここらが潮時かもしれない。2D6を振り、その目が自分の修得している代償未満であれば、そのキャラクターは引退し、二度と使用できない",
      "苦労の数だけ喜びもある。2D6を振り、自分の代償の数以下の目を出した場合、経験点が追加で1点もらえる",
      "妙な恨みを買ってしまった。【仇敵】(p.95)を修得する。誰が【仇敵】になるかは、DDが今回登場したNPCの中から1人を選ぶ",
      "大物の覚えがめでたい。今回のセッションに登場した盟約へ入るための条件を満たしていれば、その盟約に経験点の消費なしで入ることができる",
      "思わず意気投合。今回登場したNPC1人を選び、そのキャラクターとの【コネ】(p.95)を修得する",
      "今回の事件で様々な教訓を得る。自分の修得しているアドバンスドカルマの中から、汎用以外のものを好きなだけ選ぶ。そのカルマの異能と代償を、別な異能と代償に変更することができる",
      "深まるチームの絆。今回のセッションでミッションが成功していた場合、【絆】(p.95)を修得する",
      "色々な運命を感じる。今回のセッションでトリコができていた場合、経験点の消費なしにそのトリコを常備化することができる。また、自分が誰かのトリコになっていた場合、その人物への【トリコ】(p.95)の代償を得る",
      "やっぱり亜侠も楽じゃないかも。今回のセッションで何かツラい目にあっていた場合、【日常】(p.95)を取得する",
      "くそっ! ここから出せ!! 今回のセッションで逮捕されていたら、【前科】(p.95)の代償を得る",
      "〔性業値〕が1以下、もしくは13以上だった場合、そのキャラクターは大阪の闇に消える。そのキャラクターは引退し、二度と使用できない"
    ]
  ),
  "KusaiMT" => DiceTable::Table.new(
    "臭い飯表",
    "2D6",
    [
      "やあ署長、ご苦労さん。いつでも好きなときに留置所を出ることができる。",
      "軽い取り調べを受ける。次の1ターンが終了するまで、未行動にならない。",
      "荒っぽい取り調べを受ける。次の1ターンが終了するまで、未行動にならない。1ターン休み。1D6ダメージを受ける(セーブ不可)。",
      "一晩泊まっていきなさい。次の日の朝まで未行動にならない。",
      "粘り強い取り調べが続く。1D6日後の朝まで未行動にならない。",
      "留置所のトイレで陵辱を受ける。1D6日後の朝まで未行動にならない。トラウマを1点受ける。",
      "劣悪な環境のせいで伝染病にかかる。1D6日後の朝まで未行動にならない。【病弱】の代償を得る。",
      "精神異常を訴え、無罪に。しかし、アーカム・アサイレムに移送され、1D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。キジルシの代償の中から、ランダムに1つの代償を得る。",
      "起訴されて有罪に。海上刑務所行き。1D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。【前科】の代償を得る。",
      "起訴されて有罪に。海上刑務所行き。2D6回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。【前科】の代償を得る。",
      "起訴されて有罪に。海上刑務所行き。終身刑。そのキャラクターは引退する。"
    ]
  ),
  "EnterT" => DiceTable::Table.new(
    "登場表",
    "2D6",
    [
      "「こっから先にはいかせないぜ」 【仇敵】がいれば現われ、血戦が始まる。現在の血戦、もしくはケチャップが終了したら、処理を行うこと。",
      "「待たせたな、みんな!」 ジオラマの好きな場所に自分のキャラクターを配置する。",
      "おっと、鉢合わせ。ランダムにジオラマ上の敵を1体選ぶ。選んだ敵と同じマスに、そのキャラクターを配置する。",
      "全力ダッシュで駆けつける! 〔肉体点〕を1D6点消費すれば、ジオラマの好きな場所に自分のキャラクターを配置する。そうでなければ、登場できない。",
      "裏道を歩いていたら、偶然その場所にでくわした。DDはジオラマの好きな場所にそのキャラクターを配置する。",
      "「キキィー!」 もしもそのキャラクターが乗物を装備していれば、DDはジオラマの好きな場所にそのキャラクターを配置する。そうでなければ、登場できない。",
      "……間に合ったみたいだな。仲間を1人選び、そのキャラクターと同じマスに自分のキャラクターを配置する。",
      "ラッキー、「ジャリ銭」を拾った。……と、そんな場合じゃないよな。",
      "をっと、お前の好物だ。〔性業値〕判定を行え。「律」ならもう一回、登場表を振ることができる。それ以外なら、キャラクターを配置できない。",
      "んー。ここは一度通ったような。疲労から〔精神点〕を2点減少。",
      "くあー。完全に道に迷っちまった。この実行フェイズには登場できない。"
    ]
  ),
  "BudTT" => DiceTable::Table.new(
    "バッドトリップ表",
    "2D6",
    [
      "自分の身の周りにいる人たちが異様な何か(悪魔、宇宙人、ゾンビ、お前と同じ顔をした誰か…)に変貌し襲い掛かってくる。お前はNPCとなって、同じ場所にいる誰かに血戦をしかける。血戦が終了すれば(そして生きていれば)、視界は元に戻っている。",
      "世界は一つ。オープンソース。愛で結びつくべきなんだ。お前は自分の知っていることをペラペラと話だし、1D6ターンの間、聞かれれば知っていることを何でも話してしまう。",
      "自分と他人の区別がつかなくなり、現実感が薄れる。〔精神点〕を1D6点減少する。",
      "誰かが自分を殺そうと企んでいるような錯覚を覚える。1D6ターンの間、ペテン師の代償【疑心暗鬼】を修得する。",
      "風景が極彩色に彩られる!もっと……もっと極彩色に!もし他にも「麻薬」カテゴリのアイテムを持っていれば、その中の1個を使用する(行動は使わない)。",
      "目の前にいる人物が非常にいとおしく思えてくる。同じ場所にいるキャラクターの中からランダムに1人選ぶ。1D6ターンの間、そのキャラクターのトリコになる。",
      "魅力的な裸の異性が、あなたの目の前で誘惑する幻覚を見る。〔性業値〕判定を行う。「激」になると服を脱ぎだす。もしも外にいればそのエリアの〔治安〕の難易度の〔犯罪〕判定を行う。失敗すると「臭い飯」表を振る。",
      "お前は痛みを感じなくなる。1D6ターンの間、〔肉体点〕の重症のペナルティが無効化される。",
      "自分の持っているものから触手が生え、あなたにからみつく。自分の〔通常装備〕欄のアイテムの中からランダムに1種を選ぶ。それを捨てる。",
      "皮膚の中を無数の蟲が蠢いているのを感じる。〔肉体点〕を3点減少する。",
      "神々しい声が聞こえてくる。1D6ターンの間、自分の好きな能力値を1点上昇することができる。"
    ]
  ),
  "GetgT" => DiceTable::Table.new(
    "報酬・ガラクタ表",
    "2D6",
    [
      "持ち主の〔生活〕と等しい個数の《食事》(基本80p、小道具・日用品)",
      "持ち主の〔生活〕と等しい個数の《トルエン》(基本79p、小道具・麻薬)",
      "持ち主の〔生活〕と等しい個数の《ジャリ銭》(基本78p、小道具・お金)",
      "壊れた実用品。実用品表で決定。(壊れたアイテムは、1ターン使用し〔教養〕で難易度9の判定に使用すると直せる)",
      "《テレカ》(基本78p、小道具・通信手段)",
      "何もなかった(涙)。残念でした。",
      "《ロープ》(基本78p、小道具・保安器具)",
      "《トヨトミピストル》(基本74p、武器)",
      "《自転車》(基本76p、乗物)",
      "《ふとん》(基本79p、小道具・日用品)",
      "持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。"
    ]
  ),
  "GetzT" => DiceTable::Table.new(
    "報酬・実用品表",
    "2D6",
    [
      "持ち主と同じタイプの汎用おたから(基本82p、汎用おたから)",
      "価格5の《ホテル》の使用券(基本80p、小道具・サービス)",
      "《苦力》(基本80p、小道具・手下)",
      "《カメラ》(基本80p、小道具・手下)",
      "持ち主が使っていた装備(ただし、一般アイテムに存在しない装備をPCは使用できない)",
      "持ち主の〔生活〕と等しい個数の《札巻》(基本78p、小道具・お金)",
      "持ち主の〔生活〕と等しい個数の《大麻》(基本79p、小道具・麻薬)",
      "《ノートパソコン》と《携帯電話》(基本78p、79p、小道具・日用品、通信手段)",
      "《ヴェスパ》(基本76p、乗物)",
      "《救急箱》(基本79p、小道具・保安器具)",
      "《札束》(基本78p、小道具・お金)"
    ]
  ),
  "GetnT" => DiceTable::Table.new(
    "報酬・値打ち物表",
    "2D6",
    [
      "社会的身分。【日常】の異能を手に入れる。",
      "《人柱》(基本184p、盟約おたから・沙京流氓)",
      "貴重な貴金属。1ターン使って〔生活〕で難易度9の判定に成功すれば《トランク》と交換できる。",
      "持ち主と同じタイプの汎用おたから(基本82p、汎用おたから)",
      "持ち主の〔生活〕と等しい個数の《ヘロイン》(基本79p、小道具・麻薬)",
      "持ち主の〔生活〕と等しい個数の《札束》(基本78p、小道具・お金)",
      "持ち主の〔生活〕と等しい個数の価格5以下の武器(基本79p、小道具・麻薬)",
      "《ロールスロイス》(基本76p、乗物)",
      "持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。",
      "《トランク》(基本78p、小道具・お金)",
      "《宝箱》(基本78p、小道具・お金)"
    ]
  ),
  "GetkT" => DiceTable::Table.new(
    "報酬・奇天烈表",
    "2D6",
    [
      "好きな盟約おたから1個(プレイヤー全員で相談して決定)",
      "《気球》(基本76p、乗物)",
      "《チェインソー》(基本74p、武器)",
      "誰かから感謝される。それだけ?",
      "持ち主の〔趣味〕からランダムに1種類選ぶ。その趣味おたからを1個ランダムに選ぶ。",
      "何もなかった(涙)。残念でした。",
      "持ち主と同じタイプの汎用おたから(基本82p、汎用おたから)",
      "《フォークリフト》(基本76p、乗物)",
      "《RPG-7》(基本74p、武器)",
      "倒されたキャラクターは、致命傷表を振り、まだ生きていれば、そのキャラクターを倒した者のトリコになる。",
      "「先にイッてるぜ」そのキャラクター1体を倒した者に経験点が1点与えられる。"
    ]
  ),
  "PayT" => DiceTable::Table.new(
    "落とし前表",
    "2D6",
    [
      "闇のゲーム。ロシアンルーレットや地下闘技場への出場といった、致死率の高い理不尽な労働に従事させられる。この落とし前を1回受けるたびに、1D6を振る。1の出目が出ると、そのキャラクターは死亡する。",
      "拷問。心身ともに痛めつけられる。この落とし前を1回受けるたびに、【悪夢】、【疑心暗鬼】、【出不精】、【依存体質】、【弱虫】、【虚弱】の中から代償を一つ選んで修得する。どの代償もすでに修得していた場合、そのキャラクターは死亡する。新しい恋人ができるたび、この落とし前の効果を1回分、無効化することができる。",
      "苦役。売春や、組織犯罪の資金源になるよう強制労働に従事させられる。この落とし前を1回受けるたびに、以降、セッションの間に「苦役」という特に何の効果ももたらさない計画的行動を一度行わなければいけなくなる。セッション中に規定の「苦役」の回数をこなすことができなかったキャラクターは、「苦役」の必要回数に満たない数だけ、「落とし前表」を使用しなければならない。《トランク》を1個消費すると、この落とし前表の効果を1回分、無効化することができる。",
      "係累への被害。自分の身内や恋人が殺される。この落とし前を1回受けるたびに、トラウマを1点受ける。",
      "部位破壊。指や手首を切り落とされたり、臓器を摘出されたりする。この落とし前を1回受けるたびに、「致命傷表」の6番の効果を受ける。",
      "罰金。法外な違約金を払わされたり、借金を負わされたりする。この落とし前を1回受けるたびに、〔サイフ〕の最大値が1点減少する。〔サイフ〕の最大値が0点になると、そのキャラクターは死亡する。《札束》を5個消費すると、この落とし前の効果を一回分、無効化することができる。",
      "さらし者。謝罪会見を行わされたり、恥ずかしい動画や写真を公開されたりする。この落とし前を1回受けるたびに、【世界の敵】、【悪名】、【有名人】、【狼少年】、【手配書】、【カモ】の中から代償を一つ選んで修得する。どの代償もすでに修得していた場合、そのキャラクターは死亡する。経験点を2点消費すると、この落とし前の効果を1回分、無効化することができる。",
      "刻印。坊主頭にされたり、恥ずかしい入れ墨や刻印を刻み付けられたりする。この落とし前を1回受けるたびに、そのキャラクターが行うロマンスや交渉の判定の難易度が1点上昇する。",
      "差し押さえ。この落とし前を1回受けるたびに、そのキャラクターは、自分が装備しているもっとも価格の高いアイテム1つを失う。おたからは価格8として扱い、もっとも高い価格のアイテムを複数持っている場合は、その中からランダムに選ぶ。",
      "監禁。マグロ漁船や地下工場に閉じ込められ、長期的な労働に従事させられる。この落とし前を1回受けるたびに、一回別のキャラクターでセッションを行うまで、そのキャラクターを使用できない。《札束》を5個消費すると、この落とし前の効果を1回分、無効化することができる。",
      "去勢。性的な機能を破壊される。この落とし前を受けると、「無言で押し倒す」ことができなくなる。この落とし前を二回以上受けると、そのキャラクターは死亡する。"
    ]
  ),
  "MinamiRET" => DiceTable::Table.new(
    "ミナミ遭遇表",
    "2D6",
    [
      "(場所)大変だ、阪神が勝った。4000人のトラキチが、一緒に道頓堀に飛び込もうと迫る。飛び込むなら水中には「下水ワニ」(基本132p)が待っている。拒否するならトラキチたちは「ベンガル虎」(基本133p)を亜侠にけしかける。",
      "(場所)突然の夕立、そして稲妻! 武器を一番多く持っている亜侠に雷が落ちる。複数いた場合、1D6で一番高い目を出した亜侠に落ちる。黒焦げになり、パーマがかかり、ランダムに一つ武器を失う(熔ける)。",
      "(一人)酔っ払いの吐瀉物を浴びて〔精神点〕に1ダメージ。風呂に入って着替えるまで、あらゆる交渉は自動的に成功度が-1される。",
      "(一人)好みの恋愛対象に出会ったと思ったら「美人局」(基本124p)だった!",
      "(一人)うっかり入った店が暴力喫茶だった! 「押し売り」(基本124p)相当。",
      "(一人)しつこいキャッチに絡まれる。「勧誘員」(基本124p)相当。",
      "(一人)裏路地で襲われる。「痴漢・痴女」(基本124p)相当。",
      "(一人)道を渡ろうとしたら路面電車に撥ねられる。〔肉体点〕に1D6ダメージ。",
      "(一人)契約刑事に恐喝される。逮捕されたくなければ、〔サイフ〕を1減らせ。",
      "(一人)うっかりマリア・ヴィスコンティを怒らせた! この場では何も起こらないが、マリアは忘れない。次に亜侠が致命傷表送りになったとき、マリアが出現して亜侠の利き腕を吹き飛ばして去る(致命傷表の判定が必ず「7~9」になる)。",
      "(一人)「円盤」(基本138p)に襲われ、さらわれる。1ターン経って戻ってくると、頭からアンテナが生えている。キャラクターイラストにアンテナを書き加えろ。それが嫌なら戦うこと。"
    ]
  ),
  "ChinatownRET" => DiceTable::Table.new(
    "中華街遭遇表",
    "2D6",
    [
      "(一人)好みの恋愛対象に襲われて目くるめく一時を過ごす。だが1ターン経って目が覚めると、房中術で性転換させられている。",
      "(場所)人を食う「パンダ」(基本133p)に襲われる。",
      "(一人)道端の占い師をうっかり撥ねて、人肉饅頭の呪いを受ける。このセッション中に行動不能になったら、狂気の料理人に饅頭にされて食われ、後には何も残らない。",
      "(場所)漢方薬局を冷やかしていたら、世界自然保護プロレス基金WWWWF(World_Wide_Wildelife_Wrestling_Found)のレスラー1D6人(「街頭覇王」(基本134p))に襲われる。亜侠が手に取った犀の角が気に入らなかったのだ。誰かが〔サイフ〕を1支払ってTシャツを買うと許してくれる(キャラクターイラストにパンダのマークをつけること)が、そうでなければ戦うしかない。",
      "(場所)化石を売りつけようとする「押し売り」(基本124p)に遭遇。品物は1D6を振って決める。1:ゴモラの全身骨格、2:マチカネワニの涙、3:明石原人の糞石、4:生きた北京原人、5:豊臣秀吉15歳のしゃれこうべ、6:三葉虫ボトルキャップ",
      "(場所)映画の撮影現場に紛れ込んでしまった! このセッションの間、戦闘時になると敵味方全員に《透明ワイヤー》の効果がつく。既に持っていた場合、「跳ぶ」を選んでも使用回数を消費しない。",
      "(一人)美味しい中華料理を食いすぎて、一時的にすごく太る。このセッションの間は、〔肉体〕が+1されるが、その亜侠に対する命中判定にも+1の修正がつく。",
      "(一人)道端で碁の勝負を見ていたら、いつのまにか1ターン経っていた。代わりに〔精神点〕が1回復する。",
      "(一人)お前をスターと間違えたおっかけの大群が迫ってくる。このセッションの間、【有名人】の代償がつく。",
      "(場所)空飛ぶギロチンを持った老人と片腕の格闘家が戦っている。二人はどちらもチームに加勢を求める。老人は「罪狩」(基本135p)、格闘家は「殺人鬼」(基本137p)だ。味方するなら、どちらに手を貸すか決めて戦闘を行え(味方された本人は戦わない)。どちらかを倒したらもう一人は礼を言って即座に去る。倒したのが格闘家なら《不肖の弟子》が、老人なら《空飛ぶギロチン》(本格的武器)が手に入る。",
      "(場所)「狂人」とその一党が現れた! キャラクターシートの「好きな映画」が空欄だった亜侠は、頭に火をつけられる。キャラクターのイラストから髪を取り除け。シートに顔を描いていなかった場合、キャラクターシートを燃やすか、自分の頭を燃やすか、〔肉体点〕を1減らすこと。「狂人」を倒すことはできない。彼は永遠だ。"
    ]
  ),
  "WarshipLandRET" => DiceTable::Table.new(
    "軍艦島遭遇表",
    "2D6",
    [
      "(場所)蟹の押し売りに遭う。しかもただの押し売りではない、食い詰めた「超人兵士」(基本134p)だ! 蟹(価格3の「食事」(基本79p))を買うか、そうでなければ戦うこと。",
      "(場所)救世軍の配給に長い行列ができている。〔性業値〕判定で「激」を出した亜侠はつい並んでしまい、1ターン消費して「食事」(基本79p)をゲット。",
      "(場所)荒廃した通りを横断していたら撃たれる。スナイパーだ! 全員1D6を振り、一番低い目を出した亜侠は〔肉体点〕に1D6のダメージ。",
      "(場所)突然の路面陥没! 乗り物を所持している亜侠は〔精神〕9の判定に成功しないと、逃げ遅れて乗り物に2D6のダメージを受ける。",
      "(場所)季節はずれの雪が降っている。青く光ってなんだかとても美しい。とりあえず〔肉体点〕と〔精神点〕に1ダメージ。",
      "(場所)飢えた野犬がぞろぞろついてくる。このセッション中に軍艦島で行動不能になった亜侠は、すぐに食われて後には何も残らない。",
      "(一人)気がつくと食玩塗りの搾取工場の中……。コンビナートの手配師に捕まったのだ。脱出するのに1ターン無駄にするが、見張りの「ブラックアドレス」(基本127p)一体と戦って勝てば時間を無駄にせずにすむ。",
      "(一人)自宅が膨張する203高地に取り込まれた。脱出するのに1ターンかかる上、アジトの場所が「軍艦島」になってしまう。",
      "(場所)ガス爆発!1D6して出た目のエリアに飛ばされる上、飛ばされたエリアの遭遇表を振らねばならない。1:ミナミ、2:十三、3:沙京、4:中華街、5:官庁街、6:軍艦島",
      "(場所)ひょろひょろ跳んできた「ミサイル」(基本130p)と目が合った。目標を見失っていたミサイルは、亜侠を新たな目標に決めて親しげに近づいてくる。",
      "(一人)「タイラー・ダーデン」に遭遇し、啓蒙される。これがお前の人生だ。お前はいつか必ず死ぬ。それを認識しない限り、お前は糞のままだ。〔肉体点〕と〔精神点〕に1ダメージ。〔性業値〕が2下がる。更にこのセッション中は「迷」が出ても「激」として扱う。"
    ]
  ),
  "CivicCenterRET" => DiceTable::Table.new(
    "官庁街遭遇表",
    "2D6",
    [
      "(場所)大規模なデモにぶつかって身動きが取れなくなった。まずいと思う間もなく、列強の鎮圧部隊が容赦なく群集に向かって発砲する。阿鼻叫喚の中で全員〔肉体点〕に1D6のダメージ。",
      "(場所)火事だ! ビルがぼうぼう燃えている。〔犯罪〕8の判定に失敗すると、野次馬の中でスリにやられ、アイテムをランダムに一つ失う。",
      "(場所)株価暴落で取り付け騒ぎが起こっている。〔生活〕4以上の亜侠は〔サイフ〕が1減る。",
      "(一人)身投げか事故か突き落とされたのか、ビルから人が振ってきた。〔戦闘〕で難易度9の判定に成功しないと、直撃されて〔肉体点〕に2D6のダメージ。",
      "(場所)観光客に写真を撮られる。このセッション中、亜侠に対する逮捕判定の難易度は-1される。",
      "(一人)汚職警官に職務質問される。「押し売り」(基本124p)相当。",
      "(場所)軍事パレードが開催中だ。「デモ行進」(基本124p)相当。",
      "(場所)今日は即売会だ。「ヲタク」か「マニア」の〔趣味〕を持つ亜侠は、1ターン消費して買い物しないと、〔精神点〕に1D6ダメージ。",
      "(一人)爆弾テロだ! 1D6して出た目のエリアに飛ばされる上、飛ばされたエリアの遭遇表を振らねばならない。1:ミナミ、2:十三、3:沙京、4:中華街、5:官庁街、6:軍艦島",
      "(場所)ビルから降ってきたお札をみんなが奪い合っている。争奪戦に加わるなら、〔肉体点〕に1D6ダメージを受けて〔サイフ〕を1回復してよい。",
      "(一人)閉鎖されているはずの地下鉄の入り口が開いている……。性業値判定で「激」が出るとふらふらと入ってしまい、1ターン経った後戻る。奇天烈の宝物表(基本140p)を1回振れる。トラウマを1点受け、中で起こったことは何も憶えていない。入り口は固く閉ざされ、もう開かない。……今のところは。"
    ]
  ),
  "DowntownRET" => DiceTable::Table.new(
    "十三遭遇表",
    "2D6",
    [
      "(場所)地震だ! 亜侠自身には被害はないが、家が大変なことに。帰宅すると、アジト装備がランダムに1個壊れている。アジト装備がなかった場合、家が壊れている。",
      "(場所)山から下りてきた猪が突っ込んでくる! データは「トラック野郎」(基本123p)を使う。",
      "(一人)草野球の代打を頼まれる。1D6せよ。「スポーツ」の趣味があれば+1。1,2:三振! 冷たい視線を浴びて〔精神点〕-1、3,4:ヒット! 喝采を浴びて〔精神点〕1回復。5,6:ホームラン! そしてガラスの割れる音!窓を割られた家から怒り狂った「おかん」(基本122p)が飛び出して、大根片手に亜侠を襲う。",
      "(場所)「獅子舞」(基本128p)が亜侠の周りをぐるぐる周って離れようとしない。この状態で戦闘が起こると、獅子舞は敵に加わって亜侠を襲う。〔サイフ〕を1渡せば、獅子舞は歯をがちがち言わせて去る。",
      "(一人)地獄湯の「勝負師」(基本126p)に賭けを挑まれ、ざわざわする。",
      "(一人)お魚くわえようとするドラ猫に襲われる。〔犯罪〕で難易度9の判定に失敗したらランダムにアイテム一つを失う。亜侠が「食事」(基本79p)を持っていれば、優先的にそれを狙う。",
      "(場所)神風師団の自警団に囲まれた! 名前にカタカナがある亜侠がいたら集中的に襲われる(「忘八」(基本128p)1D6人相当)。日本人名の亜侠しかいなければ、被害を受けることはない。",
      "(一人)生臭坊主/生臭尼僧にお布施を要求される。データは「勧誘員」(基本124p)。",
      "(一人)大仏から身投げをした人が降ってきた。〔戦闘〕で難易度9の判定に成功しないと、直撃されて〔肉体点〕に2D6のダメージ",
      "(場所)祭囃子が聞こえてきたかと思ったら、目の前をすごい早さで神輿が通り過ぎる。性業値判定で「激」が出た亜侠は、思わず祭に参加してしまい、高速神輿に連れ去られる。1ターン戻ってこない上、疲れきって〔肉体点〕-1。",
      "(一人)好みの恋愛対象に誘われて夢のような時間を過ごし、気が付くと肥溜めに肩まで漬かっていることに気付く。おばけに化かされた!1ターン消費する。風呂に入って着替えるまで、あらゆる交渉は自動的に成功度が-1される。この効果は一緒に行動する仲間の判定にも影響する。"
    ]
  ),
  "ShaokinRET" => DiceTable::Table.new(
    "沙京遭遇表",
    "2D6",
    [
      "(一人)いつのまにか、少女/少年が1人ついてきている。奴隷のようだが、亜侠を主人だと思っているらしく離れようとしない。何に相当するか1D6を振れ。1:【守るべき者】(基本103p)、2:愛人(基本80p)、3:使用人(基本80p)、4:居候(基本80p)、5:落とし穴(基本78p)、6:食事(基本79p)。性別はプレイヤーが決めてよい。",
      "(場所)どこからか煙が漂ってくる……麻薬工場が火事だ! 煙を吸って目を回し、各自1D6を振れ、出た目のドラックの効果を受ける。直接摂取ではないので、ドラッグの強度からは-3。1:コカイン、2:大麻、3:ハルシオン、4:トルエン、5:エクスタシー、6自白剤(ドラッグのデータ→基本79p)",
      "(場所)やけに人懐っこい豚がいると思ったら、人の味を覚えた豚だった! 戦闘になる。データは「ベンガル虎」(基本133p)を使う。",
      "(場所)あばれ象が車を踏み潰して暴走している! 乗り物を所持している亜侠は〔精神〕9の判定に成功しないと、逃げ遅れて乗り物に2D6のダメージを受ける。",
      "(場所)インド人が死んでいる……。死体を漁るなら1D6。1:カレー味の《視肉》(基本85p)、2:サファイア(札束(基本78p)相当)、3:《あわてるなタオル》(基本93p)、4:RPG-7(基本74p)、5:死体じゃなくて「ゾンビ」(137p)だった、6:「はきだめの悪魔」だった",
      "(一人)バクシーシ! バクシーシ! じゃりンこ10人が〔サイフ〕1点払うまでぞろぞろついてくる。何かあると「邪魔」(基本37p)10人分を行う。",
      "(一人)いきなり足に何かが噛み付く。「下水ワニ」(基本132p)だ! 〔肉体〕9の判定に成功すると振りほどけるが、失敗すると〔肉体点〕に1ダメージ。成功するまで判定すること。〔肉体点〕が0になると、亜侠は水路に引きずり込まれて食われる。",
      "(一人)気がつくと奴隷船の船倉の中……。奴隷商人の人狩りに捕まったのだ。脱出するのに1ターン無駄にするが、見張りの「ククバット」(基本127p)1体と戦って勝てば時間を無駄にせずにすむ。",
      "(一人)アラブの露天商に水煙草を勧められる。一服してまったりする亜侠だが、その懐に小猿が手を伸ばす……。アイテムをランダムに1つ失う。",
      "(一人)魚を満載したトラックから鮫が落ちてきて、亜侠に噛み付いて死ぬ。怪我はないが離れようとしない。死んだ鮫をぶら下げて歩くことになるので、セッション終了時まで、その亜侠と一緒にいると治安が+2される。",
      "(場所)祝祭だ! 巨大なジャガーノート(山車)が通りを突き進んでくる。これに轢かれると幸せな来世が保証されるのだ。性業値判定を3回振れ。全部「激」を出した亜侠は、思わず車輪の下に飛び込んで〔肉体点〕に10のダメージを受ける。この亜侠が死んだら、次に作るキャラクターに異能と代償を一つずつ受け継がせること。これがカルマだ。"
    ]
  ),
  "LoveLoveRET" => DiceTable::Table.new(
    "らぶらぶ遭遇表",
    "2D6",
    [
      "(場所)お互いに運命を感じる。この後のロマンス判定で成功して、トリコを獲得した場合、セッション終了時にそのトリコを経験点消費なしに常備化できる。ただし、このトリコと別れたり、このトリコが死亡したりすると、経験点が1点減少する。",
      "(場所)「……こんなとこで何やってんの?」「げ」もし、自分のトリコの中に、この場所と同じ〔趣味〕の持ち主がいた場合、その人物が現れる。血戦を行うこと。",
      "(一人)デート中に相手の姿を見失ってしまう。〔犯罪〕で難易度9の判定を行う。成功すると、その場所の〔趣味〕に対応した趣味おたからをランダムに1つ獲得する。失敗すると、ロマンス判定は行えなくなる。",
      "(一人)楽しくショッピング! 〔生活〕で難易度9の判定を行う。成功すると、その成功度と同じ値だけ、〔精神点〕を回復できる。失敗すると、セッション中、この後のロマンス判定のファンブル率が2点上昇する。",
      "(一人)「…………」互いに遠慮して気まずい感じ。〔恋愛〕で難易度9の判定を行う。成功すると、この後のロマンス判定の難易度が1点減少する。失敗すると、この後のロマンス判定の難易度が2点上昇する。",
      "(場所)亜侠稼業を忘れてしまいそうなほど、充実した時間を過ごす。デートを行っているキャラクター全員は、〔精神点〕が2点回復する。",
      "(一人)「うーん、ここつまんないね。場所変えよっか」〔恋愛〕で難易度9の判定を行う。成功すると、この後のロマンス判定の難易度が1点減少する。失敗すると、デート参加者全員は、このエリアの遭遇表をさらに1回ずつ振らなければならない。",
      "(一人)趣味の会話で盛り上がる! 〔教養〕で難易度9の判定を行う。成功すると、それ以降一度だけ、そのセッション中に行う判定の難易度を、その成功度と同じ値だけ減少することができる。失敗すると、セッション中、この場所の〔趣味〕が未修得の状態になる。",
      "(一人)「あぶない、暴れ馬だッ!」〔戦闘〕で難易度9の判定を行う。成功すると、デートの相手の好みを、自分のタイプと同じものに変更することができる。失敗すると、デートの相手は1D6点のダメージを受ける(セーブ不可)。",
      "(場所)「ようよう、綺麗なねぇちゃん、連れとるやんけ」「三下」が1D6人現れる。血戦を行うこと。",
      "(場所)「んー付き合っちゃおうか」デートに参加したキャラクターは、この後のロマンス判定が自動的に成功する。"
    ]
  ),
  "AjitoRET" => DiceTable::Table.new(
    "アジト遭遇表",
    "2D6",
    [
      "(一人)「強盗殺人の容疑で逮捕する! お前には黙秘権があり、供述は、法廷で不利な証拠として……」どやどやと踏み込んでくる警官たち。「制服警官」がお前を対象にして【逮捕】の異能を使ってくる。「制服警官」の判定が失敗すると、それ以降、このセッション中では、「臭い飯」表を振るとき、その2D6の目からマイナス3することができる。",
      "(一人)ピンポーン♪ チャイムの音。イヤな予感がするなぁ。1D6を振る。奇数なら「勧誘員」が【ムダ話】を、偶数なら「押し売り」が【売り口上】を使ってくる。",
      "(一人)イメージチェンジ! たまにはスタイルを変えてみようかな? 外見表を使って、ランダムに外見を変える。そのセッション中、各エリアで〔犯罪〕の行為判定を行うとき、そのエリアの衣装欄に書かれた外見であれば、振ることのできる2D6の回数が1回上昇する。",
      "(場所)「やっぱり、ここにいやがったな」このアジトにいるキャラクターが【コネ】か【仇敵】か【トリコ】の汎用異能、もしくは汎用代償を修得していれば、それに対応するキャラクター(コネ、仇敵、自分の主人)が現れる。コネなら、アジトにいる全員は、価格がそのキャラクターの〔生活〕-1以下のアイテムを1つ獲得できる。仇敵なら、アジトにいる全員は1ダメージを受ける(セーブ不可)。自分の主人なら【トリコ】の持ち主は、別れをつげられ【トリコ】を失うが〔精神点〕が2D6点減少する。",
      "(一人)「よう、元気にしてるか?」家族や友人からの突然の連絡。懐かしい気持ちに高揚しつつも、優しい気持ちになる。〔性業値〕を1点上昇、もしくは1点減少することができる。",
      "(場所)何となくテレビでもつけ、面白いチャンネルがないか、探してみる。うーん。ケーブルテレビに入るべきか……。アジトの持ち主の〔生活〕の値と同じ回数だけ「趣味決定表」を振り、各自、その結果と自分の〔趣味〕を比べてみる。自分が持っている〔趣味〕と同じ〔趣味〕が出ていれば、その回数だけ、自分の〔精神点〕を回復する。",
      "(一人)あ、こんなところに買い置きが。《食事》を1D6個獲得する。",
      "(場所)「みんなで鍋でもするか」現在、このアジトにいるキャラクターと手下カテゴリーのアイテムの合計数だけ、〔精神点〕が回復する。",
      "(一人)ふぅ。やっぱり、自宅が一番落ち着くなぁ。もしも修得していなければ【日常】の異能を修得する。",
      "(一人)一休み……のつもりが、ついつい居眠りしてしまう。アジトに自分しかいなければ、性業値判定を行うこと。「律」になれば、〔精神点〕をアジトの〔快適度〕の半分だけ回復することができる。「激」なら、「睡眠」をしてしまう。「迷」なら、次のターンもアジトから移動できず、行動もできない。アジトに誰かいたら、もう一度アジト遭遇表を振ること。",
      "(一人)謎の贈り物が届く……。趣味おたからの中からランダムに1つを選び、それを獲得する。その後、1D6を振る。その目が、このイベントで趣味おたからを獲得した回数以下だった場合、贈り主の呪いによって2D6点のダメージを受ける(セーブ不可)。"
    ]
  ),
  "JigokuSpaRET" => DiceTable::Table.new(
    "地獄湯遭遇表",
    "2D6",
    [
      "(一人)なぜかあなたはローマ時代にタイムスリップする! 今後、このシナリオのあらゆる判定の難易度が1減少する(累積不可)。",
      "(場所)お湯の中に鮫が! 〔戦闘〕で難易度9の判定を行う。失敗したキャラクターは〔肉体点〕を1D6点減少。",
      "(一人)地獄湯の出張販売! 望むなら価格のある地獄組の盟約アイテムを購入することができる。",
      "(場所)ふぅ。湯上がりは親でも惚れるね。〔恋愛〕で難易度9の判定に成功すると、その場にいる好きなキャラクター1人をトリコにすることができる。",
      "(一人)あああ、なんか面白そうだなぁ。性業値判定を行う。「激」ならついついギャンブルゾーンに行ってしまう。「迷」なら行動済みになってしまう。「ギャンブル」の〔趣味〕の持ち主は、サイコロの目に2を加えること。",
      "(場所)地獄組による監視。もしチームが彼らと敵対していれば、うまく身を隠す必要がある。〔犯罪〕で難易度9の判定を行う。失敗すると、〔肉体点〕を1点減少する。そうでなければ、何もなし。",
      "(一人)うーん。のぼせちゃったかな。〔精神点〕を1点減少する。",
      "(場所)道に迷いそうになる。〔教養〕で難易度9の判定を行い、失敗したキャラクターは、地獄湯内の6つのゾーンの中からランダムに1つを選び、そこに移動する。",
      "(一人)ナンパにあう。〔恋愛〕で難易度9の判定に成功すると、色々おごってもらえる。〔サイフ〕を1点回復することができる。",
      "(場所)まずい。お湯の温度が恐ろしいことになっている! 〔精神点〕を2点減少する。",
      "(一人)価格3の買い物を行うと、マッサージをしてもらえる。〔肉体点〕を1点、〔精神点〕を1D6点回復できる。"
    ]
  ),
  "JailHouseRET" => DiceTable::Table.new(
    "JAILHOUSE遭遇表",
    "2D6",
    [
      "「あちらのお客様からです」と渡されたグラス。その中には爆発寸前の《手榴弾》が入っていた。手榴弾はそのPCに命中したものとして扱う。",
      "「……パパぁ」小さな「じゃりンこ」があなたの裾をつかむ。そのセッションの間、「じゃりンこ」がついてきて、そのPCのロマンス判定を【邪魔】する。",
      "「あ、サイフがない!」〔サイフ〕を1点減らす。",
      "乗物が盗まれる! 装備の中に乗物があった場合、そのアイテムを失う。",
      "誰かと荷物を間違えてしまう! 自分の装備からランダムに1個のアイテムを失う。その後、自分の〔生活〕と等しい報酬表を振ってアイテムを1つ手に入れる。",
      "「な、なんだテメェ!」他の客たちの喧嘩に巻き込まれる。〔肉体点〕を2点減少(セーブ不可)。",
      "「突然だけど……別れましょう」あなたに恋人がいれば、そのキャラクターが現れ、2人は別れる。",
      "何かの間違いだろうか。きみのあおったグラスの中に、《エクスタシー》が混じっていた! か、体があつィっ!",
      "「ようチンピラ、まだ生きてたのかい?」契約刑事のマリアが絡んでくる。彼女を楽しませるために「飲み会」を行わないとチーム全員が「臭い飯」表を一回ずつ振らなければいけない。",
      "突然の銃声! 「侠客」1人がきみに向かって《トカレフ》を「仁義なく」ぶっ放す! 血戦を開始せよ。",
      "「エルヴィス」があらわれ、店で奇跡的なまでに楽しいパーティーが行われる。チーム全員が気付くと1日が経過していた。"
    ]
  ),
  "TreatmentIT" => DiceTable::Table.new(
    "治療イベント表",
    "2D6",
    [
      "不治の病だったことが分かる。1D6セッション後に死亡するが、今回以降のセッションで得られる経験値はすべて2倍になる。",
      "治療中の動物が脱走! サイコロを1個振り、1~4なら「番犬」が、5~6なら「ベンガル虎」が現れる。誰かが〔戦闘〕で難易度11の判定に成功すると、血戦を回避できる。",
      "「ここかなぁ~」治療の結果、変なツボをつかれたらしく、このセッションの間、〔破壊力〕が9に、〔反応力〕が1になる。",
      "「芸術的な内臓をしている」希望すれば、あなたの腎臓を《トランク》1つで買ってくれる。",
      "急患が大量に運ばれてくる。これ以降、このセッション終了時まで、乃木クリニックの治療の価格が、すべて1上昇する。",
      "乃木センセイの本気が炸裂! 美形タイプの男性キャラクターが1人いるたびに、治療の成功度が自動的に+2される。",
      "「だって、字ぃ読めないしぃ」リョータが点滴を間違える。サイコロを1個振り、下記のドラッグを摂取してしまう。1:《トルエン》 2:《ヘロイン》 3:《ハルシオン》 4《エクスタシー》 5:《コカイン》 6:《シャブ》",
      "「ウッソ、マッジ!?」待合室で読みたかった雑誌のバックナンバーを発見。〔精神点〕が全快し、トラウマを受けていればそれも1点回復する。",
      "医療ミス! サイコロを1個振り、1~4ならメスが、5~6ならランダムに趣味おたから1個が手術のミスで身体の中に残ってしまう。メスが身体に残っているキャラクターは、ファンブルを起こすたびに1ダメージを受けてしまう。重症の治療の判定に成功すると、中のアイテムを取り出すことができる。",
      "治療のついでに身体の異常が発見される。男性なら性病で鼻がもげ〔恋愛〕が1点減少、女性なら子供ができていることがわかる。",
      "奇跡的な治療のワザ! 治療判定の結果に関わらず〔肉体点〕が全快する。"
    ]
  ),
  "CollegeIT" => DiceTable::Table.new(
    "大学イベント表",
    "2D6",
    [
      "運動家に勧誘される。〔精神点〕を2点減少する。",
      "痴情のもつれ! 自分のトリコの数を数える。1D6を振り、その数以下の目を出してしまった場合、刺されてしまう。〔肉体点〕に3ダメージ(セーブ不可)。",
      "バイトの張り紙が…… セッション中に、何でもいいのでおたからを手に入れていれば、セッション終了時にそれを《トランク》で買い取ってくれる。",
      "コンパに誘われる。次の日の夜にコンパに行くことができる。コンパに行ったキャラクターは〔恋愛〕で難易度9の判定に成功すると、「女子高生」と恋人になる。",
      "授業にもぐりこむ。すやすやと心地よい時間が過ぎ、〔精神点〕を6点回復する。",
      "サークルボックスでダベる。同じターンに、他の仲間がリンク判定を行っていれば、好きな情報イベント表を振ることができる。",
      "キャンパスでいちゃいちゃカップルに遭遇する。らぶらぶオーラにあてられる。",
      "代返を頼まれる。〔精神〕で難易度9の判定に成功しないと、次の日の朝は行動を行えない。その代わり、学食で一回おごってもらえる。",
      "教授の実験に付き合わされる。〔肉体〕で難易度9の判定に失敗すると、《LSD》を飲まされる。",
      "麻雀に誘われる。次の日の夜に麻雀に行くことができる。麻雀に行ったキャラクターは、〔犯罪〕で難易度9の判定を行い、その成功度分だけ〔サイフ〕を回復することができる。ただし、〔性業値〕の判定を行い「律」以外だと徹マンになり、その日は無理してしまう。",
      "恋愛フラグが起動。チームの異性のキャラクターをランダムに1人選び、その人のトリコになる。また、選ばれた異性のキャラクターもランダムに異性キャラクターを1人選び、その人のトリコになる。"
    ]
  ),
  "FatalVT" => DiceTable::Table.new(
    "乗物致命傷表",
    "2D6",
    [
      "乗物は破壊。乗物に乗車していたキャラクターは、性業値判定を行う。「激」か「迷」だった者は、大破に巻き込まれ、2D6点のダメージを受ける(セーブ不可)。",
      "「ひどい運転しやがって!」死んだかと思った乗物が幽霊自動車になって、襲いかかってくる。",
      "「今まで一緒に乗ってくれてありがとう」乗物が、最後にきみに語りかけてくる。炎上する乗物を眺めながら、思わず涙が流れる。乗物は破壊。乗物の持ち主は、〔精神点〕を2点回復。",
      "ハンドルがきかず、人をひいてしまう。乗物は破壊。〔犯罪〕で難易度9の判定に失敗すると「臭い飯表」を1回振ること。",
      "コロコロコロコロ……車輪が転がる。ダメだ。もう一歩も動かない。乗物が破壊される。",
      "壮絶なクラッシュ!! 乗物とその乗物に乗せていたアイテムがすべて破壊される。",
      "乗物に衝撃が走る! 〔精神〕で難易度9の判定を行う。失敗すると、その乗物に乗せていたアイテムがすべて破壊される。乗物は破壊される。",
      "バッテリーがあがってしまった。乗物が一時的に使用不能に。1ターン後、乗物の〔肉体点〕が1になる。",
      "「おい! 走ってくれ! 走ってくれよ!」乗物が一時的に使用不能に。1D6ラウンド後、〔肉体点〕が1になる。",
      "エンスト! 乗物が一時的に使用不能に。1D6ターン後、〔肉体点〕が1D6点回復する。",
      "「まだ走れるよ!」奇跡のような走り! さきほどのダメージを無効に。"
    ]
  ),
  "TimeUT" => DiceTable::Table.new(
    "時間切れ表",
    "2D6",
    [
      "は! 夢か。今までのことは夢だった。すべて世はこともなし。",
      "UFOが現れ、トラクタービームに牽引される。全員〔精神〕で難易度9の判定を行う。失敗したキャラクターは、1D6セッション別のキャラクターでセッションを行うまで、再利用できなくなる。",
      "まわりでバタバタと人が倒れ始める。新型インフルエンザウイルスが、知性を持ち始め、突如人類に反旗を翻す。全員、〔肉体〕で難易度9の判定を行う。失敗したキャラクターは、〔肉体〕が1点減少する。",
      "急に、家のガスコンロを消したかどうか気になり始める。全員、〔生活〕で難易度9の判定を行う。失敗したキャラクターは、本当に火を消し忘れていた。家が火事になり、〔アジト装備〕がすべて破壊される。",
      "突如、みんなが歌い踊り出す。全員、〔教養〕で難易度9の判定を行う。失敗したキャラクターは、リズムを外して、トラウマを1点受ける。",
      "内戦勃発! 派手な市街戦が開始される。全員、〔戦闘〕で難易度9の判定を行う。失敗したキャラクターは、2D6点のダメージを受ける。内戦は3日後に終結する。",
      "いやーん、まいっちんぐ。200人の裸の美女が目の前を走りさっていく。一体何が起きたんだろう? 全員、〔恋愛〕で難易度9の判定を行う。失敗したキャラクターは、いつの間にか、その集団に呑み込まれ……トラウマを1点受ける。",
      "ビルの上から、大量のお札が降ってくる。皆、我を忘れて、それに群がり始める。全員、〔犯罪〕で難易度9の判定を行う。失敗したキャラクターは、〔通常装備〕欄からランダムにアイテム1つを失う。",
      "聖者が街にやってくる。「悔い改めよ!」全員、〔精神〕で難易度9の判定を行う。失敗したキャラクターは、好きなカルマ1種類の異能と代償が1つずつ未修得の状態になる。",
      "地獄の釜が開く。街に死者たちがあふれ出す。全員〔肉体〕で難易度9の判定を行う。失敗したキャラクターは、屍人になる。",
      "たらら、たらら、たらららら、たらららら♪ 大阪湾に怪獣王が現れる。大阪市は大混乱に! 全員、爆発4の効果を適用される。"
    ]
  ),
}.transform_keys(&:upcase).freeze
ALIASES =
{
  "RFT" => "RomanceFumbleT",
  "GAT" => "GeneralAccidentT",
  "RomanceFT" => "RomanceFumbleT",
  "GeneralAT" => "GeneralAccidentT",
  "RFumbleT" => "RomanceFumbleT",
  "GAccidentT" => "GeneralAccidentT",
}.transform_keys(&:upcase).transform_values(&:upcase).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) ⇒ Satasupe

Returns a new instance of Satasupe.



56
57
58
59
60
61
# File 'lib/bcdice/game_system/Satasupe.rb', line 56

def initialize(command)
  super(command)

  @sort_add_dice = true
  @d66_sort_type = D66SortType::ASC
end

Instance Method Details

#check_roll_loop(roll_times, min_suc, target, critical, fumble, is_critical_stop) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/bcdice/game_system/Satasupe.rb', line 168

def check_roll_loop(roll_times, min_suc, target, critical, fumble, is_critical_stop)
  dice_str = ''
  is_fumble = false
  is_critical = false
  total_suc = 0

  roll_times.times do |_i|
    debug('roll_times', roll_times)

    debug('min_suc, total_suc', min_suc, total_suc)
    # ゲームシステムの識別子
    # ゲームシステム名
    # ゲームシステム名の読みがな
    # ダイスボットの使い方
    # params => "[x,y,cS]"
    if min_suc != 0 && (total_suc >= min_suc)
      debug('(total_suc >= min_suc) break')
      break
    end

    d1 = @randomizer.roll_once(6)
    d2 = @randomizer.roll_once(6)

    dice_suc = 0
    dice_suc = 1 if target <= (d1 + d2)
    dice_str += "+" unless dice_str.empty?
    dice_str += "#{dice_suc}[#{d1},#{d2}]"
    total_suc += dice_suc

    if critical <= d1 + d2
      is_critical = true
      dice_str += "『必殺!』"
    end

    if (d1 == d2) && (d1 <= fumble) # ファンブルの確認
      is_fumble = true
      is_critical = false
      break
    end

    if is_critical && is_critical_stop # 必殺止めの確認
      break
    end
  end

  return dice_str, total_suc, is_critical, is_fumble
end

#check_seigou(string) ⇒ Object



216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/bcdice/game_system/Satasupe.rb', line 216

def check_seigou(string)
  debug("check_seigou begin string", string)

  sr_parser = Command::Parser.new("SR", round_type: round_type)
                             .has_suffix_number
                             .restrict_cmp_op_to(nil)
  cmd = sr_parser.parse(string)
  return '' unless cmd

  dice = @randomizer.roll_sum(2, 6)
  diceTotal = dice + cmd.modify_number
  target = cmd.suffix_number

  seigou = if target < diceTotal
             "「激」"
           elsif target > diceTotal
             "「律」"
           else # target == diceTotal
             "「迷」"
           end

  result = "〔性業値〕#{target}、「修正値」#{cmd.modify_number} > ダイス結果:(#{dice}) > #{dice}+(#{cmd.modify_number})=#{diceTotal}#{seigou}"

  result += " > 1ゾロのため〔性業値〕が1点上昇!" if dice == 2
  result += " > 6ゾロのため〔性業値〕が1点減少!" if dice == 12

  debug('check_seigou result result', result)
  return result
end

#checkRoll(string) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/bcdice/game_system/Satasupe.rb', line 80

def checkRoll(string)
  debug("checkRoll begin string", string)

  m = /^(\d+)R>=(\d+)(\[(\d+)?(,|,\d+)?(,\d+(S)?)?\])?$/i.match(string)
  return nil unless m

  roll_times = m[1].to_i
  target = m[2].to_i
  params = m[3]

  min_suc, fumble, critical, is_critical_stop = get_roll_params(params)

  result = ""

  if target > 12
    result += "#{string}】 > 難易度が12を超えたため、超過分、ファンブル率が上昇!\n"
    while target > 12
      target -= 1
      fumble += 1
    end
  end

  if (critical < 1) || (critical > 12)
    critical = 13
  end

  if fumble >= 6
    result += "#{get_judge_info(target, fumble, critical)} > ファンブル率が6を超えたため自動失敗!"
    return Result.failure(result)
  end

  if target < 5
    result += "#{string}】 > あらゆる難易度は5未満にはならないため、難易度は5になる!\n"
    target = 5
  end

  dice_str, total_suc, is_critical, is_fumble = check_roll_loop(roll_times, min_suc, target, critical, fumble, is_critical_stop)

  result += "#{get_judge_info(target, fumble, critical)}#{dice_str} > 成功度#{total_suc}"

  if is_fumble
    result += " > ファンブル"
  end

  if is_critical && (total_suc > 0)
    result += " > 必殺発動可能!"
  end

  debug('checkRoll result result', result)

  return Result.new.tap do |r|
    r.text = result
    r.success = !is_fumble && min_suc > 0 && total_suc >= min_suc
    r.failure = is_fumble
    r.critical = is_critical
    r.fumble = is_fumble
  end
end

#eval_game_system_specific_command(command) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/bcdice/game_system/Satasupe.rb', line 63

def eval_game_system_specific_command(command)
  debug("eval_game_system_specific_command begin string", command)

  result = checkRoll(command)
  return result unless result.nil?

  debug("判定ロールではなかった")

  result = check_seigou(command)
  return result unless result.empty?

  debug("〔性業値〕チェックでもなかった")

  debug("各種表として処理")
  return rollTableCommand(command)
end

#get_judge_info(target, fumble, critical) ⇒ Object



164
165
166
# File 'lib/bcdice/game_system/Satasupe.rb', line 164

def get_judge_info(target, fumble, critical)
  return "【難易度#{target}、ファンブル率#{fumble}、必殺#{critical == 13 ? 'なし' : critical.to_s}"
end

#get_roll_params(params) ⇒ Object



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/bcdice/game_system/Satasupe.rb', line 139

def get_roll_params(params)
  min_suc = 0
  fumble = 1
  critical = 13
  isCriticalStop = false

  # params => "[x,y,cS]"
  # ゲームシステムの識別子
  # ゲームシステム名
  # ゲームシステム名の読みがな
  # ダイスボットの使い方
  # params => "[x,y,cS]"
  unless params.nil?
    m = /\[(\d*)(,(\d*)?)?(,(\d*)(S)?)?\]/.match(params)
    if m
      min_suc = m[1].to_i
      fumble = m[3].to_i if m[3].to_i != 0
      critical = m[5].to_i if m[4]
      isCriticalStop = !m[6].nil?
    end
  end

  return min_suc, fumble, critical, isCriticalStop
end

#getAnotherTableResult(command, counts, operator, value) ⇒ Object



354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
# File 'lib/bcdice/game_system/Satasupe.rb', line 354

def getAnotherTableResult(command, counts, operator, value)
  result = []

  table_name = ALIASES[command] || command
  table = TABLES[table_name]
  return result if table.nil?

  counts.times do |_i|
    _, index = getTableIndex(operator, value, 2, 6)

    info = table.choice(index)
    text = "#{info.table_name}:#{info.value}:#{info.body}"
    result.push(text)
  end

  return result
end

#getCreateSatasupeResult(counts) ⇒ Object



291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
# File 'lib/bcdice/game_system/Satasupe.rb', line 291

def getCreateSatasupeResult(counts)
  debug("getCreateSatasupeResult counts", counts)

  name = "サタスペ作成"

  arm = case @randomizer.roll_once(6)
        when 1
          CREATE_ARMS_STRUCT.new("「紙製の筒」", [], ["「命中:10、ダメージ:3、耐久度1」"], 10, 3, 1, 0, 0, [])
        when 2
          CREATE_ARMS_STRUCT.new("「木製の筒」", [], ["「命中:9、ダメージ:3、耐久度2」"], 9, 3, 2, 0, 0, [])
        when 3
          CREATE_ARMS_STRUCT.new("「小型のプラスチック製の筒」", [], ["「命中:9、ダメージ:4、耐久度2」"], 9, 4, 2, 0, 0, [])
        when 4
          CREATE_ARMS_STRUCT.new("「大型のプラスチック製の筒」", [], ["「命中:8、ダメージ:3、耐久度2、両手」"], 8, 3, 2, 0, 0, ["「両手」"])
        when 5
          CREATE_ARMS_STRUCT.new("「小型の金属製の筒」", [], ["「命中:9、ダメージ:4、耐久度3」"], 9, 4, 3, 0, 0, [])
        when 6
          CREATE_ARMS_STRUCT.new("「大型の金属製の筒」", [], ["「命中:8、ダメージ:5、耐久度3、両手」"], 8, 5, 3, 0, 0, ["「両手」"])
        end

  counts.times do |_i|
    part, effect, modifier = CREATE_ARMS_ACCESSORY_TABLE[@randomizer.roll_d66(D66SortType::ASC)]
    arm.accessory_parts << part
    arm.parts_effect << effect
    modifier.call(arm, @randomizer)
  end

  result = []
  result.push("#{name}:ベース部品:#{arm.base_parts}  アクセサリ部品:#{arm.accessory_parts.join}")
  result.push("部品効果:#{arm.parts_effect.join}")

  text = "完成品:サタスペ  (ダメージ+#{arm.damage}・命中#{arm.hit}・射撃、"
  text += "「(判定前宣言)#{arm.kutibeni}回だけ、必殺10」" if arm.kutibeni > 0
  text += "「(判定前宣言)#{arm.kiba}回だけ、ダメージ+2」" if arm.kiba > 0

  text += arm.abilities.sort.uniq.join

  text += "「サタスペ#{counts}」「耐久度#{arm.life}」)"

  result.push(text)

  return result
end

#getNpcTableResult(counts) ⇒ Object



335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
# File 'lib/bcdice/game_system/Satasupe.rb', line 335

def getNpcTableResult(counts)
  name = "NPC表:"

  result = []

  counts.times do |_i|
    age, agen_const, agen_times = NPC_AGE_TABLE[@randomizer.roll_index(6)]
    ysold = @randomizer.roll_sum(agen_times, 6) + agen_const

    lmodValue = NPC_LMOOD_TABLE[@randomizer.roll_index(6)]
    lageValue = NPC_LAGE_TABLE[@randomizer.roll_index(3)]

    text = "#{name}#{age}(#{ysold}歳):#{lmodValue}#{lageValue}"
    result.push(text)
  end

  return result
end

#getTableIndex(operator, value, diceCount, diceType) ⇒ Object



372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
# File 'lib/bcdice/game_system/Satasupe.rb', line 372

def getTableIndex(operator, value, diceCount, diceType)
  index = nil
  modify = 0

  case operator
  when "+"
    modify = value
  when "-"
    modify = value * -1
  when "="
    index = value
  end

  if index.nil?
    index = @randomizer.roll_sum(diceCount, diceType)
    index += modify
  end

  index = [index, diceCount * 1].max
  index = [index, diceCount * diceType].min

  return modify, index
end

#getTagTableResult(counts) ⇒ Object



280
281
282
283
284
285
286
287
288
289
# File 'lib/bcdice/game_system/Satasupe.rb', line 280

def getTagTableResult(counts)
  result = []

  counts.times do |_i|
    roll_result = TAG_TABLE.roll(@randomizer)
    result.push("#{roll_result.table_name}:#{roll_result.value}:#{roll_result.body}")
  end

  return result
end

#rollTableCommand(command) ⇒ Object

各種表



249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
# File 'lib/bcdice/game_system/Satasupe.rb', line 249

def rollTableCommand(command)
  command = command.upcase
  result = []

  m = /([A-Za-z]+)(\d+)?(([+]|-|=)(\d+))?/.match(command)
  return result unless m

  command = m[1]
  counts = 1
  counts = m[2].to_i if m[2]
  operator = m[4]
  value = m[5].to_i

  debug("eval_game_system_specific_command command", command)

  case command
  when "TAGT"
    result = getTagTableResult(counts)

  when "GETSST"
    result = getCreateSatasupeResult(counts)

  when "NPCT"
    result = getNpcTableResult(counts)
  else
    result = getAnotherTableResult(command, counts, operator, value)
  end

  return result.join("\n")
end