class BCDice::DiceTable::SaiFicSkillTable

Constants

DEFAULT_RCT
DEFAULT_RTT
DEFAULT_RTTN
DEFAULT_S
RTTN

Attributes

categories[R]

Public Class Methods

from_i18n(key, locale, rtt: nil, rct: nil, rttn: nil) click to toggle source

@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
new(items, rtt: nil, rct: nil, rttn: nil, rtt_format: DEFAULT_RTT, rct_format: DEFAULT_RCT, rttn_format: DEFAULT_RTTN, s_format: DEFAULT_S) click to toggle source

サイコロ・フィクション用ダイステーブルを初期化する。 既存の実装の互換性維持とルールブックの記載に準拠するために、コマンドと書式文字列を指定できる。 @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

prefixes() click to toggle source
# File lib/bcdice/dice_table/sai_fic_skill_table.rb, line 79
def prefixes
  (["RTT[1-6]?", "RCT", @rtt, @rct] + @rttn).compact
end
roll_category(randomizer) click to toggle source

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
roll_command(randomizer, command) click to toggle source

コマンドを解釈し、結果を取得する 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
roll_skill(randomizer) click to toggle source

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

format_skill(format_string, skill) click to toggle source
# 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