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
@@ -9,7 +9,7 @@ module BCDice
9
9
  ID = 'BloodMoon'
10
10
 
11
11
  # ゲームシステム名
12
- NAME = 'ブラッド・ムーン'
12
+ NAME = 'ブラッドムーン'
13
13
 
14
14
  # ゲームシステム名の読みがな
15
15
  SORT_KEY = 'ふらつとむうん'
@@ -43,18 +43,19 @@ module BCDice
43
43
  end
44
44
 
45
45
  # ゲーム別成功度判定(2D6)
46
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
47
- return '' if target == '?'
48
- return '' unless cmp_op == :>=
46
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
47
+ return nil unless cmp_op == :>=
49
48
 
50
49
  if dice_total <= 2
51
- return "ファンブル(【余裕】が 0 に)"
50
+ Result.fumble("ファンブル(【余裕】が 0 に)")
52
51
  elsif dice_total >= 12
53
- return "スペシャル(【余裕】+3)"
52
+ Result.critical("スペシャル(【余裕】+3)")
53
+ elsif target == '?'
54
+ Result.nothing
54
55
  elsif total >= target
55
- return "成功"
56
+ Result.success("成功")
56
57
  else
57
- return "失敗"
58
+ Result.failure("失敗")
58
59
  end
59
60
  end
60
61
 
@@ -37,18 +37,19 @@ module BCDice
37
37
  end
38
38
 
39
39
  # ゲーム別成功度判定(2D6)
40
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
41
- return '' if target == '?'
42
- return '' unless cmp_op == :>=
40
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
41
+ return nil unless cmp_op == :>=
43
42
 
44
43
  if dice_total <= 2
45
- return "ファンブル"
44
+ Result.fumble("ファンブル")
46
45
  elsif dice_total >= 12
47
- return "スペシャル > " + RTT.roll_command(@randomizer, "RM")
46
+ Result.critical("スペシャル > " + RTT.roll_command(@randomizer, "RM"))
47
+ elsif target == "?"
48
+ Result.nothing
48
49
  elsif total >= target
49
- return "成功"
50
+ Result.success("成功")
50
51
  else
51
- return "失敗"
52
+ Result.failure("失敗")
52
53
  end
53
54
  end
54
55
 
@@ -39,33 +39,39 @@ module BCDice
39
39
  - FT7
40
40
  INFO_MESSAGE_TEXT
41
41
 
42
- register_prefix('\d*CF', 'FT\d*')
42
+ register_prefix('\d*CF', 'FT')
43
43
 
44
44
  # ゲーム別成功度判定(2D6)。以前の処理をそのまま残しています。
45
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
46
- return '' if target == '?'
45
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
46
+ return nil unless cmp_op == :>=
47
47
 
48
- output = ''
48
+ sequence = []
49
+ result = Result.new
49
50
 
50
51
  if dice_total <= 2
51
52
  total -= 20
52
- output = "ファンブル(-20)"
53
+ sequence.push("ファンブル(-20)")
54
+ result.fumble = true
53
55
  end
54
56
 
55
- unless cmp_op == :>=
56
- return output
57
- end
57
+ if target != '?'
58
+ if total >= target
59
+ sequence.push("成功")
60
+ result.success = true
61
+ else
62
+ sequence.push("失敗")
63
+ result.failure = true
64
+ end
58
65
 
59
- if total >= target
60
- output += " 成功"
61
- if total > target
62
- output += " > 差分値#{total - target}"
66
+ if total - target != 0
67
+ sequence.push("差分値#{total - target}")
63
68
  end
64
- else
65
- output += " > 失敗 > 差分値#{total - target}"
66
69
  end
67
70
 
68
- return output
71
+ return Result.nothing if sequence.empty?
72
+
73
+ result.text = sequence.join(" > ")
74
+ return result
69
75
  end
70
76
 
71
77
  def eval_game_system_specific_command(command)
@@ -22,24 +22,24 @@ module BCDice
22
22
   例)SR7   sr13   SR(7+4)   Ssr10
23
23
  INFO_MESSAGE_TEXT
24
24
 
25
- register_prefix('SR\d+')
25
+ register_prefix('SR')
26
26
 
27
- def check_1D100(total, _dice_total, cmp_op, target)
28
- return '' if target == '?'
29
- return '' if cmp_op != :<=
27
+ def result_1d100(total, _dice_total, cmp_op, target)
28
+ return nil if target == '?'
29
+ return nil if cmp_op != :<=
30
30
 
31
31
  if total >= 100
32
- "ファンブル"
32
+ Result.fumble("ファンブル")
33
33
  elsif total > target
34
- "失敗"
34
+ Result.failure("失敗")
35
35
  elsif total >= (target * 0.9)
36
- "L成功"
36
+ Result.success("L成功")
37
37
  elsif total >= (target / 2)
38
- "M成功"
38
+ Result.success("M成功")
39
39
  elsif total >= (target / 10)
40
- "H成功"
40
+ Result.success("H成功")
41
41
  else
42
- "C成功"
42
+ Result.critical("C成功")
43
43
  end
44
44
  end
45
45
 
@@ -19,9 +19,9 @@ module BCDice
19
19
     Chill3 : (1D100<=50) > 55 > Botch
20
20
  INFO_MESSAGE_TEXT
21
21
 
22
- def check_1D100(total, dice_total, cmp_op, target)
23
- return '' if target == '?'
24
- return '' unless cmp_op == :<=
22
+ def result_1d100(total, dice_total, cmp_op, target)
23
+ return nil if target == '?'
24
+ return nil unless cmp_op == :<=
25
25
 
26
26
  # ゾロ目ならC-ResultかBotch
27
27
  tens = (dice_total / 10) % 10
@@ -30,21 +30,21 @@ module BCDice
30
30
  if tens == ones
31
31
  if (total > target) || (dice_total == 100) # 00は必ず失敗
32
32
  if target > 100 # 目標値が100を超えている場合は、00を振ってもBotchにならない
33
- return "失敗"
33
+ return Result.failure("失敗")
34
34
  else
35
- return "Botch"
35
+ return Result.fumble("Botch")
36
36
  end
37
37
  else
38
- return "C成功"
38
+ return Result.critical("C成功")
39
39
  end
40
40
  elsif (total <= target) || (dice_total == 1) # 01は必ず成功
41
41
  if total <= (target / 2)
42
- return "H成功"
42
+ return Result.success("H成功")
43
43
  else
44
- return "L成功"
44
+ return Result.success("L成功")
45
45
  end
46
46
  else
47
- return "失敗"
47
+ return Result.failure("失敗")
48
48
  end
49
49
  end
50
50
  end
@@ -19,7 +19,7 @@ module BCDice
19
19
  例・CW8
20
20
  INFO_MESSAGE_TEXT
21
21
 
22
- register_prefix('CW\d+')
22
+ register_prefix('CW')
23
23
 
24
24
  def eval_game_system_specific_command(command)
25
25
  result = nil
@@ -48,7 +48,7 @@ module BCDice
48
48
 
49
49
  INFO_MESSAGE_TEXT
50
50
 
51
- register_prefix('CC(B)?\(\d+\)', 'CC(B)?', 'RES(B)?', 'CBR(B)?\(\d+,\d+\)')
51
+ register_prefix('CCB?', 'RESB?', 'CBRB?')
52
52
 
53
53
  def initialize(command)
54
54
  super(command)
@@ -17,13 +17,19 @@ module BCDice
17
17
 
18
18
  # ダイスボットの使い方
19
19
  HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
20
- ※コマンドは入力内容の前方一致で検出しています。
21
20
  ・判定 CC(x)<=(目標値)
22
-  x:ボーナス・ペナルティダイス (2~-2)。省略可。
21
+  x:ボーナス・ペナルティダイス。省略可。
23
22
   目標値が無くても1D100は表示される。
24
23
   ファンブル/失敗/ レギュラー成功/ハード成功/
25
24
   イクストリーム成功/クリティカル を自動判定。
26
- 例)CC<=30 CC(2)<=50 CC(+2)<=50 CC(-1)<=75 CC-1<=50 CC1<=65 CC+1<=65 CC
25
+  例)CC<=30 CC(2)<=50 CC(+2)<=50 CC(-1)<=75 CC-1<=50 CC1<=65 CC+1<=65 CC
26
+
27
+ ・技能ロールの難易度指定 CC(x)<=(目標値)(難易度)
28
+  目標値の後に難易度を指定することで
29
+  成功/失敗/クリティカル/ファンブル を自動判定する。
30
+  難易度の指定:
31
+   r:レギュラー h:ハード e:イクストリーム c:クリティカル
32
+  例)CC<=70r CC1<=60h CC-2<=50e CC2<=99c
27
33
 
28
34
  ・組み合わせ判定 (CBR(x,y))
29
35
   目標値 x と y で%ロールを行い、成否を判定。
@@ -48,7 +54,7 @@ module BCDice
48
54
    強力でない呪文の場合 FCL/強力な呪文の場合 FCM
49
55
  INFO_MESSAGE_TEXT
50
56
 
51
- register_prefix('CC', 'CBR\(\d+,\d+\)', 'FAR', 'BMR', 'BMS', 'FCL', 'FCM', 'PH', 'MA')
57
+ register_prefix('CC', 'CBR', 'FAR', 'BMR', 'BMS', 'FCL', 'FCM', 'PH', 'MA')
52
58
 
53
59
  def eval_game_system_specific_command(command)
54
60
  case command
@@ -77,6 +83,7 @@ module BCDice
77
83
  LEVEL = [
78
84
  :fumble,
79
85
  :failure,
86
+ :success,
80
87
  :regular_success,
81
88
  :hard_success,
82
89
  :extreme_success,
@@ -88,10 +95,25 @@ module BCDice
88
95
  extreme_success: "イクストリーム成功",
89
96
  hard_success: "ハード成功",
90
97
  regular_success: "レギュラー成功",
98
+ success: "成功",
91
99
  fumble: "ファンブル",
92
100
  failure: "失敗",
93
101
  }.freeze
94
102
 
103
+ def self.with_difficulty_level(total, difficulty)
104
+ fumble = difficulty < 50 ? 96 : 100
105
+
106
+ if total == 1
107
+ ResultLevel.new(:critical)
108
+ elsif total <= difficulty
109
+ ResultLevel.new(:success)
110
+ elsif total >= fumble
111
+ ResultLevel.new(:fumble)
112
+ else
113
+ ResultLevel.new(:failure)
114
+ end
115
+ end
116
+
95
117
  def self.from_values(total, difficulty, fumbleable = false)
96
118
  fumble = difficulty < 50 || fumbleable ? 96 : 100
97
119
 
@@ -117,7 +139,7 @@ module BCDice
117
139
  end
118
140
 
119
141
  def success?
120
- @level_index >= LEVEL.index(:regular_success)
142
+ @level_index >= LEVEL.index(:success)
121
143
  end
122
144
 
123
145
  def failure?
@@ -160,15 +182,26 @@ module BCDice
160
182
  end
161
183
 
162
184
  def skill_roll(command)
163
- m = /^CC([-+]?\d+)?(?:<=(\d+))?$/.match(command)
185
+ m = /^CC([-+]?\d+)?(?:<=(\d+)([RHEC])?)?$/.match(command)
164
186
  unless m
165
187
  return nil
166
188
  end
167
189
 
168
190
  bonus_dice = m[1].to_i
169
- difficulty = m[2].to_i
191
+ difficulty = m[2]&.to_i
192
+ difficulty_level = m[3]
193
+
194
+ if difficulty == 0
195
+ difficulty = nil
196
+ elsif difficulty_level == "H"
197
+ difficulty /= 2
198
+ elsif difficulty_level == "E"
199
+ difficulty /= 5
200
+ elsif difficulty_level == "C"
201
+ difficulty = 0
202
+ end
170
203
 
171
- if bonus_dice == 0 && difficulty == 0
204
+ if bonus_dice == 0 && difficulty.nil?
172
205
  dice = @randomizer.roll_once(100)
173
206
  return "1D100 > #{dice}"
174
207
  end
@@ -179,8 +212,13 @@ module BCDice
179
212
 
180
213
  total, total_list = roll_with_bonus(bonus_dice)
181
214
 
182
- expr = difficulty.zero? ? "1D100" : "1D100<=#{difficulty}"
183
- result = ResultLevel.from_values(total, difficulty) unless difficulty.zero?
215
+ expr = difficulty.nil? ? "1D100" : "1D100<=#{difficulty}"
216
+ result =
217
+ if difficulty_level
218
+ ResultLevel.with_difficulty_level(total, difficulty)
219
+ elsif difficulty
220
+ ResultLevel.from_values(total, difficulty)
221
+ end
184
222
 
185
223
  sequence = [
186
224
  "(#{expr}) ボーナス・ペナルティダイス[#{bonus_dice}]",
@@ -35,7 +35,7 @@ module BCDice
35
35
  ・實時型 Short/總結型 Longer
36
36
  INFO_MESSAGE_TEXT
37
37
 
38
- register_prefix('CC\(\d+\)', 'CC', 'CBR\(\d+,\d+\)', 'FAR\(\d+\)', 'FAR')
38
+ register_prefix('CC', 'CBR', 'FAR')
39
39
 
40
40
  def initialize(command)
41
41
  super(command)
@@ -32,7 +32,7 @@ module BCDice
32
32
  예)FAR(25,70,98) FAR(50,80,98,-1)
33
33
  INFO_MESSAGE_TEXT
34
34
 
35
- register_prefix('CC\(\d+\)', 'CC', 'CBR\(\d+,\d+\)', 'FAR\(\d+\)', 'FAR')
35
+ register_prefix('CC', 'CBR', 'FAR')
36
36
 
37
37
  def initialize(command)
38
38
  super(command)
@@ -43,17 +43,6 @@ module BCDice
43
43
  return string
44
44
  end
45
45
 
46
- # ゲーム別成功度判定(nD6)
47
- def check_nD6(total, _dice_total, _dice_list, cmp_op, target)
48
- if cmp_op != :>= || target == "?"
49
- ''
50
- elsif total >= target
51
- " > 成功"
52
- else
53
- " > 失敗"
54
- end
55
- end
56
-
57
46
  def check_roll(string)
58
47
  string = replace_text(string)
59
48
  return nil unless (m = /(^|\s)S?(3[rR]6([+\-\d]+)?(\[(\d+),(\d+)\])(([>=]+)(\d+))?)(\s|$)/i.match(string))
@@ -51,18 +51,19 @@ module BCDice
51
51
  end
52
52
 
53
53
  # ゲーム別成功度判定(2D6)
54
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
55
- return '' if target == '?'
56
- return '' unless cmp_op == :>=
54
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
55
+ return nil unless cmp_op == :>=
57
56
 
58
57
  if dice_total <= 2
59
- "ファンブル(判定失敗。失敗表(FT)を追加で1回振る)"
58
+ Result.fumble("ファンブル(判定失敗。失敗表(FT)を追加で1回振る)")
60
59
  elsif dice_total >= 12
61
- "スペシャル(判定成功。大成功表(GJT)を1回使用可能)"
60
+ Result.critical("スペシャル(判定成功。大成功表(GJT)を1回使用可能)")
61
+ elsif target == "?"
62
+ Result.nothing
62
63
  elsif total >= target
63
- "成功"
64
+ Result.success("成功")
64
65
  else
65
- "失敗"
66
+ Result.failure("失敗")
66
67
  end
67
68
  end
68
69
 
@@ -33,8 +33,8 @@ module BCDice
33
33
  INFO_MESSAGE_TEXT
34
34
 
35
35
  register_prefix(
36
- 'DLH\\d+([\\+\\-]\\d+)*',
37
- 'DC(L|S|C)\d+',
36
+ 'DLH',
37
+ 'DC[LSC]',
38
38
  'RNC[JO]',
39
39
  'HNC'
40
40
  )
@@ -28,7 +28,7 @@ module BCDice
28
28
  ・D66ダイスあり
29
29
  INFO_MESSAGE_TEXT
30
30
 
31
- register_prefix('[NAMUC]?URGE\d+')
31
+ register_prefix('[NAMUC]?URGE')
32
32
 
33
33
  def initialize(command)
34
34
  super(command)
@@ -38,21 +38,13 @@ module BCDice
38
38
  end
39
39
 
40
40
  # ゲーム別成功度判定(nD6)
41
- def check_nD6(total, _dice_total, dice_list, cmp_op, target)
41
+ def result_nd6(_total, _dice_total, dice_list, _cmp_op, target)
42
42
  if dice_list.count(1) >= 2 # 1の目が2個以上ならファンブル
43
- return "致命的失敗"
43
+ Result.fumble("致命的失敗")
44
44
  elsif dice_list.count(6) >= 2 # 6の目が2個以上あったらクリティカル
45
- return "効果的成功"
45
+ Result.critical("効果的成功")
46
46
  elsif target == "?"
47
- return ''
48
- end
49
-
50
- if [:>=, :>].include?(cmp_op)
51
- if total.send(cmp_op, target)
52
- " > 成功"
53
- else
54
- " > 失敗"
55
- end
47
+ Result.nothing
56
48
  end
57
49
  end
58
50