bcdice 3.0.0.pre.alpha.1

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 (258) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +21 -0
  3. data/.github/.codecov.yaml +10 -0
  4. data/.github/workflows/coverage.yaml +21 -0
  5. data/.github/workflows/lint.yaml +13 -0
  6. data/.github/workflows/test.yml +20 -0
  7. data/.gitignore +14 -0
  8. data/.rubocop.yml +96 -0
  9. data/.rubocop_todo.yml +113 -0
  10. data/CHANGELOG.md +868 -0
  11. data/Gemfile +11 -0
  12. data/LICENSE +29 -0
  13. data/README.md +38 -0
  14. data/ROADMAP.md +30 -0
  15. data/Rakefile +118 -0
  16. data/bcdice.gemspec +27 -0
  17. data/bin/repl.rb +21 -0
  18. data/docs/README.txt +2028 -0
  19. data/docs/dicebot_sort_key.md +72 -0
  20. data/docs/how_to_make_dicebot.md +453 -0
  21. data/lib/bcdice.rb +8 -0
  22. data/lib/bcdice/arithmetic_evaluator.rb +167 -0
  23. data/lib/bcdice/base.rb +423 -0
  24. data/lib/bcdice/command_parser.rb +242 -0
  25. data/lib/bcdice/common_command.rb +23 -0
  26. data/lib/bcdice/common_command/add_dice.rb +54 -0
  27. data/lib/bcdice/common_command/add_dice/node.rb +488 -0
  28. data/lib/bcdice/common_command/add_dice/parser.rb +282 -0
  29. data/lib/bcdice/common_command/add_dice/randomizer.rb +48 -0
  30. data/lib/bcdice/common_command/barabara_dice.rb +57 -0
  31. data/lib/bcdice/common_command/calc.rb +39 -0
  32. data/lib/bcdice/common_command/choice.rb +35 -0
  33. data/lib/bcdice/common_command/d66_dice.rb +63 -0
  34. data/lib/bcdice/common_command/reroll_dice.rb +190 -0
  35. data/lib/bcdice/common_command/upper_dice.rb +165 -0
  36. data/lib/bcdice/common_command/version.rb +26 -0
  37. data/lib/bcdice/dice_table.rb +8 -0
  38. data/lib/bcdice/dice_table/chain_table.rb +33 -0
  39. data/lib/bcdice/dice_table/d66_grid_table.rb +26 -0
  40. data/lib/bcdice/dice_table/d66_range_table.rb +26 -0
  41. data/lib/bcdice/dice_table/d66_table.rb +34 -0
  42. data/lib/bcdice/dice_table/range_table.rb +267 -0
  43. data/lib/bcdice/dice_table/roll_result.rb +43 -0
  44. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +32 -0
  45. data/lib/bcdice/dice_table/table.rb +35 -0
  46. data/lib/bcdice/enum.rb +15 -0
  47. data/lib/bcdice/format.rb +36 -0
  48. data/lib/bcdice/game_system.rb +187 -0
  49. data/lib/bcdice/game_system/AFF2e.rb +141 -0
  50. data/lib/bcdice/game_system/AceKillerGene.rb +55 -0
  51. data/lib/bcdice/game_system/Airgetlamh.rb +117 -0
  52. data/lib/bcdice/game_system/Alsetto.rb +124 -0
  53. data/lib/bcdice/game_system/Alshard.rb +27 -0
  54. data/lib/bcdice/game_system/AlterRaise.rb +282 -0
  55. data/lib/bcdice/game_system/Amadeus.rb +622 -0
  56. data/lib/bcdice/game_system/Amadeus_Korean.rb +501 -0
  57. data/lib/bcdice/game_system/AnimaAnimus.rb +96 -0
  58. data/lib/bcdice/game_system/Arianrhod.rb +50 -0
  59. data/lib/bcdice/game_system/ArsMagica.rb +149 -0
  60. data/lib/bcdice/game_system/Avandner.rb +101 -0
  61. data/lib/bcdice/game_system/BBN.rb +143 -0
  62. data/lib/bcdice/game_system/BadLife.rb +435 -0
  63. data/lib/bcdice/game_system/BarnaKronika.rb +188 -0
  64. data/lib/bcdice/game_system/BattleTech.rb +530 -0
  65. data/lib/bcdice/game_system/BeastBindTrinity.rb +348 -0
  66. data/lib/bcdice/game_system/BeginningIdol.rb +2527 -0
  67. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +2378 -0
  68. data/lib/bcdice/game_system/BladeOfArcana.rb +252 -0
  69. data/lib/bcdice/game_system/BlindMythos.rb +460 -0
  70. data/lib/bcdice/game_system/BloodCrusade.rb +423 -0
  71. data/lib/bcdice/game_system/BloodMoon.rb +213 -0
  72. data/lib/bcdice/game_system/CardRanker.rb +249 -0
  73. data/lib/bcdice/game_system/ChaosFlare.rb +181 -0
  74. data/lib/bcdice/game_system/Chill.rb +163 -0
  75. data/lib/bcdice/game_system/Chill3.rb +52 -0
  76. data/lib/bcdice/game_system/CodeLayerd.rb +132 -0
  77. data/lib/bcdice/game_system/ColossalHunter.rb +569 -0
  78. data/lib/bcdice/game_system/CrashWorld.rb +81 -0
  79. data/lib/bcdice/game_system/Cthulhu.rb +252 -0
  80. data/lib/bcdice/game_system/Cthulhu7th.rb +767 -0
  81. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +386 -0
  82. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +383 -0
  83. data/lib/bcdice/game_system/CthulhuTech.rb +263 -0
  84. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +243 -0
  85. data/lib/bcdice/game_system/Cthulhu_Korean.rb +240 -0
  86. data/lib/bcdice/game_system/DarkBlaze.rb +207 -0
  87. data/lib/bcdice/game_system/DarkDaysDrive.rb +425 -0
  88. data/lib/bcdice/game_system/DarkSouls.rb +91 -0
  89. data/lib/bcdice/game_system/DeadlineHeroes.rb +583 -0
  90. data/lib/bcdice/game_system/DemonParasite.rb +524 -0
  91. data/lib/bcdice/game_system/DetatokoSaga.rb +310 -0
  92. data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +310 -0
  93. data/lib/bcdice/game_system/DiceBot.rb +17 -0
  94. data/lib/bcdice/game_system/DiceOfTheDead.rb +111 -0
  95. data/lib/bcdice/game_system/DoubleCross.rb +373 -0
  96. data/lib/bcdice/game_system/DoubleCross_Korean.rb +371 -0
  97. data/lib/bcdice/game_system/Dracurouge.rb +1856 -0
  98. data/lib/bcdice/game_system/Dracurouge_Korean.rb +310 -0
  99. data/lib/bcdice/game_system/DungeonsAndDragons.rb +19 -0
  100. data/lib/bcdice/game_system/EarthDawn.rb +225 -0
  101. data/lib/bcdice/game_system/EarthDawn3.rb +275 -0
  102. data/lib/bcdice/game_system/EarthDawn4.rb +272 -0
  103. data/lib/bcdice/game_system/EclipsePhase.rb +51 -0
  104. data/lib/bcdice/game_system/Elric.rb +36 -0
  105. data/lib/bcdice/game_system/Elysion.rb +1213 -0
  106. data/lib/bcdice/game_system/EmbryoMachine.rb +227 -0
  107. data/lib/bcdice/game_system/EndBreaker.rb +132 -0
  108. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +27 -0
  109. data/lib/bcdice/game_system/Fiasco.rb +123 -0
  110. data/lib/bcdice/game_system/Fiasco_Korean.rb +122 -0
  111. data/lib/bcdice/game_system/FilledWith.rb +1543 -0
  112. data/lib/bcdice/game_system/FullMetalPanic.rb +27 -0
  113. data/lib/bcdice/game_system/FutariSousa.rb +994 -0
  114. data/lib/bcdice/game_system/FutariSousa_Korean.rb +994 -0
  115. data/lib/bcdice/game_system/Garako.rb +559 -0
  116. data/lib/bcdice/game_system/GardenOrder.rb +451 -0
  117. data/lib/bcdice/game_system/GehennaAn.rb +136 -0
  118. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +120 -0
  119. data/lib/bcdice/game_system/GoblinSlayer.rb +168 -0
  120. data/lib/bcdice/game_system/GoldenSkyStories.rb +77 -0
  121. data/lib/bcdice/game_system/Gorilla.rb +44 -0
  122. data/lib/bcdice/game_system/GranCrest.rb +518 -0
  123. data/lib/bcdice/game_system/Gundog.rb +52 -0
  124. data/lib/bcdice/game_system/GundogRevised.rb +294 -0
  125. data/lib/bcdice/game_system/GundogZero.rb +261 -0
  126. data/lib/bcdice/game_system/Gurps.rb +403 -0
  127. data/lib/bcdice/game_system/GurpsFW.rb +2330 -0
  128. data/lib/bcdice/game_system/HarnMaster.rb +208 -0
  129. data/lib/bcdice/game_system/HatsuneMiku.rb +706 -0
  130. data/lib/bcdice/game_system/Hieizan.rb +48 -0
  131. data/lib/bcdice/game_system/HouraiGakuen.rb +270 -0
  132. data/lib/bcdice/game_system/HuntersMoon.rb +503 -0
  133. data/lib/bcdice/game_system/Illusio.rb +89 -0
  134. data/lib/bcdice/game_system/InfiniteFantasia.rb +51 -0
  135. data/lib/bcdice/game_system/Insane.rb +822 -0
  136. data/lib/bcdice/game_system/Insane_Korean.rb +773 -0
  137. data/lib/bcdice/game_system/IthaWenUa.rb +38 -0
  138. data/lib/bcdice/game_system/JamesBond.rb +45 -0
  139. data/lib/bcdice/game_system/Kamigakari.rb +394 -0
  140. data/lib/bcdice/game_system/Kamigakari_Korean.rb +428 -0
  141. data/lib/bcdice/game_system/KanColle.rb +938 -0
  142. data/lib/bcdice/game_system/KemonoNoMori.rb +258 -0
  143. data/lib/bcdice/game_system/KillDeathBusiness.rb +1420 -0
  144. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +1510 -0
  145. data/lib/bcdice/game_system/KurayamiCrying.rb +49 -0
  146. data/lib/bcdice/game_system/LiveraDoll.rb +375 -0
  147. data/lib/bcdice/game_system/LogHorizon.rb +3567 -0
  148. data/lib/bcdice/game_system/LogHorizon_Korean.rb +1407 -0
  149. data/lib/bcdice/game_system/LostRecord.rb +30 -0
  150. data/lib/bcdice/game_system/LostRoyal.rb +242 -0
  151. data/lib/bcdice/game_system/MagicaLogia.rb +1148 -0
  152. data/lib/bcdice/game_system/MeikyuDays.rb +415 -0
  153. data/lib/bcdice/game_system/MeikyuKingdom.rb +466 -0
  154. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +269 -0
  155. data/lib/bcdice/game_system/MetalHead.rb +249 -0
  156. data/lib/bcdice/game_system/MetalHeadExtream.rb +917 -0
  157. data/lib/bcdice/game_system/MetallicGuardian.rb +31 -0
  158. data/lib/bcdice/game_system/MonotoneMuseum.rb +354 -0
  159. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +304 -0
  160. data/lib/bcdice/game_system/Nechronica.rb +211 -0
  161. data/lib/bcdice/game_system/Nechronica_Korean.rb +160 -0
  162. data/lib/bcdice/game_system/NeverCloud.rb +74 -0
  163. data/lib/bcdice/game_system/NightWizard.rb +231 -0
  164. data/lib/bcdice/game_system/NightWizard3rd.rb +24 -0
  165. data/lib/bcdice/game_system/NightmareHunterDeep.rb +117 -0
  166. data/lib/bcdice/game_system/NinjaSlayer.rb +274 -0
  167. data/lib/bcdice/game_system/NjslyrBattle.rb +54 -0
  168. data/lib/bcdice/game_system/Nuekagami.rb +293 -0
  169. data/lib/bcdice/game_system/OneWayHeroics.rb +134 -0
  170. data/lib/bcdice/game_system/OracleEngine.rb +265 -0
  171. data/lib/bcdice/game_system/OrgaRain.rb +77 -0
  172. data/lib/bcdice/game_system/Oukahoushin3rd.rb +162 -0
  173. data/lib/bcdice/game_system/Paradiso.rb +323 -0
  174. data/lib/bcdice/game_system/Paranoia.rb +64 -0
  175. data/lib/bcdice/game_system/ParanoiaRebooted.rb +109 -0
  176. data/lib/bcdice/game_system/ParasiteBlood.rb +231 -0
  177. data/lib/bcdice/game_system/Pathfinder.rb +21 -0
  178. data/lib/bcdice/game_system/Peekaboo.rb +324 -0
  179. data/lib/bcdice/game_system/Pendragon.rb +39 -0
  180. data/lib/bcdice/game_system/PhantasmAdventure.rb +73 -0
  181. data/lib/bcdice/game_system/Postman.rb +185 -0
  182. data/lib/bcdice/game_system/PulpCthulhu.rb +184 -0
  183. data/lib/bcdice/game_system/Raisondetre.rb +171 -0
  184. data/lib/bcdice/game_system/RecordOfLodossWar.rb +58 -0
  185. data/lib/bcdice/game_system/RecordOfSteam.rb +149 -0
  186. data/lib/bcdice/game_system/RokumonSekai2.rb +110 -0
  187. data/lib/bcdice/game_system/RoleMaster.rb +24 -0
  188. data/lib/bcdice/game_system/RuneQuest.rb +47 -0
  189. data/lib/bcdice/game_system/RyuTuber.rb +266 -0
  190. data/lib/bcdice/game_system/Ryutama.rb +199 -0
  191. data/lib/bcdice/game_system/SRS.rb +348 -0
  192. data/lib/bcdice/game_system/SamsaraBallad.rb +111 -0
  193. data/lib/bcdice/game_system/Satasupe.rb +1173 -0
  194. data/lib/bcdice/game_system/ScreamHighSchool.rb +128 -0
  195. data/lib/bcdice/game_system/SevenFortressMobius.rb +34 -0
  196. data/lib/bcdice/game_system/ShadowRun.rb +26 -0
  197. data/lib/bcdice/game_system/ShadowRun4.rb +49 -0
  198. data/lib/bcdice/game_system/ShadowRun5.rb +80 -0
  199. data/lib/bcdice/game_system/SharedFantasia.rb +69 -0
  200. data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +85 -0
  201. data/lib/bcdice/game_system/ShinkuuGakuen.rb +506 -0
  202. data/lib/bcdice/game_system/ShinobiGami.rb +680 -0
  203. data/lib/bcdice/game_system/ShoujoTenrankai.rb +677 -0
  204. data/lib/bcdice/game_system/Skynauts.rb +324 -0
  205. data/lib/bcdice/game_system/SteamPunkers.rb +485 -0
  206. data/lib/bcdice/game_system/StellarKnights.rb +856 -0
  207. data/lib/bcdice/game_system/SterileLife.rb +452 -0
  208. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +103 -0
  209. data/lib/bcdice/game_system/StratoShout.rb +316 -0
  210. data/lib/bcdice/game_system/StratoShout_Korean.rb +314 -0
  211. data/lib/bcdice/game_system/Strave.rb +223 -0
  212. data/lib/bcdice/game_system/SwordWorld.rb +491 -0
  213. data/lib/bcdice/game_system/SwordWorld2_0.rb +295 -0
  214. data/lib/bcdice/game_system/SwordWorld2_5.rb +121 -0
  215. data/lib/bcdice/game_system/TherapieSein.rb +93 -0
  216. data/lib/bcdice/game_system/TokumeiTenkousei.rb +96 -0
  217. data/lib/bcdice/game_system/TokyoGhostResearch.rb +122 -0
  218. data/lib/bcdice/game_system/TokyoNova.rb +19 -0
  219. data/lib/bcdice/game_system/Torg.rb +364 -0
  220. data/lib/bcdice/game_system/Torg1_5.rb +139 -0
  221. data/lib/bcdice/game_system/TorgEternity.rb +414 -0
  222. data/lib/bcdice/game_system/TrinitySeven.rb +364 -0
  223. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +287 -0
  224. data/lib/bcdice/game_system/TwilightGunsmoke.rb +527 -0
  225. data/lib/bcdice/game_system/Utakaze.rb +153 -0
  226. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +132 -0
  227. data/lib/bcdice/game_system/Villaciel.rb +555 -0
  228. data/lib/bcdice/game_system/WARPS.rb +33 -0
  229. data/lib/bcdice/game_system/WaresBlade.rb +34 -0
  230. data/lib/bcdice/game_system/Warhammer.rb +336 -0
  231. data/lib/bcdice/game_system/WitchQuest.rb +275 -0
  232. data/lib/bcdice/game_system/WorldOfDarkness.rb +135 -0
  233. data/lib/bcdice/game_system/YankeeYogSothoth.rb +440 -0
  234. data/lib/bcdice/game_system/YearZeroEngine.rb +134 -0
  235. data/lib/bcdice/game_system/ZettaiReido.rb +142 -0
  236. data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +383 -0
  237. data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +89 -0
  238. data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +196 -0
  239. data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +223 -0
  240. data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +214 -0
  241. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +610 -0
  242. data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +117 -0
  243. data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +380 -0
  244. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +184 -0
  245. data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +417 -0
  246. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +912 -0
  247. data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +121 -0
  248. data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +67 -0
  249. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +166 -0
  250. data/lib/bcdice/game_system/one_way_heroics/tables.rb +668 -0
  251. data/lib/bcdice/loader.rb +37 -0
  252. data/lib/bcdice/normalize.rb +38 -0
  253. data/lib/bcdice/preprocessor.rb +87 -0
  254. data/lib/bcdice/randomizer.rb +137 -0
  255. data/lib/bcdice/repl.rb +155 -0
  256. data/lib/bcdice/user_defined_dice_table.rb +153 -0
  257. data/lib/bcdice/version.rb +3 -0
  258. metadata +304 -0
@@ -0,0 +1,506 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class ShinkuuGakuen < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'ShinkuuGakuen'
8
+
9
+ # ゲームシステム名
10
+ NAME = '真空学園'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'しんくうかくえん'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~MESSAGETEXT
17
+ ・判定
18
+ RLx:技能ベースxで技能チェックのダイスロール
19
+ RLx>=y:この書式なら目標値 y で判定結果出力
20
+  例)RL10  RL22>=50
21
+
22
+ ・武器攻撃
23
+ (武器記号)(技能ベース値)
24
+  例)SW10 BX30
25
+ 武器を技能ベースでダイスロール。技発動までチェック。
26
+ 武器記号は以下の通り
27
+  SW:剣、LS:大剣、SS:小剣、SP:槍、
28
+  AX:斧、CL:棍棒、BW:弓、MA:体術、
29
+  BX:ボクシング、PR:プロレス、ST:幽波紋
30
+
31
+ ・カウンター攻撃
32
+ カウンター技は武器記号の頭に「C」をつけるとロール可能。
33
+  例)CSW10 CBX76
34
+ MESSAGETEXT
35
+
36
+ register_prefix([
37
+ 'CRL.*', 'CSW.*', 'CLS.*', 'CSS.*', 'CSP.*', 'CAX.*', 'CCL.*', 'CMA.*', 'CBX.*', 'CPR.*', 'CST.*',
38
+ 'RL.*', 'SW.*', 'LS.*', 'SS.*', 'SP.*', 'AX.*', 'CL.*', 'BW.*', 'MA.*', 'BX.*', 'PR.*', 'ST.*'
39
+ ])
40
+
41
+ def eval_game_system_specific_command(command)
42
+ m = /^([A-Z]+)([\+\-]?\d+)?(?:>=(\d+))?$/i.match(command)
43
+ unless m
44
+ return nil
45
+ end
46
+
47
+ weaponCommand = m[1]
48
+ base = m[2].to_i
49
+ diff = m[3]
50
+
51
+ weaponInfo = getWeaponTable(weaponCommand)
52
+ output_msg = rollJudge(base, diff, weaponInfo)
53
+
54
+ return output_msg
55
+ end
56
+
57
+ def rollJudge(base, diff, weaponInfo)
58
+ debug("rollJudge base", base)
59
+ debug("rollJudge diff", diff)
60
+
61
+ weaponName = weaponInfo[:name]
62
+ weaponTable = weaponInfo[:table]
63
+
64
+ diceList = getJudgeDiceList
65
+ total = diceList.sum()
66
+ allTotal = total + base
67
+
68
+ diffText = diff.nil? ? "" : ">=#{diff}"
69
+ result = "(#{weaponName}:#{base}#{diffText}) > 1D100+#{base} > #{total}"
70
+ result += "[#{diceList.join(',')}]" if diceList.length >= 2
71
+ result += "+#{base}"
72
+ result += " > #{allTotal}"
73
+ result += getSuccessText(allTotal, diff, diceList, weaponTable)
74
+ result += getWeaponSkillText(weaponTable, diceList.max)
75
+
76
+ debug("check_1D100 result", result)
77
+
78
+ return result
79
+ end
80
+
81
+ def getJudgeDiceList
82
+ diceList = []
83
+ loop do
84
+ value = @randomizer.roll_once(100)
85
+ diceList << value
86
+
87
+ rank01 = value % 10
88
+ debug("rank01", rank01)
89
+
90
+ break unless rank01 == 0
91
+ end
92
+
93
+ return diceList
94
+ end
95
+
96
+ def getSuccessText(allTotal, diff, diceList, isWeapon)
97
+ first = diceList.first
98
+ return '' if first.nil?
99
+
100
+ return " > ファンブル" if first <= 9
101
+
102
+ if diff.nil? && (first != 10)
103
+ return ''
104
+ end
105
+
106
+ result = ''
107
+ skillText = getSkillText(first, diff, isWeapon)
108
+ result += skillText
109
+
110
+ unless diff.nil?
111
+ result += ' > ' if skillText.empty?
112
+
113
+ success = (allTotal >= diff.to_i ? "成功" : "失敗")
114
+ result += success.to_s
115
+ end
116
+
117
+ return result
118
+ end
119
+
120
+ def getSkillText(first, diff, isWeapon)
121
+ result = ''
122
+ return result if isWeapon
123
+
124
+ result = ' > '
125
+ return result unless first == 10
126
+
127
+ result += "技能なし:ファンブル"
128
+
129
+ return result if diff.nil?
130
+
131
+ result += "/技能あり:"
132
+
133
+ return result\
134
+ end
135
+
136
+ def getWeaponTable(weaponCommand)
137
+ debug('getWeaponTable weaponCommand', weaponCommand)
138
+
139
+ case weaponCommand.upcase
140
+ when 'SW'
141
+ return getWeaponTableSword
142
+ when 'CSW'
143
+ return getWeaponTableSwordCounter
144
+ when 'LS'
145
+ return getWeaponTableLongSword
146
+ when 'CLS'
147
+ return getWeaponTableLongSwordCounter
148
+ when 'SS'
149
+ return getWeaponTableShortSword
150
+ when 'CSS'
151
+ return getWeaponTableShortSwordCounter
152
+ when 'SP'
153
+ return getWeaponTableSpear
154
+ when 'CSP'
155
+ return getWeaponTableSpearCounter
156
+ when 'AX'
157
+ return getWeaponTableAx
158
+ when 'CAX'
159
+ return getWeaponTableAxCounter
160
+ when 'CL'
161
+ return getWeaponTableClub
162
+ when 'CCL'
163
+ return getWeaponTableClubCounter
164
+ when 'BW'
165
+ return getWeaponTableBow
166
+ when 'MA'
167
+ return getWeaponTableMartialArt
168
+ when 'CMA'
169
+ return getWeaponTableMartialArtCounter
170
+ when 'BX'
171
+ return getWeaponTableBoxing
172
+ when 'CBX'
173
+ return getWeaponTableBoxingCounter
174
+ when 'PR'
175
+ return getWeaponTableProWrestling
176
+ when 'CPR'
177
+ return getWeaponTableProWrestlingCounter
178
+ when 'ST'
179
+ return getWeaponTableStand
180
+ when 'CST'
181
+ return getWeaponTableStandCounter
182
+ end
183
+
184
+ return {name: '判定', table: nil}
185
+ end
186
+
187
+ def getWeaponTableSword
188
+ {name: '剣',
189
+ table: [[11, '失礼剣', '成功度+5'],
190
+ [22, '隼斬り', '回避不可'],
191
+ [33, 'みじん斬り', '攻撃量2倍'],
192
+ [44, '天地二段', '2連続攻撃'],
193
+ [55, '波動剣', 'カウンター不可、B・D'],
194
+ [66, '疾風剣', '攻撃量3倍、盾受けー100'],
195
+ [77, '残像剣', '全体攻撃、B・D'],
196
+ [88, '五月雨斬り」', '回避不可.ダメージ3倍'],
197
+ [99, 'ライジングノヴア」', '2連続攻撃・2撃目敵無防備、B・D'],
198
+ [0, '光速剣', '攻撃量3倍、盾受け不可、カウンター不可、B・D'],]}
199
+ end
200
+
201
+ def getWeaponTableSwordCounter
202
+ {name: '剣カウンター',
203
+ table: [[33, 'パリィ', '攻撃の無効化'],
204
+ [44, nil, nil],
205
+ [55, nil, nil],
206
+ [66, 'かすみ青眼', 'カウンター'],
207
+ [77, nil, nil],
208
+ [88, nil, nil],
209
+ [99, nil, nil],
210
+ [0, '不動剣', 'クロスカウンター、B・D、ダメージ2倍'],]}
211
+ end
212
+
213
+ def getWeaponTableLongSword
214
+ {name: '大剣',
215
+ table: [[11, 'スマッシュ', '敵防御半分'],
216
+ [22, '峰打ち', '麻痺硬化「根性」0'],
217
+ [33, '水鳥剣', '敵防御判定ー50'],
218
+ [44, 'ブルクラッシュ', '敵防御力無視'],
219
+ [55, '逆風の太刀', 'カウンター不可、ダメージ2倍'],
220
+ [66, '濁流剣', '回避不可、カウンター不可、B・D'],
221
+ [77, '清流剣', '回避不可、カウンター不可、B・D'],
222
+ [88, '燕返し', '2連続攻撃・2撃目カウンター不可、B・D'],
223
+ [99, '地ずり残月', '盾受け不可、ダメージ3倍、B・D'],
224
+ [0, '乱れ雪月花', '3連続攻撃・三撃目敵無防備、ダメージ3倍、防御力無視、B・D'],]}
225
+ end
226
+
227
+ def getWeaponTableLongSwordCounter
228
+ {name: '大剣カウンター',
229
+ table: [[22, '無形の位', '攻撃の無効化'],
230
+ [33, nil, nil],
231
+ [44, nil, nil],
232
+ [55, '双破', 'クロスカウンター、B・D'],
233
+ [66, nil, nil],
234
+ [77, nil, nil],
235
+ [88, '喪心無想', 'カウンター、攻撃量6倍'],
236
+ [99, nil, nil],
237
+ [0, nil, nil],]}
238
+ end
239
+
240
+ def getWeaponTableShortSword
241
+ {name: '小剣',
242
+ table: [[11, '乱れ突き', '2連続攻撃'],
243
+ [22, 'フェイクタング', 'スタン効果「注意力」5'],
244
+ [33, 'マインドステア', '麻痺効果「注意力」0'],
245
+ [44, 'サイドワインダー', '成功度+3、盾受け不可'],
246
+ [55, 'スクリュードライバー', '防御力無視、ダメージ2倍'],
247
+ [66, 'ニードルロンド', '3連続攻撃'],
248
+ [77, 'プラズマブラスト', '麻痺効果「根性」0、B・D'],
249
+ [88, 'サザンクロス', '麻痺効果「根性」5、攻撃量2倍'],
250
+ [99, 'ファイナルレター', '気絶効果「根性」0、回避不可、カウンター不可、B・D'],
251
+ [0, '百花繚乱', '回避不可、盾受け不可、攻撃量3倍、B・D'],]}
252
+ end
253
+
254
+ def getWeaponTableShortSwordCounter
255
+ {name: '小剣カウンター',
256
+ table: [[11, 'リポスト', 'カウンター'],
257
+ [22, nil, nil],
258
+ [33, nil, nil],
259
+ [44, nil, nil],
260
+ [55, nil, nil],
261
+ [66, nil, nil],
262
+ [77, nil, nil],
263
+ [88, 'マタドール', 'カウンター、麻痺効果「注意力」5'],
264
+ [99, nil, nil],
265
+ [0, 'マリオネット', '攻撃の相手を変える'],]}
266
+ end
267
+
268
+ def getWeaponTableSpear
269
+ {name: '槍',
270
+ table: [[11, 'チャージ', 'ダメージ1.5倍、盾受けー30'],
271
+ [22, '稲妻突き', '回避不可'],
272
+ [33, '脳削り', '麻痺効果「根性」0'],
273
+ [44, '大車輪', '全体攻撃'],
274
+ [55, '狂乱撃', '二回攻撃'],
275
+ [66, 'スパイラルチャージ', '盾受け不可、ダメージ2倍、B・D'],
276
+ [77, '双龍波', 'スタン効果「注意力」5、盾受け不可、B・D'],
277
+ [88, '流星衝', 'カウンター不可、ダメージ3倍、次行動まで攻撃対象にならない'],
278
+ [99, 'ランドスライサー', '全体攻撃、回避不可、カウンター不可、B・D'],
279
+ [0, '無双三段', '三段攻撃、二段目B・D、三段目ダメージ2倍、B・D'],]}
280
+ end
281
+
282
+ def getWeaponTableSpearCounter
283
+ {name: '槍カウンター',
284
+ table: [[55, '風車', 'カウンター、ダメージ2倍'],
285
+ [66, nil, nil],
286
+ [77, nil, nil],
287
+ [88, nil, nil],
288
+ [99, nil, nil],
289
+ [0, nil, nil],]}
290
+ end
291
+
292
+ def getWeaponTableAx
293
+ {name: '斧',
294
+ table: [[11, '一人時間差', '防御行動ー100'],
295
+ [22, 'トマホーク', 'カウンター不可'],
296
+ [33, '大木断', 'ダメージ2倍'],
297
+ [44, 'ブレードロール', '全体攻撃'],
298
+ [55, 'マキ割りスペシャル', '盾受け不可、B・D'],
299
+ [66, 'ヨーヨー', 'カウンター不可、2連続攻撃'],
300
+ [77, 'メガホーク', 'カウンター不可、全体攻撃、攻撃量2倍'],
301
+ [88, 'デッドリースピン', '回避不可、攻撃量5倍'],
302
+ [99, 'マキ割りダイナミック', '盾受け不可、ダメージ2倍、B・D、ターンの最後に命中'],
303
+ [0, '高速ナブラ', '回避不可、カウンター不可、攻撃量3倍、B・D'],]}
304
+ end
305
+
306
+ def getWeaponTableAxCounter
307
+ {name: '斧カウンター',
308
+ table: [[44, '真っ向唐竹割り', 'クロスカウンター、B・D'],
309
+ [55, nil, nil],
310
+ [66, nil, nil],
311
+ [77, nil, nil],
312
+ [88, nil, nil],
313
+ [99, nil, nil],
314
+ [0, nil, nil],]}
315
+ end
316
+
317
+ def getWeaponTableClub
318
+ {name: '棍棒',
319
+ table: [[11, 'ハードヒット', '防御力無視'],
320
+ [22, 'ダブルヒット', '2連続攻撃'],
321
+ [33, '回転撃', '防御判定ー100'],
322
+ [44, '飛翔脳天撃', '麻痺効果「根性」5'],
323
+ [55, '削岩撃', '盾受け不可、攻撃量3倍'],
324
+ [66, '地裂撃', '防御力無視、カウンター不可、盾受け不可、スタン効果「注意力」0'],
325
+ [77, 'トリプルヒット', '3連続攻撃'],
326
+ [88, '亀甲羅割り', '防御力半分、盾受け不可、B・D'],
327
+ [99, '叩きつぶす', '防御力無視、防御行動、カウンター不可、B・D'],
328
+ [0, 'グランドクロス', '防御無視、盾、カウンター不可、ダメージ2倍、B・D、全体攻撃'],]}
329
+ end
330
+
331
+ def getWeaponTableClubCounter
332
+ {name: '棍棒カウンター',
333
+ table: [[11, 'ブロッキング', '攻撃の無効化'],
334
+ [22, nil, nil],
335
+ [33, nil, nil],
336
+ [44, nil, nil],
337
+ [55, nil, nil],
338
+ [66, 'ジャストミート', '飛び道具のみカウンター'],
339
+ [77, nil, nil],
340
+ [88, nil, nil],
341
+ [99, 'ホームラン', 'すべての攻撃に対するカウンター'],
342
+ [0, nil, nil],]}
343
+ end
344
+
345
+ def getWeaponTableBow
346
+ {name: '弓',
347
+ table: [[11, '影縫い', '麻痺効果「注意力」0'],
348
+ [22, 'アローレイン', '全体攻撃・回避ー50'],
349
+ [33, '速射', '2連続攻撃'],
350
+ [44, '瞬速の矢', '防御不可'],
351
+ [55, 'バラージシュート', '全体攻撃・盾受け不可・攻撃量2倍'],
352
+ [66, '貫きの矢', '防御力無視、B・D'],
353
+ [77, '落鳳波', '回避不可、B・D'],
354
+ [88, '皆死ね矢', '全体攻撃、気絶効果「根性」5'],
355
+ [99, 'ミリオンダラー', '三連続攻撃'],
356
+ [0, '夢想弓', 'B・D、ダメージ3倍'],]}
357
+ end
358
+
359
+ def getWeaponTableMartialArt
360
+ {name: '体術',
361
+ table: [[11, '集気法', '通常ダメージ分自分のHP回復'],
362
+ [22, 'コンビネーション', '2連続攻撃'],
363
+ [33, '逆一本', '盾受け不可、防御力半分、スタン効果「根性」0'],
364
+ [44, 'コークスクリューブロー', '防御力無視、ダメージ3倍'],
365
+ [55, '練気拳', '全体攻撃・回避不可'],
366
+ [66, 'バベルクランプル', '盾受け不可、B・D'],
367
+ [77, 'マシンガンジャブ', '3連続攻撃'],
368
+ [88, 'ナイアガラフォール', '盾受け不可、B・D、ダメージ2倍'],
369
+ [99, '羅刹掌', '防御力無視、防御不可、B・D、ダメージ3倍'],
370
+ [0, '千手観音', '5連続攻撃、すべてカウンター不可'],]}
371
+ end
372
+
373
+ def getWeaponTableMartialArtCounter
374
+ {name: '体術カウンター',
375
+ table: [[11, 'スウェイバック', '攻撃の無効化'],
376
+ [22, nil, nil],
377
+ [33, '当て身投げ', 'カウンター'],
378
+ [44, nil, nil],
379
+ [55, nil, nil],
380
+ [66, 'ジョルトカウンター', 'クロスカウンター、B・D'],
381
+ [77, nil, nil],
382
+ [88, nil, nil],
383
+ [99, 'ガードキャンセル', 'D10で振った必殺技によるカウンター' + getRandMartialArtCounter],
384
+ [0, nil, nil],]}
385
+ end
386
+
387
+ def getRandMartialArtCounter
388
+ value = @randomizer.roll_once(10)
389
+ dice = value * 10 + value
390
+ dice = 100 if value == 110
391
+
392
+ tableInfo = getWeaponTableMartialArt
393
+ weaponTable = tableInfo[:table]
394
+
395
+ result = " > (#{value})"
396
+ result += getWeaponSkillText(weaponTable, dice)
397
+
398
+ return result
399
+ end
400
+
401
+ def getWeaponTableBoxing
402
+ {name: 'ボクシング',
403
+ table: [[11, 'ワン・ツー', '2連続攻撃・2攻撃目盾受け、回避不可'],
404
+ [22, 'リバーブロー', '麻痺効果「根性」5'],
405
+ [33, 'フリッカー', '2連続攻撃・全て盾受け、カウンター不可'],
406
+ [44, 'コークスクリューブロー', '防御力無視、ダメージ3倍'],
407
+ [55, 'レイ・ガン', '全体攻撃、B・D、陽属性魔法攻撃'],
408
+ [66, 'ショットガンブロー', '攻撃量10倍'],
409
+ [77, 'ハートブレイクショット', '2連続攻撃・1攻撃目防御力無視、ダメージ3倍・2撃目敵無防備'],
410
+ [88, 'デンプシーロール', '3連続攻撃・全てB・D'],
411
+ [99, 'フラッシュピストンマッハパンチ', '全体攻撃、B・D、気絶効果「根性」5'],
412
+ [0, '右', '防御力無視、ダメージ10倍'],]}
413
+ end
414
+
415
+ def getWeaponTableBoxingCounter
416
+ {name: 'ボクシングカウンター',
417
+ table: [[11, 'ダッキングブロー', 'カウンター'],
418
+ [22, 'ジョルトカウンター', 'クロスカウンター、B・D'],
419
+ [33, nil, nil],
420
+ [44, nil, nil],
421
+ [55, nil, nil],
422
+ [66, nil, nil],
423
+ [77, nil, nil],
424
+ [88, nil, nil],
425
+ [99, nil, nil],
426
+ [0, 'ノーガード戦法', '攻撃の無効化、次ターン以降は自分の盾受け、回避不可、全ての攻撃にB・D'],]}
427
+ end
428
+
429
+ def getWeaponTableProWrestling
430
+ {name: 'プロレス',
431
+ table: [[11, 'ボディスラム', '盾受け不可'],
432
+ [22, 'ドロップキック', 'B・D'],
433
+ [33, '水車落とし', '盾受け不可、成功度+5'],
434
+ [44, 'ナックルアロー', 'B・D、麻痺効果「根性」5'],
435
+ [55, 'ワン・ツー・エルボー', '2連続攻撃'],
436
+ [66, 'バックドロップ', '盾受け不可、ダメージ2倍'],
437
+ [77, '投げっ放しジャーマン', '盾受け不可、防御力無視、成功度+5'],
438
+ [88, 'パワーボム', '盾受け不可、ダメージ2倍、B・D'],
439
+ [99, 'デスバレーボム', '盾受け不可、防御力無視、ダメージ2倍、気絶効果「根性」5'],
440
+ [0, 'ジャックハマー', '盾受け不可、防御力無視、ダメージ3倍、成功度+10'],]}
441
+ end
442
+
443
+ def getWeaponTableProWrestlingCounter
444
+ {name: 'プロレスカウンター',
445
+ table: [[22, 'パワースラム', 'カウンター'],
446
+ [55, 'アックスボンバー', 'カウンター、B・D'],
447
+ [66, nil, nil],
448
+ [77, nil, nil],
449
+ [88, nil, nil],
450
+ [99, nil, nil],
451
+ [0, nil, nil],]}
452
+ end
453
+
454
+ def getWeaponTableStand
455
+ {name: '幽波紋',
456
+ table: [[11, 'SILER CHARIOT', '攻撃量5倍、刺しタイプ攻撃'],
457
+ [22, 'TOWER OF GRAY', '防御力無視'],
458
+ [33, 'DARK BLUE MOON', '全体攻撃、攻撃量2倍、水属性斬りタイプ攻撃'],
459
+ [44, 'EMPEROR', '回避不可、盾受け不可、カウンター不可、飛び道具攻撃'],
460
+ [55, 'MAGICIAN\'s RED', 'ダメージ2倍、B・D、火属性魔法攻撃'],
461
+ [66, 'DEATH 13', 'ダメージ0、全体攻撃、気絶効果「根性」5'],
462
+ [77, 'HIEROPHANT GREEN', '全体攻撃、B・D、水属性攻撃'],
463
+ [88, 'VANILLA ICE CREAM', '盾受け不可、カウンター不可、防御力無視、ダメージ3倍、B・D'],
464
+ [99, 'THE WORLD', '5連続攻撃、全て敵無防備'],
465
+ [0, 'STAR PLATINUM', '攻撃量15倍、B・D'],]}
466
+ end
467
+
468
+ def getWeaponTableStandCounter
469
+ {name: '幽波紋カウンター',
470
+ table: [[11, 'ANUBIS', '技のみカウンター、ダメージ(カウンターした回数の2乗)倍、斬りタイプ攻撃'],
471
+ [22, nil, nil],
472
+ [33, nil, nil],
473
+ [44, nil, nil],
474
+ [55, nil, nil],
475
+ [66, 'YELLOW TEMPERANE', '魔法・飛び道具含めて全ての攻撃を無効化'],
476
+ [77, nil, nil],
477
+ [88, nil, nil],
478
+ [99, nil, nil],
479
+ [0, nil, nil],]}
480
+ end
481
+
482
+ def getWeaponSkillText(weaponTable, dice)
483
+ debug('getWeaponSkillText', dice)
484
+
485
+ return '' if weaponTable.nil?
486
+
487
+ preName = ''
488
+ preEffect = ''
489
+
490
+ weaponTable.each do |index, name, effect|
491
+ name ||= preName
492
+ preName = name
493
+
494
+ effect ||= preEffect
495
+ preEffect = effect
496
+
497
+ next unless index == (dice % 100)
498
+
499
+ return " > 「#{name}」#{effect}"
500
+ end
501
+
502
+ return ''
503
+ end
504
+ end
505
+ end
506
+ end