Class: BCDice::GameSystem::EndBreaker

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

Constant Summary collapse

ID =

ゲームシステムの識別子

'EndBreaker'
NAME =

ゲームシステム名

'エンドブレイカー!'
SORT_KEY =

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

'えんとふれいかあ'
HELP_MESSAGE =

ダイスボットの使い方

<<~MESSAGETEXT
  ・判定 (nEB)
    n個のD6を振る判定。ダブルトリガー発動で自動振り足し。
  ・各種表
    ・生死不明表 (LDUT)
MESSAGETEXT

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, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?

Methods included from Translate

#translate

Constructor Details

#initialize(command) ⇒ EndBreaker

Returns a new instance of EndBreaker.



25
26
27
28
29
# File 'lib/bcdice/game_system/EndBreaker.rb', line 25

def initialize(command)
  super(command)

  @d66_sort_type = D66SortType::NO_SORT
end

Instance Method Details

#checkRoll(diceCount) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/bcdice/game_system/EndBreaker.rb', line 54

def checkRoll(diceCount)
  debug("EndBreaker diceCount", diceCount)

  rollCount = diceCount # ダブルトリガー

  result = ""
  diceFullList = []

  while rollCount != 0
    diceList = @randomizer.roll_barabara(rollCount, 6).sort
    diceFullList.concat(diceList)

    # 1の出目ごとにダブルトリガーで2個ダイス追加
    rollCount = diceList.select { |i| i == 1 }.size * 2

    result += "[#{diceList.join}]"
    result += " ダブルトリガー! " if rollCount > 0
  end

  # ダイスの出目の個数を集計
  result += ""
  (2..6).each do |num|
    count = diceFullList.select { |i| i == num }.size
    result += " [#{num}:#{count}個]" unless count == 0
  end

  return result
end

#eval_game_system_specific_command(command) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/bcdice/game_system/EndBreaker.rb', line 31

def eval_game_system_specific_command(command)
  if command =~ /(\d+)EB/i
    diceCount = Regexp.last_match(1).to_i
    return checkRoll(diceCount)
  end

  tableName = ""
  text = ""
  number = 0

  case command
  when "LDUT"
    tableName = "生死不明表"
    text, number = getLifeAndDeathUnknownResult()
  else
    return nil
  end

  result = "#{tableName}(#{number}):#{text}"

  return result
end

#getLifeAndDeathUnknownResultObject



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/bcdice/game_system/EndBreaker.rb', line 83

def getLifeAndDeathUnknownResult()
  table = [
    ' 1日:生還!',
    ' 1日:生還!',
    ' 1日:生還!',
    ' 1日:生還!',
    ' 1日:生還!',
    ' 1日:生還!',

    ' 1日:生還!',
    ' 5日:敵に捕らわれ、ひどい暴行と拷問を受けた。',
    ' 2日:謎の人物に命を救われた。',
    '10日:奴隷として売り飛ばされた。',
    ' 8日:おぞましい儀式の生贄として連れ去られた。',
    ' 9日:幽閉・投獄された。',

    ' 1日:生還!',
    ' 7日:モンスター蠢く地下迷宮に滑落した。',
    '12日強力なマスカレイドにとらわれ、実験台にされた。',
    ' 8日:放浪中に遭遇した事件を、颯爽と解決していた。',
    ' 5日:飢餓状態に追い込まれた。',
    '15日:記憶を失い放浪した。',

    ' 1日:生還!',
    '10日:異性に命を救われて、手厚い看病を受けた。',
    ' 3日:負傷からくる熱病で、生死の境を彷徨った。',
    '11日:闘奴にされたが、戦いと友情の末に自由を獲得した。',
    ' 6日:負傷したまま川に落ち、遥か下流まで流された。',
    ' 9日:敵に連れ去られ、執拗な拷問を受け続けた。',

    ' 1日:生還!',
    ' 4日:繰り返す「死の悪夢」に苛まれた。',
    ' 3日:巨獣の巣に連れ去られた。',
    '10日:謎の集団に救われて、手厚い看病を受けた。',
    ' 3日:チッタニアンの集落に迷い込み、もてなしを受けた。',
    ' 7日:ピュアリィの群れにとらわれ、弄ばれた。',

    ' 1日:生還!',
    ' 6日:楽園のような場所を発見し、しばらく逗留した。',
    ' 9日:盗賊団に救われ、恩返しとして少し用心棒をした。',
    '10日:熱病の見せる官能的な幻影にとらわれ、彷徨った。',
    ' 5日:謎の賞金首に狙われ、傷めつけられていた。',
    ' - :「五分五分」の一般判定。失敗すると死亡。',
  ]
  return get_table_by_d66(table)
end