bcdice 3.0.0 → 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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -2
  3. data/README.md +32 -0
  4. data/i18n/MonotoneMuseum/ja_jp.yml +3 -3
  5. data/i18n/StellarKnights/ja_jp.yml +496 -0
  6. data/lib/bcdice/common_command/add_dice.rb +1 -1
  7. data/lib/bcdice/common_command/calc.rb +1 -1
  8. data/lib/bcdice/dice_table.rb +2 -0
  9. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  10. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  11. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +1 -1
  12. data/lib/bcdice/game_system.rb +4 -0
  13. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  14. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  15. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  16. data/lib/bcdice/game_system/AlchemiaStruggle.rb +1 -1
  17. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  18. data/lib/bcdice/game_system/Alshard.rb +1 -1
  19. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  20. data/lib/bcdice/game_system/AngelGear.rb +123 -0
  21. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  22. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  23. data/lib/bcdice/game_system/ArsMagica.rb +1 -1
  24. data/lib/bcdice/game_system/Avandner.rb +1 -1
  25. data/lib/bcdice/game_system/BBN.rb +1 -1
  26. data/lib/bcdice/game_system/BadLife.rb +1 -1
  27. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  28. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  29. data/lib/bcdice/game_system/BeastBindTrinity.rb +2 -2
  30. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  31. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  32. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  33. data/lib/bcdice/game_system/BlindMythos.rb +1 -1
  34. data/lib/bcdice/game_system/BloodCrusade.rb +48 -49
  35. data/lib/bcdice/game_system/BloodMoon.rb +50 -8
  36. data/lib/bcdice/game_system/CardRanker.rb +10 -9
  37. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  38. data/lib/bcdice/game_system/Chill.rb +10 -10
  39. data/lib/bcdice/game_system/Chill3.rb +9 -9
  40. data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
  41. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  42. data/lib/bcdice/game_system/Cthulhu.rb +8 -4
  43. data/lib/bcdice/game_system/Cthulhu7th.rb +86 -342
  44. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +2 -2
  45. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +2 -2
  46. data/lib/bcdice/game_system/CthulhuTech.rb +1 -1
  47. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +1 -1
  48. data/lib/bcdice/game_system/Cthulhu_Korean.rb +1 -1
  49. data/lib/bcdice/game_system/DarkBlaze.rb +1 -12
  50. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  51. data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
  52. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  53. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  54. data/lib/bcdice/game_system/DiceOfTheDead.rb +1 -1
  55. data/lib/bcdice/game_system/DoubleCross.rb +2 -2
  56. data/lib/bcdice/game_system/Dracurouge.rb +1 -1
  57. data/lib/bcdice/game_system/EarthDawn.rb +1 -1
  58. data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
  59. data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
  60. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  61. data/lib/bcdice/game_system/Elric.rb +18 -14
  62. data/lib/bcdice/game_system/Elysion.rb +3 -3
  63. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  64. data/lib/bcdice/game_system/Emoklore.rb +3 -3
  65. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
  66. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  67. data/lib/bcdice/game_system/FilledWith.rb +205 -1272
  68. data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
  69. data/lib/bcdice/game_system/GURPS.rb +17 -28
  70. data/lib/bcdice/game_system/Garako.rb +12 -4
  71. data/lib/bcdice/game_system/GardenOrder.rb +1 -1
  72. data/lib/bcdice/game_system/GehennaAn.rb +1 -1
  73. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  74. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  75. data/lib/bcdice/game_system/Gorilla.rb +3 -9
  76. data/lib/bcdice/game_system/GranCrest.rb +18 -11
  77. data/lib/bcdice/game_system/Gundog.rb +9 -8
  78. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  79. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  80. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  81. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  82. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  83. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  84. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  85. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  86. data/lib/bcdice/game_system/Illusio.rb +25 -34
  87. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  88. data/lib/bcdice/game_system/Insane.rb +13 -20
  89. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  90. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  91. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  92. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  93. data/lib/bcdice/game_system/KanColle.rb +4 -9
  94. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  95. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  96. data/lib/bcdice/game_system/KurayamiCrying.rb +55 -2
  97. data/lib/bcdice/game_system/LogHorizon.rb +3 -3
  98. data/lib/bcdice/game_system/LostRoyal.rb +1 -1
  99. data/lib/bcdice/game_system/MeikyuDays.rb +11 -9
  100. data/lib/bcdice/game_system/MeikyuKingdom.rb +28 -28
  101. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +5 -5
  102. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  103. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  104. data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
  105. data/lib/bcdice/game_system/MonotoneMuseum.rb +9 -7
  106. data/lib/bcdice/game_system/Nechronica.rb +28 -21
  107. data/lib/bcdice/game_system/NeverCloud.rb +540 -5
  108. data/lib/bcdice/game_system/NightWizard.rb +1 -1
  109. data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
  110. data/lib/bcdice/game_system/NinjaSlayer.rb +4 -13
  111. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  112. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  113. data/lib/bcdice/game_system/OracleEngine.rb +1 -1
  114. data/lib/bcdice/game_system/OrgaRain.rb +17 -25
  115. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  116. data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
  117. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  118. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  119. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  120. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  121. data/lib/bcdice/game_system/Postman.rb +2 -2
  122. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  123. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  124. data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
  125. data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
  126. data/lib/bcdice/game_system/Revulture.rb +123 -0
  127. data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
  128. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  129. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  130. data/lib/bcdice/game_system/SRS.rb +1 -1
  131. data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
  132. data/lib/bcdice/game_system/Satasupe.rb +79 -860
  133. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  134. data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
  135. data/lib/bcdice/game_system/SharedFantasia.rb +20 -24
  136. data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
  137. data/lib/bcdice/game_system/ShinobiGami.rb +17 -9
  138. data/lib/bcdice/game_system/Skynauts.rb +4 -4
  139. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  140. data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
  141. data/lib/bcdice/game_system/StellarKnights.rb +59 -696
  142. data/lib/bcdice/game_system/SterileLife.rb +2 -3
  143. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -2
  144. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  145. data/lib/bcdice/game_system/Strave.rb +1 -1
  146. data/lib/bcdice/game_system/SwordWorld.rb +58 -185
  147. data/lib/bcdice/game_system/SwordWorld2_0.rb +22 -150
  148. data/lib/bcdice/game_system/SwordWorld2_5.rb +127 -41
  149. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  150. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  151. data/lib/bcdice/game_system/Torg.rb +1 -1
  152. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  153. data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
  154. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  155. data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -1
  156. data/lib/bcdice/game_system/UnsungDuet.rb +1 -1
  157. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  158. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
  159. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  160. data/lib/bcdice/game_system/WARPS.rb +11 -9
  161. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  162. data/lib/bcdice/game_system/Warhammer.rb +16 -7
  163. data/lib/bcdice/game_system/Warhammer4.rb +16 -12
  164. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  165. data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
  166. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  167. data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
  168. data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
  169. data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +294 -0
  170. data/lib/bcdice/game_system/cthulhu7th/rollable.rb +41 -0
  171. data/lib/bcdice/game_system/filled_with/enemy_data_tables.rb +322 -0
  172. data/lib/bcdice/game_system/filled_with/event_tables.rb +392 -0
  173. data/lib/bcdice/game_system/filled_with/tresure_tables.rb +179 -0
  174. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  175. data/lib/bcdice/game_system/satasupe/tables.rb +723 -0
  176. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +47 -0
  177. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +99 -0
  178. data/lib/bcdice/game_system/sword_world/rating_parser.rb +457 -0
  179. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +122 -0
  180. data/lib/bcdice/repl.rb +1 -1
  181. data/lib/bcdice/result.rb +26 -0
  182. data/lib/bcdice/version.rb +1 -1
  183. metadata +20 -4
@@ -15,7 +15,7 @@ module BCDice
15
15
  SORT_KEY = 'ふるめたるはにつくRPG'
16
16
 
17
17
  # 固有のコマンドの接頭辞を設定する
18
- register_prefix('2D6.*', 'MG.*', 'FP.*')
18
+ register_prefix('2D6', 'MG', 'FP')
19
19
 
20
20
  # 成功判定のエイリアスコマンドを設定する
21
21
  set_aliases_for_srs_roll('MG', 'FP')
@@ -32,7 +32,7 @@ module BCDice
32
32
  ・D66ダイスあり
33
33
  INFO_MESSAGE_TEXT
34
34
 
35
- register_prefix('FEAR(\+?\d+)?', 'REACT((\+|\-)?\d*)', '[\d\+\-]+\-3D6?[\d\+\-]*')
35
+ register_prefix('FEAR', 'REACT', '[\d\+\-]+\-3D6?[\d\+\-]*')
36
36
 
37
37
  def initialize(command)
38
38
  super(command)
@@ -41,26 +41,23 @@ module BCDice
41
41
  end
42
42
 
43
43
  # ゲーム別成功度判定(nD6)
44
- def check_nD6(total, dice_total, dice_list, cmp_op, target)
45
- return '' if target == '?'
46
- return '' unless dice_list.size == 3 && cmp_op == :<=
44
+ def result_nd6(total, dice_total, dice_list, cmp_op, target)
45
+ return nil if target == "?"
46
+ return nil unless dice_list.size == 3 && cmp_op == :<=
47
47
 
48
48
  success = target - total # 成功度
49
49
 
50
- result =
51
- if critical?(dice_total, target)
52
- "クリティカル(成功度:#{success})"
53
- elsif fumble?(dice_total, target)
54
- "ファンブル(失敗度:#{success})"
55
- elsif dice_total >= 17
56
- "自動失敗(失敗度:#{success})"
57
- elsif total <= target
58
- "成功(成功度:#{success})"
59
- else
60
- "失敗(失敗度:#{success})"
61
- end
62
-
63
- " > #{result}"
50
+ if critical?(dice_total, target)
51
+ Result.critical("クリティカル(成功度:#{success})")
52
+ elsif fumble?(dice_total, target)
53
+ Result.fumble("ファンブル(失敗度:#{success})")
54
+ elsif dice_total >= 17
55
+ Result.failure("自動失敗(失敗度:#{success})")
56
+ elsif total <= target
57
+ Result.success("成功(成功度:#{success})")
58
+ else
59
+ Result.failure("失敗(失敗度:#{success})")
60
+ end
64
61
  end
65
62
 
66
63
  def eval_game_system_specific_command(command)
@@ -85,16 +82,8 @@ module BCDice
85
82
  modifier = ArithmeticEvaluator.eval(m[2])
86
83
  formated_modifier = Format.modifier(modifier)
87
84
 
88
- dice_list = @randomizer.roll_barabara(3, 6)
89
- dice_total = dice_list.sum()
90
- dice_str = dice_list.join(",")
91
-
92
- total = dice_total + modifier
93
-
94
- "(3D6#{formated_modifier}<=#{target_number}) > "\
95
- "#{dice_total}[#{dice_str}]#{formated_modifier} > "\
96
- "#{total}"\
97
- "#{check_nD6(total, dice_total, dice_list, :<=, target_number)}"
85
+ cmd = "3D6#{formated_modifier}<=#{target_number}"
86
+ return CommonCommand::AddDice.eval(cmd, self, @randomizer)
98
87
  end
99
88
 
100
89
  def roll_fear(command)
@@ -18,9 +18,9 @@ module BCDice
18
18
 
19
19
  # ダイスボットの使い方
20
20
  HELP_MESSAGE = <<~MESSAGETEXT
21
- ・判定 GR+n#f>=X (+n:判定値、#f:不安定による自動失敗基準値、X:目標値)
21
+ ・判定 GR+n#f>=X (+n:判定値、#f:不安定による自動失敗基準値、X:目標値、それぞれ省略可能)
22
22
  ・部位決定チャート:HIT
23
- ・ダメージ+部位決定:GAHn(n:火力)
23
+ ・ダメージ+部位決定:GHAn(n:火力)
24
24
  ・ダメージチャート:xDCy(CDC/EDC/FDC/ADC/LDC )
25
25
  ・ダメージチャートver2:xDTy(CDT/EDT/FDT/ADT/LDT)
26
26
   xは C:コックピット、E:エンジン、F:フレーム、A:アーム、L:レッグ
@@ -35,8 +35,16 @@ module BCDice
35
35
  ・武器改造チャート表:WCC
36
36
  ・イベントチャート表:EVC
37
37
  ・戦闘開始距離:BSD
38
+
39
+ デフォルトダイス:10面
38
40
  MESSAGETEXT
39
41
 
42
+ def initialize(command)
43
+ super(command)
44
+
45
+ @sides_implicit_d = 10
46
+ end
47
+
40
48
  # @param command [String]
41
49
  # @return [String, nil]
42
50
  def eval_game_system_specific_command(command)
@@ -55,7 +63,7 @@ module BCDice
55
63
  def roll_gr(command)
56
64
  parser = Command::Parser.new("GR", round_type: round_type)
57
65
  .enable_fumble
58
- .restrict_cmp_op_to(:>=)
66
+ .restrict_cmp_op_to(nil, :>=)
59
67
  cmd = parser.parse(command)
60
68
  return nil unless cmd
61
69
 
@@ -646,7 +654,7 @@ module BCDice
646
654
  )
647
655
  }.freeze
648
656
 
649
- register_prefix('GR.*', '[CEFAL]D[CT][-+\d]+', 'GHA[-+\d]+', TABLES.keys)
657
+ register_prefix('GR', '[CEFAL]D[CT]', 'GHA', TABLES.keys)
650
658
  end
651
659
  end
652
660
  end
@@ -26,7 +26,7 @@ module BCDice
26
26
  INFO_MESSAGE_TEXT
27
27
 
28
28
  register_prefix(
29
- 'GO(\-?\d+)(\/\d+)?(@\d+)?',
29
+ 'GO',
30
30
  'DC(SL|BL|IM|BR|RF|EL).+'
31
31
  )
32
32
 
@@ -23,7 +23,7 @@ module BCDice
23
23
   幸運の助けを自動処理します。(連撃増加値、闘技チットを表示抑制します)
24
24
  INFO_MESSAGE_TEXT
25
25
 
26
- register_prefix('\d+G\d+.*', '\d+GA\d+.*', '\d+R6.*')
26
+ register_prefix('\d+G\d+', '\d+GA\d+', '\d+R6')
27
27
 
28
28
  def initialize(command)
29
29
  super(command)
@@ -26,7 +26,7 @@ module BCDice
26
26
   例)GL
27
27
  MESSAGETEXT
28
28
 
29
- register_prefix('GK(#\d+)?', 'GL')
29
+ register_prefix('GK', 'GL')
30
30
 
31
31
  def eval_game_system_specific_command(command)
32
32
  output = nil
@@ -41,7 +41,7 @@ module BCDice
41
41
  MESSAGETEXT
42
42
 
43
43
  # 因果点は共有リソースなのでMCPIはシークレットダイスを無効化
44
- register_prefix('GS\(\d+\)', 'GS.*', '^MCPI.*\$\d+$', 'DB\d+')
44
+ register_prefix('GS', '^MCPI.*$', 'DB')
45
45
 
46
46
  def initialize(command)
47
47
  super(command)
@@ -21,22 +21,16 @@ module BCDice
21
21
  例) G>=7 : 2D6して7以上なら成功
22
22
  MESSAGETEXT
23
23
 
24
- register_prefix('G.*')
24
+ register_prefix('G')
25
25
 
26
26
  def change_text(string)
27
27
  string = string.gsub(/^(S)?G/i) { "#{Regexp.last_match(1)}2D6" }
28
28
  return string
29
29
  end
30
30
 
31
- def check_2D6(total, _dice_total, dice_list, cmp_op, target)
32
- return '' if target == '?'
33
-
31
+ def result_2d6(_total, _dice_total, dice_list, _cmp_op, _target)
34
32
  if dice_list == [5, 5]
35
- "ゴリティカル(自動的成功)"
36
- elsif total.send(cmp_op, target)
37
- " > 成功"
38
- else
39
- " > 失敗"
33
+ Result.critical("ゴリティカル(自動的成功)")
40
34
  end
41
35
  end
42
36
  end
@@ -46,29 +46,36 @@ module BCDice
46
46
  end
47
47
 
48
48
  # ゲーム別成功度判定(nD6)
49
- def check_nD6(total, _dice_total, dice_list, cmp_op, target)
50
- result = ''
49
+ def result_nd6(total, _dice_total, dice_list, cmp_op, target)
50
+ return nil unless cmp_op == :>=
51
+
52
+ result = Result.new
53
+ sequence = []
51
54
 
52
55
  if dice_list.count(6) >= 2
53
56
  total += 10
54
- result = "(クリティカル) > #{total}"
57
+ result.critical = true
58
+ sequence.push("(クリティカル)", total.to_s)
55
59
  end
56
60
 
57
- if cmp_op != :>= || target == '?'
58
- return result
61
+ if target != '?'
62
+ if total >= target
63
+ sequence.push("成功")
64
+ result.success = true
65
+ else
66
+ sequence.push("失敗")
67
+ result.failure = true
68
+ end
59
69
  end
60
70
 
61
- if total >= target
62
- result += " > 成功"
63
- else
64
- result += " > 失敗"
71
+ if sequence.empty?
72
+ return nil
65
73
  end
66
74
 
75
+ result.text = sequence.join(" > ")
67
76
  return result
68
77
  end
69
78
 
70
- alias check_2D6 check_nD6
71
-
72
79
  def eval_game_system_specific_command(command)
73
80
  debug("eval_game_system_specific_command command", command)
74
81
 
@@ -24,14 +24,15 @@ module BCDice
24
24
  end
25
25
 
26
26
  # ゲーム別成功度判定(1d100)
27
- def check_1D100(total, _dice_total, cmp_op, target)
28
- return '' if target == '?'
29
- return '' unless cmp_op == :<=
27
+ def result_1d100(total, _dice_total, cmp_op, target)
28
+ return nil unless cmp_op == :<=
30
29
 
31
30
  if total >= 100
32
- "ファンブル"
31
+ Result.fumble("ファンブル")
33
32
  elsif total <= 1
34
- "絶対成功(達成値1+SL)"
33
+ Result.critical("絶対成功(達成値1+SL)")
34
+ elsif target == "?"
35
+ Result.nothing
35
36
  elsif total <= target
36
37
  dig10 = total / 10
37
38
  dig1 = total - dig10 * 10
@@ -39,12 +40,12 @@ module BCDice
39
40
  dig1 = 0 if dig1 >= 10 # 条件的にはあり得ない(笑
40
41
 
41
42
  if dig1 <= 0
42
- "クリティカル(達成値20+SL)"
43
+ Result.critical("クリティカル(達成値20+SL)")
43
44
  else
44
- "成功(達成値#{dig10 + dig1}+SL)"
45
+ Result.success("成功(達成値#{dig10 + dig1}+SL)")
45
46
  end
46
47
  else
47
- "失敗"
48
+ Result.failure("失敗")
48
49
  end
49
50
  end
50
51
  end
@@ -26,7 +26,7 @@ module BCDice
26
26
   修正を後ろに書くことも出来ます。
27
27
  INFO_MESSAGE_TEXT
28
28
 
29
- register_prefix('(.DPT|.FT)(\+|\-)?\d*')
29
+ register_prefix('.DPT', '.FT')
30
30
 
31
31
  def initialize(command)
32
32
  super(command)
@@ -35,14 +35,15 @@ module BCDice
35
35
 
36
36
  # ---- 以降、Gundog.rbよりほぼコピペ(絶対成功→ベアリーに用語変更対応の為、継承だと不都合)
37
37
  # ゲーム別成功度判定(1d100)
38
- def check_1D100(total, _dice_total, cmp_op, target)
39
- return '' if target == '?'
40
- return '' unless cmp_op == :<=
38
+ def result_1d100(total, _dice_total, cmp_op, target)
39
+ return nil unless cmp_op == :<=
41
40
 
42
41
  if total >= 100
43
- "ファンブル"
42
+ Result.fumble("ファンブル")
44
43
  elsif total <= 1
45
- "ベアリー(達成値1+SL)"
44
+ Result.critical("ベアリー(達成値1+SL)")
45
+ elsif target == "?"
46
+ Result.nothing
46
47
  elsif total <= target
47
48
  dig10 = total / 10
48
49
  dig1 = total - dig10 * 10
@@ -50,12 +51,12 @@ module BCDice
50
51
  dig1 = 0 if dig1 >= 10 # 条件的にはあり得ない(笑
51
52
 
52
53
  if dig1 <= 0
53
- "クリティカル(達成値20+SL)"
54
+ Result.critical("クリティカル(達成値20+SL)")
54
55
  else
55
- "成功(達成値#{dig10 + dig1}+SL)"
56
+ Result.success("成功(達成値#{dig10 + dig1}+SL)")
56
57
  end
57
58
  else
58
- "失敗"
59
+ Result.failure("失敗")
59
60
  end
60
61
  end
61
62
 
@@ -26,7 +26,7 @@ module BCDice
26
26
   修正を後ろに書くことも出来ます。
27
27
  INFO_MESSAGE_TEXT
28
28
 
29
- register_prefix('(.DPT|.FT)\d*')
29
+ register_prefix('.DPT', '.FT')
30
30
 
31
31
  def eval_game_system_specific_command(command)
32
32
  string = command.upcase
@@ -55,18 +55,18 @@ module BCDice
55
55
  'FMB',
56
56
  'MFMB',
57
57
  'HIT',
58
- 'FEAR((\+)?\d*)',
59
- 'REACT((\+|\-)?\d*)',
60
- 'TRAP(E|N|H|L)',
61
- 'TRS((E|N|H|L)\d+)((\+|\-)?\d*)',
62
- 'RAND(E|N|H|L)[1-6]?',
63
- 'RENC(E|N|H|L)[1-6]?',
58
+ 'FEAR',
59
+ 'REACT',
60
+ 'TRAP[ENHL]',
61
+ 'TRS[ENHL]',
62
+ 'RAND[ENHL]',
63
+ 'RENC[ENHL]',
64
64
  'AREA',
65
- 'DROP(N)?((\+)?\d)?',
65
+ 'DROPN?',
66
66
  'HST',
67
67
  'KHST',
68
68
  'RANDOP',
69
- 'LOT(N|P)'
69
+ 'LOT[NP]'
70
70
  )
71
71
 
72
72
  def initialize(command)
@@ -75,14 +75,14 @@ module BCDice
75
75
  @d66_sort_type = D66SortType::NO_SORT
76
76
  end
77
77
 
78
- def check_nD6(total, dice_total, dice_list, cmp_op, target)
79
- return '' if target == '?'
80
- return "" unless dice_list.size == 3 && cmp_op == :<=
78
+ def result_nd6(total, dice_total, dice_list, cmp_op, target)
79
+ return Result.nothing if target == '?'
80
+ return nil unless dice_list.size == 3 && cmp_op == :<=
81
81
 
82
82
  success = target - total # 成功度
83
- crt_string = "クリティカル(成功度:#{success})"
84
- fmb_string = "ファンブル(失敗度:#{success})"
85
- fail_string = "自動失敗(失敗度:#{success})"
83
+ crt_string = Result.critical("クリティカル(成功度:#{success})")
84
+ fmb_string = Result.fumble("ファンブル(失敗度:#{success})")
85
+ fail_string = Result.failure("自動失敗(失敗度:#{success})")
86
86
 
87
87
  # クリティカル
88
88
  if (dice_total <= 6) && (target >= 16)
@@ -105,9 +105,9 @@ module BCDice
105
105
  end
106
106
 
107
107
  if total <= target
108
- return "成功(成功度:#{success})"
108
+ return Result.success("成功(成功度:#{success})")
109
109
  else
110
- return "失敗(失敗度:#{success})"
110
+ return Result.failure("失敗(失敗度:#{success})")
111
111
  end
112
112
  end
113
113
 
@@ -21,32 +21,25 @@ module BCDice
21
21
  ・人型用 中段命中部位表 (SLH)/上段命中部位 (SLHU)/上段命中部位 (SLHD)
22
22
  MESSAGETEXT
23
23
 
24
- register_prefix('SHK\d+.*', 'SLH', 'SLHU', 'SLHD')
25
-
26
- def check_1D100(total, _dice_total, cmp_op, target)
27
- return '' if target == '?'
28
- return '' unless cmp_op == :<=
29
-
30
- result = getCheckResult(total, target)
31
- return " #{result}"
32
- end
33
-
34
- def getCheckResult(total, diff)
35
- return getFailResult(total) if total > diff
36
-
37
- return getSuccessResult(total)
38
- end
39
-
40
- def getFailResult(total)
41
- return "致命的失敗" if (total % 5) == 0
42
-
43
- return "失敗"
44
- end
45
-
46
- def getSuccessResult(total)
47
- return "決定的成功" if (total % 5) == 0
48
-
49
- return "成功"
24
+ register_prefix('SHK', 'SLH', 'SLHU', 'SLHD')
25
+
26
+ def result_1d100(total, _dice_total, cmp_op, target)
27
+ return Result.nothing if target == '?'
28
+ return nil unless cmp_op == :<=
29
+
30
+ if total <= target
31
+ if total % 5 == 0
32
+ Result.critical("決定的成功")
33
+ else
34
+ Result.success("成功")
35
+ end
36
+ else
37
+ if total % 5 == 0
38
+ Result.fumble("致命的失敗")
39
+ else
40
+ Result.failure("失敗")
41
+ end
42
+ end
50
43
  end
51
44
 
52
45
  def eval_game_system_specific_command(command)