module BCDice::GameSystem::SRS::ClassMethods
成功判定のエイリアスコマンド定義用のクラスメソッドを提供するモジュール
Attributes
aliases_re_for_srs_roll_with_target_value[R]
目標値あり成功判定のエイリアスコマンドの正規表現を返す @return [Regexp, nil]
aliases_re_for_srs_roll_without_target_value[R]
目標値なし成功判定のエイリアスコマンドの正規表現を返す @return [Regexp, nil]
help_message[R]
ダイスボットの説明文を返す @return [String]
Public Instance Methods
clear_aliases_for_srs_roll()
click to toggle source
成功判定のエイリアスコマンドを未設定にする @return [self]
# File lib/bcdice/game_system/SRS.rb, line 97 def clear_aliases_for_srs_roll @aliases_re_for_srs_roll_with_target_value = nil @aliases_re_for_srs_roll_without_target_value = nil @help_message = SRS::DEFAULT_HELP_MESSAGE return self end
set_aliases_for_srs_roll(*aliases)
click to toggle source
成功判定のエイリアスコマンドを設定する @param [String] aliases エイリアスコマンド(可変長引数) @return [self]
エイリアスコマンドとして指定した文字列がコマンドの先頭にあれば、 実行時にそれが2D6に置換されるようになる。
# File lib/bcdice/game_system/SRS.rb, line 71 def set_aliases_for_srs_roll(*aliases) aliases_upcase = aliases.map(&:upcase) aliases_part = aliases_upcase .map { |a| Regexp.escape(a) } .join('|') @aliases_re_for_srs_roll_with_target_value = Regexp.new( '\A' \ "(?:#{aliases_part})" \ '((?:[-+][-+\d]+)?>=\d+(?:\[\d*(?:,\d+)?\])?)\z' ) @aliases_re_for_srs_roll_without_target_value = Regexp.new( '\A' \ "(?:#{aliases_part})" \ '([-+][-+\d]+)?(\[\d*(?:,\d+)?\])?\z' ) prepare_help_msg_for_aliases_for_srs_roll(aliases_upcase) @help_message = concatenate_help_messages return self end
Private Instance Methods
concatenate_help_messages()
click to toggle source
ダイスボットの説明文を結合する @return [String] 結合された説明文
# File lib/bcdice/game_system/SRS.rb, line 132 def concatenate_help_messages "#{SRS::HELP_MESSAGE_1}" \ "#{@help_msg_for_aliases_for_srs_roll_with_target_value}\n" \ "#{SRS::HELP_MESSAGE_2}" \ "#{@help_msg_for_aliases_for_srs_roll_without_target_value}\n" \ "#{SRS::HELP_MESSAGE_3}" end
prepare_help_msg_for_aliases_for_srs_roll(aliases)
click to toggle source
成功判定のエイリアスコマンドの説明文を用意する @param [Array<String>] aliases エイリアスコマンドの配列 @return [self] @todo 現在は2文字のエイリアスコマンドに幅を合わせてある。
エイリアスコマンドの文字数が変わる場合があれば、位置を調整するコードが 必要。
# File lib/bcdice/game_system/SRS.rb, line 113 def prepare_help_msg_for_aliases_for_srs_roll(aliases) @help_msg_for_aliases_for_srs_roll_with_target_value = aliases .map { |a| " 例) #{a}+2>=10 2d6+2>=10と同じ(#{a}が2D6のショートカットコマンド)\n" } .join() @help_msg_for_aliases_for_srs_roll_without_target_value = aliases .map do |a| " 例) #{a} 2d6[]と同じ(#{a}が2D6のショートカットコマンド)\n" \ " 例) #{a}+2[12,4] 2d6+2[12,4]と同じ(#{a}が2D6のショートカットコマンド)\n" end .join() return self end