Class: BCDice::GameSystem::UnsungDuet

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

Constant Summary collapse

ID =
"UnsungDuet"
NAME =
"アンサング・デュエット"
SORT_KEY =
"あんさんくてゆえつと"
HELP_MESSAGE =
<<~MESSAGETEXT
  ■ シフター用判定 (shifter, UDS)
    1D10をダイスロールして判定を行います。
    例) shifter, UDS, shifter>=5, shifter+1>=6

  ■ バインダー用判定 (binder, UDB)
    2D6をダイスロールして判定を行います。
    例) binder, UDB, binder>=5, binder+1>=6

  ■ 変異表
    ・外傷 (HIN, HInjury)
    ・体調の変化 (HPH, HPhysical)
    ・恐怖 (HFE, HFear)
    ・幻想化 (HFA, HFantasy)
    ・精神 (HMI, HMind)
    ・そのほか (HOT, HOther)
MESSAGETEXT
ALIAS_1D10 =
["shifter", "UDS"].freeze
ALIAS_2D6 =
["binder", "UDB"].freeze
SHIFTER_ALIAS_REG =
/^#{ALIAS_1D10.join('|')}/i.freeze
BINDER_ALIAS_REG =
/^#{ALIAS_2D6.join('|')}/i.freeze
ALIAS =
{
  "HInjury" => "HIN",
  "HPhysical" => "HPH",
  "HFear" => "HFE",
  "HFantasy" => "HFA",
  "HMind" => "HMI",
  "HOther" => "HOT",
}.transform_keys(&:upcase)
TABLES =
{
  "HIN" => DiceTable::Table.new(
    "変異表:外傷",
    "1D6",
    [
      "顔の傷 → 顔にできた傷。じわりと血がにじむ",
      "大きな怪我 → 早く手当てをしないと命に関わる",
      "痛みのない傷 → 大きな傷なのに、なぜか痛くない",
      "喪失 → 身体のどこかが消えてしまった",
      "文字のような傷跡 → 読めない文字のような傷",
      "模様を描くアザ → 模様のような、身体にできたアザ",
    ]
  ),
  "HPH" => DiceTable::Table.new(
    "変異表:体調の変化",
    "1D6",
    [
      "視界がぼやける → 目の焦点が合わない",
      "耳鳴り → ずっと甲高い音が鳴り続けている気がする",
      "異様な寒気 → 凍えそうなほどに寒く感じる",
      "発汗 → 暑いわけでもないのに、汗がだらだらと",
      "幻覚 → それが本物か幻か、区別がつかない",
      "走馬灯 → 過去のことを次々と思い出してしまう",
    ]
  ),
  "HFE" => DiceTable::Table.new(
    "変異表:恐怖",
    "1D6",
    [
      "不安 → 漠然とした不安が心を蝕む",
      "狭い場所が怖い → 狭い場所に入りたくない",
      "震えが止まらない → どうしても落ち着かない",
      "物音が怖い → ほんの小さな物音にも怯えてしまう",
      "暗い場所が怖い → 灯りのない場所がひどく恐ろしい",
      "誰かがついてくる → 誰かが後ろにいる気がする……",
    ]
  ),
  "HFA" => DiceTable::Table.new(
    "変異表:幻想化",
    "1D6",
    [
      "硝子化 → 身体の一部がガラスのように透明に",
      "羽毛化 → 身体のどこかから羽毛が生えてくる",
      "植物化 → ツタや葉が身体から生えてくる",
      "動物の瞳 → 瞳の形が動物のそれに変わってしまう",
      "有角化 → 額や側頭部から角が生えてくる",
      "陶器化 → 皮膚が陶器のようなものに変わっていく",
    ]
  ),
  "HMI" => DiceTable::Table.new(
    "変異表:精神",
    "1D6",
    [
      "記憶の混乱 → ここはどこ、どうしてこんなところに?",
      "幼少期の記憶 → 口調や態度が幼くなってしまう",
      "素直 → 思ったことを全部言ってしまう",
      "蛮勇 → パートナーを守るために無茶ばかりする",
      "疑心暗鬼 → 何もかもが悪い方向にしか考えられない",
      "食べちゃいたい → パートナーをかじりたくなる",
    ]
  ),
  "HOT" => DiceTable::Table.new(
    "変異表:そのほか",
    "1D6",
    [
      "影絵化 → 身体の一部が影のようになる",
      "水槽化 → 身体の一部が水槽のようなものになる",
      "涙が止まらない → なぜか涙が流れ続ける",
      "鉤爪 → 手や足が、獣のような鉤爪になる",
      "未来視 → 未来が見えてしまう。本当かどうかは不明",
      "帰りたくない → 現実に帰りたくないと微かに思う",
    ]
  ),
}.freeze

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

Instance Method Summary collapse

Methods inherited from Base

#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, #eval, eval, #grich_text, #initialize, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?

Methods included from Translate

#translate

Constructor Details

This class inherits a constructor from BCDice::Base

Instance Method Details

#eval_game_system_specific_command(command) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/bcdice/game_system/UnsungDuet.rb', line 38

def eval_game_system_specific_command(command)
  command = ALIAS[command] || command

  roll_replaced_command_if_match(command, SHIFTER_ALIAS_REG, "1D10") ||
    roll_replaced_command_if_match(command, BINDER_ALIAS_REG, "2D6") ||
    roll_tables(command, TABLES)
end

#roll_replaced_command_if_match(command, regexp, dist) ⇒ Object



46
47
48
49
50
# File 'lib/bcdice/game_system/UnsungDuet.rb', line 46

def roll_replaced_command_if_match(command, regexp, dist)
  if command.match?(regexp)
    CommonCommand::AddDice.eval(command.sub(regexp, dist), self, @randomizer)
  end
end