Class: BCDice::GameSystem::SRS

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

Defined Under Namespace

Modules: ClassMethods Classes: SRSRollNode

Constant Summary collapse

ID =

ゲームシステムの識別子

'SRS'
NAME =

ゲームシステム名

'スタンダードRPGシステム'
SORT_KEY =

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

'すたんたあとRPGしすてむ'
HELP_MESSAGE_1 =
<<~HELP_MESSAGE
  ・判定
   ・通常判定:2D6+m>=t[c,f]
    修正値m、目標値t、クリティカル値c、ファンブル値fで判定ロールを行います。
    修正値、クリティカル値、ファンブル値は省略可能です([]ごと省略可)。
    クリティカル値、ファンブル値の既定値は、それぞれ12、2です。
    自動成功、自動失敗、成功、失敗を自動表示します。

    例) 2d6>=10     修正値0、目標値10で判定
    例) 2d6+2>=10    修正値+2、目標値10で判定
    例) 2d6+2>=10[11]  ↑をクリティカル値11で判定
    例) 2d6+2>=10[12,4] ↑をクリティカル値12、ファンブル値4で判定
HELP_MESSAGE
HELP_MESSAGE_2 =
<<~HELP_MESSAGE
   ・クリティカルおよびファンブルのみの判定:2D6+m[c,f]
    目標値を指定せず、修正値m、クリティカル値c、ファンブル値fで判定ロールを行います。
    修正値、クリティカル値、ファンブル値は省略可能です([]は省略不可)。
    自動成功、自動失敗を自動表示します。

    例) 2d6[]    修正値0、クリティカル値12、ファンブル値2で判定
    例) 2d6+2[11]  修正値+2、クリティカル値11、ファンブル値2で判定
    例) 2d6+2[12,4] 修正値+2、クリティカル値12、ファンブル値4で判定
HELP_MESSAGE
HELP_MESSAGE_3 =
<<~HELP_MESSAGE
  ・D66ダイスあり(入れ替えなし)
HELP_MESSAGE
DEFAULT_HELP_MESSAGE =

既定のダイスボット説明文

"#{HELP_MESSAGE_1}\n#{HELP_MESSAGE_2}\n#{HELP_MESSAGE_3}"
HELP_MESSAGE =
DEFAULT_HELP_MESSAGE
DEFAULT_CRITICAL_VALUE =

既定のクリティカル値

12
DEFAULT_FUMBLE_VALUE =

既定のファンブル値

2
SRS_ROLL_WITH_TARGET_VALUE_RE =

目標値あり成功判定の正規表現

/\A2D6([-+][-+\d]+)?>=(\d+)(?:\[(\d+)?(?:,(\d+))?\])?\z/.freeze
SRS_ROLL_WITHOUT_TARGET_VALUE_RE =

目標値なし成功判定の正規表現

/\A2D6([-+][-+\d]+)?\[(\d+)?(?:,(\d+))?\]\z/.freeze
SRS_ROLL_DEFAULT_THRESHOLDS =

既定の閾値指定表記

"[#{DEFAULT_CRITICAL_VALUE},#{DEFAULT_FUMBLE_VALUE}]"

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

Class Method Summary collapse

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) ⇒ SRS

ダイスボットを初期化する



173
174
175
176
177
178
179
180
181
182
# File 'lib/bcdice/game_system/SRS.rb', line 173

def initialize(command)
  super(command)

  # 式、出目ともに送信する

  # バラバラロール(Bコマンド)でソートする
  @sort_add_dice = true
  # D66ダイスあり(出目をソートしない)
  @d66_sort_type = D66SortType::NO_SORT
end

Class Method Details

.aliases_re_for_srs_roll_with_target_valuenil

目標値あり成功判定のエイリアスコマンドの正規表現を返す

Returns:

  • (nil)


158
159
160
# File 'lib/bcdice/game_system/SRS.rb', line 158

def aliases_re_for_srs_roll_with_target_value
  nil
end

.aliases_re_for_srs_roll_without_target_valuenil

目標値なし成功判定のエイリアスコマンドの正規表現を返す

Returns:

  • (nil)


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

def aliases_re_for_srs_roll_without_target_value
  nil
end

.help_messageString

ダイスボットの説明文を返す

Returns:

  • (String)

    既定のダイスボット説明文



152
153
154
# File 'lib/bcdice/game_system/SRS.rb', line 152

def help_message
  DEFAULT_HELP_MESSAGE
end

.inherited(subclass) ⇒ void

This method returns an undefined value.

クラスが継承されたときに行う処理



144
145
146
147
148
# File 'lib/bcdice/game_system/SRS.rb', line 144

def inherited(subclass)
  subclass
    .extend(ClassMethods)
    .clear_aliases_for_srs_roll
end

Instance Method Details

#eval_game_system_specific_command(command) ⇒ String?

固有のダイスロールコマンドを実行する

Parameters:

  • command (String)

    入力されたコマンド

Returns:

  • (String, nil)

    ダイスロールコマンドの実行結果



223
224
225
226
227
228
229
230
231
# File 'lib/bcdice/game_system/SRS.rb', line 223

def eval_game_system_specific_command(command)
  alias_replaced_with_2d6 = replace_alias_for_srs_roll_with_2d6(command)

  if (node = parse(alias_replaced_with_2d6))
    return execute_srs_roll(node)
  end

  return nil
end

#help_messageString

ダイスボットの説明文を返す

Returns:

  • (String)


186
187
188
# File 'lib/bcdice/game_system/SRS.rb', line 186

def help_message
  self.class.help_message
end