bcdice 3.0.0.pre.alpha.1 → 3.0.0.pre.alpha.2

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 (255) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/.rubocop.yml +12 -0
  4. data/.rubocop_todo.yml +1 -0
  5. data/CHANGELOG.md +34 -0
  6. data/Gemfile +6 -3
  7. data/Rakefile +52 -18
  8. data/bcdice.gemspec +2 -0
  9. data/i18n/Amadeus/ja_jp.yml +386 -0
  10. data/i18n/Amadeus/ko_kr.yml +148 -0
  11. data/i18n/Cthulhu/ja_jp.yml +11 -0
  12. data/i18n/Cthulhu/ko_kr.yml +11 -0
  13. data/i18n/Cthulhu/zh_hant.yml +11 -0
  14. data/i18n/DetatokoSaga/ja_jp.yml +74 -0
  15. data/i18n/DetatokoSaga/ko_kr.yml +74 -0
  16. data/i18n/DoubleCross/ja_jp.yml +53 -0
  17. data/i18n/DoubleCross/ko_kr.yml +53 -0
  18. data/i18n/Dracurouge/ja_jp.yml +1374 -0
  19. data/i18n/Dracurouge/ko_kr.yml +295 -0
  20. data/i18n/Fiasco/ja_jp.yml +10 -0
  21. data/i18n/Fiasco/ko_kr.yml +10 -0
  22. data/i18n/FutariSousa/ja_jp.yml +720 -0
  23. data/i18n/FutariSousa/ko_kr.yml +746 -0
  24. data/i18n/Insane/ja_jp.yml +454 -0
  25. data/i18n/Insane/ko_kr.yml +502 -0
  26. data/i18n/Kamigakari/ja_jp.yml +276 -0
  27. data/i18n/Kamigakari/ko_kr.yml +204 -0
  28. data/i18n/KillDeathBusiness/ja_jp.yml +1092 -0
  29. data/i18n/KillDeathBusiness/ko_kr.yml +1062 -0
  30. data/i18n/LogHorizon/ja_jp.yml +3082 -0
  31. data/i18n/LogHorizon/ko_kr.yml +923 -0
  32. data/i18n/MagicaLogia/ja_jp.yml +564 -0
  33. data/i18n/MonotoneMuseum/ja_jp.yml +525 -0
  34. data/i18n/MonotoneMuseum/ko_kr.yml +89 -0
  35. data/i18n/Nechronica/ja_jp.yml +57 -0
  36. data/i18n/Nechronica/ko_kr.yml +14 -0
  37. data/i18n/StratoShout/ja_jp.yml +160 -0
  38. data/i18n/StratoShout/ko_kr.yml +160 -0
  39. data/i18n/ja_jp.yml +5 -0
  40. data/i18n/ko_kr.yml +7 -0
  41. data/i18n/zh_hant.yml +3 -0
  42. data/lib/bcdice/arithmetic/node.rb +154 -0
  43. data/lib/bcdice/base.rb +87 -101
  44. data/lib/bcdice/common_command.rb +2 -0
  45. data/lib/bcdice/common_command/add_dice.rb +5 -41
  46. data/lib/bcdice/common_command/add_dice/node.rb +92 -16
  47. data/lib/bcdice/common_command/add_dice/parser.rb +374 -274
  48. data/lib/bcdice/common_command/add_dice/parser.y +153 -0
  49. data/lib/bcdice/common_command/add_dice/randomizer.rb +25 -33
  50. data/lib/bcdice/common_command/barabara_dice.rb +6 -47
  51. data/lib/bcdice/common_command/barabara_dice/node.rb +84 -0
  52. data/lib/bcdice/common_command/barabara_dice/parser.rb +336 -0
  53. data/lib/bcdice/common_command/barabara_dice/parser.y +107 -0
  54. data/lib/bcdice/common_command/calc.rb +7 -30
  55. data/lib/bcdice/common_command/calc/node.rb +30 -0
  56. data/lib/bcdice/common_command/calc/parser.rb +271 -0
  57. data/lib/bcdice/common_command/calc/parser.y +79 -0
  58. data/lib/bcdice/common_command/choice.rb +137 -19
  59. data/lib/bcdice/common_command/d66_dice.rb +48 -34
  60. data/lib/bcdice/common_command/lexer.rb +46 -0
  61. data/lib/bcdice/common_command/repeat.rb +102 -0
  62. data/lib/bcdice/common_command/reroll_dice.rb +8 -158
  63. data/lib/bcdice/common_command/reroll_dice/node.rb +198 -0
  64. data/lib/bcdice/common_command/reroll_dice/parser.rb +421 -0
  65. data/lib/bcdice/common_command/reroll_dice/parser.y +158 -0
  66. data/lib/bcdice/common_command/upper_dice.rb +10 -129
  67. data/lib/bcdice/common_command/upper_dice/node.rb +181 -0
  68. data/lib/bcdice/common_command/upper_dice/parser.rb +412 -0
  69. data/lib/bcdice/common_command/upper_dice/parser.y +143 -0
  70. data/lib/bcdice/common_command/version.rb +9 -17
  71. data/lib/bcdice/deprecated/checker.rb +78 -0
  72. data/lib/bcdice/dice_table/d66_grid_table.rb +8 -0
  73. data/lib/bcdice/dice_table/d66_table.rb +10 -0
  74. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +75 -17
  75. data/lib/bcdice/dice_table/sai_fic_skill_table/category.rb +25 -0
  76. data/lib/bcdice/dice_table/sai_fic_skill_table/skill.rb +23 -0
  77. data/lib/bcdice/dice_table/table.rb +8 -0
  78. data/lib/bcdice/game_system.rb +7 -1
  79. data/lib/bcdice/game_system/AFF2e.rb +1 -1
  80. data/lib/bcdice/game_system/AceKillerGene.rb +2 -2
  81. data/lib/bcdice/game_system/Airgetlamh.rb +3 -3
  82. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  83. data/lib/bcdice/game_system/Alshard.rb +1 -1
  84. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  85. data/lib/bcdice/game_system/Amadeus.rb +46 -507
  86. data/lib/bcdice/game_system/Amadeus_Korean.rb +12 -456
  87. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  88. data/lib/bcdice/game_system/Arianrhod.rb +0 -1
  89. data/lib/bcdice/game_system/ArsMagica.rb +1 -1
  90. data/lib/bcdice/game_system/Avandner.rb +1 -1
  91. data/lib/bcdice/game_system/BBN.rb +1 -1
  92. data/lib/bcdice/game_system/BadLife.rb +1 -1
  93. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  94. data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -2
  95. data/lib/bcdice/game_system/BeginningIdol.rb +2 -3
  96. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +2 -3
  97. data/lib/bcdice/game_system/BladeOfArcana.rb +2 -2
  98. data/lib/bcdice/game_system/BlindMythos.rb +1 -1
  99. data/lib/bcdice/game_system/BloodCrusade.rb +0 -1
  100. data/lib/bcdice/game_system/BloodMoon.rb +0 -1
  101. data/lib/bcdice/game_system/CardRanker.rb +1 -2
  102. data/lib/bcdice/game_system/ChaosFlare.rb +1 -1
  103. data/lib/bcdice/game_system/Chill.rb +1 -1
  104. data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
  105. data/lib/bcdice/game_system/ColossalHunter.rb +1 -2
  106. data/lib/bcdice/game_system/Comes.rb +50 -0
  107. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  108. data/lib/bcdice/game_system/Cthulhu.rb +94 -97
  109. data/lib/bcdice/game_system/Cthulhu7th.rb +108 -67
  110. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  111. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  112. data/lib/bcdice/game_system/CthulhuTech.rb +8 -14
  113. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +7 -190
  114. data/lib/bcdice/game_system/Cthulhu_Korean.rb +5 -186
  115. data/lib/bcdice/game_system/DarkBlaze.rb +9 -5
  116. data/lib/bcdice/game_system/DarkDaysDrive.rb +17 -15
  117. data/lib/bcdice/game_system/DarkSouls.rb +1 -1
  118. data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
  119. data/lib/bcdice/game_system/DemonParasite.rb +1 -2
  120. data/lib/bcdice/game_system/DetatokoSaga.rb +48 -149
  121. data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +6 -274
  122. data/lib/bcdice/game_system/DiceOfTheDead.rb +9 -6
  123. data/lib/bcdice/game_system/DoubleCross.rb +102 -81
  124. data/lib/bcdice/game_system/DoubleCross_Korean.rb +13 -330
  125. data/lib/bcdice/game_system/Dracurouge.rb +376 -1678
  126. data/lib/bcdice/game_system/Dracurouge_Korean.rb +16 -271
  127. data/lib/bcdice/game_system/EarthDawn.rb +1 -1
  128. data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
  129. data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
  130. data/lib/bcdice/game_system/Elysion.rb +3 -4
  131. data/lib/bcdice/game_system/EmbryoMachine.rb +1 -1
  132. data/lib/bcdice/game_system/Emoklore.rb +131 -0
  133. data/lib/bcdice/game_system/EndBreaker.rb +1 -2
  134. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
  135. data/lib/bcdice/game_system/Fiasco.rb +87 -70
  136. data/lib/bcdice/game_system/Fiasco_Korean.rb +7 -95
  137. data/lib/bcdice/game_system/FilledWith.rb +462 -566
  138. data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
  139. data/lib/bcdice/game_system/FutariSousa.rb +103 -938
  140. data/lib/bcdice/game_system/FutariSousa_Korean.rb +7 -948
  141. data/lib/bcdice/game_system/{Gurps.rb → GURPS.rb} +184 -217
  142. data/lib/bcdice/game_system/Garako.rb +131 -39
  143. data/lib/bcdice/game_system/GardenOrder.rb +2 -2
  144. data/lib/bcdice/game_system/GehennaAn.rb +1 -1
  145. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  146. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  147. data/lib/bcdice/game_system/GoldenSkyStories.rb +1 -1
  148. data/lib/bcdice/game_system/Gorilla.rb +1 -1
  149. data/lib/bcdice/game_system/GranCrest.rb +2 -3
  150. data/lib/bcdice/game_system/GundogRevised.rb +1 -1
  151. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  152. data/lib/bcdice/game_system/GurpsFW.rb +2 -3
  153. data/lib/bcdice/game_system/HarnMaster.rb +2 -2
  154. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -2
  155. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  156. data/lib/bcdice/game_system/HuntersMoon.rb +1 -2
  157. data/lib/bcdice/game_system/Illusio.rb +2 -2
  158. data/lib/bcdice/game_system/Insane.rb +90 -717
  159. data/lib/bcdice/game_system/Insane_Korean.rb +7 -719
  160. data/lib/bcdice/game_system/Kamigakari.rb +47 -242
  161. data/lib/bcdice/game_system/Kamigakari_Korean.rb +6 -394
  162. data/lib/bcdice/game_system/KanColle.rb +3 -3
  163. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  164. data/lib/bcdice/game_system/KillDeathBusiness.rb +162 -1144
  165. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +6 -1459
  166. data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
  167. data/lib/bcdice/game_system/LiveraDoll.rb +2 -2
  168. data/lib/bcdice/game_system/LogHorizon.rb +350 -3379
  169. data/lib/bcdice/game_system/LogHorizon_Korean.rb +55 -1357
  170. data/lib/bcdice/game_system/LostRecord.rb +0 -1
  171. data/lib/bcdice/game_system/LostRoyal.rb +1 -2
  172. data/lib/bcdice/game_system/MagicaLogia.rb +158 -1044
  173. data/lib/bcdice/game_system/MeikyuDays.rb +1 -2
  174. data/lib/bcdice/game_system/MeikyuKingdom.rb +4 -4
  175. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +4 -5
  176. data/lib/bcdice/game_system/MetalHead.rb +1 -1
  177. data/lib/bcdice/game_system/MetalHeadExtream.rb +2 -2
  178. data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
  179. data/lib/bcdice/game_system/MonotoneMuseum.rb +38 -239
  180. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +10 -270
  181. data/lib/bcdice/game_system/NSSQ.rb +159 -0
  182. data/lib/bcdice/game_system/Nechronica.rb +34 -73
  183. data/lib/bcdice/game_system/Nechronica_Korean.rb +11 -128
  184. data/lib/bcdice/game_system/NeverCloud.rb +1 -1
  185. data/lib/bcdice/game_system/NightWizard.rb +1 -1
  186. data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
  187. data/lib/bcdice/game_system/NinjaSlayer.rb +12 -11
  188. data/lib/bcdice/game_system/NjslyrBattle.rb +1 -1
  189. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -2
  190. data/lib/bcdice/game_system/OracleEngine.rb +1 -1
  191. data/lib/bcdice/game_system/OrgaRain.rb +2 -2
  192. data/lib/bcdice/game_system/Paradiso.rb +1 -1
  193. data/lib/bcdice/game_system/Paranoia.rb +1 -1
  194. data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
  195. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  196. data/lib/bcdice/game_system/Peekaboo.rb +22 -122
  197. data/lib/bcdice/game_system/Postman.rb +2 -2
  198. data/lib/bcdice/game_system/PulpCthulhu.rb +3 -3
  199. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  200. data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
  201. data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
  202. data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
  203. data/lib/bcdice/game_system/RuinBreakers.rb +296 -0
  204. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  205. data/lib/bcdice/game_system/SRS.rb +1 -2
  206. data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
  207. data/lib/bcdice/game_system/Satasupe.rb +1 -2
  208. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  209. data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
  210. data/lib/bcdice/game_system/ShadowRun5.rb +2 -2
  211. data/lib/bcdice/game_system/SharedFantasia.rb +1 -1
  212. data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +1 -1
  213. data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
  214. data/lib/bcdice/game_system/ShinobiGami.rb +1 -2
  215. data/lib/bcdice/game_system/ShoujoTenrankai.rb +2 -2
  216. data/lib/bcdice/game_system/Skynauts.rb +1 -1
  217. data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
  218. data/lib/bcdice/game_system/StellarKnights.rb +1 -2
  219. data/lib/bcdice/game_system/SterileLife.rb +1 -1
  220. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -2
  221. data/lib/bcdice/game_system/StratoShout.rb +44 -247
  222. data/lib/bcdice/game_system/StratoShout_Korean.rb +6 -282
  223. data/lib/bcdice/game_system/Strave.rb +2 -2
  224. data/lib/bcdice/game_system/SwordWorld.rb +8 -9
  225. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -3
  226. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -3
  227. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  228. data/lib/bcdice/game_system/TokumeiTenkousei.rb +1 -1
  229. data/lib/bcdice/game_system/TokyoGhostResearch.rb +2 -2
  230. data/lib/bcdice/game_system/Torg.rb +2 -2
  231. data/lib/bcdice/game_system/Torg1_5.rb +1 -1
  232. data/lib/bcdice/game_system/TorgEternity.rb +1 -1
  233. data/lib/bcdice/game_system/TrinitySeven.rb +1 -1
  234. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  235. data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -2
  236. data/lib/bcdice/game_system/UnsungDuet.rb +139 -0
  237. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  238. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
  239. data/lib/bcdice/game_system/Villaciel.rb +1 -2
  240. data/lib/bcdice/game_system/Warhammer.rb +1 -1
  241. data/lib/bcdice/game_system/Warhammer4.rb +329 -0
  242. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  243. data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
  244. data/lib/bcdice/game_system/YankeeYogSothoth.rb +15 -15
  245. data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
  246. data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
  247. data/lib/bcdice/game_system/filled_with/cook_tables.rb +119 -0
  248. data/lib/bcdice/game_system/filled_with/lot_tables.rb +155 -0
  249. data/lib/bcdice/loader.rb +6 -8
  250. data/lib/bcdice/preprocessor.rb +15 -40
  251. data/lib/bcdice/repl.rb +1 -1
  252. data/lib/bcdice/result.rb +83 -0
  253. data/lib/bcdice/translate.rb +11 -0
  254. data/lib/bcdice/version.rb +1 -1
  255. metadata +80 -4
@@ -26,7 +26,7 @@ module BCDice
26
26
  MESSAGETEXT
27
27
 
28
28
  # ダイスボットで使用するコマンドを配列で列挙する
29
- register_prefix(['\d+NC.*', '\d+D6?([\+\-\d]*)>=\d+'])
29
+ register_prefix('\d+NC.*', '\d+D6?([\+\-\d]*)>=\d+')
30
30
 
31
31
  def eval_game_system_specific_command(command)
32
32
  m = /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.match(command)
@@ -29,7 +29,7 @@ module BCDice
29
29
   例)12NW-5@7#2$3 1NW 50nw+5@7,10#2,5 50nw-5+10@7,10#2,5+15+25
30
30
  INFO_MESSAGE_TEXT
31
31
 
32
- register_prefix(['([-+]?\d+)?NW.*', '2R6.*'])
32
+ register_prefix('([-+]?\d+)?NW.*', '2R6.*')
33
33
 
34
34
  def initialize(command)
35
35
  super(command)
@@ -14,7 +14,7 @@ module BCDice
14
14
  # ゲームシステムの識別子
15
15
  ID = 'NightWizard3rd'
16
16
 
17
- register_prefix(['([-+]?\d+)?NW.*', '2R6.*'])
17
+ register_prefix('([-+]?\d+)?NW.*', '2R6.*')
18
18
 
19
19
  def fumble_base_number(parsed)
20
20
  parsed.passive_modify_number + parsed.active_modify_number
@@ -40,13 +40,13 @@ module BCDice
40
40
  MESSAGETEXT
41
41
 
42
42
  # ダイスボットで使用するコマンドを配列で列挙する
43
- register_prefix([
43
+ register_prefix(
44
44
  'NJ\d+.*',
45
45
  'EV\d+.*',
46
46
  'AT\d+.*',
47
47
  'EL\d+.*',
48
48
  'SB'
49
- ])
49
+ )
50
50
 
51
51
  def initialize(command)
52
52
  super(command)
@@ -170,7 +170,7 @@ module BCDice
170
170
  def executeEV(ev)
171
171
  command = bRollCommand(ev.num, ev.difficulty)
172
172
 
173
- rollResult = BCDice::CommonCommand::BarabaraDice.new(command, @randomizer, self).eval().sub(B_ROLL_RESULT_HEAD_RE, '')
173
+ rollResult = BCDice::CommonCommand::BarabaraDice.eval(command, self, @randomizer).text.sub(B_ROLL_RESULT_HEAD_RE, '')
174
174
  return rollResult unless ev.targetValue
175
175
 
176
176
  m = /成功数(\d+)/.match(rollResult)
@@ -189,14 +189,14 @@ module BCDice
189
189
  # @return [String] 近接攻撃結果
190
190
  def executeAT(at)
191
191
  command = bRollCommand(at.num, at.difficulty)
192
- rollResult = BCDice::CommonCommand::BarabaraDice.new(command, @randomizer, self).eval().sub(B_ROLL_RESULT_HEAD_RE, '')
192
+ rollResult = BCDice::CommonCommand::BarabaraDice.eval(command, self, @randomizer).text.sub(B_ROLL_RESULT_HEAD_RE, '')
193
193
 
194
194
  # バラバラロールの出目を取得する
195
195
  # TODO: バラバラロールの結果として、出目を配列で取得できるようにする
196
196
  m = /> (\d+(?:,\d+)*)/.match(rollResult)
197
197
  values = m[1].split(',').map(&:to_i)
198
198
 
199
- numOfMaxValues = values.select { |v| v == 6 }.length
199
+ numOfMaxValues = values.count(6)
200
200
 
201
201
  return numOfMaxValues >= 2 ? "#{rollResult} > サツバツ!!" : rollResult
202
202
  end
@@ -206,16 +206,16 @@ module BCDice
206
206
  # @return [String] 電子戦結果
207
207
  def executeEL(el)
208
208
  command = bRollCommand(el.num, el.difficulty)
209
- rollResult = BCDice::CommonCommand::BarabaraDice.new(command, @randomizer, self).eval().sub(B_ROLL_RESULT_HEAD_RE, '')
209
+ rollResult = BCDice::CommonCommand::BarabaraDice.eval(command, self, @randomizer).text.sub(B_ROLL_RESULT_HEAD_RE, '')
210
210
 
211
211
  # バラバラロールの出目を取得する
212
212
  # TODO: バラバラロールの結果として、出目を配列で取得できるようにする
213
213
  m = /> (\d+(?:,\d+)*)/.match(rollResult)
214
214
  values = m[1].split(',').map(&:to_i)
215
215
 
216
- numOfMaxValues = values.select { |v| v == 6 }.length
216
+ numOfMaxValues = values.count(6)
217
217
 
218
- sumOfTrueValues = values.select { |v| v >= el.difficulty }.length
218
+ sumOfTrueValues = values.count { |v| v >= el.difficulty }
219
219
 
220
220
  return numOfMaxValues >= 1 ? "#{rollResult} + #{numOfMaxValues} > #{sumOfTrueValues + numOfMaxValues}" : rollResult
221
221
  end
@@ -263,12 +263,13 @@ module BCDice
263
263
  }.freeze
264
264
 
265
265
  # ダイスボットで使用するコマンドを配列で列挙する
266
- register_prefix([
266
+ register_prefix(
267
267
  'NJ\d+.*',
268
268
  'EV\d+.*',
269
269
  'AT\d+.*',
270
- 'EL\d+.*'
271
- ] + TABLES.keys)
270
+ 'EL\d+.*',
271
+ TABLES.keys
272
+ )
272
273
  end
273
274
  end
274
275
  end
@@ -4,7 +4,7 @@ module BCDice
4
4
  module GameSystem
5
5
  class NjslyrBattle < Base
6
6
  # ゲームシステムの識別子
7
- ID = 'NJSLYRBATTLE'
7
+ ID = 'NjslyrBattle'
8
8
 
9
9
  # ゲームシステム名
10
10
  NAME = 'NJSLYRBATTLE'
@@ -45,7 +45,6 @@ module BCDice
45
45
 
46
46
  def initialize(command)
47
47
  super(command)
48
- @enabled_d66 = true
49
48
  @d66_sort_type = D66SortType::ASC
50
49
  end
51
50
 
@@ -128,7 +127,7 @@ module BCDice
128
127
  return "失敗"
129
128
  end
130
129
 
131
- register_prefix(['\d*JD.*', 'RETP?\d+', 'DNGNP?\d+'] + TABLES.keys)
130
+ register_prefix('\d*JD.*', 'RETP?\d+', 'DNGNP?\d+', TABLES.keys)
132
131
  end
133
132
  end
134
133
  end
@@ -35,7 +35,7 @@ module BCDice
35
35
  MESSAGETEXT
36
36
 
37
37
  # ダイスボットで使用するコマンドを配列で列挙する
38
- register_prefix(['\d+CL.*', '\d+R6.*', '\d+D6.*\$[\+\-]?\d+.*'])
38
+ register_prefix('\d+CL.*', '\d+R6.*', '\d+D6.*\$[\+\-]?\d+.*')
39
39
 
40
40
  def initialize(command)
41
41
  super(command)
@@ -30,9 +30,9 @@ module BCDice
30
30
  @sort_add_dice = true # ダイスのソート有
31
31
  end
32
32
 
33
- register_prefix([
33
+ register_prefix(
34
34
  '(\d+)?OR([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?'
35
- ])
35
+ )
36
36
 
37
37
  def eval_game_system_specific_command(command)
38
38
  if command =~ /(\d+)?OR([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?$/i
@@ -25,7 +25,7 @@ module BCDice
25
25
   例)DC4:【攻撃力】4でダメージチェック DC5[20]:【攻撃力】5でダメージチェック、うち1つは20mm機銃 DC5[20,30]:【攻撃力】5でダメージチェック、うち1つは20mm機銃、うち1つは30mmガンポッド
26
26
  MESSAGETEXT
27
27
 
28
- register_prefix(['(\d+)*D20<=.*', '(\d+)*CP.*', 'RMT', 'TOT', 'EXT', 'SUT', 'DC(\d+).*'])
28
+ register_prefix('(\d+)*D20<=.*', '(\d+)*CP.*', 'RMT', 'TOT', 'EXT', 'SUT', 'DC(\d+).*')
29
29
 
30
30
  def eval_game_system_specific_command(command) # ダイスロールコマンド
31
31
  # 通常判定部分をgetJudgeResultコマンドに切り分け
@@ -18,7 +18,7 @@ module BCDice
18
18
  ※このダイスボットは部屋のシステム名表示用となります。
19
19
  MESSAGETEXT
20
20
 
21
- register_prefix(['geta'])
21
+ register_prefix('geta')
22
22
 
23
23
  def initialize(command)
24
24
  super(command)
@@ -26,7 +26,7 @@ module BCDice
26
26
  例)MP2
27
27
  INFO_MESSAGE_TEXT
28
28
 
29
- register_prefix(['ND.*', 'MP.*'])
29
+ register_prefix('ND.*', 'MP.*')
30
30
 
31
31
  def eval_game_system_specific_command(command)
32
32
  case command
@@ -26,7 +26,7 @@ module BCDice
26
26
  ・D66ダイスあり
27
27
  INFO_MESSAGE_TEXT
28
28
 
29
- register_prefix(['(N|A|M|U|C|)?URGE\d+'])
29
+ register_prefix('(N|A|M|U|C|)?URGE\d+')
30
30
 
31
31
  def get_urge(string) # パラサイトブラッドの衝動表
32
32
  unless /(\w*)URGE\s*(\d+)/i =~ string
@@ -26,12 +26,13 @@ module BCDice
26
26
   ・オバケぶらり旅表       STT
27
27
   ・仲間効果表          NST
28
28
   ・ランダム特技決定表      RTT
29
-  ・指定特技(不良)表       TNT
30
-  ・指定特技(運動)表       TET
31
-  ・指定特技(友達)表       TFT
32
-  ・指定特技(遊び)表       TPT
33
-  ・指定特技(勉強)表       TST
34
-  ・指定特技(大人)表       TAT
29
+  ・ランダム分野決定表      RCT
30
+  ・指定特技(不良)表       RTT1, TNT
31
+  ・指定特技(運動)表       RTT2, TET
32
+  ・指定特技(友達)表       RTT3, TFT
33
+  ・指定特技(遊び)表       RTT4, TPT
34
+  ・指定特技(勉強)表       RTT5, TST
35
+  ・指定特技(大人)表       RTT6, TAT
35
36
  ・D66ダイスあり
36
37
  INFO_MESSAGE_TEXT
37
38
 
@@ -39,7 +40,6 @@ module BCDice
39
40
  super(command)
40
41
 
41
42
  @sort_add_dice = true
42
- @enabled_d66 = true
43
43
  @d66_sort_type = D66SortType::ASC
44
44
  @round_type = RoundType::CEIL # 端数切り上げに設定
45
45
  end
@@ -61,21 +61,23 @@ module BCDice
61
61
  end
62
62
 
63
63
  def eval_game_system_specific_command(command)
64
- roll_tables(command, TABLES)
64
+ roll_tables(command, TABLES) || RTT.roll_command(randomizer, command)
65
65
  end
66
66
 
67
+ RTT = DiceTable::SaiFicSkillTable.new(
68
+ [
69
+ ['不良', ['夜更かし', 'いねむり', '無視', 'ウソつき', '悪口', 'いたずら', 'ズル', '隠れる', 'ぬすむ', 'おどす', 'けんか',]],
70
+ ['運動', ['泳ぐ', '木登り', '柔らかい', 'マラソン', 'とぶ', 'かけっこ', 'バランス', '投げる', '球技', '打ち返す', '力持ち',]],
71
+ ['友達', ['ネット', 'うわさ話', '優しさ', 'がまん', 'お手紙', 'おしゃべり', '自転車', '勇気', '約束', '仕切る', '秘密基地',]],
72
+ ['遊び', ['パソコン', 'ゲーム', '集める', '絵', '音楽', '空想', '読書', 'お話づくり', 'クイズ', '手品', '占い',]],
73
+ ['勉強', ['実験', '宇宙', '生き物', '工作', '計算', '宿題', '漢字', '作文', '歴史', '地理', '外国語',]],
74
+ ['大人', ['法律', 'しかる', '手当て', 'マナー', '推理', '計画性', 'お料理', 'お買い物', 'オシャレ', '恋愛', '道楽',]],
75
+ ],
76
+ rttn: ['TNT', 'TET', 'TFT', 'TPT', 'TST', 'TAT'],
77
+ rtt_format: "ランダム指定特技表(%<category_dice>d,%<row_dice>d) > %<text>s",
78
+ rttn_format: "指定特技(%<category_name>s)表(%<row_dice>d) > %<text>s"
79
+ )
67
80
  TABLES = {
68
- "RTT" => DiceTable::SaiFicSkillTable.new(
69
- [
70
- ['不良', ['夜更かし', 'いねむり', '無視', 'ウソつき', '悪口', 'いたずら', 'ズル', '隠れる', 'ぬすむ', 'おどす', 'けんか',]],
71
- ['運動', ['泳ぐ', '木登り', '柔らかい', 'マラソン', 'とぶ', 'かけっこ', 'バランス', '投げる', '球技', '打ち返す', '力持ち',]],
72
- ['友達', ['ネット', 'うわさ話', '優しさ', 'がまん', 'お手紙', 'おしゃべり', '自転車', '勇気', '約束', '仕切る', '秘密基地',]],
73
- ['遊び', ['パソコン', 'ゲーム', '集める', '絵', '音楽', '空想', '読書', 'お話づくり', 'クイズ', '手品', '占い',]],
74
- ['勉強', ['実験', '宇宙', '生き物', '工作', '計算', '宿題', '漢字', '作文', '歴史', '地理', '外国語',]],
75
- ['大人', ['法律', 'しかる', '手当て', 'マナー', '推理', '計画性', 'お料理', 'お買い物', 'オシャレ', '恋愛', '道楽',]],
76
- ],
77
- peekaboo_style: true
78
- ),
79
81
  "SET" => DiceTable::Table.new(
80
82
  "学校イベント表",
81
83
  "2D6",
@@ -168,108 +170,6 @@ module BCDice
168
170
  "魔法暴発! 自分の持っている魔法をランダムに1つ選んで、その効果が発動します。魔法の対象が選べる場合は、スプーキーのプレイヤーが選んで構いません。そして、1d6サイクルの間、行動不能になります。その後、【魔力】が1d6点回復して通常通り行動できるようになります。"
169
171
  ]
170
172
  ),
171
- "TNT" => DiceTable::Table.new(
172
- "指定特技(不良)表",
173
- "2D6",
174
- [
175
- "《夜更かし/不良2》",
176
- "《いねむり/不良3》",
177
- "《無視/不良4》",
178
- "《ウソつき/不良5》",
179
- "《悪口/不良6》",
180
- "《いたずら/不良7》",
181
- "《ズル/不良8》",
182
- "《隠れる/不良9》",
183
- "《ぬすむ/不良10》",
184
- "《おどす/不良11》",
185
- "《けんか/不良12》"
186
- ]
187
- ),
188
- "TET" => DiceTable::Table.new(
189
- "指定特技(運動)表",
190
- "2D6",
191
- [
192
- "《泳ぐ/運動2》",
193
- "《木登り/運動3》",
194
- "《柔らかい/運動4》",
195
- "《マラソン/運動5》",
196
- "《とぶ/運動6》",
197
- "《かけっこ/運動7》",
198
- "《バランス/運動8》",
199
- "《投げる/運動9》",
200
- "《球技/運動10》",
201
- "《打ち返す/運動11》",
202
- "《力持ち/運動12》"
203
- ]
204
- ),
205
- "TFT" => DiceTable::Table.new(
206
- "指定特技(友達)表",
207
- "2D6",
208
- [
209
- "《ネット/友達2》",
210
- "《うわさ話/友達3》",
211
- "《優しさ/友達4》",
212
- "《がまん/友達5》",
213
- "《お手紙/友達6》",
214
- "《おしゃべり/友達7》",
215
- "《自転車/友達8》",
216
- "《勇気/友達9》",
217
- "《約束/友達10》",
218
- "《仕切る/友達11》",
219
- "《秘密基地/友達12》"
220
- ]
221
- ),
222
- "TPT" => DiceTable::Table.new(
223
- "指定特技(遊び)表",
224
- "2D6",
225
- [
226
- "《パソコン/遊び2》",
227
- "《ゲーム/遊び3》",
228
- "《集める/遊び4》",
229
- "《絵/遊び5》",
230
- "《音楽/遊び6》",
231
- "《空想/遊び7》",
232
- "《読書/遊び8》",
233
- "《お話づくり/遊び9》",
234
- "《クイズ/遊び10》",
235
- "《手品/遊び11》",
236
- "《占い/遊び12》"
237
- ]
238
- ),
239
- "TST" => DiceTable::Table.new(
240
- "指定特技(勉強)表",
241
- "2D6",
242
- [
243
- "《実験/勉強2》",
244
- "《宇宙/勉強3》",
245
- "《生き物/勉強4》",
246
- "《工作/勉強5》",
247
- "《計算/勉強6》",
248
- "《宿題/勉強7》",
249
- "《漢字/勉強8》",
250
- "《作文/勉強9》",
251
- "《歴史/勉強10》",
252
- "《地理/勉強11》",
253
- "《外国語/勉強12》"
254
- ]
255
- ),
256
- "TAT" => DiceTable::Table.new(
257
- "指定特技(大人)表",
258
- "2D6",
259
- [
260
- "《法律/大人2》",
261
- "《しかる/大人3》",
262
- "《手当て/大人4》",
263
- "《マナー/大人5》",
264
- "《推理/大人6》",
265
- "《計画性/大人7》",
266
- "《お料理/大人8》",
267
- "《お買い物/大人9》",
268
- "《オシャレ/大人10》",
269
- "《恋愛/大人11》",
270
- "《道楽/大人12》"
271
- ]
272
- ),
273
173
  "STT" => DiceTable::Table.new(
274
174
  "オバケぶらり旅表",
275
175
  "2D6",
@@ -318,7 +218,7 @@ module BCDice
318
218
  ),
319
219
  }.freeze
320
220
 
321
- register_prefix(['RTT'] + TABLES.keys)
221
+ register_prefix(RTT.prefixes, TABLES.keys)
322
222
  end
323
223
  end
324
224
  end
@@ -37,11 +37,11 @@ module BCDice
37
37
  ◆自由行動シチュエーション表:FRE
38
38
  MESSAGETEXT
39
39
 
40
- register_prefix([
40
+ register_prefix(
41
41
  'WEA\d*',
42
42
  '(\d+)?PO.*',
43
43
  'FRE'
44
- ])
44
+ )
45
45
 
46
46
  def initialize(command)
47
47
  super(command)
@@ -47,14 +47,14 @@ module BCDice
47
47
   ・プッシュ時のキャスティング・ロールの失敗(Failed Casting Effects)表 FCE
48
48
  INFO_MESSAGE_TEXT
49
49
 
50
- register_prefix(['CC\(\d+\)', 'CC.*', 'CBR\(\d+,\d+\)', 'FAR.*', 'BMR', 'BMS', 'FCE', 'PH', 'MA', 'IT'])
50
+ register_prefix('CC\(\d+\)', 'CC.*', 'CBR\(\d+,\d+\)', 'FAR.*', 'BMR', 'BMS', 'FCE', 'PH', 'MA', 'IT')
51
51
 
52
52
  def eval_game_system_specific_command(command)
53
53
  case command
54
54
  when /^CC/i
55
- return getCheckResult(command)
55
+ return skill_roll(command)
56
56
  when /^CBR/i
57
- return getCombineRoll(command)
57
+ return combine_roll(command)
58
58
  when /^FAR/i
59
59
  return getFullAutoResult(command)
60
60
  when /^BMR/i # 狂気の発作(リアルタイム)
@@ -38,10 +38,10 @@ module BCDice
38
38
  @sort_add_dice = true # ダイスのソート有
39
39
  end
40
40
 
41
- register_prefix([
41
+ register_prefix(
42
42
  '(-)?(\d+)?RD(\d+)?(@(\d+))?',
43
43
  '(-)?(\d+)?DD([1-9])?([\+\-]\d+)?'
44
- ])
44
+ )
45
45
 
46
46
  def eval_game_system_specific_command(command)
47
47
  if command =~ /(-)?(\d+)?RD(\d+)?(@(\d+))?$/i
@@ -19,7 +19,7 @@ module BCDice
19
19
   判定と回避判定は、どちらもコマンドだけの場合、出目の表示と自動成功と自動失敗の判定のみを行います。
20
20
  INFO_MESSAGE_TEXT
21
21
 
22
- register_prefix(['LW.*'])
22
+ register_prefix('LW.*')
23
23
 
24
24
  def eval_game_system_specific_command(command)
25
25
  parser = CommandParser.new("LW", "LWD")
@@ -21,7 +21,7 @@ module BCDice
21
21
  RecordOfSteam : (4S3@2) > 2,1,2,4,4,4,2,3,4,5,6,6 > 4回転 > 成功数5
22
22
  MESSAGETEXT
23
23
 
24
- register_prefix(['\d+S\d+.*'])
24
+ register_prefix('\d+S\d+.*')
25
25
 
26
26
  # サンプルのダイスコマンドは「nSt@c」で n=ダイス個数, t=目標値, c=クリティカル値。@cのみ省略可
27
27
 
@@ -22,7 +22,7 @@ module BCDice
22
22
   例) 3RS+1<=9 3R6+1<=9[3]
23
23
  INFO_MESSAGE_TEXT
24
24
 
25
- register_prefix(['\d+RS.*', '3R6.*'])
25
+ register_prefix('\d+RS.*', '3R6.*')
26
26
 
27
27
  def initialize(command)
28
28
  super(command)