class BCDice::GameSystem::MagicaLogia

Constants

HELP_MESSAGE

ダイスボットの使い方

ID

ゲームシステムの識別子

NAME

ゲームシステム名

SKILL_TABLE
SORT_KEY

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

TABLES

Public Class Methods

new(command) click to toggle source
Calls superclass method BCDice::Base::new
# File lib/bcdice/game_system/MagicaLogia.rb, line 54
def initialize(command)
  super(command)

  @sort_add_dice = true
  @sort_barabara_dice = true
  @d66_sort_type = D66SortType::ASC
end

Private Class Methods

translate_skill_table(locale) click to toggle source
# File lib/bcdice/game_system/MagicaLogia.rb, line 177
def translate_skill_table(locale)
  DiceTable::SaiFicSkillTable.from_i18n(
    "MagicaLogia.skill_table",
    locale,
    rttn: ["RTS", "RTB", "RTF", "RTP", "RTD", "RTN"]
  )
end
translate_tables(locale, skill_table) click to toggle source
# File lib/bcdice/game_system/MagicaLogia.rb, line 185
def translate_tables(locale, skill_table)
  inveterate_enemy_table = SkillExpandTable.from_i18n("MagicaLogia.inveterate_enemy_table", locale, skill_table)
  conspiracy_table = DiceTable::Table.from_i18n("MagicaLogia.conspiracy_table", locale)
  fate_table = DiceTable::Table.from_i18n("MagicaLogia.fate_table", locale)
  cueball_table = DiceTable::Table.from_i18n("MagicaLogia.cueball_table", locale)
  force_field_table = DiceTable::Table.from_i18n("MagicaLogia.force_field_table", locale)
  alliance_table = SkillExpandTable.from_i18n("MagicaLogia.alliance_table", locale, skill_table)

  {
    "TPT" => SkillExpandTable.from_i18n("MagicaLogia.tables.TPT", locale, skill_table),
    "ST" => SkillExpandTable.from_i18n("MagicaLogia.tables.ST", locale, skill_table),
    "FT" => DiceTable::Table.from_i18n("MagicaLogia.tables.FT", locale),
    "WT" => SkillExpandTable.from_i18n("MagicaLogia.tables.WT", locale, skill_table),
    "FCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.FCT", locale),
    "AT" => SkillExpandTable.from_i18n("MagicaLogia.tables.AT", locale, skill_table),
    "BGT" => DiceTable::Table.from_i18n("MagicaLogia.tables.BGT", locale),
    "DAT" => DiceTable::Table.from_i18n("MagicaLogia.tables.DAT", locale),
    "FAT" => DiceTable::Table.from_i18n("MagicaLogia.tables.FAT", locale),
    "WIT" => DiceTable::Table.from_i18n("MagicaLogia.tables.WIT", locale),
    "TCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.TCT", locale),
    "PCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.PCT", locale),
    "MCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.MCT", locale),
    "ICT" => DiceTable::Table.from_i18n("MagicaLogia.tables.ICT", locale),
    "SCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.SCT", locale),
    "XCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.XCT", locale),
    "WCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.WCT", locale),
    "CCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.CCT", locale),
    "MIT" => inveterate_enemy_table,
    "MOT" => conspiracy_table,
    "MAT" => fate_table,
    "MUT" => cueball_table,
    "MFT" => force_field_table,
    "MLT" => alliance_table,
    "BST" => DiceTable::ChainTable.new(
      I18n.translate("MagicaLogia.tables.BST.name", raise: true, locale: locale),
      "1D6",
      [
        inveterate_enemy_table,
        conspiracy_table,
        fate_table,
        cueball_table,
        force_field_table,
        alliance_table,
      ]
    ),
    "PT" => DiceTable::Table.from_i18n("MagicaLogia.tables.PT", locale),
    "XEST" => SkillExpandTable.from_i18n("MagicaLogia.tables.XEST", locale, skill_table),
    "IWST" => SkillExpandTable.from_i18n("MagicaLogia.tables.IWST", locale, skill_table),
    "MCST" => SkillExpandTable.from_i18n("MagicaLogia.tables.MCST", locale, skill_table),
    "WDST" => SkillExpandTable.from_i18n("MagicaLogia.tables.WDST", locale, skill_table),
    "LWST" => SkillExpandTable.from_i18n("MagicaLogia.tables.LWST", locale, skill_table),
    "STB" => SkillExpandTable.from_i18n("MagicaLogia.tables.STB", locale, skill_table),
    "MGCT" => DiceTable::Table.from_i18n("MagicaLogia.tables.MGCT", locale),
    "MBST" => SkillExpandTable.from_i18n("MagicaLogia.tables.MBST", locale, skill_table),
    "MAST" => SkillExpandTable.from_i18n("MagicaLogia.tables.MAST", locale, skill_table),
    "TCST" => SkillExpandTable.from_i18n("MagicaLogia.tables.TCST", locale, skill_table),
    "PWST" => SkillExpandTable.from_i18n("MagicaLogia.tables.PWST", locale, skill_table),
    "PAST" => SkillExpandTable.from_i18n("MagicaLogia.tables.PAST", locale, skill_table),
    "GBST" => SkillExpandTable.from_i18n("MagicaLogia.tables.GBST", locale, skill_table),
    "SLST" => SkillExpandTable.from_i18n("MagicaLogia.tables.SLST", locale, skill_table),
    "WLAT" => DiceTable::Table.from_i18n("MagicaLogia.tables.WLAT", locale),
    "WMT" => SkillExpandTable.from_i18n("MagicaLogia.tables.WMT", locale, skill_table),
    "FFT" => DiceTable::Table.from_i18n("MagicaLogia.tables.FFT", locale),
    "OLST" => SkillExpandTable.from_i18n("MagicaLogia.tables.OLST", locale, skill_table),
    "TPTB" => SkillExpandTable.from_i18n("MagicaLogia.tables.TPTB", locale, skill_table),
    "FLT" => FallenAfterTable.from_i18n("MagicaLogia.tables.FLT", locale),
  }
end

Public Instance Methods

eval_game_system_specific_command(command) click to toggle source
# File lib/bcdice/game_system/MagicaLogia.rb, line 82
def eval_game_system_specific_command(command)
  self.class::SKILL_TABLE.roll_command(@randomizer, command) ||
    roll_tables(command, self.class::TABLES)
end
result_2d6(total, dice_total, dice_list, cmp_op, target) click to toggle source

ゲーム別成功度判定(2D6)

# File lib/bcdice/game_system/MagicaLogia.rb, line 63
def result_2d6(total, dice_total, dice_list, cmp_op, target)
  return nil if target == '?'
  return nil unless cmp_op == :>=

  result =
    if dice_total <= 2
      Result.fumble(translate("fumble"))
    elsif dice_total >= 12
      Result.critical(translate("MagicaLogia.special"))
    elsif total >= target
      Result.success(translate("success"))
    else
      Result.failure(translate("failure"))
    end

  result.text += gain_magic_element(dice_list[0], dice_list[1])
  return result
end

Private Instance Methods

gain_magic_element(dice1, dice2) click to toggle source

魔素獲得チェック

# File lib/bcdice/game_system/MagicaLogia.rb, line 90
def gain_magic_element(dice1, dice2)
  return "" unless dice1 == dice2

  element = translate("MagicaLogia.elements.items")[dice1 - 1]
  return " > " + format(translate("MagicaLogia.elements.format"), text: element)
end