class BCDice::DiceTable::SaiFicSkillTable
Constants
- DEFAULT_RCT
- DEFAULT_RTT
- DEFAULT_RTTN
- DEFAULT_S
- RTTN
Attributes
Public Class Methods
@param key [String] @param locale [Symbol] @param rtt [String] RTTに相当するコマンド @param rct [String] RCTに相当するコマンド @param rttn [Array] RTT1~6に相当するコマンドの配列 @return [SaiFicSkillTable]
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 15 def self.from_i18n(key, locale, rtt: nil, rct: nil, rttn: nil) global = I18n.t("RTT", locale: locale, raise: false, default: {}) table = global.merge(I18n.t(key, locale: locale, raise: true)) items = table[:items] table = table.select { |k, _| [:rtt_format, :rttn_format, :rct_format, :s_format].include?(k) } new(items, **table, rtt: rtt, rct: rct, rttn: rttn) end
サイコロ・フィクション用ダイステーブルを初期化する。 既存の実装の互換性維持とルールブックの記載に準拠するために、コマンドと書式文字列を指定できる。 @param items [Array] 特技リスト @param rtt [String] RTTに相当するコマンド @param rct [String] RCTに相当するコマンド @param rttn [Array] RTT1~6に相当するコマンドの配列 @param rtt_format [String] RTTコマンドの出力用の書式文字列 @param rct_format [String] RCTコマンドの出力用の書式文字列 @param rttn_format [String] RTTNコマンドの出力用の書式文字列 @param s_format [String] Skill#to_s
出力用の書式文字列
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 38 def initialize(items, rtt: nil, rct: nil, rttn: nil, rtt_format: DEFAULT_RTT, rct_format: DEFAULT_RCT, rttn_format: DEFAULT_RTTN, s_format: DEFAULT_S) @categories = items.map.with_index(1) do |(name, skills), index| SaiFicSkillTable::Category.new(name, skills, index, s_format) end @rtt = rtt @rct = rct @rttn = rttn.to_a @rtt_format = rtt_format @rct_format = rct_format @rttn_format = rttn_format end
Public Instance Methods
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 79 def prefixes (["RTT[1-6]?", "RCT", @rtt, @rct] + @rttn).compact end
1D6を振り、ランダムで分野を決定する @return [SaiFicSkillTable::Category]
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 69 def roll_category(randomizer) @categories[randomizer.roll_once(6) - 1] end
コマンドを解釈し、結果を取得する return [String]
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 55 def roll_command(randomizer, command) c = command if ["RTT", @rtt].include?(c) format_skill(@rtt_format, roll_skill(randomizer)) elsif ["RCT", @rct].include?(c) cat = roll_category(randomizer) format(@rct_format, category_dice: cat.dice, category_name: cat.name) elsif (index = RTTN.index(c)) || (index = @rttn.index(c)) format_skill(@rttn_format, @categories[index].roll(randomizer)) end end
1D6と2D6を振り、ランダムで特技を決定する @return [SaiFicSkillTable::Skill]
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 75 def roll_skill(randomizer) roll_category(randomizer).roll(randomizer) end
Private Instance Methods
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 85 def format_skill(format_string, skill) format(format_string, category_dice: skill.category_dice, row_dice: skill.row_dice, category_name: skill.category_name, skill_name: skill.name, text: skill.to_s) end