bcdice 3.0.0.pre.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
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,121 @@
1
+ module BCDice
2
+ module GameSystem
3
+ class MeikyuKingdomBasic
4
+ # 単語表1(D66)
5
+ # override
6
+ def mk_word_1_table(num)
7
+ table = [
8
+ [11, "魔法"],
9
+ [12, "おめかし"],
10
+ [13, "狭いところ"],
11
+ [14, "夜更かし"],
12
+ [15, "節約"],
13
+ [16, "会議"],
14
+ [22, "ヒゲ"],
15
+ [23, "孤独"],
16
+ [24, "説教"],
17
+ [25, "自分探し"],
18
+ [26, "異性"],
19
+ [33, "ヒラヒラした服"],
20
+ [34, "平穏な生活"],
21
+ [35, "自分語り"],
22
+ [36, "風呂"],
23
+ [44, "古いもの"],
24
+ [45, "頭が悪い人"],
25
+ [46, "暗闇"],
26
+ [55, "許嫁"],
27
+ [56, "民"],
28
+ [66, "バカ"],
29
+ ]
30
+ return get_table_by_number(num, table)
31
+ end
32
+
33
+ # 単語表2(D66)
34
+ # override
35
+ def mk_word_2_table(num)
36
+ table = [
37
+ [11, "科学"],
38
+ [12, "読書"],
39
+ [13, "広いところ"],
40
+ [14, "早起き"],
41
+ [15, "ムダ"],
42
+ [16, "仕事"],
43
+ [22, "陰謀"],
44
+ [23, "みんなで集まること"],
45
+ [24, "ナンパ"],
46
+ [25, "昔話"],
47
+ [26, "同性"],
48
+ [33, "武器の手入れ"],
49
+ [34, "戦争"],
50
+ [35, "人の噂"],
51
+ [36, "散髪"],
52
+ [44, "新しいもの"],
53
+ [45, "頭がよい人"],
54
+ [46, "光"],
55
+ [55, "親"],
56
+ [56, "外国人"],
57
+ [66, "ホラ話"],
58
+ ]
59
+ return get_table_by_number(num, table)
60
+ end
61
+
62
+ # 単語表3(D66)
63
+ # override
64
+ def mk_word_3_table(num)
65
+ table = [
66
+ [11, "子供"],
67
+ [12, "弱い人"],
68
+ [13, "処刑"],
69
+ [14, "叙事詩"],
70
+ [15, "煙草"],
71
+ [16, "病院"],
72
+ [22, "演説"],
73
+ [23, "酒盛り"],
74
+ [24, "料理"],
75
+ [25, "武芸"],
76
+ [26, "田舎"],
77
+ [33, "自分の国"],
78
+ [34, "伝統"],
79
+ [35, "お祭り"],
80
+ [36, "告げ口"],
81
+ [44, "自分の声"],
82
+ [45, "マヨネーズ"],
83
+ [46, "おせっかい"],
84
+ [55, "猫"],
85
+ [56, "混沌"],
86
+ [66, "占い"],
87
+ ]
88
+ return get_table_by_number(num, table)
89
+ end
90
+
91
+ # 単語表4(D66)
92
+ # override
93
+ def mk_word_4_table(num)
94
+ table = [
95
+ [11, "年寄り"],
96
+ [12, "強い人"],
97
+ [13, "空想"],
98
+ [14, "冗談"],
99
+ [15, "クスリ"],
100
+ [16, "怪物"],
101
+ [22, "一騎打ち"],
102
+ [23, "賭け事"],
103
+ [24, "歌"],
104
+ [25, "勉強"],
105
+ [26, "都会"],
106
+ [33, "冒険"],
107
+ [34, "ダイナマイト大帝"],
108
+ [35, "盗み"],
109
+ [36, "言い訳"],
110
+ [44, "隣のキャラのジョブ"],
111
+ [45, "小鬼"],
112
+ [46, "謝ること"],
113
+ [55, "隣のキャラのクラス"],
114
+ [56, "星"],
115
+ [66, "肉"],
116
+ ]
117
+ return get_table_by_number(num, table)
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,67 @@
1
+ module BCDice
2
+ module GameSystem
3
+ class OneWayHeroics < Base
4
+ class DungeonTable
5
+ attr_reader :key
6
+
7
+ def initialize(name, key, type, items)
8
+ @name = name
9
+ @key = key
10
+ @items = items.freeze
11
+
12
+ m = /(\d+)D(\d+)/i.match(type)
13
+ unless m
14
+ raise ArgumentError, "Unexpected table type: #{type}"
15
+ end
16
+
17
+ @times = m[1].to_i
18
+ @sides = m[2].to_i
19
+ end
20
+
21
+ def roll_with_day(day, randomizer)
22
+ value = randomizer.roll_sum(@times, @sides)
23
+ value += @times if day >= 4
24
+
25
+ index = value - @times
26
+ return "#{@name}(#{value}) > #{@items[index]}"
27
+ end
28
+ end
29
+
30
+ DUNGEON_TABLE = DungeonTable.new(
31
+ "ダンジョン表",
32
+ "DNGN",
33
+ "1D6",
34
+ [
35
+ "犬小屋(155ページ)",
36
+ "犬小屋(155ページ)",
37
+ "「ダンジョン遭遇表」(153ページ)へ移動。小型ダンジョンだ。",
38
+ "「ダンジョン遭遇表」(153ページ)へ移動。小型ダンジョンだ。",
39
+ "「ダンジョン遭遇表」(153ページ)へ移動。ここは中型ダンジョンなので、モンスターが出現した場合、数が1体増加する。さらにイベントの経験値が1増加する。",
40
+ "「ダンジョン遭遇表」(153ページ)へ移動。ここは大型ダンジョンなので、モンスターが出現した場合、数が2体増加する。さらにイベントの経験値が2増加する。",
41
+ "牢獄遭遇表へ移動(154ページ)。牢獄つきダンジョン。",
42
+ ]
43
+ )
44
+
45
+ DUNGEON_TABLE_PLUS = DungeonTable.new(
46
+ "ダンジョン表プラス",
47
+ "DNGNP",
48
+ "2D6",
49
+ [
50
+ "犬小屋(基本155ページ)",
51
+ "犬小屋(基本155ページ)",
52
+ "犬小屋(基本155ページ)",
53
+ "犬小屋(基本155ページ)",
54
+ "「ダンジョン遭遇表」(基本153ページ)へ移動。小型ダンジョンだ。",
55
+ "「ダンジョン遭遇表」(基本153ページ)へ移動。小型ダンジョンだ。",
56
+ "「ダンジョン遭遇表」(基本153ページ)へ移動。ここは中型ダンジョンのため、モンスターが出現した場合、数が1体増加する。またイベントの【経験値】が1増加する。",
57
+ "「ダンジョン遭遇表」(基本153ページ)へ移動。ここは大型ダンジョンのため、モンスターが出現した場合、数が2体増加する。またイベントの【経験値】が2増加する。",
58
+ "「ダンジョン遭遇表」(基本153ページ)へ移動。近くに寄っただけで吸い込まれる罠のダンジョンだ。「ダンジョン遭遇表」を使用したあと、中央にあるモニュメントに触れて転移して出るか、【鉄格子】と戦闘して出るか選択する。転移した場合は闇の目の前に出てしまい、全力ダッシュで【ST】を1D6消費する。【鉄格子】との戦闘では逃走を選択できない。",
59
+ "「ダンジョン遭遇表」(基本153ページ)へ移動。水浸しのダンジョンで、「ダンジョン遭遇表」を使用した直後に【ST】が3減少する。「水泳」",
60
+ "水路に囲まれた水上遺跡だ。なかに入るなら【ST】を4消費(「水泳」)してから「ダンジョン遭遇表」(基本153ページ)へ移動。イベントの判定に成功すると追加で【豪華な宝箱】が1つ出現し、戦闘か開錠を試みられる。",
61
+ "「牢獄遭遇表」(基本154ページ)へ移動。牢獄つきダンジョンだ。",
62
+ "砂の遺跡にたどりつき、「牢獄遭遇表」(基本154ページ)へ移動。モンスターが出現した場合、数が2体増加する。またイベントの【経験値】が2増加する。イベントの判定に成功すると追加で【珍しい箱】が1つ出現し、戦闘か開錠を試みられる。",
63
+ ]
64
+ )
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,166 @@
1
+ module BCDice
2
+ module GameSystem
3
+ class OneWayHeroics < Base
4
+ class RandomEventTable
5
+ def initialize(name, type, items)
6
+ @name = name
7
+ @items = items.freeze
8
+
9
+ m = /(\d+)D(\d+)/i.match(type)
10
+ unless m
11
+ raise ArgumentError, "Unexpected table type: #{type}"
12
+ end
13
+
14
+ @times = m[1].to_i
15
+ @sides = m[2].to_i
16
+ end
17
+
18
+ def roll_with_day(day, randomizer)
19
+ value = randomizer.roll_sum(@times, @sides)
20
+ index = value - 1
21
+
22
+ chosen = @items[index]
23
+ chosen =
24
+ if chosen.respond_to?(:roll)
25
+ chosen.roll(randomizer)
26
+ elsif chosen.respond_to?(:roll_with_day)
27
+ chosen.roll_with_day(day, randomizer)
28
+ else
29
+ chosen
30
+ end
31
+
32
+ return "#{@name}(#{value}) > #{chosen}"
33
+ end
34
+ end
35
+
36
+ class BranchByDay
37
+ def initialize(text, less_than_equal, greater)
38
+ @text = text
39
+ @greater = greater
40
+ @less_than_equal = less_than_equal
41
+ end
42
+
43
+ def roll_with_day(day, randomizer)
44
+ value = randomizer.roll_once(6)
45
+ chosen = choise(value, day)
46
+
47
+ chosen =
48
+ if chosen.respond_to?(:roll_with_day)
49
+ "#{chosen.key}#{day} > #{chosen.roll_with_day(day, randomizer)}"
50
+ elsif chosen.ascii_only?
51
+ [chosen, TABLES[chosen].roll(randomizer)].join(" > ")
52
+ else
53
+ chosen
54
+ end
55
+
56
+ result = <<~RESULT.chomp
57
+ #{@text} >
58
+ 1D6 > #{value} > #{branch_result(value, day)} >
59
+ #{chosen}
60
+ RESULT
61
+ return result
62
+ end
63
+
64
+ def choise(value, day)
65
+ raise NotImplementedError
66
+ end
67
+
68
+ def branch_result(value, day)
69
+ raise NotImplementedError
70
+ end
71
+ end
72
+
73
+ class BranchByElapsedDays < BranchByDay
74
+ def choise(value, day)
75
+ value > day ? @greater : @less_than_equal
76
+ end
77
+
78
+ def branch_result(value, day)
79
+ if value > day
80
+ "日数[#{day}]を超えている"
81
+ else
82
+ "日数[#{day}]以下"
83
+ end
84
+ end
85
+ end
86
+
87
+ class BranchByDayParity < BranchByDay
88
+ def choise(value, _)
89
+ value.odd? ? @greater : @less_than_equal
90
+ end
91
+
92
+ def branch_result(value, _)
93
+ if value.odd?
94
+ "奇数"
95
+ else
96
+ "偶数"
97
+ end
98
+ end
99
+ end
100
+
101
+ class MoveToTableWithDay
102
+ def initialize(text, table)
103
+ @text = text
104
+ @table = table
105
+ end
106
+
107
+ def roll_with_day(day, randomizer)
108
+ <<~RESULT.chomp
109
+ #{@text} >
110
+ #{@table.key}#{day} > #{@table.roll_with_day(day, randomizer)}
111
+ RESULT
112
+ end
113
+ end
114
+
115
+ RANDOM_EVENT_TABLE = RandomEventTable.new(
116
+ "ランダムイベント表",
117
+ "1D6",
118
+ [
119
+ BranchByElapsedDays.new(
120
+ "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「施設表」へ移動。【日数】を超えていれば「ダンジョン表」(153ページ)へ移動。",
121
+ "FCLT",
122
+ DUNGEON_TABLE
123
+ ),
124
+ BranchByElapsedDays.new(
125
+ "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら「世界の旅表」(157ページ)へ移動。【日数】を超えていれば「野外遭遇表(OUTENC)」(155ページ)へ移動。",
126
+ "「世界の旅表」(157ページ)へ。",
127
+ "OUTENC"
128
+ ),
129
+ MoveToTable.new("「施設表」へ移動。", "FCLT"),
130
+ "「世界の旅表」(157ページ)へ移動。",
131
+ MoveToTable.new("「野外遭遇表」(155ページ)へ移動。", "OUTENC"),
132
+ MoveToTableWithDay.new("「ダンジョン表」(152ページ)へ移動。", DUNGEON_TABLE),
133
+ ]
134
+ )
135
+
136
+ RANDOM_EVENT_TABLE_PLUS = RandomEventTable.new(
137
+ "ランダムイベント表プラス",
138
+ "1D6",
139
+ [
140
+ BranchByElapsedDays.new(
141
+ "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら施設表プラス(022ページ)へ移動。【経過日数】を超えていればダンジョン表プラス(025ページ)へ移動",
142
+ "FCLTP",
143
+ DUNGEON_TABLE_PLUS
144
+ ),
145
+ BranchByElapsedDays.new(
146
+ "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら世界の旅表(基本157ページ)へ移動。【経過日数】を超えていれば野外遭遇表(基本155ページ)へ移動",
147
+ "「世界の旅表」(157ページ)へ。",
148
+ "OUTENC"
149
+ ),
150
+ BranchByElapsedDays.new(
151
+ "さらに1D6を振る。現在PCがいるエリアの【日数】以下なら世界の旅表2(028ページ)へ移動。【経過日数】を超えていれば野外遭遇表プラス(025ページ)へ移動",
152
+ "世界の旅表2(028ページ)へ。",
153
+ "OUTENCP"
154
+ ),
155
+ BranchByDayParity.new(
156
+ "さらに1D6を振る。奇数なら世界の旅表(基本157ページ)へ移動。偶数なら世界の旅表2(028ページ)へ移動",
157
+ "世界の旅表(基本157ページ)へ。",
158
+ "世界の旅表2(028ページ)へ。"
159
+ ),
160
+ MoveToTable.new("施設表プラスへ移動(022ページ)", "FCLTP"),
161
+ MoveToTableWithDay.new("ダンジョン表プラスへ移動(025ページ)", DUNGEON_TABLE_PLUS)
162
+ ]
163
+ )
164
+ end
165
+ end
166
+ end
@@ -0,0 +1,668 @@
1
+ module BCDice
2
+ module GameSystem
3
+ class OneWayHeroics < Base
4
+ class GoldFlow
5
+ def initialize(times, action)
6
+ @times = times
7
+ @action = action
8
+ end
9
+
10
+ def roll(randomizer)
11
+ dice_list = randomizer.roll_barabara(@times, 6)
12
+ dice_total = dice_list.sum()
13
+ gold = dice_total * 100
14
+
15
+ sequence = [
16
+ "#{@times}D6に100を掛け、それだけの【所持金】を#{@action}",
17
+ "#{@times}D6[#{dice_list.join(',')}]*100",
18
+ "【所持金】#{gold} を#{@action}"
19
+ ]
20
+
21
+ return sequence.join(" > ")
22
+ end
23
+ end
24
+
25
+ class StatusDown
26
+ def initialize(status, times)
27
+ @status = status
28
+ @times = times
29
+ end
30
+
31
+ def roll(randomizer)
32
+ dice_list = randomizer.roll_barabara(@times, 6)
33
+ total = dice_list.sum()
34
+
35
+ sequence = [
36
+ "#{@status}が#{@times}D6減少する",
37
+ "#{@times}D6[#{dice_list.join(',')}]",
38
+ "#{@status}が #{total} 減少する"
39
+ ]
40
+
41
+ return sequence.join(" > ")
42
+ end
43
+ end
44
+
45
+ class MoveToTable
46
+ def initialize(text, table_key)
47
+ @text = text
48
+ @table_key = table_key
49
+ end
50
+
51
+ def roll(randomizer)
52
+ <<~RESULT.chomp
53
+ #{@text} >
54
+ #{@table_key} > #{TABLES[@table_key].roll(randomizer)}
55
+ RESULT
56
+ end
57
+ end
58
+
59
+ TABLES = {
60
+ "FT" => DiceTable::ChainTable.new(
61
+ "ファンブル表",
62
+ "1D6",
63
+ [
64
+ "装備以外のアイテムのうちプレイヤー指定の1つを失う",
65
+ "装備のうちプレイヤー指定の1つを失う",
66
+ GoldFlow.new(1, "失う"), # "1D6に100を掛け、それだけの【所持金】を失う",
67
+ GoldFlow.new(1, "拾う"), # "1D6に100を掛け、それだけの【所持金】を拾う",
68
+ "【経験値】2を獲得する",
69
+ "【経験値】4を獲得する",
70
+ ]
71
+ ),
72
+ "DC" => DiceTable::ChainTable.new(
73
+ "魔王追撃表",
74
+ "1D6",
75
+ [
76
+ "装備以外のアイテムのうちGM指定の1つを失う",
77
+ "装備のうちGM指定の1つを失う",
78
+ GoldFlow.new(2, "失う"), # "2D6に100を掛け、それだけの【所持金】を失う",
79
+ StatusDown.new("【LIFE】", 1), # 【LIFE】が1D6減少する
80
+ StatusDown.new("【ST】", 1), # 【ST】が1D6減少する
81
+ StatusDown.new("【LIFE】", 2) # 【LIFE】が2D6減少する
82
+ ]
83
+ ),
84
+ "PR" => DiceTable::Table.new(
85
+ "進行ルート表",
86
+ "1D6",
87
+ [
88
+ "少し荒れた地形が続く。【日数】から【筋力】を引いただけ【ST】が減少する(最低0)",
89
+ "穏やかな地形が続く。【日数】から【敏捷】を引いただけ【ST】が減少する(最低0)",
90
+ "険しい岩山だ。【日数】に1を足して【生命】を引いただけ【ST】が減少する(最低0)「登山」",
91
+ "山で迷った。【日数】に2を足して【知力】を引いただけ【ST】が減少する(最低0)「登山」",
92
+ "川を泳ぐ。【日数】に1を足して【意志】を引いただけ【ST】が減少する(最低0)「水泳」",
93
+ "広い川を船で渡る。【日数】に2を足して【魅力】を引いただけ【ST】が減少する(最低0)「水泳」"
94
+ ]
95
+ ),
96
+ "TT" => DiceTable::Table.new(
97
+ "会話テーマ表",
98
+ "1D6",
99
+ [
100
+ "身体の悩みごとについて話す。【筋力】で判定。",
101
+ "仕事の悩みごとについて話す。【敏捷】で判定。",
102
+ "家族の悩みごとについて話す。【生命】で判定。",
103
+ "勇者としてこれでいいのか的悩みごとを話す。【知力】で判定。",
104
+ "友人関係の悩みごとを話す。【意志】で判定。",
105
+ "恋の悩みごとを話す。【魅力】で判定。"
106
+ ]
107
+ ),
108
+ "EC" => DiceTable::Table.new(
109
+ "逃走判定表",
110
+ "1D6",
111
+ [
112
+ "崖を登れば逃げられそうだ。【筋力】を使用する。",
113
+ "障害物はない。走るしかない。【敏捷】を使用する。",
114
+ "しつこく追われる。【生命】を使用する。",
115
+ "隠れられる地形がある。【知力】を使用する。",
116
+ "背中を向ける勇気が出るか? 【意志】を使用す",
117
+ "もう人徳しか頼れない。【魅力】を使用する。"
118
+ ]
119
+ ),
120
+ "RNPC" => DiceTable::Table.new(
121
+ "ランダムNPC特徴表",
122
+ "2D6",
123
+ [
124
+ "【物持ちの】",
125
+ "【目のいい】",
126
+ "【弱そうな】",
127
+ "【宝石好きな】",
128
+ "【エッチな】",
129
+ "【ケチな】",
130
+ "【変態の】",
131
+ "【金持ちの】",
132
+ "【強そうな】",
133
+ "【目の悪い】",
134
+ "【すばやい】"
135
+ ]
136
+ ),
137
+ "SCT" => DiceTable::Table.new(
138
+ "偵察表",
139
+ "1D6",
140
+ [
141
+ "山に突き当たる。「登山」判定:【筋力】 ジャッジ:山を登る描写。",
142
+ "川を流れ下る。「水泳」判定:【敏捷】 ジャッジ:川でピンチに陥る描写。",
143
+ "広い湖だ……。「水泳」判定:【生命】 ジャッジ:湖面を泳ぐ描写。",
144
+ "山の楽なルートを探そう。「登山」判定:【知力】 ジャッジ:山の豆知識。",
145
+ "迫る闇から恐怖のあまり目を離せない。判定:【意志】 ジャッジ:勇者としての決意。",
146
+ "任意のNPCに会って情報を聞く。判定:【魅力】 ジャッジ:相手を立てる会話。"
147
+ ]
148
+ ),
149
+ "FCLT" => DiceTable::Table.new(
150
+ "施設表",
151
+ "2D6",
152
+ [
153
+ "聖なる神殿(152ページ)。",
154
+ "魔王の力を封じた神殿(152ページ)。",
155
+ "耳長たちの村(152ページ)。",
156
+ "「村遭遇表」へ移動。大きな街なので村遭遇表を2回使用し、好きな結果を選べる。",
157
+ "「村遭遇表」へ移動。小さな村だ。",
158
+ "エリアの地形が「雪原」なら雪国の小屋(152ページ)。エリアの地形が「山岳」なら山小屋(152ページ)。それ以外の地形なら「村遭遇表」へ移動。この村は「石の小屋」だ。",
159
+ "村遭遇表」へ移動。小さな村だ。",
160
+ "村遭遇表」へ移動。大きな街なので村遭遇表を2回使用し、好きな結果を選べる。",
161
+ "滅びた石の小屋(152ページ)。",
162
+ "滅びた小さな村(152ページ)。",
163
+ "闇ギルド(152ページ)。"
164
+ ]
165
+ ),
166
+ "FCLTP" => DiceTable::D66Table.new(
167
+ "施設表プラス",
168
+ D66SortType::ASC,
169
+ {
170
+ 11 => "聖なる神殿(基本152ページ)",
171
+ 12 => "魔王の力を封じた神殿(基本152ページ)",
172
+ 13 => "耳長たちの村(基本152ページ)判定成功時に【耳長の軽い弓】【耳長の杖】を購入可能",
173
+ 14 => "村遭遇表へ移動(基本151ページ)大きな街なので村遭遇表を2回振り、好きな結果を選べる",
174
+ 15 => "村遭遇表へ移動(基本151ページ)小さな村",
175
+ 16 => "エリアの地形が雪原なら雪国の小屋(基本152ページ)エリアの地形が山岳なら山小屋(基本152ページ)それ以外の地形なら石の小屋、村遭遇表へ移動(基本151ページ)",
176
+ 22 => "村遭遇表へ移動(基本151ページ)小さな村",
177
+ 23 => "村遭遇表へ移動(基本151ページ)大きな街なので村遭遇表を2回振り、好きな結果を選べる",
178
+ 24 => "滅びた石の小屋(基本152ページ)",
179
+ 25 => "滅びた小さな村(基本152ページ)",
180
+ 26 => "闇ギルド(基本152ページ)判定成功時に一度だけ【闇ギルド袋屋】に3000シルバ支払い【所持重量】を1増加することができる。",
181
+ 33 => "小さな店遭遇表プラスへ移動(023ページ)",
182
+ 34 => "酒場遭遇表プラスへ移動",
183
+ 35 => "酒場遭遇表プラスへ移動",
184
+ 36 => "錬金おばばの家(024ページ)",
185
+ 44 => "鍛冶屋の家(024ページ)",
186
+ 45 => "半獣人の隠れ家(024ページ)",
187
+ 46 => "罪人の街(024ページ)",
188
+ 55 => "封印の街(024ページ)",
189
+ 56 => "水上の街(024ページ)",
190
+ 66 => "人魚の集落(024ページ)",
191
+ }
192
+ ),
193
+ "OUTENC" => DiceTable::ChainTable.new(
194
+ "野外遭遇表",
195
+ "1D6",
196
+ [
197
+ MoveToTable.new("エリアの地形ごとの野外モンスター表へ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表(156ページ)を使用する。", "MONFT"),
198
+ "エリアの地形ごとの野外モンスター表へ移動",
199
+ "エリアの地形ごとの野外モンスター表へ移動",
200
+ "アンデッドの群れ(156ページ)",
201
+ "盗賊の群れ(156ページ)",
202
+ MoveToTable.new("希少動物表(基本156ページ)へ移動", "RANI"),
203
+ ]
204
+ ),
205
+ "OUTENCP" => DiceTable::ChainTable.new(
206
+ "野外遭遇表プラス",
207
+ "1D6",
208
+ [
209
+
210
+ MoveToTable.new("エリアの地形ごとの野外モンスター表プラスへ移動。モンスターのうち1体にランダムな特徴がつく。モンスター特徴表プラス(027ページ)を使用する。", "MONFTP"),
211
+ "エリアの地形ごとの野外モンスター表プラスへ移動し、出現したモンスターとの戦闘が発生する",
212
+ "スライムモンスター表プラス(027ページ)へ移動",
213
+ "アンデッドの群れ(基本156ページ)",
214
+ "盗賊の群れ(基本156ページ)",
215
+ MoveToTable.new("希少動物表(基本156ページ)へ移動", "RANI"),
216
+ ]
217
+ ),
218
+ "MONFT" => DiceTable::D66Table.new(
219
+ "モンスター特徴表",
220
+ D66SortType::ASC,
221
+ {
222
+ 11 => "【エッチな】",
223
+ 12 => "【変態の】",
224
+ 13 => "【弱そうな】",
225
+ 14 => "【目のいい】",
226
+ 15 => "【目の悪い】",
227
+ 16 => "【強そうな】",
228
+ 22 => "【強そうな】",
229
+ 23 => "【宝石好きな】",
230
+ 24 => "【幻の】",
231
+ 25 => "【違法な】",
232
+ 26 => "【イカした】",
233
+ 33 => "【物持ちの】",
234
+ 34 => "【炎を吐く】",
235
+ 35 => "【必中の】",
236
+ 36 => "【すばやい】",
237
+ 44 => "【やたら硬い】",
238
+ 45 => "【名の知れた】",
239
+ 46 => "【凶悪な】",
240
+ 55 => "【賞金首の】",
241
+ 56 => "【古代種の】",
242
+ 66 => "【最強の】",
243
+ }
244
+ ),
245
+ "MONFTP" => DiceTable::D66Table.new(
246
+ "モンスター特徴表プラス",
247
+ D66SortType::ASC,
248
+ {
249
+ 11 => "【エッチな】(基本178ページ)",
250
+ 12 => "【変態の】(基本178ページ)",
251
+ 13 => "【目のいい】(基本178ページ)",
252
+ 14 => "【目の悪い】(基本178ページ)",
253
+ 15 => "【強そうな】(基本178ページ)",
254
+ 16 => "【宝石好きな】(基本178ページ)",
255
+ 22 => "【幻の】(基本178ページ)",
256
+ 23 => "【違法な】(基本178ページ)",
257
+ 24 => "【イカした】(基本178ページ)",
258
+ 25 => "【物持ちの】(基本178ページ)",
259
+ 26 => "【炎を吐く】(基本178ページ)",
260
+ 33 => "【やたら硬い】(基本178ページ)",
261
+ 34 => "【古代種の】(基本178ページ)",
262
+ 35 => "【最強の】(基本178ページ)",
263
+ 36 => "【異国風の】(047ページ)",
264
+ 44 => "【毛深い】(047ページ)",
265
+ 45 => "【耐火の】(047ページ)",
266
+ 46 => "【耐雷の】(047ページ) ",
267
+ 55 => "【浮遊の】(047ページ)",
268
+ 56 => "【臭い】(047ページ)",
269
+ 66 => "【恐怖の】(047ページ)",
270
+ }
271
+ ),
272
+ "RANI" => DiceTable::RangeTable.new(
273
+ "希少動物表",
274
+ "1D6",
275
+ [
276
+ [1, "【『緑の森』隊長】1体と遭遇する。今回のセッションで【雪ウサギ】【山岳ゴート】【遺跡白馬】【草原カワウソ】【砂漠キツネ】のいずれかを倒したことがあれば、戦闘が発生する。戦闘にならなかった場合はなごやかに別れる。"],
277
+ [2..3, "【『緑の森』団員】1体と遭遇する。今回のセッションで【雪ウサギ】【山岳ゴート】【遺跡白馬】【草原カワウソ】【砂漠キツネ】のいずれかを倒したことがあれば、戦闘が発生する。戦闘にならなかった場合はなごやかに別れる。"],
278
+ [4..6, "地形によって異なる希少動物が1体出現する。雪原なら【雪ウサギ】、山岳なら【山岳ゴート】、遺跡なら【遺跡白馬】、草原なら【草原カワウソ】、砂漠と荒野は【砂漠キツネ】。それ以外は【緑の森団員】となる。戦闘を挑んでもいいし、見送ってもいい。"]
279
+ ]
280
+ ),
281
+ "DROP" => DiceTable::ChainTable.new(
282
+ "ドロップアイテム表",
283
+ "1D6",
284
+ [
285
+ MoveToTable.new("武器ドロップ表へ移動", "DROPWP"),
286
+ MoveToTable.new("武器ドロップ表へ移動", "DROPWP"),
287
+ MoveToTable.new("防具ドロップ表へ移動", "DROPAR"),
288
+ MoveToTable.new("食品ドロップ表へ移動", "DROPFD"),
289
+ MoveToTable.new("巻物ドロップ表へ移動", "DROPSC"),
290
+ MoveToTable.new("その他ドロップ表へ移動", "DROPOT"),
291
+ ]
292
+ ),
293
+ "DROPWP" => DiceTable::D66Table.new(
294
+ "武器ドロップ表",
295
+ D66SortType::ASC,
296
+ {
297
+ 11 => "【さびた小剣】",
298
+ 12 => "【さびた長剣】",
299
+ 13 => "【さびた大剣】",
300
+ 14 => "【長い棒】",
301
+ 15 => "【ダガー】",
302
+ 16 => "【木こりの大斧】",
303
+ 22 => "【ショートブレイド】",
304
+ 23 => "【木の杖】",
305
+ 24 => "【狩人の弓】",
306
+ 25 => "【レイピア】",
307
+ 26 => "【携帯弓】",
308
+ 33 => "【ロングブレイド】",
309
+ 34 => "【スレンドスピア】",
310
+ 35 => "【バトルアックス】",
311
+ 36 => "【軍用剛弓】",
312
+ 44 => "【グランドブレイド】",
313
+ 45 => "【祈りの杖】",
314
+ 46 => "【ヘビィボウガン】",
315
+ 55 => "【シルバーランス】",
316
+ 56 => "【イーグルブレイド】",
317
+ 66 => "【クレセントアクス】"
318
+ }
319
+ ),
320
+ "DROPAR" => DiceTable::D66Table.new(
321
+ "防具ドロップ表",
322
+ D66SortType::ASC,
323
+ {
324
+ 11 => "【旅人の服】",
325
+ 12 => "【旅人の服】",
326
+ 13 => "【旅人の服】",
327
+ 14 => "【レザーシールド】",
328
+ 15 => "【レザーシールド】",
329
+ 16 => "【騎士のコート】",
330
+ 22 => "【騎士のコート】",
331
+ 23 => "【スケイルシールド】",
332
+ 24 => "【スケイルシールド】",
333
+ 25 => "【レザーベスト】",
334
+ 26 => "【レザーベスト】",
335
+ 33 => "【ヘビィシールド】",
336
+ 34 => "【チェインクロス】",
337
+ 35 => "【チェインクロス】",
338
+ 36 => "【試練の腕輪】",
339
+ 44 => "【精霊のローブ】",
340
+ 45 => "【必殺の腕輪】",
341
+ 46 => "【ギガントプレート】",
342
+ 55 => "【破壊の腕輪】",
343
+ 56 => "【理力の腕輪】",
344
+ 66 => "【加速の腕輪】"
345
+ }
346
+ ),
347
+ "DROPHW" => DiceTable::Table.new(
348
+ "聖武具ドロップ表",
349
+ "2D6",
350
+ [
351
+ "【紅き太陽の剣】",
352
+ "【紅き太陽の剣】",
353
+ "【聖剣カレドヴルフ】 ",
354
+ "【聖斧エルサーベス】 ",
355
+ "【水霊のマント】",
356
+ "【大地の鎧】",
357
+ "【大気の盾】",
358
+ "【聖弓ル・アルシャ】",
359
+ "【聖槍ヴァルキウス】",
360
+ "【聖なる月の剣】",
361
+ "【聖なる月の剣】"
362
+ ]
363
+ ),
364
+ "DROPFD" => DiceTable::D66Table.new(
365
+ "食品ドロップ表",
366
+ D66SortType::ASC,
367
+ {
368
+ 11 => "【枯れた草】",
369
+ 12 => "【こげた草】",
370
+ 13 => "【サボテンの肉】",
371
+ 14 => "【動物の肉】",
372
+ 15 => "【癒しの草】、地形が火山なら【こげた草】",
373
+ 16 => "【癒しの草】、地形が火山なら【こげた草】、地形が雪原なら【スノークリスタ草】",
374
+ 22 => "【スタミナ草】、地形が火山なら【こげた草】",
375
+ 23 => "【スタミナ草】、地形が火山なら【こげた草】、地形が雪原なら【スノークリスタ草】",
376
+ 24 => "【触手の草】、地形が火山なら【こげた草】",
377
+ 25 => "【触手の草】、地形が火山なら【こげた草】、地形が雪原なら【スノークリスタ草】",
378
+ 26 => "【スタミナのアンプル】",
379
+ 33 => "【癒しのアンプル】",
380
+ 34 => "【癒しのアンプル】",
381
+ 35 => "【ナユタの実】、地形が火山なら【こげた草】",
382
+ 36 => "【ナユタの実】、地形が火山なら【こげた草】",
383
+ 44 => "【火炎のアンプル】",
384
+ 45 => "【強酸のアンプル】",
385
+ 46 => "【とぶクスリ】",
386
+ 55 => "【竜炎のアンプル】",
387
+ 56 => "【おいしいお弁当】",
388
+ 66 => "【自然治癒のアンプル】"
389
+ }
390
+ ),
391
+ "DROPSC" => DiceTable::D66Table.new(
392
+ "巻物ドロップ表",
393
+ D66SortType::ASC,
394
+ {
395
+ 11 => "【石壁の巻物】",
396
+ 12 => "【石壁の巻物】",
397
+ 13 => "【周辺の地図】",
398
+ 14 => "【周辺の地図】",
399
+ 15 => "【周辺の地図】",
400
+ 16 => "【火炎付与の巻物】",
401
+ 22 => "【混乱の巻物】",
402
+ 23 => "【剣の巻物】",
403
+ 24 => "【剣の巻物】",
404
+ 25 => "【鎧の巻物】",
405
+ 26 => "【鎧の巻物】",
406
+ 33 => "【応急修理の巻物】",
407
+ 34 => "【応急修理の巻物】",
408
+ 35 => "【移動不能付与の巻物】",
409
+ 36 => "【移動不能付与の巻物】",
410
+ 44 => "【宝の地図】",
411
+ 45 => "【宝の地図】",
412
+ 46 => "【召喚の巻物】",
413
+ 55 => "【剣の王の巻物】",
414
+ 56 => "【守りの神の巻物】",
415
+ 66 => "【高度修復の巻物】"
416
+ }
417
+ ),
418
+ "DROPOT" => DiceTable::D66Table.new(
419
+ "その他ドロップ表",
420
+ D66SortType::ASC,
421
+ {
422
+ 11 => "【大きな石】、地形が火山なら【くすんだ宝石】",
423
+ 12 => "【大きな石】、地形が火山なら【くすんだ宝石】",
424
+ 13 => "【大きな石】、地形が火山なら【美しい宝石】",
425
+ 14 => "【木製の矢】",
426
+ 15 => "【理力の矢】",
427
+ 16 => "【鉄製の矢】",
428
+ 22 => "【投げナイフ】",
429
+ 23 => "【爆弾矢】",
430
+ 24 => "【くすんだ宝石】",
431
+ 25 => "【盾修復キット】",
432
+ 26 => "【上質の研ぎ石】",
433
+ 33 => "【エルザイト爆弾】",
434
+ 34 => "【セーブクリスタル】",
435
+ 35 => "【試練の腕輪】",
436
+ 36 => "【必殺の腕輪】",
437
+ 44 => "【破壊の腕輪】",
438
+ 45 => "【理力の腕輪】",
439
+ 46 => "【加速の腕輪】",
440
+ 55 => "【美しい宝石】",
441
+ 56 => "【封印のカギ】",
442
+ 66 => "【闇ギルド会員証】"
443
+ }
444
+ ),
445
+ "DROPP" => DiceTable::D66Table.new(
446
+ "ドロップアイテム表プラス",
447
+ D66SortType::ASC,
448
+ {
449
+ 11 => MoveToTable.new("武器ドロップ表", "DROPWP"),
450
+ 12 => MoveToTable.new("武器ドロップ表", "DROPWP"),
451
+ 13 => MoveToTable.new("武器ドロップ表2", "DROPWP2"),
452
+ 14 => MoveToTable.new("武器ドロップ表2", "DROPWP2"),
453
+ 15 => MoveToTable.new("防具ドロップ表", "DROPAR"),
454
+ 16 => MoveToTable.new("防具ドロップ表", "DROPAR"),
455
+ 22 => MoveToTable.new("防具ドロップ表2", "DROPAR2"),
456
+ 23 => MoveToTable.new("防具ドロップ表2", "DROPAR2"),
457
+ 24 => MoveToTable.new("食品ドロップ表", "DROPFD"),
458
+ 25 => MoveToTable.new("食品ドロップ表", "DROPFD"),
459
+ 26 => MoveToTable.new("食品ドロップ表2", "DROPFD2"),
460
+ 33 => MoveToTable.new("食品ドロップ表2", "DROPFD2"),
461
+ 34 => MoveToTable.new("薬品ドロップ表プラス", "DROPDRP"),
462
+ 35 => MoveToTable.new("薬品ドロップ表プラス", "DROPDRP"),
463
+ 36 => MoveToTable.new("巻物ドロップ表", "DROPSC"),
464
+ 44 => MoveToTable.new("巻物ドロップ表", "DROPSC"),
465
+ 45 => MoveToTable.new("巻物ドロップ表2", "DROPSC2"),
466
+ 46 => MoveToTable.new("巻物ドロップ表2", "DROPSC2"),
467
+ 55 => MoveToTable.new("その他ドロップ表", "DROPOT"),
468
+ 56 => MoveToTable.new("その他ドロップ表", "DROPOT"),
469
+ 66 => MoveToTable.new("その他ドロップ表2", "DROPOT2")
470
+ }
471
+ ),
472
+ "DROPDRP" => DiceTable::D66Table.new(
473
+ "薬品ドロップ表プラス",
474
+ D66SortType::ASC,
475
+ {
476
+ 11 => "【燃料油のビン】",
477
+ 12 => "【燃料油のビン】",
478
+ 13 => "【燃料油のビン】",
479
+ 14 => "【弱体の薬】",
480
+ 15 => "【弱体の薬】",
481
+ 16 => "【弱体の薬】",
482
+ 22 => "【成長の薬】",
483
+ 23 => "【ベルセルクアンプル】",
484
+ 24 => "【ベルセルクアンプル】",
485
+ 25 => "【浮遊の薬】",
486
+ 26 => "【浮遊の薬】",
487
+ 33 => "【反動解消の薬】",
488
+ 34 => "【反動解消の薬】",
489
+ 35 => "【癒しの大ボトル】",
490
+ 36 => "【癒しの大ボトル】",
491
+ 44 => "【超元気のアンプル】",
492
+ 45 => "【超元気のアンプル】",
493
+ 46 => "【薬命酒】",
494
+ 55 => "【薬命酒】",
495
+ 56 => "【洗脳のクスリ】",
496
+ 66 => "【洗脳のクスリ】"
497
+ }
498
+ ),
499
+ "DROPSC2" => DiceTable::D66Table.new(
500
+ "巻物ドロップ表2",
501
+ D66SortType::ASC,
502
+ {
503
+ 11 => "【火炎波の巻物】",
504
+ 12 => "【悟りの巻物】",
505
+ 13 => "【理盾の巻物】",
506
+ 14 => "【泉の巻物】",
507
+ 15 => "【雷神の巻物】",
508
+ 16 => "【超激震の巻物】",
509
+ 22 => "【闇を阻む巻物】",
510
+ 23 => "【引きこもりの巻物】",
511
+ 24 => "【鋼鉄の巻物】",
512
+ 25 => "【回廊の巻物】",
513
+ 26 => "【騎士団の巻物】",
514
+ 33 => "【水泳能力の巻物】",
515
+ 34 => "【浮遊能力の巻物】",
516
+ 35 => "【治癒の書】",
517
+ 36 => "【浮遊の書】",
518
+ 44 => "【突風の書】",
519
+ 45 => "【睡眠の書】",
520
+ 46 => "【火炎の書】",
521
+ 55 => "【鋼鉄の書】",
522
+ 56 => "【加速の書】",
523
+ 66 => "【闇払いの書】"
524
+ }
525
+ ),
526
+ "DROPWP2" => DiceTable::D66Table.new(
527
+ "武器ドロップ表2",
528
+ D66SortType::ASC,
529
+ {
530
+ 11 => "【さびた巨大斧】",
531
+ 12 => "【さびた巨大斧】",
532
+ 13 => "【モコモコのバトン】",
533
+ 14 => "【モコモコのバトン】",
534
+ 15 => "【ベルセルクアクス】",
535
+ 16 => "【ベルセルクアクス】",
536
+ 22 => "【クナイ】",
537
+ 23 => "【クナイ】",
538
+ 24 => "【術殺槍】",
539
+ 25 => "【ウィンドスピア】",
540
+ 26 => "【ウィンドスピア】",
541
+ 33 => "【つるはし】",
542
+ 34 => "【つるはし】",
543
+ 35 => "【理力の剣】",
544
+ 36 => "【蒼い短刀】",
545
+ 44 => "【クリムゾンクロウ】",
546
+ 45 => "【ナユタの杖】",
547
+ 46 => "【ナユタの杖】",
548
+ 55 => "【一撃斧】",
549
+ 56 => "【ファイアブランド】",
550
+ 66 => "【ソードクロスボウ】"
551
+ }
552
+ ),
553
+ "DROPAR2" => DiceTable::D66Table.new(
554
+ "防具ドロップ表2",
555
+ D66SortType::ASC,
556
+ {
557
+ 11 => "【ボロボロの服】",
558
+ 12 => "【ボロボロの服】",
559
+ 13 => "【穴だらけの鎧】",
560
+ 14 => "【穴だらけの鎧】",
561
+ 15 => "【木製の追加装甲】",
562
+ 16 => "【木製の追加装甲】",
563
+ 22 => "【ガラスの鎧】",
564
+ 23 => "【ガラスの鎧】",
565
+ 24 => "【鉄板の追加装甲】",
566
+ 25 => "【鉄板の追加装甲】",
567
+ 26 => "【太陽のランタン】",
568
+ 33 => "【耐火服】",
569
+ 34 => "【獣の革のバッグ】",
570
+ 35 => "【重量ブーツ】",
571
+ 36 => "【冒険者のブーツ】",
572
+ 44 => "【ラバーブーツ】",
573
+ 45 => "【風のマント】",
574
+ 46 => "【狩人の服】",
575
+ 55 => "【ドラゴンスケイル】",
576
+ 56 => "【不育の腕輪】",
577
+ 66 => "【竜革の大きなバッグ】"
578
+ }
579
+ ),
580
+ "DROPHWP" => DiceTable::D66Table.new(
581
+ "聖武具ドロップ表プラス",
582
+ D66SortType::ASC,
583
+ {
584
+ 11 => "【大気の盾】",
585
+ 23 => "【聖剣カレドヴルフ】",
586
+ 36 => "【紅蓮の書】",
587
+ 12 => "【大気の盾】",
588
+ 24 => "【聖斧エルサーベス】",
589
+ 44 => "【聖弓ル・アルシャ】",
590
+ 13 => "【大地の鎧】",
591
+ 25 => "【聖斧エルサーベス】",
592
+ 45 => "【聖弓ル・アルシャ】",
593
+ 14 => "【大地の鎧】",
594
+ 26 => "【聖槍ヴァルキウス】",
595
+ 46 => "【聖なる月の剣】",
596
+ 15 => "【水霊のマント】",
597
+ 33 => "【聖槍ヴァルキウス】",
598
+ 55 => "【紅き太陽の剣】",
599
+ 16 => "【水霊のマント】",
600
+ 34 => "【聖槍ヴァルキウス】",
601
+ 56 => "【嵐の聖剣】",
602
+ 22 => "【聖剣カレドヴルフ】",
603
+ 35 => "【紅蓮の書】",
604
+ 66 => "【超重の聖斧】"
605
+ }
606
+ ),
607
+ "DROPFD2" => DiceTable::Table.new(
608
+ "食品ドロップ表2",
609
+ "1D6",
610
+ [
611
+ "【解毒の草】、地形が火 山なら【こげた草】、地 形が海岸なら【おいし い海藻】",
612
+ "【気付けの草】、地形が 火山なら【こげた草】、 地形が海岸なら【おい しい海藻】",
613
+ "【夜目の草】",
614
+ "【力が湧く草】",
615
+ "【集中の草】",
616
+ "【牛乳】"
617
+ ]
618
+ ),
619
+ "DROPOT2" => DiceTable::Table.new(
620
+ "その他 ドロップ表2",
621
+ "2D6",
622
+ [
623
+ "【五連の矢】",
624
+ "【炎の矢】",
625
+ "【聖なる投げ刃】",
626
+ "【物体破壊爆弾】",
627
+ "【閃光弾】",
628
+ "【聖なる短剣の破片】",
629
+ "【閃光弾】",
630
+ "【旋風の投げ刃】",
631
+ "【スーパーエルザイト 爆弾】",
632
+ "【炎の矢】",
633
+ "【五連の矢】"
634
+ ]
635
+ ),
636
+ "DROPRAREBOX2" => DiceTable::Table.new(
637
+ "珍しい箱ドロップ表2",
638
+ "2D6",
639
+ [
640
+ "聖武具ドロップ表プラ スへ",
641
+ "【耐久力の結晶】",
642
+ "【偉大な筋力の結晶】",
643
+ "【偉大な敏捷の結晶】",
644
+ "【偉大な生命の結晶】",
645
+ "【竜鱗の追加装甲】",
646
+ "【偉大な魅力の結晶】",
647
+ "【偉大な意志の結晶】",
648
+ "【偉大な知力の結晶】",
649
+ "【スタミナの結晶】",
650
+ "【闇払いの書】"
651
+ ]
652
+ ),
653
+ "KNGFTP" => DiceTable::Table.new(
654
+ "王特徴表プラス",
655
+ "1D6",
656
+ [
657
+ "【力の王の】(047ページ)",
658
+ "【力の王の】(047ページ)",
659
+ "【疾風の王の】(047ページ)",
660
+ "【疾風の王の】(047ページ)",
661
+ "【炎の王の】(047ページ)",
662
+ "【絶望の王の】(047ページ)"
663
+ ]
664
+ ),
665
+ }.freeze
666
+ end
667
+ end
668
+ end