bcdice 3.1.3 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -2
  3. data/i18n/StellarKnights/ja_jp.yml +496 -0
  4. data/lib/bcdice/common_command/add_dice.rb +1 -1
  5. data/lib/bcdice/common_command/calc.rb +1 -1
  6. data/lib/bcdice/dice_table.rb +2 -0
  7. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  8. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  9. data/lib/bcdice/game_system.rb +3 -0
  10. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  11. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  12. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  13. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  14. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  15. data/lib/bcdice/game_system/AngelGear.rb +1 -1
  16. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  17. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  18. data/lib/bcdice/game_system/Avandner.rb +1 -1
  19. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  20. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  21. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  22. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  23. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  24. data/lib/bcdice/game_system/BlindMythos.rb +1 -1
  25. data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
  26. data/lib/bcdice/game_system/BloodMoon.rb +9 -8
  27. data/lib/bcdice/game_system/CardRanker.rb +8 -7
  28. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  29. data/lib/bcdice/game_system/Chill.rb +10 -10
  30. data/lib/bcdice/game_system/Chill3.rb +9 -9
  31. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  32. data/lib/bcdice/game_system/Cthulhu.rb +1 -1
  33. data/lib/bcdice/game_system/Cthulhu7th.rb +48 -10
  34. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  35. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  36. data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
  37. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  38. data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
  39. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  40. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  41. data/lib/bcdice/game_system/DoubleCross.rb +1 -1
  42. data/lib/bcdice/game_system/Dracurouge.rb +1 -1
  43. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  44. data/lib/bcdice/game_system/Elric.rb +18 -14
  45. data/lib/bcdice/game_system/Elysion.rb +1 -1
  46. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  47. data/lib/bcdice/game_system/Emoklore.rb +3 -3
  48. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  49. data/lib/bcdice/game_system/FilledWith.rb +4 -0
  50. data/lib/bcdice/game_system/GURPS.rb +17 -28
  51. data/lib/bcdice/game_system/Garako.rb +1 -1
  52. data/lib/bcdice/game_system/GardenOrder.rb +1 -1
  53. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  54. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  55. data/lib/bcdice/game_system/Gorilla.rb +2 -8
  56. data/lib/bcdice/game_system/GranCrest.rb +18 -11
  57. data/lib/bcdice/game_system/Gundog.rb +9 -8
  58. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  59. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  60. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  61. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  62. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  63. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  64. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  65. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  66. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  67. data/lib/bcdice/game_system/Insane.rb +13 -20
  68. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  69. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  70. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  71. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  72. data/lib/bcdice/game_system/KanColle.rb +4 -9
  73. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  74. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  75. data/lib/bcdice/game_system/KurayamiCrying.rb +55 -2
  76. data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
  77. data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
  78. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +3 -3
  79. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  80. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  81. data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
  82. data/lib/bcdice/game_system/Nechronica.rb +28 -21
  83. data/lib/bcdice/game_system/NinjaSlayer.rb +4 -4
  84. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  85. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  86. data/lib/bcdice/game_system/Paradiso.rb +1 -1
  87. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  88. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  89. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  90. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  91. data/lib/bcdice/game_system/Postman.rb +1 -1
  92. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  93. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  94. data/lib/bcdice/game_system/Revulture.rb +123 -0
  95. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  96. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  97. data/lib/bcdice/game_system/Satasupe.rb +1 -1
  98. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  99. data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
  100. data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
  101. data/lib/bcdice/game_system/Skynauts.rb +2 -2
  102. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  103. data/lib/bcdice/game_system/StellarKnights.rb +59 -696
  104. data/lib/bcdice/game_system/SterileLife.rb +1 -1
  105. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  106. data/lib/bcdice/game_system/Strave.rb +1 -1
  107. data/lib/bcdice/game_system/SwordWorld.rb +16 -7
  108. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -2
  109. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -2
  110. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  111. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  112. data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
  113. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  114. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  115. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  116. data/lib/bcdice/game_system/WARPS.rb +11 -9
  117. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  118. data/lib/bcdice/game_system/Warhammer.rb +15 -6
  119. data/lib/bcdice/game_system/Warhammer4.rb +15 -11
  120. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  121. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  122. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  123. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +4 -4
  124. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  125. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
  126. data/lib/bcdice/repl.rb +1 -1
  127. data/lib/bcdice/result.rb +26 -0
  128. data/lib/bcdice/version.rb +1 -1
  129. metadata +9 -4
@@ -7,7 +7,7 @@ require "bcdice/common_command/add_dice/randomizer"
7
7
  module BCDice
8
8
  module CommonCommand
9
9
  module AddDice
10
- PREFIX_PATTERN = /[+\-\dD(]+/.freeze
10
+ PREFIX_PATTERN = /[+\-(]*\d+/.freeze
11
11
 
12
12
  class << self
13
13
  def eval(command, game_system, randomizer)
@@ -5,7 +5,7 @@ require "bcdice/common_command/calc/parser"
5
5
  module BCDice
6
6
  module CommonCommand
7
7
  module Calc
8
- PREFIX_PATTERN = /C/.freeze
8
+ PREFIX_PATTERN = /C[+\-(]*\d+/.freeze
9
9
 
10
10
  class << self
11
11
  def eval(command, game_system, _randomizer)
@@ -3,6 +3,8 @@
3
3
  require "bcdice/dice_table/roll_result"
4
4
  require "bcdice/dice_table/chain_table"
5
5
  require "bcdice/dice_table/d66_grid_table"
6
+ require "bcdice/dice_table/d66_half_grid_table"
7
+ require "bcdice/dice_table/d66_one_third_table"
6
8
  require "bcdice/dice_table/d66_parity_table"
7
9
  require "bcdice/dice_table/d66_range_table"
8
10
  require "bcdice/dice_table/d66_table"
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/dice_table/d66_grid_table"
4
+
5
+ module BCDice
6
+ module DiceTable
7
+ # D66を振って6x6マスの表を参照する
8
+ class D66HalfGridTable < D66GridTable
9
+ # @param key [String]
10
+ # @param locale [Symbol]
11
+ # @return [D66HalfGridTable]
12
+ def self.from_i18n(key, locale)
13
+ table = I18n.t(key, locale: locale, raise: true)
14
+ new(table[:name], table[:items_1_2_3], table[:items_4_5_6])
15
+ end
16
+
17
+ # @param [String] name 表の名前
18
+ # @param [Array<String>] items_1_2_3
19
+ # @param [Array<String>] items_4_5_6
20
+ def initialize(name, items_1_2_3, items_4_5_6)
21
+ @name = name
22
+ @items = [
23
+ items_1_2_3,
24
+ items_1_2_3,
25
+ items_1_2_3,
26
+ items_4_5_6,
27
+ items_4_5_6,
28
+ items_4_5_6,
29
+ ].freeze
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/dice_table/d66_grid_table"
4
+
5
+ module BCDice
6
+ module DiceTable
7
+ # D66を振って6x6マスの表を参照する
8
+ class D66OneThirdTable < D66GridTable
9
+ # @param key [String]
10
+ # @param locale [Symbol]
11
+ # @return [D66OneThirdTable]
12
+ def self.from_i18n(key, locale)
13
+ table = I18n.t(key, locale: locale, raise: true)
14
+ new(table[:name], table[:items_1_2], table[:items_3_4], table[:items_5_6])
15
+ end
16
+
17
+ # @param [String] name 表の名前
18
+ # @param [Array<String>] items_1_2
19
+ # @param [Array<String>] items_3_4
20
+ # @param [Array<String>] items_5_6
21
+ def initialize(name, items_1_2, items_3_4, items_5_6)
22
+ @name = name
23
+ @items = [
24
+ items_1_2,
25
+ items_1_2,
26
+ items_3_4,
27
+ items_3_4,
28
+ items_5_6,
29
+ items_5_6,
30
+ ].freeze
31
+ end
32
+ end
33
+ end
34
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "bcdice/game_system/AFF2e"
4
4
  require "bcdice/game_system/AceKillerGene"
5
+ require "bcdice/game_system/Ainecadette"
5
6
  require "bcdice/game_system/Airgetlamh"
6
7
  require "bcdice/game_system/AlchemiaStruggle"
7
8
  require "bcdice/game_system/Alsetto"
@@ -147,6 +148,7 @@ require "bcdice/game_system/PulpCthulhu"
147
148
  require "bcdice/game_system/Raisondetre"
148
149
  require "bcdice/game_system/RecordOfLodossWar"
149
150
  require "bcdice/game_system/RecordOfSteam"
151
+ require "bcdice/game_system/Revulture"
150
152
  require "bcdice/game_system/RokumonSekai2"
151
153
  require "bcdice/game_system/RoleMaster"
152
154
  require "bcdice/game_system/RuinBreakers"
@@ -167,6 +169,7 @@ require "bcdice/game_system/ShinkuuGakuen"
167
169
  require "bcdice/game_system/ShinobiGami"
168
170
  require "bcdice/game_system/ShoujoTenrankai"
169
171
  require "bcdice/game_system/Skynauts"
172
+ require "bcdice/game_system/SkynautsBouken"
170
173
  require "bcdice/game_system/SteamPunkers"
171
174
  require "bcdice/game_system/StellarKnights"
172
175
  require "bcdice/game_system/SterileLife"
@@ -28,7 +28,7 @@ module BCDice
28
28
  INFO_MESSAGE_TEXT
29
29
 
30
30
  register_prefix(
31
- '(AK|AKG)(\-?\d+)(\/\d+)?(@\d+)?',
31
+ '(AK|AKG)',
32
32
  'DC(SL|BL|IM|BR|RF|EL).+'
33
33
  )
34
34
 
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class Ainecadette < Base
6
+ # ゲームシステムの識別子
7
+ ID = "Ainecadette"
8
+
9
+ # ゲームシステム名
10
+ NAME = "エネカデット"
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = "えねかてつと"
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~MESSAGETEXT
17
+ ■ 判定
18
+ - 先輩 (AI) 10面ダイスを2つ振って判定します。『有利』なら【3AI】、『不利』なら【1AI】を使います。
19
+ - 後輩 (CA) 6面ダイスを2つ振って判定します。『有利』なら【3CA】、『不利』なら【1CA】を使います。
20
+ MESSAGETEXT
21
+
22
+ register_prefix('(\d+)?AI', '(\d+)?CA')
23
+
24
+ def eval_game_system_specific_command(command)
25
+ roll_action(command)
26
+ end
27
+
28
+ private
29
+
30
+ # 成功の目標値
31
+ SUCCESS_THRESHOLD = 4
32
+
33
+ # スペシャルとなる出目
34
+ SPECIAL_DICE = 6
35
+
36
+ def roll_action(command)
37
+ m = /^(\d+)?(AI|CA)$/.match(command)
38
+ return nil unless m
39
+
40
+ is_senpai = m[2] == "AI"
41
+
42
+ times = m[1]&.to_i || 2
43
+ sides = is_senpai ? 10 : 6
44
+ return nil if times <= 0
45
+
46
+ dice_list = @randomizer.roll_barabara(times, sides)
47
+ max = dice_list.max
48
+
49
+ result =
50
+ if max <= 1
51
+ Result.fumble("ファンブル(もやもやカウンターを2個獲得)")
52
+ elsif dice_list.include?(6)
53
+ me = is_senpai ? "先輩" : "後輩"
54
+ target = is_senpai ? "後輩" : "先輩"
55
+ Result.critical("スペシャル(絆カウンターを1個獲得し、#{target}は#{me}への感情を1つ獲得)")
56
+ elsif max >= SUCCESS_THRESHOLD
57
+ Result.success("成功")
58
+ else
59
+ Result.failure("失敗")
60
+ end
61
+
62
+ result.text = "(#{command}) > [#{dice_list.join(',')}] > #{result.text}"
63
+
64
+ return result
65
+ end
66
+ end
67
+ end
68
+ end
@@ -42,7 +42,7 @@ module BCDice
42
42
  MESSAGETEXT
43
43
 
44
44
  register_prefix(
45
- '(\d+)?A(A|L)(\d+)?((x|\*)(\d+)(\+(\d+))?)?(C(\d+))?'
45
+ '\d*A[AL]'
46
46
  )
47
47
 
48
48
  def initialize(command)
@@ -37,7 +37,7 @@ module BCDice
37
37
  ・8ALC4x5 → 8d6で目標値4、攻撃力5、トライアンフ無しの命中判定。
38
38
  MESSAGETEXT
39
39
 
40
- register_prefix('\d+AL(C|G)?(\d+)?(x|\*)\d+', '\d+ALC?(\d+)?')
40
+ register_prefix('\d+AL[CG]?')
41
41
 
42
42
  def initialize(command)
43
43
  super(command)
@@ -35,8 +35,8 @@ module BCDice
35
35
  MESSAGETEXT
36
36
 
37
37
  register_prefix(
38
- 'EMA(\d+)?', 'PER(\d+)?', 'LOC(\d+)?', 'QUI(\d+)?', 'DEL(\d+)?',
39
- 'TRA(\d+)?', 'SCE(\d+)?', 'STA(\d+)?', 'EMO(\d+)?'
38
+ 'EMA', 'PER', 'LOC', 'QUI', 'DEL',
39
+ 'TRA', 'SCE', 'STA', 'EMO'
40
40
  )
41
41
 
42
42
  def eval_game_system_specific_command(command)
@@ -117,7 +117,7 @@ module BCDice
117
117
  )
118
118
  }.freeze
119
119
 
120
- register_prefix('(\d+)AG(\d+)?(([\+\-]\d+)*)', TABLES.keys)
120
+ register_prefix('\d+AG', TABLES.keys)
121
121
  end
122
122
  end
123
123
  end
@@ -86,7 +86,7 @@ module BCDice
86
86
  }.freeze
87
87
 
88
88
  # ダイスボットで使用するコマンドを配列で列挙する
89
- register_prefix('\d+AN<=\d([\+\-]\d+)*', TABLES.keys)
89
+ register_prefix('\d+AN<=', TABLES.keys)
90
90
  end
91
91
  end
92
92
  end
@@ -25,25 +25,23 @@ module BCDice
25
25
  @d66_sort_type = D66SortType::NO_SORT
26
26
  end
27
27
 
28
- def check_nD6(total, _dice_total, dice_list, cmp_op, target)
28
+ def result_nd6(total, _dice_total, dice_list, cmp_op, target)
29
29
  n_max = dice_list.count(6)
30
30
 
31
31
  if dice_list.count(1) == dice_list.size
32
32
  # 全部1の目ならファンブル
33
- "ファンブル"
33
+ Result.fumble("ファンブル")
34
34
  elsif n_max >= 2
35
35
  # 2個以上6の目があったらクリティカル
36
- "クリティカル(+#{n_max}D6)" if n_max >= 2
36
+ Result.critical("クリティカル(+#{n_max}D6)")
37
37
  elsif cmp_op != :>= || target == '?'
38
- ''
38
+ nil
39
39
  elsif total >= target
40
- "成功"
40
+ Result.success("成功")
41
41
  else
42
- "失敗"
42
+ Result.failure("失敗")
43
43
  end
44
44
  end
45
-
46
- alias check_2D6 check_nD6
47
45
  end
48
46
  end
49
47
  end
@@ -34,7 +34,7 @@ module BCDice
34
34
  ・8av4*7+10 → 8d10で目標値4、攻撃力7、クリティカルトリガー10の命中判定。
35
35
  MESSAGETEXT
36
36
 
37
- register_prefix('\d+AV\d+((x|\*)\d+(\+\d+)?)?(c\d+)?')
37
+ register_prefix('\d+AV')
38
38
 
39
39
  def initialize(command)
40
40
  super(command)
@@ -26,7 +26,7 @@ module BCDice
26
26
   セット数が1以上の時はセット数も表示し、攻撃判定の場合は命中部位も表示します。
27
27
  INFO_MESSAGE_TEXT
28
28
 
29
- register_prefix('\d+BK', '\d+BA', '\d+BKC\d+', '\d+BAC\d+', '\d+R6')
29
+ register_prefix('\d+BK', '\d+BA', '\d+BKC', '\d+BAC', '\d+R6')
30
30
 
31
31
  def initialize(command)
32
32
  super(command)
@@ -34,7 +34,7 @@ module BCDice
34
34
  ・CDx:メック戦士意識維持表。ダメージ値xで判定 例)CD3
35
35
  MESSAGETEXT
36
36
 
37
- register_prefix('\d*SRM\d+.+', '\d*LRM\d+.+', '\d*BT.+', 'PPC', 'CT', 'DW', 'CD\d+')
37
+ register_prefix('\d*SRM', '\d*LRM', '\d*BT', 'PPC', 'CT', 'DW', 'CD')
38
38
 
39
39
  # 致命的命中が発生しない上限値
40
40
  NO_CRITICAL_HIT_LIMIT = 7
@@ -55,13 +55,13 @@ module BCDice
55
55
  INFO_MESSAGE_TEXT
56
56
 
57
57
  register_prefix(
58
- '[1-7]*PD\d+(?:[\+\-]\d+)?',
58
+ '[1-7]*PD',
59
59
  'HW',
60
60
  'BWT',
61
61
  'LWT',
62
62
  'TWT',
63
63
  'CWT',
64
- 'LO\d{0,2}',
64
+ 'LO',
65
65
  'SU',
66
66
  'WI',
67
67
  'NA',
@@ -88,7 +88,7 @@ module BCDice
88
88
  'NUR',
89
89
  'GUR',
90
90
  'BUR',
91
- 'BT\d*',
91
+ 'BT',
92
92
  'SGT',
93
93
  'RS',
94
94
  'SH',
@@ -110,7 +110,7 @@ module BCDice
110
110
  'NCH',
111
111
  'GCH',
112
112
  'PCH',
113
- 'IT\d*',
113
+ 'IT',
114
114
  'ACT',
115
115
  'ACB',
116
116
  'ACE',
@@ -124,7 +124,7 @@ module BCDice
124
124
  'RU',
125
125
  '\d{2}C',
126
126
  'BU',
127
- '\d+S?A[1-6]*(?:[\+\-]\d+)?',
127
+ '\d+S?A',
128
128
  'SIP',
129
129
  'BVT',
130
130
  'LVT',
@@ -53,13 +53,13 @@ module BCDice
53
53
  INFO_MESSAGE_TEXT
54
54
 
55
55
  register_prefix(
56
- '[1-7]*PD\d+(?:[\+\-]\d+)?',
56
+ '[1-7]*PD',
57
57
  'HW',
58
58
  'BWT',
59
59
  'LWT',
60
60
  'TWT',
61
61
  'CWT',
62
- 'LO\d{0,2}',
62
+ 'LO',
63
63
  'SU',
64
64
  'WI',
65
65
  'NA',
@@ -85,7 +85,7 @@ module BCDice
85
85
  'NUR',
86
86
  'GUR',
87
87
  'BUR',
88
- 'BT\d*',
88
+ 'BT',
89
89
  'SGT',
90
90
  'RS',
91
91
  'SH',
@@ -105,7 +105,7 @@ module BCDice
105
105
  'SCH',
106
106
  'WCH',
107
107
  'NCH',
108
- 'IT\d*',
108
+ 'IT',
109
109
  'ACT',
110
110
  'ACB',
111
111
  'ACE',
@@ -119,7 +119,7 @@ module BCDice
119
119
  'RU',
120
120
  '\d{2}C',
121
121
  'BU',
122
- '\d+S?A[1-6]*(?:[\+\-]\d+)?',
122
+ '\d+S?A',
123
123
  'SIP',
124
124
  'BVT',
125
125
  'LVT',
@@ -33,7 +33,7 @@ module BCDice
33
33
  INFO_MESSAGE_TEXT
34
34
 
35
35
  register_prefix(
36
- '\d+A\d*[CF]?\d*[CF]?\d*',
36
+ '\d+A',
37
37
  'CT3[\+\-]?',
38
38
  'CTR[\+\-]?',
39
39
  'DJV\-?',
@@ -456,7 +456,7 @@ module BCDice
456
456
  ),
457
457
  }.freeze
458
458
 
459
- register_prefix('BM', 'ReRoll\d+', 'RP\d+', 'DT', TABLES.keys)
459
+ register_prefix('BM', 'ReRoll', 'RP', 'DT', TABLES.keys)
460
460
  end
461
461
  end
462
462
  end
@@ -44,18 +44,17 @@ module BCDice
44
44
  @round_type = RoundType::CEIL # 端数切り上げに設定
45
45
  end
46
46
 
47
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
48
- return '' if target == '?'
49
- return '' unless cmp_op == :>=
47
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
48
+ return nil if target == '?' || cmp_op != :>=
50
49
 
51
50
  if dice_total <= 2
52
- "ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る)"
51
+ Result.fumble("ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る)")
53
52
  elsif dice_total >= 12
54
- "スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6)"
53
+ Result.critical("スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6)")
55
54
  elsif total >= target
56
- "成功"
55
+ Result.success("成功")
57
56
  else
58
- "失敗"
57
+ Result.failure("失敗")
59
58
  end
60
59
  end
61
60