Class: BCDice::GameSystem::NeverCloud

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

Constant Summary collapse

ID =

ゲームシステムの識別子

'NeverCloud'
NAME =

ゲームシステム名

'ネバークラウドTRPG'
SORT_KEY =

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

「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして設定してください

'ねはあくらうとTRPG'
HELP_MESSAGE =

ダイスボットの使い方

<<~MESSAGETEXT
  ・LIST のコマンドを入力して、ルールの解説・2D6表、一覧の表示

  ・判定(xNC±y>=z)
   xD6の判定を行います。ファンブル、クリティカルの場合、その旨を出力します。
   x:振るダイスの数。
   ±y:固定値・修正値。省略可能。
   z:目標値。省略可能。
   ダイスの出目ふたつが6ならクリティカル(自動成功)
   ダイスの出目すべてが1ならファンブル(自動失敗)
   例) 2NC+2>=5 1NC
MESSAGETEXT
TEXTS =
{
  'LIST' => <<~TEXT,
  'LIKE1' => <<~TEXT,
  'RESE1' => <<~TEXT,
  'RESE2' => <<~TEXT,
  'RESE3' => <<~TEXT,
  'RESE4' => <<~TEXT,
  'ARTS1' => <<~TEXT,
  'STAT1' => <<~TEXT,
  'STAT2' => <<~TEXT,
  'ACTI1' => <<~TEXT,
  'ACTI2' => <<~TEXT,
  'ACTI3' => <<~TEXT,
  'ACTI4' => <<~TEXT,
  'BATT1' => <<~TEXT,
  'BATT2' => <<~TEXT,
  'BATT3' => <<~TEXT,
  'BATT4' => <<~TEXT,
  'BATT5' => <<~TEXT,
  'BATT6' => <<~TEXT,
  'BATT7' => <<~TEXT,
  'BATT8' => <<~TEXT,
  'BATT9' => <<~TEXT,
  'PIET1' => <<~TEXT,
  'PIET2' => <<~TEXT,
  'PIET3' => <<~TEXT,
  'MINI1' => <<~TEXT,
  'MINI2' => <<~TEXT,
  'MINI3' => <<~TEXT,
  'MINI4' => <<~TEXT,
  'MINI5' => <<~TEXT,
  'MINI6' => <<~TEXT,
  'CHAR1L' => <<~TEXT,
  'CHAR2L' => <<~TEXT,
  'CHAR3L' => <<~TEXT,
  'NAYA1L' => <<~TEXT,
  'NAYA2L' => <<~TEXT,
  'NAYA3L' => <<~TEXT,
  'NAYA4L' => <<~TEXT,
  'NAYA5L' => <<~TEXT,
}.freeze
TABLES =
{
  'CHAR1' => DiceTable::Table.new(
    '所属表',
    '2D6',
    [
      '無職/専業主婦/専業主夫',
      'パート・アルバイト',
      '中学生',
      '高校生',
      '大学生',
      '短大/専門学校生',
      '会社員',
      '公務員',
      '個人事業主',
      'フリーランス',
      '経営者'
    ]
  ),
  'CHAR2' => DiceTable::Table.new(
    '趣味表',
    '2D6',
    [
      'プログラミング/ハッキング',
      'テレビゲーム/ボードゲーム',
      '楽器演奏/作曲/編曲/DTM',
      '工芸/アクセサリー/プラモデル制作',
      'イラスト/モデリング/デザイン',
      '電子工作/機械工作',
      '野球/サッカー/バスケ/テニス/バレエ/',
      'ファッション',
      '自転車/BMX/バイク/車',
      'ライトノベル/漫画/アニメ',
      'ペット/ピクシー育成/生物観察'
    ]
  ),
  'CHAR3' => DiceTable::Table.new(
    'リビド武装形状表',
    '2D6',
    [
      '模様。輝く五芒星や、巨大な数字など',
      '人型。想い人、アニメキャラ、衣服など',
      '魔法または超能力。炎や、謎のオーラなど',
      '獣。調教された犬、カラス、ヘビなど',
      '銃。拳銃、ライフル、火縄銃など',
      '近接武器。ナイフ、バールのようなものなど',
      '異形。巨大化した体や鉤爪、伸びる腕など',
      'ドローン。航空機タイプや四足歩行タイプなど',
      'モンスター。ゴーレム、悪魔、動く植物など',
      '乗り物(乗ることは出来ないので注意)。車、戦闘機など。',
      '他のどれでもない君のオリジナルのなにか'
    ]
  ),
  'NAYA1' => DiceTable::Table.new(
    '悩みの詳細表・愛/Love',
    '2D6',
    [
      'オレには彼女が居るはずなのに誰にも見えない',
      '好きになった人が同性。でも将来的には子供がほしい……',
      'あいつの彼女が可愛い',
      'タレントを愛してしまったが当たり前だけど告白のしようもない',
      '好きなのに、あの人に告白できない。自分なんかが告白していい人じゃない……!',
      '●●のことが好き。でもそれを伝えてしまったら、今の関係が崩れてしまいそうで怖い',
      '相手が異性として見てくれない',
      '僕の彼女は遠く離れた大学への進学を悩んでいる。応援するべきか、引き止めるべきか',
      '一緒に遊びたいだけなのに、ついそっけない態度やいたずらをしてしまう',
      'オレの彼女が可愛すぎてつらい',
      '好きになった人がピクシー(拡張現実の身体を持つ高性能AI)'
    ]
  ),
  'NAYA2' => DiceTable::Table.new(
    '悩みの詳細表・体/Figure',
    '2D6',
    [
      '過去の出来事が痛烈すぎて今が色褪せて見える',
      '我ながら醜い',
      '学校に行きたいけど行けない',
      '筋トレしてるけど筋肉がつかない。同じ部活のみんなはかっこいい体を手に入れているのに',
      '体重が気になる……ダイエットしなきゃ……でも、ごはんおいしい……',
      '身長があと数センチほしい。そしたらあいつを背を追い越せるのに!',
      '背が高いんだけど、もっと可愛い体に育ちたかった',
      '肌の白い人がうらやましい',
      '食べても食べてもお肉が付かない',
      '病気がちだ',
      '自分の美しさに酔いしれてしまう'
    ]
  ),
  'NAYA3' => DiceTable::Table.new(
    '悩みの詳細表・才/Talent',
    '2D6',
    [
      '将来何になりたいかと言われてもなんにも思いつかない',
      '俺様の能力はこんなものではないはずだ……! きっと明日起きたら秘められた真なる力にm',
      'ああ妬ましい妬ましい。そう思ってしまう自分が嫌だが、わかっていてもやめられない',
      '妹の方が優秀。私だってこんなに勉強を頑張ってるのに、あの子と私のなにが違うの?',
      'バカすぎて授業についていけない',
      'バズりてぇな~~~俺もよぉ~~~~',
      'アイツに勝てない!投手としても、バッターとしても!',
      'この3年間サッカーに全てを捧げてきたのに、レギュラーになれない',
      '頑張りたいと思うけど気が多くて集中できない',
      '頑張って勉強したところでそれが何になるんだろうと思うと虚しい',
      '全力を出せる場所が欲しい。自分の才能がにくい'
    ]
  ),
  'NAYA4' => DiceTable::Table.new(
    '悩みの詳細表・絆/Bonds',
    '2D6',
    [
      '別に変な話をしているつもりはないのだけど同級生と会話が成立しない',
      '兄貴分に依存してしまい、1人で行動するのが怖い。アニキから離れたくない!',
      '飼っている犬が最近不機嫌。すぐ噛み付いてくる。なにかしてしまったのだろうか?',
      '来年、引っ越すことが決まった。一緒の高校に行こうねって約束したのに',
      'いろんなことに首をつっこんでしまい、逆にうざがられてしまう',
      '一緒に遊んでいた親友が、最近よそよそしい気がする',
      'なかなか友達ができない。できたとおもっても気づいたら話さなくなっている',
      '会話しているとへとへとになってる自分に時々気づく',
      '1人でいるほうがおちつくんだけど駄目なのか',
      '正直、クラスの連中の興味がどれもくだらなく思える',
      'そもそも自分以外のヒトがなんで大事なのかさっぱり分からない'
    ]
  ),
  'NAYA5' => DiceTable::Table.new(
    '悩みの詳細表・住/Home',
    '2D6',
    [
      '親がもううるさくない',
      '親がいない。奨学金とバイトで学費を稼がなければ学校にも通えない',
      '学校を卒業したら家を出ることになっている。でも、親元を離れたくない',
      '親の再婚相手と上手くいかない。何故かきつく当たってしまう',
      '親と同じ仕事を目指しているけど認めてくれない、夢を否定される',
      'お母さんが不治の病に侵されている',
      '家族の1人が家事が致命的に下手で家の内情がヤバい',
      '間違った場所に産まれてきた気がしてならない',
      '兄弟との仲が致命的に悪い。嫌われている',
      'ことあるごとに親が「おまえはどうしようもないやつだ」と言ってくる',
      '門限が早い'
    ]
  ),
}.freeze
ALIAS_TEXTS =
{
  "ARTS" => "ARTS1",
}.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



48
49
50
51
52
53
54
55
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
# File 'lib/bcdice/game_system/NeverCloud.rb', line 48

def check_action(command)
  m = /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.match(command)
  dice_count = m[1].to_i
  modify_str = m[2]
  modify_number = ArithmeticEvaluator.eval(modify_str)
  cmp_str = m[3]
  target = m[4]&.to_i

  if modify_number == 0
    modify_str = ''
  end

  dice_list = @randomizer.roll_barabara(dice_count, 6)
  dice_value = dice_list.sum()
  dice_str = dice_list.join(",")

  total = dice_value + modify_number

  result =
    if dice_list.count(1) == dice_count
      total = 0
      "ファンブル"
    elsif dice_list.count(6) >= 2
      "クリティカル"
    elsif target
      total >= target ? "成功" : "失敗"
    end

  sequence = [
    "(#{dice_count}D6#{modify_str}#{cmp_str})",
    "#{dice_value}[#{dice_str}]#{modify_str}",
    total,
    result
  ].compact

  return sequence.join("")
end

#eval_game_system_specific_command(command) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/bcdice/game_system/NeverCloud.rb', line 34

def eval_game_system_specific_command(command)
  if /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.match?(command)
    return check_action(command)
  elsif TEXTS.key?(command)
    return TEXTS[command].chomp
  elsif TABLES.key?(command)
    return roll_tables(command, TABLES)
  elsif ALIAS_TEXTS.key?(command)
    return TEXTS[ALIAS_TEXTS[command]].chomp
  else
    return nil
  end
end