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,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class Gundog < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'Gundog'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'ガンドッグ'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'かんとつく'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
+ 失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。
18
+ nD9ロールも対応。
19
+ INFO_MESSAGE_TEXT
20
+
21
+ def initialize(command)
22
+ super(command)
23
+ @enabled_d9 = true
24
+ end
25
+
26
+ # ゲーム別成功度判定(1d100)
27
+ def check_1D100(total, _dice_total, cmp_op, target)
28
+ return '' if target == '?'
29
+ return '' unless cmp_op == :<=
30
+
31
+ if total >= 100
32
+ " > ファンブル"
33
+ elsif total <= 1
34
+ " > 絶対成功(達成値1+SL)"
35
+ elsif total <= target
36
+ dig10 = total / 10
37
+ dig1 = total - dig10 * 10
38
+ dig10 = 0 if dig10 >= 10
39
+ dig1 = 0 if dig1 >= 10 # 条件的にはあり得ない(笑
40
+
41
+ if dig1 <= 0
42
+ " > クリティカル(達成値20+SL)"
43
+ else
44
+ " > 成功(達成値#{(dig10 + dig1)}+SL)"
45
+ end
46
+ else
47
+ " > 失敗"
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,294 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/game_system/Gundog'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class GundogRevised < Base
8
+ # ゲームシステムの識別子
9
+ ID = 'GundogRevised'
10
+
11
+ # ゲームシステム名
12
+ NAME = 'ガンドッグ・リヴァイズド'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = 'かんとつくりうあいすと'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
19
+ 失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。
20
+ nD9ロールも対応。
21
+ ・ダメージペナルティ表  (~DPTx) (x:修正)
22
+  射撃(SDPT)、格闘(MDPT)、車両(VDPT)、汎用(GDPT)の各表を引くことが出来ます。
23
+  修正を後ろに書くことも出来ます。
24
+ ・ファンブル表      (~FTx) (x:修正)
25
+  射撃(SFT)、格闘(MFT)、投擲(TFT)の各表を引くことが出来ます。
26
+  修正を後ろに書くことも出来ます。
27
+ INFO_MESSAGE_TEXT
28
+
29
+ register_prefix(['(.DPT|.FT)(\+|\-)?\d*'])
30
+
31
+ def initialize(command)
32
+ super(command)
33
+ @enabled_d9 = true
34
+ end
35
+
36
+ # ---- 以降、Gundog.rbよりほぼコピペ(絶対成功→ベアリーに用語変更対応の為、継承だと不都合)
37
+ # ゲーム別成功度判定(1d100)
38
+ def check_1D100(total, _dice_total, cmp_op, target)
39
+ return '' if target == '?'
40
+ return '' unless cmp_op == :<=
41
+
42
+ if total >= 100
43
+ " > ファンブル"
44
+ elsif total <= 1
45
+ " > ベアリー(達成値1+SL)"
46
+ elsif total <= target
47
+ dig10 = total / 10
48
+ dig1 = total - dig10 * 10
49
+ dig10 = 0 if dig10 >= 10
50
+ dig1 = 0 if dig1 >= 10 # 条件的にはあり得ない(笑
51
+
52
+ if dig1 <= 0
53
+ " > クリティカル(達成値20+SL)"
54
+ else
55
+ " > 成功(達成値#{(dig10 + dig1)}+SL)"
56
+ end
57
+ else
58
+ " > 失敗"
59
+ end
60
+ end
61
+
62
+ def eval_game_system_specific_command(command)
63
+ string = command.upcase
64
+
65
+ table = []
66
+ ttype = ""
67
+ type = ""
68
+ mod = 0
69
+
70
+ # ダメージペナルティ表
71
+ if /(\w)DPT([\+\-\d]*)/i =~ string
72
+ ttype = 'ダメージペナルティー'
73
+ head = Regexp.last_match(1)
74
+ mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
75
+
76
+ type, table = getDamageTypeAndTable(head)
77
+ end
78
+
79
+ # ファンブル表
80
+ if /(\w)FT([\+\-\d]*)/i =~ string
81
+ ttype = 'ファンブル'
82
+ head = Regexp.last_match(1)
83
+ mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
84
+
85
+ type, table = getFumbleTypeAndTable(head)
86
+ end
87
+
88
+ return '1' if type.empty?
89
+
90
+ diceArray = @randomizer.roll_barabara(2, 10)
91
+ dice = mod + diceArray.select { |x| x < 10 }.sum()
92
+
93
+ diceOriginalText = dice
94
+ dice = 0 if dice < 0
95
+ dice = 18 if dice > 18
96
+
97
+ output = "#{type}#{ttype}表[#{diceOriginalText}] > #{table[dice]}"
98
+
99
+ return output
100
+ end
101
+
102
+ def getDamageTypeAndTable(head)
103
+ case head
104
+ when "S"
105
+ type = '射撃'
106
+ # 射撃ダメージペナルティー表
107
+ table = [
108
+ '対象は[死亡]', # 0
109
+ '[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15', # 1
110
+ '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2
111
+ '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]13', # 3
112
+ '[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12', # 4
113
+ '[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]11', # 5
114
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]11', # 6
115
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]10', # 7
116
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 8
117
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 9
118
+ '[追加D]2D6/[軽傷]-10%/[朦朧判定]4', # 10
119
+ '[追加D]2D6/[軽傷]-20%', # 11
120
+ '[追加D]1D6/[軽傷]-20%', # 12
121
+ '[追加D]1D6/[軽傷]-10%', # 13
122
+ '[ショック]-20%', # 14
123
+ '[ショック]-10%', # 15
124
+ '[不安定]', # 16
125
+ '手に持った武器を落とす。複数ある場合はランダム', # 17
126
+ 'ペナルティー無し', # 18
127
+ ]
128
+
129
+ when "M"
130
+ type = '格闘'
131
+ # 格闘ダメージペナルティー表
132
+ table = [
133
+ '対象は[死亡]', # 0
134
+ '[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15', # 1
135
+ '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2
136
+ '[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]14/[不安定]', # 3
137
+ '[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]14', # 4
138
+ '[追加D]2D6/[重傷]-20%/[朦朧判定]12/[不安定]', # 5
139
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]11', # 6
140
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]10', # 7
141
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 8
142
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 9
143
+ '[追加D]1D6/[軽傷]-20%/[朦朧判定]6', # 10
144
+ '[追加D]1D6/[軽傷]-10%/[朦朧判定]6', # 11
145
+ '[追加D]1D6/[軽傷]-10%/[不安定]', # 12
146
+ '[追加D]1D6/[軽傷]-10%', # 13
147
+ '[ショック]-20%', # 14
148
+ '[ショック]-10%', # 15
149
+ '[不安定]', # 16
150
+ '手に持った武器を落とす。複数ある場合はランダム', # 17
151
+ 'ペナルティー無し', # 18
152
+ ]
153
+
154
+ when "V"
155
+ type = '車両'
156
+ # 車両ダメージペナルティー表
157
+ table = [
158
+ '[クラッシュ]する。[チェイス]から除外', # 0
159
+ '[車両D]4D6/[乗員D]3D6/[操作性]-40%/[スピン判定]', # 1
160
+ '[車両D]3D6/[乗員D]3D6/[操作性]-30%/[スピン判定]', # 2
161
+ '[乗員D]3D6/[操作性]-20%/[スピン判定]', # 3
162
+ '[乗員D]3D6/[操作性]-20%/[スピン判定]', # 4
163
+ '[乗員D]3D6/[操作性]-10%/[スピン判定]', # 5
164
+ '[乗員D]3D6/[操作性]-10%/[スピン判定]', # 6
165
+ '[乗員D]2D6/[スピード]-2/[スピン判定]', # 7
166
+ '[乗員D]2D6/[スピード]-2/[スピン判定]', # 8
167
+ '[乗員D]2D6/[操縦判定]-20%/[スピン判定]', # 9
168
+ '[乗員D]2D6/[操縦判定]-20%/[スピン判定]', # 10
169
+ '[乗員D]2D6/[操縦判定]-20%', # 11
170
+ '[乗員D]2D6/[操縦判定]-20%', # 12
171
+ '[乗員D]1D6/[操縦判定]-20%', # 13
172
+ '[乗員D]1D6/[操縦判定]-10%', # 14
173
+ '攻撃が乗員をかすめる。ランダムな乗員1人に[ショック]-20%', # 15
174
+ '攻撃が乗員に当たりかける。ランダムな乗員1人に[ショック]-10%', # 16
175
+ '車両が蛇行。乗員全員は〈運動〉判定。失敗で[不安定]', # 17
176
+ 'ペナルティー無し', # 18
177
+ ]
178
+
179
+ when "G"
180
+ type = '汎用'
181
+ # 汎用ダメージペナルティー表
182
+ table = [
183
+ '対象は[死亡]', # 0
184
+ '[追加D]4D6/[出血]2D6/[重傷]-40%/[朦朧判定]15', # 1
185
+ '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2
186
+ '[追加D]2D6/[出血]1D6/[重傷]-30%/[朦朧判定]13/[不安定]', # 3
187
+ '[追加D]2D6/[出血]1D6/[重傷]-30%/[朦朧判定]12', # 4
188
+ '[追加D]2D6/[重傷]-20%/[朦朧判定]12/[不安定]', # 5
189
+ '[追加D]1D6/[重傷]-20%/[朦朧判定]11', # 6
190
+ '[追加D]1D6/[軽傷]-30%/[朦朧判定]10', # 7
191
+ '[追加D]1D6/[軽傷]-30%/[朦朧判定]8', # 8
192
+ '[追加D]1D6/[軽傷]-30%/[朦朧判定]6', # 9
193
+ '[追加D]1D6/[軽傷]-20%/[朦朧判定]6', # 10
194
+ '[軽傷]-20%/[朦朧判定]6', # 11
195
+ '[軽傷]-20%/[不安定]', # 12
196
+ '[軽傷]-20%', # 13
197
+ '[軽傷]-10%', # 14
198
+ '[ショック]-20%', # 15
199
+ '[ショック]-10%', # 16
200
+ '[不安定]', # 17
201
+ 'ペナルティー無し', # 18
202
+ ]
203
+ else
204
+ head = "S" # 間違ったら射撃扱い
205
+ type, table = getDamageTypeAndTable(head)
206
+ end
207
+
208
+ return type, table
209
+ end
210
+
211
+ def getFumbleTypeAndTable(head)
212
+ case head
213
+ when "S"
214
+ type = '射撃'
215
+ # 射撃ファンブル表
216
+ table = [
217
+ '銃器が暴発、自分に命中。[貫通D]。武装喪失', # 0
218
+ '銃器が暴発、自分に命中。[非貫通D]。武装喪失', # 1
219
+ '誤射。射線に最も近い味方に命中。[貫通D]', # 2
220
+ '誤射。射線に最も近い味方に命中。[非貫通D]', # 3
221
+ '銃器が完全に故障。直せない', # 4
222
+ '故障。30分かけて〈メカニック〉判定に成功するまで使用不可。', # 5
223
+ '故障。〈メカニック〉-20%の判定に成功するまで使用不可。', # 6
224
+ '故障。〈メカニック〉判定に成功するまで射撃不可', # 7
225
+ '作動不良。[アイテム使用]を2回行って修理するまで射撃不可', # 8
226
+ '作動不良。[アイテム使用]を行って修理するまで射撃不可', # 9
227
+ '足がもつれて倒れる。[転倒]', # 10
228
+ '無理な射撃姿勢で腕を痛める。[軽傷]-20%', # 11
229
+ '無理な射撃姿勢でどこかの筋を痛める。[軽傷]-10%', # 12
230
+ '武装を落とす。スリング(肩ひも)も切れる', # 13
231
+ '武装を落とす。スリング(肩ひも)があれば落とさない', # 14
232
+ '排莢された薬莢が服の中に。[ショック]-20%', # 15
233
+ '排莢された薬莢が顔に当たる。[ショック]-10%', # 16
234
+ '薬莢を踏んで態勢を崩す。[不安定]', # 17
235
+ 'ペナルティー無し', # 18
236
+ ]
237
+ when "M"
238
+ type = '格闘'
239
+ # 格闘ファンブル表
240
+ table = [
241
+ '自分に命中。[貫通D]', # 0
242
+ '自分に命中。[非貫通D]', # 1
243
+ '最も近い味方(射程内にいなければ自分)に[貫通D]', # 2
244
+ '最も近い味方(射程内にいなければ自分)に[非貫通D]', # 3
245
+ '頭を強く打ちつける。[朦朧]', # 4
246
+ '武装が壊れる。直せない。[格闘タイプ]なら[重傷]-20%', # 5
247
+ '武装がすっぽ抜ける。グレネードの誤差で落下先を決定', # 6
248
+ '武装が損傷。30分かけて〈手先〉判定に成功するまで使用不可。[格闘タイプ]なら[重傷]-10%', # 7
249
+ '武装がガタつく。〈手先〉判定([格闘タイプ]なら〈強靭〉)に成功するまで使用不可。', # 8
250
+ '武装に違和感。[アイテム使用]を行って調整するまで、命中率-20%', # 9
251
+ '足がもつれる。[転倒]', # 10
252
+ '足がつる。2[ラウンド]の間、移動距離1/2', # 11
253
+ '無理な体勢で腕(あるいは脚)を痛める。[軽傷]-20%', # 12
254
+ '無理な体勢でどこかの筋を痛める。[軽傷]-10%', # 13
255
+ '武装を落とす', # 14
256
+ '武装で自分が負傷。[ショック]-20%', # 15
257
+ '武装の扱いを間違える。[ショック]-10%', # 16
258
+ '攻撃を避けられて体勢を崩す。[不安定]', # 17
259
+ 'ペナルティー無し', # 18
260
+ ]
261
+ when "T"
262
+ type = '投擲'
263
+ # 投擲ファンブル表
264
+ table = [
265
+ '勢いをつけすぎて転倒し、頭を打つ。[気絶]', # 0
266
+ '自分に命中。(手榴弾なら自分の足元に落ちる)[貫通D]', # 1
267
+ '自分に命中。(手榴弾なら自分の足元に落ちる)[非貫通D]', # 2
268
+ '暴投。射線に最も近い味方に命中。[貫通D]。手榴弾なら新たな中心点からさらに誤差が生じる', # 3
269
+ '暴投。射線に最も近い味方に命中。[非貫通D]。手榴弾なら新たな中心点からさらに誤差が生じる', # 4
270
+ '頭を強く打ちつける。[朦朧]', # 5
271
+ '肩の筋肉断裂。この腕を使う判定に、[重傷]-20%', # 6
272
+ 'ヒジの筋肉断裂。この腕を使う判定に、[重傷]-10%', # 7
273
+ '肩の筋をひどく痛める。〈医療〉判定に成功するまで、この腕を使う判定に-20%', # 8
274
+ '肩の筋を痛める。[行動]を使って休めるまで、この腕を使う判定に-20%', # 9
275
+ '腰を痛める。[軽傷]-30%', # 10
276
+ '足がもつれて倒れる。[転倒]', # 11
277
+ '足がつる。2[ラウンド]の間、移動距離1/2', # 12
278
+ '無理な投擲体勢で腕(あるいは脚)を痛める。[軽傷]-20%', # 13
279
+ '無理な投擲体勢でどこかの筋を痛める。[軽傷]-10%', # 14
280
+ '肩に違和感。[ショック]-20%', # 15
281
+ 'ヒジに違和感。[ショック]-10%', # 16
282
+ 'つまずいて姿勢を崩す。[不安定]', # 17
283
+ 'ペナルティー無し', # 18
284
+ ]
285
+ else
286
+ head = "S" # 間違ったら射撃扱い
287
+ type, table = getFumbleTypeAndTable(head)
288
+ end
289
+
290
+ return type, table
291
+ end
292
+ end
293
+ end
294
+ end
@@ -0,0 +1,261 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/game_system/Gundog'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class GundogZero < Gundog
8
+ # ゲームシステムの識別子
9
+ ID = 'GundogZero'
10
+
11
+ # ゲームシステム名
12
+ NAME = 'ガンドッグゼロ'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = 'かんとつくせろ'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
19
+ 失敗、成功、クリティカル、ファンブルとロールの達成値の自動判定を行います。
20
+ nD9ロールも対応。
21
+ ・ダメージペナルティ表  (〜DPTx) (x:修正)
22
+  射撃(SDPT)、格闘(MDPT)、車両(VDPT)、汎用(GDPT)の各表を引くことが出来ます。
23
+  修正を後ろに書くことも出来ます。
24
+ ・ファンブル表      (〜FTx) (x:修正)
25
+  射撃(SFT)、格闘(MFT)、投擲(TFT)の各表を引くことが出来ます。
26
+  修正を後ろに書くことも出来ます。
27
+ INFO_MESSAGE_TEXT
28
+
29
+ register_prefix(['(.DPT|.FT)\d*'])
30
+
31
+ def eval_game_system_specific_command(command)
32
+ string = command.upcase
33
+
34
+ table = []
35
+ ttype = ""
36
+ type = ""
37
+ mod = 0
38
+
39
+ # ダメージペナルティ表
40
+ if /(\w)DPT([\+\-\d]*)/i =~ string
41
+ ttype = 'ダメージペナルティー'
42
+ head = Regexp.last_match(1)
43
+ mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
44
+
45
+ type, table = getDamageTypeAndTable(head)
46
+ end
47
+
48
+ # ファンブル表
49
+ if /(\w)FT([\+\-\d]*)/i =~ string
50
+ ttype = 'ファンブル'
51
+ head = Regexp.last_match(1)
52
+ mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
53
+
54
+ type, table = getFumbleTypeAndTable(head)
55
+ end
56
+
57
+ return '1' if type.empty?
58
+
59
+ dice = @randomizer.roll_index(10) + @randomizer.roll_index(10) + mod
60
+ diceOriginalText = dice
61
+ dice = 0 if dice < 0
62
+ dice = 18 if dice > 18
63
+
64
+ output = "#{type}#{ttype}表[#{diceOriginalText}] > #{table[dice]}"
65
+
66
+ return output
67
+ end
68
+
69
+ def getDamageTypeAndTable(head)
70
+ case head
71
+ when "S"
72
+ type = '射撃'
73
+ # 射撃ダメージペナルティー表
74
+ table = [
75
+ '対象は[死亡]', # 0
76
+ '[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]15', # 1
77
+ '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2
78
+ '[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14', # 3
79
+ '[追加D]3D6/[出血]1D6/[重傷]-20%/[朦朧判定]12', # 4
80
+ '[追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 5
81
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]10', # 6
82
+ '[追加D]2D6/[軽傷]-10%/[朦朧判定]10', # 7
83
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 8
84
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 9
85
+ '[追加D]2D6/[軽傷]-10%/[朦朧判定]4', # 10
86
+ '[追加D]1D6/[軽傷]-20%', # 11
87
+ '[追加D]1D6/[軽傷]-20%', # 12
88
+ '[追加D]1D6/[軽傷]-10%', # 13
89
+ '[軽傷]-20%', # 14
90
+ '[軽傷]-10%', # 15
91
+ '[軽傷]-10%', # 16
92
+ '手に持った武器を落とす', # 17
93
+ 'ペナルティー無し', # 18
94
+ ]
95
+
96
+ when "M"
97
+ type = '格闘'
98
+ # 格闘ダメージペナルティー表
99
+ table = [
100
+ '対象は[死亡]', # 0
101
+ '[追加D]3D6/[出血]2D6/[重傷]-30%/[朦朧判定]15', # 1
102
+ '[追加D]2D6/[出血]2D6/[重傷]-30%/[朦朧判定]14', # 2
103
+ '[追加D]2D6/[出血]1D6/[重傷]-20%/[朦朧判定]14', # 3
104
+ '[追加D]3D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 4
105
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]12', # 5
106
+ '[追加D]2D6/[軽傷]-10%/[朦朧判定]12', # 6
107
+ '[追加D]2D6/[軽傷]-10%/[朦朧判定]10', # 7
108
+ '[追加D]1D6/[軽傷]-20%/[朦朧判定]8', # 8
109
+ '[追加D]1D6/[軽傷]-10%/[朦朧判定]8', # 9
110
+ '[追加D]1D6/[軽傷]-10%/[朦朧判定]6', # 10
111
+ '[軽傷]-20%/[朦朧判定]6', # 11
112
+ '[軽傷]-10%/[朦朧判定]6', # 12
113
+ '[軽傷]-10%/[朦朧判定]4', # 13
114
+ '[軽傷]-20%', # 14
115
+ '[軽傷]-10%', # 15
116
+ '[軽傷]-10%', # 16
117
+ '手に持った武器を落とす', # 17
118
+ 'ペナルティー無し', # 18
119
+ ]
120
+
121
+ when "V"
122
+ type = '車両'
123
+ # 車両ダメージペナルティー表
124
+ table = [
125
+ '[クラッシュ]する。[チェイス]から除外', # 0
126
+ '[乗員D]3D6/[操縦性]-20%/[スピン判定]', # 1
127
+ '[乗員D]3D6/[操縦性]-20%/[スピン判定]', # 2
128
+ '[乗員D]2D6/[操縦性]-10%/[スピン判定]', # 3
129
+ '[乗員D]2D6/[操縦性]-10%/[スピン判定]', # 4
130
+ '[乗員D]3D6/[スピード]-2/[スピン判定]', # 5
131
+ '[乗員D]3D6/[スピード]-2/[スピン判定]', # 6
132
+ '[乗員D]2D6/[スピード]-1/[スピン判定]', # 7
133
+ '[乗員D]2D6/[スピード]-1/[スピン判定]', # 8
134
+ '[乗員D]2D6/[操縦判定]-20%', # 9
135
+ '[乗員D]2D6/[操縦判定]-20%', # 10
136
+ '[乗員D]1D6/[操縦判定]-10%', # 11
137
+ '[乗員D]1D6/[操縦判定]-10%', # 12
138
+ '[スピン判定]', # 13
139
+ '[スピン判定]', # 14
140
+ '乗員に[ショック]-20%', # 15
141
+ '乗員に[ショック]-10%', # 16
142
+ '乗員に[ショック]-10%', # 17
143
+ 'ペナルティー無し', # 18
144
+ ]
145
+
146
+ when "G"
147
+ type = '汎用'
148
+ # 汎用ダメージペナルティー表
149
+ table = [
150
+ '対象は[死亡]', # 0
151
+ '[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]18', # 1
152
+ '[追加D]4D6/[出血]2D6/[重傷]-30%/[朦朧判定]16', # 2
153
+ '[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14', # 3
154
+ '[追加D]3D6/[出血]2D6/[重傷]-20%/[朦朧判定]14', # 4
155
+ '[追加D]3D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 5
156
+ '[追加D]2D6/[出血]1D6/[重傷]-10%/[朦朧判定]12', # 6
157
+ '[追加D]2D6/[軽傷]-30%/[朦朧判定]12', # 7
158
+ '[追加D]2D6/[軽傷]-30%/[朦朧判定]10', # 8
159
+ '[追加D]2D6/[軽傷]-30%/[朦朧判定]8', # 9
160
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]8', # 10
161
+ '[追加D]2D6/[軽傷]-20%/[朦朧判定]6', # 11
162
+ '[追加D]2D6/[軽傷]-10%/[朦朧判定]6', # 12
163
+ '[追加D]1D6/[軽傷]-20%/[朦朧判定]4', # 13
164
+ '[追加D]1D6/[軽傷]-20%', # 14
165
+ '[追加D]1D6/[軽傷]-10%', # 15
166
+ '[軽傷]-20%', # 16
167
+ '[軽傷]-10%', # 17
168
+ 'ペナルティー無し', # 18
169
+ ]
170
+ else
171
+ head = "S" # 間違ったら射撃扱い
172
+ type, table = getDamageTypeAndTable(head)
173
+ end
174
+
175
+ return type, table
176
+ end
177
+
178
+ def getFumbleTypeAndTable(head)
179
+ case head
180
+ when "S"
181
+ type = '射撃'
182
+ # 射撃ファンブル表
183
+ table = [
184
+ '銃器が暴発、自分に命中。[貫通D]', # 0
185
+ '銃器が暴発、自分に命中。[非貫通D]', # 1
186
+ '誤射。ランダムに味方に命中。[貫通D]', # 2
187
+ '誤射。ランダムに味方に命中。[非貫通D]', # 3
188
+ '銃器が完全に故障', # 4
189
+ '銃器が完全に故障', # 5
190
+ '故障。〈メカニック〉判定に成功するまで射撃不可', # 6
191
+ '故障。〈メカニック〉判定に成功するまで射撃不可', # 7
192
+ '作動不良。[アイテム使用]を2回行って修理するまで射撃不可', # 8
193
+ '作動不良。[アイテム使用]を2回行って修理するまで射撃不可', # 9
194
+ '作動不良。[アイテム使用]を行って修理するまで射撃不可', # 10
195
+ '作動不良。[アイテム使用]を行って修理するまで射撃不可', # 11
196
+ '姿勢を崩す。[不安定]', # 12
197
+ '姿勢を崩す。[不安定]', # 13
198
+ '姿勢を崩す。[ショック]-20%', # 14
199
+ '姿勢を崩す。[ショック]-20%', # 15
200
+ '姿勢を崩す。[ショック]-10%', # 16
201
+ '姿勢を崩す。[ショック]-10%', # 17
202
+ 'ペナルティー無し', # 18
203
+ ]
204
+ when "M"
205
+ type = '格闘'
206
+ # 格闘ファンブル表
207
+ table = [
208
+ '避けられて[転倒]、[朦朧]状態', # 0
209
+ 'ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D]', # 1
210
+ 'ランダムに[至近距離]の味方(居なければ自分)に命中。[貫通D]', # 2
211
+ '武器が完全に壊れる', # 3
212
+ '武器がガタつく。〈手先〉判定に成功するまで使用不可', # 4
213
+ '武器がガタつく。〈手先〉判定に成功するまで使用不可', # 5
214
+ '無理な姿勢で筋を伸ばす。[軽傷]-30%', # 6
215
+ '無理な姿勢で筋を伸ばす。[軽傷]-30%', # 7
216
+ '無理な姿勢で筋を伸ばす。[軽傷]-20%', # 8
217
+ '無理な姿勢で筋を伸ばす。[軽傷]-20%', # 9
218
+ '無理な姿勢で筋を伸ばす。[軽傷]-10%', # 10
219
+ '無理な姿勢で筋を伸ばす。[軽傷]-10%', # 11
220
+ '姿勢を崩す。[不安定]', # 12
221
+ '姿勢を崩す。[不安定]', # 13
222
+ '姿勢を崩す。[ショック]-20%', # 14
223
+ '姿勢を崩す。[ショック]-20%', # 15
224
+ '姿勢を崩す。[ショック]-10%', # 16
225
+ '姿勢を崩す。[ショック]-10%', # 17
226
+ 'ペナルティー無し', # 18
227
+ ]
228
+ when "T"
229
+ type = '投擲'
230
+ # 投擲ファンブル表
231
+ table = [
232
+ '[転倒]、[朦朧]状態', # 0
233
+ '自分に命中。[貫通D]', # 1
234
+ '自分に命中。[非貫通D]', # 2
235
+ 'ランダムに味方(居なければ自分)に命中。[非貫通D]', # 3
236
+ 'ランダムに味方(居なければ自分)に命中。[非貫通D]', # 4
237
+ '武器が完全に壊れる', # 5
238
+ '武器が完全に壊れる', # 6
239
+ '腰を痛める。[軽傷]-30%', # 7
240
+ '肩を痛める。[軽傷]-20%', # 8
241
+ '肩を痛める。[軽傷]-20%', # 9
242
+ '肘に違和感。[軽傷]-10%', # 10
243
+ '肘に違和感。[軽傷]-10%', # 11
244
+ '姿勢を崩す。[不安定]', # 12
245
+ '姿勢を崩す。[不安定]', # 13
246
+ '姿勢を崩す。[ショック]-20%', # 14
247
+ '姿勢を崩す。[ショック]-20%', # 15
248
+ '姿勢を崩す。[ショック]-10%', # 16
249
+ '姿勢を崩す。[ショック]-10%', # 17
250
+ 'ペナルティー無し', # 18
251
+ ]
252
+ else
253
+ head = "S" # 間違ったら射撃扱い
254
+ type, table = getFumbleTypeAndTable(head)
255
+ end
256
+
257
+ return type, table
258
+ end
259
+ end
260
+ end
261
+ end