bcdice 3.0.0.pre.alpha.1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +70 -0
  3. data/README.md +34 -7
  4. data/i18n/Amadeus/ja_jp.yml +386 -0
  5. data/i18n/Amadeus/ko_kr.yml +148 -0
  6. data/i18n/Cthulhu/ja_jp.yml +11 -0
  7. data/i18n/Cthulhu/ko_kr.yml +11 -0
  8. data/i18n/Cthulhu/zh_hant.yml +11 -0
  9. data/i18n/DetatokoSaga/ja_jp.yml +75 -0
  10. data/i18n/DetatokoSaga/ko_kr.yml +75 -0
  11. data/i18n/DoubleCross/ja_jp.yml +53 -0
  12. data/i18n/DoubleCross/ko_kr.yml +53 -0
  13. data/i18n/Dracurouge/ja_jp.yml +1374 -0
  14. data/i18n/Dracurouge/ko_kr.yml +295 -0
  15. data/i18n/Fiasco/ja_jp.yml +10 -0
  16. data/i18n/Fiasco/ko_kr.yml +10 -0
  17. data/i18n/FutariSousa/ja_jp.yml +720 -0
  18. data/i18n/FutariSousa/ko_kr.yml +746 -0
  19. data/i18n/Insane/ja_jp.yml +454 -0
  20. data/i18n/Insane/ko_kr.yml +502 -0
  21. data/i18n/Kamigakari/ja_jp.yml +276 -0
  22. data/i18n/Kamigakari/ko_kr.yml +204 -0
  23. data/i18n/KillDeathBusiness/ja_jp.yml +1092 -0
  24. data/i18n/KillDeathBusiness/ko_kr.yml +1063 -0
  25. data/i18n/LogHorizon/ja_jp.yml +3082 -0
  26. data/i18n/LogHorizon/ko_kr.yml +923 -0
  27. data/i18n/MagicaLogia/ja_jp.yml +564 -0
  28. data/i18n/MagicaLogia/ko_kr.yml +564 -0
  29. data/i18n/MonotoneMuseum/ja_jp.yml +561 -0
  30. data/i18n/MonotoneMuseum/ko_kr.yml +89 -0
  31. data/i18n/Nechronica/ja_jp.yml +57 -0
  32. data/i18n/Nechronica/ko_kr.yml +14 -0
  33. data/i18n/StratoShout/ja_jp.yml +160 -0
  34. data/i18n/StratoShout/ko_kr.yml +160 -0
  35. data/i18n/ja_jp.yml +5 -0
  36. data/i18n/ko_kr.yml +7 -0
  37. data/i18n/zh_hant.yml +3 -0
  38. data/lib/bcdice.rb +4 -1
  39. data/lib/bcdice/arithmetic.rb +22 -0
  40. data/lib/bcdice/arithmetic/node.rb +223 -0
  41. data/lib/bcdice/arithmetic/parser.rb +240 -0
  42. data/lib/bcdice/arithmetic_evaluator.rb +7 -156
  43. data/lib/bcdice/base.rb +94 -101
  44. data/lib/bcdice/command/lexer.rb +57 -0
  45. data/lib/bcdice/command/parsed.rb +65 -0
  46. data/lib/bcdice/command/parser.rb +489 -0
  47. data/lib/bcdice/common_command.rb +4 -0
  48. data/lib/bcdice/common_command/add_dice.rb +8 -42
  49. data/lib/bcdice/common_command/add_dice/node.rb +221 -72
  50. data/lib/bcdice/common_command/add_dice/parser.rb +391 -274
  51. data/lib/bcdice/common_command/add_dice/randomizer.rb +27 -33
  52. data/lib/bcdice/common_command/barabara_dice.rb +8 -47
  53. data/lib/bcdice/common_command/barabara_dice/node.rb +92 -0
  54. data/lib/bcdice/common_command/barabara_dice/parser.rb +336 -0
  55. data/lib/bcdice/common_command/barabara_dice/result.rb +22 -0
  56. data/lib/bcdice/common_command/calc.rb +9 -30
  57. data/lib/bcdice/common_command/calc/node.rb +39 -0
  58. data/lib/bcdice/common_command/calc/parser.rb +271 -0
  59. data/lib/bcdice/common_command/choice.rb +137 -19
  60. data/lib/bcdice/common_command/d66_dice.rb +52 -34
  61. data/lib/bcdice/common_command/lexer.rb +47 -0
  62. data/lib/bcdice/common_command/repeat.rb +102 -0
  63. data/lib/bcdice/common_command/reroll_dice.rb +8 -158
  64. data/lib/bcdice/common_command/reroll_dice/node.rb +198 -0
  65. data/lib/bcdice/common_command/reroll_dice/parser.rb +421 -0
  66. data/lib/bcdice/common_command/upper_dice.rb +12 -129
  67. data/lib/bcdice/common_command/upper_dice/node.rb +181 -0
  68. data/lib/bcdice/common_command/upper_dice/parser.rb +433 -0
  69. data/lib/bcdice/common_command/version.rb +11 -17
  70. data/lib/bcdice/deprecated/checker.rb +78 -0
  71. data/lib/bcdice/dice_table.rb +3 -0
  72. data/lib/bcdice/dice_table/chain_table.rb +2 -0
  73. data/lib/bcdice/dice_table/d66_grid_table.rb +10 -0
  74. data/lib/bcdice/dice_table/d66_parity_table.rb +36 -0
  75. data/lib/bcdice/dice_table/d66_range_table.rb +2 -0
  76. data/lib/bcdice/dice_table/d66_table.rb +12 -0
  77. data/lib/bcdice/dice_table/roll_result.rb +2 -0
  78. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +75 -17
  79. data/lib/bcdice/dice_table/sai_fic_skill_table/category.rb +25 -0
  80. data/lib/bcdice/dice_table/sai_fic_skill_table/skill.rb +23 -0
  81. data/lib/bcdice/dice_table/table.rb +10 -0
  82. data/lib/bcdice/enum.rb +2 -0
  83. data/lib/bcdice/format.rb +2 -0
  84. data/lib/bcdice/game_system.rb +17 -1
  85. data/lib/bcdice/game_system/AFF2e.rb +1 -1
  86. data/lib/bcdice/game_system/AceKillerGene.rb +3 -3
  87. data/lib/bcdice/game_system/Airgetlamh.rb +3 -3
  88. data/lib/bcdice/game_system/AlchemiaStruggle.rb +346 -0
  89. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  90. data/lib/bcdice/game_system/Alshard.rb +1 -2
  91. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  92. data/lib/bcdice/game_system/Amadeus.rb +47 -508
  93. data/lib/bcdice/game_system/Amadeus_Korean.rb +12 -456
  94. data/lib/bcdice/game_system/AngelGear.rb +123 -0
  95. data/lib/bcdice/game_system/AnimaAnimus.rb +2 -6
  96. data/lib/bcdice/game_system/Arianrhod.rb +0 -1
  97. data/lib/bcdice/game_system/ArsMagica.rb +1 -1
  98. data/lib/bcdice/game_system/Avandner.rb +1 -1
  99. data/lib/bcdice/game_system/BBN.rb +7 -5
  100. data/lib/bcdice/game_system/BadLife.rb +2 -2
  101. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  102. data/lib/bcdice/game_system/BeastBindTrinity.rb +3 -13
  103. data/lib/bcdice/game_system/BeginningIdol.rb +6 -7
  104. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +6 -7
  105. data/lib/bcdice/game_system/BladeOfArcana.rb +6 -6
  106. data/lib/bcdice/game_system/BlindMythos.rb +12 -10
  107. data/lib/bcdice/game_system/BloodCrusade.rb +54 -81
  108. data/lib/bcdice/game_system/BloodMoon.rb +43 -3
  109. data/lib/bcdice/game_system/CardRanker.rb +24 -65
  110. data/lib/bcdice/game_system/ChaosFlare.rb +4 -4
  111. data/lib/bcdice/game_system/Chill.rb +1 -1
  112. data/lib/bcdice/game_system/CodeLayerd.rb +37 -67
  113. data/lib/bcdice/game_system/ColossalHunter.rb +3 -4
  114. data/lib/bcdice/game_system/Comes.rb +50 -0
  115. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  116. data/lib/bcdice/game_system/Cthulhu.rb +99 -98
  117. data/lib/bcdice/game_system/Cthulhu7th.rb +117 -370
  118. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  119. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  120. data/lib/bcdice/game_system/CthulhuTech.rb +8 -15
  121. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +7 -190
  122. data/lib/bcdice/game_system/Cthulhu_Korean.rb +5 -186
  123. data/lib/bcdice/game_system/DarkBlaze.rb +13 -9
  124. data/lib/bcdice/game_system/DarkDaysDrive.rb +17 -15
  125. data/lib/bcdice/game_system/DarkSouls.rb +1 -1
  126. data/lib/bcdice/game_system/DeadlineHeroes.rb +3 -3
  127. data/lib/bcdice/game_system/DemonParasite.rb +1 -2
  128. data/lib/bcdice/game_system/DesperateRun.rb +163 -0
  129. data/lib/bcdice/game_system/DetatokoSaga.rb +69 -152
  130. data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +9 -277
  131. data/lib/bcdice/game_system/DiceBot.rb +22 -4
  132. data/lib/bcdice/game_system/DiceOfTheDead.rb +9 -6
  133. data/lib/bcdice/game_system/DoubleCross.rb +145 -157
  134. data/lib/bcdice/game_system/DoubleCross_Korean.rb +13 -330
  135. data/lib/bcdice/game_system/Dracurouge.rb +376 -1678
  136. data/lib/bcdice/game_system/Dracurouge_Korean.rb +16 -271
  137. data/lib/bcdice/game_system/EarthDawn.rb +1 -1
  138. data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
  139. data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
  140. data/lib/bcdice/game_system/Elysion.rb +5 -6
  141. data/lib/bcdice/game_system/EmbryoMachine.rb +6 -6
  142. data/lib/bcdice/game_system/Emoklore.rb +131 -0
  143. data/lib/bcdice/game_system/EndBreaker.rb +1 -2
  144. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -2
  145. data/lib/bcdice/game_system/Fiasco.rb +87 -70
  146. data/lib/bcdice/game_system/Fiasco_Korean.rb +7 -95
  147. data/lib/bcdice/game_system/FilledWith.rb +465 -569
  148. data/lib/bcdice/game_system/FullMetalPanic.rb +1 -2
  149. data/lib/bcdice/game_system/FutariSousa.rb +103 -938
  150. data/lib/bcdice/game_system/FutariSousa_Korean.rb +7 -948
  151. data/lib/bcdice/game_system/{Gurps.rb → GURPS.rb} +184 -217
  152. data/lib/bcdice/game_system/Garako.rb +140 -39
  153. data/lib/bcdice/game_system/GardenOrder.rb +3 -3
  154. data/lib/bcdice/game_system/GehennaAn.rb +4 -4
  155. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  156. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  157. data/lib/bcdice/game_system/GoldenSkyStories.rb +1 -1
  158. data/lib/bcdice/game_system/Gorilla.rb +1 -1
  159. data/lib/bcdice/game_system/GranCrest.rb +2 -3
  160. data/lib/bcdice/game_system/Gundog.rb +1 -1
  161. data/lib/bcdice/game_system/GundogRevised.rb +4 -4
  162. data/lib/bcdice/game_system/GundogZero.rb +3 -3
  163. data/lib/bcdice/game_system/GurpsFW.rb +4 -8
  164. data/lib/bcdice/game_system/HarnMaster.rb +2 -2
  165. data/lib/bcdice/game_system/HatsuneMiku.rb +2 -3
  166. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  167. data/lib/bcdice/game_system/HuntersMoon.rb +17 -111
  168. data/lib/bcdice/game_system/Illusio.rb +27 -36
  169. data/lib/bcdice/game_system/InfiniteBabeL.rb +518 -0
  170. data/lib/bcdice/game_system/Insane.rb +90 -717
  171. data/lib/bcdice/game_system/Insane_Korean.rb +7 -719
  172. data/lib/bcdice/game_system/JekyllAndHyde.rb +42 -0
  173. data/lib/bcdice/game_system/JuinKansen.rb +251 -0
  174. data/lib/bcdice/game_system/Kamigakari.rb +47 -242
  175. data/lib/bcdice/game_system/Kamigakari_Korean.rb +6 -394
  176. data/lib/bcdice/game_system/KanColle.rb +20 -169
  177. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  178. data/lib/bcdice/game_system/KillDeathBusiness.rb +189 -1180
  179. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +8 -1460
  180. data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
  181. data/lib/bcdice/game_system/LiveraDoll.rb +2 -2
  182. data/lib/bcdice/game_system/LogHorizon.rb +350 -3379
  183. data/lib/bcdice/game_system/LogHorizon_Korean.rb +55 -1357
  184. data/lib/bcdice/game_system/LostRecord.rb +0 -1
  185. data/lib/bcdice/game_system/LostRoyal.rb +3 -6
  186. data/lib/bcdice/game_system/MagicaLogia.rb +158 -1044
  187. data/lib/bcdice/game_system/MagicaLogia_Korean.rb +66 -0
  188. data/lib/bcdice/game_system/MeikyuDays.rb +2 -3
  189. data/lib/bcdice/game_system/MeikyuKingdom.rb +7 -7
  190. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +7 -8
  191. data/lib/bcdice/game_system/MetalHead.rb +1 -1
  192. data/lib/bcdice/game_system/MetalHeadExtream.rb +7 -7
  193. data/lib/bcdice/game_system/MetallicGuardian.rb +1 -2
  194. data/lib/bcdice/game_system/MonotoneMuseum.rb +41 -241
  195. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +10 -270
  196. data/lib/bcdice/game_system/NSSQ.rb +159 -0
  197. data/lib/bcdice/game_system/Nechronica.rb +37 -76
  198. data/lib/bcdice/game_system/Nechronica_Korean.rb +11 -128
  199. data/lib/bcdice/game_system/NeverCloud.rb +540 -5
  200. data/lib/bcdice/game_system/NightWizard.rb +2 -2
  201. data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
  202. data/lib/bcdice/game_system/NightmareHunterDeep.rb +3 -4
  203. data/lib/bcdice/game_system/NinjaSlayer.rb +33 -43
  204. data/lib/bcdice/game_system/NjslyrBattle.rb +1 -1
  205. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -2
  206. data/lib/bcdice/game_system/OracleEngine.rb +14 -18
  207. data/lib/bcdice/game_system/OrgaRain.rb +19 -27
  208. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  209. data/lib/bcdice/game_system/Paranoia.rb +1 -1
  210. data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
  211. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  212. data/lib/bcdice/game_system/Peekaboo.rb +23 -123
  213. data/lib/bcdice/game_system/PhantasmAdventure.rb +0 -4
  214. data/lib/bcdice/game_system/Postman.rb +3 -3
  215. data/lib/bcdice/game_system/PulpCthulhu.rb +3 -3
  216. data/lib/bcdice/game_system/Raisondetre.rb +3 -3
  217. data/lib/bcdice/game_system/RecordOfLodossWar.rb +8 -7
  218. data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
  219. data/lib/bcdice/game_system/RokumonSekai2.rb +3 -3
  220. data/lib/bcdice/game_system/RuinBreakers.rb +296 -0
  221. data/lib/bcdice/game_system/RyuTuber.rb +6 -4
  222. data/lib/bcdice/game_system/Ryutama.rb +2 -2
  223. data/lib/bcdice/game_system/SRS.rb +1 -7
  224. data/lib/bcdice/game_system/SamsaraBallad.rb +5 -4
  225. data/lib/bcdice/game_system/Satasupe.rb +90 -866
  226. data/lib/bcdice/game_system/ScreamHighSchool.rb +4 -4
  227. data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
  228. data/lib/bcdice/game_system/ShadowRun5.rb +2 -2
  229. data/lib/bcdice/game_system/SharedFantasia.rb +1 -1
  230. data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +1 -1
  231. data/lib/bcdice/game_system/ShinkuuGakuen.rb +5 -5
  232. data/lib/bcdice/game_system/ShinobiGami.rb +75 -40
  233. data/lib/bcdice/game_system/ShoujoTenrankai.rb +3 -3
  234. data/lib/bcdice/game_system/Skynauts.rb +2 -2
  235. data/lib/bcdice/game_system/SteamPunkers.rb +7 -5
  236. data/lib/bcdice/game_system/StellarKnights.rb +2 -5
  237. data/lib/bcdice/game_system/SterileLife.rb +2 -2
  238. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -3
  239. data/lib/bcdice/game_system/StratoShout.rb +39 -268
  240. data/lib/bcdice/game_system/StratoShout_Korean.rb +8 -283
  241. data/lib/bcdice/game_system/Strave.rb +2 -2
  242. data/lib/bcdice/game_system/SwordWorld.rb +52 -189
  243. data/lib/bcdice/game_system/SwordWorld2_0.rb +21 -150
  244. data/lib/bcdice/game_system/SwordWorld2_5.rb +126 -41
  245. data/lib/bcdice/game_system/TherapieSein.rb +3 -3
  246. data/lib/bcdice/game_system/TokumeiTenkousei.rb +2 -2
  247. data/lib/bcdice/game_system/TokyoGhostResearch.rb +2 -2
  248. data/lib/bcdice/game_system/Torg.rb +3 -3
  249. data/lib/bcdice/game_system/Torg1_5.rb +1 -1
  250. data/lib/bcdice/game_system/TorgEternity.rb +5 -8
  251. data/lib/bcdice/game_system/TrinitySeven.rb +3 -3
  252. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +7 -7
  253. data/lib/bcdice/game_system/TwilightGunsmoke.rb +2 -3
  254. data/lib/bcdice/game_system/UnsungDuet.rb +139 -0
  255. data/lib/bcdice/game_system/Utakaze.rb +2 -2
  256. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
  257. data/lib/bcdice/game_system/Villaciel.rb +1 -2
  258. data/lib/bcdice/game_system/Warhammer.rb +7 -7
  259. data/lib/bcdice/game_system/Warhammer4.rb +326 -0
  260. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  261. data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
  262. data/lib/bcdice/game_system/YankeeYogSothoth.rb +15 -15
  263. data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
  264. data/lib/bcdice/game_system/Yggdrasill.rb +605 -0
  265. data/lib/bcdice/game_system/ZettaiReido.rb +2 -2
  266. data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +294 -0
  267. data/lib/bcdice/game_system/cthulhu7th/rollable.rb +41 -0
  268. data/lib/bcdice/game_system/filled_with/cook_tables.rb +119 -0
  269. data/lib/bcdice/game_system/filled_with/lot_tables.rb +155 -0
  270. data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +2 -0
  271. data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +2 -0
  272. data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +2 -0
  273. data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +2 -0
  274. data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +2 -0
  275. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +2 -0
  276. data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +2 -0
  277. data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +2 -0
  278. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +2 -0
  279. data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +2 -0
  280. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +2 -0
  281. data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +2 -0
  282. data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +2 -0
  283. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +2 -0
  284. data/lib/bcdice/game_system/one_way_heroics/tables.rb +2 -0
  285. data/lib/bcdice/game_system/satasupe/tables.rb +723 -0
  286. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +47 -0
  287. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +99 -0
  288. data/lib/bcdice/game_system/sword_world/rating_parser.rb +457 -0
  289. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +104 -0
  290. data/lib/bcdice/loader.rb +17 -12
  291. data/lib/bcdice/normalize.rb +3 -1
  292. data/lib/bcdice/preprocessor.rb +23 -44
  293. data/lib/bcdice/randomizer.rb +14 -0
  294. data/lib/bcdice/repl.rb +4 -2
  295. data/lib/bcdice/result.rb +87 -0
  296. data/lib/bcdice/translate.rb +13 -0
  297. data/lib/bcdice/user_defined_dice_table.rb +28 -15
  298. data/lib/bcdice/version.rb +3 -1
  299. metadata +101 -24
  300. data/.editorconfig +0 -21
  301. data/.github/.codecov.yaml +0 -10
  302. data/.github/workflows/coverage.yaml +0 -21
  303. data/.github/workflows/lint.yaml +0 -13
  304. data/.github/workflows/test.yml +0 -20
  305. data/.gitignore +0 -14
  306. data/.rubocop.yml +0 -96
  307. data/.rubocop_todo.yml +0 -113
  308. data/Gemfile +0 -11
  309. data/ROADMAP.md +0 -30
  310. data/Rakefile +0 -118
  311. data/bcdice.gemspec +0 -27
  312. data/bin/repl.rb +0 -21
  313. data/docs/README.txt +0 -2028
  314. data/docs/dicebot_sort_key.md +0 -72
  315. data/docs/how_to_make_dicebot.md +0 -453
  316. data/lib/bcdice/command_parser.rb +0 -242
@@ -43,7 +43,7 @@ module BCDice
43
43
  ),
44
44
  }.freeze
45
45
 
46
- register_prefix(["ACT.*"] + TABLES.keys)
46
+ register_prefix("ACT.*", TABLES.keys)
47
47
  end
48
48
  end
49
49
  end
@@ -44,10 +44,10 @@ module BCDice
44
44
  例:WO3(白のオーナーズネイルの3番目『罪なき純白』)
45
45
  MESSAGETEXT
46
46
 
47
- register_prefix([
47
+ register_prefix(
48
48
  '(C|K|W|R|B|G|E)(L|D|O)\d+',
49
49
  '(\d+)?ATK([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?([1-6])?'
50
- ])
50
+ )
51
51
 
52
52
  def initialize(command)
53
53
  super(command)
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/base"
4
+
3
5
  module BCDice
4
6
  module GameSystem
5
7
  class LogHorizon < Base
@@ -14,121 +16,139 @@ module BCDice
14
16
 
15
17
  # ダイスボットの使い方
16
18
  HELP_MESSAGE = <<~MESSAGETEXT
17
- ・判定(xLH±y>=z)
19
+ ■ 判定 (xLH±y>=z)
18
20
   xD6の判定。クリティカル、ファンブルの自動判定を行います。
19
21
   x:xに振るダイス数を入力。
20
22
   ±y:yに修正値を入力。±の計算に対応。省略可能。
21
- >=z:zに目標値を入力。±の計算に対応。省略可能。
23
+  >=z:zに目標値を入力。±の計算に対応。省略可能。
22
24
   例) 3LH 2LH>=8 3LH+1>=10
23
- ・消耗表(tCTx±y$z)
25
+
26
+ ■ 消耗表 (tCTx±y$z)
24
27
   PCT 体力/ECT 気力/GCT 物品/CCT 金銭
25
28
   x:CRを指定。
26
29
   ±y:修正値。+と-の計算に対応。省略可能。
27
30
   $z:$を付けるとダイス目を z 固定。表の特定の値参照用に。省略可能。
28
31
   例) PCT1 ECT2+1 GCT3-1 CCT3$5
29
- ・財宝表(tTRSx±y$)
30
-  CTRS 金銭/MTRS 魔法素材/ITRS 換金アイテム/OTRS そのほか/※HTRS ヒロイン/GTRS ゴブリン財宝表
32
+
33
+ 消耗表ロール (CTx±y)
34
+  消耗表ロールを行い、出目を決定する。
35
+  x:CRを指定。指定できますが、無視されます。省略可能
36
+  ±y:修正値。+と-の計算に対応。省略可能。
37
+
38
+ ■ 財宝表 (tTRSx±y$)
39
+  LHZB1記載の財宝表
40
+  CTRS 金銭/MTRS 魔法素材/ITRS 換金アイテム/※HTRS ヒロイン/GTRS ゴブリン財宝表
31
41
   x:CRを指定。省略時はダイス値 0 固定で修正値の表参照。《ゴールドフィンガー》使用時など。
32
42
   ±y:修正値。+と-の計算に対応。省略可能。
33
43
   $:$を付けると財宝表のダイス目を7固定(1回分のプライズ用)。省略可能。
34
44
   例) CTRS1 MTRS2+1 ITRS3-1 ITRS+27 CTRS3$
35
- ・パーソナリティタグ表(PTAG)
36
- ・交友表(KOYU)
37
- ・イースタル探索表(ESTLx±y$z)
45
+
46
+ ■ 財宝表(拡張ルールブック) (tTRSEx±y$)
47
+  LHZB2記載の財宝表
48
+  CTRSE 金銭/MTRSE 魔法素材/ITRSE 換金アイテム/OTRSE そのほか
49
+  記法は財宝表と同様
50
+
51
+ ■ 財宝表ロール (TRSx±y)
52
+  財宝表ロールを行い、出目を決定する。
53
+  x:CRを指定。省略時はCR 0として扱う
54
+  ±y:修正値。+と-の計算に対応。省略可能。
55
+
56
+ ■ イースタル探索表 (ESTLx±y$z)
38
57
   x:CRを指定。省略時はダイス値 0 固定で修正値の表参照。
39
58
   ±y:修正値。+と-の計算に対応。省略可能。
40
59
   $z:$を付けるとダイス目を z 固定。特定CRの表参照用に。省略可能。
41
60
   例) ESTL1 ESTL+15 ESTL2+1$5 ESTL2-1$5
42
- ・プレフィックスドマジックアイテム効果表(MGRx) xはMGを指定。(LHZB1用)
43
- †楽器種別表(MIIx) xは楽器の種類(1~6を指定)、省略可能
61
+
62
+ プレフィックスドマジックアイテム効果表 (MGRx)
63
+  xはMGを指定。(LHZB1用)
64
+
65
+ ■ 楽器種別表† (MIIx)
66
+  xは楽器の種類(1~6を指定)、省略可能
44
67
   1 打楽器1/2 鍵盤楽器/3 弦楽器1/4 弦楽器2/5 管楽器1/6 管楽器2
45
- ☆特殊消耗表(tSCTx±y$z) 消耗表と同様、ただしCRは省略可能。
68
+
69
+ ■ 特殊消耗表☆ (tSCTx±y$z)
70
+  消耗表と同様、ただしCRは省略可能。
46
71
   ESCT ロデ研は爆発だ!/CSCT アルヴの呪いじゃ!
47
- ※攻撃命中箇所ランダム決定表(HLOC)
48
- ※PC名ランダム決定表(PCNM)
49
- ※ロデ研の新発明ランダム決定表(IATt)
50
- IATA 特徴A(メリット)/IATB 特徴B(デメリット)/IATL 見た目/IATT 種類
51
- tを省略すると全て表示。tにA/B/L/Tを任意の順で連結可能
52
- 例)IAT IATALT IATABBLT IATABL
53
- ※アキバの街で遭遇するトラブルランダム決定表(TIAS)
54
- ※廃棄児ランダム決定表(ABDC)
72
+
73
+ ■ ロデ研の新発明ランダム決定表※ (IATt)
74
+  IATA 特徴A(メリット)/IATB 特徴B(デメリット)/IATL 見た目/IATT 種類
75
+  tを省略すると全て表示。tにA/B/L/Tを任意の順で連結可能
76
+  例)IAT IATALT IATABBLT IATABL
77
+
78
+ ■ 表
79
+  ・パーソナリティタグ表 (PTAG)
80
+  ・交友表 (KOYU)
81
+  ・攻撃命中箇所ランダム決定表※ (HLOC)
82
+  ・PC名ランダム決定表※ (PCNM)
83
+  ・アキバの街で遭遇するトラブルランダム決定表※ (TIAS)
84
+  ・廃棄児ランダム決定表※ (ABDC)
85
+
55
86
  †印は☆印は「イントゥ・ザ・セルデシア さらなるビルドの羽ばたき(1)」より、
56
87
  ☆印はセルデシア・ガゼット「できるかな66」Vol.1より、
57
88
  ※印は「実録・七面体工房スタッフ座談会(夏の陣)」より。利用法などはそちら参照。
58
89
  ・D66ダイスあり
59
90
  MESSAGETEXT
60
91
 
61
- register_prefix(['\d+LH.*', 'PC.*', 'EC.*', 'GC.*', 'CC.*', 'CTR.*', 'MTR.*', 'ITR.*', 'OTR.*', 'HTR.*', 'GTR.*', 'PTAG', 'KOYU', 'MGR.', 'HLOC', 'PCNM', 'IAT.*', 'TIAS', 'ABDC', 'MII.*', 'ESCT.*', 'CSCT.*', 'ESTL.*'])
92
+ register_prefix('\d+LH', '\w+CT', 'CT', '\w+TRS', 'TRS', 'IAT', 'TIAS', 'ABDC', 'MII', 'ESTL')
62
93
 
63
94
  def initialize(command)
64
95
  super(command)
65
- @enabled_d66 = true
66
96
  @d66_sort_type = D66SortType::NO_SORT
67
97
  end
68
98
 
69
99
  def eval_game_system_specific_command(command)
70
100
  getCheckRollDiceCommandResult(command) ||
71
- getConsumptionDiceCommandResult(command) ||
72
- getTresureDiceCommandResult(command) ||
73
- getPersonalityTagDiceCommandResult(command) ||
74
- getFriendlyChartDiceCommandResult(command) ||
75
- getPrefixedMagickItemDiceCommandResult(command) ||
76
- getHitLocationDiceCommandResult(command) ||
77
- getPCNameDiceCommandResult(command) ||
101
+ roll_consumption(command) ||
102
+ roll_consumption_table(command) ||
103
+ roll_treasure(command) ||
104
+ roll_treasure_table(command) ||
105
+ roll_treasure_table_b2(command) ||
78
106
  getInventionAttributeTextDiceCommandResult(command) ||
79
107
  getTroubleInAkibaStreetDiceCommandResult(command) ||
80
108
  getAbandonedChildDiceCommandResult(command) ||
81
109
  getMusicalInstrumentTypeDiceCommandResult(command) ||
82
- getEastalDiceCommandResult(command)
110
+ roll_eastal_exploration_table(command) ||
111
+ roll_tables(command, self.class::TABLES)
83
112
  end
84
113
 
85
- def getCheckRollDiceCommandResult(command)
86
- return nil unless command =~ /(\d+)LH([\+\-\d]*)(>=([\+\-\d]*))?/i
114
+ private
87
115
 
88
- diceCount = Regexp.last_match(1).to_i
89
- modifyText = (Regexp.last_match(2) || '')
90
- difficultyText = Regexp.last_match(4)
91
-
92
- # 修正値の計算
93
- modify = getValue(modifyText, 0)
94
-
95
- # 目標値の計算
96
- difficulty = getValue(difficultyText, nil)
97
-
98
- # ダイスロール
99
- diceList = @randomizer.roll_barabara(diceCount, 6)
100
- dice = diceList.sum()
101
- dice_str = diceList.join(",")
116
+ def getCheckRollDiceCommandResult(command)
117
+ parser = Command::Parser.new(/\d+LH/, round_type: round_type)
118
+ .restrict_cmp_op_to(nil, :>=)
102
119
 
103
- total = dice + modify
120
+ parsed = parser.parse(command)
121
+ unless parsed
122
+ return nil
123
+ end
104
124
 
105
- # 出力用ダイスコマンドを生成
106
- command = "#{diceCount}LH#{modifyText}"
107
- command += ">=#{difficulty}" unless difficulty.nil?
125
+ dice_count = parsed.command.to_i
108
126
 
109
- # 出力文の生成
110
- result = "(#{command}) > #{dice}[#{dice_str}]#{modifyText} > #{total}"
127
+ dice_list = @randomizer.roll_barabara(dice_count, 6)
128
+ dice_total = dice_list.sum()
129
+ total = dice_total + parsed.modify_number
111
130
 
112
- # クリティカル・ファンブルチェック
113
- if isCritical(diceList)
114
- result += " > クリティカル!"
115
- elsif isFamble(diceList, diceCount)
116
- result += " > ファンブル!"
117
- else
118
- result += getJudgeResultString(difficulty, total)
119
- end
131
+ sequence = [
132
+ "(#{parsed})",
133
+ "#{dice_total}[#{dice_list.join(',')}]#{Format.modifier(parsed.modify_number)}",
134
+ total,
135
+ result_text(dice_count, dice_list, total, parsed),
136
+ ].compact
120
137
 
121
- return result
138
+ return sequence.join(" > ")
122
139
  end
123
140
 
124
- # 成否判定
125
- def getJudgeResultString(difficulty, total)
126
- return '' if difficulty.nil?
127
-
128
- if total >= difficulty
129
- return " > 成功"
141
+ def result_text(dice_count, dice_list, total, parsed)
142
+ if dice_list.count(6) >= 2
143
+ translate("LogHorizon.LH.critical")
144
+ elsif dice_list.count(1) >= dice_count
145
+ translate("LogHorizon.LH.fumble")
146
+ elsif parsed.cmp_op.nil?
147
+ nil
148
+ elsif total >= parsed.target_number
149
+ translate('success')
130
150
  else
131
- return " > 失敗"
151
+ translate('failure')
132
152
  end
133
153
  end
134
154
 
@@ -138,1646 +158,260 @@ module BCDice
138
158
  ArithmeticEvaluator.eval(text)
139
159
  end
140
160
 
141
- def isCritical(diceList)
142
- (diceList.select { |i| i == 6 }.size >= 2)
143
- end
144
-
145
- def isFamble(diceList, diceCount)
146
- (diceList.select { |i| i == 1 }.size >= diceCount)
147
- end
148
-
149
- # 消耗表
150
- def getConsumptionDiceCommandResult(command)
151
- return nil unless command =~ /(P|E|G|C|ES|CS)CT(\d+)?([\+\-\d]*)(\$(\d+))?/
152
-
153
- type = Regexp.last_match(1)
154
- is_special = (Regexp.last_match(1) && Regexp.last_match(1).length > 1)
155
- rank = Regexp.last_match(2) && Regexp.last_match(2) != '' ? Regexp.last_match(2).to_i : nil
156
- return nil if !rank && !is_special
157
-
158
- rank ||= 0
159
- is_choice = !Regexp.last_match(4).nil?
160
- dice_value = Regexp.last_match(5)
161
- modifyText = Regexp.last_match(3)
162
- modify = getValue(modifyText, 0)
163
-
164
- tableName = ""
165
- tables = nil
166
-
167
- case type
168
- when "P"
169
- tableName, tables = getPhysicalConsumptionResultTables
170
- when "E"
171
- tableName, tables = getEnergyConsumptionResultTables
172
- when "G"
173
- tableName, tables = getGoodsConsumptionResultTables
174
- when "C"
175
- tableName, tables = getCashConsumptionResultTables
176
- when "ES"
177
- tableName, tables = getExplosionSpecialConsumptionResultTables
178
- when "CS"
179
- tableName, tables = getCurseSpecialConsumptionResultTables
180
- else
181
- return nil
182
- end
161
+ # 消耗表ロール
162
+ def roll_consumption(command)
163
+ m = /^CT\d*([+\-\d]+)?$/.match(command)
164
+ return nil unless m
183
165
 
184
- table = getTableByRank(rank, tables)
166
+ modifier = ArithmeticEvaluator.eval(m[1])
167
+ formated_modifier = Format.modifier(modifier)
168
+ dice = @randomizer.roll_once(6)
185
169
 
186
- number = is_choice ? dice_value.to_i : @randomizer.roll_once(6)
187
- dice_str = number.to_s
188
- number += modify
170
+ interim_expr = dice.to_s + formated_modifier unless formated_modifier.empty?
189
171
 
190
- adjustedNumber = getAdjustNumber(number, table)
172
+ sequence = [
173
+ "(1D6#{formated_modifier})",
174
+ interim_expr,
175
+ dice + modifier,
176
+ ].compact
191
177
 
192
- result = get_table_by_number(adjustedNumber, table)
178
+ return sequence.join(" > ")
179
+ end
193
180
 
194
- text = "#{tableName}(#{number}[#{dice_str}]):#{result}"
181
+ ### 消耗表 ###
182
+ def roll_consumption_table(command)
183
+ m = /(P|E|G|C|ES|CS)CT(\d+)?([+\-\d]+)?(?:\$(\d+))?/.match(command)
184
+ return nil unless m
195
185
 
196
- return text
197
- end
186
+ table = construct_consumption_table(m[1])
187
+ cr = m[2].to_i
188
+ modifier = ArithmeticEvaluator.eval(m[3])
189
+ table.fix_dice_value(m[4].to_i) if m[4]
198
190
 
199
- def getPhysicalConsumptionResultTables()
200
- tableName = "体力消耗表"
201
- tables = [[
202
- [0, '消耗なし'],
203
- [1, '[疲労:5]を受ける'],
204
- [2, '[疲労:8]を受ける'],
205
- [3, '[疲労:10]を受ける'],
206
- [4, '[疲労:13]を受ける'],
207
- [5, '[疲労:15]を受ける'],
208
- [6, '[疲労:18]を受ける'],
209
- [7, '[疲労:20]を受ける'],
210
- ],
211
- [
212
- [0, '消耗なし'],
213
- [1, '[疲労:10]を受ける'],
214
- [2, '[疲労:15]を受ける'],
215
- [3, '[疲労:20]を受ける'],
216
- [4, '[疲労:25]を受ける'],
217
- [5, '[疲労:30]を受ける'],
218
- [6, '[疲労:35]を受ける'],
219
- [7, '[疲労:40]を受ける'],
220
- ],
221
- [
222
- [0, '消耗なし'],
223
- [1, '[疲労:25]を受ける'],
224
- [2, '[疲労:35]を受ける'],
225
- [3, '[疲労:45]を受ける'],
226
- [4, '[疲労:55]を受ける'],
227
- [5, '[疲労:65]を受ける'],
228
- [6, '[疲労:65]を受け、【因果力】を1点失う'],
229
- [7, '[疲労:65]を受け、【因果力】を2点失う'],
230
- ],
231
- [
232
- [0, '消耗なし'],
233
- [1, '[疲労:40]を受ける'],
234
- [2, '[疲労:60]を受ける'],
235
- [3, '[疲労:80]を受ける'],
236
- [4, '[疲労:80]を受け、【因果力】を1点失う'],
237
- [5, '[疲労:80]を受け、【因果力】を2点失う'],
238
- [6, '[疲労:90]を受け、【因果力】を2点失う'],
239
- [7, '[疲労:90]を受け、【因果力】を3点失う'],
240
- ],
241
- [
242
- [0, '消耗なし'],
243
- [1, '[疲労:60]を受ける'],
244
- [2, '[疲労:85]を受ける'],
245
- [3, '[疲労:110]を受ける'],
246
- [4, '[疲労:100]を受け、【因果力】を1点失う'],
247
- [5, '[疲労:120]を受け、【因果力】を1点失う'],
248
- [6, '[疲労:100]を受け、【因果力】を2点失う'],
249
- [7, '[疲労:100]を受け、【因果力】を3点失う'],
250
- ],
251
- [
252
- [0, '消耗なし'],
253
- [1, '[疲労:80]を受ける'],
254
- [2, '[疲労:120]を受ける'],
255
- [3, '[疲労:120]を受け、【因果力】を1点失う'],
256
- [4, '[疲労:120]を受け、【因果力】を1点失う'],
257
- [5, '[疲労:120]を受け、【因果力】を2点失う'],
258
- [6, '[疲労:120]を受け、【因果力】を2点失う'],
259
- [7, '[疲労:120]を受け、【因果力】を3点失う'],
260
- ],]
261
-
262
- return tableName, tables
191
+ return table.roll(cr, modifier, @randomizer)
263
192
  end
264
193
 
265
- def getEnergyConsumptionResultTables()
266
- tableName = "気力消耗表"
267
- tables = [[
268
- [0, '消耗なし'],
269
- [1, '【因果力】を1点失う'],
270
- [2, '【因果力】を1点失う'],
271
- [3, '【因果力】を1点失う'],
272
- [4, '【因果力】を1点失う'],
273
- [5, '【因果力】を2点失う'],
274
- [6, '【因果力】を2点失う'],
275
- [7, '【因果力】を2点失う'],
276
- ],
277
- [
278
- [0, '消耗なし'],
279
- [1, '【因果力】を1点失う'],
280
- [2, '【因果力】を1点失う'],
281
- [3, '【因果力】を1点失う'],
282
- [4, '【因果力】を2点失う'],
283
- [5, '【因果力】を2点失う'],
284
- [6, '【因果力】を2点失う'],
285
- [7, '【因果力】を3点失う'],
286
- ],
287
- [
288
- [0, '消耗なし'],
289
- [1, '【因果力】を1点失う'],
290
- [2, '【因果力】を1点失う'],
291
- [3, '【因果力】を2点失う'],
292
- [4, '【因果力】を2点失う'],
293
- [5, '【因果力】を2点失う'],
294
- [6, '【因果力】を3点失う'],
295
- [7, '【因果力】を4点失う'],
296
- ],
297
- [
298
- [0, '消耗なし'],
299
- [1, '【因果力】を1点失う'],
300
- [2, '【因果力】を2点失う'],
301
- [3, '【因果力】を2点失う'],
302
- [4, '【因果力】を2点失う'],
303
- [5, '【因果力】を3点失う'],
304
- [6, '【因果力】を1点失い、特技喪失する'],
305
- [7, '【因果力】を2点失い、特技喪失する'],
306
- ],
307
- [
308
- [0, '消耗なし'],
309
- [1, '【因果力】を1点失う'],
310
- [2, '【因果力】を2点失う'],
311
- [3, '【因果力】を2点失う'],
312
- [4, '【因果力】を3点失う'],
313
- [5, '【因果力】を1点失い、特技喪失する'],
314
- [6, '【因果力】を2点失い、特技喪失する'],
315
- [7, '【因果力】を3点失い、特技喪失する'],
316
- ],
317
- [
318
- [0, '消耗なし'],
319
- [1, '【因果力】を1点失う'],
320
- [2, '【因果力】を2点失う'],
321
- [3, '【因果力】を3点失う'],
322
- [4, '【因果力】を1点失い、特技喪失する'],
323
- [5, '【因果力】を4点失う'],
324
- [6, '【因果力】を2点失い、特技喪失する'],
325
- [7, '【因果力】を3点失い、特技喪失する'],
326
- ],]
327
-
328
- return tableName, tables
329
- end
194
+ def construct_consumption_table(type)
195
+ table =
196
+ case type
197
+ when "P"
198
+ translate("LogHorizon.CT.PCT")
199
+ when "E"
200
+ translate("LogHorizon.CT.ECT")
201
+ when "G"
202
+ translate("LogHorizon.CT.GCT")
203
+ when "C"
204
+ translate("LogHorizon.CT.CCT")
205
+ when "ES"
206
+ translate("LogHorizon.CT.ESCT")
207
+ when "CS"
208
+ translate("LogHorizon.CT.CSCT")
209
+ end
330
210
 
331
- def getGoodsConsumptionResultTables()
332
- tableName = "物品消耗表"
333
- tables = [[
334
- [0, '消耗なし'],
335
- [1, '[消耗品]アイテムを1個失う'],
336
- [2, '[消耗品]アイテムを1個失う'],
337
- [3, '[消耗品]アイテムを1個失う'],
338
- [4, '[消耗品]アイテムを2個失う'],
339
- [5, '[消耗品]アイテムを2個失う'],
340
- [6, '[消耗品]アイテムを2個失う'],
341
- [7, '[消耗品]アイテムを2個失う'],
342
- ],
343
- [
344
- [0, '消耗なし'],
345
- [1, '[消耗品]アイテムを1個失う'],
346
- [2, '[消耗品]アイテムを1個失う'],
347
- [3, '[消耗品]アイテムを2個失う'],
348
- [4, '[消耗品]アイテムを2個失う'],
349
- [5, '[消耗品]アイテムを3個失う'],
350
- [6, '[消耗品]アイテムを3個失う'],
351
- [7, '[消耗品]アイテムを4個失う'],
352
- ],
353
- [
354
- [0, '消耗なし'],
355
- [1, '[消耗品]アイテムを1個失う'],
356
- [2, '[消耗品]アイテムを2個失う'],
357
- [3, '[消耗品]アイテムを2個失う'],
358
- [4, '[消耗品]アイテムを3個失う'],
359
- [5, '[消耗品]アイテムを3個失う'],
360
- [6, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'],
361
- [7, '[消耗品]アイテムを3個失い、[圧迫:2]を受ける'],
362
- ],
363
- [
364
- [0, '消耗なし'],
365
- [1, '[消耗品]アイテムを2個失う'],
366
- [2, '[消耗品]アイテムを2個失う'],
367
- [3, '[消耗品]アイテムを2個失い、[圧迫:1]を受ける'],
368
- [4, '[消耗品]アイテムを3個失う'],
369
- [5, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'],
370
- [6, '[消耗品]アイテムを4個失う'],
371
- [7, '[消耗品]アイテムを4個失い、[圧迫:1]を受ける'],
372
- ],
373
- [
374
- [0, '消耗なし'],
375
- [1, '[消耗品]アイテムを2個失う'],
376
- [2, '[消耗品]アイテムを2個失い、[圧迫:1]を受ける'],
377
- [3, '[消耗品]アイテムを3個失う'],
378
- [4, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'],
379
- [5, '[消耗品]アイテムを4個失う'],
380
- [6, '[消耗品]アイテムを4個失い、[圧迫:1]を受ける'],
381
- [7, '[消耗品]アイテムを4個失い、[圧迫:2]を受ける'],
382
- ],
383
- [
384
- [0, '消耗なし'],
385
- [1, '[消耗品]アイテムを3個失う'],
386
- [2, '[消耗品]アイテムを3個失う'],
387
- [3, '[消耗品]アイテムを3個失い、[圧迫:1]を受ける'],
388
- [4, '[消耗品]アイテムを4個失う'],
389
- [5, '[消耗品]アイテムを4個失い、[圧迫:1]を受ける'],
390
- [6, '[消耗品]アイテムを4個失い、[圧迫:2]を受ける'],
391
- [7, '[消耗品]アイテムを4個失い、[圧迫:3]を受ける'],
392
- ],]
393
-
394
- return tableName, tables
211
+ ConsumptionTable.new(table[:name], table[:items])
395
212
  end
396
213
 
397
- def getCashConsumptionResultTables()
398
- tableName = "金銭消耗表"
399
- tables = [[
400
- [0, '消耗なし'],
401
- [1, '所持金を10G失う'],
402
- [2, '所持金を15G失う'],
403
- [3, '所持金を20G失う'],
404
- [4, '所持金を25G失う'],
405
- [5, '所持金を30G失う'],
406
- [6, '所持金を35G失う'],
407
- [7, '所持金を40G失う'],
408
- ],
409
- [
410
- [0, '消耗なし'],
411
- [1, '所持金を25G失う'],
412
- [2, '所持金を35G失う'],
413
- [3, '所持金を50G失う'],
414
- [4, '所持金を60G失う'],
415
- [5, '所持金を75G失う'],
416
- [6, '所持金を90G失う'],
417
- [7, '所持金を100G失う'],
418
- ],
419
- [
420
- [0, '消耗なし'],
421
- [1, '所持金を50G失う'],
422
- [2, '所持金を80G失う'],
423
- [3, '所持金を110G失う'],
424
- [4, '所持金を140G失う'],
425
- [5, '所持金を160G失う'],
426
- [6, '所持金を190G失う'],
427
- [7, '所持金を220G失う'],
428
- ],
429
- [
430
- [0, '消耗なし'],
431
- [1, '所持金を100G失う'],
432
- [2, '所持金を150G失う'],
433
- [3, '所持金を200G失う'],
434
- [4, '所持金を250G失う'],
435
- [5, '所持金を300G失う'],
436
- [6, '所持金を350G失う'],
437
- [7, '所持金を400G失う'],
438
- ],
439
- [
440
- [0, '消耗なし'],
441
- [1, '所持金を160G失う'],
442
- [2, '所持金を240G失う'],
443
- [3, '所持金を320G失う'],
444
- [4, '所持金を400G失う'],
445
- [5, '所持金を480G失う'],
446
- [6, '所持金を560G失う'],
447
- [7, '所持金を640G失う'],
448
- ],
449
- [
450
- [0, '消耗なし'],
451
- [1, '所持金を210G失う'],
452
- [2, '所持金を320G失う'],
453
- [3, '所持金を430G失う'],
454
- [4, '所持金を540G失う'],
455
- [5, '所持金を650G失う'],
456
- [6, '所持金を760G失う'],
457
- [7, '所持金を870G失う'],
458
- ],]
459
-
460
- return tableName, tables
461
- end
214
+ # 消耗表
215
+ class ConsumptionTable
216
+ # @param name [String]
217
+ # @param tables [Array[Hash{Integer => String}]]
218
+ def initialize(name, tables)
219
+ @name = name
220
+ @tables = tables
221
+
222
+ @dice_value = nil
223
+ end
462
224
 
463
- def getExplosionSpecialConsumptionResultTables
464
- tableName = "特殊消耗表:ロデ研は爆発だ!"
465
- tables = [[
466
- [0, '……しかし特に何も起こらない!:効果なし。'],
467
- [1, 'キミの頭髪が爆発した! 見事なアフロヘアーだ:シナリオ終了まで[頭部]タグのついた装備不可。'],
468
- [2, '芸術は爆発である:所持しているアイテムがランダムに1つ、芸術品になり[換金]アイテム化する'],
469
- [3, '反応起爆装甲:防具スロットに装備しているアイテムがチョバムアーマーになる。次にあなたが【HP】ダメージを受けた時、そのダメージを無効化し、そのアイテムを失う。'],
470
- [4, '山羊スライムが爆発的に増殖する:[所持品]スロットを全て山羊スライム([取引不可]、価格50)で埋める。'],
471
- [5, 'キミのリアルが爆発する:コネクションを1つ、シナリオ終了時まで失う。'],
472
- [6, '工場が爆発する:[消耗品]タグを持つアイテムを購入することができなくなる。'],
473
- [7, 'ボスエネミーが爆発する:シナリオはクライマックスを迎えることなく終了する。お疲れ様でした。'],
474
- ]]
475
- return tableName, tables
476
- end
225
+ # ダイスの値を固定する
226
+ # @param dice [Integer]
227
+ # @return [void]
228
+ def fix_dice_value(dice)
229
+ @dice_value = dice
230
+ end
477
231
 
478
- def getCurseSpecialConsumptionResultTables
479
- tableName = "特殊消耗表:アルヴの呪いじゃ!"
480
- tables = [[
481
- [0, '「祝ってやる!」祝われる:あなたの【因果力】+1。'],
482
- [1, '空腹の呪い:すぐさま食料アイテムひとつを食べる。空腹のせいでとてもおいしい!'],
483
- [2, '無職の呪い:サブ職が強制的に〈ニート〉に変更させられる。'],
484
- [3, '種族変更の呪い:ランダムでダイスを振って別の種族に変わる。種族特技が使用不能になる。'],
485
- [4, 'バリアフリーの呪い:[軽減][障壁]状態になることができなくなる。'],
486
- [5, '集中力を乱す囁きの呪い:フォームが崩れて[構え]タグを持つ特技が使用不能になる。'],
487
- [6, '盲目の呪い:あなたの所持するコネクションのうちランダムに一つの関係が「熱愛」にかわる。'],
488
- [7, 'やる気が萎える呪い:あーもーまじやる気しねえ、何もやる気しねえ。【因果力】使用不可。'],
489
- ]]
490
- return tableName, tables
491
- end
232
+ def roll(cr, modifier, randomizer)
233
+ table_index = ((cr - 1) / 5).clamp(0, @tables.size - 1)
234
+ items = @tables[table_index]
492
235
 
493
- def getTableByRank(rank, tables)
494
- index = (rank - 1) / 5
236
+ @dice_value ||= randomizer.roll_once(6)
237
+ total = @dice_value + modifier
495
238
 
496
- index = [0, index].max
497
- index = [index, (tables.size - 1)].min
239
+ chosen = items[total.clamp(0, 7)]
498
240
 
499
- return tables[index]
241
+ "#{@name}(#{total}[#{@dice_value}]) > #{chosen}"
242
+ end
500
243
  end
501
244
 
502
- def getAdjustNumber(number, table)
503
- number = getAdjustNumberMin(number, table)
504
- number = getAdjustNumberMax(number, table)
505
- return number
506
- end
245
+ # 財宝表ロール
246
+ def roll_treasure(command)
247
+ m = /^TRS(\d+)*([+\-\d]+)?$/.match(command)
248
+ return nil unless m
507
249
 
508
- # 最少値の調整(値が小さすぎるなら表の最小値に)
509
- def getAdjustNumberMin(number, table)
510
- value = getTableMinimum(table)
511
- return [number, value].max
512
- end
250
+ character_rank = m[1].to_i
251
+ modifier = ArithmeticEvaluator.eval(m[2])
513
252
 
514
- def getTableMinimum(table)
515
- table.first.first
516
- end
253
+ dice_list = @randomizer.roll_barabara(2, 6)
254
+ dice_total = dice_list.sum
255
+ total = dice_total + character_rank * 5 + modifier
517
256
 
518
- # 最大値の調整(値が大きすぎるなら表の最大値に)
519
- def getAdjustNumberMax(number, table)
520
- value = table.last.first
521
- return [number, value].min
257
+ return "(2D6+#{character_rank}*5#{Format.modifier(modifier)}) > "\
258
+ "#{dice_total}[#{dice_list.join(',')}]#{Format.modifier(character_rank * 5 + modifier)} > "\
259
+ "#{total}"
522
260
  end
523
261
 
524
- # 財宝表
525
- def getTresureDiceCommandResult(command)
526
- return nil unless (m = /(C|M|I|O|H|G)TRS(\d*)([\+\-\d]*)(\$)?/.match(command))
262
+ ### 財宝表 ###
263
+ def roll_treasure_table(command)
264
+ m = /^([CMIHG]TRS)(\d+)*([+\-\d]+)?(\$)?$/.match(command)
265
+ return nil unless m
527
266
 
528
267
  type = m[1]
529
- rank = m[2].to_i
530
- is_choice = (m[2].empty? || !m[4].nil?)
531
- modifyText = m[3]
532
- modify = getValue(modifyText, 0)
533
- is_prize = (m[4] == "$")
534
- dice_value = nil
535
- dice_value = '7' if is_prize
536
- is_rank_enable = (!is_choice || is_prize)
537
-
538
- tableName, table =
539
- case type
540
- when "C"
541
- getCashTresureResultTable
542
- when "M"
543
- getMagicTresureResultTable
544
- when "I"
545
- getItemTresureResultTable
546
- when "O"
547
- getOtherTresureResultTable
548
- when "H"
549
- getHeroineTresureResultTable
550
- when "G"
551
- getGoblinTresureResultTable
552
- end
553
-
554
- return nil if table.nil?
268
+ table = construct_treasure_table(type)
555
269
 
556
- number, dice_str, =
557
- if is_choice
558
- [dice_value.to_i, dice_value]
559
- else
560
- dice_list = @randomizer.roll_barabara(2, 6)
561
- [dice_list.sum, dice_list.join(",")]
562
- end
270
+ character_rank = m[2].to_i
271
+ modifier = ArithmeticEvaluator.eval(m[3])
272
+ return translate("LogHorizon.TRS.need_cr", command: command) if character_rank == 0 && modifier == 0
563
273
 
564
- number += (rank * (is_rank_enable ? 5 : 0)) + modify
274
+ table.fix_dice_value(7) if m[4]
565
275
 
566
- return command if is_choice && (number < getTableMinimum(table))
276
+ return table.roll(character_rank, modifier, @randomizer)
277
+ end
567
278
 
568
- if type == "H"
569
- number = [getAdjustNumberMin(number, table), 87].min
570
- result = getHiroineTresureResultString(table, number)
571
- elsif type == "G"
572
- number = [getAdjustNumberMin(number, table), 87].min
573
- result = getOtherTresureResultString(table, number)
279
+ def construct_treasure_table(type)
280
+ if type == "HTRS"
281
+ HeroineTreasureTable.from_i18n("LogHorizon.TRS.HTRS", @locale)
574
282
  else
575
- number = [getAdjustNumberMin(number, table), 187].min
576
- result = getOtherTresureResultStringEx(table, number)
283
+ TreasureTable.from_i18n("LogHorizon.TRS.#{type}", @locale)
577
284
  end
578
-
579
- return "#{tableName}(#{number}#{dice_str ? '[' + dice_str + ']' : ''}):#{result}"
580
285
  end
581
286
 
582
- def getHiroineTresureResultString(table, number)
583
- table_max_number = table.map(&:first).max
287
+ # 拡張ルール財宝表
288
+ def roll_treasure_table_b2(command)
289
+ m = /^([CMIO]TRSE)(\d+)*([+\-\d]+)?(\$)?$/.match(command)
290
+ return nil unless m
584
291
 
585
- result =
586
- if number <= table_max_number
587
- get_table_by_number(number, table)
588
- else
589
- "※ #{table_max_number + 1}以降は未定義です ※"
590
- end
591
-
592
- return result
593
- end
594
-
595
- def getOtherTresureResultString(table, number)
596
- result =
597
- case number
598
- when 63..72
599
- get_table_by_number(number - 10, table) + '&80G'
600
- when 73..82
601
- get_table_by_number(number - 20, table) + '&160G'
602
- when 83..87
603
- get_table_by_number(number - 30, table) + '&260G'
604
- else
605
- get_table_by_number(number, table)
606
- end
607
-
608
- return result
609
- end
610
-
611
- def getOtherTresureResultStringEx(table, number)
612
- result =
613
- case number
614
- when 163..172
615
- get_table_by_number(number - 10, table) + '&200G'
616
- when 173..182
617
- get_table_by_number(number - 20, table) + '&400G'
618
- when 183..187
619
- get_table_by_number(number - 30, table) + '&600G'
620
- else
621
- get_table_by_number(number, table)
622
- end
623
-
624
- return result
625
- end
292
+ type = m[1]
293
+ table = ExpansionTreasureTable.from_i18n("LogHorizon.TRSE.#{type}", @locale)
626
294
 
627
- def getCashTresureResultTable
628
- tableName = "金銭財宝表"
629
- table = [
630
- [7, '35G'],
631
- [8, '40G'],
632
- [9, '40G'],
633
- [10, '40G'],
634
- [11, '45G'],
635
- [12, '45G'],
636
- [13, '45G'],
637
- [14, '50G'],
638
- [15, '50G'],
639
- [16, '50G'],
640
- [17, '55G'],
641
- [18, '55G'],
642
- [19, '60G'],
643
- [20, '60G'],
644
- [21, '65G'],
645
- [22, '70G'],
646
- [23, '70G'],
647
- [24, '75G'],
648
- [25, '75G'],
649
- [26, '80G'],
650
- [27, '85G'],
651
- [28, '85G'],
652
- [29, '90G'],
653
- [30, '95G'],
654
- [31, '100G'],
655
- [32, '100G'],
656
- [33, '105G'],
657
- [34, '110G'],
658
- [35, '115G'],
659
- [36, '120G'],
660
- [37, '125G'],
661
- [38, '130G'],
662
- [39, '135G'],
663
- [40, '140G'],
664
- [41, '145G'],
665
- [42, '150G'],
666
- [43, '155G'],
667
- [44, '160G'],
668
- [45, '165G'],
669
- [46, '170G'],
670
- [47, '175G'],
671
- [48, '180G'],
672
- [49, '185G'],
673
- [50, '195G'],
674
- [51, '200G'],
675
- [52, '205G'],
676
- [53, '210G'],
677
- [54, '220G'],
678
- [55, '225G'],
679
- [56, '230G'],
680
- [57, '240G'],
681
- [58, '245G'],
682
- [59, '255G'],
683
- [60, '260G'],
684
- [61, '265G'],
685
- [62, '275G'],
686
- [63, '280G'],
687
- [64, '290G'],
688
- [65, '300G'],
689
- [66, '300G'],
690
- [67, '310G'],
691
- [68, '320G'],
692
- [69, '330G'],
693
- [70, '340G'],
694
- [71, '340G'],
695
- [72, '350G'],
696
- [73, '360G'],
697
- [74, '370G'],
698
- [75, '380G'],
699
- [76, '390G'],
700
- [77, '400G'],
701
- [78, '410G'],
702
- [79, '420G'],
703
- [80, '430G'],
704
- [81, '440G'],
705
- [82, '450G'],
706
- [83, '460G'],
707
- [84, '460G'],
708
- [85, '480G'],
709
- [86, '490G'],
710
- [87, '500G'],
711
- [88, '510G'],
712
- [89, '520G'],
713
- [90, '530G'],
714
- [91, '540G'],
715
- [92, '550G'],
716
- [93, '560G'],
717
- [94, '570G'],
718
- [95, '580G'],
719
- [96, '590G'],
720
- [97, '610G'],
721
- [98, '620G'],
722
- [99, '630G'],
723
- [100, '640G'],
724
- [101, '650G'],
725
- [102, '660G'],
726
- [103, '680G'],
727
- [104, '690G'],
728
- [105, '700G'],
729
- [106, '710G'],
730
- [107, '730G'],
731
- [108, '740G'],
732
- [109, '750G'],
733
- [110, '760G'],
734
- [111, '780G'],
735
- [112, '790G'],
736
- [113, '800G'],
737
- [114, '820G'],
738
- [115, '830G'],
739
- [116, '840G'],
740
- [117, '860G'],
741
- [118, '870G'],
742
- [119, '890G'],
743
- [120, '900G'],
744
- [121, '910G'],
745
- [122, '930G'],
746
- [123, '940G'],
747
- [124, '960G'],
748
- [125, '970G'],
749
- [126, '990G'],
750
- [127, '1000G'],
751
- [128, '1020G'],
752
- [129, '1030G'],
753
- [130, '1050G'],
754
- [131, '1060G'],
755
- [132, '1080G'],
756
- [133, '1090G'],
757
- [134, '1110G'],
758
- [135, '1130G'],
759
- [136, '1140G'],
760
- [137, '1160G'],
761
- [138, '1170G'],
762
- [139, '1190G'],
763
- [140, '1210G'],
764
- [141, '1220G'],
765
- [142, '1240G'],
766
- [143, '1260G'],
767
- [144, '1270G'],
768
- [145, '1290G'],
769
- [146, '1310G'],
770
- [147, '1330G'],
771
- [148, '1340G'],
772
- [149, '1360G'],
773
- [150, '1380G'],
774
- [151, '1400G'],
775
- [152, '1410G'],
776
- [153, '1430G'],
777
- [154, '1450G'],
778
- [155, '1470G'],
779
- [156, '1490G'],
780
- [157, '1500G'],
781
- [158, '1520G'],
782
- [159, '1540G'],
783
- [160, '1560G'],
784
- [161, '1580G'],
785
- [162, '1600G'],
786
- ]
787
-
788
- return tableName, table
789
- end
295
+ character_rank = m[2].to_i
296
+ modifier = ArithmeticEvaluator.eval(m[3])
297
+ return translate("LogHorizon.TRS.need_cr", command: command) if character_rank == 0 && modifier == 0
790
298
 
791
- def getMagicTresureResultTable
792
- tableName = "魔法素材財宝表"
793
- table = [
794
- [7, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'],
795
- [8, '新緑の若芽[コア素材](30G)'],
796
- [9, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'],
797
- [10, '怪しい丸薬[コア素材](30G)'],
798
- [11, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'],
799
- [12, '滑らかな被膜[コア素材](30G)'],
800
- [13, '魔触媒2[魔触媒2](20G)&魔触媒1[魔触媒1](15G)'],
801
- [14, '呪法シリンダー[コア素材](30G)'],
802
- [15, '魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)'],
803
- [16, '反魔水銀[コア素材](40G)'],
804
- [17, '魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)'],
805
- [18, '鋭い牙[コア素材](40G)'],
806
- [19, '魔触媒3[魔触媒3](25G)&魔触媒2[魔触媒2](20G)'],
807
- [20, '自戒の茨[コア素材](50G)'],
808
- [21, '魔触媒4[魔触媒4](30G)&魔触媒3[魔触媒3](25G)'],
809
- [22, '流星のかけら[コア素材](50G)'],
810
- [23, '魔触媒4[魔触媒4](30G)&魔触媒3[魔触媒3](25G)'],
811
- [24, '聖なる繊維[コア素材](50G)'],
812
- [25, '魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)'],
813
- [26, '巨人の髭[コア素材](60G)'],
814
- [27, '魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)'],
815
- [28, '精密な歯車[コア素材](60G)'],
816
- [29, '魔触媒5[魔触媒5](40G)&魔触媒4[魔触媒4](30G)'],
817
- [30, '謎めいた毛皮[コア素材](80G)'],
818
- [31, '魔触媒6[魔触媒6](50G)&魔触媒5[魔触媒5](40G)'],
819
- [32, '雄々しい角[コア素材](80G)'],
820
- [33, '魔触媒6[魔触媒6](50G)&魔触媒5[魔触媒5](40G)'],
821
- [34, 'つややかな繭[コア素材](80G)'],
822
- [35, '魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)'],
823
- [36, '小型錬成陣[コア素材](100G)'],
824
- [37, '魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)'],
825
- [38, '銀の円環[コア素材](100G)'],
826
- [39, '魔触媒7[魔触媒7](60G)&魔触媒6[魔触媒6](50G)'],
827
- [40, '仙桃果[コア素材](120G)'],
828
- [41, '魔触媒8[魔触媒8](70G)&魔触媒7[魔触媒7](60G)'],
829
- [42, '動力ケーブル[コア素材](120G)'],
830
- [43, '魔触媒8[魔触媒8](70G)&魔触媒7[魔触媒7](60G)'],
831
- [44, '流星歯車[コア素材](120G)'],
832
- [45, '魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)'],
833
- [46, '茨のトゲ[コア素材](140G)'],
834
- [47, '魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)'],
835
- [48, '砕けた剛剣[コア素材](140G)'],
836
- [49, '魔触媒9[魔触媒9](90G)&魔触媒8[魔触媒8](70G)'],
837
- [50, '絶えない火種[コア素材](180G)'],
838
- [51, '魔触媒10[魔触媒10](110G)&魔触媒9[魔触媒9](90G)'],
839
- [52, '魔導錠[コア素材](180G)'],
840
- [53, '魔触媒10[魔触媒10](110G)&魔触媒9[魔触媒9](90G)'],
841
- [54, '青ざめた盾鱗[コア素材](180G)'],
842
- [55, '魔触媒10[魔触媒10](110G)x2'],
843
- [56, '破軍の戦帯[コア素材](220G)'],
844
- [57, '魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G)'],
845
- [58, '派手な羽根飾り[コア素材](220G)'],
846
- [59, '魔触媒11[魔触媒11](120G)&魔触媒10[魔触媒10](110G)'],
847
- [60, '神隠しの古枝[コア素材](240G)'],
848
- [61, '魔触媒11[魔触媒11](120G)x2'],
849
- [62, '呪紋水晶[コア素材](240G)'],
850
- [63, '魔触媒12[魔触媒12](150G)&魔触媒11[魔触媒11](120G)'],
851
- [64, '謎めいたフラスコ[コア素材](240G)'],
852
- [65, '魔触媒12[魔触媒12](150G)&魔触媒11[魔触媒11](120G)'],
853
- [66, '未熟な竜玉[コア素材](300G)'],
854
- [67, '魔触媒12[魔触媒12](150G)x2'],
855
- [68, '陰陽の水銀[コア素材](300G)'],
856
- [69, '魔触媒13[魔触媒13](170G)&魔触媒12[魔触媒12](150G)'],
857
- [70, '金剛骨[コア素材](340G)'],
858
- [71, '魔触媒13[魔触媒13](170G)x2'],
859
- [72, 'アルヴの研磨剤[コア素材](340G)'],
860
- [73, '魔触媒14[魔触媒14](190G)&魔触媒13[魔触媒13](170G)'],
861
- [74, '不死王の心臓[コア素材](340G)'],
862
- [75, '魔触媒14[魔触媒14](190G)x2'],
863
- [76, '緑小鬼の大軍旗[コア素材](380G)'],
864
- [77, '魔触媒14[魔触媒14](190G)x2'],
865
- [78, '深層アダマン鉱石[コア素材](380G)'],
866
- [79, '魔触媒15[魔触媒15](220G)&魔触媒14[魔触媒14](190G)'],
867
- [80, '漆黒の眼球[コア素材](440G)'],
868
- [81, '魔触媒15[魔触媒15](220G)&魔触媒14[魔触媒14](190G)'],
869
- [82, '雪桃の実[コア素材](440G)'],
870
- [83, '魔触媒15[魔触媒15](220G)x2'],
871
- [84, '四つ葉のアンク[コア素材](440G)'],
872
- [85, '魔触媒16[魔触媒16](250G)&魔触媒15[魔触媒15](220G)'],
873
- [86, '金色のたてがみ[コア素材](500G)'],
874
- [87, '魔触媒16[魔触媒16](250G)&魔触媒15[魔触媒15](220G)'],
875
- [88, '銀の車輪[コア素材](500G)'],
876
- [89, '魔触媒16[魔触媒16](250G)x2'],
877
- [90, '封緑樹の堅枝[コア素材](560G)'],
878
- [91, '魔触媒17[魔触媒17](280G)&魔触媒16[魔触媒16](250G)'],
879
- [92, '千年王樹の種子[コア素材](560G)'],
880
- [93, '魔触媒17[魔触媒17](280G)x2'],
881
- [94, '巨鳥の鎖骨[コア素材](560G)'],
882
- [95, '魔触媒17[魔触媒17](280G)x2'],
883
- [96, '水棲緑鬼の王卵[コア素材](620G)'],
884
- [97, '魔触媒18[魔触媒18](310G)&魔触媒17[魔触媒17](280G)'],
885
- [98, '太陽の飾り鋲[コア素材](620G)'],
886
- [99, '魔触媒18[魔触媒18](310G)x2'],
887
- [100, '火精霊の心核[コア素材](680G)'],
888
- [101, '魔触媒19[魔触媒19](340G)&魔触媒18[魔触媒18](310G)'],
889
- [102, '獄炎狼の房毛[コア素材](680G)'],
890
- [103, '魔触媒19[魔触媒19](340G)x2'],
891
- [104, '島クジラの巨骨[コア素材](680G)'],
892
- [105, '魔触媒19[魔触媒19](340G)x2'],
893
- [106, '原初の炎[コア素材](740G)'],
894
- [107, '魔触媒20[魔触媒20](370G)&魔触媒19[魔触媒19](340G)'],
895
- [108, '魔石草の種[コア素材](740G)'],
896
- [109, '魔触媒20[魔触媒20](370G)x2'],
897
- [110, '稠密立方魔晶[コア素材](820G)'],
898
- [111, '魔触媒21[魔触媒21](410G)&魔触媒20[魔触媒20](370G)'],
899
- [112, '清掃用女中人形九号[コア素材](820G)'],
900
- [113, '魔触媒21[魔触媒21](410G)&魔触媒20[魔触媒20](370G)'],
901
- [114, '飛びイルカの心臓[コア素材](820G)'],
902
- [115, '魔触媒21[魔触媒21](410G)x2'],
903
- [116, '奈落皇蛇の額鱗[コア素材](900G)'],
904
- [117, '魔触媒22[魔触媒22](450G)&魔触媒21[魔触媒21](410G)'],
905
- [118, 'ブリザードダイヤ[コア素材](900G)'],
906
- [119, '魔触媒22[魔触媒22](450G)&魔触媒21[魔触媒21](410G)'],
907
- [120, '火炎向日葵の花びら[コア素材](980G)'],
908
- [121, '魔触媒22[魔触媒22](450G)x2'],
909
- [122, '紅蓮蝙蝠の鮮血[コア素材](980G)'],
910
- [123, '魔触媒23[魔触媒23](490G)&魔触媒22[魔触媒22](450G)'],
911
- [124, '落日祈祷書[コア素材](980G)'],
912
- [125, '魔触媒24[魔触媒24](530G)&黒檀の馬具[換金](440G)'],
913
- [126, '辰砂の組紐[コア素材](1060G)'],
914
- [127, '魔触媒23[魔触媒23](490G)x2'],
915
- [128, '黴臭い皮の剣帯[コア素材](1060G)'],
916
- [129, '魔触媒24[魔触媒24](530G)&魔触媒23[魔触媒23](490G)'],
917
- [130, '玻璃蜥蜴の抜け殻[コア素材](1160G)'],
918
- [131, '魔触媒24[魔触媒24](530G)x2'],
919
- [132, '火炎巨人の尺骨[コア素材](1160G)'],
920
- [133, '魔触媒24[魔触媒24](530G)x2'],
921
- [134, '高熱練炭[コア素材](1160G)'],
922
- [135, '魔触媒26[魔触媒26](620G)&青銅の装置[換金](510G)'],
923
- [136, 'すり切れた羽衣[コア素材](1240G)'],
924
- [137, '魔触媒25[魔触媒25](580G)x2'],
925
- [138, '亡霊のため息[コア素材](1240G)'],
926
- [139, '魔触媒25[魔触媒25](580G)x2'],
927
- [140, '宵闇色のヒゲ[コア素材](1340G)'],
928
- [141, '魔触媒27[魔触媒27](670G)&月長石の腕輪[換金](550G)'],
929
- [142, 'コアトルの毒腺[コア素材](1340G)'],
930
- [143, '魔触媒26[魔触媒26](620G)x2'],
931
- [144, '玄亀の甲羅[コア素材](1340G)'],
932
- [145, '魔触媒28[魔触媒28](720G)&宝玉のネックレス[換金](570G)'],
933
- [146, '山大鹿の角[コア素材](1440G)'],
934
- [147, '魔触媒28[魔触媒28](720G)&消えない燭台[換金](600G)'],
935
- [148, '煉獄クモの燃糸[コア素材](1540G)'],
936
- [149, '魔触媒27[魔触媒27](670G)x2'],
937
- [150, '碧氷晶の単眼球[コア素材](1540G)'],
938
- [151, '魔触媒29[魔触媒29](770G)&琥珀のイヤリング[換金](630G)'],
939
- [152, '衝撃竜の牙[コア素材](1540G)'],
940
- [153, '魔触媒29[魔触媒29](770G)&茨を模したティアラ[換金](650G)'],
941
- [154, '鉄鼠の自在尾[コア素材](1540G)'],
942
- [155, '魔触媒30[魔触媒30](820G)&石榴石の腕輪[換金](650G)'],
943
- [156, '人工生命の素[コア素材](1640G)'],
944
- [157, '魔触媒30[魔触媒30](820G)&輝くメガネ[換金](680G)'],
945
- [158, '翡翠甲虫の刃翅[コア素材](1640G)'],
946
- [159, '魔触媒29[魔触媒29](770G)x2'],
947
- [160, '無限渦流の煤[コア素材](1640G)'],
948
- [161, '魔触媒30[魔触媒30](820G)&スライム入り試験管[換金](750G)'],
949
- [162, '陽喰い鳥の嘴[コア素材](1640G)'],
950
- ]
951
-
952
- return tableName, table
953
- end
299
+ table.fix_dice_value(7) if m[4]
954
300
 
955
- def getItemTresureResultTable
956
- tableName = "換金アイテム財宝表"
957
- table = [
958
- [7, '破れた書籍[換金](30G)'],
959
- [8, '古ぼけたぬいぐるみ[換金](40G)'],
960
- [9, 'あやしい書籍[換金](40G)'],
961
- [10, '分厚い書籍[換金](40G)'],
962
- [11, '子供向けの書籍[換金](40G)'],
963
- [12, '犬のぬいぐるみ[換金](40G)'],
964
- [13, '使い込まれたティーセット[換金](40G)'],
965
- [14, 'クマのぬいぐるみ[換金](50G)'],
966
- [15, '白磁のティーセット[換金](50G)'],
967
- [16, '藍色の染料[換金](50G)'],
968
- [17, '毛糸の帽子[換金](50G)'],
969
- [18, '恐竜のぬいぐるみ[換金](50G)'],
970
- [19, '豪華な日記[換金](60G)'],
971
- [20, '乳白色の角[換金](60G)'],
972
- [21, '羽根付き帽子[換金](60G)'],
973
- [22, '魔法の書籍[換金](70G)'],
974
- [23, '木製の食器[換金](70G)'],
975
- [24, '猛獣の毛皮[換金](70G)'],
976
- [25, '魔法使いの帽子[換金](70G)'],
977
- [26, '貴族の絵本[換金](80G)'],
978
- [27, '陶製の食器[換金](80G)'],
979
- [28, '磨かれたティーセット[換金](80G)'],
980
- [29, 'しなやかな毛皮[換金](90G)'],
981
- [30, '巨大な角[換金](90G)'],
982
- [31, '貴重な書籍[換金](100G)'],
983
- [32, '銀の食器[換金](100G)'],
984
- [33, '魔獣の毛皮[換金](100G)'],
985
- [34, '司祭の帽子[換金](110G)'],
986
- [35, '野獣の牙[換金](110G)'],
987
- [36, '巨人のスプーン[換金](120G)'],
988
- [37, '枝分かれした角[換金](120G)'],
989
- [38, '猫耳帽子[換金](130G)'],
990
- [39, '木綿のドレス[換金](130G)'],
991
- [40, '水晶の角[換金](140G)'],
992
- [41, '琥珀の円盤[換金](140G)'],
993
- [42, '幻獣の牙[換金](150G)'],
994
- [43, '古代のドレス[換金](150G)'],
995
- [44, '王朝風のティーセット[換金](160G)'],
996
- [45, '傷ひとつない毛皮[換金](160G)'],
997
- [46, '絹のドレス[換金](170G)'],
998
- [47, '魔法のぬいぐるみ[換金](170G)'],
999
- [48, '神獣の毛皮[換金](180G)'],
1000
- [49, '水晶の食器[換金](180G)'],
1001
- [50, '石の呪具[換金](190G)'],
1002
- [51, '禍々しい仮面[換金](200G)'],
1003
- [52, 'ねず耳カチューシャ[換金](200G)'],
1004
- [53, '竜の牙[換金](210G)'],
1005
- [54, 'スライム?の剥製[換金](220G)'],
1006
- [55, '銀のネジ[換金](220G)'],
1007
- [56, '大猫の剥製[換金](230G)'],
1008
- [57, '舞踏会の仮面[換金](240G)'],
1009
- [58, '重厚な牙[換金](240G)'],
1010
- [59, '宝石細工の仮面[換金](250G)'],
1011
- [60, 'サテンのドレス[換金](260G)'],
1012
- [61, '光る角[換金](260G)'],
1013
- [62, '魔法のドレス[換金](270G)'],
1014
- [63, '道化師の仮面[換金](280G)'],
1015
- [64, 'アルヴのティーセット[換金](290G)'],
1016
- [65, '燃えない毛皮[換金](300G)'],
1017
- [66, '雪狼の剥製[換金](300G)'],
1018
- [67, '籐製の椅子[換金](310G)'],
1019
- [68, '赤い石板[換金](320G)'],
1020
- [69, '黒獅子の剥製[換金](330G)'],
1021
- [70, '三角の椅子[換金](340G)'],
1022
- [71, '子供用紳士服[換金](340G)'],
1023
- [72, 'アルヴの食器[換金](350G)'],
1024
- [73, 'ほつれた紳士服[換金](360G)'],
1025
- [74, '上等な紳士服[換金](370G)'],
1026
- [75, '寄木細工の文箱[換金](380G)'],
1027
- [76, '白磁の燭台[換金](390G)'],
1028
- [77, '黄金の牙[換金](400G)'],
1029
- [78, '白木の文箱[換金](410G)'],
1030
- [79, '青銅の燭台[換金](420G)'],
1031
- [80, '輝く燭台[換金](430G)'],
1032
- [81, '王様の椅子[換金](440G)'],
1033
- [82, '古風な紳士服[換金](450G)'],
1034
- [83, '思い出のドレス[換金](460G)'],
1035
- [84, '古代の種[換金](460G)'],
1036
- [85, '小さな宝石箱[換金](480G)'],
1037
- [86, 'ひびわれた姿見[換金](490G)'],
1038
- [87, '楓の書棚[換金](500G)'],
1039
- [88, '神秘的な仮面[換金](510G)'],
1040
- [89, 'トネリコの書見台[換金](520G)'],
1041
- [90, 'ビロードの紳士服[換金](530G)'],
1042
- [91, '磨きこまれた姿見[換金](540G)'],
1043
- [92, '大きな宝石箱[換金](550G)'],
1044
- [93, '白檀の文箱[換金](560G)'],
1045
- [94, '白樺の姿見[換金](570G)'],
1046
- [95, '焼き物の像[換金](580G)'],
1047
- [96, '彫刻付き姿見[換金](590G)'],
1048
- [97, '粘土の像[換金](610G)'],
1049
- [98, '銀の燭台[換金](620G)'],
1050
- [99, '鳳凰の剥製[換金](630G)'],
1051
- [100, '呪われた像[換金](640G)'],
1052
- [101, '魔王の椅子[換金](650G)'],
1053
- [102, '神域の椅子[換金](660G)'],
1054
- [103, '満杯の宝石箱[換金](680G)'],
1055
- [104, '大理石の貨幣[換金](690G)'],
1056
- [105, '絵の具のセット[換金](700G)'],
1057
- [106, '染料のセット[換金](710G)'],
1058
- [107, '木製の貨幣[換金](730G)'],
1059
- [108, '貝殻の貨幣[換金](740G)'],
1060
- [109, '覆い付き書見台[換金](750G)'],
1061
- [110, '手作りのゲーム盤[換金](760G)'],
1062
- [111, '祭祀用の像[換金](780G)'],
1063
- [112, '真鍮製のゲーム盤[換金](790G)'],
1064
- [113, '螺鈿の文箱[換金](800G)'],
1065
- [114, '青銅の書見台[換金](820G)'],
1066
- [115, '香木の小像[換金](830G)'],
1067
- [116, '魔法使いの像[換金](840G)'],
1068
- [117, '鍵のかかった宝石箱[換金](860G)'],
1069
- [118, 'いかさまゲーム盤[換金](870G)'],
1070
- [119, '魔法の紳士服[換金](890G)'],
1071
- [120, '化粧品のセット[換金](900G)'],
1072
- [121, '古代の姫の小像[換金](910G)'],
1073
- [122, '翡翠の小像[換金](930G)'],
1074
- [123, '真鍮の鉱石[換金](940G)'],
1075
- [124, '真鉄の塊[換金](960G)'],
1076
- [125, '銀の塊[換金](970G)'],
1077
- [126, '古代の貨幣[換金](990G)'],
1078
- [127, '瑪瑙の文箱[換金](1000G)'],
1079
- [128, '銀細工の書見台[換金](1020G)'],
1080
- [129, '粗末な馬具[換金](1030G)'],
1081
- [130, 'あふれた宝石箱[換金](1050G)'],
1082
- [131, '異文明の貨幣[換金](1060G)'],
1083
- [132, '透明な文箱[換金](1080G)'],
1084
- [133, '香水のセット[換金](1090G)'],
1085
- [134, '鳥が象られたティアラ[換金](1110G)'],
1086
- [135, '金細工の燭台[換金](1130G)'],
1087
- [136, '重厚な馬具[換金](1140G)'],
1088
- [137, '香辛料のセット[換金](1160G)'],
1089
- [138, '太陽のティアラ[換金](1170G)'],
1090
- [139, '豪華な姿見[換金](1190G)'],
1091
- [140, '月のティアラ[換金](1210G)'],
1092
- [141, '水晶のメガネ[換金](1220G)'],
1093
- [142, '魔法銀の塊[換金](1240G)'],
1094
- [143, '硝子のメガネ[換金](1260G)'],
1095
- [144, '金細工のゲーム盤[換金](1270G)'],
1096
- [145, '金剛石のメガネ[換金](1290G)'],
1097
- [146, '品のあるネックレス[換金](1310G)'],
1098
- [147, '植物の標本[換金](1330G)'],
1099
- [148, 'くすんだ首輪[換金](1340G)'],
1100
- [149, '空色鋼の塊[換金](1360G)'],
1101
- [150, '騎士の像[換金](1380G)'],
1102
- [151, 'ちぎれたネックレス[換金](1400G)'],
1103
- [152, '漆黒の呪具[換金](1410G)'],
1104
- [153, '精巧な馬具[換金](1430G)'],
1105
- [154, '飾り気のないティアラ[換金](1450G)'],
1106
- [155, '動物の標本[換金](1470G)'],
1107
- [156, '人造人間の標本[換金](1490G)'],
1108
- [157, 'しゃべる姿見[換金](1500G)'],
1109
- [158, '精巧なゲーム盤[換金](1520G)'],
1110
- [159, 'アルヴの貨幣[換金](1540G)'],
1111
- [160, '豪奢なネックレス[換金](1560G)'],
1112
- [161, '猫目石の腕輪[換金](1580G)'],
1113
- [162, '藍玉の腕輪[換金](1600G)'],
1114
- ]
1115
-
1116
- return tableName, table
301
+ return table.roll(character_rank, modifier, @randomizer)
1117
302
  end
1118
303
 
1119
- def getOtherTresureResultTable
1120
- tableName = "そのほか財宝表"
1121
- table = [
1122
- [7, '百科事典(40G)'],
1123
- [8, 'ライトメイス(40G)'],
1124
- [9, '蘇生の宝珠(初級)(40G)'],
1125
- [10, '季節の野菜ポトフ(20G)x2'],
1126
- [11, '荷馬車の笛(45G)'],
1127
- [12, 'モンスター図鑑(初級)(40G)&お好みサンドイッチ(10G)'],
1128
- [13, 'ファインダガー(50G)'],
1129
- [14, 'パッデドアーマー[破損](55G)'],
1130
- [15, '鉄壁符(初級)(45G)'],
1131
- [16, 'ショートボウ[破損](55G)'],
1132
- [17, 'マーシャルアーツドレス[破損](60G)'],
1133
- [18, 'ケルピーの鱗(60G)'],
1134
- [19, 'クレセントバーガー(30G)x2'],
1135
- [20, 'シェフの気まぐれピザ(60G)'],
1136
- [21, 'スモールシールド(70G)'],
1137
- [22, 'ウィローバンド[破損](30G)&暗闇透視薬(初級)(40G)'],
1138
- [23, 'スモールシールド[破損](35G)&魔精の小瓶(初級)(40G)'],
1139
- [24, '鉢がね(80G)'],
1140
- [25, 'ベリーのタルト(40G)x2'],
1141
- [26, '防水バッグ[破損](35G)&水中活動の巻物(初級)(50G)'],
1142
- [27, 'スティレット(90G)'],
1143
- [28, '飛行の巻物(初級)(50G)&強酸毒(初級)(40G)'],
1144
- [29, 'スプリントメイル[破損](100G)'],
1145
- [30, '異次元バッグ(初級)[破損](45G)&おにぎり(50G)'],
1146
- [31, 'ウッデンラウンド(100G)'],
1147
- [32, '野太刀[破損](110G)'],
1148
- [33, '保護の巻物(初級)(70G)&消耗毒(初級)(50G)'],
1149
- [34, 'ライトクロスボウ[破損](115G)'],
1150
- [35, '良質な楽器(110G)'],
1151
- [36, 'ハンターフード[破損](60G)&猛毒薬(中級)(60G)'],
1152
- [37, 'とんすとんの焼き串盛り合わせ(120G)'],
1153
- [38, 'クィルブイリ[破損](135G)'],
1154
- [39, 'ケープ(140G)'],
1155
- [40, 'トートバッグ(140G)'],
1156
- [41, '三つ目鳥の卵炒飯(70G)&衰弱毒(中級)(80G)'],
1157
- [42, '範囲隠密の巻物(初級)(150G)'],
1158
- [43, 'アイアンシールド(150G)'],
1159
- [44, 'クイックカード(初級)(170G)'],
1160
- [45, 'イーグルカード(初級)(170G)'],
1161
- [46, '和弓[破損](170G)'],
1162
- [47, 'エストック[破損](170G)'],
1163
- [48, '食料バッグ(170G)'],
1164
- [49, 'トポト親方のコロッケ(90G)&拘束毒(中級)(100G)'],
1165
- [50, 'モーニングスター(200G)'],
1166
- [51, 'シーダーのスタッフ[破損](200G)'],
1167
- [52, 'カイトシールド(220G)'],
1168
- [53, '怪鳥肉の水炊き(210G)'],
1169
- [54, 'チェインシャツ[破損](245G)'],
1170
- [55, '大弓[破損](240G)'],
1171
- [56, '範囲飛行の巻物(初級)(210G)'],
1172
- [57, 'ポーションホルダー(中級)(240G)'],
1173
- [58, 'アウトレイジ[破損](240G)'],
1174
- [59, '定番カレー(130G)x2'],
1175
- [60, '蘇生の宝珠(中級)(240G)'],
1176
- [61, '招命の宝珠(中級)(120G)&焼きそばパン(150G)'],
1177
- [62, '異次元バッグ(中級)(280G)'],
1178
- [63, '名工の楽器(280G)'],
1179
- [64, '月狼の牙[破損](180G)&解毒薬(中級)(130G)'],
1180
- [65, '魚鱗の宝珠(中級)(280G)'],
1181
- [66, '防水ポーチ(320G)'],
1182
- [67, '収納シールド(320G)'],
1183
- [68, '火炎のイヤリング(330G)'],
1184
- [69, '絹の帽子(350G)'],
1185
- [70, '幻翼の宝珠(中級)(320G)'],
1186
- [71, 'バグナウ[破損](340G)'],
1187
- [72, 'ロングボウ[破損](370G)'],
1188
- [73, 'ショテル[破損](370G)'],
1189
- [74, 'デッキシールド[破損](185G)&チキンボックス(200G)'],
1190
- [75, 'コルセスカ[破損](365G)'],
1191
- [76, 'サイプレスのスタッフ[破損](425G)'],
1192
- [77, 'チェーンシックル[破損](230G)&苺のふんわりカップケーキ(230G)'],
1193
- [78, 'ブロードアックス(410G)'],
1194
- [79, 'クロスシールド(470G)'],
1195
- [80, 'モンスター図鑑(上級)(400G)'],
1196
- [81, '羽毛のケープ(400G)'],
1197
- [82, '鉄身のブーツ(400G)'],
1198
- [83, '看破の宝珠(中級)(420G)'],
1199
- [84, 'アドベンチャーザック(480G)'],
1200
- [85, '隠密の巻物(中級)(460G)'],
1201
- [86, 'ファルクス[破損](500G)'],
1202
- [87, 'ポーションホルダー(上級)(540G)'],
1203
- [88, 'カタール[破損](500G)'],
1204
- [89, '名匠の楽器(540G)'],
1205
- [90, '技能薬(上級)(480G)'],
1206
- [91, '火炎のタリスマン(620G)'],
1207
- [92, 'からすの手提げ袋(600G)'],
1208
- [93, '範囲隠密の巻物(中級)(570G)'],
1209
- [94, 'トラベラーハット(650G)'],
1210
- [95, '高位保護の巻物(中級)(520G)'],
1211
- [96, '長柄槍[破損](600G)'],
1212
- [97, '範囲飛行の巻物(中級)(570G)'],
1213
- [98, 'クイックカード(中級)(620G)'],
1214
- [99, 'トラベラーハット(650G)'],
1215
- [100, '剛手甲[破損](650G)'],
1216
- [101, '掃討の巻物(特級)(570G)'],
1217
- [102, 'エスパドン[破損](700G)'],
1218
- [103, '異次元バッグ(上級)(740G)'],
1219
- [104, 'まごころミートパイ(410G)x2'],
1220
- [105, '李満弓[破損](700G)'],
1221
- [106, '招命の宝珠(上級)(395G)x2'],
1222
- [107, '識別の巻物(上級)(690G)'],
1223
- [108, 'リネンクロス[破損](850G)'],
1224
- [109, '出前のおかもち(820G)'],
1225
- [110, '回復薬(上級)(720G)'],
1226
- [111, '蘇生の宝珠(上級)(790G)'],
1227
- [112, '再生薬(上級)(790G)'],
1228
- [113, 'エレメンタルカード(上級)(750G)'],
1229
- [114, '極上の楽器(900G)'],
1230
- [115, '踏破の巻物(上級)(750G)'],
1231
- [116, '垣間見の巻物(特級)(750G)'],
1232
- [117, '鉄壁符(上級)(820G)'],
1233
- [118, '魚鱗の宝珠(上級)(860G)'],
1234
- [119, '神奉刀[破損](850G)'],
1235
- [120, 'ヘヴィナックル[破損](950G)'],
1236
- [121, '巧指符(特級)(1000G)'],
1237
- [122, '幻翼の宝珠(上級)(930G)'],
1238
- [123, '火炎のベルト(1000G)'],
1239
- [124, 'シルキーベレー(1100G)'],
1240
- [125, 'ヒーリングワード(上級)(970G)'],
1241
- [126, '技能薬(特級)(930G)'],
1242
- [127, 'クレセントアックス[破損](1100G)'],
1243
- [128, 'ウォーハンマー(1100G)'],
1244
- [129, 'ミスルトゥのスタッフ[破損](1150G)'],
1245
- [130, '範囲保護の巻物(上級)(970G)'],
1246
- [131, '浄眼の巻物(上級)(970G)'],
1247
- [132, 'マジカルカード(上級)(1000G)'],
1248
- [133, '現身符(上級)(1000G)'],
1249
- [134, 'ジュエリーポーチ(1200G)'],
1250
- [135, '耐魔の軟膏(上級)(1000G)'],
1251
- [136, '鉄身の軟膏(上級)(1000G)'],
1252
- [137, '範囲飛行の巻物(上級)(1100G)'],
1253
- [138, '隠密の巻物(上級)(1100G)'],
1254
- [139, '魔性の楽器(1300G)'],
1255
- [140, '良業物[破損](1150G)'],
1256
- [141, '範囲付呪の巻物(上級)(1100G)'],
1257
- [142, 'ジャマダハル[破損](1300G)'],
1258
- [143, 'マスターパック(1400G)'],
1259
- [144, 'ドライハンダー[破損](1450G)'],
1260
- [145, 'グレイトヘルム[破損](1050G)'],
1261
- [146, '高位保護の巻物(上級)(1200G)'],
1262
- [147, '範囲隠密の巻物(上級)(1200G)'],
1263
- [148, 'ローズサークレット(1600G)'],
1264
- [149, '火炎のメダリオン(1600G)'],
1265
- [150, 'ファインジャベリン[破損](1200G)'],
1266
- [151, 'カッツバルゲル[破損](1250G)'],
1267
- [152, '紫の指輪[破損](1300G)'],
1268
- [153, '異次元バッグ(特急)(1600G)'],
1269
- [154, '五人張[破損](1750G)'],
1270
- [155, '皇国技芸寮打物[破損](1400G)'],
1271
- [156, 'ヘヴィランス[破損](1500G)'],
1272
- [157, '竜手甲[破損](1650G)'],
1273
- [158, 'ポロニアのワンド[破損](1700G)'],
1274
- [159, 'デスサイズ[破損](1700G)'],
1275
- [160, 'フランシスカ(1700G)'],
1276
- [161, '伝説の楽器(1700G)'],
1277
- [162, 'ウルミン(1900G)'],
1278
- ]
1279
-
1280
- return tableName, table
1281
- end
1282
-
1283
- def getHeroineTresureResultTable
1284
- tableName = "ヒロイン財宝表"
1285
- table = [
1286
- [7, '行き倒れのみすぼらしいやせっぽちの幼女'],
1287
- [8, '何よりお金が大事な御団子頭のチャイナ娘'],
1288
- [9, 'おネダり上手キャミソ肩だしセーター妖術師'],
1289
- [10, '小さな背中で皆を護るカットジーンズ武闘家'],
1290
- [11, 'イカ帽子をかぶったドジっ娘侵略者'],
1291
- [12, '呆れるほどポジティブな自称名探偵'],
1292
- [13, '肝心な所でドジ踏む猫毛ポニテ殴り施療神官'],
1293
- [14, '卵かけご飯の好きな貧乳神祇官'],
1294
- [15, '光物大好きガメツイビッグリボン二刀細剣士'],
1295
- [16, 'オークから命からがら逃げてきた剣の乙女'],
1296
- [17, 'あなたのことを盲目的に賛美する自称妹'],
1297
- [18, 'アピールするのに認識されない神祇官'],
1298
- [19, '明るくポジティブなピンクのリボンの少女'],
1299
- [20, '虚乳の魔法が使えないコンプレックス魔女'],
1300
- [21, '食欲に一切躊躇しないむっちり駄肉アイドル'],
1301
- [22, '泣きホクロが魅惑の悪戯お姉さん盗剣士'],
1302
- [23, '執着心の強い若作りで陽気な年増神話生物'],
1303
- [24, '詩歌を愛する平安引きこもり姫'],
1304
- [25, '病弱だが誇り高い没落貴族のお嬢様'],
1305
- [26, '元気いっぱい!小柄な狼牙族の野生児少女'],
1306
- [27, '借金のかたで段ボールハウスなリコピン'],
1307
- [28, '帰国子女の巫女服風魔砲少女デース!'],
1308
- [29, 'ついてくるだけは出来るゾンビ娘'],
1309
- [30, '夢にひたむきな緑髪の超時空アイドル候補生'],
1310
- [31, 'すぐ股間を蹴るギザギザ歯のヤンキー娘'],
1311
- [32, '使い減りしない盾'],
1312
- [33, 'FXで有り金を全部とかしたうつろな先輩'],
1313
- [34, '二の腕ぷにぷにだが家計簿を付けられる魔王'],
1314
- [35, 'その胸は豊満であった記憶喪失の女ニンジャ'],
1315
- [36, 'よくお裾わけをくれるおさげ髪のパン屋の娘'],
1316
- [37, '「汚いは褒め言葉」の目線つき女暗殺者'],
1317
- [38, 'ボタンが弾けそうで涙目のギルド窓口看板娘'],
1318
- [39, '何でもオカルトにしてパニックになる少女'],
1319
- [40, '戦闘の度に大食いしてしまう悩める弓術少女'],
1320
- [41, '些細なことですぐ絆されちゃう金髪少女'],
1321
- [42, '一緒に帰るのが恥ずかしいピンク髪幼馴染'],
1322
- [43, 'ぽんぽんがペインでトイレ常駐なエルフ少女'],
1323
- [44, '見つめると赤面する前髪法儀族少女'],
1324
- [45, 'すぐビビッてテンパる小動物系少女'],
1325
- [46, '背が高く紳士でキザなヅカ系王子様騎士女'],
1326
- [47, '竹を割ったような性格の筋肉ドワーフ女'],
1327
- [48, 'いつもあなたを夢に見ているポニテ少女'],
1328
- [49, '先陣先駆け夜討ち朝駆けお寝坊姉御武士'],
1329
- [50, '何にでも首を突っ込む旅ガラスのロリババア'],
1330
- [51, '事あるごとに踊る薄着南国褐色娘'],
1331
- [52, '彼女はあなたの初恋の人に似ている']
1332
- ]
1333
-
1334
- return tableName, table
1335
- end
304
+ # 財宝表
305
+ class TreasureTable
306
+ include Translate
1336
307
 
1337
- def getGoblinTresureResultTable
1338
- tableName = "ゴブリン財宝表"
1339
- table = [
1340
- [7, 'ライトメイス(40G)'],
1341
- [8, '百科事典(40G)'],
1342
- [9, '42G'],
1343
- [10, '古びた髑髏[コア素材](40G)'],
1344
- [11, '加速の巻物(初級)(45G)'],
1345
- [12, '46G'],
1346
- [13, '48G'],
1347
- [14, '50G'],
1348
- [15, 'ガラス玉[換金](60G)'],
1349
- [16, '血塗られた刃[コア素材](50G)'],
1350
- [17, '歪んだ金皿[換金](60G)'],
1351
- [18, '59G'],
1352
- [19, '毛皮の敷物[換金](60G)'],
1353
- [20, 'とがった爪[コア素材](60G)'],
1354
- [21, '67G'],
1355
- [22, '傷だらけの象牙像[換金](70G)'],
1356
- [23, '72G'],
1357
- [24, 'ライトランス[破損](75G)'],
1358
- [25, '骨のネックレス[換金](80G)'],
1359
- [26, '砂金混じりの石[換金](80G)'],
1360
- [27, '85G'],
1361
- [28, '香木の小片[換金](90G)'],
1362
- [29, '奇妙なお面[換金](90G)'],
1363
- [30, '96G'],
1364
- [31, 'シミター(100G)'],
1365
- [32, 'ウッデンラウンド(100G)'],
1366
- [33, '風鳴りの鈴[コア素材](80G)&鉄の陣笠[コア素材](30G)'],
1367
- [34, '112G'],
1368
- [35, '山羊スライム(大)[換金](120G)'],
1369
- [36, '121G'],
1370
- [37, '高級桧材[換金](125G)'],
1371
- [38, '130G'],
1372
- [39, '水晶のチェス駒[換金](135G)'],
1373
- [40, '140G'],
1374
- [41, 'テント(キャンプ用)(150G)'],
1375
- [42, '怪しい丸薬[コア素材](30G)x2&100G'],
1376
- [43, '謎めいた毛皮[コア素材](80G)&怨念の鍔[コア素材](80G)'],
1377
- [44, '儀式の骨剣[換金](160G)'],
1378
- [45, '古ぼけたコイン[換金](165G)'],
1379
- [46, '狼牙棒(170G)'],
1380
- [47, '法理回路[コア素材](60G)&120G'],
1381
- [48, '大きな魔力結晶[コア素材](120G)&60G'],
1382
- [49, '189G'],
1383
- [50, '上等な樽酒[換金](200G)'],
1384
- [51, '201G'],
1385
- [52, '白の指輪(210G)'],
1386
- [53, 'ヒスイの首飾り[換金](210G)'],
1387
- [54, '金のゴブリン像[換金](220G)'],
1388
- [55, 'サーベル(230G)'],
1389
- [56, '真鉄の刀身[コア素材](120G)&120G'],
1390
- [57, '汚れた青磁の壺[換金](240G)'],
1391
- [58, 'とんすとんの焼き串盛り合わせ(120G)x2'],
1392
- [59, 'ゴブリン王の勲章[換金](255G)'],
1393
- [60, '垣間見の巻物(中級)(130G)x2'],
1394
- [61, '269G'],
1395
- [62, '白狼の毛皮[換金](280G)'],
1396
- ]
1397
-
1398
- return tableName, table
1399
- end
308
+ class << self
309
+ def from_i18n(key, locale)
310
+ table = I18n.translate(key, raise: true, locale: locale)
311
+ new(table[:name], table[:items], locale)
312
+ end
313
+ end
1400
314
 
1401
- # パーソナリティタグ表
1402
- def getPersonalityTagDiceCommandResult(command)
1403
- return nil unless command == "PTAG"
1404
-
1405
- tableName = "パーソナリティタグ表"
1406
- table = [
1407
- '[おませさん]',
1408
- '[好奇心旺盛]',
1409
- '[寂しがりや]',
1410
- '[生真面目]',
1411
- '[食いしん坊]',
1412
- '[やんちゃ]または[おてんば]',
1413
-
1414
- '[お人よし]',
1415
- '[情熱家]',
1416
- '[世話好き]',
1417
- '[理知的]',
1418
- '[頑固者]',
1419
- '[兄貴肌]または[姉御肌]',
1420
-
1421
- '[義理堅い]',
1422
- '[気まぐれ]',
1423
- '[職人気質]',
1424
- '[熱血漢]',
1425
- '[努力家]',
1426
- '[男好き]または[女好き]',
1427
-
1428
- '[家庭的]',
1429
- '[負けず嫌い]',
1430
- '[純真]',
1431
- '[朴念仁]',
1432
- '[慈悲深い]',
1433
- '[マイペース]',
1434
-
1435
- '[楽天家]',
1436
- '[仲間思い]',
1437
- '[誇り高い]',
1438
- '[社交的]',
1439
- '[冷静沈着]',
1440
- '[ロマンチスト]',
1441
-
1442
- '[学者肌]',
1443
- '[内向的]',
1444
- '[苦労人]',
1445
- '[派手好き]',
1446
- '[勇猛果敢]',
1447
- '[ミステリアス]',
1448
- ]
1449
-
1450
- result, number = get_table_by_d66(table)
1451
-
1452
- text = "#{tableName}(#{number}):#{result}"
1453
- return text
1454
- end
315
+ # @param name [String]
316
+ # @param items [Hash{Integer => String}]
317
+ def initialize(name, items, locale)
318
+ @name = name
319
+ @items = items
320
+ @locale = locale
1455
321
 
1456
- # 交友表
1457
- def getFriendlyChartDiceCommandResult(command)
1458
- return nil unless command == "KOYU"
1459
-
1460
- tableName = "交友表"
1461
- table = [
1462
- "交友対象への庇護\nあなたは、交友対象を庇護したいと思っている。守ってあげられる強さがあなたにはある。",
1463
- "交友対象への親愛\nあなたは、交友対象を好ましく思っている。その気持ちを彼に伝えているとは限らない。",
1464
- "交友対象との義兄弟\nあなたは、交友対象と兄弟同然の間柄だ。もちろん、血は繋がっていないが、そんなことは些細なことだ。",
1465
- "交友対象の英雄\nあなたは、交友対象から英雄視されている。それは例えあなたが否定しても変わらない。",
1466
- "交友対象への尊敬\nあなたは、交友対象を尊敬している。彼の技術、心の強さ。それがなんであっても彼への敬意は変わらない。",
1467
- "交友対象の相棒\nあなたは、交友対象を相棒だと思っている。彼なら自分と一緒に歩んでくれるだろう。",
1468
-
1469
- "交友対象への庇護\nあなたは、交友対象を庇護したいと思っている。守ってあげられる強さがあなたにはある。",
1470
- "交友対象への親愛\nあなたは、交友対象を好ましく思っている。その気持ちを彼に伝えているとは限らない。",
1471
- "交友対象との義兄弟\nあなたは、交友対象と兄弟同然の間柄だ。もちろん、血は繋がっていないが、そんなことは些細なことだ。",
1472
- "交友対象の英雄\nあなたは、交友対象から英雄視されている。それは例えあなたが否定しても変わらない。",
1473
- "交友対象への尊敬\nあなたは、交友対象を尊敬している。彼の技術、心の強さ。それがなんであっても彼への敬意は変わらない。",
1474
- "交友対象の相棒\nあなたは、交友対象を相棒だと思っている。彼なら自分と一緒に歩んでくれるだろう。",
1475
-
1476
- "交友対象の恩\nあなたは交友対象に恩を受けた。今度は自分がその恩に報いる番だ。",
1477
- "交友対象のライバル\nあなたは、交友対象をライバルだと思っている。それは一方的なものかもしれないし、切磋琢磨する間柄かもしれない。",
1478
- "交友対象への興味\nあなたは、交友対象に対して興味を持っている。彼を見ているのが面白く、彼の行動を見届けてみたい。",
1479
- "交友対象との友情\nあなたは、彼を友人だと思っている。それはどこに行っても変わらない確かなものだ。",
1480
- "交友対象との同志\nあなたは、交友対象の同志である。同好の士であったり、同じ目的に向かう者だったりするだろう。",
1481
- "交友対象への理解\nあなたは、交友対象を理解したいと思っている。彼はあなたと違う新しい視点を見せてくれる。",
1482
-
1483
- "交友対象の恩\nあなたは交友対象に恩を受けた。今度は自分がその恩に報いる番だ。",
1484
- "交友対象のライバル\nあなたは、交友対象をライバルだと思っている。それは一方的なものかもしれないし、切磋琢磨する間柄かもしれない。",
1485
- "交友対象への興味\nあなたは、交友対象に対して興味を持っている。彼を見ているのが面白く、彼の行動を見届けてみたい。",
1486
- "交友対象との友情\nあなたは、彼を友人だと思っている。それはどこに行っても変わらない確かなものだ。",
1487
- "交友対象との同志\nあなたは、交友対象の同志である。同好の士であったり、同じ目的に向かう者だったりするだろう。",
1488
- "交友対象への理解\nあなたは、交友対象を理解したいと思っている。彼はあなたと違う新しい視点を見せてくれる。",
1489
-
1490
- "交友対象への尽力\nあなたは、交友対象に尽くしたいと思っている。それは彼の人柄かもしれないし、あなたの拘りかもしれない。",
1491
- "交友対象との師弟\nあなたは、交友対象との師弟関係を結んでいる。どちらが師でも構わないがいろいろ教えられることがあるだろう。",
1492
- "交友対象との雇用関係\nあなたは、交友対象と雇用関係にある。あなたと彼は仕事を通じて互いの力量を認め合う仲だ。",
1493
- "交友対象の隣人\nあなたは交友対象の近隣に住んでいる。毎日挨拶を交わす程度かもしれないし、一緒に夕食を食べる仲かもしれない。",
1494
- "交友対象との取引\nあなたは交友対象と商売をしている。互いに利のある取引ができる相手だ。",
1495
- "交友対象の家族\nあなたは交友対象と一緒に暮らしている。同じ家に誰かがいると寂しくはないだろう。",
1496
-
1497
- "交友対象への尽力\nあなたは、交友対象に尽くしたいと思っている。それは彼の人柄かもしれないし、あなたの拘りかもしれない。",
1498
- "交友対象との師弟\nあなたは、交友対象との師弟関係を結んでいる。どちらが師でも構わないがいろいろ教えられることがあるだろう。",
1499
- "交友対象との雇用関係\nあなたは、交友対象と雇用関係にある。あなたと彼は仕事を通じて互いの力量を認め合う仲だ。",
1500
- "交友対象の隣人\nあなたは交友対象の近隣に住んでいる。毎日挨拶を交わす程度かもしれないし、一緒に夕食を食べる仲かもしれない。",
1501
- "交友対象との取引\nあなたは交友対象と商売をしている。互いに利のある取引ができる相手だ。",
1502
- "交友対象の家族\nあなたは交友対象と一緒に暮らしている。同じ家に誰かがいると寂しくはないだろう。"
1503
- ]
1504
-
1505
- result, number = get_table_by_d66(table)
1506
-
1507
- text = "#{tableName}([#{number}]) > #{result}"
1508
- return text
1509
- end
322
+ @dice_list = nil
323
+ end
1510
324
 
1511
- # プレフィックスドマジックアイテム表
1512
- def getPrefixedMagickItemDiceCommandResult(command)
1513
- return nil unless command =~ /MGR([1-3])/
1514
-
1515
- rank = Regexp.last_match(1).to_i
1516
-
1517
- table_1 = [
1518
- "接頭語:気合の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+1する。",
1519
- "接頭語:秘術の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】を+1する。",
1520
- "接頭語:一撃の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:〔起動:ダメージロール〕この武器による[白兵攻撃]のダメージロールに+7する。シナリオ1回使用可能。",
1521
- "接頭語:狙撃の 対応タグ:[弓][投擲]\nアイテム効果:〔起動:行動〕この武器による[射撃攻撃]と同時に使用する。攻撃の射程を+2Sqする。シナリオ1回使用可能。",
1522
- "接頭語:必殺の 対応タグ:すべての武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]による[命中判定]のダイスに6の出目が1つ以上あれば、判定をクリティカルにする。シナリオ1回使用可能。",
1523
- "接頭語:火炎の 対応タグ:すべての武器、楽器\nアイテム効果:アイテムに[火炎]タグを追加する。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「冷気の」「電撃の」のように変更すること)",
1524
-
1525
- "接頭語:気合の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+1する。",
1526
- "接頭語:秘術の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】を+1する。",
1527
- "接頭語:一撃の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:〔起動:ダメージロール〕この武器による[白兵攻撃]のダメージロールに+7する。シナリオ1回使用可能。",
1528
- "接頭語:狙撃の 対応タグ:[弓][投擲]\nアイテム効果:〔起動:行動〕この武器による[射撃攻撃]と同時に使用する。攻撃の射程を+2Sqする。シナリオ1回使用可能。",
1529
- "接頭語:必殺の 対応タグ:すべての武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]による[命中判定]のダイスに6の出目が1つ以上あれば、判定をクリティカルにする。シナリオ1回使用可能。",
1530
- "接頭語:火炎の 対応タグ:すべての武器、楽器\nアイテム効果:アイテムに[火炎]タグを追加する。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「冷気の」「電撃の」のように変更すること)",
1531
-
1532
- "接頭語:炎使いの 対応タグ:[杖][魔石][腕部]\nアイテム効果:〔起動:ダメージロール〕あなたが行う[火炎]タグを持つ攻撃のダメージロールに+7する。シナリオ1回使用可能。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷使いの」「雷使いの」のように変更すること)",
1533
- "接頭語:鉄身の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):3]を得る。",
1534
- "接頭語:矢除けの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):3]を得る。",
1535
- "接頭語:火除けの 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):10]を得る。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷除けの」「雷除けの」のように変更すること)",
1536
- "接頭語:根性の 対応タグ:[重鎧][頭部]\nアイテム効果:〔起動:本文〕あなたがBSを受けた直後に使用する。直前に受けたBSから1つ選んで解除する。シナリオ1回使用可能。",
1537
- "接頭語:癒しの 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】を+2する。",
1538
-
1539
- "接頭語:炎使いの 対応タグ:[杖][魔石][腕部]\nアイテム効果:〔起動:ダメージロール〕あなたが行う[火炎]タグを持つ攻撃のダメージロールに+7する。シナリオ1回使用可能。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷使いの」「雷使いの」のように変更すること)",
1540
- "接頭語:鉄身の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):3]を得る。",
1541
- "接頭語:矢除けの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):3]を得る。",
1542
- "接頭語:火除けの 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):10]を得る。(この効果を選んだ時、タグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「氷除けの」「雷除けの」のように変更すること)",
1543
- "接頭語:根性の 対応タグ:[重鎧][頭部]\nアイテム効果:〔起動:本文〕あなたがBSを受けた直後に使用する。直前に受けたBSから1つ選んで解除する。シナリオ1回使用可能。",
1544
- "接頭語:癒しの 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】を+2する。",
1545
-
1546
- "接頭語:スナネズミの 対応タグ:[腕部][外套]\nアイテム効果:〔起動:クリンナップ〕あなたの【ヘイト】をー2する。シナリオ1回使用可能。",
1547
- "接頭語:フクロウの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[暗視]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。",
1548
- "接頭語:ヤマイワナの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[水棲]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。",
1549
- "接頭語:目利きの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたがドロップ品ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。",
1550
- "接頭語:宝探しの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。",
1551
- "接頭語:早変わりの 対応タグ:[鞄]\nアイテム効果:〔起動:インスタント〕あなたは即座に《装備の変更》を行う。シーン1回使用可能。",
1552
-
1553
- "接頭語:スナネズミの 対応タグ:[腕部][外套]\nアイテム効果:〔起動:クリンナップ〕あなたの【ヘイト】をー2する。シナリオ1回使用可能。",
1554
- "接頭語:フクロウの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[暗視]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。",
1555
- "接頭語:ヤマイワナの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:インスタント〕あなたは[水棲]タグを得る。この効果はCSとして扱う。シナリオ1回使用可能。",
1556
- "接頭語:目利きの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたがドロップ品ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。",
1557
- "接頭語:宝探しの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールを行った直後に使用する。そのロールを振り直す。シナリオ1回使用可能。",
1558
- "接頭語:早変わりの 対応タグ:[鞄]\nアイテム効果:〔起動:インスタント〕あなたは即座に《装備の変更》を行う。シーン1回使用可能。"
1559
- ]
1560
-
1561
- table_2 = [
1562
- "接頭語:怒りの 対応タグ:[両手]武器\nアイテム効果:〔起動:ダメージロール〕この武器による[武器攻撃]のダメージロールに+[あなたの【ヘイト】]する。シーン1回使用可能。",
1563
- "接頭語:連撃の 対応タグ:[片手]武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]の[命中判定]を振り直す。シーン1回使用可能。",
1564
- "接頭語:鋭刃の 対応タグ:[剣][刀][槍]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。",
1565
- "接頭語:痛撃の 対応タグ:[槌斧][格闘][鞭][杖]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。",
1566
- "接頭語:魔弾の 対応タグ:[弓][投擲]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。",
1567
- "接頭語:理力の 対応タグ:すべての武器、[魔石][楽器]\nアイテム効果:あなたの[魔法攻撃][特殊攻撃]のダメージロールに+1Dする。この効果は複数累積しない。",
1568
-
1569
- "接頭語:怒りの 対応タグ:[両手]武器\nアイテム効果:〔起動:ダメージロール〕この武器による[武器攻撃]のダメージロールに+[あなたの【ヘイト】]する。シーン1回使用可能。",
1570
- "接頭語:連撃の 対応タグ:[片手]武器\nアイテム効果:〔起動:判定直後〕この武器による[武器攻撃]の[命中判定]を振り直す。シーン1回使用可能。",
1571
- "接頭語:鋭刃の 対応タグ:[剣][刀][槍]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。",
1572
- "接頭語:痛撃の 対応タグ:[槌斧][格闘][鞭][杖]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。",
1573
- "接頭語:魔弾の 対応タグ:[弓][投擲]\nアイテム効果:この武器による[武器攻撃]のダメージロールに+1Dする。",
1574
- "接頭語:理力の 対応タグ:すべての武器、[魔石][楽器]\nアイテム効果:あなたの[魔法攻撃][特殊攻撃]のダメージロールに+1Dする。この効果は複数累積しない。",
1575
-
1576
- "接頭語:鬼殺しの 対応タグ:すべての武器\nアイテム効果:この武器による[人型]への[武器攻撃]のダメージロールに+1Dする。(この効果を選んだ時、種族のタグを[自然][精霊][幻獣][不死][人造][人間]のいずれかに変更してもよい。その場合は接頭語も「精霊殺しの」「幻獣殺しの」のように変更すること)",
1577
- "接頭語:堅守の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【物理防御力】に+4する。",
1578
- "接頭語:抗魔の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【魔法防御力】に+4する。",
1579
- "接頭語:防壁の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に[障壁:10]を得る。",
1580
- "接頭語:忍耐の 対応タグ:[盾][頭部]\nアイテム効果:〔起動:本文〕あなたが強制的な移動を受けた時に使用する。その移動距離をー1Sqする。",
1581
- "接頭語:護法の 対応タグ:[腕部]\nアイテム効果:あなたが与える[障壁]の強度は+5される。",
1582
-
1583
- "接頭語:鬼殺しの 対応タグ:すべての武器\nアイテム効果:この武器による[人型]への[武器攻撃]のダメージロールに+1Dする。(この効果を選んだ時、種族のタグを[自然][精霊][幻獣][不死][人造][人間]のいずれかに変更してもよい。その場合は接頭語も「精霊殺しの」「幻獣殺しの」のように変更すること)",
1584
- "接頭語:堅守の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【物理防御力】に+4する。",
1585
- "接頭語:抗魔の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:この防具の【魔法防御力】に+4する。",
1586
- "接頭語:防壁の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に[障壁:10]を得る。",
1587
- "接頭語:忍耐の 対応タグ:[盾][頭部]\nアイテム効果:〔起動:本文〕あなたが強制的な移動を受けた時に使用する。その移動距離をー1Sqする。",
1588
- "接頭語:護法の 対応タグ:[腕部]\nアイテム効果:あなたが与える[障壁]の強度は+5される。",
1589
-
1590
- "接頭語:脈動の 対応タグ:[腕部]\nアイテム効果:あなたが与える[再生]の強度は+3される。",
1591
- "接頭語:疾走の 対応タグ:[脚部][外套]\nアイテム効果:〔起動:行動〕あなたが《ラン》《ダッシュ》を行う時に使用する。その移動距離に+1Sqする。シーン1回使用可能。",
1592
- "接頭語:瞬速の 対応タグ:[脚部][外套]\nアイテム効果:このアイテムの[行動修正]に+3する。",
1593
- "接頭語:逆境の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが[戦闘不能]になった直後に使用できる。あなたは【因果力】1点を得る。シーン1回使用可能。",
1594
- "接頭語:森渡りの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたはシーン開始時に[軽減([天然]プロップ、ギミックからのダメージ):15]を得る。(この効果を選んだ時、タグを[魔法][機械]のいずれかに変えてもよい。その場合は、接頭語も「魔渡りの」「罠渡りの」のように変更すること)",
1595
- "接頭語:旅人の 対応タグ:[鞄]\nアイテム効果:このアイテムに[所持品スロット]4個を追加する。",
1596
-
1597
- "接頭語:脈動の 対応タグ:[腕部]\nアイテム効果:あなたが与える[再生]の強度は+3される。",
1598
- "接頭語:疾走の 対応タグ:[脚部][外套]\nアイテム効果:〔起動:行動〕あなたが《ラン》《ダッシュ》を行う時に使用する。その移動距離に+1Sqする。シーン1回使用可能。",
1599
- "接頭語:瞬速の 対応タグ:[脚部][外套]\nアイテム効果:このアイテムの[行動修正]に+3する。",
1600
- "接頭語:逆境の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが[戦闘不能]になった直後に使用できる。あなたは【因果力】1点を得る。シーン1回使用可能。",
1601
- "接頭語:森渡りの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたはシーン開始時に[軽減([天然]プロップ、ギミックからのダメージ):15]を得る。(この効果を選んだ時、タグを[魔法][機械]のいずれかに変えてもよい。その場合は、接頭語も「魔渡りの」「罠渡りの」のように変更すること)",
1602
- "接頭語:旅人の 対応タグ:[鞄]\nアイテム効果:このアイテムに[所持品スロット]4個を追加する。"
1603
- ]
1604
-
1605
- table_3 = [
1606
- "接頭語:気迫の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+3する。",
1607
- "接頭語:神秘の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】に+3する。",
1608
- "接頭語:遠当ての 対応タグ:[弓][投擲]\nアイテム効果:この武器の射程に+1Sqする。",
1609
- "接頭語:吸血の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:この武器による[白兵攻撃]でダメージを与えた時、あなたの【HP】は5点回復する。",
1610
- "接頭語:衝撃の 対応タグ:[片手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[放心]を与える。",
1611
- "接頭語:怒号の 対応タグ:[両手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[萎縮]を与える。",
1612
-
1613
- "接頭語:気迫の 対応タグ:すべての武器\nアイテム効果:この武器の【攻撃力】に+3する。",
1614
- "接頭語:神秘の 対応タグ:[杖][魔石]\nアイテム効果:このアイテムの【魔力】に+3する。",
1615
- "接頭語:遠当ての 対応タグ:[弓][投擲]\nアイテム効果:この武器の射程に+1Sqする。",
1616
- "接頭語:吸血の 対応タグ:[白兵攻撃]可能な武器\nアイテム効果:この武器による[白兵攻撃]でダメージを与えた時、あなたの【HP】は5点回復する。",
1617
- "接頭語:衝撃の 対応タグ:[片手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[放心]を与える。",
1618
- "接頭語:怒号の 対応タグ:[両手]武器\nアイテム効果:この武器による《基本武器攻撃》でダメージを与えた時、攻撃の対象に[萎縮]を与える。",
1619
-
1620
- "接頭語:甲羅の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):10]を得る。",
1621
- "接頭語:矢弾きの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):10]を得る。",
1622
- "接頭語:耐火の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):25]を得る。(この効果を選んだ時、軽減するタグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「耐冷の」「耐電の」のように変更すること)",
1623
- "接頭語:城砦の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に【障壁:20】を得る。",
1624
- "接頭語:物見の 対応タグ:[頭部]\nアイテム効果:あなたが行う[偵察]タグを持つ行動、および《異常探知》の判定に+1Dする。",
1625
- "接頭語:快癒の 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】に+5する。",
1626
-
1627
- "接頭語:甲羅の 対応タグ:[盾][重鎧][中鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近距離からの攻撃):10]を得る。",
1628
- "接頭語:矢弾きの 対応タグ:[盾][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(至近以外からの攻撃):10]を得る。",
1629
- "接頭語:耐火の 対応タグ:[重鎧][中鎧][軽鎧]\nアイテム効果:あなたはシーン開始時に[軽減(火炎):25]を得る。(この効果を選んだ時、軽減するタグを[冷気][電撃][邪毒][光輝][精神]のいずれかに変えてもよい。その場合は接頭語も「耐冷の」「耐電の」のように変更すること)",
1630
- "接頭語:城砦の 対応タグ:[盾][頭部]\nアイテム効果:あなたはシーン開始時に【障壁:20】を得る。",
1631
- "接頭語:物見の 対応タグ:[頭部]\nアイテム効果:あなたが行う[偵察]タグを持つ行動、および《異常探知》の判定に+1Dする。",
1632
- "接頭語:快癒の 対応タグ:[腕部]\nアイテム効果:あなたの【回復力】に+5する。",
1633
-
1634
- "接頭語:罠外しの 対応タグ:[腕部]\nアイテム効果:〔起動:判定直前〕あなたが《プロップ解除》を行う時に使用する。その判定はクリティカルとなる。シーン1回使用可能。",
1635
- "接頭語:不動の 対応タグ:[脚部][外套]\nアイテム効果:あなたは[阻止能力]を失わない。",
1636
- "接頭語:影走りの 対応タグ:[脚部][外套]\nアイテム効果:あなたが[隠密状態]の時に《ラン》を行っても、[隠密状態]は解除されない。",
1637
- "接頭語:深海の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたは[暗視][水棲]タグを得る。",
1638
- "接頭語:金運の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールまたはドロップ表ロールを行った直後に使用する。そのロールを振り直す。シーン1回使用可能。",
1639
- "接頭語:罠避けの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:ダメージ適用直前〕あなたに適用される予定のプロップおよび[ギミック]によるダメージを無効にする。シナリオ1回使用可能。",
1640
-
1641
- "接頭語:罠外しの 対応タグ:[腕部]\nアイテム効果:〔起動:判定直前〕あなたが《プロップ解除》を行う時に使用する。その判定はクリティカルとなる。シーン1回使用可能。",
1642
- "接頭語:不動の 対応タグ:[脚部][外套]\nアイテム効果:あなたは[阻止能力]を失わない。",
1643
- "接頭語:影走りの 対応タグ:[脚部][外套]\nアイテム効果:あなたが[隠密状態]の時に《ラン》を行っても、[隠密状態]は解除されない。",
1644
- "接頭語:深海の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:あなたは[暗視][水棲]タグを得る。",
1645
- "接頭語:金運の 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:本文〕あなたが財宝表ロールまたはドロップ表ロールを行った直後に使用する。そのロールを振り直す。シーン1回使用可能。",
1646
- "接頭語:罠避けの 対応タグ:[補助装備][鞄][楽器]\nアイテム効果:〔起動:ダメージ適用直前〕あなたに適用される予定のプロップおよび[ギミック]によるダメージを無効にする。シナリオ1回使用可能。"
1647
- ]
1648
-
1649
- tableName = "プレフィックスドアイテム効果表"
1650
- table = nil
1651
-
1652
- case rank
1653
- when 1
1654
- tableName += "(マジックグレード1)"
1655
- table = table_1
1656
- when 2
1657
- tableName += "(マジックグレード2)"
1658
- table = table_2
1659
- when 3
1660
- tableName += "(マジックグレード3)"
1661
- table = table_3
325
+ # プライズ取得用にダイスの値を固定する
326
+ # @param dice [Integer]
327
+ # @return [void]
328
+ def fix_dice_value(dice)
329
+ @dice_list = [dice]
1662
330
  end
1663
331
 
1664
- result, number = get_table_by_d66(table)
332
+ # @param cr [Integer]
333
+ # @param modifier [Integer]
334
+ # @param randomizer [Randomizer]
335
+ # @return [String, nil]
336
+ def roll(cr, modifier, randomizer)
337
+ return nil if cr == 0 && modifier == 0
338
+
339
+ index =
340
+ if cr == 0 && modifier != 0
341
+ modifier # modifierの値のみ設定されている場合には、その値の項目をダイスロールせずに参照する
342
+ else
343
+ @dice_list ||= randomizer.roll_barabara(2, 6)
344
+ @dice_list.sum() + 5 * cr + modifier
345
+ end
346
+ chosen = pick_item(index)
347
+
348
+ dice_str = "[#{@dice_list&.join(',')}]" if @dice_list
349
+
350
+ "#{@name}(#{index}#{dice_str}) > #{chosen}"
351
+ end
1665
352
 
1666
- text = "#{tableName}([#{number}]) > #{result}"
1667
- return text
353
+ private
354
+
355
+ # @param index [Integer]
356
+ # @return [String]
357
+ def pick_item(index)
358
+ if index <= 6
359
+ translate("LogHorizon.TRS.below_lower_limit", value: 6) # 6以下の出目は未定義です
360
+ elsif index <= 62
361
+ @items[index]
362
+ elsif index <= 72
363
+ "#{@items[index - 10]}&80G"
364
+ elsif index <= 82
365
+ "#{@items[index - 20]}&160G"
366
+ elsif index <= 87
367
+ "#{@items[index - 30]}&260G"
368
+ else
369
+ translate("LogHorizon.TRS.exceed_upper_limit", value: 88) # 88以上の出目は未定義です
370
+ end
371
+ end
1668
372
  end
1669
373
 
1670
- # 攻撃命中箇所ランダム決定表
1671
- def getHitLocationDiceCommandResult(command)
1672
- return nil unless command == "HLOC"
1673
-
1674
- tableName = "攻撃命中箇所"
1675
- table = [
1676
- '額',
1677
- '頬',
1678
- '鼻',
1679
- '顎',
1680
- '後頭部',
1681
- '首',
1682
-
1683
- '耳',
1684
- '目',
1685
- 'こめかみ',
1686
- '腕',
1687
- '肘',
1688
- '手',
1689
-
1690
- '手の指',
1691
- '心臓',
1692
- '胃',
1693
- '肺',
1694
- '肋骨',
1695
- '肩',
1696
-
1697
- '背',
1698
- 'わき腹',
1699
- '腰',
1700
- '下腹',
1701
- '太もも',
1702
- '喉',
1703
-
1704
- 'ふくらはぎ',
1705
- 'アキレス腱',
1706
- 'かかと',
1707
- 'すね',
1708
- '足の小指',
1709
- '膝',
1710
-
1711
- '社会的信用',
1712
- '人間関係',
1713
- '初恋の思い出',
1714
- '完璧なはずの予測',
1715
- '心',
1716
- '眼鏡',
1717
- ]
1718
- result, number = get_table_by_d66(table)
1719
- "#{tableName}(#{number}):#{result}"
374
+ # ヒロイン財宝表
375
+ class HeroineTreasureTable < TreasureTable
376
+ # @param index [Integer]
377
+ # @return [String]
378
+ def pick_item(index)
379
+ if index <= 6
380
+ translate("LogHorizon.TRS.below_lower_limit", value: 6)
381
+ elsif index <= 53
382
+ @items[index]
383
+ else
384
+ translate("LogHorizon.TRS.exceed_upper_limit", value: 54)
385
+ end
386
+ end
1720
387
  end
1721
388
 
1722
- # PC名ランダム決定表
1723
- def getPCNameDiceCommandResult(command)
1724
- return nil unless command == "PCNM"
1725
-
1726
- tableName = "PC名"
1727
- table = [
1728
- 'Kuraudo',
1729
- 'Sefirosu',
1730
- 'Kirito',
1731
- 'Asuna',
1732
- 'Leeroy Jenkins',
1733
- 'Buront',
1734
-
1735
- '水瀬陽夢',
1736
- '三宝寺吾郎',
1737
- '奈流麗夢',
1738
- 'フランチャイズ竜崎',
1739
- '太宰治',
1740
- 'ねざ',
1741
-
1742
- 'クロウ・リー',
1743
- 'ダィテス',
1744
- '達也',
1745
- '深雪',
1746
- 'スレイ',
1747
- 'タカぼんさん',
1748
-
1749
- '黒の錬金術士',
1750
- '†愛天使猫姫†',
1751
- 'デス★ガン',
1752
- '卍漆黒の堕天使卍',
1753
- '光速の異名を持ち重力を自在に操る高貴なる騎士',
1754
- '新世界†英傑殺し',
1755
-
1756
- 'ろぐほら',
1757
- 'ああああ',
1758
- 'そうこ',
1759
- 'ぎんこう',
1760
- 'あずかり',
1761
- 'もょもと',
1762
-
1763
- 'サスケ',
1764
- 'ラファエロ',
1765
- 'ドナテロ',
1766
- 'ミケランジェロ',
1767
- '川内',
1768
- 'フジキド',
1769
- ]
1770
-
1771
- result, number = get_table_by_d66(table)
1772
-
1773
- return "#{tableName}(#{number}):#{result}"
389
+ # 拡張ルール財宝表
390
+ class ExpansionTreasureTable < TreasureTable
391
+ # @param index [Integer]
392
+ # @return [String]
393
+ def pick_item(index)
394
+ if index <= 6
395
+ translate("LogHorizon.TRS.below_lower_limit", value: 6)
396
+ elsif index <= 162
397
+ @items[index]
398
+ elsif index <= 172
399
+ "#{@items[index - 10]}&200G"
400
+ elsif index <= 182
401
+ "#{@items[index - 20]}&400G"
402
+ elsif index <= 187
403
+ "#{@items[index - 30]}&600G"
404
+ else
405
+ translate("LogHorizon.TRS.exceed_upper_limit", value: 188)
406
+ end
407
+ end
1774
408
  end
1775
409
 
1776
410
  # ロデ研の新発明ランダム決定表
1777
411
  def getInventionAttributeTextDiceCommandResult(command)
1778
412
  return nil unless command =~ /IAT([ABMDLT]*)/
1779
413
 
1780
- tableName = "ロデ研の新発明"
414
+ tableName = translate("LogHorizon.IAT.name")
1781
415
 
1782
416
  table_indicate_string = Regexp.last_match(1) && Regexp.last_match(1) != '' ? Regexp.last_match(1) : 'MDLT'
1783
417
  is_single = (table_indicate_string.length == 1)
@@ -1788,165 +422,49 @@ module BCDice
1788
422
  table_indicate_string.split(//).each do |char|
1789
423
  dice_result = @randomizer.roll_once(6)
1790
424
  number << dice_result.to_s
1791
- result << case char
425
+ table = case char
1792
426
  when 'A', 'M'
1793
- [
1794
- '光って回って音が鳴る',
1795
- '何かに目覚める',
1796
- '硬くて強い',
1797
- 'すごく速い',
1798
- '大量生産できる',
1799
- 'よい手触り',
1800
- ].map { |e| (is_single ? '特徴A(メリット):' : '') + e }
427
+ translate("LogHorizon.IAT.A")
1801
428
  when 'B', 'D'
1802
- [
1803
- '中毒性のある',
1804
- '凄まじく重い',
1805
- 'ひどい臭いの',
1806
- '壊れやすい',
1807
- 'マニュアルが超厚い',
1808
- '捨てても戻ってくる',
1809
- ].map { |e| (is_single ? '特徴B(デメリット):' : '') + e }
429
+ translate("LogHorizon.IAT.B")
1810
430
  when 'L'
1811
- [
1812
- '美しい',
1813
- '素朴な',
1814
- '風流な',
1815
- '斬新な',
1816
- '名状しがたき',
1817
- '命を刈り取る形をしている',
1818
- ].map { |e| (is_single ? '見た目:' : '') + e }
431
+ translate("LogHorizon.IAT.L")
1819
432
  when 'T'
1820
- [
1821
- '武器',
1822
- '防具',
1823
- 'アクセサリ',
1824
- '食料',
1825
- '薬品',
1826
- '乗り物',
1827
- ].map { |e| (is_single ? '発明品の種類:' : '') + e }
1828
- end[dice_result - 1]
433
+ translate("LogHorizon.IAT.T")
434
+ end
435
+ chosen = table[:items][dice_result - 1]
436
+ if is_single
437
+ chosen = "#{table[:name]}:#{chosen}"
438
+ end
439
+
440
+ result.push(chosen)
1829
441
  end
1830
442
 
1831
- return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}"
443
+ return "#{tableName}([#{number.join(',')}]) > #{result.join(' ')}"
1832
444
  end
1833
445
 
1834
446
  # アキバの街で遭遇するトラブルランダム決定表
1835
447
  def getTroubleInAkibaStreetDiceCommandResult(command)
1836
448
  return nil unless command == "TIAS"
1837
449
 
1838
- tableName = "アキバの街で遭遇するトラブル"
1839
-
1840
- number = []
1841
- result = []
1842
-
1843
- [
1844
- [
1845
- '〈記録の地平線〉が',
1846
- '〈三日月同盟〉が',
1847
- '〈D.D.D〉が',
1848
- '〈黒剣騎士団〉が',
1849
- '〈西風の旅団〉が',
1850
- '〈ロデリック商会〉が'
1851
- ],
1852
- [
1853
- 'ギルド会館で',
1854
- 'くいだおれ横丁で',
1855
- '街の真ん中で',
1856
- '水楓の館で',
1857
- '公衆浴場で',
1858
- '下水道で'
1859
- ],
1860
- [
1861
- '理不尽な',
1862
- 'ささやかな',
1863
- '甘い',
1864
- '不自然な',
1865
- '危険な',
1866
- '頭の悪い'
1867
- ],
1868
- [
1869
- '喧嘩',
1870
- '恋愛沙汰',
1871
- 'いたずら',
1872
- '陰謀',
1873
- '事故',
1874
- '落し物'
1875
- ]
1876
- ].each do |table|
1877
- dice_result = @randomizer.roll_once(6)
1878
- number << dice_result.to_s
1879
- result << table[dice_result - 1]
1880
- end
1881
-
1882
- return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}"
450
+ roll_random_table("LogHorizon.TIAS")
1883
451
  end
1884
452
 
1885
453
  # 廃棄児ランダム決定表
1886
454
  def getAbandonedChildDiceCommandResult(command)
1887
455
  return nil unless command == "ABDC"
1888
456
 
1889
- tableName = "廃棄児"
457
+ roll_random_table("LogHorizon.ABDC")
458
+ end
1890
459
 
1891
- number = []
1892
- result = []
460
+ def roll_random_table(key)
461
+ table = translate(key)
462
+ tables = table[:tables]
1893
463
 
1894
- [
1895
- [
1896
- '花の名前',
1897
- '星の名前',
1898
- '色の名前',
1899
- '石の名前',
1900
- '動物の名前',
1901
- '番号'
1902
- ].map { |e| '名前:' + e },
1903
- [
1904
- '廃ビル',
1905
- '道端',
1906
- '居候',
1907
- '木の上',
1908
- '公園',
1909
- '下水道'
1910
- ].map { |e| '住居:' + e },
1911
- [
1912
- '探し物',
1913
- '料理',
1914
- '歌',
1915
- '商売',
1916
- '手先が器用',
1917
- 'あざといポーズ'
1918
- ].map { |e| '特技:' + e },
1919
- [
1920
- '痩せている',
1921
- 'ちびっこ',
1922
- '発育良好',
1923
- '背が高い',
1924
- 'ぷにぷに',
1925
- 'ガチムチ'
1926
- ].map { |e| '体型:' + e },
1927
- [
1928
- '果物',
1929
- 'お肉',
1930
- 'お野菜',
1931
- 'お魚',
1932
- 'お菓子',
1933
- '虫'
1934
- ].map { |e| '好きな食べ物:' + e },
1935
- [
1936
- 'ぼく/わたし',
1937
- 'オイラ/アタシ',
1938
- '俺/私',
1939
- '拙者/わらわ',
1940
- '自分の名前',
1941
- 'ミー'
1942
- ].map { |e| '一人称:' + e }
1943
- ].each do |table|
1944
- dice_result = @randomizer.roll_once(6)
1945
- number << dice_result.to_s
1946
- result << table[dice_result - 1]
1947
- end
464
+ dice_list = @randomizer.roll_barabara(tables.size, 6)
465
+ result = dice_list.map.with_index { |n, index| tables[index][n - 1] }
1948
466
 
1949
- return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}"
467
+ return "#{table[:name]}([#{dice_list.join(',')}]) > #{result.join(' ')}"
1950
468
  end
1951
469
 
1952
470
  # 楽器種別表
@@ -1958,1610 +476,63 @@ module BCDice
1958
476
 
1959
477
  return nil if type < 1 || 6 < type
1960
478
 
1961
- tableName = "楽器種別表"
1962
- type_name = ['打楽器1', '鍵盤楽器', '弦楽器1', '弦楽器2', '管楽器1', '管楽器2'][type - 1]
479
+ tableName = translate("LogHorizon.MII.name")
480
+ type_name = translate("LogHorizon.MII.type_list")[type - 1]
1963
481
 
1964
482
  dice = @randomizer.roll_once(6)
1965
- result = [
1966
- ['カスタネット', 'マラカス', 'シンバル', 'トライアングル', '太鼓', 'ドラム'],
1967
- ['木琴', '鉄琴', 'ハーモニウム', 'ハープシコード', 'ピアノ', 'クラヴィコード'],
1968
- ['ハープ', 'リュート', 'ギター', 'バイオリン', 'チェロ', 'リラ'],
1969
- ['琵琶', '和琴', '胡琴', '三味線', 'シタール', 'ダルシマー'],
1970
- ['トランペット', 'ホルン', 'トロンボーン', 'チューバ', 'フルート', 'クラリネット'],
1971
- ['リコーダー', 'オカリナ', 'オーボエ', 'ハーモニカ', 'アコーディオン', '尺八']
1972
- ][type - 1][dice - 1]
1973
-
1974
- return tableName.to_s + (is_roll ? "(#{type})" : '') + ":#{type_name}(#{dice}):#{result}"
483
+ result = translate("LogHorizon.MII.items")[type - 1][dice - 1]
484
+
485
+ return tableName.to_s + (is_roll ? "(#{type})" : '') + " > #{type_name}(#{dice}) > #{result}"
1975
486
  end
1976
487
 
1977
488
  # イースタル探索表
1978
- def getEastalDiceCommandResult(command)
1979
- return nil unless (m = /ESTL(\d*)([\+\-\d]*)(\$(\d+))?/.match(command))
1980
-
1981
- return command if m[1].empty? && m[2].empty? && m[3].nil?
1982
-
1983
- rank = m[1].to_i
1984
- is_choice = (m[1].empty? || !m[3].nil?)
1985
- modifyText = m[2]
1986
- modify = getValue(modifyText, 0)
1987
- is_fix_roll = !m[3].nil?
1988
- dice_value = m[4]
1989
- is_rank_enable = (!is_choice || is_fix_roll)
1990
-
1991
- tableName, table = getEastalExplorationResultTable
1992
-
1993
- number, dice_str, =
1994
- if is_choice
1995
- [dice_value.to_i, dice_value]
489
+ def roll_eastal_exploration_table(command)
490
+ m = /ESTL(\d+)?([+\-\d]+)?(?:\$(\d+))?/.match(command)
491
+ return nil unless m
492
+ return nil if m[1].nil? && m[2].nil? && m[3].nil?
493
+
494
+ character_rank = m[1].to_i
495
+ modifier = ArithmeticEvaluator.eval(m[2])
496
+ fixed_dice_value = m[3]&.to_i
497
+
498
+ dice_list =
499
+ if fixed_dice_value
500
+ [fixed_dice_value]
501
+ elsif character_rank == 0
502
+ []
1996
503
  else
1997
- dice_list = @randomizer.roll_barabara(2, 6)
1998
- [dice_list.sum, dice_list.join(",")]
504
+ @randomizer.roll_barabara(2, 6)
1999
505
  end
2000
506
 
2001
- number += (rank * (is_rank_enable ? 5 : 0)) + modify
507
+ dice_str = "[#{dice_list.join(',')}]" unless dice_list.empty?
508
+ total = (dice_list.sum() + character_rank * 5 + modifier).clamp(7, 162)
2002
509
 
2003
- number = [getAdjustNumberMin(number, table), 162].min
2004
- result = get_table_by_number(number, table)
2005
- result = result.chomp
510
+ table_name = translate("LogHorizon.ESTL.name")
511
+ table = translate("LogHorizon.ESTL.items")
512
+ chosen = table[total].chomp
2006
513
 
2007
- return "#{tableName}(#{number}#{dice_str ? '[' + dice_str + ']' : ''})\n#{result}"
514
+ return "#{table_name}(#{total}#{dice_str})\n#{chosen}"
2008
515
  end
2009
516
 
2010
- def getEastalExplorationResultTable
2011
- tableName = "イースタル探索表"
2012
- table = [
2013
- [7, <<~TEXT
2014
- 香りに誘われて:
2015
-  小さな街道沿いで、商隊が〈走り茸〉にまとわりつかれている。
2016
-  奴らを追い払うと、商隊のリーダーがお礼にと人数分の「干した〈走り松茸〉[換金](40G)」をくれる。
2017
-  追われていた理由はこれだったらしい。
2018
- TEXT
2019
- ],
2020
- [8, <<~TEXT
2021
- 不幸な出会い:
2022
-  街道を歩いていると、横合いの茂みから〈小牙竜鬼〉の一団が飛び出してきた。
2023
-  突然のことでとても驚いたけど、向こうも〈冒険者〉がいるとは思っていなかったらしい。
2024
-  一瞬の気まずい沈黙を経て、なし崩し的に乱戦が始まった。
2025
-  PCは全員[疲労:10]を受ける。
2026
- TEXT
2027
- ],
2028
- [9, <<~TEXT
2029
- 釣果はいかが?:
2030
-  〈大地人〉の村近くの川で釣りが盛んなようだ。
2031
-  挑戦するならば長靴の中に(2D*5)Gを見つけることができる。
2032
-  この釣り場、ハズレなんじゃない?
2033
- TEXT
2034
- ],
2035
- [10, <<~TEXT
2036
- 近道だと思ったんだけど:
2037
-  「この雑木林を抜けた方が早いよ」なんて誰が言い出したのやら。
2038
-  近道に踏み込んだら、見事に道に迷ってしまった。
2039
-  半日を余計に消費してしまう。
2040
-  なんか疲れた……。
2041
-  PCは全員【因果力】1点を失う。
2042
- TEXT
2043
- ],
2044
- [11, <<~TEXT
2045
- おすすめの名産品:
2046
-  キミたちは〈大地人〉の村に出くわした。
2047
-  〈円卓会議〉と契約している農村で、〈冒険者〉にも好意的に接してくれる。
2048
-  素朴だけど手厚いもてなしが心にしみた。
2049
-  村の食堂でなにか食べるのなら10Gを支払い【因果力】に+1する。
2050
- TEXT
2051
- ],
2052
- [12, <<~TEXT
2053
- 思わぬ報酬:
2054
-  畑を開墾していた〈大地人〉農夫が、切り株を掘り起こせずに途方に暮れていた。
2055
-  手助けするならPCは全員[疲労:10]を受ける。
2056
-  みんなで力を合わせて切り株を掘り起こすと、そこにはなんと「鉄の陣笠[コア素材](30G)」が埋まっていた!
2057
-  キミたちは「鉄の陣笠」とお礼にもらった「お好みサンドイッチ(『LHZB1』P218)」2個を受け取る。
2058
- TEXT
2059
- ],
2060
- [13, <<~TEXT
2061
- きりきり舞い:
2062
-  野原の向こう側でつむじ風が舞っている、と思ったらどんどん速度を上げてこっちに向かってきた!
2063
-  これはもう小さな竜巻だ。
2064
-  PCは全員「難易度:9」の[耐久判定]を行なう。
2065
-  失敗したPCは、風に耐えきれずにアイテムを吹き飛ばされる。
2066
-  [消耗品]アイテムを1個失う。
2067
- TEXT
2068
- ],
2069
- [14, <<~TEXT
2070
- 小さな祝福:
2071
-  雑木林の中を進んでいくとキラキラする光が集まってくる。
2072
-  PCのなかに〈森呪遣い〉もしくは〈召喚術師〉がいるのならば小さな植物の妖精たちが手を振っているのがわかる。
2073
-  自分たちに気づいたことに喜んだ妖精たちは〈森呪遣い〉と〈召喚術師〉にささやかな祝福をしてくれた。
2074
-  【因果力】1点を得る。
2075
- TEXT
2076
- ],
2077
- [15, <<~TEXT
2078
- だいなしピクニック:
2079
-  林の中の広場でお弁当を広げて小休止。
2080
-  モンスターの気配もなく、ちょっとしたピクニック気分……と思いきや、にわかに空がかき曇り、雷鳴とどろく大雨が降りだした!
2081
-  キミたちはあわてて木陰に駆けこむ。
2082
-  PCは全員1Dを振ること。
2083
-  3以下のPCは一番高価な[消耗品]アイテム1つを失う。
2084
- TEXT
2085
- ],
2086
- [16, <<~TEXT
2087
- キャラバンクルーズ:
2088
-  林の木陰で休憩している〈第8商店街〉の商隊と出会った。
2089
-  ギルドマスターのカラシン(『LHZB1』P351)みたいだ。
2090
-  PCのうち希望者は気さくな彼とコネクションを取得することができる。
2091
-  関係は「友情」または「雇用関係」となる(PCが選択)。
2092
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
2093
- TEXT
2094
- ],
2095
- [17, <<~TEXT
2096
- 花畑にご用心:
2097
-  花畑を渡る街道で〈暗殺蜜蜂〉の群れに出くわした。
2098
-  追い払いながら縄張りから撤退する。
2099
-  PCは全員[疲労:10]を受けるが、彼らが落とした「黒いローヤルゼリー[換金](70G)」1つを得る。
2100
- TEXT
2101
- ],
2102
- [18, <<~TEXT
2103
- おとりはまかせろ!:
2104
-  キミたちは〈緑小鬼〉に襲われていた〈大地人〉の荷馬車を逃がすため、おとりと護衛に分かれて行動を開始した。
2105
-  おとりをかって出るPCを1人、相談して決めること。
2106
-  そのPCは[疲労:20]を受け【因果力】1点を失うが、他のPCたちと荷馬車は安全に撤退することができる。
2107
- TEXT
2108
- ],
2109
- [19, <<~TEXT
2110
- 住処にお宝?:
2111
-  〈フクロウ熊〉を撃退したキミたちは全員[疲労:10]を受ける。
2112
-  もしかしたら近くに巣があるかもしれない。
2113
-  代表者1名は「難易度:11」の[知覚判定]を行なう。
2114
-  この判定は[偵察]タグがついているように扱う。
2115
-  〔判定成功〕
2116
-   「壊れた武具[換金](90G)」を見つけた。
2117
-  〔判定失敗〕
2118
-   何も得られない。
2119
-  〔サブ職:狩人、辺境巡視〕
2120
-   判定に+2。
2121
- TEXT
2122
- ],
2123
- [20, <<~TEXT
2124
- 触らぬ狼に祟りなし:
2125
-  遠くに狼の群れを発見した。
2126
-  まだこちらには気づいてないようだが、このまま進めば鉢合わせすることになるだろう。
2127
-  避けるのならPCの代表者1名は「難易度:10」の[解析判定]を行なうこと。
2128
-  〔判定成功〕
2129
-   遠回り成功。
2130
-   PCは全員[疲労:10]を受ける。
2131
-  〔判定失敗〕
2132
-   気づかれてしまった!
2133
-   撃退したものの、PCは全員[疲労:25]を受ける。
2134
-  〔サブ職:斥候、遊牧民〕
2135
-   判定に+2。
2136
- TEXT
2137
- ],
2138
- [21, <<~TEXT
2139
- ベリー摘み競争:
2140
-  雑木林でベリーの茂みを見つけたキミたちは、誰が一番多く摘めるか競争を始めた。
2141
-  PCは全員2Dを振ること。
2142
-  一番低い出目のPCは、一番出目が高いPCにコネクションを取得する。
2143
-  関係は「尊敬」か「ライバル」となる(PCが選択)。
2144
-  このコネクションはアフタープレイで消滅するが、ログチケット:アザーゲット1枚を消費すれば維持してもよい。
2145
- TEXT
2146
- ],
2147
- [22, <<~TEXT
2148
- 村の形見:
2149
-  滅びた〈大地人〉の村が眼前に広がる。
2150
-  せめてもの弔いに何かを持ち帰って役立てよう。
2151
-  PCは【因果力】を任意の数だけ消費してもよい。
2152
-  各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。
2153
-  3以上なら「赤熱の小爪[コア素材](50G)」1つを得る。
2154
-  8以上なら加えてさらに「小さな宝石箱[換金](70G)」1つを得る。
2155
-  13以上なら加えてさらに「ミニポーチ(『LHZB1』P217)」1つを得る。
2156
- TEXT
2157
- ],
2158
- [23, <<~TEXT
2159
- ぬかるみの強行軍:
2160
-  折からの雨でひどく街道がぬかるんでいて、〈冒険者〉でも歩くには少々骨が折れる。
2161
-  PCは全員「難易度:10」の[耐久判定]を行なう。
2162
-  〔判定成功〕
2163
-   黙々と足を進め、無事目的地に到着した。
2164
-  〔判定失敗〕
2165
-   疲れに加え少し足首をひねってしまったようだ。
2166
-   [疲労:20]を受ける。
2167
-  〔サブ職:辺境巡視、配達屋〕
2168
-   判定に+2。
2169
- TEXT
2170
- ],
2171
- [24, <<~TEXT
2172
- ハニーハント:
2173
-  雑木林の中で、巨大蜂の巣を見つけた。
2174
-  たっぷりのハチミツを手に入れるチャンスだ!
2175
-  挑戦するならば、PCの代表者1名は「難易度:10」の[操作判定]を行なう。
2176
-  〔判定成功〕
2177
-   PCたちは「黄金色のハチミツ[換金](120G)」を得る。
2178
-   -2(累積する、最大-10)を受ければもう一度チャレンジできる。
2179
-  〔判定失敗〕
2180
-   怒ったハチの群れに追いかけられPC全員は[疲労:10]を受ける。
2181
-  〔サブ職:採取人、農家〕
2182
-   判定に+2。
2183
- TEXT
2184
- ],
2185
- [25, <<~TEXT
2186
- 闇の群雲:
2187
-  キミたちは〈闇精霊〉の「夜渡り」に遭遇する。
2188
-  [暗視]状態、もしくは[魔法]プロップの影響を受けないPCは被害を受けない。
2189
-  それ以外のPCは全員「難易度:10」の[抵抗判定]を行なう。
2190
-  いまが夜なら(GM判断)「難易度:12」になる。
2191
-  〔判定失敗〕
2192
-   【因果力】1点を失う。
2193
-  〔サブ職:刻印呪師、魔法学者〕
2194
-   この判定に+2。
2195
- TEXT
2196
- ],
2197
- [26, <<~TEXT
2198
- 風のいたずら:
2199
-  金色に波打つ麦畑で、一際強い突風が吹いた。
2200
-  PCは全員2Dを振ること。
2201
-  一番低い出目のPCは装備や性別に関係なく、シナリオ終了まで[ぱんちら]タグが与えられる。
2202
-  このタグを持っているPCが何らかの判定でファンブルした時、特別にタグを[ぱんもろ]に変化させることでその判定を振り直してもよい。
2203
- TEXT
2204
- ],
2205
- [27, <<~TEXT
2206
- 古代の獣:
2207
-  荒野を探索中、なかば地面にうずもれた巨大生物の骨格を見つけた。
2208
-  キミたちはなにか素材が取れないか採取を試みる。
2209
-  1Dを振ること(【因果力】1点で振り直してもよい)。
2210
-  5か6が出たPCは「とがった爪[コア素材](60G)」もしくは「巨大な肋骨[換金](80G)」のどちらかを選んで得る。
2211
- TEXT
2212
- ],
2213
- [28, <<~TEXT
2214
- 死者の窪地:
2215
-  丘陵地帯の窪地は不浄な死者がむらがっていた。
2216
-  風に揺れるのはすべて〈蠢く墓標〉だったのだ!
2217
-  おびただしい数の〈動く骸骨〉が迫る中での撤退戦の末、キミたち全員は[疲労:20]を受ける。
2218
- TEXT
2219
- ],
2220
- [29, <<~TEXT
2221
- 足跡は語る:
2222
-  丘陵を行くキミたちはいくつもの足跡を発見した。
2223
-  PCの代表者1名は[知識判定]を行なう。
2224
-  〔判定成功〕
2225
-   足跡から〈醜豚鬼〉の小部隊の存在を看破したキミたちは奇襲を仕掛けることができる。
2226
-   仕掛ければ成功して120Gを入手する。
2227
-  〔判定失敗もしくは奇襲しない〕
2228
-   足跡は意味不明で数が多すぎる。
2229
-   キミたちそっとその場を離れた。
2230
-  〔サブ職:学者、追跡者〕
2231
-   判定に+2。
2232
- TEXT
2233
- ],
2234
- [30, <<~TEXT
2235
- キリングゾーン:
2236
-  キミたちは悪辣な〈小牙竜鬼〉たちが仕掛けたトラップ地帯に入り込んでしまった。
2237
-  罠を解除しつつ抜け出すしかないようだ。
2238
-  PCの代表者1名は「難易度:10」の[解除判定]を行なう。
2239
-  〔判定成功〕
2240
-   最低限の被害で脱出できた。
2241
-   PC全員は[疲労:10]を受ける。
2242
-  〔判定失敗〕
2243
-   いくつかのトラップにはまりPC全員は[疲労:30]を受ける。
2244
-  〔達成値:14〕
2245
-   罠を突破して逆襲してやった!
2246
-   100Gを得る。
2247
-  〔サブ職:機工師、罠師〕
2248
-   判定に+2。
2249
- TEXT
2250
- ],
2251
- [31, <<~TEXT
2252
- 果物天国:
2253
-  通りかかった果樹園で〈大地人〉の農夫に果物の収穫を手伝ってほしいと頼まれた。
2254
-  手伝うのならばPCは全員「難易度:10」の[解除判定]を行なう。
2255
-  それぞれ難易度をいくつ上回ったかを記録し、その合計値が10以上ならば収穫は大成功だ。
2256
-  喜んだ農夫は「かご一杯の果物(シェフの気まぐれピザ相当。『LHZB1』P218)」x2個をキミたちに持たせてくれる。
2257
- TEXT
2258
- ],
2259
- [32, <<~TEXT
2260
- 岩陰からこんにちわ:
2261
-  岩陰から不意打ちを仕掛けてきた〈蜷局竜〉をなんとか撃退。
2262
-  キミたちは戦利品として「風鳴りの鈴[コア素材](80G)」を手に入れたが、少なくない被害を受けた。
2263
-  PC全員は1~6の数字2つを宣言し、代表者1名は1Dを振ること。
2264
-  出目と同じ数字を宣言したPCは[疲労:25]を受ける。
2265
- TEXT
2266
- ],
2267
- [33, <<~TEXT
2268
- 野火から逃げろ!:
2269
-  前方から焦げ臭い風が吹いてきた。
2270
-  野火だ!
2271
-  逃げようにも丘の合間を抜ける風が、炎を複雑に押し広げているようだ。
2272
-  PCの代表者1名は「難易度:10」の[解析判定]を行なう。
2273
-  〔判定成功〕
2274
-   風と地形を読み切り、PCは損害を免れた。
2275
-  〔判定失敗〕
2276
-   何とか炎は免れたものの、思い切り煙を吸い込んでしまった。
2277
-   PCは全員[疲労:45]を受ける。
2278
-  〔サブ職:生還者、星詠み〕
2279
-   判定に+2。
2280
- TEXT
2281
- ],
2282
- [34, <<~TEXT
2283
- 穴があったら探検だ:
2284
-  丘の中腹に小規模なダンジョンを発見した。
2285
-  探索する場合は1日を消費してPC全員は1Dを振る。
2286
-  1人でも6が出た場合、戦利品として「小さな宝箱[換金](60G)」を3個手に入れた。
2287
-  ホクホクだ。
2288
-  そうでない場合、隅々まで探索したが全員が[疲労:20]を受けたのみだった。
2289
-  誰かが探ったあとみたい。
2290
-  〔サブ職:蒐集家、設計士〕
2291
-   2Dを振ってもよい。
2292
- TEXT
2293
- ],
2294
- [35, <<~TEXT
2295
- 一寸先は穴:
2296
-  一面の田園地帯が広がっている。
2297
-  景色に気をとられていたキミたちは、足元にポッカリ開いた堆肥の穴に気づかない!
2298
-  PCは全員1Dを振ること。
2299
-  出目が1~2ならば見事に穴にはまり込んでしまった!
2300
-  しばらく臭いが取れそうにない。
2301
-  被害者はコネクション1つ(被害者が選択)をして、シナリオ終了時まで関係を「くさい……」に変更する。
2302
- TEXT
2303
- ],
2304
- [36, <<~TEXT
2305
- 木漏れ日と水辺:
2306
-  森の中できれいな泉を見つけた。
2307
-  希望者はここで水浴びをすることも可能だ。
2308
-  旅の汚れを落として気分もリフレッシュ、爽快な気分で冒険を続けられそうだ。
2309
-  探索表のイベントで何らかの判定を行なう場合、その判定に+1Dする。
2310
-  この効果はPCたち全員で共有し一度効果を受けるかシーン終了時まで持続する。
2311
- TEXT
2312
- ],
2313
- [37, <<~TEXT
2314
- 黒く光る宝物:
2315
-  果樹園の木の上に巨大な鳥の巣を発見した。
2316
-  巣の主が留守のうちに内部を調べてみると、散乱した羽毛や獣の骨の陰から「幻想の黒真珠[コア素材](100G)」を発見する。
2317
-  いいのかな?
2318
-  持っていくなら入手してもよい。
2319
- TEXT
2320
- ],
2321
- [38, <<~TEXT
2322
- 猪突猛進:
2323
-  起伏の激しい丘陵を進んでいると、前方から〈猛猪〉の群れが激しい地響きを伴って迫ってくる!
2324
-  PC全員は「難易度:11」の[運動判定]を行なう。
2325
-  一人でも失敗すれば全員が判定失敗として扱おう。
2326
-  〔判定成功〕
2327
-   キミたちは一目散に逃げきった。
2328
-  〔判定失敗〕
2329
-   逃げた先には、今度ははぐれ〈巨石兵士〉だ!?
2330
-   延々逃げ回ってPC全員はそれぞれ[疲労:1D*10]を受ける。
2331
-  〔サブ職:軽業師、傭兵〕
2332
-   全員の判定に+1。
2333
- TEXT
2334
- ],
2335
- [39, <<~TEXT
2336
- へんてこ葡萄は蜜の味?:
2337
-  日当たりのよい斜面に野性のブドウがたわわに実っている。
2338
-  採取するPC全員は[知識判定]を行なう。
2339
-  〔判定成功〕
2340
-   「貴腐ブドウ[換金](110G)」を手に入れる。
2341
-  〔クリティカル〕
2342
-   さらに「常眠りの種子[コア素材](100G)」を得る。
2343
-  〔サブ職:農家、採取人〕
2344
-   判定に+1D。
2345
- TEXT
2346
- ],
2347
- [40, <<~TEXT
2348
- ここはどこ?:
2349
-  灌木の生い茂る丘陵地帯、視界は悪いし歩きにくいことこの上ない。
2350
-  どっちに向かっているかすらおぼつかない。
2351
-  [飛行]状態のPCが1人もいない場合、回り道を強いられPC全員は【因果力】1点失うか、1日の時間をロスする。
2352
- TEXT
2353
- ],
2354
- [41, <<~TEXT
2355
- 狩りの邪魔:
2356
-  澄んだ湧水を汲もうとしたキミたちに驚いて、立派な牡鹿が森の中に逃げていった。
2357
-  すると近くの草むらから〈大地人〉の狩人がカンカンに怒って飛び出してきた。
2358
-  どうやら彼の獲物を追い払ってしまったらしい。
2359
-  PCは全員2Dを振ること。
2360
-  一番低い出目のPCはこのNPCとコネクションを取得する。
2361
-  関係は「恐縮」となる。
2362
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
2363
- TEXT
2364
- ],
2365
- [42, <<~TEXT
2366
- 激闘の報酬:
2367
-  キミたちは廃墟に住み着いた〈暗蛇竜〉を退治した。
2368
-  遺跡が崩落するほど激しい戦いだったが、首尾は上々だ。
2369
-  PCは【因果力】を任意の数だけ消費してもよい。
2370
-  各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。
2371
-  ダイスの合計値が3以上ならPCたちは「ねじくれた角[コア素材](120G)」1つを得る。
2372
-  8以上でさらに300Gを得る。
2373
-  13以上でさらに「暗竜牙【魔触媒7】(60G)」5つを得る。
2374
- TEXT
2375
- ],
2376
- [43, <<~TEXT
2377
- 竜巻に追われて:
2378
-  少しずつ風の強くなる中、キミたちが荒廃した高速道路を旅していると、背後から竜巻が追ってきていることに気付く。
2379
-  勝てる相手じゃないから逃げださなければ!
2380
-  PCは全員「難易度:12」の[運動判定]を行なう。
2381
-  PCが[飛行]状態の場合は+2を得る。
2382
-  〔判定成功〕
2383
-   PCは[疲労:20]を受ける。
2384
-   なんとか逃げ切れたようだ。
2385
-  〔判定失敗〕
2386
-   PCは[疲労:50]を受け、【因果力】1点も失う。
2387
-  〔サブ職:軽業師、生還者〕
2388
-   判定に+2。
2389
- TEXT
2390
- ],
2391
- [44, <<~TEXT
2392
- 毒を浄化せよ:
2393
-  キミたちは〈緑小鬼〉の集団が泉に毒を投げ込んでいるのを目撃する。
2394
-  村を滅ぼそうとする陰謀か!?
2395
-  戦うのならば[疲労:20]を受ける。
2396
-  BSを解除できるアイテムか特技があるのならば、泉を清浄化しておこう……。
2397
- TEXT
2398
- ],
2399
- [45, <<~TEXT
2400
- させるか!:
2401
-  道中、襲いかかってきた〈時計仕掛の蠍〉をキミたちは排除したはずだった。
2402
-  とどめを刺したはずの一体が一瞬だけ息を吹き返し橙色の光線を放つ!
2403
-  PCの代表者1名は[疲労:60]を受けなくてはならない。
2404
-  その際に受ける[疲労]の強度を[軽減(光輝)]の強度ぶん減らしてもよい。
2405
- TEXT
2406
- ],
2407
- [46, <<~TEXT
2408
- ない、ない、あれがない!:
2409
-  森を歩いているとふと荷物整理を思い出した。
2410
-  PC全員は2Dを振ること。
2411
-  一番低い出目のPCは忘れ物に気づいた。
2412
-  何を忘れたかはキミが決定してよい。
2413
-  慌てたキミは仲間に相談する。
2414
-  キミが望むなら、仲間にコネクションを得てもよい。
2415
-  関係は「相棒」か「恩人」となる。
2416
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
2417
- TEXT
2418
- ],
2419
- [47, <<~TEXT
2420
- 川底に眠る:
2421
-  キミたちが川辺を歩いていると、川底で何かがキラリと光った。
2422
-  なにかお宝があるかもしれない。
2423
-  PCはここで半日過ごし[疲労:20]を受けるたびに1人1Dを振っても良い。
2424
-  〔1D:1~2〕
2425
-   「水晶の砂[換金](20G)」を入手する。
2426
-  〔1D:3~5〕
2427
-   「水晶の塊[換金](40G)」を入手する。
2428
-  〔1D:6〕
2429
-   「蒼い鉱石[コア素材](140G)」を入手する。
2430
- TEXT
2431
- ],
2432
- [48, <<~TEXT
2433
- 沼より出ずるもの:
2434
-  のどかな沼沢地帯を歩いてたキミたちは、沼からはい出てきた〈破裂の粘体〉に囲まれてしまっていた。
2435
-  この包囲網から逃れるには協力が必要だ。
2436
-  全員1Dを振る(【因果力】1点消費でさらに+1Dしてもよい)。
2437
-  全員のダイスの合計が13以上なら、無事突破できる。
2438
-  12以下の場合PCは全員[疲労:40]を受ける。
2439
- TEXT
2440
- ],
2441
- [49, <<~TEXT
2442
- 山の恵み:
2443
-  豊かな沢の周りで山の幸を見つけよう!
2444
-  PCは全員「難易度:12」の[知識判定]を行なう。
2445
-  〔判定成功〕
2446
-   「大きな川魚(トポト親方のコロッケ相当。『LHZB1』P218)」を得る。
2447
-  〔判定失敗〕
2448
-   「食べられるかもしれない水草[換金](1G)」2個を得る。
2449
-  〔サブ職:料理人、食闘士〕
2450
-   判定に+2。
2451
- TEXT
2452
- ],
2453
- [50, <<~TEXT
2454
- 幻の先に:
2455
-  のどかな沼沢地を進んでいると、突如毒の沼にはまり込んでしまった。
2456
-  〈幻霊〉の幻覚による誘い込みの罠だったらしい!
2457
-  強度10以上の[軽減(邪毒もしくは精神)]を持たないPCは[疲労:50]を受ける。
2458
- TEXT
2459
- ],
2460
- [51, <<~TEXT
2461
- オークと一緒:
2462
-  キミたちが崩れかけた高速道路を歩いていると、向こうから両手に骨付き肉を持った〈醜豚鬼〉の一団が踊りながら迫ってきた!
2463
-  フレッシュミートゥ!
2464
-  PCは全員2Dを振ること。
2465
-  一番低い出目のPCの足元が崩れて〈醜豚鬼〉もろとも転落、そのPCには[尊い犠牲]タグが与えられる。
2466
-  このタグはシナリオ終了まで解除されない。
2467
- TEXT
2468
- ],
2469
- [52, <<~TEXT
2470
- 物言わぬ番人:
2471
-  森を横切る小川のほとりに、苔むした瑠璃色の機械人形が壊れてうずくまっている。
2472
-  この機械人形の名前はなんだろう?
2473
-  「難易度:14」の[知識判定]に成功し、1人でもかすれた文字が読めるなら「七色の透明捻子[コア素材](180G)」1つを得る。
2474
- TEXT
2475
- ],
2476
- [53, <<~TEXT
2477
- 鉄砲水!:
2478
-  谷間で突然の大雨に見舞われる。
2479
-  キミたちは鉄砲水の予兆に気付くだろうか?
2480
-  PCの代表者1名は「難易度:14」の[知覚判定]を行なう。
2481
-  〔判定成功〕
2482
-   予兆を察知して早々に避難したキミたちの足元を濁流が駆け抜けてゆく。
2483
-   危ないところだった。
2484
-  〔判定失敗〕
2485
-   地響きが聞こえてきたときはもう手遅れだった。
2486
-   PCは全員[疲労:50]を受ける。
2487
-  〔サブ職:探検家、生還者〕
2488
-   判定に+2。
2489
- TEXT
2490
- ],
2491
- [54, <<~TEXT
2492
- 廃橋の戦い:
2493
-  高速道路の廃墟を進んでいると、〈鋼尾翼竜〉の群れに襲われた!
2494
-  キミたちは勝利を納め、265Gを得るが、不安定な足場のため[疲労:30]を受ける。
2495
-  [飛行]状態や[天然]もしくは[地形]プロップへの耐性があるPCは疲労は受けない。
2496
- TEXT
2497
- ],
2498
- [55, <<~TEXT
2499
- 転落注意:
2500
-  谷あいの道を歩いていると、突然足元が崩れ始めた!
2501
-  [飛行]状態でない、最も【行動力】が低いPCは崩落に巻き込まれて斜面を滑り落ちてしまう。
2502
-  ダメージは大したことなかったけど、ついてない……。
2503
-  滑落したPCは【因果力】1点を失うこと。
2504
- TEXT
2505
- ],
2506
- [56, <<~TEXT
2507
- 今夜はごちそう?:
2508
-  葦の茂る沼沢地で〈大地人〉の兄妹が罠を仕掛けている。
2509
-  鵞鳥を夕飯にしたいらしい。
2510
-  1日かけて猟を手伝う場合、GMは兄弟にかわって2Dを振ること(サブ職が狩人、罠師のPCがいれば+1Dだ)。
2511
-  8以上ならば、狩りは成功。
2512
-  兄妹の家で料理を食べてPCたちは[疲労]をすべて回復する。
2513
-  7以下ならば腹ペコだ。
2514
-  兄妹の家で「タイミング:レストタイム」の行動が可能。
2515
- TEXT
2516
- ],
2517
- [57, <<~TEXT
2518
- 獅子の魔獣:
2519
-  キミたちは手負いの〈人面獅子〉を廃墟の住処まで追いつめ、ついに討ち取った。
2520
-  この偉業でPCは全員【因果力】1点を得る。
2521
-  またPCの代表者1名は「難易度:15」の[知覚判定]を行なう。
2522
-  判定に成功したなら、〈人面獅子〉の住処から「金色の毛玉[コア素材](220G)」を得る。
2523
-  〔サブ職:狩人、追跡者〕
2524
-   判定に+2。
2525
- TEXT
2526
- ],
2527
- [58, <<~TEXT
2528
- 森の奇襲:
2529
-  キミたちが木漏れ日にきらめくせせらぎで旅の疲れを癒していたところに〈醜豚鬼の遊撃兵〉が奇襲をしかけてきた!
2530
-  とっさに武器を取りなんとか〈醜豚鬼の遊撃兵〉を蹴散らしたが、損害は決して小さくはなかった。
2531
-  PCは全員[疲労:40]を受ける。
2532
- TEXT
2533
- ],
2534
- [59, <<~TEXT
2535
- お肉入手のチャンス:
2536
-  キミたちは水飲み場にやってきた。
2537
-  足跡からすればここには動物が来そうな予感。
2538
-  食料ゲットのチャンスだ!
2539
-  半日のあいだ隠れて狙撃をするのならば狩りが可能だ。
2540
-  [射撃攻撃]可能な武器を持つ代表者1名は「難易度:15」の[命中判定]を行なう。
2541
-  〔判定成功〕
2542
-   PCたちは大きなイノシシを倒した。
2543
-   「魅惑のボタン肉(定番カレー相当。『LHZB1』P218)3個を得る。
2544
-  〔判定失敗〕
2545
-   何も得られない。
2546
-  〔サブ職:狩人、砲撃士〕
2547
-   判定に+2。
2548
- TEXT
2549
- ],
2550
- [60, <<~TEXT
2551
- 迷惑な怪魚:
2552
-  大河を渡っているキミたちの後ろから巨大なモンスターが襲い掛かる。
2553
-  ボートは転覆してしまうし、泳いで逃げるしかない。
2554
-  [水棲]タグを持たないPCは慣れない水中戦闘に巻き込まれて[疲労:60]を受ける。
2555
- TEXT
2556
- ],
2557
- [61, <<~TEXT
2558
- 曙光:
2559
-  山の稜線から差し込む朝日が、草の葉に溜まった朝露に反射する。
2560
-  小鳥たちはさえずり、冷え込んだ夜の空気が追い払われていくのがわかる。
2561
-  今朝のごはん当番は誰だっけ?
2562
-  立候補したPC1名(メニューを発表すること!)には【因果力】1点が与えられる。
2563
-  さあ、今日も一日頑張ろう!
2564
- TEXT
2565
- ],
2566
- [62, <<~TEXT
2567
- 吸血の森:
2568
-  〈吸血ヒル〉の群生地である深い森の中を探索するキミたち。
2569
-  PCは全員「難易度:13」の[耐久判定]を行なう。
2570
-  成功した人数がパーティーの3名以上いれば、ヒルを振り払いながらキミたちは探索をなしとげる。
2571
-  「錆びた聖印[コア素材](240G)」と2D*60Gを得る。
2572
-  そうでなければキミたちは探索もそこそこに退却し、全員[疲労:20]を受ける。
2573
- TEXT
2574
- ],
2575
- [63, <<~TEXT
2576
- 落雷注意:
2577
-  キミたちの頭上で雷雲が不気味に湧き上がり、雷鳴もゴロゴロと鳴り響いている。
2578
-  そして不幸なことに、さえぎる物のない高原において雷はキミたちに狙いを定めたようだ!
2579
-  [高位保護]を持たないPCは[疲労:80]を受ける。
2580
-  〔サブ職:探検家、辺境巡視〕
2581
-   [疲労:80]ではなく[疲労:60]で済む。
2582
- TEXT
2583
- ],
2584
- [64, <<~TEXT
2585
- ギブアンドテイク:
2586
-  街道沿いに残る廃墟でキャンプする〈冒険者〉グループと遭遇した。
2587
-  どうやら彼らには回復職のメンバーが欠けているようだ。
2588
-  〈回復職〉PCが治療を申し出ると、彼らは治療のお礼に「定番カレー(『LHZB1』P218)」1個を分けてくれる。
2589
-  もし特技喪失を受けるならさらに1個入手してよい。
2590
- TEXT
2591
- ],
2592
- [65, <<~TEXT
2593
- 悪魔の一族1:
2594
-  大きな切り株に腰かけて一休み。
2595
-  降り注ぐ木漏れ日が気持ちいい……と思ってたらカバンがない!?
2596
-  少し離れたところでクロマミ族の連中がカバンをひっくり返してる!
2597
-  PCは全員《異常探知》をすること。
2598
-  最も達成値の低いPCは[消耗品]アイテムを2個失う。
2599
-  〔ファンブル〕
2600
-   さらに[圧迫:2]を受ける。
2601
-  〔サブ職:交易商人、配達屋〕
2602
-   判定に+2。
2603
- TEXT
2604
- ],
2605
- [66, <<~TEXT
2606
- 旅は道連れ:
2607
-  キミたちは森の入り口で立ち往生している。
2608
-  ヤーマという行商人の馬車を発見した。
2609
-  護衛がいないため森を通り抜けるのが心配らしい。
2610
-  もし一日の護衛を申し出るならヤーマからは大変感謝され、謝礼として300G渡される。
2611
-  また、PCが望むならばヤーマとのコネクションを取得してもよい。
2612
-  関係は「取引」となる。
2613
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
2614
- TEXT
2615
- ],
2616
- [67, <<~TEXT
2617
- 勝負好きの〈妖精巨人〉:
2618
-  高原の環状列石のそばを通りかかったキミたちに、〈妖精巨人〉が力比べを挑んできた。
2619
-  勝負を受けるなら、PCの代表者が「難易度:14」の[耐久判定]、[知覚判定]、[知識判定]を1回ずつ行なう(それぞれの判定は別のPCが行なってもよい)。
2620
-  2回以上成功すれば勝負に勝ち、「神鉄の組紐[コア素材](300G)」を入手する。
2621
-  3回成功できたならさらにPC全員が【因果力】1点を入手する。
2622
-  3回とも失敗した場合はPC全員が[疲労:35]を受ける。
2623
- TEXT
2624
- ],
2625
- [68, <<~TEXT
2626
- 不気味に響く音:
2627
-  薄暗い森で〈魔狂蝙蝠〉の襲撃を受けた。
2628
-  撃退はしたが強力な超音波攻撃で頭がガンガンする……。
2629
-  PCは全員「難易度:16」の[耐久判定]を行なう。
2630
-  〔判定成功〕
2631
-   【因果力】1点を失う。
2632
-  〔判定失敗〕
2633
-   気分が悪くなってきた。
2634
-   【因果力】2点を失う。
2635
-  〔自身:高位保護〕
2636
-   【因果力】を失わなくてよい。
2637
- TEXT
2638
- ],
2639
- [69, <<~TEXT
2640
- 手負いの獣にご用心:
2641
-  森の小道を往くキミたちに、木々をへし折る重い音と地響きが近づいてくる。
2642
-  なんと、手負いの〈魔熊〉が半狂乱となって飛び込んできた!
2643
-  キミたちはなんとか〈魔熊〉の奇襲を撃退し、「傷ついた毛皮[換金](350G)」を手に入れたが被害も大きい。
2644
-  「戦士職」もしくは「武器攻撃職」のPCは[疲労:45]を得る。
2645
- TEXT
2646
- ],
2647
- [70, <<~TEXT
2648
- 闇の連絡通路:
2649
-  キミたちは遺跡と化したパーキングエリアを繋ぐトンネルを前にしている。
2650
-  ここを通れば随分と近道ができるが、トンネルは闇に閉ざされ中をうかがい知ることができない。
2651
-  キミたちはこのトンネルに向かってもよいし、迂回してもよい。
2652
-  トンネルを通るならば[暗視]を持たないPC全員は特技喪失を受ける。
2653
-  迂回するならばPC全員は[疲労:20]を受けて、もう一度この表を振らなければならない。
2654
- TEXT
2655
- ],
2656
- [71, <<~TEXT
2657
- 星月夜にて:
2658
-  高原を旅するキミたちは満天の星の下で野営を行なう。
2659
-  1Dを振って一番高い出目のPCが野営当番だ。
2660
-  任意のPCひとりを見張りの相棒に指名し、今回の旅について話し合ってみよう(実時間で5分程度)。
2661
-  あなたと相棒はお互いにコネクションを取るか、「関係変化表(『LHZB2』P59)」で1回ロールしてもよい。
2662
- TEXT
2663
- ],
2664
- [72, <<~TEXT
2665
- 最後の御奉公:
2666
-  多数のメイド型ゴーレムが眠るかつてのパーキングエリアを思わせる遺跡で、キミたちはかろうじて機能を保っていた一体を発見した。
2667
-  彼女はキミたちにきしむ腕で「刻印の銀板[コア素材](340G)」を託すと、静かにその活動を停止した。
2668
- TEXT
2669
- ],
2670
- [73, <<~TEXT
2671
- 冷たい霧に抱かれて:
2672
-  灌木の生い茂る斜面を登っていると、急に濃霧がたちこめてきた。
2673
-  霧はキミたちの体温を急速に奪っていく。
2674
-  強度20以上の[軽減(冷気)]を持たないPCは[疲労:40]を受ける。
2675
- TEXT
2676
- ],
2677
- [74, <<~TEXT
2678
- 鹿肉パーティーだ!:
2679
-  早朝の高原で、〈剣角鹿〉の大きな群れを発見した。
2680
-  半日かけて狩りを行なうならば「新鮮な鹿肉[換金]45G」を2D+5個入手できる。
2681
-  〔サブ職:料理人〕
2682
-   入手した「新鮮な鹿肉」を1個消費するごとにPC1人の[疲労]を-20してもよい。
2683
- TEXT
2684
- ],
2685
- [75, <<~TEXT
2686
- 手痛い報復:
2687
-  清々しい風が吹き抜ける林を歩いていると、うっかり〈歩行毒樹〉の根を踏んで反撃を食らってしまった。
2688
-  大したダメージは受けなかったけど、傷口がひどく腫れてとにかく痛い!
2689
-  PCは全員2Dを振ること。
2690
-  一番低い出目のPCは【因果力】1点を失う。
2691
- TEXT
2692
- ],
2693
- [76, <<~TEXT
2694
- かぐわしい?におい:
2695
-  キミたちは森でとある食虫植物の群生地に飛び込んでしまった。
2696
-  大したダメージこそ受けなかったが、虫を引き寄せるべとべとが装備にこびりついて離れない。
2697
-  これは困った!
2698
-  PCは全員2Dを振ること。
2699
-  一番低い出目のPCは[べとべと]タグが与えられる。
2700
-  このタグはシナリオ終了まで解除されない。
2701
- TEXT
2702
- ],
2703
- [77, <<~TEXT
2704
- 誰も知らない花園:
2705
-  険しい斜面を登り切った先には、一面の花畑が広がっていた。
2706
-  その鮮やかさにキミたちは見ほれてしまう。
2707
-  PCは全員1Dを振ること。
2708
-  〔1D:1~4〕
2709
-   「きれいな花[換金](5G)」を好きなだけ摘んでもよい。
2710
-  〔1D:5~6〕
2711
-   「うごめく花弁[コア素材](380G)」を手に入れる。
2712
- TEXT
2713
- ],
2714
- [78, <<~TEXT
2715
- 夜明け前の攻防:
2716
-  夜明け前の薄暗がりから〈怨霊〉の大群が襲いかかってきた。
2717
-  夜明けまで持ちこたえねば!
2718
-  「回復職」と「魔法攻撃職」のPCは激戦のあまり【因果力】2点を失う。
2719
- TEXT
2720
- ],
2721
- [79, <<~TEXT
2722
- 何が出るかな……?:
2723
-  瓦礫に半ばうずもれた遺跡でアルヴのものと思われる機械を発見した。
2724
-  コインを入れるとランダムに品物が出てくるらしい。
2725
-  挑戦したいPCは100Gを消費して、1Dを振ること。
2726
-  なお、この機械は合計4回挑戦したところで完全に壊れてしまう。
2727
-  〔1D:1〕
2728
-   ハズレ!
2729
-   何も出てこないぞ。
2730
-  〔1D:2〕
2731
-   「鉄身の軟膏(初級)(『LHZB1』P219)」を入手。
2732
-  〔1D:3~4〕
2733
-   「回復薬(中級)(『LHZB2』P146)」を入手。
2734
-  〔1D:5〕
2735
-   「幻翼の宝珠(中級)(『LHZB2』P159)」を入手。
2736
-  〔1D:6〕
2737
-   「保護の巻物(中級)(『LHZB2』P156)」を入手。
2738
- TEXT
2739
- ],
2740
- [80, <<~TEXT
2741
- 茨の森:
2742
-  キミたちは毒の棘を持つ灌木が生い茂る森に迷い込んだ。
2743
-  茎や葉の棘が露出した肌を容赦なく引っ掻いていく。
2744
-  [中鎧]を装備したPCは[疲労:30]を受ける。
2745
-  [軽鎧]もしくは鎧を装備していないPCは[疲労:30]と特技喪失を受ける。
2746
- TEXT
2747
- ],
2748
- [81, <<~TEXT
2749
- 朝まで歌合戦:
2750
-  浜辺を行くキミたちの耳にきれいな歌声が聞こえてきた。
2751
-  歌声の主を探すと、なんと岩場で〈人魚〉と〈翼持つ歌姫〉が歌の勝負をしている!?
2752
-  ギャラリーに気づいた彼女たちはさらに熱心に歌い始めた。
2753
-  キミたちはそそくさと立ち去ってもいいし、彼女らが満足するまで歌を聴いていてもいい。
2754
-  そうした場合(一応美少女?の)祝福で【因果力】1点を得るが、[疲労:20]も受けてしまう。
2755
- TEXT
2756
- ],
2757
- [82, <<~TEXT
2758
- ロードランナー:
2759
-  狭い山道の向こうから、すごい勢いで〈時計仕掛の駝鳥〉が駆けてくる!
2760
-  PC代表者は「難易度:17」を目標に[回避判定]をしてもよい(そのまま受け止めてもよい)。
2761
-  失敗した(受け止めた)場合3D*20点の物理ダメージを受けてしまうが、キミが[戦闘不能]にならなければ〈時計仕掛の駝鳥〉も砕けて「真鋼のワイヤー[コア素材](440G)」を得る。
2762
-  回避に成功するか[戦闘不能]になった場合、〈時計仕掛の駝鳥〉は走り去る。
2763
- TEXT
2764
- ],
2765
- [83, <<~TEXT
2766
- 森を舐める猛火:
2767
-  山道を歩いていると、風に乗って焦げ臭いにおいが漂ってきた。
2768
-  風上を見れば真っ赤な炎の舌が斜面を駆け上ってくるではないか!
2769
-  [高位保護]を持たないPCは炎と煙に巻かれ[疲労:80]を受ける。
2770
- TEXT
2771
- ],
2772
- [84, <<~TEXT
2773
- 岩石林に咲くバラ:
2774
-  キミたちは石の花が咲くという、石化ガスのたなびく石柱の林を訪れた。
2775
-  探検するなら[高位保護]を持つPCにかぎり【因果力】を任意の数だけ消費してもよい。
2776
-  各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。
2777
-  ダイスの合計値が3以上ならPCたちは「雲母のバラ[換金](480G)」1つを得る。
2778
-  8以上でさらに「雲母のバラ[換金](480G)」3つを得る。
2779
-  13以上でさらに「紅玉のバラ[換金](2000G)」1つを得る。
2780
- TEXT
2781
- ],
2782
- [85, <<~TEXT
2783
- 迫りくる海蛇竜:
2784
-  浜辺で漁師たちが逃げまどっている。
2785
-  〈海蛇竜〉が波打ち際で噛みつこうとしているのだ。
2786
-  救助するならヘイトを集めてかばうしかない。
2787
-  「戦士職」のPCは【因果力】2点を失う。
2788
- TEXT
2789
- ],
2790
- [86, <<~TEXT
2791
- 浜辺で小休止:
2792
-  周囲の砂浜には椰子の木がたくさん生えている。
2793
-  木陰に入って椰子の実ジュースを飲んでいると、なんだかちょっぴりリゾート気分だ。
2794
-  十分に休憩したら、冒険を再開しよう!
2795
-  この探索表の出来事で次に何らかの判定をする場合ロールに+1D。
2796
-  この効果はひとりでも全員でも次の判定のみ、一度効果を受けるかシーン終了時まで持続する。
2797
- TEXT
2798
- ],
2799
- [87, <<~TEXT
2800
- わんぱくイルカと〈冒険者〉:
2801
-  目の前に広がる海で、何匹ものイルカが水面を蹴立てて遊んでいる。
2802
-  キミたちに気づくと岸辺まで近づいてきた。
2803
-  人懐っこい彼らはどうやらキミたちに遊んでほしいらしい。
2804
-  もしも一緒に遊んでやるならPC全員は[疲労:40]を受けるが、遊んでくれたお礼にイルカたちが背中に乗せて送って行ってくれる。
2805
-  次の探索表ロールを1回振りなおしてもよい。
2806
-  〔自身:水棲〕
2807
-   受ける[疲労]の強度は20になる。
2808
- TEXT
2809
- ],
2810
- [88, <<~TEXT
2811
- 夢のリゾート計画:
2812
-  海岸線を見渡せる崖の上に、打ち捨てられた白いコテージを発見した。
2813
-  風雨にさらされ傷んでいるが、修理すればまだまだ使えそうだ。
2814
-  機会があったらキミたちの別荘にしてみるのもよいかもしれない。
2815
-  キミたちはこの建物の場所を忘れないよう、しっかりと地図に書き込んだ。
2816
- TEXT
2817
- ],
2818
- [89, <<~TEXT
2819
- 助けをよぶ声:
2820
-  深い森の中を歩いていると、どこからともなく助けを呼ぶささやき声が聞こえてきた。
2821
-  PC全員は[知覚判定]を行なうこと。
2822
-  最も達成値の高いPCは、石の下から芽吹いたばかりの小さな双葉と、生まれたばかりの〈樹の精霊〉を発見する。
2823
-  キミが石をどけてやると精霊は大いに感謝し、キミの[疲労]の強度を-60してくれる。
2824
-  〔クリティカル〕
2825
-   精霊はさらに「芽吹きの甘露(苺のふんわりカップケーキ(『LHZB2』P145)相当)」をプレゼントしてくれた。
2826
-  〔サブ職:農家、薔薇園の姫君〕
2827
-   判定を2回振って好きなほうを選べる。
2828
- TEXT
2829
- ],
2830
- [90, <<~TEXT
2831
- 草むらかき分けて:
2832
-  キミたちが進む深い森の中は、背丈ほどもありそうな下生えが生い茂っている。
2833
-  徒歩では視界も通らず、草を刈り、道を切り開きながらじりじりと進むしかない……。
2834
-  PCは全員[疲労:60]を受ける。
2835
-  〔自身:騎乗、飛行〕
2836
-   [疲労]を受けなくてもよい。
2837
- TEXT
2838
- ],
2839
- [91, <<~TEXT
2840
- もうかりまっか?:
2841
-  海沿いの道で〈大地人〉の行商人と出会った。
2842
-  せっかくだから何か買って、顔を繋いでおくのもいいかもしれない。
2843
-  PCのうち希望者はログチケット:アザーゲット1枚を消費してこの行商人とコネクションを取得してもよい。
2844
-  関係は「ビジネス」か「敬意」となる(PCが選択)。
2845
-  またコネクションとは無関係に一般的なアイテムを売買できる。
2846
- TEXT
2847
- ],
2848
- [92, <<~TEXT
2849
- 世捨て人の工房:
2850
-  寂れた高原を旅するキミたちは古い庵を発見する。
2851
-  中は無人だったが、なんと小さな魔法工房がしつらえられていた!
2852
-  【因果力】を1点消費したPCは自身が取得している《ファーマシスト》、《スクライブスクロール》、《インビュー》のうち1つを即座に実行してもよい。
2853
- TEXT
2854
- ],
2855
- [93, <<~TEXT
2856
- 電光石火!?:
2857
-  山の天気は不安定だ。
2858
-  先ほどまでの晴天が嘘のように激しい雷雨が吹き荒れている。
2859
-  うわっ、すぐ近くに落ちた!?
2860
-  PCは全員「難易度:15」の[回避判定]を行なう。
2861
-  強度20以上の[軽減(電撃)]を持つPCはこの判定に自動成功してよい。
2862
-  〔判定成功〕
2863
-   回避成功!
2864
-   危うく直撃するところだった。
2865
-  〔判定失敗〕
2866
-   避ける間もなく雷に打たれてしまい[疲労:100]を受ける。
2867
- TEXT
2868
- ],
2869
- [94, <<~TEXT
2870
- 砂の中の金貨:
2871
-  キミたちは苦戦の末、砂浜で遭遇した〈巨大蟻地獄〉を退治した。
2872
-  早速巣穴の中を探索だ!
2873
-  PCの代表者1名は「難易度:18」の[知覚判定]を行なう。
2874
-  この判定は[偵察]タグがついているかのように扱う。
2875
-  〔判定成功〕
2876
-   キミたちは2D*120Gを手に入れた。
2877
-   代表者のサブ職が〈採掘師〉か〈賭博師〉ならば、2Dの出目に+1すること。
2878
-  〔判定失敗〕
2879
-   何も得られない。
2880
- TEXT
2881
- ],
2882
- [95, <<~TEXT
2883
- ローリングストーン:
2884
-  針葉樹に覆われた高山の道を歩くキミたちの耳に「カラカラ」と不吉な音がする。
2885
-  視線を上げれば落石に気が付く!
2886
-  全員1Dを振ること(【因果力】1点で+1Dしてもよい)。
2887
-  〔1D:1~3〕
2888
-   大きな石がキミに直撃!
2889
-   死ぬほど痛い上に【因果力】2点を失う。
2890
-  〔1D:4~〕
2891
-   危うく難を逃れた。
2892
- TEXT
2893
- ],
2894
- [96, <<~TEXT
2895
- イースタルの夕日:
2896
-  真っ赤な夕日が金色に輝く波間に溶けていく。
2897
-  潮騒だけが響く中、この世界でも変わらぬ姿を見せる夕日の中でキミたちは話し合う。
2898
-  PCは全員2Dを振ること。
2899
-  一番低い出目のPCは、一番高い出目のPCにコネクションを取得する。
2900
-  関係は「親愛」か「友情」となる(PCが選択)。
2901
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
2902
- TEXT
2903
- ],
2904
- [97, <<~TEXT
2905
- 大きな樹の迷宮:
2906
-  大森林の中央にそびえる巨大樹の根元に薄暗い穴を発見。
2907
-  探るのならば、代表者1名が「難易度:16」の[知覚判定]を行なう。
2908
-  〔判定成功〕
2909
-   複雑に絡み合った通路の奥で「賢者の石[コア素材](620G)」と2D*100Gを得る。
2910
-  〔判定失敗〕
2911
-   迷ってしまった!
2912
-   1日経過してしまう上に[疲労:50]を受ける。
2913
-  〔サブ職:探検家、採掘師〕
2914
-   判定に+2。
2915
- TEXT
2916
- ],
2917
- [98, <<~TEXT
2918
- 前門の鬼、後門の竜:
2919
-  深い山懐に抱かれた廃神殿には〈陽炎悪鬼〉の大群が住み着いていた。
2920
-  多勢に無勢、キミたちは速やかに撤退を開始する。
2921
-  PCの代表者1名は「難易度:18」の[運動判定]を行なう。
2922
-  この判定は[偵察]タグがついているかのように扱う。
2923
-  〔判定成功〕
2924
-   追跡を振り切る。
2925
-   損害はない。
2926
-  〔判定失敗〕
2927
-   〈陽炎悪鬼〉を振り切ったと思ったら、前から〈翡翠竜〉が!
2928
-   PCは全員[疲労:60]を受け【因果力】1点を失う。
2929
-  〔サブ職:生還者、追跡者〕
2930
-   判定に+2。
2931
- TEXT
2932
- ],
2933
- [99, <<~TEXT
2934
- 古代の工房:
2935
-  山奥で古代の工房を発見した。
2936
-  【因果力】1点を消費したPCは、自身が取得している《クロースメイク》、《ウッドクラフト》、《アーマーフォージ》、《ファーマシスト》を即座に1回実行してもよい。
2937
-  アルヴの工房は性能抜群だ。
2938
- TEXT
2939
- ],
2940
- [100, <<~TEXT
2941
- 揺れるつり橋:
2942
-  目の前には霧深い谷と、朽ちて落ちかけのつり橋が揺れている。
2943
-  どうにか向こう岸に渡らねばならない。
2944
-  PCは全員「難易度:18」の[運動判定]を行なう。
2945
-  〔判定成功〕
2946
-   無事につり橋を渡りきることができた。
2947
-  〔判定失敗〕
2948
-   足を滑らせてしまった!
2949
-   落下こそ免れたが、渡りきるのにひどく苦労してしまった。
2950
-   [疲労:100]を受ける。
2951
-  〔自身:飛行〕
2952
-   判定は自動成功。
2953
-  〔サブ職:軽業師、船乗り〕
2954
-   判定に+2。
2955
- TEXT
2956
- ],
2957
- [101, <<~TEXT
2958
- 真っ白なキミ:
2959
-  キミたちは深い雪山を進む。
2960
-  周囲の木々に降り積もった雪が、風にあおられ頭上から降り注いできた!
2961
-  PCは全員2Dを振ること。
2962
-  一番低い出目のPCは不運にも頭から雪まみれになってしまい、[雪だるマン]タグが与えられる。
2963
-  このタグはシナリオ終了まで解除されない。
2964
- TEXT
2965
- ],
2966
- [102, <<~TEXT
2967
- 打ち捨てられた砦:
2968
-  風化した砦の廃墟をキミたちは発見した。
2969
-  内部を探索したい場合1日を必要とする。
2970
-  探索した場合不思議な魔方陣を発見し、PC全員の[疲労]の強度が-50される。
2971
-  また、「夜明け色の軟玉[コア素材](680G)」を得る。
2972
- TEXT
2973
- ],
2974
- [103, <<~TEXT
2975
- 白き魔物:
2976
-  天候が急変し、ブリザードのような雪と風が吹き荒れる。
2977
-  身体は凍りつきそうに冷え、視界は真っ白で何も見えない。
2978
-  このままでは身動きが取れなくなってしまう。
2979
-  強度20以上の[軽減(冷気)]と[暗視]の両方を持たないPCは[疲労:100]を受ける。
2980
- TEXT
2981
- ],
2982
- [104, <<~TEXT
2983
- 強襲の雪獣:
2984
-  〈雪トロール〉の群れが襲撃してきた!
2985
-  PCの代表者1名は「難易度:18」の[知識判定]を行なう。
2986
-  〔判定成功〕
2987
-   キミの指示で敵の弱点を突き、危なげなく勝利を収めた!
2988
-   【因果力】3点を得る。
2989
-  〔判定失敗〕
2990
-   敵の情報がつかめず、苦戦を強いられた。
2991
-   PCは全員[疲労:60]を受ける。
2992
-  〔サブ職:学者、軍師〕
2993
-   判定に+2。
2994
- TEXT
2995
- ],
2996
- [105, <<~TEXT
2997
- 久しぶりのお客様:
2998
-  野営場所を探すキミたちは、廃屋の前で〈家事妖精〉がぽつりと佇んでいるのを見つけた。
2999
-  キミたちがここで一夜を過ごすことにするなら、彼女は久しぶりに訪れたお客様を精一杯もてなしてくれる。
3000
-  この時キミたちは[食料]アイテムを提供してもよい。
3001
-  翌朝には彼女の姿は消えているが、[食料]アイテムを提供したPCの手にはいつの間にかキラキラ光る小石が握られている。
3002
-  【因果力】1点を得ること。
3003
- TEXT
3004
- ],
3005
- [106, <<~TEXT
3006
- 〈大地人〉の特訓:
3007
-  夜になって一夜の宿と思い立ち寄った〈大地人〉の小さな砦でキミたちは手厚い歓待を受けた。
3008
-  キミたちは、出発を1日遅らせて兵士たちの訓練を手伝ってもよい。
3009
-  訓練を買って出るPCは、特技喪失する代わりに【因果力】3点を得る。
3010
-  とても厳しい訓練を立派にやり遂げた兵士たちの歓声を背に、キミたちは再び旅路につく。
3011
- TEXT
3012
- ],
3013
- [107, <<~TEXT
3014
- 鳥妖の巣窟:
3015
-  廃ビルに巣くう〈女面妖鳥〉がキミたちに対して集中攻撃を仕掛けてきたが、果敢に戦い見事に撃破。
3016
-  戦利品として「人面鳥の羽根[コア素材](740G)」を手に入れた。
3017
-  PC全員は1~6の好きな数字を申告すること。
3018
-  代表者1名が1Dを振って、申告と同じ数字が出たPCは、戦闘のダメージで[疲労:80]を得る。
3019
-  それ以外のPCは【因果力】1点を得る。
3020
- TEXT
3021
- ],
3022
- [108, <<~TEXT
3023
- 野営地の攻防:
3024
-  野営地に押し寄せたアンデッド〈反魂悪党〉が思いのほか手ごわかった。
3025
-  奴らは闇に紛れて不意打ちを仕掛けてきたのだ。
3026
-  PCは全員1Dを振ること。
3027
-  〔1D:1~4〕
3028
-   PCは[疲労:100]を受ける。
3029
-  〔1D:5以上〕
3030
-   PCは[疲労:35]を受ける。
3031
-  〔自身:暗視〕
3032
-   出目に+2。
3033
- TEXT
3034
- ],
3035
- [109, <<~TEXT
3036
- 今夜は天ぷらだ:
3037
-  幅5mほどの名も知れぬ川をみつけた。
3038
-  通り過ぎてもいいのだが、釣りをしてもよい。
3039
-  釣りをする場合半日の時間を失うが「若葉アユ[換金](100G)」を1D匹釣り上げる。
3040
- TEXT
3041
- ],
3042
- [110, <<~TEXT
3043
- 吹雪の行軍:
3044
-  山の天気は変わりやすい。
3045
-  さっきまで青空が見えていたのに、今や地吹雪で足元すら見えないありさまだ。
3046
-  [高位保護]を持たないPCは[疲労:100]を受ける。
3047
- TEXT
3048
- ],
3049
- [111, <<~TEXT
3050
- ムーンライトフィーバー:
3051
-  キミたちは道中で打ち棄てられた廃城で一晩を明かす。
3052
-  ふと気が付くと月明りの下で輪になって妖精たちが踊っているようだ。
3053
-  つられて踊りの輪に加わる場合、参加者は「難易度:16」の[運動判定]もしくは[操作判定]を行なう。
3054
-  参加者に〈吟遊詩人〉がいるならば全員の判定に+2。
3055
-  〔判定成功〕
3056
-   妖精たちはキミに大喝采と「回復薬(上級)(『LHZB2』P146)」1つを贈る。
3057
-  〔判定失敗〕
3058
-   妖精たちは納得がいかない様子だ。
3059
-   キミは夜が明けるまで踊り、演奏を続けさせられた。
3060
-   [疲労:50]を受ける。
3061
- TEXT
3062
- ],
3063
- [112, <<~TEXT
3064
- 幽霊屋敷へようこそ!:
3065
-  一夜の屋根にと求めた山中の古い屋敷はホラームード。
3066
-  全員2Dを振る。
3067
-  一番出目が小さかった人は夜中にトイレに行きたくなり、仕方なく暗闇の中へ……。
3068
-  残ったPCの中で希望者は、トイレに行ったPCを驚かしてもよい。
3069
-  その場合トイレに行ったPCから関係「仇敵」のコネクションを得る。
3070
-  驚かさずに付き添うのならば「関係変化表(『LHZB2』P59)」で1回ロールしてもよい。
3071
- TEXT
3072
- ],
3073
- [113, <<~TEXT
3074
- 突然の雪崩!:
3075
-  キミたちが穏やかな天候の下、雪深い山道を進んでいたその時、地鳴りと共に突然の大雪崩が襲いかかってきた!
3076
-  PCの代表者1名は雪崩の方向を見極めるため「難易度:16」の[解析判定]を行なう。
3077
-  〔判定成功〕
3078
-   [飛行]状態のPCは無事に逃げおおせたが、それ以外のPCは[疲労:30]を受ける。
3079
-  〔判定失敗〕
3080
-   PC全員は[疲労:70]を受け特技喪失する。
3081
-  〔サブ職:生還者、辺境巡視〕
3082
-   判定に+2。
3083
- TEXT
3084
- ],
3085
- [114, <<~TEXT
3086
- ノーストリリアの遺産:
3087
-  街道沿いに遺跡らしい地下への入り口を発見する。
3088
-  内部を探索する場合は半日を消費する。
3089
-  探索した場合、通路の奥にはアルヴとの戦争当時のものらしき回復の魔方陣が残っていた。
3090
-  〈猫人族〉、〈狼牙族〉、〈狐尾族〉、〈法儀族〉のPCは、魔方陣の効果で[軽減(光輝、邪毒、精神):30]を得る。
3091
-  この軽減はOSとして扱いシナリオ終了時まで持続する。
3092
- TEXT
3093
- ],
3094
- [115, <<~TEXT
3095
- 雪原の罠:
3096
-  雪原を進むキミたちの足元が突如崩れ始める。
3097
-  クレバスだ!?
3098
-  最も【行動力】が低いPCが不運にも逃げ遅れ、クレバスの底に飲み込まれかける。
3099
-  クレバスに落ちて[消耗品]タグを持つアイテムすべてを失うか、踏みとどまり【因果力】2点を失うか選ぶこと。
3100
- TEXT
3101
- ],
3102
- [116, <<~TEXT
3103
- 珍味、食べる?:
3104
-  キミたちは旅の途中で立ち寄った城砦で、任期を終えた兵士たちの宴にでくわした。
3105
-  そこでひときわ異彩を放っていたのが……魚の塩漬けだ!
3106
-  とにかく臭い!
3107
-  だが彼らはとても美味しそうに平らげている。
3108
-  勇気を出して口にしたPCは、[疲労]の強度が-100される代わりに、セッション終了時まで[超臭い]タグを得る。
3109
- TEXT
3110
- ],
3111
- [117, <<~TEXT
3112
- かつての星の里:
3113
-  街道から少し離れた山腹に、キミたちは天文台の廃墟を発見した。
3114
-  建物はかなり傷んではいるが、きちんと手を入れてやれば十分住むことはできそうだ。
3115
-  ひょっとしたら、再び星を見ることができるかも知れない!
3116
-  しかし残念ながら、今ここでできることは一夜の雨露をしのぐことぐらいだろう。
3117
- TEXT
3118
- ],
3119
- [118, <<~TEXT
3120
- 追いすがる吹雪:
3121
-  深い山中で〈氷雪巨人〉に遭遇してしまい、一時間近くも追い回されることになった。
3122
-  吹雪のブレスがキミたちを何度も襲う。
3123
-  強度30以上の[軽減(冷気)]を持たないPCは[疲労:80]と特技喪失を受ける。
3124
- TEXT
3125
- ],
3126
- [119, <<~TEXT
3127
- 鎧袖一触!:
3128
-  山道で〈大地人〉の隊商を襲う〈灰斑犬鬼〉の群れを発見した。
3129
-  数こそ多かったが歴戦の〈冒険者〉であるキミたちの敵ではない!
3130
-  残らず退治してやると、隊商の商人たちはたいそう喜んでいた。
3131
-  900Gの謝礼をもらった。
3132
- TEXT
3133
- ],
3134
- [120, <<~TEXT
3135
- 止まったら死ぬ!?:
3136
-  周囲が突然の地響きに包まれ、斜面の上に積もった雪が崩落を起こした。
3137
-  雪崩だ!
3138
-  難を逃れるため、PCは全員「難易度:17」の[運動判定]を行なう。
3139
-  〔判定失敗〕
3140
-   逃げ遅れたキミはあっという間に雪の奔流に飲み込まれてしまった。
3141
-   抜け出すために[疲労:120]を受ける。
3142
-  〔自身:騎乗〕
3143
-   判定に+1Dする。
3144
-  〔サブ職:探検家、辺境巡視〕
3145
-   判定に+2。
3146
- TEXT
3147
- ],
3148
- [121, <<~TEXT
3149
- 〈冒険者〉の川流れ:
3150
-  キミたちは目の前に広がる氷混じりの大河を渡る。
3151
-  PCは全員2Dを振ること。
3152
-  一番低い出目のPCは渡河の最中に足を滑らせ流されてしまうが、間一髪で他のPC(流されたPCが指定してよい)に救われる。
3153
-  流されたPCは助けてくれた相手に対するコネクションを取得すること。
3154
-  関係は「恩」か「友情」(助けたほうが選んでよい)となる。
3155
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
3156
- TEXT
3157
- ],
3158
- [122, <<~TEXT
3159
- サルベージ:
3160
-  川底に何か光るものが見えた気がする。
3161
-  PCの代表者1名は「難易度:17」の[知覚判定]を行なう。
3162
-  〔判定成功〕
3163
-   川底の砂に半ば埋もれた小さな宝石箱を発見!
3164
-   「ブリザードダイヤ[コア素材](980G)」と「色とりどりの宝石[換金](300G)」x5を得る。
3165
-  〔判定失敗〕
3166
-   何も見つけられなかった。
3167
-  〔サブ職:海賊、漁師〕
3168
-   判定に+2。
3169
- TEXT
3170
- ],
3171
- [123, <<~TEXT
3172
- ガスが濃くなってきたな:
3173
-  渓谷を進んでいると周囲に毒々しい煙が立ち込めてきた。
3174
-  これは……火山性の毒ガスだ!?
3175
-  強度30以上の[軽減(邪毒)]を持たないPCは[疲労:100]を受ける。
3176
-  〔サブ職:薬師、毒使い〕
3177
-   素早くガスの正体を見抜き、被害を受けなかった。
3178
- TEXT
3179
- ],
3180
- [124, <<~TEXT
3181
- 樹海の白狐:
3182
-  樹海の奥深くを歩いていると突然狐に似た精霊が現れた。
3183
-  面白い話をするか、[食料]アイテムを与えると、代わりに「エメラルドの首飾り[換金](500G)」1D個をプレゼントされる。
3184
-  〔サブ職:ちんどん屋、料理人〕
3185
-   さらに「金のあぶらげ[換金](1000G)」をプレゼントされる。
3186
- TEXT
3187
- ],
3188
- [125, <<~TEXT
3189
- 吊るされた〈冒険者〉:
3190
-  薄暗い密林でキミたちは足元に違和感を覚える。
3191
-  しかし時すでに遅く、うごめくツタによって逆さ吊りにされ、所持品をあたりにぶちまけてしまった!
3192
-  PC全員は[運動判定]を行なうこと。
3193
-  この時[暗視]状態でないPCは、この判定に-1Dされる。
3194
-  最も達成値の低いPCは[消耗品]アイテムを2個失い、[圧迫:1]を受ける。
3195
-  〔ファンブル〕
3196
-   さらに[圧迫:1]を受ける。
3197
-  〔サブ職:斥候、罠師〕
3198
-   この判定に+1D。
3199
- TEXT
3200
- ],
3201
- [126, <<~TEXT
3202
- 儀式の生贄:
3203
-  樹海を進むキミたちは〈蜥蜴人〉の集落に出くわし、運悪く生贄にされかけた〈狐耳族〉の少女を救出する。
3204
-  信心深い少女はPCの代表者(PCが相談して選択)を「イキガミさま」と崇拝する。
3205
-  代表PCは[神さま]タグを得る。
3206
-  このタグはシナリオ終了まで解除されない。
3207
- TEXT
3208
- ],
3209
- [127, <<~TEXT
3210
- 大自然のおこぼれ:
3211
-  キミたちは密林で〈魔熊〉が〈地獄蜂〉の巣を襲い、ゆうゆうと食事をしているところに出くわした。
3212
-  姿を隠すためにPCは全員「難易度:21」の[運動判定]を行なう。
3213
-  〔全員が判定成功〕
3214
-   「地獄蜂の毒針[コア素材](1060G)」を得る。
3215
-  〔1人でも判定失敗〕
3216
-   〈魔熊〉に気付かれて追いかけ回された。
3217
-   何も入手できない。
3218
- TEXT
3219
- ],
3220
- [128, <<~TEXT
3221
- 息詰まる戦い:
3222
-  火山が近いのだろうか?
3223
-  ガスがもくもくと立ち込める渓谷を進むキミたちは、襲ってくるモンスターを倒しながら先を急ぐ。
3224
-  PCは全員1Dを振ること。
3225
-  出目が1~2の場合、戦闘中に毒ガスを吸い込んでしまい[疲労:80]を受ける。
3226
- TEXT
3227
- ],
3228
- [129, <<~TEXT
3229
- 妖精のキッチン:
3230
-  樹海を進むキミたちの目の前に、突如ファンシーな外見の建物が姿を現した。
3231
-  中からはいい匂いが漂ってくる……
3232
-  窓から覗き込んでみると、そこは〈厨房妖精〉が料理を作る妖精食堂だった!
3233
-  もし、中に入ってみるなら「ニンゲンのお客様」と歓迎され、ひとりにつき「魔触媒」を1個消費することで不思議な妖精のお菓子を食べることができる。
3234
-  それまでに受けていた[疲労]はすべて解除される。
3235
- TEXT
3236
- ],
3237
- [130, <<~TEXT
3238
- 天然の迷宮:
3239
-  キミたちは樹海を進む。
3240
-  深く複雑な緑の迷宮は方向感覚を狂わせる!
3241
-  PCは全員「難易度:18」の[知覚判定]を行なう。
3242
-  2人以上判定に失敗した場合、方角を見失ってしまう!
3243
-  全員[疲労:80]を受ける。
3244
-  〔ファンブル〕
3245
-   シナリオ終了まで[方向音痴]タグを得る。
3246
-  〔サブ職:探検家、地図屋〕
3247
-   判定に+2。
3248
- TEXT
3249
- ],
3250
- [131, <<~TEXT
3251
- 謎の〈古来種〉:
3252
-  樹海のはるか奥でキミたちは正体不明の〈古来種〉と出会った。
3253
-  彼女はとてもとても退屈しており、PC(何人でもよい)は今までの冒険のエピソードを、実時間で5分以内にまとめて語ってもよい。
3254
-  その場合、彼女はたいそう喜び褒美として「万年楓の小枝[魔触媒30][譲渡不可](820G)」を授ける。
3255
-  望むPCは一時的なコネクションを取得してもよい。
3256
-  関係は「友情」か「親愛」となる。
3257
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
3258
- TEXT
3259
- ],
3260
- [132, <<~TEXT
3261
- モンスター退治の後は:
3262
-  キミたちは激しい戦闘の末、火口にほど近い谷間に巣食う〈一眼巨人〉の一団を退治した。
3263
-  PCの代表者1名は「CR*5+2D」を振る。
3264
-  このロールは財宝表であるかのように特技やアイテムの効果を受けてよい。
3265
-  130以上ならばキミたちは立派な宝箱を発見した!
3266
-  「極上の玉鋼[換金](500G)」が収められていた。
3267
-  140以上ならばさらに「氷不死鳥の羽根[コア素材](1160G)」を発見する。
3268
- TEXT
3269
- ],
3270
- [133, <<~TEXT
3271
- 襲いくる水流:
3272
-  上流で大雨が降ったのか、大河の水は氾濫し、濁流となってキミたちに襲い掛かってきた!
3273
-  PCは全員「難易度:18」の[耐久判定]を行なう。
3274
-  〔自身:[水棲]or[飛行]〕
3275
-   判定に自動成功してよい。
3276
-  〔判定失敗〕
3277
-   水流に大きく流されてしまい[疲労:80]と[圧迫:1]を受ける。
3278
- TEXT
3279
- ],
3280
- [134, <<~TEXT
3281
- たまには鉱夫もいいよね:
3282
-  火山に連なる渓谷は、良質の鉱床が露出しており、採掘にはもってこいだ。
3283
-  この場所で1日を費やすならば、つるはしやハンマーを振るい、それぞれ「血色鉱石[換金](80G)」*1D個を得る。
3284
-  〔サブ職:採掘師、採取人〕
3285
-   入手個数に+2してよい。
3286
- TEXT
3287
- ],
3288
- [135, <<~TEXT
3289
- バッドドリップ!?:
3290
-  足元も見えない深い樹林を切り開いて進むキミたちは、うっかりカラフルな毒蛇の尻尾を踏みつけてしまった!
3291
-  PCは全員2Dを振ること。
3292
-  一番低い出目のPCは怒った蛇に噛み付かれてしまう。
3293
-  毒が回って頭がクラクラしてきた。
3294
-  【因果力】2点を失う。
3295
- TEXT
3296
- ],
3297
- [136, <<~TEXT
3298
- 大冒険の舞台:
3299
-  高台から密林を見下ろすと、極彩色の鳥が群れを成して眼下を横切っていくのが見えた。
3300
-  この雄大な自然は、キミたちの挑戦を待ち受けている。
3301
-  さあ、冒険を続けようじゃないか!
3302
-  この探索表の出来事で次に何らかの判定をする場合ロールに+1D。
3303
-  この効果はひとりでも全員でも次の判定のみ、一度効果を受けるかシーン終了時まで持続する。
3304
- TEXT
3305
- ],
3306
- [137, <<~TEXT
3307
- 氷河の源:
3308
-  キミたちは巨大な氷河を遡るうちに、氷の中に閉じ込められた魔法の輝きを見つける。
3309
-  [火炎]タグのついた武器、もしくは魔法攻撃を持つPCがいるのならば運試しに1Dを振ること(1人1回まで)。
3310
-  1~4なら「太古の氷[換金](100G)」を得るが、5以上なら「永久氷河の核[コア素材](1240G)」を得る。
3311
- TEXT
3312
- ],
3313
- [138, <<~TEXT
3314
- 捉えがたき強敵:
3315
-  火山から吹き出す白煙に紛れて〈煙霧精霊〉の群れが忍び寄る。
3316
-  戦いは乱戦から始まり、キミたちの勝利で終わったものの、実に厳しい戦いだった。
3317
-  PC全員は【因果力】1点を失う。
3318
-  さらにPCは全員1Dを振ること。
3319
-  強度30以上の[軽減(邪毒)]を持つPCは出目に+2。
3320
-  〔1D:1~4〕
3321
-   PCは特技喪失する。
3322
-  〔1D:5以上〕
3323
-   特に損害はない。
3324
- TEXT
3325
- ],
3326
- [139, <<~TEXT
3327
- 小さな親切大きな宝石:
3328
-  樹海の草木に埋もれた古い祭壇を見つけた。
3329
-  祭壇を掃除して、お供えをしてもよい。
3330
-  お供えにしてささげたアイテムの価格合計が300G以上なら、どこからともなく
3331
-  「そ、そんな高価なものをささげないで!」
3332
-  という言葉が聞こえてきて、頭の上から「大粒のルビー[換金](1200G)」が降ってくる。
3333
- TEXT
3334
- ],
3335
- [140, <<~TEXT
3336
- 密林の魔女:
3337
-  キミたちは密林の奥で不思議な小屋を発見した。
3338
-  するとドアがひとりでに開き、
3339
-  「何をグズグズしてるんだい!水汲みに薪割りかまどの掃除、やることは山積みだよ!」
3340
-  としゃがれた老婆の怒声が飛び出してくる。
3341
-  なんて尊大な!
3342
-  しかし素直に従うならば、[疲労:300]を作業したPCで自由に分配すること。
3343
-  その後老婆はPCが所持するアイテム1つに、マジックグレード(1D/2)のプレフィックスド効果(任意)を付与してくれる。
3344
-  〔サブ職:メイド、エルダーメイド〕
3345
-   各PCが受ける[疲労]の強度を-10する。
3346
- TEXT
3347
- ],
3348
- [141, <<~TEXT
3349
- 黒剣のお墨付き:
3350
-  山上湖に巣くった〈火竜〉と戦う〈黒剣騎士団〉をキミたちは発見した。
3351
-  彼らに加勢してモンスターとの戦闘に参加してもよい。
3352
-  参加する場合半日を消費するが、希望者は「やるじゃねえか!」と感心した団長のアイザックとのコネクションを得る。
3353
-  関係は「友情」となる。
3354
-  このコネクションはアフタープレイで消滅するがログチケット:アザーゲット1枚を消費すれば維持してもよい。
3355
- TEXT
3356
- ],
3357
- [142, <<~TEXT
3358
- アレだけは苦手なんだよね……。:
3359
-  野営の明かりはいろんなことを思い起こさせる。
3360
-  PC全員は苦手なエネミー(ゴキブリ、人面魚、幽霊、ムカデなどなど)や現象を話そう。
3361
-  全員自分を再確認して[弱点(告白した対象からの攻撃):20]を得る。
3362
-  これはOSとして扱いシナリオ終了時まで持続する。
3363
- TEXT
3364
- ],
3365
- [143, <<~TEXT
3366
- 悪意の嵐:
3367
-  太古の戦場で突然の嵐に見舞われた。
3368
-  暴風、落雷、大粒の雹と雨、そして怨嗟のうめき声。
3369
-  PCの代表者1名は「難易度:22」の[解析判定]を行なう。
3370
-  この判定は[偵察]タグがついているかのように扱う。
3371
-  〔判定成功〕
3372
-   避難場所を見つけた。
3373
-   PCは全員[疲労:40]を受ける。
3374
-  〔判定失敗〕
3375
-   避難場所が見つからない。
3376
-   怨嗟に蝕まれPCは全員[疲労:100]と特技喪失を受ける。
3377
- TEXT
3378
- ],
3379
- [144, <<~TEXT
3380
- 仕上げは魔触媒:
3381
-  岩陰に作りかけの魔方陣を発見した。
3382
-  魔力を足してやれば力を発揮しそうだ。
3383
-  希望者は自分のCR以上のランクを持つ「魔触媒」1つをささげること。
3384
-  ささげた希望者は、自身の「タイミング:メジャーアクション」の特技のSRを+1できる(最大SRは超えない)。
3385
-  この効果はOSとして扱いシナリオ終了時まで持続する。
3386
- TEXT
3387
- ],
3388
- [145, <<~TEXT
3389
- 沈む!沈む!?:
3390
-  じめじめとぬかるんだ、陰気な湿地帯を進むキミたちだが、突然ひざまで泥に埋まってしまう。
3391
-  しまった、底なし沼だ!?
3392
-  [飛行]状態ではないPCは【因果力】1点を失う。
3393
-  [重鎧]もしくは[中鎧]を装備しているPCはさらに【因果力】1点を失う。
3394
- TEXT
3395
- ],
3396
- [146, <<~TEXT
3397
- あばれる恐竜:
3398
-  シダの生い茂る沼地で突然二足歩行の恐竜の群れが現れる。
3399
-  逃げずに調教を試みるPCは「難易度:27」の[交渉判定]を行なう。
3400
-  この時[疲労:20]を受けるごとに+1のボーナスを得られる(最大+4まで)。
3401
-  〔判定成功〕
3402
-   「剣二足竜の角笛(『LHZB2』P161)」を得る。
3403
-  〔判定失敗〕
3404
-   恐竜たちは去っていく。
3405
- TEXT
3406
- ],
3407
- [147, <<~TEXT
3408
- 一夜の勝負:
3409
-  キミたちが野営をしていると、タキシード姿の青白い〈亡霊〉が姿を現した。
3410
-  身構えるキミたちに〈亡霊〉はダイスで賭けをしようと持ちかけてくる。
3411
-  もしも勝負を受けるなら代表者は【因果力】1点を支払い奇数か偶数を指定すること。
3412
-  そののちGMは2Dを振ること。
3413
-  的中したならば「財宝表:金銭」を1回ロールしてもよい。
3414
-  4回勝負を行なうと〈亡霊〉は満足したのか朝日の中に消えていく。
3415
-  勝負を受けず、〈亡霊〉を排除するならばPC全員は[疲労:100]を受ける。
3416
- TEXT
3417
- ],
3418
- [148, <<~TEXT
3419
- 不浄なる戦場:
3420
-  キミたちはアルヴの怨念が満ちると伝えられる古戦場で、呪われた〈骸骨巨人〉と激しい遭遇戦を繰り広げた。
3421
-  戦いにはなんとか勝利し「無骨な白骨[換金](400G)」を1D個手に入れたが、かなりの消耗を強いられることになってしまう。
3422
-  PCは全員[疲労:120]と特技喪失を受ける。
3423
- TEXT
3424
- ],
3425
- [149, <<~TEXT
3426
- 飢えた〈魔狂鼠〉:
3427
-  キミたちは黒い濁流のような、恐ろしい数の〈魔狂鼠〉の群れに遭遇した。
3428
-  [食料]タグを持つアイテムすべてを投げ捨てて必死で逃げれば彼らを避けることができる。
3429
-  食料を守るためには戦うしかない。
3430
-  その場合は[疲労:120]を受け、さらに【因果力】1点を失う。
3431
- TEXT
3432
- ],
3433
- [150, <<~TEXT
3434
- 怨念の森:
3435
-  陰鬱な森がキミたちに牙を剥いた。
3436
-  足元の腐葉土は瘴気を放つ泥濘へと変じ、ぬめるような霧が魂魄を削り取ってゆく。
3437
-  [軽減(邪毒)]もしくは[高位保護]を持たないPCは【因果力】3点を失う。
3438
- TEXT
3439
- ],
3440
- [151, <<~TEXT
3441
- お憑かれ様:
3442
-  アンデッドのうろつく古戦場で、キミたちは不注意から小さな祠を倒してしまった。
3443
-  PCは全員2Dを振ること。
3444
-  一番低い出目のPCは猛烈な寒気とともに[亡霊憑き]タグを得る。
3445
-  このタグはシナリオ終了まで解除されず、タグを持つPCは判定でファンブルをするたびに[疲労:20]を受ける。
3446
- TEXT
3447
- ],
3448
- [152, <<~TEXT
3449
- 夜間飛行:
3450
-  キミたちは湿地帯で野営することになった。
3451
-  PCは全員2Dを振ること。
3452
-  一番高い出目のPCが見張りをしていると、月明かりの下、小さな赤いクモの子供たちが何百匹も風に乗って飛んでいく、幻想的な光景を目にした。
3453
-  [疲労]が-30される。
3454
-  また「煉獄クモの燃糸[コア素材](1540G)」を入手する。
3455
- TEXT
3456
- ],
3457
- [153, <<~TEXT
3458
- 沸き立つ沼:
3459
-  硫黄の臭いが立ち込める泥沼が突如沸騰し始めた!
3460
-  毒ガスと灼熱の泥がキミたちに襲い掛かる。
3461
-  [高位保護]もしくは[天然]プロップの影響を受けないPC以外は1Dを振る。
3462
-  この時【因果力】1点を支払って1Dではなく2Dを振ってもよい。
3463
-  出目の合計が2以下のPCは[戦闘不能]となる。
3464
-  3~5ならば[疲労:100]を受ける。
3465
-  6以上なら被害はない。
3466
- TEXT
3467
- ],
3468
- [154, <<~TEXT
3469
- ハイパードロップタイム!:
3470
-  ひょんなことからキミたちは大量のエネミーに追い回され、苦戦の末全滅させた。
3471
-  PCは【因果力】を任意の数だけ消費してもよい。
3472
-  各自消費した【因果力】と同数のダイスを振り、全員の出目を合計すること。
3473
-  ダイスの合計値が3以上ならPCたちは1500Gを得る。
3474
-  8以上でさらに「古代のメダル[コア素材](1540G)」と「魔凝結[魔触媒29](770G)」2つを得る。
3475
-  13以上でさらに「ダイヤの原石[換金](2300G)」1つを得る。
3476
- TEXT
3477
- ],
3478
- [155, <<~TEXT
3479
- 心霊スポット?:
3480
-  静かに水を湛えた湖のそばを通った時、急な悪寒に襲われた。
3481
-  湖面に目をやると、水面下にひしめく亡者の群れと目が合ってしまった。
3482
-  呪詛の視線がキミたちを捉える。
3483
-  PCは全員1Dを振ること。
3484
-  [高位保護]を持つPCは出目に+2。
3485
-  〔1D:1~3〕
3486
-   ごっそり気力を削られる。
3487
-   【因果力】2点を失う。
3488
-  〔1D:4以上〕
3489
-   視線に力を込めて睨み返す。
3490
-   やっぱ気合いだな。
3491
- TEXT
3492
- ],
3493
- [156, <<~TEXT
3494
- 武人の誉れ:
3495
-  荒野の只中、数多の折れた武器や朽ちた鎧でできた玉座に、古めかしい甲冑をまとったアルヴの亡霊が座している。
3496
-  彼はキミたちに「勝者には名誉を、敗者には死を」と告げ、一騎打ちを申し込んできた。
3497
-  断るならば、彼の姿は玉座と共に掻き消える。
3498
-  PCの代表者1名は「難易度25」の[耐久判定]を行なう。
3499
-  判定に失敗した場合[疲労:300]を受ける。
3500
-  判定後、判定したPCが[戦闘不能]状態でなければ、彼は「人斬りのギガントエストック[M2]([人間]に対しダメージ+40。『LHZB2』P136&P165)」を残し、光の粒子となって天に昇る。
3501
- TEXT
3502
- ],
3503
- [157, <<~TEXT
3504
- 見定める視線:
3505
-  旅の道中で、キミたちは何度もモンスターの襲撃を受けた。
3506
-  熟練の冒険者であるキミたちは危なげなくそれらを撃破し、合計で2D*200Gの戦利品を得た。
3507
-  しかし、その様子を敵意に満ちた視線がずっと監視していたことには気づかなかったようだ。
3508
-  このシナリオのクライマックスにおいて、GMは【因果力】(PC人数*2)点ぶんのGM用EXパワーを追加で使用できる。
3509
- TEXT
3510
- ],
3511
- [158, <<~TEXT
3512
- 突然の闇夜:
3513
-  沼に潜む〈蛙竜〉に出会ったキミたちは、フォッグブレスで突然の暗黒に突き落とされる。
3514
-  PCは全員1Dを振ること。
3515
-  [水棲]、[飛行]、[暗視]を持っているのならば1つにつき出目に+1を得られる。
3516
-  〔1D:1~4〕
3517
-   逃亡中に焼け付くような毒液を受けて[疲労:120]を受けてしまう。
3518
-  〔1D:5~〕
3519
-   光を閉ざす霧の中を逃走して[疲労:60]を受ける。
3520
- TEXT
3521
- ],
3522
- [159, <<~TEXT
3523
- 幻の金鉱:
3524
-  キミたちは瘴気を漂わせる金鉱を見つけた。
3525
-  この金鉱に潜って金を探したいPCは2Dを振ること。
3526
-  出た出目がいままでPCたち全員でこの金鉱を探った数と等しいか小さければ「金鉱石[換金]700G」を得る。
3527
-  出目が大きい場合、PCたち全員は[疲労:80]を受けて気絶し丸一日が経過する。
3528
-  目が覚めた時、金鉱は消えている。
3529
- TEXT
3530
- ],
3531
- [160, <<~TEXT
3532
- 幻惑草の群生地:
3533
-  粘つくような湿気の原生林の中で、甘い香りを放つ花畑にでくわした。
3534
-  PCは全員「難易度:20」の[耐久判定]を行なう。
3535
-  強度30以上の[軽減(精神)]を持つPCは判定に+1D。
3536
-  〔判定成功〕
3537
-   PCは意識をしっかり保って花畑を抜ける。
3538
-  〔判定失敗〕
3539
-   PCは幻覚を見て仲間のひとり(失敗したPCが選択)に斬りかかり、その仲間に[疲労:100]を与えてしまう。
3540
-   この効果は失敗したPC以外であれば《かばう》で代わりに受けることができる。
3541
-   また失敗したPCは特技喪失を受ける。
3542
- TEXT
3543
- ],
3544
- [161, <<~TEXT
3545
- 硫黄の谷間:
3546
-  黄褐色の霧が立ちこめる荒々しい谷間にたどり着く。
3547
-  キミたちは呼吸を我慢するようにしてこの危険な谷をくぐり抜ける。
3548
-  PCは全員1Dを振ること。
3549
-  1が出たPCは濁った水たまりに動物の死体を見つけて気持ちが悪くなってしまい、シナリオ終了時まで[弱点(精神):20](OS扱い)を得る。
3550
- TEXT
3551
- ],
3552
- [162, <<~TEXT
3553
- 火竜との戦い:
3554
-  火炎をまとい大空を支配する恐ろしい火竜との遭遇戦となった。
3555
-  PCは全員1Dを振る。
3556
-  自発的に特技喪失をしてもよく、その場合追加で+1Dしてもよい。
3557
-  ダイスの合計値が(PC人数*4+2)以上ならば勝利して「赤色魔力ダイオード[コア素材](1640G)」を得る。
3558
-  未満であった場合はPCは全員【因果力】1点を失い[疲労:50]を受ける。
3559
- TEXT
3560
- ],
3561
- ]
3562
-
3563
- return tableName, table
517
+ class << self
518
+ private
519
+
520
+ def translate_tables(locale)
521
+ {
522
+ "PTAG" => DiceTable::D66Table.from_i18n("LogHorizon.table.PTAG", locale),
523
+ "KOYU" => DiceTable::D66Table.from_i18n("LogHorizon.table.KOYU", locale),
524
+ "MGR1" => DiceTable::D66Table.from_i18n("LogHorizon.table.MGR1", locale),
525
+ "MGR2" => DiceTable::D66Table.from_i18n("LogHorizon.table.MGR2", locale),
526
+ "MGR3" => DiceTable::D66Table.from_i18n("LogHorizon.table.MGR3", locale),
527
+ "HLOC" => DiceTable::D66Table.from_i18n("LogHorizon.table.HLOC", locale),
528
+ "PCNM" => DiceTable::D66Table.from_i18n("LogHorizon.table.PCNM", locale),
529
+ }
530
+ end
3564
531
  end
532
+
533
+ TABLES = translate_tables(:ja_jp)
534
+
535
+ register_prefix(TABLES.keys)
3565
536
  end
3566
537
  end
3567
538
  end