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,428 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class Kamigakari_Korean < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'Kamigakari:Korean'
8
+
9
+ # ゲームシステム名
10
+ NAME = '카미가카리'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = '国際化:Korean:카미가카리'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
+ ・각종표
18
+ ・감정표(ET)
19
+ ・영문소비의 댓가표(RT)
20
+ ・전기 성씨・이름 결정표(NT)
21
+ ・마경임계표(KT)
22
+ ・획득 소재 차트(MTx x는[법칙장해]의[강도].생략할 때는1)
23
+   예) MT MT3 MT9
24
+ ・D66주사위 가능
25
+ INFO_MESSAGE_TEXT
26
+
27
+ register_prefix([
28
+ 'RT',
29
+ 'MT(\d*)',
30
+ 'ET',
31
+ 'NT',
32
+ 'KT'
33
+ ])
34
+
35
+ def initialize(command)
36
+ super(command)
37
+
38
+ @sort_add_dice = true
39
+ @enabled_d66 = true
40
+ @d66_sort_type = D66SortType::NO_SORT
41
+ end
42
+
43
+ def eval_game_system_specific_command(command)
44
+ tableName = ""
45
+ result = ""
46
+
47
+ debug("eval_game_system_specific_command command", command)
48
+
49
+ case command
50
+
51
+ when "RT"
52
+ tableName, result, number = getReimonCompensationTableResult
53
+
54
+ when /^MT(\d*)$/
55
+ rank = Regexp.last_match(1)
56
+ rank ||= 1
57
+ rank = rank.to_i
58
+ tableName, result, number = getGetMaterialTableResult(rank)
59
+
60
+ when "ET"
61
+ tableName, result, number = getEmotionTableResult
62
+
63
+ when "NT"
64
+ tableName, result, number = getNameTableResult
65
+
66
+ when "KT"
67
+ tableName, result, number = getKyoukaiTableResult
68
+
69
+ else
70
+ debug("eval_game_system_specific_command commandNOT matched -> command:", command)
71
+ return ""
72
+ end
73
+
74
+ if result.empty?
75
+ return ""
76
+ end
77
+
78
+ text = "#{tableName}(#{number}):#{result}"
79
+ return text
80
+ end
81
+
82
+ def getReimonCompensationTableResult
83
+ tableName = "영문소비의 댓가표"
84
+
85
+ table = [
86
+ '사신화:물리법칙을 너무 초월한 대가로, 영혼이 왜곡되어, PC는 즉시 아라미타마로 변모한다. 아라미타마화한 PC는, 어딘가로 떠나간다.',
87
+ '존재소멸:아라미타마화를 최후의 힘으로 억누른다. 하지만 그 결과, PC의 영혼은 불타버려, 이 세계에서 소멸한다. 그 PC는 [상태변화: 사망]이 되어, 시체도 남지 않는다.',
88
+ '사망:영혼의 왜곡을 어떻게든 막지만, 영혼이 붕괴한다. PC는 [상태변화: 사망]이 되나 유체는 남는다.',
89
+ '영혼반괴:영혼의 왜곡을 막아냈지만, 영혼 자체에 치명적인 부상을 입어, 전신에 장해가 남는다. 거기에 동반하여 영문도 소실해, 일반인으로 돌아간다.',
90
+ '기억소멸:기적적으로, 영혼의 마모에 의한 신체적 악영향을 피한다. 시간을 두는 것으로 영문도 회복되나, 정신적인 영향을 받아, 모든 기억을 잃는다.',
91
+ '영향없음:기적적으로, 영혼의 마모에 의한 악영향을 완전히 피하고, 또한 영문의 회복도 빠를 것으로 보인다. 육체나 정신 모두, 딱히 영향은 없다.',
92
+ ]
93
+ result, number = get_table_by_1d6(table)
94
+
95
+ return tableName, result, number
96
+ end
97
+
98
+ def getEmotionTableResult
99
+ tableName = "감정표"
100
+
101
+ table = [
102
+ [11, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'],
103
+ [12, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'],
104
+ [13, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'],
105
+ [14, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'],
106
+ [15, '악연/그 캐릭터에게, 악연을 느끼고 있다.'],
107
+ [16, '악연/그 캐릭터에게, 악연을 느끼고 있다.'],
108
+ [21, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
109
+ [22, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
110
+ [23, '호적수/그 캐릭터를, 호적수라 여기고 있다.'],
111
+ [24, '호적수/그 캐릭터를, 호적수라 여기고 있다.'],
112
+ [25, '친근감/그 캐릭터에게, 친근감을 품고 있다.'],
113
+ [26, '친근감/그 캐릭터에게, 친근감을 품고 있다.'],
114
+ [31, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'],
115
+ [32, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'],
116
+ [33, '우정/그 캐릭터에게, 우정을 품고 있다.'],
117
+ [34, '우정/그 캐릭터에게, 우정을 품고 있다.'],
118
+ [35, '존경/그 캐릭터에게, 존경을 품고 있다.'],
119
+ [36, '존경/그 캐릭터에게, 존경을 품고 있다.'],
120
+ [41, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
121
+ [42, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
122
+ [43, '호감/그 캐릭터에게, 호감을 품고 있다.'],
123
+ [44, '호감/그 캐릭터에게, 호감을 품고 있다.'],
124
+ [45, '흥미/그 캐릭터에게, 흥미를 품고 있다.'],
125
+ [46, '흥미/그 캐릭터에게, 흥미를 품고 있다.'],
126
+ [51, '감명/그 캐릭터에게, 감명을 느끼고 있다.'],
127
+ [52, '감명/그 캐릭터에게, 감명을 느끼고 있다.'],
128
+ [53, '외경/그 캐릭터를 두려워하고 있다.'],
129
+ [54, '외경/그 캐릭터를 두려워하고 있다.'],
130
+ [55, '마음에 듬/그 캐릭터를 마음에 들어한다.'],
131
+ [56, '마음에 듬/그 캐릭터를 마음에 들어한다.'],
132
+ [61, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'],
133
+ [62, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'],
134
+ [63, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'],
135
+ [64, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'],
136
+ [65, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'],
137
+ [66, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'],
138
+ ]
139
+
140
+ number = @randomizer.roll_d66(D66SortType::NO_SORT)
141
+
142
+ result = get_table_by_number(number, table)
143
+
144
+ return tableName, result, number
145
+ end
146
+
147
+ def getNameTableResult
148
+ tableName = "전기 성씨・이름 결정표"
149
+
150
+ table = [
151
+ [11, '미츠루기(御剣) 리쿠/린'],
152
+ [12, '시시우치(獅子内) 야마토/카에데'],
153
+ [13, '하쿠긴(白銀) 하야토/사쿠라'],
154
+ [14, '타케노우치(竹内) 마코토/하루카'],
155
+ [15, '코다치(古太刀) 다이치/미사'],
156
+ [16, '쿠가(空閑) 슌/마오'],
157
+ [21, '오니가타(鬼形) 료/마이'],
158
+ [22, '미칸나기(御巫) 타쿠미/나나미'],
159
+ [23, '고마도우(護摩堂) 히토시/치히로'],
160
+ [24, '류엔(龍円) 타쿠마/아카네'],
161
+ [25, '카가미베(鏡部) 쿄우/아스카'],
162
+ [26, '이누가미(犬神) 코우/시오리'],
163
+ [31, '메이게츠인(明月院) 아오이/유이'],
164
+ [32, '도우메키(百目鬼) 렌야/모에'],
165
+ [33, '오소가미(怨神) 타츠야/아야카'],
166
+ [34, '아라라기(蘭) 류노스케/아즈사'],
167
+ [35, '타마키(珠輝) 아키라/히토미'],
168
+ [36, '간류(眼龍) 케이/사오리'],
169
+ [41, '텟포즈카(鉄砲塚) 마사토/사라'],
170
+ [42, '오리가미(檻神) 나오야/야요이'],
171
+ [43, '후지와라(不死原) 쥰/치아키'],
172
+ [44, '쿠로우자(九朗座) 무사시/하루나'],
173
+ [45, '츠치미카도(土御門) 쿄스케/스이'],
174
+ [46, '이자요이(十六夜) 케이지/후타바'],
175
+ [51, '텐포우린(転法輪) 히로/레나'],
176
+ [52, '시교우(執行) 히비키/사유리'],
177
+ [53, '호우리(祝) 료타로/히나'],
178
+ [54, '코우소(神尊) 토모/시온'],
179
+ [55, '아시야(芦屋) 타카유키/카스미'],
180
+ [56, '나나샤(七社) 카즈키/후카'],
181
+ [61, '키바(騎馬) 테츠야/시노'],
182
+ [62, '토우마(当麻) 켄/사야'],
183
+ [63, '키츠네즈카(狐塚) 호쿠토/마야'],
184
+ [64, '텐진바야시(天神林) 소라/아키라'],
185
+ [65, '메아라시(明嵐) 야쿠모/오토하'],
186
+ [66, '쿠사카베(草壁) 다이고/아야'],
187
+ ]
188
+
189
+ number = @randomizer.roll_d66(D66SortType::NO_SORT)
190
+
191
+ result = get_table_by_number(number, table)
192
+
193
+ return tableName, result, number
194
+ end
195
+
196
+ def getKyoukaiTableResult
197
+ tableName = "마경임계표"
198
+
199
+ table = [
200
+ [11, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."],
201
+ [12, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."],
202
+ [13, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."],
203
+ [14, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."],
204
+ [15, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."],
205
+ [16, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."],
206
+ [21, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."],
207
+ [22, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."],
208
+ [23, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."],
209
+ [24, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."],
210
+ [25, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."],
211
+ [26, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."],
212
+ [31, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."],
213
+ [32, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."],
214
+ [33, "없음\n딱히 아무 일도 일어나지 않는다."],
215
+ [34, "없음\n딱히 아무 일도 일어나지 않는다."],
216
+ [35, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."],
217
+ [36, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."],
218
+ [41, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."],
219
+ [42, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."],
220
+ [43, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."],
221
+ [44, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."],
222
+ [45, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."],
223
+ [46, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."],
224
+ [51, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."],
225
+ [52, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."],
226
+ [53, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."],
227
+ [54, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."],
228
+ [55, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다.。"],
229
+ [56, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다."],
230
+ [61, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."],
231
+ [62, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."],
232
+ [63, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."],
233
+ [64, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."],
234
+ [65, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."],
235
+ [66, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."],
236
+ ]
237
+
238
+ number = @randomizer.roll_d66(D66SortType::NO_SORT)
239
+
240
+ result = get_table_by_number(number, table)
241
+
242
+ return tableName, result, number
243
+ end
244
+
245
+ def getGetMaterialTableResult(rank)
246
+ tableName = "획득 소재 차트"
247
+ table = [
248
+ '진홍의 ',
249
+ '까끌까끌한 ',
250
+ '비취의 ',
251
+ '예리한 ',
252
+ '황금의 ',
253
+ '말랑말랑한 ',
254
+ '은색의 ',
255
+ '뾰족한 ',
256
+ '순백의 ',
257
+ '딱딱한 ',
258
+ '칠흑의 ',
259
+ '빛나는 ',
260
+ '매끄러운 ',
261
+ '탁한 ',
262
+ '덥수룩한 ',
263
+ '사악한 ',
264
+ '끈적이는 ',
265
+ '성스러운 ',
266
+ '작열의 ',
267
+ '불꽃의 ',
268
+ '빙결의 ',
269
+ '얼음의 ',
270
+ '뜨거운 ',
271
+ '바람의 ',
272
+ '차가운 ',
273
+ '번개의 ',
274
+ '흙의 ',
275
+ '환상의 ',
276
+ '뼈형태의 ',
277
+ '봉인의 ',
278
+ '이빨형태의 ',
279
+ '비늘형태의 ',
280
+ '돌형태의 ',
281
+ '보석형태의 ',
282
+ '모피형태의 ',
283
+ '깃털형태의 ',
284
+ ]
285
+
286
+ result, number = get_table_by_d66(table)
287
+ result += "단편"
288
+
289
+ effect, number2 = getMaterialEffect(rank)
290
+ number = "#{number},#{number2}"
291
+
292
+ price = getPrice(effect)
293
+
294
+ result = "#{result}.#{effect}"
295
+ result += ":#{price}" unless price.nil?
296
+
297
+ return tableName, result, number
298
+ end
299
+
300
+ def getMaterialEffect(rank)
301
+ number = @randomizer.roll_once(6)
302
+
303
+ result = ""
304
+ type = ""
305
+ if number < 6
306
+ result, number2 = getMaterialEffectNomal(rank)
307
+ type = "자주 발견되는 소재"
308
+ else
309
+ result, number2 = getMaterialEffectRare()
310
+ type = "드문 소재"
311
+ end
312
+
313
+ result = "#{type}:#{result}"
314
+ number = "#{number},#{number2}"
315
+
316
+ return result, number
317
+ end
318
+
319
+ def getMaterialEffectNomal(rank)
320
+ table = [
321
+ [13, '체력+n'],
322
+ [16, '민첩+n'],
323
+ [23, '지성+n'],
324
+ [26, '정신+n'],
325
+ [33, '행운+n'],
326
+ [35, '물D+n'],
327
+ [41, '마D+n'],
328
+ [43, '행동+n'],
329
+ [46, '생명+n×3'],
330
+ [53, '장갑+n'],
331
+ [56, '결계+n'],
332
+ [63, '이동+n마스'],
333
+ [66, '※PC의 임의'],
334
+ ]
335
+
336
+ number = @randomizer.roll_d66(D66SortType::NO_SORT)
337
+
338
+ result = get_table_by_number(number, table)
339
+ debug("getMaterialEffectNomal result", result)
340
+
341
+ if result =~ /\+n/
342
+ power, number2 = getMaterialEffectPower(rank)
343
+
344
+ result = result.sub(/\+n/, "+#{power}")
345
+ number = "#{number},#{number2}"
346
+ end
347
+
348
+ return result, number
349
+ end
350
+
351
+ def getMaterialEffectPower(rank)
352
+ table = [
353
+ [4, [1, 1, 1, 2, 2, 3]],
354
+ [8, [1, 1, 2, 2, 3, 3]],
355
+ [9, [1, 2, 3, 3, 4, 5]],
356
+ ]
357
+
358
+ rank = 9 if rank > 9
359
+ rankTable = get_table_by_number(rank, table)
360
+ power, number = get_table_by_1d6(rankTable)
361
+
362
+ return power, number
363
+ end
364
+
365
+ def getMaterialEffectRare()
366
+ table = [[3, '**부여'],
367
+ [5, '**반감'],
368
+ [6, '※GM의 임의'],]
369
+
370
+ number = @randomizer.roll_once(6)
371
+ result = get_table_by_number(number, table)
372
+ debug('getMaterialEffectRare result', result)
373
+
374
+ if result =~ /\*\*/
375
+ attribute, number2 = getAttribute()
376
+ result = result.sub(/\*\*/, attribute.to_s)
377
+ number = "#{number},#{number2}"
378
+ end
379
+
380
+ return result, number
381
+ end
382
+
383
+ def getAttribute()
384
+ table = [
385
+ [21, '[화염]'],
386
+ [33, '[냉기]'],
387
+ [43, '[전격]'],
388
+ [53, '[풍압]'],
389
+ [56, '[환각]'],
390
+ [62, '[마독]'],
391
+ [64, '[자력]'],
392
+ [66, '[섬광]'],
393
+ ]
394
+
395
+ number = @randomizer.roll_d66(D66SortType::NO_SORT)
396
+
397
+ result = get_table_by_number(number, table)
398
+
399
+ return result, number
400
+ end
401
+
402
+ def getPrice(effect)
403
+ power = 0
404
+
405
+ case effect
406
+ when /\+(\d+)/
407
+ power = Regexp.last_match(1).to_i
408
+ when /부여/
409
+ power = 3
410
+ when /반감/
411
+ power = 4
412
+ else
413
+ power = 0
414
+ end
415
+
416
+ table = [nil,
417
+ '500G(효과치:1)',
418
+ '1000G(효과치:2)',
419
+ '1500G(효과치:3)',
420
+ '2000G(효과치:4)',
421
+ '3000G(효과치:5)',]
422
+ price = table[power]
423
+
424
+ return price
425
+ end
426
+ end
427
+ end
428
+ end
@@ -0,0 +1,938 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/dice_table/table'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class KanColle < Base
8
+ # ゲームシステムの識別子
9
+ ID = 'KanColle'
10
+
11
+ # ゲームシステム名
12
+ NAME = '艦これRPG'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = 'かんこれRPG'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
19
+ 例) 2D6 : 単純に2D6した値を出します。
20
+ 例) 2D6>=7 : 行為判定。2D6して目標値7以上出れば成功。
21
+ 例) 2D6+2>=7 : 行為判定。2D6に修正+2をした上で目標値7以上になれば成功。
22
+
23
+ 2D6での行為判定時は1ゾロでファンブル、6ゾロでスペシャル扱いになります。
24
+ 天龍ちゃんスペシャルは手動で判定してください。
25
+
26
+ ・各種表
27
+  ・感情表 ET/アクシデント表 ACT
28
+  ・日常イベント表 EVNT/交流イベント表 EVKT/遊びイベント表 EVAT
29
+   演習イベント表 EVET/遠征イベント表 EVENT/作戦イベント表 EVST
30
+  ・ほのぼのイベント表 ETHT/航海イベント表 ETVT 外出イベント表 ETGT
31
+   激戦イベント表 ETBT/任務イベント表 ETMT/恐怖イベント表 ETFT/侵攻効果表 ETIT
32
+  ・大規模部隊表 LSFT/艦隊敗北表 LFDT/艦隊勝利表 LFVT
33
+  ・開発表 DVT/開発表(一括)DVTM
34
+    装備1種表 WP1T/装備2種表 WP2T/装備3種表 WP3T/装備4種表 WP4T
35
+  ・アイテム表 ITT/目標表 MHT/戦果表 SNT/特殊戦果表 SPSNT
36
+  ・ランダム個性選択:一括 KTM/分野 BT
37
+    背景 KHT/魅力 KMT/性格 KST/趣味 KSYT/航海 KKT/戦闘 KSNT
38
+  ・戦場表 SNZ 暴走表/RNT
39
+  ・特殊開発表 WPMC (燃料6/弾薬3/鋼材6/ボーキ3)
40
+  ・新・特殊開発表 WPMCN
41
+  ・艦載機関開発表 WPFA (燃料3/弾薬6/鋼材3/ボーキ6)
42
+  ・砲類開発表 WPCN (燃料3/弾薬6/鋼材6/ボーキ3)
43
+  ・敵深海棲艦の装備決定 BT2~BT12
44
+ ・D66ダイス(D66S相当=低い方が10の桁になる)
45
+ INFO_MESSAGE_TEXT
46
+
47
+ def initialize(command)
48
+ super(command)
49
+
50
+ @sort_add_dice = true
51
+ @sort_barabara_dice = true
52
+ @enabled_d66 = true
53
+ @d66_sort_type = D66SortType::ASC
54
+ end
55
+
56
+ def check_2D6(total, dice_total, _dice_list, cmp_op, target)
57
+ return '' if target == '?'
58
+ return '' unless cmp_op == :>=
59
+
60
+ if dice_total <= 2
61
+ " > ファンブル(判定失敗。アクシデント表を自分のPCに適用)"
62
+ elsif dice_total >= 12
63
+ " > スペシャル(判定成功。【行動力】が1D6点回復)"
64
+ elsif total >= target
65
+ " > 成功"
66
+ else
67
+ " > 失敗"
68
+ end
69
+ end
70
+
71
+ def eval_game_system_specific_command(command)
72
+ output = '1'
73
+ type = ""
74
+ total_n = ""
75
+
76
+ case command
77
+ when 'DVT'
78
+ type = '開発表'
79
+ output, total_n = get_develop_table
80
+ when 'DVTM'
81
+ type = '開発表(一括)'
82
+ output, total_n = get_develop_matome_table
83
+ when 'WP1T'
84
+ type = '装備1種表'
85
+ output, total_n = get_weapon1_table
86
+ when 'WP2T'
87
+ type = '装備2種表'
88
+ output, total_n = get_weapon2_table
89
+ when 'WP3T'
90
+ type = '装備3種表'
91
+ output, total_n = get_weapon3_table
92
+ when 'WP4T'
93
+ type = '装備4種表'
94
+ output, total_n = get_weapon4_table
95
+ when 'KTM'
96
+ type = '個性:一括'
97
+ output, total_n = get_kosei_table
98
+ when 'BT'
99
+ type = '個性:分野表'
100
+ output, total_n = get_bunya_table
101
+ when 'KHT'
102
+ type = '個性:背景表'
103
+ output, total_n = get_kosei_haikei_table
104
+ when 'KMT'
105
+ type = '個性:魅力表'
106
+ output, total_n = get_kosei_miryoku_table
107
+ when 'KST'
108
+ type = '個性:性格表'
109
+ output, total_n = get_kosei_seikaku_table
110
+ when 'KSYT'
111
+ type = '個性:趣味表'
112
+ output, total_n = get_kosei_syumi_table
113
+ when 'KKT'
114
+ type = '個性:航海表'
115
+ output, total_n = get_kosei_koukai_table
116
+ when 'KSNT'
117
+ type = '個性:戦闘表'
118
+ output, total_n = get_kosei_sentou_table
119
+ else
120
+ return roll_tables(command, TABLES)
121
+ end
122
+
123
+ return "#{type}(#{total_n}) > #{output}"
124
+ end
125
+
126
+ def get_develop_table
127
+ table = [
128
+ '装備1種表(WP1T)',
129
+ '装備1種表(WP1T)',
130
+ '装備2種表(WP2T)',
131
+ '装備2種表(WP2T)',
132
+ '装備3種表(WP3T)',
133
+ '装備4種表(WP4T)',
134
+ ]
135
+ return get_table_by_1d6(table)
136
+ end
137
+
138
+ def get_develop_matome_table
139
+ output1 = ''
140
+ output2 = ''
141
+ total_n2 = ""
142
+
143
+ dice = @randomizer.roll_once(6)
144
+
145
+ case dice
146
+ when 1
147
+ output1 = '装備1種表'
148
+ output2, total_n2 = get_weapon1_table
149
+ when 2
150
+ output1 = '装備1種表'
151
+ output2, total_n2 = get_weapon1_table
152
+ when 3
153
+ output1 = '装備2種表'
154
+ output2, total_n2 = get_weapon2_table
155
+ when 4
156
+ output1 = '装備2種表'
157
+ output2, total_n2 = get_weapon2_table
158
+ when 5
159
+ output1 = '装備3種表'
160
+ output2, total_n2 = get_weapon3_table
161
+ when 6
162
+ output1 = '装備4種表'
163
+ output2, total_n2 = get_weapon4_table
164
+ end
165
+ result = "#{output1}:#{output2}"
166
+ number = "#{dice},#{total_n2}"
167
+ return result, number
168
+ end
169
+
170
+ def get_weapon1_table
171
+ table = [
172
+ '小口径主砲(P249)',
173
+ '10cm連装高角砲(P249)',
174
+ '中口径主砲(P249)',
175
+ '15.2cm連装砲(P249)',
176
+ '20.3cm連装砲(P249)',
177
+ '魚雷(P252)',
178
+ ]
179
+ return get_table_by_1d6(table)
180
+ end
181
+
182
+ def get_weapon2_table
183
+ table = [
184
+ '副砲(P250)',
185
+ '8cm高角砲(P250)',
186
+ '大口径主砲(P249)',
187
+ '41cm連装砲(P250)',
188
+ '46cm三連装砲(P250)',
189
+ '機銃(P252)',
190
+ ]
191
+ return get_table_by_1d6(table)
192
+ end
193
+
194
+ def get_weapon3_table
195
+ table = [
196
+ '艦上爆撃機(P250)',
197
+ '艦上攻撃機(P251)',
198
+ '艦上戦闘機(P251)',
199
+ '偵察機(P251)',
200
+ '電探(P252)',
201
+ '25mm連装機銃(P252)',
202
+ ]
203
+ return get_table_by_1d6(table)
204
+ end
205
+
206
+ def get_weapon4_table
207
+ table = [
208
+ '彗星(P250)',
209
+ '天山(P251)',
210
+ '零式艦戦52型(P251)',
211
+ '彩雲(P251)',
212
+ '61cm四連装(酸素)魚雷(P252)',
213
+ '改良型艦本式タービン(P252)',
214
+ ]
215
+ return get_table_by_1d6(table)
216
+ end
217
+
218
+ def get_kosei_table
219
+ output1, total_n1 = get_bunya_table
220
+ output2 = ''
221
+ total_n2 = ""
222
+
223
+ case total_n1
224
+ when 1
225
+ output2, total_n2 = get_kosei_haikei_table
226
+ when 2
227
+ output2, total_n2 = get_kosei_miryoku_table
228
+ when 3
229
+ output2, total_n2 = get_kosei_seikaku_table
230
+ when 4
231
+ output2, total_n2 = get_kosei_syumi_table
232
+ when 5
233
+ output2, total_n2 = get_kosei_koukai_table
234
+ when 6
235
+ output2, total_n2 = get_kosei_sentou_table
236
+ end
237
+ result = "《#{output2}/#{output1}#{total_n2}》"
238
+ number = "#{total_n1},#{total_n2}"
239
+ return result, number
240
+ end
241
+
242
+ def get_bunya_table
243
+ table = [
244
+ '背景',
245
+ '魅力',
246
+ '性格',
247
+ '趣味',
248
+ '航海',
249
+ '戦闘',
250
+ ]
251
+ return get_table_by_1d6(table)
252
+ end
253
+
254
+ def get_kosei_haikei_table
255
+ table = [
256
+ '人脈',
257
+ '名声',
258
+ '暗い過去',
259
+ '古風',
260
+ '口ぐせ',
261
+ '幸運',
262
+ 'アイドル',
263
+ '秘密兵器',
264
+ 'お嬢様',
265
+ 'スタイル',
266
+ '外国暮らし',
267
+ ]
268
+ return get_table_by_2d6(table)
269
+ end
270
+
271
+ def get_kosei_miryoku_table
272
+ table = [
273
+ '素直',
274
+ 'クール',
275
+ '優しい',
276
+ 'おしとやか',
277
+ 'けなげ',
278
+ '笑顔',
279
+ 'ばか',
280
+ 'さわやか',
281
+ '面白い',
282
+ 'えっち',
283
+ '派手',
284
+ ]
285
+ return get_table_by_2d6(table)
286
+ end
287
+
288
+ def get_kosei_seikaku_table
289
+ table = [
290
+ '不思議',
291
+ 'おおらか',
292
+ '面倒見',
293
+ 'マジメ',
294
+ '負けず嫌い',
295
+ '元気',
296
+ '楽観的',
297
+ '丁寧',
298
+ 'いじわる',
299
+ '自由奔放',
300
+ '大胆',
301
+ ]
302
+ return get_table_by_2d6(table)
303
+ end
304
+
305
+ def get_kosei_syumi_table
306
+ table = [
307
+ '寝る',
308
+ '空想',
309
+ '生き物',
310
+ '読書',
311
+ '食べ物',
312
+ 'おしゃべり',
313
+ '買い物',
314
+ '芸能',
315
+ 'おしゃれ',
316
+ '入浴',
317
+ '恋愛',
318
+ ]
319
+ return get_table_by_2d6(table)
320
+ end
321
+
322
+ def get_kosei_koukai_table
323
+ table = [
324
+ '暗号',
325
+ '通信',
326
+ '索敵',
327
+ '規律',
328
+ '補給',
329
+ '待機',
330
+ '機動',
331
+ '海図',
332
+ '指揮',
333
+ '衛生',
334
+ '整備',
335
+ ]
336
+ return get_table_by_2d6(table)
337
+ end
338
+
339
+ def get_kosei_sentou_table
340
+ table = [
341
+ '電子戦',
342
+ '航空打撃戦',
343
+ '航空戦',
344
+ '対空戦闘',
345
+ '突撃',
346
+ '砲撃',
347
+ '退却',
348
+ '支援',
349
+ '魚雷',
350
+ '対潜戦闘',
351
+ '夜戦',
352
+ ]
353
+ return get_table_by_2d6(table)
354
+ end
355
+
356
+ TABLES = {
357
+ "ET" => DiceTable::Table.new(
358
+ "感情表",
359
+ "1D6",
360
+ [
361
+ "かわいい(プラス)/むかつく(マイナス)",
362
+ "すごい(プラス)/ざんねん(マイナス)",
363
+ "たのしい(プラス)/こわい(マイナス)",
364
+ "かっこいい(プラス)/しんぱい(マイナス)",
365
+ "いとしい(プラス)/かまってほしい(マイナス)",
366
+ "だいすき(プラス)/だいっきらい(マイナス)",
367
+ ]
368
+ ),
369
+ "ACT" => DiceTable::Table.new(
370
+ "アクシデント表",
371
+ "1D6",
372
+ [
373
+ "よかったぁ。何もなし。",
374
+ "意外な手応え。その判定に使った個性の属性(【長所】と【弱点】)が反対になる。自分が判定を行うとき以外はこの効果は無視する。",
375
+ "えーん。大失態。このキャラクターに対して【感情値】を持っているキャラクター全員の声援欄にチェックが入る。",
376
+ "奇妙な猫がまとわりつく。サイクルの終了時、もしくは、艦隊戦の終了時まで、自分の行う行為判定にマイナス1の修正がつく(この効果は、マイナス2まで累積する)。",
377
+ "いててて。損傷が一つ発生する。もしも艦隊戦中なら、自分と同じ航行序列にいる味方艦にも損傷が一つ発生する。",
378
+ "ううう。やりすぎちゃった!自分の【行動力】が1D6点減少する。",
379
+ ]
380
+ ),
381
+ "EVNT" => DiceTable::Table.new(
382
+ "日常イベント表",
383
+ "2D6",
384
+ [
385
+ "何もない日々:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は、《待機/航海7》で判定。(着任p220)",
386
+ "ティータイム:《外国暮らし/背景12》で判定。(着任p220)",
387
+ "釣り:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《おおらか/性格3》で判定。(着任p220)",
388
+ "お昼寝:《寝る/趣味2》で判定。(着任p220)",
389
+ "綺麗におそうじ!:《衛生/航海11》で判定。(着任p220)",
390
+ "海軍カレー:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《食べ物/趣味6》で判定。(着任p220)",
391
+ "銀蝿/ギンバイ:《規律/航海5》で判定。(着任p220)",
392
+ "日々の訓練:《素直/魅力2》で判定。(着任p220)",
393
+ "取材:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《名声/背景3》で判定。(着任p220)",
394
+ "海水浴:《突撃/戦闘6》で判定。(着任p220)",
395
+ "マイブーム:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《口ぐせ/背景6》で判定。(着任p220)",
396
+ ]
397
+ ),
398
+ "EVKT" => DiceTable::Table.new(
399
+ "交流イベント表",
400
+ "2D6",
401
+ [
402
+ "一触即発!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《笑顔/魅力7》で判定。(着任p221)",
403
+ "手取り足取り:自分以外の好きなPC1人を選んで、《えっち/魅力11》で判定。(着任p221)",
404
+ "恋は戦争:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《恋愛/趣味12》で判定。(着任p221)",
405
+ "マッサージ:自分以外の好きなPC1人を選んで、《けなげ/魅力6》で判定。(着任p221)",
406
+ "裸のつきあい:《入浴/趣味11》で判定。(着任p221)",
407
+ "深夜のガールズトーク:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《おしゃべり/趣味7》で判定。(着任p221)",
408
+ "いいまちがえ:《ばか/魅力8》で判定。(着任p221)",
409
+ "小言百より慈愛の一語:自分以外の好きなPC1人を選んで、《面倒見/性格4》で判定。(着任p221)",
410
+ "差し入れ:自分以外の好きなPC1人を選んで、提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《優しい/魅力4》で判定。(着任p221)",
411
+ "お手紙:自分以外の好きなPC1人を選んで、《古風/背景5》で判定。(着任p221)",
412
+ "昔語り:自分以外の好きなPC1人を選んで、提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《暗い過去/背景4》で判定。(着任p221)",
413
+ ]
414
+ ),
415
+ "EVAT" => DiceTable::Table.new(
416
+ "遊びイベント表",
417
+ "2D6",
418
+ [
419
+ "遊びのつもりが……:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《さわやか/魅力9》で判定。(着任p222)",
420
+ "新しい遊びの開発:《空想/趣味3》で判定。(着任p222)",
421
+ "宴会:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《元気/性格7》で判定。(着任p222)",
422
+ "街をぶらつく:《面白い/魅力10》で判定。(着任p222)",
423
+ "ガールズコーデ:《おしゃれ/趣味10》で判定。(着任p222)",
424
+ "○○大会開催!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《大胆/性格12》で判定。(着任p222)",
425
+ "チェス勝負:自分以外の好きなPC1人を選んで、《クール/魅力3》で判定。(着任p222)",
426
+ "熱唱カラオケ大会:《芸能/趣味9》で判定。(着任p222)",
427
+ "アイドルコンサート:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《アイドル/背景8》で判定。(着任p222)",
428
+ "スタイル自慢!:《スタイル/背景11》で判定。(着任p222)",
429
+ "ちゃんと面倒みるから!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《生き物/趣味4》で判定。(着任p222)",
430
+ ]
431
+ ),
432
+ "EVET" => DiceTable::Table.new(
433
+ "演習イベント表",
434
+ "2D6",
435
+ [
436
+ "大げんか!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《負けず嫌い/性格6》で判定。(着任p223)",
437
+ "雷撃演習:《魚雷/戦闘10》で判定。(着任p223)",
438
+ "座学の講義:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《マジメ/性格5》で判定。(着任p223)",
439
+ "速力演習:《機動/航海8》で判定。(着任p223)",
440
+ "救援演習:《支援/戦闘9》で判定。シーンプレイヤーのPCは、経験点を10点獲得する。残念:PC全員の【行動力】が1D6点減少する。(着任p223)",
441
+ "砲撃演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《砲撃/戦闘7》で判定。(着任p223)",
442
+ "艦隊戦演習:《派手/魅力12》で判定。(着任p223)",
443
+ "整備演習:《整備/航海12》で判定。(着任p223)",
444
+ "夜戦演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《夜戦/戦闘12》で判定。(着任p223)",
445
+ "開発演習:《秘密兵器/背景9》で判定。(着任p223)",
446
+ "防空射撃演習:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《対空戦闘/戦闘5》で判定。(着任p223)",
447
+ ]
448
+ ),
449
+ "EVENT" => DiceTable::Table.new(
450
+ "遠征イベント表",
451
+ "2D6",
452
+ [
453
+ "謎の深海棲艦:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《退却/戦闘8》で判定。(着任p224)",
454
+ "資源輸送任務:《買い物/趣味8》で判定。(着任p224)",
455
+ "強行偵察任務:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《索敵/航海4》で判定。(着任p224)",
456
+ "航空機輸送作戦:《航空戦/戦闘4》で判定。(着任p224)",
457
+ "タンカー護衛任務:《丁寧/性格9》で判定。(着任p224)",
458
+ "海上護衛任務:提督が選んだ(キーワード)に対応した指定能力で判定。思いつかない場合は《不思議/性格2》で判定。(着任p224)",
459
+ "観艦式:《おしとやか/魅力5》で判定。(着任p224)",
460
+ "ボーキサイト輸送任務:《補給/航海6》で判定。(着任p224)",
461
+ "社交界デビュー?:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《お嬢様/背景10》で判定。(着任p224)",
462
+ "対潜警戒任務:《対潜戦闘/戦闘11》で判定。(着任p224)",
463
+ "大規模遠征作戦、発令!:提督の選んだ(キーワード)に対応した指定能力値で判定。思いつかな場合は《指揮/航海10》で判定。(着任p224)",
464
+ ]
465
+ ),
466
+ "EVST" => DiceTable::Table.new(
467
+ "作戦イベント表",
468
+ "2D6",
469
+ [
470
+ "電子の目:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《電子戦/戦闘2》で判定。(着任p225)",
471
+ "直掩部隊:《航空戦/戦闘4》で判定。(着任p225)",
472
+ "噂によれば:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《通信/航海3》で判定。(着任p225)",
473
+ "資料室にて:《海図/航海9》で判定。(着任p225)",
474
+ "守護天使:《幸運/背景7》で判定。(着任p225)",
475
+ "作戦会議!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《自由奔放/性格11》で判定。(着任p225)",
476
+ "暗号解読:《暗号/航海2》で判定。(着任p225)",
477
+ "一か八か?:《楽観的/性格8》で判定。(着任p225)",
478
+ "特務機関との邂逅:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《人脈/背景2》で判定。(着任p225)",
479
+ "クイーンズ・ギャンビット:《いじわる/性格10》で判定。(着任p225)",
480
+ "知彼知己者、百戦不殆:《読書/趣味5》で判定。(着任p225)",
481
+ ]
482
+ ),
483
+ "ETHT" => DiceTable::Table.new(
484
+ "ほのぼのイベント表",
485
+ "2D6",
486
+ [
487
+ "模様替え:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《派手/魅力12》で判定。(建造弐p134)",
488
+ "門限破り:《夜戦/戦闘12》で判定。(建造弐p134)",
489
+ "ぼやき大会:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《いじわる/性格10》で判定。(建造弐p134)",
490
+ "もしも……:《自由奔放/性格11》で判定。(建造弐p134)",
491
+ "退屈な会議:《暗号/航海2》で判定。(建造弐p134)",
492
+ "気の合う趣味:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《面白い/魅力10》で判定。(建造弐p134)",
493
+ "身だしなみ:《さわやか/魅力9》で判定。(建造弐p134)",
494
+ "ダイエット:《スタイル/背景11》で判定。(建造弐p134)",
495
+ "通信販売:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《待機/背景2》で判定。(建造弐p134)",
496
+ "気になる視線:《えっち/魅力11》で判定。(建造弐p134)",
497
+ "思い立ったが吉日:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《恋愛/趣味12》で判定。(建造弐p134)",
498
+ ]
499
+ ),
500
+ "ETVT" => DiceTable::Table.new(
501
+ "航海イベント表",
502
+ "2D6",
503
+ [
504
+ "厳しくいくぞ:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《規律/航海5》で判定。(建造弐p135)",
505
+ "密航者:《笑顔/魅力7》で判定。(建造弐p135)",
506
+ "不審の目:《外国暮らし/背景12》で判定。(建造弐p135)",
507
+ "危険海域:《海図/航海9》で判定。(建造弐p135)",
508
+ "波間の影:《砲撃/戦闘7》で判定。(建造弐p135)",
509
+ "ホームシック:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《支援/戦闘9》で判定。(建造弐p135)",
510
+ "追跡者:《対潜戦闘/戦闘11》で判定。(建造弐p135)",
511
+ "大嵐:《機動/航海8》で判定。(建造弐p135)",
512
+ "うち捨てられた基地:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《読書/趣味5》で判定。(建造弐p135)",
513
+ "ネズミ上陸:《衛生/航海11》で判定。(建造弐p135)",
514
+ "味の探求:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《読書/趣味5》で判定。(建造弐p135)",
515
+ ]
516
+ ),
517
+ "ETGT" => DiceTable::Table.new(
518
+ "外出イベント表",
519
+ "2D6",
520
+ [
521
+ "ノブレス・オブリージュ:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《お嬢様/背景10》で判定。(建造弐p136)",
522
+ "サイン会:《名声/背景3》で判定。(建造弐p136)",
523
+ "蚤の市:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《古風/背景5》で判定。(建造弐p136)",
524
+ "追っかけ:《退却/戦闘8》で判定。(建造弐p136)",
525
+ "走り込み:《航空戦/戦闘4》で判定。(建造弐p136)",
526
+ "外食:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《索敵/航海4》で判定。(建造弐p136)",
527
+ "迷子:《面倒見/性格4》で判定。(建造弐p136)",
528
+ "街頭モデル:《おしゃれ/趣味10》で判定。(建造弐p136)",
529
+ "暴れ○○だ!:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《生き物/趣味4》で判定。(建造弐p136)",
530
+ "臨時講師:《おしゃべり/性格10》で判定。(建造弐p136)",
531
+ "映画撮影:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《芸能/趣味9》で判定。(建造弐p136)",
532
+ ]
533
+ ),
534
+ "ETBT" => DiceTable::Table.new(
535
+ "激戦イベント表",
536
+ "2D6",
537
+ [
538
+ "分裂の危機:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《指揮/航海10》で判定。(建造弐p137)",
539
+ "脱走:《通信/航海3》で判定。(建造弐p137)",
540
+ "勇気の呪文:《口ぐせ/背景6》で判定。(建造弐p137)",
541
+ "混乱:《整備/航海12》で判定。(建造弐p137)",
542
+ "不意の遭遇:《魚雷/戦闘10》で判定。(建造弐p137)",
543
+ "敵の襲撃:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《大胆/性格12》で判定。(建造弐p137)",
544
+ "対空迎撃戦:《対空戦闘/戦闘5》で判定。(建造弐p137)",
545
+ "傷自慢:《元気/性格7》で判定。(建造弐p137)",
546
+ "怖がらないで:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《優しい/魅力4》で判定。(建造弐p137)",
547
+ "生き延びろ:《負けず嫌い/性格10》で判定。(建造弐p137)",
548
+ "極限の集中:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《ばか/魅力8》で判定。(建造弐p137)",
549
+ ]
550
+ ),
551
+ "ETMT" => DiceTable::Table.new(
552
+ "任務イベント表",
553
+ "2D6",
554
+ [
555
+ "視察:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《面倒見/魅力12》で判定。(建造弐p138)",
556
+ "酒保祭り:《補給/航海6》で判定。(建造弐p138)",
557
+ "アイドルユニット結成:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《アイドル/背景8》で判定。(建造弐p138)",
558
+ "お風呂場大改造:《入浴/趣味11》で判定。(建造弐p138)",
559
+ "現場の融通:《人脈/背景2》で判定。(建造弐p138)",
560
+ "緊急空輸:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《航空戦/戦闘4》で判定。(建造弐p138)",
561
+ "資源の再利用:《マジメ/性格5》で判定。(建造弐p138)",
562
+ "物欲:《買い物/趣味8》で判定。(建造弐p138)",
563
+ "魔改造:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《秘密兵器/背景9》で判定。(建造弐p138)",
564
+ "ちゃんと伝えたってば!:《クール/魅力3》で判定。(建造弐p138)",
565
+ "ストライキ:《おおらか/性格3》で判定。(建造弐p138)",
566
+ ]
567
+ ),
568
+ "ETFT" => DiceTable::Table.new(
569
+ "恐怖イベント表",
570
+ "2D6",
571
+ [
572
+ "未知の怪物:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《突撃/戦闘6》で判定。(建造弐p139)",
573
+ "ドッペルゲンガー:《不思議/性格2》で判定。(建造弐p139)",
574
+ "悪夢:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《寝る/趣味2》で判定。(建造弐p139)",
575
+ "イマジナリーフレンド:《空想/趣味3》で判定。(建造弐p139)",
576
+ "幽霊船:《電子戦/戦闘2》で判定。(建造弐p139)",
577
+ "謎の予言:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《楽観的/性格8》で判定。(建造弐p139)",
578
+ "黒猫:《幸運/背景7》で判定。(建造弐p139)",
579
+ "サルベージ:《丁寧/性格9》で判定。(建造弐p139)",
580
+ "フラッシュバック:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《暗い過去/背景4》で判定。(建造弐p139)",
581
+ "深海の呼び声:《素直/魅力2》で判定。(建造弐p139)",
582
+ "死者の声:提督が選んだ(キーワード)に対応した指定個性で判定。思いつかない場合は《けなげ/魅力6》で判定。(建造弐p139)",
583
+ ]
584
+ ),
585
+ "BT10" => DiceTable::Table.new(
586
+ "指定個性⑩",
587
+ "1D6",
588
+ [
589
+ "1-10 《お嬢様》",
590
+ "2-10 《面白い》",
591
+ "3-10 《いじわる》",
592
+ "4-10 《おしゃれ》",
593
+ "5-10 《指揮》",
594
+ "6-10 《魚雷》",
595
+ ]
596
+ ),
597
+ "BT11" => DiceTable::Table.new(
598
+ "指定個性⑪",
599
+ "1D6",
600
+ [
601
+ "1-11 《スタイル》",
602
+ "2-11 《えっち》",
603
+ "3-11 《自由奔放》",
604
+ "4-11 《入浴》",
605
+ "5-11 《衛生》",
606
+ "6-11 《対潜戦闘》",
607
+ ]
608
+ ),
609
+ "BT12" => DiceTable::Table.new(
610
+ "指定個性⑫",
611
+ "1D6",
612
+ [
613
+ "1-12 《外国暮らし》",
614
+ "2-12 《派手》",
615
+ "3-12 《大胆》",
616
+ "4-12 《恋愛》",
617
+ "5-12 《整備》",
618
+ "6-12 《夜戦》",
619
+ ]
620
+ ),
621
+ "BT2" => DiceTable::Table.new(
622
+ "指定個性②",
623
+ "1D6",
624
+ [
625
+ "1-2 《人脈》",
626
+ "2-2 《素直》",
627
+ "3-2 《不思議》",
628
+ "4-2 《寝る》",
629
+ "5-2 《暗号》",
630
+ "6-2 《電子戦》",
631
+ ]
632
+ ),
633
+ "BT3" => DiceTable::Table.new(
634
+ "指定個性③",
635
+ "1D6",
636
+ [
637
+ "1-3 《名声》",
638
+ "2-3 《クール》",
639
+ "3-3 《おおらか》",
640
+ "4-3 《空想》",
641
+ "5-3 《通信》",
642
+ "6-3 《航空打撃戦》",
643
+ ]
644
+ ),
645
+ "BT4" => DiceTable::Table.new(
646
+ "指定個性④",
647
+ "1D6",
648
+ [
649
+ "1-4 《暗い過去》",
650
+ "2-4 《優しい》",
651
+ "3-4 《面倒見》",
652
+ "4-4 《生き物》",
653
+ "5-4 《索敵》",
654
+ "6-4 《航空戦》",
655
+ ]
656
+ ),
657
+ "BT5" => DiceTable::Table.new(
658
+ "指定個性⑤",
659
+ "1D6",
660
+ [
661
+ "1-5 《古風》",
662
+ "2-5 《おしとやか》",
663
+ "3-5 《マジメ》",
664
+ "4-5 《読書》",
665
+ "5-5 《規律》",
666
+ "6-5 《対空戦闘》",
667
+ ]
668
+ ),
669
+ "BT6" => DiceTable::Table.new(
670
+ "指定個性⑥",
671
+ "1D6",
672
+ [
673
+ "1-6 《口ぐせ》",
674
+ "2-6 《けなげ》",
675
+ "3-6 《負けず嫌い》",
676
+ "4-6 《食べ物》",
677
+ "5-6 《補給》",
678
+ "6-6 《突撃》",
679
+ ]
680
+ ),
681
+ "BT7" => DiceTable::Table.new(
682
+ "指定個性⑦",
683
+ "1D6",
684
+ [
685
+ "1-7 《幸運》",
686
+ "2-7 《笑顔》",
687
+ "3-7 《元気》",
688
+ "4-7 《おしゃべり》",
689
+ "5-7 《待機》",
690
+ "6-7 《砲撃》",
691
+ ]
692
+ ),
693
+ "BT8" => DiceTable::Table.new(
694
+ "指定個性⑧",
695
+ "1D6",
696
+ [
697
+ "1-8 《アイドル》",
698
+ "2-8 《ばか》",
699
+ "3-8 《楽観的》",
700
+ "4-8 《買い物》",
701
+ "5-8 《機動》",
702
+ "6-8 《退却》",
703
+ ]
704
+ ),
705
+ "BT9" => DiceTable::Table.new(
706
+ "指定個性⑨",
707
+ "1D6",
708
+ [
709
+ "1-9 《秘密兵器》",
710
+ "2-9 《さわやか》",
711
+ "3-9 《丁寧》",
712
+ "4-9 《芸能》",
713
+ "5-9 《海図》",
714
+ "6-9 《支援》",
715
+ ]
716
+ ),
717
+ "ETIT" => DiceTable::Table.new(
718
+ "侵攻効果表",
719
+ "2D6",
720
+ [
721
+ "援軍\n深海棲艦は徐々に力をつけ、大艦隊へとせいちょうしつつある。決戦フェイズの深海棲艦側の艦隊に、駆逐ハ級(『着任ノ書p258』)が一人追加される。",
722
+ "海域汚染\n特定の海域が深海棲艦の住みやすい環境になる。このセッションの艦隊戦のの各ラウンドの開始時に、深海棲艦の艦隊は誰か一人だけ【行動力】を1D6点減少できるようになる。【行動力】を消費すると、その戦場を好きなものに変更できる。",
723
+ "略奪\n大勢の物資や人々を奪い、連れ去られる。鎮守府の資材がすべて1D6個失われる。",
724
+ "象徴破壊\n人類に歴史的建造物や貴重な遺産、世界的な観光名所が破壊される。PC全員は【行動力】を1D6点減少する。",
725
+ "襲撃\n深海棲艦の侵攻によって、鎮守府の周辺に住む人たちに大きな被害が出る。PC全員は暴走判定を行うこと。",
726
+ "通商破壊\n深海棲艦の侵攻によって、通商ルートが破壊される。そのセッションの間、資材を獲得する効果が発生したとき、その資材の数がいずれも一つずつ減少する。",
727
+ "謎のキリ\n謎の霧が海域を覆う。このセッションの艦隊戦中、深海棲艦はランドの開始時に、【行動力】を1D6点消費できるようになる。そのラウンドの間、消費した【行動力】の半分の値(切り捨て。0〜3点の値になる)だけ、深海棲艦全員は、艦隊戦で受けるダメージが軽減できる。この効果は累積するが、この効果で軽減できるダメージの上限は3点である。",
728
+ "陸地浸食\n陸地を浸食し、海に変える。この事態に鎮守府への非難が高まる。そのセッションの間、PC全員はあらゆる判定にマイナス1の修正がつく。この侵攻以降、行動判定を行うPCは、判定直前に自分の【行動力】を1点消費するたび、進行による修正をすべて打ち消すことができる。",
729
+ "新型改造\n深海棲艦は自らを強化しているようだ。そのセッションの決戦フェイズに登場する深海棲艦の中から一人を選ぶ。その深海棲艦をeliteのクラスを付加する。その深海棲艦がすでにeliteならflagshipに、flagshipなら改にすることもできる。",
730
+ "艦娘研究\n艦娘が拿捕され、鹵獲される。一体何を企んでいるのか……?提督は、好きなNPCの艦娘を一人選ぶ。深海棲艦の一人に、その艦娘の持つアビリティ一つを習得させることができる。",
731
+ "基地建設\n深海棲艦は自分たちの基地を建造した。そのセッションの決戦フェイズで、深海棲艦の旗艦は、開幕雷撃戦と雷撃戦でダメージを受けなくなる。",
732
+ ]
733
+ ),
734
+ "LFDT" => DiceTable::Table.new(
735
+ "艦隊敗北表",
736
+ "1D6",
737
+ [
738
+ "敵の支援砲撃。ランダムなPC一人に損傷を一つ与える。",
739
+ "敵の罠。ランダムなPC一人に「アクシデント表」を一回適用する。",
740
+ "追い詰められる。戦場が「T字戦不利」になる。",
741
+ "本隊への合流。「敵部隊のサポート」発生。",
742
+ "盟友艦行方不明(MIA)。敵部隊の旗艦が決戦フェイズ中、対応する盟友艦の固有、または戦術アビリティをいずれか一つを修得する。",
743
+ "盟友艦轟沈。盟友艦は失われ「暴走表」を一回振り、暴走する。",
744
+ ]
745
+ ),
746
+ "LFVT" => DiceTable::Table.new(
747
+ "艦隊勝利表",
748
+ "1D6",
749
+ [
750
+ "支援砲撃。敵艦の中からランダムな一人に損傷を一つ与える。",
751
+ "士気高揚。この表を振ったPCの【命中力】が1点上昇する。",
752
+ "士気高揚。この表を振ったPCの【火力】が1点上昇する。",
753
+ "士気高揚。この表を振ったPCの【回避力】が1点上昇する。",
754
+ "士気高揚。この表を振ったPCの【装甲力】が1点上昇する。",
755
+ "絆が深まる。その盟友艦からのPCへの【感情値】が1点上昇する。",
756
+ ]
757
+ ),
758
+ "LSFT" => DiceTable::Table.new(
759
+ "大規模部隊表",
760
+ "1D6",
761
+ [
762
+ "水上打撃部隊 「脅威力:10」",
763
+ "空母機動部隊 「脅威力:9」",
764
+ "水雷戦隊    「脅威力:8」",
765
+ "潜水艦部隊   「脅威力:7」",
766
+ "輸送部隊 「脅威力:6」",
767
+ "主力部隊 「脅威力:12」",
768
+ ]
769
+ ),
770
+ "WPCN" => DiceTable::Table.new(
771
+ "砲開発表(燃料3/弾薬6/鋼材6/ボーキ3)",
772
+ "4D6",
773
+ [
774
+ "開発失敗!(資材だけ失う)",
775
+ "開発失敗!(資材だけ失う)",
776
+ "三式弾(建造壱p169)",
777
+ "25mm連装機銃(着任p252)",
778
+ "41cm連装砲(着任p250)",
779
+ "8cm高角砲(着任p250)",
780
+ "15.2cm連装砲(着任p249)",
781
+ "魚雷(着任p252)",
782
+ "機銃(着任p252)",
783
+ "小口径主砲(着任p249)",
784
+ "中口径主砲(着任p249)",
785
+ "小口径主砲(着任p249)",
786
+ "中口径主砲(着任p249)",
787
+ "10cm連装高角砲(着任p249)",
788
+ "20.3cm連装砲(着任p249)",
789
+ "61cm四連装(酸素)魚雷(着任p252)",
790
+ "46cm三連装砲(着任p250)",
791
+ "15.5cm三連装砲(副砲)(建造壱p167)",
792
+ "61cm五連装(酸素)魚雷(建造壱p168)",
793
+ "53cm艦種(酸素)魚雷(建造壱p168)",
794
+ "九一式徹甲弾(建造壱p169)",
795
+ ]
796
+ ),
797
+ "WPFA" => DiceTable::Table.new(
798
+ "艦載機開発表(燃料3/弾薬6/鋼材3/ボーキ6)",
799
+ "4D6",
800
+ [
801
+ "開発失敗!(資材だけ失う)",
802
+ "開発失敗!(資材だけ失う)",
803
+ "開発失敗!(資材だけ失う)",
804
+ "開発失敗!(資材だけ失う)",
805
+ "開発失敗!(資材だけ失う)",
806
+ "Ju87C改(建造壱p167)",
807
+ "流星(建造壱p167)",
808
+ "紫電改二(建造壱p167)",
809
+ "零式艦戦52型(着任p251)",
810
+ "艦上戦闘機(着任p251)",
811
+ "偵察機(着任p251)",
812
+ "艦上爆撃機(着任p250)",
813
+ "艦上攻撃機(着任p251)",
814
+ "彩雲(着任p251)",
815
+ "彗星(着任p250)",
816
+ "天山(着任p251)",
817
+ "瑞雲(建造壱p168)",
818
+ "彗星一二型甲(建造壱p167)",
819
+ "流星改(建造壱p167)",
820
+ "烈風(建造壱p168)",
821
+ "零式水上観測機(建造壱p168)",
822
+ ]
823
+ ),
824
+ "WPMC" => DiceTable::Table.new(
825
+ "特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)",
826
+ "2D6",
827
+ [
828
+ "開発失敗!(資材だけ失う)",
829
+ "開発失敗!(資材だけ失う)",
830
+ "開発失敗!(資材だけ失う)",
831
+ "開発失敗!(資材だけ失う)",
832
+ "探照灯(建造壱p169)",
833
+ "電探(着任p252)",
834
+ "改良型艦本式タービン(着任p252)",
835
+ "九四式爆雷投射機(建造壱p169)",
836
+ "甲標的 甲(建造壱p168)",
837
+ "33号対水上電探(建造壱p169)",
838
+ "増設バルジ(中型艦)(建造壱p169)",
839
+ ]
840
+ ),
841
+ "WPMCN" => DiceTable::Table.new(
842
+ "新特殊開発表(燃料6/弾薬3/鋼材6/ボーキ3)",
843
+ "2D6",
844
+ [
845
+ "開発失敗!(資材だけ失う)",
846
+ "カ号観測機(建造弐p171)",
847
+ "九三式水中聴音機(建造弐p171)",
848
+ "ドラム缶(輸送用)(建造弐p171)",
849
+ "探照灯(建造壱p169)",
850
+ "電探(着任p252)",
851
+ "改良型艦本式タービン(着任p252)",
852
+ "九四式爆雷投射機(建造壱p169)",
853
+ "甲標的 甲(建造壱p168)",
854
+ "33号対水上電探(建造壱p169)",
855
+ "増設バルジ(中型艦)(建造壱p169)",
856
+ ]
857
+ ),
858
+ "ITT" => DiceTable::Table.new(
859
+ "アイテム表",
860
+ "1D6",
861
+ [
862
+ "アイス(P241)",
863
+ "羊羹(P241)",
864
+ "開発資材(P241)",
865
+ "高速修復剤(P241)",
866
+ "応急修理要員(P241)",
867
+ "思い出の品(P241)",
868
+ ]
869
+ ),
870
+ "MHT" => DiceTable::Table.new(
871
+ "目標表",
872
+ "1D6",
873
+ [
874
+ "敵艦の中で、もっとも航行序列の高いPC",
875
+ "敵艦の中で、もっとも損傷の多いPC",
876
+ "敵艦の中で、もっとも【装甲力】の低いPC",
877
+ "敵艦の中で、もっとも【回避力】の低いPC",
878
+ "敵艦の中で、もっとも【火力】の高いPC",
879
+ "敵艦の中から完全にランダムに決定",
880
+ ]
881
+ ),
882
+ "SNT" => DiceTable::Table.new(
883
+ "戦果表",
884
+ "1D6",
885
+ [
886
+ "燃料/1D6+[敵艦隊の人数]個",
887
+ "弾薬/1D6+[敵艦隊の人数]個",
888
+ "鋼材/1D6+[敵艦隊の人数]個",
889
+ "ボーキサイト/1D6+[敵艦隊の人数]個",
890
+ "任意の資材/1D6+[敵艦隊の人数]個",
891
+ "感情値/各自好きなキャラクターへの【感情値】+1",
892
+ ]
893
+ ),
894
+ "SPSNT" => DiceTable::Table.new(
895
+ "特殊戦果表",
896
+ "1D6",
897
+ [
898
+ "すべての資材/+3",
899
+ "アイテム表(着任p241)から好きなアイテムを取得",
900
+ "家具コイン/+1",
901
+ "砲類開発表を使用する(資材は消費しない)",
902
+ "艦載機開発表を使用する(資材は消費しない)",
903
+ "新特殊開発表を使用する(資材は消費しない)",
904
+ ]
905
+ ),
906
+ "SNZ" => DiceTable::Table.new(
907
+ "戦場表",
908
+ "1D6",
909
+ [
910
+ "同航戦(P231)",
911
+ "反航戦(P231)",
912
+ "T字有利(P231)",
913
+ "T字不利(P231)",
914
+ "悪天候(P231)",
915
+ "悪海象(あくかいしょう)(P231)",
916
+ ]
917
+ ),
918
+ "RNT" => DiceTable::Table.new(
919
+ "暴走表",
920
+ "1D6",
921
+ [
922
+ "妄想(建造弐p164)",
923
+ "狂戦士(建造弐p164)",
924
+ "興奮(建造弐p164)",
925
+ "溺愛(建造弐p164)",
926
+ "慢心(建造弐p164)",
927
+ "絶望(建造弐p164)",
928
+ ]
929
+ ),
930
+ }.freeze
931
+
932
+ register_prefix([
933
+ 'DVT', 'DVTM', 'WP1T', 'WP2T', 'WP3T', 'WP4T',
934
+ 'KTM', 'BT', 'KHT', 'KMT', 'KST', 'KSYT', 'KKT', 'KSNT',
935
+ ] + TABLES.keys)
936
+ end
937
+ end
938
+ end