Class: BCDice::GameSystem::BeastBindTrinity

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

Defined Under Namespace

Classes: BBCommand

Constant Summary collapse

ID =

ゲームシステムの識別子

'BeastBindTrinity'
NAME =

ゲームシステム名

'ビーストバインド トリニティ'
SORT_KEY =

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

'ひいすとはいんととりにてい'
HELP_MESSAGE =

ダイスボットの使い方

<<~INFO_MESSAGE_TEXT
  ・判定 (nBB+m%w@x#y$z&v)
   n個のD6を振り、出目の大きい2個から達成値を算出。修正mも可能。

   %w、@x、#y、$z、&vはすべて省略可能。
  >%w:現在の人間性が w であるとして、クリティカル値(C値)を計算。
  ・省略した場合、C値=12として達成値を算出する。
  >@x:クリティカル値修正。(加減式でも入力可能)
  ・xに直接数字を書くと、C値をその数字に上書きする。
   「絶対にクリティカルしない」状態は、@13など xを13以上に指定すること。
  ・xの先頭が「+」か「-」なら、計算したC値にその値を加算。例)@-1、@+2
   この方法でC値をプラスする場合、上限は12となる。
  >#y、#Ay:ファンブル値修正。(加減式でも入力可能)
  ・yに直接数字を書くと、ファンブル値をその数字に設定。
  ・yの数字の先頭が「+」か「-」なら、ファンブル値=2にその数字を加算。例)#+2
  ・※#Ayとすると、ファンブルしても達成値を通常通り算出。 例)#A+1
  >$z:ダイスの出目をzに固定して判定する。複数指定可。
     《運命歪曲》など「ダイスの1個を振り直す」効果等に使用する。
   例)2BB$1 →ダイスを2個振る判定で、ダイス1個の出目を1で固定
   例)2BB$16→ダイスを2個振る判定で、ダイスの出目を1と6で固定
  >&v:出目がv未満のダイスがあれば、出目がvだったものとして達成値を計算する。
   例)2BB&3 →出目3未満(→出目1、2)を出目3だったものとして計算。

  ・D66ダイスあり
  ・邂逅表:EMO
  ・暴露表:EXPO_A
  ・魔獣化暴露表:EXPO_B
  ・アイドル専用暴露表:EXPO_I
  ・アイドル専用魔獣化暴露表:EXPO_J
  ・正体判明チャートA~C:FACE_A, FACE_B, FACE_C
INFO_MESSAGE_TEXT
TABLES =
{
  'EMO' => DiceTable::D66GridTable.new(
    '邂逅表',
    [
      ['家族', '家族', '信頼', '信頼', '忘却', '忘却'],
      ['慈愛', '慈愛', '憧憬', '憧憬', '感銘', '感銘'],
      ['同志', '同志', '幼子', '幼子', '興味', '興味'],
      ['ビジネス', 'ビジネス', '師事', '師事', '好敵手', '好敵手'],
      ['友情', '友情', '忠誠', '忠誠', '恐怖', '恐怖'],
      ['執着', '執着', '軽蔑', '軽蔑', '憎悪', '憎悪'],
    ]
  ),
  'EXPO_A' => DiceTable::Table.new(
    '暴露表',
    '1D6',
    [
      '噂になるがすぐ忘れられる',
      '都市伝説として処理される',
      'ワイドショーをにぎわす',
      'シナリオ中[迫害状態]になる',
      '絆の対象ひとりに正体が知られる',
      '魔獣化暴露表へ'
    ]
  ),
  'EXPO_B' => DiceTable::Table.new(
    '魔獣化暴露表',
    '1D6',
    [
      'トンデモ業界の伝説になる',
      'シナリオ中[迫害状態]になる',
      'シナリオ中[迫害状態]になる',
      '絆の対象ひとりに正体が知られる',
      '絆の対象ひとりに正体が知られる',
      '自衛隊退魔部隊×2D6体の襲撃'
    ]
  ),
  'EXPO_I' => DiceTable::Table.new(
    'アイドル専用暴露表',
    '1D6',
    [
      '愉快な伝説として人気になる',
      'ワイドショーをにぎわす',
      '炎上。シナリオ中[迫害状態]',
      '所属事務所に2D6時間説教される',
      '絆の対象ひとりに正体が知られる',
      'アイドル専用魔獣化暴露表へ'
    ]
  ),
  'EXPO_J' => DiceTable::Table.new(
    'アイドル専用魔獣化暴露表',
    '1D6',
    [
      'シナリオ中[迫害状態]になる',
      'シナリオ中[迫害状態]になる',
      '絆の対象ひとりに正体が知られる',
      '事務所から契約を解除される',
      '絆の対象ひとりに正体が知られる',
      '1D6本のレギュラー番組を失う'
    ]
  ),
  'FACE_A' => DiceTable::Table.new(
    '正体判明チャートA',
    '1D6',
    [
      'あなたを受け入れてくれる',
      'あなたを受け入れてくれる',
      '絆が(拒絶)に書き換わる',
      '絆がエゴに書き換わる',
      '気絶しその事実を忘れる',
      '精神崩壊する'
    ]
  ),
  'FACE_B' => DiceTable::Table.new(
    '正体判明チャートB',
    '1D6',
    [
      'あなたを受け入れてくれる',
      '狂乱し攻撃してくる',
      '退場。その場から逃亡。暴露表へ',
      '絆がエゴに書き換わる',
      '精神崩壊する',
      '精神崩壊する'
    ]
  ),
  'FACE_C' => DiceTable::Table.new(
    '正体判明チャートC',
    '1D6',
    [
      'あなたを受け入れてくれる',
      '退場。その場から逃亡。暴露表へ',
      '退場。その場から逃亡。暴露表へ',
      '絆がエゴに書き換わる',
      '精神崩壊する',
      '精神崩壊する'
    ]
  ),
}.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) ⇒ BeastBindTrinity

Returns a new instance of BeastBindTrinity.



54
55
56
57
58
# File 'lib/bcdice/game_system/BeastBindTrinity.rb', line 54

def initialize(command)
  super(command)

  @d66_sort_type = D66SortType::ASC
end

Instance Method Details

#eval_game_system_specific_command(command) ⇒ Object



244
245
246
247
248
249
250
251
# File 'lib/bcdice/game_system/BeastBindTrinity.rb', line 244

def eval_game_system_specific_command(command)
  if (ret = roll_tables(command, TABLES))
    return ret
  end

  bb = BBCommand.new(command)
  return bb.roll(@randomizer)
end