bcdice 3.0.0.pre.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +21 -0
  3. data/.github/.codecov.yaml +10 -0
  4. data/.github/workflows/coverage.yaml +21 -0
  5. data/.github/workflows/lint.yaml +13 -0
  6. data/.github/workflows/test.yml +20 -0
  7. data/.gitignore +14 -0
  8. data/.rubocop.yml +96 -0
  9. data/.rubocop_todo.yml +113 -0
  10. data/CHANGELOG.md +868 -0
  11. data/Gemfile +11 -0
  12. data/LICENSE +29 -0
  13. data/README.md +38 -0
  14. data/ROADMAP.md +30 -0
  15. data/Rakefile +118 -0
  16. data/bcdice.gemspec +27 -0
  17. data/bin/repl.rb +21 -0
  18. data/docs/README.txt +2028 -0
  19. data/docs/dicebot_sort_key.md +72 -0
  20. data/docs/how_to_make_dicebot.md +453 -0
  21. data/lib/bcdice.rb +8 -0
  22. data/lib/bcdice/arithmetic_evaluator.rb +167 -0
  23. data/lib/bcdice/base.rb +423 -0
  24. data/lib/bcdice/command_parser.rb +242 -0
  25. data/lib/bcdice/common_command.rb +23 -0
  26. data/lib/bcdice/common_command/add_dice.rb +54 -0
  27. data/lib/bcdice/common_command/add_dice/node.rb +488 -0
  28. data/lib/bcdice/common_command/add_dice/parser.rb +282 -0
  29. data/lib/bcdice/common_command/add_dice/randomizer.rb +48 -0
  30. data/lib/bcdice/common_command/barabara_dice.rb +57 -0
  31. data/lib/bcdice/common_command/calc.rb +39 -0
  32. data/lib/bcdice/common_command/choice.rb +35 -0
  33. data/lib/bcdice/common_command/d66_dice.rb +63 -0
  34. data/lib/bcdice/common_command/reroll_dice.rb +190 -0
  35. data/lib/bcdice/common_command/upper_dice.rb +165 -0
  36. data/lib/bcdice/common_command/version.rb +26 -0
  37. data/lib/bcdice/dice_table.rb +8 -0
  38. data/lib/bcdice/dice_table/chain_table.rb +33 -0
  39. data/lib/bcdice/dice_table/d66_grid_table.rb +26 -0
  40. data/lib/bcdice/dice_table/d66_range_table.rb +26 -0
  41. data/lib/bcdice/dice_table/d66_table.rb +34 -0
  42. data/lib/bcdice/dice_table/range_table.rb +267 -0
  43. data/lib/bcdice/dice_table/roll_result.rb +43 -0
  44. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +32 -0
  45. data/lib/bcdice/dice_table/table.rb +35 -0
  46. data/lib/bcdice/enum.rb +15 -0
  47. data/lib/bcdice/format.rb +36 -0
  48. data/lib/bcdice/game_system.rb +187 -0
  49. data/lib/bcdice/game_system/AFF2e.rb +141 -0
  50. data/lib/bcdice/game_system/AceKillerGene.rb +55 -0
  51. data/lib/bcdice/game_system/Airgetlamh.rb +117 -0
  52. data/lib/bcdice/game_system/Alsetto.rb +124 -0
  53. data/lib/bcdice/game_system/Alshard.rb +27 -0
  54. data/lib/bcdice/game_system/AlterRaise.rb +282 -0
  55. data/lib/bcdice/game_system/Amadeus.rb +622 -0
  56. data/lib/bcdice/game_system/Amadeus_Korean.rb +501 -0
  57. data/lib/bcdice/game_system/AnimaAnimus.rb +96 -0
  58. data/lib/bcdice/game_system/Arianrhod.rb +50 -0
  59. data/lib/bcdice/game_system/ArsMagica.rb +149 -0
  60. data/lib/bcdice/game_system/Avandner.rb +101 -0
  61. data/lib/bcdice/game_system/BBN.rb +143 -0
  62. data/lib/bcdice/game_system/BadLife.rb +435 -0
  63. data/lib/bcdice/game_system/BarnaKronika.rb +188 -0
  64. data/lib/bcdice/game_system/BattleTech.rb +530 -0
  65. data/lib/bcdice/game_system/BeastBindTrinity.rb +348 -0
  66. data/lib/bcdice/game_system/BeginningIdol.rb +2527 -0
  67. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +2378 -0
  68. data/lib/bcdice/game_system/BladeOfArcana.rb +252 -0
  69. data/lib/bcdice/game_system/BlindMythos.rb +460 -0
  70. data/lib/bcdice/game_system/BloodCrusade.rb +423 -0
  71. data/lib/bcdice/game_system/BloodMoon.rb +213 -0
  72. data/lib/bcdice/game_system/CardRanker.rb +249 -0
  73. data/lib/bcdice/game_system/ChaosFlare.rb +181 -0
  74. data/lib/bcdice/game_system/Chill.rb +163 -0
  75. data/lib/bcdice/game_system/Chill3.rb +52 -0
  76. data/lib/bcdice/game_system/CodeLayerd.rb +132 -0
  77. data/lib/bcdice/game_system/ColossalHunter.rb +569 -0
  78. data/lib/bcdice/game_system/CrashWorld.rb +81 -0
  79. data/lib/bcdice/game_system/Cthulhu.rb +252 -0
  80. data/lib/bcdice/game_system/Cthulhu7th.rb +767 -0
  81. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +386 -0
  82. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +383 -0
  83. data/lib/bcdice/game_system/CthulhuTech.rb +263 -0
  84. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +243 -0
  85. data/lib/bcdice/game_system/Cthulhu_Korean.rb +240 -0
  86. data/lib/bcdice/game_system/DarkBlaze.rb +207 -0
  87. data/lib/bcdice/game_system/DarkDaysDrive.rb +425 -0
  88. data/lib/bcdice/game_system/DarkSouls.rb +91 -0
  89. data/lib/bcdice/game_system/DeadlineHeroes.rb +583 -0
  90. data/lib/bcdice/game_system/DemonParasite.rb +524 -0
  91. data/lib/bcdice/game_system/DetatokoSaga.rb +310 -0
  92. data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +310 -0
  93. data/lib/bcdice/game_system/DiceBot.rb +17 -0
  94. data/lib/bcdice/game_system/DiceOfTheDead.rb +111 -0
  95. data/lib/bcdice/game_system/DoubleCross.rb +373 -0
  96. data/lib/bcdice/game_system/DoubleCross_Korean.rb +371 -0
  97. data/lib/bcdice/game_system/Dracurouge.rb +1856 -0
  98. data/lib/bcdice/game_system/Dracurouge_Korean.rb +310 -0
  99. data/lib/bcdice/game_system/DungeonsAndDragons.rb +19 -0
  100. data/lib/bcdice/game_system/EarthDawn.rb +225 -0
  101. data/lib/bcdice/game_system/EarthDawn3.rb +275 -0
  102. data/lib/bcdice/game_system/EarthDawn4.rb +272 -0
  103. data/lib/bcdice/game_system/EclipsePhase.rb +51 -0
  104. data/lib/bcdice/game_system/Elric.rb +36 -0
  105. data/lib/bcdice/game_system/Elysion.rb +1213 -0
  106. data/lib/bcdice/game_system/EmbryoMachine.rb +227 -0
  107. data/lib/bcdice/game_system/EndBreaker.rb +132 -0
  108. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +27 -0
  109. data/lib/bcdice/game_system/Fiasco.rb +123 -0
  110. data/lib/bcdice/game_system/Fiasco_Korean.rb +122 -0
  111. data/lib/bcdice/game_system/FilledWith.rb +1543 -0
  112. data/lib/bcdice/game_system/FullMetalPanic.rb +27 -0
  113. data/lib/bcdice/game_system/FutariSousa.rb +994 -0
  114. data/lib/bcdice/game_system/FutariSousa_Korean.rb +994 -0
  115. data/lib/bcdice/game_system/Garako.rb +559 -0
  116. data/lib/bcdice/game_system/GardenOrder.rb +451 -0
  117. data/lib/bcdice/game_system/GehennaAn.rb +136 -0
  118. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +120 -0
  119. data/lib/bcdice/game_system/GoblinSlayer.rb +168 -0
  120. data/lib/bcdice/game_system/GoldenSkyStories.rb +77 -0
  121. data/lib/bcdice/game_system/Gorilla.rb +44 -0
  122. data/lib/bcdice/game_system/GranCrest.rb +518 -0
  123. data/lib/bcdice/game_system/Gundog.rb +52 -0
  124. data/lib/bcdice/game_system/GundogRevised.rb +294 -0
  125. data/lib/bcdice/game_system/GundogZero.rb +261 -0
  126. data/lib/bcdice/game_system/Gurps.rb +403 -0
  127. data/lib/bcdice/game_system/GurpsFW.rb +2330 -0
  128. data/lib/bcdice/game_system/HarnMaster.rb +208 -0
  129. data/lib/bcdice/game_system/HatsuneMiku.rb +706 -0
  130. data/lib/bcdice/game_system/Hieizan.rb +48 -0
  131. data/lib/bcdice/game_system/HouraiGakuen.rb +270 -0
  132. data/lib/bcdice/game_system/HuntersMoon.rb +503 -0
  133. data/lib/bcdice/game_system/Illusio.rb +89 -0
  134. data/lib/bcdice/game_system/InfiniteFantasia.rb +51 -0
  135. data/lib/bcdice/game_system/Insane.rb +822 -0
  136. data/lib/bcdice/game_system/Insane_Korean.rb +773 -0
  137. data/lib/bcdice/game_system/IthaWenUa.rb +38 -0
  138. data/lib/bcdice/game_system/JamesBond.rb +45 -0
  139. data/lib/bcdice/game_system/Kamigakari.rb +394 -0
  140. data/lib/bcdice/game_system/Kamigakari_Korean.rb +428 -0
  141. data/lib/bcdice/game_system/KanColle.rb +938 -0
  142. data/lib/bcdice/game_system/KemonoNoMori.rb +258 -0
  143. data/lib/bcdice/game_system/KillDeathBusiness.rb +1420 -0
  144. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +1510 -0
  145. data/lib/bcdice/game_system/KurayamiCrying.rb +49 -0
  146. data/lib/bcdice/game_system/LiveraDoll.rb +375 -0
  147. data/lib/bcdice/game_system/LogHorizon.rb +3567 -0
  148. data/lib/bcdice/game_system/LogHorizon_Korean.rb +1407 -0
  149. data/lib/bcdice/game_system/LostRecord.rb +30 -0
  150. data/lib/bcdice/game_system/LostRoyal.rb +242 -0
  151. data/lib/bcdice/game_system/MagicaLogia.rb +1148 -0
  152. data/lib/bcdice/game_system/MeikyuDays.rb +415 -0
  153. data/lib/bcdice/game_system/MeikyuKingdom.rb +466 -0
  154. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +269 -0
  155. data/lib/bcdice/game_system/MetalHead.rb +249 -0
  156. data/lib/bcdice/game_system/MetalHeadExtream.rb +917 -0
  157. data/lib/bcdice/game_system/MetallicGuardian.rb +31 -0
  158. data/lib/bcdice/game_system/MonotoneMuseum.rb +354 -0
  159. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +304 -0
  160. data/lib/bcdice/game_system/Nechronica.rb +211 -0
  161. data/lib/bcdice/game_system/Nechronica_Korean.rb +160 -0
  162. data/lib/bcdice/game_system/NeverCloud.rb +74 -0
  163. data/lib/bcdice/game_system/NightWizard.rb +231 -0
  164. data/lib/bcdice/game_system/NightWizard3rd.rb +24 -0
  165. data/lib/bcdice/game_system/NightmareHunterDeep.rb +117 -0
  166. data/lib/bcdice/game_system/NinjaSlayer.rb +274 -0
  167. data/lib/bcdice/game_system/NjslyrBattle.rb +54 -0
  168. data/lib/bcdice/game_system/Nuekagami.rb +293 -0
  169. data/lib/bcdice/game_system/OneWayHeroics.rb +134 -0
  170. data/lib/bcdice/game_system/OracleEngine.rb +265 -0
  171. data/lib/bcdice/game_system/OrgaRain.rb +77 -0
  172. data/lib/bcdice/game_system/Oukahoushin3rd.rb +162 -0
  173. data/lib/bcdice/game_system/Paradiso.rb +323 -0
  174. data/lib/bcdice/game_system/Paranoia.rb +64 -0
  175. data/lib/bcdice/game_system/ParanoiaRebooted.rb +109 -0
  176. data/lib/bcdice/game_system/ParasiteBlood.rb +231 -0
  177. data/lib/bcdice/game_system/Pathfinder.rb +21 -0
  178. data/lib/bcdice/game_system/Peekaboo.rb +324 -0
  179. data/lib/bcdice/game_system/Pendragon.rb +39 -0
  180. data/lib/bcdice/game_system/PhantasmAdventure.rb +73 -0
  181. data/lib/bcdice/game_system/Postman.rb +185 -0
  182. data/lib/bcdice/game_system/PulpCthulhu.rb +184 -0
  183. data/lib/bcdice/game_system/Raisondetre.rb +171 -0
  184. data/lib/bcdice/game_system/RecordOfLodossWar.rb +58 -0
  185. data/lib/bcdice/game_system/RecordOfSteam.rb +149 -0
  186. data/lib/bcdice/game_system/RokumonSekai2.rb +110 -0
  187. data/lib/bcdice/game_system/RoleMaster.rb +24 -0
  188. data/lib/bcdice/game_system/RuneQuest.rb +47 -0
  189. data/lib/bcdice/game_system/RyuTuber.rb +266 -0
  190. data/lib/bcdice/game_system/Ryutama.rb +199 -0
  191. data/lib/bcdice/game_system/SRS.rb +348 -0
  192. data/lib/bcdice/game_system/SamsaraBallad.rb +111 -0
  193. data/lib/bcdice/game_system/Satasupe.rb +1173 -0
  194. data/lib/bcdice/game_system/ScreamHighSchool.rb +128 -0
  195. data/lib/bcdice/game_system/SevenFortressMobius.rb +34 -0
  196. data/lib/bcdice/game_system/ShadowRun.rb +26 -0
  197. data/lib/bcdice/game_system/ShadowRun4.rb +49 -0
  198. data/lib/bcdice/game_system/ShadowRun5.rb +80 -0
  199. data/lib/bcdice/game_system/SharedFantasia.rb +69 -0
  200. data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +85 -0
  201. data/lib/bcdice/game_system/ShinkuuGakuen.rb +506 -0
  202. data/lib/bcdice/game_system/ShinobiGami.rb +680 -0
  203. data/lib/bcdice/game_system/ShoujoTenrankai.rb +677 -0
  204. data/lib/bcdice/game_system/Skynauts.rb +324 -0
  205. data/lib/bcdice/game_system/SteamPunkers.rb +485 -0
  206. data/lib/bcdice/game_system/StellarKnights.rb +856 -0
  207. data/lib/bcdice/game_system/SterileLife.rb +452 -0
  208. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +103 -0
  209. data/lib/bcdice/game_system/StratoShout.rb +316 -0
  210. data/lib/bcdice/game_system/StratoShout_Korean.rb +314 -0
  211. data/lib/bcdice/game_system/Strave.rb +223 -0
  212. data/lib/bcdice/game_system/SwordWorld.rb +491 -0
  213. data/lib/bcdice/game_system/SwordWorld2_0.rb +295 -0
  214. data/lib/bcdice/game_system/SwordWorld2_5.rb +121 -0
  215. data/lib/bcdice/game_system/TherapieSein.rb +93 -0
  216. data/lib/bcdice/game_system/TokumeiTenkousei.rb +96 -0
  217. data/lib/bcdice/game_system/TokyoGhostResearch.rb +122 -0
  218. data/lib/bcdice/game_system/TokyoNova.rb +19 -0
  219. data/lib/bcdice/game_system/Torg.rb +364 -0
  220. data/lib/bcdice/game_system/Torg1_5.rb +139 -0
  221. data/lib/bcdice/game_system/TorgEternity.rb +414 -0
  222. data/lib/bcdice/game_system/TrinitySeven.rb +364 -0
  223. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +287 -0
  224. data/lib/bcdice/game_system/TwilightGunsmoke.rb +527 -0
  225. data/lib/bcdice/game_system/Utakaze.rb +153 -0
  226. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +132 -0
  227. data/lib/bcdice/game_system/Villaciel.rb +555 -0
  228. data/lib/bcdice/game_system/WARPS.rb +33 -0
  229. data/lib/bcdice/game_system/WaresBlade.rb +34 -0
  230. data/lib/bcdice/game_system/Warhammer.rb +336 -0
  231. data/lib/bcdice/game_system/WitchQuest.rb +275 -0
  232. data/lib/bcdice/game_system/WorldOfDarkness.rb +135 -0
  233. data/lib/bcdice/game_system/YankeeYogSothoth.rb +440 -0
  234. data/lib/bcdice/game_system/YearZeroEngine.rb +134 -0
  235. data/lib/bcdice/game_system/ZettaiReido.rb +142 -0
  236. data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +383 -0
  237. data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +89 -0
  238. data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +196 -0
  239. data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +223 -0
  240. data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +214 -0
  241. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +610 -0
  242. data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +117 -0
  243. data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +380 -0
  244. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +184 -0
  245. data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +417 -0
  246. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +912 -0
  247. data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +121 -0
  248. data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +67 -0
  249. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +166 -0
  250. data/lib/bcdice/game_system/one_way_heroics/tables.rb +668 -0
  251. data/lib/bcdice/loader.rb +37 -0
  252. data/lib/bcdice/normalize.rb +38 -0
  253. data/lib/bcdice/preprocessor.rb +87 -0
  254. data/lib/bcdice/randomizer.rb +137 -0
  255. data/lib/bcdice/repl.rb +155 -0
  256. data/lib/bcdice/user_defined_dice_table.rb +153 -0
  257. data/lib/bcdice/version.rb +3 -0
  258. metadata +304 -0
@@ -0,0 +1,1407 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class LogHorizon_Korean < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'LogHorizon:Korean'
8
+
9
+ # ゲームシステム名
10
+ NAME = '로그 호라이즌'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = '国際化:Korean:로그 호라이즌'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~MESSAGETEXT
17
+ ・판정(xLH±y>=z)
18
+  xD6의 판정.크리티컬, 펌블의 자동 판정을 실시합니다.
19
+  x:x로 굴릴 주사위의 수를 입력합니다.
20
+  ±y:y로 수정치를 입력합니다. ±의 계산에 대응하며 생략이 가능합니다.
21
+ >=z:z로 목표값을 입력합니다. ±의 계산에 대응하며 생략이 가능합니다.
22
+  예시) 3LH 2LH>=8 3LH+1>=10
23
+ ・소모표(tCTx±y$z)
24
+  PCT 체력/ECT 기력/GCT 물품/CCT 금전
25
+  x:CR을 지정합니다.
26
+  ±y:수정치, +와 -의 계산에 대응하며 생략이 가능합니다.
27
+  $z:$를 붙이면 주사위 눈을 z고정합니다. 표의 특정 값 참조용으로 사용하며.생략 가능.
28
+  例) PCT1 ECT2+1 GCT3-1 CCT3$5
29
+ ・재물표(tTRSx±y$)
30
+  CTRS 금전/MTRS 마법소재/ITRS 환전 아이템/※HTRS 히로인/GTRS 고블린 재보표
31
+  x:CR을 지정합니다. 생략시에는 다이치 0고정으로 수정치의 표를 참조.《골드 핑거》사용 시 등.
32
+  ±y:수정치, +와 -의 계산에 대응하며 생략이 가능합니다.
33
+  $:$을 붙이면 재물표의 다이스를 7로 고정합니다.(1차 분량의 프라이즈 용도)생략이 가능합니다.
34
+  예시) CTRS1 MTRS2+1 ITRS3-1 ITRS+27 CTRS3$
35
+ ・퍼스널리티 태그 표(PTAG)
36
+ ・교우표(KOYU)
37
+ ・이스탈 탐색표(ESTLx) x는 CR을 지정합니다.
38
+ ・프리픽스드 매직아이템 효과 표(MGRx) x는 MG를 지정합니다.
39
+ †악기 종류 표(MIIx) x는 악기의 종류를 지정합니다.(1~6를 지정) 생략이 가능합니다.
40
+  1 타악기1/2 건반악기/3 현악기1/4 현악기2/5 관악기1/6 관악기2
41
+ ☆특수 소모표(tSCTx±y$z) 소모표와 마찬가지로 지정합니다. 다만 CR은 생략이 가능합니다.
42
+  ESCT 로데릭 연구소는 폭발했다!/CSCT 알브의 저주다!
43
+ ※공격 명중 장소 랜덤 결정표(HLOC)
44
+ ※PC명 랜덤 결정표(PCNM)
45
+ ※로데릭 연구소의 새로운 발명 랜덤 결정표(IATt)
46
+ IATA 특징A(장점)/IATB 특징B(단점)/IATL 외형/IATT 종류
47
+ t를 생략할 경우 모두 표시합니다. t에 A/B/L/T를 임의의 순서로 연결 할 수 있습니다.
48
+ 例)IAT IATALT IATABBLT IATABL
49
+ ※아키바 거리에서 발생하는 문제 랜덤결정 표(TIAS)
50
+ ※버려진 아이 랜덤 결정 표(ABDC)
51
+ †표시와 ☆표시는「인투・더・셀덴시아 새로운 빌드의 날개짓(1)」에서、
52
+ ☆표시는 셀덴시아・가제트「D 되기는 할까? 66」Vol.1에서、
53
+ ※표시는「실록・칠면체공방 좌담회(여름의 장)」에서 참조했습니다. 이용법은 항목을 참조해주세요.
54
+ ・D66다이스도 있습니다.
55
+
56
+ ・역자의 말 : 「실록・칠면체공방 좌담회(여름의 장)」은 한국에서 발매하지 않습니다. 참고해주세요.
57
+ ・이니티움님, 광황님, CoC방 여러분 감사합니다. by호흡도의식하면귀찮아
58
+ MESSAGETEXT
59
+
60
+ register_prefix(['\d+LH.*', 'PC.*', 'EC.*', 'GC.*', 'CC.*', 'CTR.*', 'MTR.*', 'ITR.*', 'HTR.*', 'GTR.*', 'PTAG', 'KOYU', 'MGR.', 'HLOC', 'PCNM', 'IAT.*', 'TIAS', 'ABDC', 'MII.*', 'ESCT.*', 'CSCT.*', 'ESTL.*'])
61
+
62
+ def initialize(command)
63
+ super(command)
64
+ @enabled_d66 = true
65
+ @d66_sort_type = D66SortType::NO_SORT
66
+ end
67
+
68
+ def eval_game_system_specific_command(command)
69
+ getCheckRollDiceCommandResult(command) ||
70
+ getConsumptionDiceCommandResult(command) ||
71
+ getTresureDiceCommandResult(command) ||
72
+ getPersonalityTagDiceCommandResult(command) ||
73
+ getFriendlyChartDiceCommandResult(command) ||
74
+ getPrefixedMagickItemDiceCommandResult(command) ||
75
+ getHitLocationDiceCommandResult(command) ||
76
+ getPCNameDiceCommandResult(command) ||
77
+ getInventionAttributeTextDiceCommandResult(command) ||
78
+ getTroubleInAkibaStreetDiceCommandResult(command) ||
79
+ getAbandonedChildDiceCommandResult(command) ||
80
+ getMusicalInstrumentTypeDiceCommandResult(command) ||
81
+ getEastalDiceCommandResult(command)
82
+ end
83
+
84
+ def getCheckRollDiceCommandResult(command)
85
+ return nil unless command =~ /(\d+)LH([\+\-\d]*)(>=([\+\-\d]*))?/i
86
+
87
+ diceCount = Regexp.last_match(1).to_i
88
+ modifyText = (Regexp.last_match(2) || '')
89
+ difficultyText = Regexp.last_match(4)
90
+
91
+ # 修正値の計算
92
+ modify = getValue(modifyText, 0)
93
+
94
+ # 目標値の計算
95
+ difficulty = getValue(difficultyText, nil)
96
+
97
+ # ダイスロール
98
+ diceList = @randomizer.roll_barabara(diceCount, 6)
99
+ dice = diceList.sum()
100
+ dice_str = diceList.join(",")
101
+
102
+ total = dice + modify
103
+
104
+ # 出力用ダイスコマンドを生成
105
+ command = "#{diceCount}LH#{modifyText}"
106
+ command += ">=#{difficulty}" unless difficulty.nil?
107
+
108
+ # 출력문 생성
109
+ result = "(#{command}) > #{dice}[#{dice_str}]#{modifyText} > #{total}"
110
+
111
+ # クリティカル・ファンブルチェック
112
+ if isCritical(diceList)
113
+ result += " > 크리티컬!"
114
+ elsif isFamble(diceList, diceCount)
115
+ result += " > 펌블!"
116
+ else
117
+ result += getJudgeResultString(difficulty, total)
118
+ end
119
+
120
+ return result
121
+ end
122
+
123
+ # 成否判定
124
+ def getJudgeResultString(difficulty, total)
125
+ return '' if difficulty.nil?
126
+
127
+ if total >= difficulty
128
+ return " > 성공"
129
+ else
130
+ return " > 실패"
131
+ end
132
+ end
133
+
134
+ def getValue(text, defaultValue)
135
+ return defaultValue if text.nil? || text.empty?
136
+
137
+ ArithmeticEvaluator.eval(text)
138
+ end
139
+
140
+ def isCritical(diceList)
141
+ (diceList.select { |i| i == 6 }.size >= 2)
142
+ end
143
+
144
+ def isFamble(diceList, diceCount)
145
+ (diceList.select { |i| i == 1 }.size >= diceCount)
146
+ end
147
+
148
+ # 消耗表
149
+ def getConsumptionDiceCommandResult(command)
150
+ return nil unless command =~ /(P|E|G|C|ES|CS)CT(\d+)?([\+\-\d]*)(\$(\d+))?/
151
+
152
+ type = Regexp.last_match(1)
153
+ is_special = (Regexp.last_match(1) && Regexp.last_match(1).length > 1)
154
+ rank = Regexp.last_match(2) && Regexp.last_match(2) != '' ? Regexp.last_match(2).to_i : nil
155
+ return nil if !rank && !is_special
156
+
157
+ rank ||= 0
158
+ is_choice = !Regexp.last_match(4).nil?
159
+ dice_value = Regexp.last_match(5)
160
+ modifyText = Regexp.last_match(3)
161
+ modify = getValue(modifyText, 0)
162
+
163
+ tableName = ""
164
+ tables = nil
165
+
166
+ case type
167
+ when "P"
168
+ tableName, tables = getPhysicalConsumptionResultTables
169
+ when "E"
170
+ tableName, tables = getEnergyConsumptionResultTables
171
+ when "G"
172
+ tableName, tables = getGoodsConsumptionResultTables
173
+ when "C"
174
+ tableName, tables = getCashConsumptionResultTables
175
+ when "ES"
176
+ tableName, tables = getExplosionSpecialConsumptionResultTables
177
+ when "CS"
178
+ tableName, tables = getCurseSpecialConsumptionResultTables
179
+ else
180
+ return nil
181
+ end
182
+
183
+ table = getTableByRank(rank, tables)
184
+
185
+ number = is_choice ? dice_value.to_i : @randomizer.roll_once(6)
186
+ dice_str = number.to_s
187
+ number += modify
188
+
189
+ adjustedNumber = getAdjustNumber(number, table)
190
+
191
+ result = get_table_by_number(adjustedNumber, table)
192
+
193
+ text = "#{tableName}(#{number}[#{dice_str}]):#{result}"
194
+
195
+ return text
196
+ end
197
+
198
+ def getPhysicalConsumptionResultTables()
199
+ tableName = "체력 소모표"
200
+ tables = [[
201
+ [0, '소모없음'],
202
+ [1, '[피로:5]를 받는다'],
203
+ [2, '[피로:8]을 받는다'],
204
+ [3, '[피로:10]을 받는다'],
205
+ [4, '[피로:13]을 받는다'],
206
+ [5, '[피로:15]를 받는다'],
207
+ [6, '[피로:18]을 받는다'],
208
+ [7, '[피로:20]을 받는다'],
209
+ ],
210
+ [
211
+ [0, '소모없음'],
212
+ [1, '[피로:10]을 받는다'],
213
+ [2, '[피로:15]를 받는다'],
214
+ [3, '[피로:20]을 받는다'],
215
+ [4, '[피로:25]를 받는다'],
216
+ [5, '[피로:30]을 받는다'],
217
+ [6, '[피로:35]를 받는다'],
218
+ [7, '[피로:40]을 받는다'],
219
+ ],]
220
+
221
+ return tableName, tables
222
+ end
223
+
224
+ def getEnergyConsumptionResultTables()
225
+ tableName = "기력 소모표"
226
+ tables = [[
227
+ [0, '소모없음'],
228
+ [1, '【인과력】을 1점 잃는다'],
229
+ [2, '【인과력】을 1점 잃는다'],
230
+ [3, '【인과력】을 1점 잃는다'],
231
+ [4, '【인과력】을 1점 잃는다'],
232
+ [5, '【인과력】을 2점 잃는다'],
233
+ [6, '【인과력】을 2점 잃는다'],
234
+ [7, '【인과력】을 2점 잃는다'],
235
+ ],
236
+ [
237
+ [0, '소모없음'],
238
+ [1, '【인과력】을 1점 잃는다'],
239
+ [2, '【인과력】을 1점 잃는다'],
240
+ [3, '【인과력】을 1점 잃는다'],
241
+ [4, '【인과력】을 2점 잃는다'],
242
+ [5, '【인과력】을 2점 잃는다'],
243
+ [6, '【인과력】을 2점 잃는다'],
244
+ [7, '【인과력】을 3점 잃는다'],
245
+ ],]
246
+
247
+ return tableName, tables
248
+ end
249
+
250
+ def getGoodsConsumptionResultTables()
251
+ tableName = "물품 소모표"
252
+ tables = [[
253
+ [0, '소모없음'],
254
+ [1, '[소모품] 아이템을 1개 잃는다.'],
255
+ [2, '[소모품] 아이템을 1개 잃는다.'],
256
+ [3, '[소모품] 아이템을 1개 잃는다.'],
257
+ [4, '[소모품] 아이템을 2개 잃는다.'],
258
+ [5, '[소모품] 아이템을 2개 잃는다.'],
259
+ [6, '[소모품] 아이템을 2개 잃는다.'],
260
+ [7, '[소모품] 아이템을 2개 잃는다.'],
261
+ ],
262
+ [
263
+ [0, '소모없음'],
264
+ [1, '[소모품] 아이템을 1개 잃는다.'],
265
+ [2, '[소모품] 아이템을 1개 잃는다.'],
266
+ [3, '[소모품] 아이템을 2개 잃는다.'],
267
+ [4, '[소모품] 아이템을 2개 잃는다.'],
268
+ [5, '[소모품] 아이템을 3개 잃는다.'],
269
+ [6, '[소모품] 아이템을 3개 잃는다.'],
270
+ [7, '[소모품] 아이템을 4개 잃는다.'],
271
+ ],]
272
+
273
+ return tableName, tables
274
+ end
275
+
276
+ def getCashConsumptionResultTables()
277
+ tableName = "금전 소모표"
278
+ tables = [[
279
+ [0, '소모없음'],
280
+ [1, '소지금 10G 잃는다.'],
281
+ [2, '소지금 15G 잃는다.'],
282
+ [3, '소지금 20G 잃는다.'],
283
+ [4, '소지금 25G 잃는다.'],
284
+ [5, '소지금 30G 잃는다.'],
285
+ [6, '소지금 35G 잃는다.'],
286
+ [7, '소지금 40G 잃는다.'],
287
+ ],
288
+ [
289
+ [0, '소모없음'],
290
+ [1, '소지금 25G 잃는다.'],
291
+ [2, '소지금 35G 잃는다.'],
292
+ [3, '소지금 50G 잃는다.'],
293
+ [4, '소지금 60G 잃는다.'],
294
+ [5, '소지금 75G 잃는다.'],
295
+ [6, '소지금 90G 잃는다.'],
296
+ [7, '소지금 100G 잃는다.'],
297
+ ],]
298
+
299
+ return tableName, tables
300
+ end
301
+
302
+ def getExplosionSpecialConsumptionResultTables
303
+ tableName = "특수 소모표 : 로데릭 연구소는 폭발했다!"
304
+ tables = [[
305
+ [0, '……하지만 아무 일도 일어나지 않았다!: 효과 없음'],
306
+ [1, '당신의 머리카락이 폭발했다! 멋진 아프로 헤어다: 시나리오가 끝날 때까지 [머리] 태그를 가진 장비는 장비 불가'],
307
+ [2, '예술은 폭발이다: 소지하고 있는 아이템 중 랜덤으로 정한 하나가 예술품이 되어 [환전] 아이템이 된다.'],
308
+ [3, '반응 기폭 장갑: 방어구 슬롯에 장비하고 있는 아이템이 쵸밤 아머가 된다. 다음에 당신이 【HP】 대미지를 받았을 때, 그 대미지를 무효로 하고 이 아이템을 잃는다.'],
309
+ [4, '산양 슬라임이 폭발적으로 증식한다: [소지품] 슬롯을 모두 산양 슬라임([거래 불가], 가격50)으로 채운다.'],
310
+ [5, '당신의 리얼이 폭발한다: 커넥션 하나를 시나리오가 끝날 때까지 잃는다.'],
311
+ [6, '공장이 폭발한다: [소모품] 태그를 가진 아이템을 구입할 수 없게 된다.'],
312
+ [7, '보스 에너미가 폭발한다: 시나리오는 클라이맥스를 맞이하지 않고 종료된다. 수고하셨습니다.'],
313
+ ]]
314
+ return tableName, tables
315
+ end
316
+
317
+ def getCurseSpecialConsumptionResultTables
318
+ tableName = "특수 소모표: 알브의 저주다!"
319
+ tables = [[
320
+ [0, '「축복해주지!」 축복을 받는다: 당신의 【인과력】+1'],
321
+ [1, '공복의 저주: 즉시 식량 아이템 하나를 먹는다. 배가 고프니 엄청 맛있어!'],
322
+ [2, '무직의 저주: 서브 직업이 강제로〈니트〉로 변경된다.'],
323
+ [3, '종족 변경의 저주: 랜덤으로 다이스를 굴려 다른 종족으로 변한다. 종족특기를 사용할 수 없게 된다.'],
324
+ [4, '배리어 프리의 저주: [경감], [장벽]상태가 될 수 없게 된다.'],
325
+ [5, '집중력을 흐트리는 속삭임의 저주:자세가 무너져 [태세] 태그를 가진 특기를 사용할 수 없게 된다.'],
326
+ [6, '맹목의 저주: 당신이 소지한 커넥션 중 랜덤으로 선택한 관계 하나가 「열애」로 변한다.'],
327
+ [7, '의욕이 사라지는 저주: 아~ 진짜 의욕이 안 나네. 아무 것도 하기 싫어.【인과력】 사용 불가.'],
328
+ ]]
329
+ return tableName, tables
330
+ end
331
+
332
+ def getTableByRank(rank, tables)
333
+ index = (rank - 1) / 5
334
+
335
+ index = [0, index].max
336
+ index = [index, (tables.size - 1)].min
337
+
338
+ return tables[index]
339
+ end
340
+
341
+ def getAdjustNumber(number, table)
342
+ number = getAdjustNumberMin(number, table)
343
+ number = getAdjustNumberMax(number, table)
344
+ return number
345
+ end
346
+
347
+ # 최소치의 조정(값이 너무 작은경우 표의 최소)
348
+ def getAdjustNumberMin(number, table)
349
+ value = getTableMinimum(table)
350
+ return [number, value].max
351
+ end
352
+
353
+ def getTableMinimum(table)
354
+ table.first.first
355
+ end
356
+
357
+ # 최대치의 조정(값이 너무 큰 경우 표의 최대)
358
+ def getAdjustNumberMax(number, table)
359
+ value = table.last.first
360
+ return [number, value].min
361
+ end
362
+
363
+ # 재보표
364
+ def getTresureDiceCommandResult(command)
365
+ return nil unless (m = /(C|M|I|H|G)TRS(\d*)([\+\-\d]*)(\$)?/.match(command))
366
+
367
+ type = m[1]
368
+ rank = m[2].to_i
369
+ is_choice = (m[2].empty? || !m[4].nil?)
370
+ modifyText = m[3]
371
+ modify = getValue(modifyText, 0)
372
+ is_prize = (m[4] == "$")
373
+ dice_value = nil
374
+ dice_value = '7' if is_prize
375
+ is_rank_enable = (!is_choice || is_prize)
376
+
377
+ tableName, table =
378
+ case type
379
+ when "C"
380
+ getCashTresureResultTable
381
+ when "M"
382
+ getMagicTresureResultTable
383
+ when "I"
384
+ getItemTresureResultTable
385
+ when "H"
386
+ getHeroineTresureResultTable
387
+ when "G"
388
+ getGoblinTresureResultTable
389
+ end
390
+
391
+ return nil if table.nil?
392
+
393
+ number, dice_str, =
394
+ if is_choice
395
+ [dice_value.to_i, dice_value]
396
+ else
397
+ dice_list = @randomizer.roll_barabara(2, 6)
398
+ [dice_list.sum, dice_list.join(",")]
399
+ end
400
+
401
+ number += (rank * (is_rank_enable ? 5 : 0)) + modify
402
+
403
+ return command if is_choice && (number < getTableMinimum(table))
404
+
405
+ number = [getAdjustNumberMin(number, table), 87].min
406
+
407
+ result =
408
+ if type == "H"
409
+ getHiroineTresureResultString(table, number)
410
+ else
411
+ getOtherTresureResultString(table, number)
412
+ end
413
+
414
+ return "#{tableName}(#{number}#{dice_str ? '[' + dice_str + ']' : ''}):#{result}"
415
+ end
416
+
417
+ def getHiroineTresureResultString(table, number)
418
+ table_max_number = table.map(&:first).max
419
+
420
+ result =
421
+ if number <= table_max_number
422
+ get_table_by_number(number, table)
423
+ else
424
+ "※ #{table_max_number + 1}이후는 미정입니다 ※"
425
+ end
426
+
427
+ return result
428
+ end
429
+
430
+ def getOtherTresureResultString(table, number)
431
+ result =
432
+ case number
433
+ when 63..72
434
+ get_table_by_number(number - 10, table) + '&80G'
435
+ when 73..82
436
+ get_table_by_number(number - 20, table) + '&160G'
437
+ when 83..87
438
+ get_table_by_number(number - 30, table) + '&260G'
439
+ else
440
+ get_table_by_number(number, table)
441
+ end
442
+
443
+ return result
444
+ end
445
+
446
+ def getCashTresureResultTable
447
+ tableName = "금전 재보표"
448
+ table = [
449
+ [7, '39G'],
450
+ [8, '40G'],
451
+ [9, '42G'],
452
+ [10, '43G'],
453
+ [11, '45G'],
454
+ [12, '46G'],
455
+ [13, '48G'],
456
+ [14, '50G'],
457
+ [15, '52G'],
458
+ [16, '54G'],
459
+ [17, '57G'],
460
+ [18, '59G'],
461
+ [19, '61G'],
462
+ [20, '64G'],
463
+ [21, '67G'],
464
+ [22, '70G'],
465
+ [23, '72G'],
466
+ [24, '75G'],
467
+ [25, '79G'],
468
+ [26, '82G'],
469
+ [27, '85G'],
470
+ [28, '89G'],
471
+ [29, '92G'],
472
+ [30, '96G'],
473
+ [31, '100G'],
474
+ [32, '104G'],
475
+ [33, '108G'],
476
+ [34, '112G'],
477
+ [35, '117G'],
478
+ [36, '121G'],
479
+ [37, '126G'],
480
+ [38, '130G'],
481
+ [39, '135G'],
482
+ [40, '140G'],
483
+ [41, '145G'],
484
+ [42, '150G'],
485
+ [43, '155G'],
486
+ [44, '161G'],
487
+ [45, '166G'],
488
+ [46, '172G'],
489
+ [47, '178G'],
490
+ [48, '183G'],
491
+ [49, '189G'],
492
+ [50, '195G'],
493
+ [51, '201G'],
494
+ [52, '208G'],
495
+ [53, '214G'],
496
+ [54, '221G'],
497
+ [55, '227G'],
498
+ [56, '234G'],
499
+ [57, '241G'],
500
+ [58, '248G'],
501
+ [59, '255G'],
502
+ [60, '262G'],
503
+ [61, '269G'],
504
+ [62, '277G'],
505
+ ]
506
+
507
+ return tableName, table
508
+ end
509
+
510
+ def getMagicTresureResultTable
511
+ tableName = "마법소재 재물표"
512
+ table = [
513
+ [7, '마촉매2[마촉매2](20G)x2'],
514
+ [8, '마촉매2[마촉매2](20G)x2'],
515
+ [9, '마촉매1[마촉매1](15G)x3'],
516
+ [10, '마촉매1[마촉매1](15G)x3'],
517
+ [11, '마촉매1[마촉매1](15G)x3'],
518
+ [12, '코발트조각[코어소재](30G)&광석 샘플[환전](15G)'],
519
+ [13, '신록의 떡잎[코어소재](30G)&조그만 꽃씨[환전](20G)'],
520
+ [14, '생명의 잎[코어소재](40G)&강인한 넝쿨[환전](10G)'],
521
+ [15, '날카로운 송곳니[코어소재](40G)&잘 길든 나이프[환전](10G)'],
522
+ [16, '마촉매3[마촉매3](25G)x2'],
523
+ [17, '오래된 해골[코어소재](40G)&검은 시집[환전](15G)'],
524
+ [18, '흑수련꽃잎[코어소재](40G)&물곰방대[환전](20G)'],
525
+ [19, '순백색깃털[코어소재](40G)&조그만 고글[환전](20G)'],
526
+ [20, '진홍색 발톱[코어소재](50G)&조그만 거울[환전](15G)'],
527
+ [21, '적열의 작은 발톱[코어소재](50G)&세공 화로[환전](20G)'],
528
+ [22, '자성의 작은덩쿨[코어소재](50G)&그을린 용가죽[환전](20G)'],
529
+ [23, '유성 조각[코어소재](50G)&소박한 반지[환전](10G)x2'],
530
+ [24, '성스러운 섬유[코어소재](50G)&흠짓 난 메달[환전](25G)'],
531
+ [25, '부러진 축[코어소재](60G)&잡동산이 무더기[환전](5G)x4'],
532
+ [26, '거인의 머리카락[코어소재](50G)&조그만 빗[환전](20G)'],
533
+ [27, '정밀한 톱니바퀴[코어소재](60G)&공구강 파편[환전](25G)'],
534
+ [28, '뾰족한 발톱[코어소재](60G)&자수 장식띠[환전](30G)'],
535
+ [29, '촉매 플라스크[코어소재](60G)&작은 초상화[환전](30G)'],
536
+ [30, '액화마정[코어소재](60G)&정밀한 인형[환전](35G)'],
537
+ [31, '마촉매5[코어소재](40G)&마촉매4[마촉매4](30G)x2'],
538
+ [32, '부드러운 돌[코어소재](80G)&소형증류기[환전](20G)'],
539
+ [33, '수수께끼의 모피[코어소재](80G)&기묘한 두개골[환전](30G)'],
540
+ [34, '별똥별 은사[코어소재](80G)&주석 도금 별자리판[환전](30G)'],
541
+ [35, '마촉매5[마촉매5](40G)x3'],
542
+ [36, '소형연성진[코어소재](100G)&기괴한 오브제[환전](20G)'],
543
+ [37, '마촉매6[마촉매6](50G)&마촉매5[마촉매5](40G)x2'],
544
+ [38, '주문의 씨앗[코어소재](100G)&부서진 보석[환전](30G)'],
545
+ [39, '은제원반[코어소재](100G)&순백색 코사주[환전](30G)'],
546
+ [40, '잠자는 씨앗[코어소재](100G)&정원사의 장식끈[환전](40G)'],
547
+ [41, '물엿색 점액[코어소재](1210G)&극채색 입자[환전](5G)x5'],
548
+ [42, '마촉매6[마촉매6](50G)x3'],
549
+ [43, '납색갑각[코어소재](120G)&향긋한 꽃봉오리[환전](10G)x4'],
550
+ [44, '마촉매7[마촉매7](60G)&마촉매6[마촉매6](50G)x2'],
551
+ [45, '커다란 마력결정[코어소재](120G)&요정의 낙서[환전](40G)'],
552
+ [46, '권사의 백(魄)조각[코어소재](140G)&백지 두루마리[환전](40G)'],
553
+ [47, '마촉매7[마촉매7](60G)x3'],
554
+ [48, '푸른광석[코어소재](140G)&천연 유리덩어리[환전](25G)x2'],
555
+ [49, '거대한 날개깃[코어소재](140G)&두꺼운 알껍질[환전](50G)'],
556
+ [50, '마촉매8[마촉매8](70G)x2&마촉매7[마촉매7](60G)'],
557
+ [51, '끊임 없는 불씨[코어소재](180G)&漆黒のスス[환전](20G)'],
558
+ [52, '마촉매8[마촉매8](70G)x3'],
559
+ [53, '마도 정제[코어소재](180G)&つくりかけの錠前[환전](10G)x3'],
560
+ [54, '일곱색깔 투명나사[코어소재](180G)&열리지 않는 세공상자[환전](40G)'],
561
+ [55, '편속성 마법결정[코어소재](220G)&보고서 다발[환전](10G)'],
562
+ [56, '마촉매9[마촉매9](90G)&마촉매8[마촉매8](70G)x2'],
563
+ [57, '마촉매9[마촉매9](90G)&마촉매8[마촉매8](70G)x2'],
564
+ [58, '화려한 깃털장식[코어소재](220G)&공상동물 도감[환전](30G)'],
565
+ [59, '모래장미[코어소재](220G)&바늘 같은 수정[환전](10G)x5'],
566
+ [60, '마촉매9[마촉매9](90G)x3'],
567
+ [61, '튼튼한 위장[코어소재](220G)&기묘한 표본[환전](50G)'],
568
+ [62, '마촉매10[마촉매10](110G)&마촉매9[마촉매9](90G)x2'],
569
+ ]
570
+
571
+ return tableName, table
572
+ end
573
+
574
+ def getItemTresureResultTable
575
+ tableName = "환전아이템 재물표"
576
+ table = [
577
+ [7, '그림이 들어간 머그컵[환전](40G)'],
578
+ [8, '목재 기사상[환전](40G)'],
579
+ [9, '조그만 풍경화[환전](50G)'],
580
+ [10, '기묘한 초상화[환전](50G)'],
581
+ [11, '무도회 가면[환전](50G)'],
582
+ [12, '주석 식기 세트[환전](50G)'],
583
+ [13, '낡은 시집[환전](50G)'],
584
+ [14, '화려한 자수 손수건[환전](50G)'],
585
+ [15, '큰 도자기 접시[환전](60G)'],
586
+ [16, '그림 두루마리[환전](60G)'],
587
+ [17, '도자기 수반[환전](60G)'],
588
+ [18, '세공 귀걸이[환전](60G)'],
589
+ [19, '숙녀의 초상화[환전](70G)'],
590
+ [20, '조그만 보석상자[환전](70G)'],
591
+ [21, '놋쇠 촛대[환전](70G)'],
592
+ [22, '귀족의 오래된 일기[환전](70G)'],
593
+ [23, '기사의 초상화[환전](80G)'],
594
+ [24, '옷칠 나막신[환전](80G)'],
595
+ [25, '정밀한 게임 보드[환전](80G)'],
596
+ [26, '정밀한 정물화[환전](90G)'],
597
+ [27, '떡갈나무 의자[환전](90G)'],
598
+ [28, '오래된 비스크 돌(러시아인형)[환전](90G)'],
599
+ [29, '현란한 가면[환전](100G)'],
600
+ [30, '토끼 봉제인형[환전](100G)'],
601
+ [31, '놋쇠 몬스터상[환전](100G)'],
602
+ [32, '지방 역사서[환전](110G)'],
603
+ [33, '무도회 장갑[환전](110G)'],
604
+ [34, '하이힐[환전](120G)'],
605
+ [35, '동화책[환전](120G)'],
606
+ [36, '소녀의 초상화[환전](130G)'],
607
+ [37, '작은 목각인형[환전](130G)'],
608
+ [38, '등나무 의자[환전](130G)'],
609
+ [39, '개와 고양이 꼭두각시 인형[환전](140G)'],
610
+ [40, '족자[환전](G140)'],
611
+ [41, '곰 봉제인형[환전](150G)'],
612
+ [42, '고양이 변장탈[환전](150G)'],
613
+ [43, '학술서[환전](160G)'],
614
+ [44, '매 박제[환전](170G)'],
615
+ [45, '대리석 현자상[환전](170G)'],
616
+ [46, '자수가 들어간 쿠션[환전](180G)'],
617
+ [47, '개 변장 탈[환전](180G)'],
618
+ [48, '대형 떡갈나무 테이블[환전](190G)'],
619
+ [49, '조각 반지[환전](190G)'],
620
+ [50, '화조화 족자[환전](200G)'],
621
+ [51, '최상급 모피[환전](210G)'],
622
+ [52, '질 좋은 백분[환전](210G)'],
623
+ [53, '자기 찻잔[환전](220G)'],
624
+ [54, '간소한 티아라[환전](230G)'],
625
+ [55, '조각 귀걸이[환전](230G)'],
626
+ [56, '화려한 목걸이[환전](240G)'],
627
+ [57, '질 좋은 향수[환전](250G)'],
628
+ [58, '산수화 족자[환전](250G)'],
629
+ [59, '섬세한 드레스/예복[환전](260G)'],
630
+ [60, '도자기 그림접시[환전](270G)'],
631
+ [61, '여우 봉제인형[환전](270G)'],
632
+ [62, '오래된 역사서[환전](280G)'],
633
+ ]
634
+
635
+ return tableName, table
636
+ end
637
+
638
+ def getHeroineTresureResultTable
639
+ tableName = "히로인 재보표"
640
+ table = [
641
+ [7, '쓰러져 있는 초라한 말라깽이의 유녀'], # 라스트오더
642
+ [8, '돈을 밝히는 경단머리인 차이나 아가씨'],
643
+ [9, '응석부리고고 캐미솔을 어깨에 한 스웨터의 요술사'],
644
+ [10, '작은 등으로 모두를 지키는 장면의 청바지를 입은 무투가'],
645
+ [11, '오징어 모자를 쓴 도짓코 침략자'], # 이카무스메
646
+ [12, '지나치게 긍정적인 자칭 명탐정씨'],
647
+ [13, '중요한 곳에서 실수하는 부스스한 포니테일의 클레릭'],
648
+ [14, '계란밥 좋아하는 빈유의 칸나기'],
649
+ [15, '보석을 너무 좋아하는 억척스런 큰 리본의 이도류 세검사'],
650
+ [16, '오크에게서 간신히 도망쳐온 검의 처녀'], # 큿 코로
651
+ [17, '당신을 맹목적으로 찬미하는 자칭 여동생'],
652
+ [18, '어필을 하지만 인식되지 않는 칸나기'], # 금서목록 히메가미아이사
653
+ [19, '밝고 긍정적인 분홍색 리본의 소녀'], # 카나메 마도카(?)
654
+ [20, '마법을 사용할수 없는 가슴이 작은게 컴플렉스인 마녀'], # 루이즈
655
+ [21, '식욕에 일체 주저함이 없는 포동포동한 가슴의 아이돌'], # 미무라 카나코
656
+ [22, '눈물점이 매혹의 저주인 누님계의 스워시버클러 '], # FATE 시리즈 랜서(4차)TS?!?!
657
+ [23, '집착심이 강한 젊게 차려입은 노처녀 신화생무'], # 알퀘이드
658
+ [24, '시가를 사랑하는 헤이안 히키코모리 공주'], # NEET히메
659
+ [25, '병약하지만 프라이드있는 몰락귀족 아가씨'],
660
+ [26, '활기가득! 왜소한 낭아족 야생 소녀'], # 원령공주 산
661
+ [27, '빚더미에 올라 골판지 상자에서 사는 리코핀(로그호라 엑스트라 캐릭터)'], # 로그호라이즌 리코핀
662
+ [28, '귀국자녀인 무녀복 스타일의 마포소녀에YO!'], # 콩고
663
+ [29, '붙어 왔다갔다 하기만 할 수 있는 좀비 아가씨'], # 유클리우드 헬사이즈
664
+ [30, '꿈에 한결같은 녹색머리 초시공 아이돌 후보생'], # 란카 리
665
+ [31, '바로 발이 올라가는 뾰족한 이빨의 불량소녀'],
666
+ [32, '지치지 않는 방패'],
667
+ [33, '외환거래에 가진 돈을 전부 잃어 공허한 선배'], # 아이마이미의 포노카선배
668
+ [34, '팔뚝이 말랑말랑하지만 가계부를 쓰는 마왕'], # 마오유우 마왕
669
+ [35, '그 가슴 실로 풍만하였다는 기억상실의 여자 닌자'], # 닌자 슬레이어 유카노
670
+ [36, '잘 옷자락을 붙잡는 양갈래 땋은 머리의 빵집 소녀'],
671
+ [37, '「더럽다는건 칭찬이다!」라는 주관의 여자 암살자'], # 파이널 판타지 11
672
+ [38, '단추가 터질것 같고 울상인 길드 창구의 간판아가씨'],
673
+ [39, '뭐든지 오컬트에 아수라장이 되는 소녀'],
674
+ [40, '전투 때마다 많이 먹어지게 되는게 고민인 궁술소녀'],
675
+ [41, '사소한 것에 바로 얽메이게 되는 금발소녀'],
676
+ [42, '함께 돌아가는 것을 부끄럽게 생각하는 핑크머리 소꿉친구'],
677
+ [43, '배가 안좋아서 화장실에 상주하게 되는 엘프소녀'],
678
+ [44, '응시하면 얼굴이 빨개지는 앞머리 법의족 소녀'],
679
+ [45, '바로 파밧하고 겁먹는 소동물계 소녀'],
680
+ [46, '키가 크고 신사적인 여성 극단의 왕자님역의 기사녀'],
681
+ [47, '올곧은 성격의 근육이 있는 드워프 여자'],
682
+ [48, '항상 꿈에서 당신을 보는 포니테일의 소녀'],
683
+ [49, '선진선구, 심야에서 새벽까지 달리는 잠꾸러기 언니인 사무라이'],
684
+ [50, '뭐든지 깊이 파고들려 하는 방랑자 로리BBA'],
685
+ [51, '항상 밝은 남국의 갈색피부 소녀'],
686
+ [52, '당신의 첫사랑과 닮은 그녀'],
687
+ ]
688
+
689
+ return tableName, table
690
+ end
691
+
692
+ def getGoblinTresureResultTable
693
+ tableName = "고블린 재물표"
694
+ table = [
695
+ [7, '라이트메이스'],
696
+ [8, '백과사전'],
697
+ [9, '42G'],
698
+ [10, '오래된 해골[코어소재](40G)'],
699
+ [11, '가속의 두루마리(초급)'],
700
+ [12, '46G'],
701
+ [13, '48G'],
702
+ [14, '50G'],
703
+ [15, '유리구슬[환전](60G)'],
704
+ [16, '피로 얼룩진 칼[코어소재](50G)'],
705
+ [17, '찌그러진 금접시[환전](60G)'],
706
+ [18, '59G'],
707
+ [19, '모피로 된 깔개[환전](60G)'],
708
+ [20, '뾰족한 발톱[코어소재](60G)'],
709
+ [21, '67G'],
710
+ [22, '흠집투성이의 상아상[환전](70G)'],
711
+ [23, '72G'],
712
+ [24, '라이트 랜스[파손]'],
713
+ [25, '골제 목걸이[환전](80G)'],
714
+ [26, '사금이 섞인 돌[환전](80G)'],
715
+ [27, '85G'],
716
+ [28, '향나무 파편[환전](90G)'],
717
+ [29, '기묘한 가면[환전](90G)'],
718
+ [30, '96G'],
719
+ [31, '시미터'],
720
+ [32, '우든 라운드'],
721
+ [33, '바람 소리의 방울[코어소재](80G)&철제 전립[코어소재](30G)'],
722
+ [34, '112G'],
723
+ [35, '산양슬라임(라지사이즈)[환전](120G)'],
724
+ [36, '121G'],
725
+ [37, '고급 노송나무[환전](125G)'],
726
+ [38, '130G'],
727
+ [39, '크리스탈제 체스말[환전](135G)'],
728
+ [40, '140G'],
729
+ [41, '텐트(캠핑용)'],
730
+ [42, '이상한 환약[코어소재](30G)×2&100G'],
731
+ [43, '수수께끼의 모피[코어소재](80G)&원한의 고리[코어소재](80G)'],
732
+ [44, '의식용 뼈 검[환전](160G)'],
733
+ [45, '낡은 동전[환전](165G)'],
734
+ [46, '낭아봉'],
735
+ [47, '법리회로[코어소재](60G)&120G'],
736
+ [48, '커다란 마력회로[코어소재](120G)&60G'],
737
+ [49, '189G'],
738
+ [50, '고급 통술[환전](200G)'],
739
+ [51, '201G'],
740
+ [52, '백색 반지'],
741
+ [53, '비취 목걸이[환전](210G)'],
742
+ [54, '황금 고블린상[환전](220G)'],
743
+ [55, '샤벨'],
744
+ [56, '진철 검신[코어소재](120G)&120G'],
745
+ [57, '지저분한청자[환전](240G)'],
746
+ [58, '톤스톤의 모듬 꼬치구이×2'],
747
+ [59, '고블린 왕의 훈장[환전](255G)'],
748
+ [60, '실눈뜨기의 두루마리(중급)×2'],
749
+ [61, '269G'],
750
+ [62, '백랑의 모피[환전](280G)'],
751
+ ]
752
+
753
+ return tableName, table
754
+ end
755
+
756
+ # パーソナリティタグ表
757
+ def getPersonalityTagDiceCommandResult(command)
758
+ return nil unless command == "PTAG"
759
+
760
+ tableName = "퍼스널리티 태그"
761
+ table = [
762
+ '[조숙]',
763
+ '[호기심왕성]',
764
+ '[외로움쟁이]',
765
+ '[지극성실]',
766
+ '[먹보]',
767
+ '[개구쟁이]또는[말괄량이]',
768
+
769
+ '[사람좋음]',
770
+ '[정열]',
771
+ '[남챙겨주기]',
772
+ '[이지적]',
773
+ '[벽창호]',
774
+ '[형님 기질]또는[누님 기질]',
775
+
776
+ '[의리투철]',
777
+ '[변덕쟁이]',
778
+ '[장인기질]',
779
+ '[열혈한]',
780
+ '[노력가]',
781
+ '[남자밝힘]또는[여자밝힘]',
782
+
783
+ '[가정적]',
784
+ '[호승심]',
785
+ '[순진]',
786
+ '[무뚝뚝이]',
787
+ '[자비로움]',
788
+ '[마이페이스]',
789
+
790
+ '[낙천가]',
791
+ '[동료애]',
792
+ '[자긍심]',
793
+ '[사교적]',
794
+ '[냉정침착]',
795
+ '[로맨티스트]',
796
+
797
+ '[학구적]',
798
+ '[내향적]',
799
+ '[사서고생]',
800
+ '[허영심]',
801
+ '[용맹과감]',
802
+ '[미스테리어스]',
803
+ ]
804
+
805
+ result, number = get_table_by_d66(table)
806
+
807
+ text = "#{tableName}(#{number}):#{result}"
808
+ return text
809
+ end
810
+
811
+ # 交友表
812
+ def getFriendlyChartDiceCommandResult(command)
813
+ return nil unless command == "KOYU"
814
+
815
+ tableName = "교우표"
816
+ table = [
817
+ "교우대상에 대한 보호\n당신은 교우대상을 보호하고 싶다. 당신에게는 지켜줄수 있는 강함이 있다.",
818
+ "교우대상에 대한 친애\n당신은 교우대상에게 호감을 가지고 있다. 그 마음을 상대에게 전했을지 아닐지는 임의. ",
819
+ "교우대상에 대한 의형제\n당신은 교우대상과 형제나 다름없는 사이다. 물론 피는 이어지지 않았지만 그런것은 사소한 일이다.",
820
+ "교우대상의 영웅\n당신은 교우대상에게서 영웅시되고 있다. 설령 당신이 부정하더라도 상관 없다.",
821
+ "교우대상에 대한 존경\n당신은 교우대상을 존경한다. 그의 기술, 강인한 마음. 그것이 무엇이든 그에대한 경의는 변함이 없다.",
822
+ "교우대상의 파트너\n당신은 교우대상을 파트너라고 생각한다. 그라면 자신과 함께 가 줄 것이다.",
823
+
824
+ "교우대상에 대한 보호\n당신은 교우대상을 보호하고 싶다. 당신에게는 지켜줄수 있는 강함이 있다.",
825
+ "교우대상에 대한 친애\n당신은 교우대상에게 호감을 가지고 있다. 그 마음을 상대에게 전했을지 아닐지는 임의. ",
826
+ "교우대상에 대한 의형제\n당신은 교우대상과 형제나 다름없는 사이다. 물론 피는 이어지지 않았지만 그런것은 사소한 일이다.",
827
+ "교우대상의 영웅\n당신은 교우대상에게서 영웅시되고 있다. 설령 당신이 부정하더라도 상관 없다.",
828
+ "교우대상에 대한 존경\n당신은 교우대상을 존경한다. 그의 기술, 강인한 마음. 그것이 무엇이든 그에대한 경의는 변함이 없다.",
829
+ "교우대상의 파트너\n당신은 교우대상을 파트너라고 생각한다. 그라면 자신과 함께 가 줄 것이다.",
830
+
831
+ "교우대상의 은혜\n당신은 교우대상에게 큰 은혜를 입었다.",
832
+ "교우대상의 라이벌\n당신은 교우대상을 라이벌이라고 생각한다. 이는 일반적인 감정일 수도 있고, 서로 절차탁마 하는 관계일 수도 있다.",
833
+ "교우대상에 대한 흥미\n당신은 교우대상에게 흥미를 품고 있다. 그를 보는것이 재미있어서 그의 행동을 지켜보고 싶다.",
834
+ "교우대상에 대한 우정\n당신은 교우대상을 벗이라고 생각한다. 언제 어디서나 그 마음은 변하지 않을 것이다.",
835
+ "교우대상의 동지\n당신은 교우대상과 뜻을 함께 한다. 언제나 어디서나 그 마음은 변하지 않을 것이다.",
836
+ "교우대상에 대한 이해\n당신은 교우대상을 이해하고 싶다. 그는 당신과는 다른 새로운 관점을 보여준다.",
837
+
838
+ "교우대상의 은혜\n당신은 교우대상에게 큰 은혜를 입었다.",
839
+ "교우대상의 라이벌\n당신은 교우대상을 라이벌이라고 생각한다. 이는 일반적인 감정일 수도 있고, 서로 절차탁마 하는 관계일 수도 있다.",
840
+ "교우대상에 대한 흥미\n당신은 교우대상에게 흥미를 품고 있다. 그를 보는것이 재미있어서 그의 행동을 지켜보고 싶다.",
841
+ "교우대상에 대한 우정\n당신은 교우대상을 벗이라고 생각한다. 언제 어디서나 그 마음은 변하지 않을 것이다.",
842
+ "교우대상의 동지\n당신은 교우대상과 뜻을 함께 한다. 언제나 어디서나 그 마음은 변하지 않을 것이다.",
843
+ "교우대상에 대한 이해\n당신은 교우대상을 이해하고 싶다. 그는 당신과는 다른 새로운 관점을 보여준다.",
844
+
845
+ "교우대상에 대한 진력\n당신은 교우대상을 힘껏 돕고 싶다. 그것은 그의 인품 때문일 수도, 당신의 집착 때문일 수도 있다.",
846
+ "교우대상과의 사제관계\n당신은 교우대상과 사제관계를 맺었다. 어느쪽이라도 상관은 없지만 많은 것을 가르치거나 배울 수 있을 것이다.",
847
+ "교우대상과의 고용관계\n당신은 교우대상과 고용관계에 있다. 당신과 그는 ",
848
+ "교우대상의 이웃\n당신은 교우대상의 이웃이다. 매일 아침 인사를 나누는 정도일 수도 있고, 함께 저녁을 먹는 사이일 수도 있다.",
849
+ "교우대상과의 거래\n당신은 교우대상과 장사를 한다. 서로에게 이익이 있는 좋은 거래를 할 수 있는 상대다.",
850
+ "교우대상의 가족\n당신은 교우대상과 함께 살고 있다. 같은집에 누군가 있으면 쓸쓸하지 않을 것이다.",
851
+
852
+ "교우대상에 대한 진력\n당신은 교우대상을 힘껏 돕고 싶다. 그것은 그의 인품 때문일 수도, 당신의 집착 때문일 수도 있다.",
853
+ "교우대상과의 사제관계\n당신은 교우대상과 사제관계를 맺었다. 어느쪽이라도 상관은 없지만 많은 것을 가르치거나 배울 수 있을 것이다.",
854
+ "교우대상과의 고용관계\n당신은 교우대상과 고용관계에 있다. 당신과 그는 ",
855
+ "교우대상의 이웃\n당신은 교우대상의 이웃이다. 매일 아침 인사를 나누는 정도일 수도 있고, 함께 저녁을 먹는 사이일 수도 있다.",
856
+ "교우대상과의 거래\n당신은 교우대상과 장사를 한다. 서로에게 이익이 있는 좋은 거래를 할 수 있는 상대다.",
857
+ "교우대상의 가족\n당신은 교우대상과 함께 살고 있다. 같은집에 누군가 있으면 쓸쓸하지 않을 것이다.",
858
+ ]
859
+
860
+ result, number = get_table_by_d66(table)
861
+
862
+ text = "#{tableName}([#{number}]) > #{result}"
863
+ return text
864
+ end
865
+
866
+ # プレフィックスドマジックアイテム表
867
+ def getPrefixedMagickItemDiceCommandResult(command)
868
+ return nil unless command =~ /MGR([1-3])/
869
+
870
+ rank = Regexp.last_match(1).to_i
871
+
872
+ table_1 = [
873
+ "접두어:기합의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +1한다.",
874
+ "접두어:비술의 해당태그:[지팡이][마석]\n아이 템효과:이 아이템의【마력】에 +1한다.",
875
+ "접두어:일격의 해당태그:[백병공격]가능한 무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [백병공격]의 대미지 굴림에 +7. 시나리오 당 1회 사용 가능.",
876
+ "접두어:저격의 해당태그:[활][투척]\n아이템 효과:〔기동:행동〕이 무기에 의한 [사격공격]과 동시에 사용한다. 공격의 사정거리에 +2Sq. 시나리오당 1회사용가능",
877
+ "접두어:필살의 해당태그:모든 무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한[무기공격]의 [명중판정] 다이스에 6이 하나 이상 있다면 판정을 크리티컬로 간주한다. 시나리오당 1회 사용 가능.",
878
+ "접두어:화염의 해당태그:모든 무기, [악기]\n아이템 효과:아이템에 [화염]태그를 추가한다.(이 효과를 선택할 때 태그를[냉기][전격][광휘][사독][정신] 중 하나로 바뀌어도 좋다. 그 경우「냉기의」「전격의」와 같이 변경할 것)",
879
+
880
+ "접두어:기합의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +1한다.",
881
+ "접두어:비술의 해당태그:[지팡이][마석]\n아이 템효과:이 아이템의【마력】에 +1한다.",
882
+ "접두어:일격의 해당태그:[백병공격]가능한 무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [백병공격]의 대미지 굴림에 +7. 시나리오 당 1회 사용 가능.",
883
+ "접두어:저격의 해당태그:[활][투척]\n아이템 효과:〔기동:행동〕이 무기에 의한 [사격공격]과 동시에 사용한다. 공격의 사정거리에 +2Sq. 시나리오당 1회사용가능",
884
+ "접두어:필살의 해당태그:모든 무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한[무기공격]의 [명중판정] 다이스에 6이 하나 이상 있다면 판정을 크리티컬로 간주한다. 시나리오당 1회 사용 가능.",
885
+ "접두어:화염의 해당태그:모든 무기, [악기]\n아이템 효과:아이템에 [화염]태그를 추가한다.(이 효과를 선택할 때 태그를[냉기][전격][광휘][사독][정신] 중 하나로 바뀌어도 좋다. 그 경우「냉기의」「전격의」와 같이 변경할 것)",
886
+
887
+ "접두어:화염술사의 해당태그:[지팡이][마석][다리]\n아이템 효과:〔기동:대미지 굴림〕당신이 행할 [화염]태그를 가진 대미지굴림에 +7, 시나리오당 1회 사용가능 (이 효과를 선택할 때에는 태그를 [냉기], [전격], [광휘], [사독], [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [빙술사의], [뇌술사의]와 같이 플레이 할것)",
888
+ "접두어:철신의 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리부터의 공격) :3]을 얻는다.",
889
+ "접두어:화살막이의 해당태그:[盾][中鎧][軽鎧]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리 이외로부터의 공격) :3]을 얻는다.",
890
+ "접두어:화염막이의 해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면 개시시에 [경감(화염):10]을 받는다.(이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘] [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도「얼음막이의」,「벼락막이의」와 같이 변경할 것)",
891
+ "접두어:근성의 해당태그:[중갑][머리]\n아이템 효과:〔기동:본문〕당신이 BS를 입은 직후에 사용한다. 직전에 입은 BS에서 하나를 선택해 해제한다. 시나리오당 1회 사용 가능",
892
+ "접두어:치유의 해당태그:[팔]\n아이템 효과:당신의【회복력】에 +2한다.",
893
+
894
+ "접두어:화염술사의 해당태그:[지팡이][마석][다리]\n아이템 효과:〔기동:대미지 굴림〕당신이 행할 [화염]태그를 가진 대미지굴림에 +7, 시나리오당 1회 사용가능 (이 효과를 선택할 때에는 태그를 [냉기], [전격], [광휘], [사독], [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [빙술사의], [뇌술사의]와 같이 플레이 할것)",
895
+ "접두어:철신의 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리부터의 공격) :3]을 얻는다.",
896
+ "접두어:화살막이의 해당태그:[盾][中鎧][軽鎧]\n아이템 효과:당신은 장면이 시작될 때[경감(지근거리 이외로부터의 공격) :3]을 얻는다.",
897
+ "접두어:화염막이의 해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면 개시시에 [경감(화염):10]을 받는다.(이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘] [정신] 중 하나로 바꾸어도 좋다. 그 경우 접두어도「얼음막이의」,「벼락막이의」와 같이 변경할 것)",
898
+ "접두어:근성의 해당태그:[중갑][머리]\n아이템 효과:〔기동:본문〕당신이 BS를 입은 직후에 사용한다. 직전에 입은 BS에서 하나를 선택해 해제한다. 시나리오당 1회 사용 가능",
899
+ "접두어:치유의 해당태그:[팔]\n아이템 효과:당신의【회복력】에 +2한다.",
900
+
901
+ "접두어:모래쥐의 해당태그:[다리][외투]\n아이템 효과:〔기동:클린업〕당신의【헤이트】에 ー2한다. 시나리오당1회 사용가능.",
902
+ "접두어:올뺴미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [암시]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.",
903
+ "접두어:곤들매기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [수생]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.",
904
+ "접두어:눈썰미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 드롭 아이템 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다. 시나리오당 1회 사용가능.",
905
+ "접두어:보물 찾기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다.. 시나리오당 1회 사용가능.",
906
+ "접두어:돌변의 해당태그:[가방]\n아이템 효과:〔기동:인스턴트〕당신은 곧바로《장비 변경》을 한다. 시나리오당 1회 사용가능.",
907
+
908
+ "접두어:모래쥐의 해당태그:[다리][외투]\n아이템 효과:〔기동:클린업〕당신의【헤이트】에 ー2한다. 시나리오당1회 사용가능.",
909
+ "접두어:올뺴미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [암시]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.",
910
+ "접두어:곤들매기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:인스턴트〕당신은 [수생]태그를 얻는다. 이 효과는 CS로 간주한다. 시나리오당 1회 사용가능.",
911
+ "접두어:눈썰미의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 드롭 아이템 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다. 시나리오당 1회 사용가능.",
912
+ "접두어:보물 찾기의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림을 한 직후에 사용해 해당 굴림을 다시 굴린다.. 시나리오당 1회 사용가능.",
913
+ "접두어:돌변의 해당태그:[가방]\n아이템 효과:〔기동:인스턴트〕당신은 곧바로《장비 변경》을 한다. 시나리오당 1회 사용가능.",
914
+ ]
915
+
916
+ table_2 = [
917
+ "접두어:분노의 해당태그:[양손]무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [무기공격]의 대미지 굴림에+[당신의【헤이트】]. 장면에 1회 사용가능.",
918
+ "접두어:연격의 해당태그:[한손]무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한 [무기공격]의 [명중판정]을 다시 굴린다. 장면에 1회 사용가능.",
919
+ "접두어:예리한 해당태그:[검][카타나][창]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D",
920
+ "접두어:치명타의 해당태그:[둔기/도끼][격투][채찍][지팡이]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D",
921
+ "접두어:마탄의 해당태그:[활][투척]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D",
922
+ "접두어:지력의 해당태그:모든무기, [마석][악기]\n아이템 효과:당신의 [마법공격], [특수공격]의 대미지 굴림에 +1D. 이 효과는 중첩되지 않는다.",
923
+
924
+ "접두어:분노의 해당태그:[양손]무기\n아이템 효과:〔기동:대미지굴림〕이 무기에 의한 [무기공격]의 대미지 굴림에+[당신의【헤이트】]. 장면에 1회 사용가능.",
925
+ "접두어:연격의 해당태그:[한손]무기\n아이템 효과:〔기동:판정 직후〕이 무기에 의한 [무기공격]의 [명중판정]을 다시 굴린다. 장면에 1회 사용가능.",
926
+ "접두어:예리한 해당태그:[검][카타나][창]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D",
927
+ "접두어:치명타의 해당태그:[둔기/도끼][격투][채찍][지팡이]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D",
928
+ "접두어:마탄의 해당태그:[활][투척]\n아이템 효과:이 무기에 의한 [무기공격]의 대미지 굴림에 +1D",
929
+ "접두어:지력의 해당태그:모든무기, [마석][악기]\n아이템 효과:당신의 [마법공격], [특수공격]의 대미지 굴림에 +1D. 이 효과는 중첩되지 않는다.",
930
+
931
+ "접두어:악귀퇴치의 해당태그:모든 무기\n아이템 효과:이 무기에 의한 [인간형]에 대한 [무기공격]의 대미지에 +10 (이효과를 선택할 때 태그를 [자연],[정령],[환수],[불사],[인조],[인간]중 하나로 바꾸어도 좋다. 그 경우 접두어도「정령퇴치의」 「환수퇴치의」와 같이 변경할 것)",
932
+ "접두어:견고한 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【물리방어력】에 +4",
933
+ "접두어:항마의 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【마법방어력】에 +4",
934
+ "접두어:방벽의 해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작될 때 [장벽:10]을 얻는다.",
935
+ "접두어:인내의 해당태그:[방패][머리]\n아이템 효과:〔기동:본문〕당신이 강제적인 이동을 받았을 때에 사용해 해당 거리를ー1Sq한다.",
936
+ "접두어:호법의 해당태그:[팔]\n아이템 효과:당신이 부여할 [장벽]의 강도에 +5.",
937
+
938
+ "접두어:악귀퇴치의 해당태그:모든 무기\n아이템 효과:이 무기에 의한 [인간형]에 대한 [무기공격]의 대미지에 +10 (이효과를 선택할 때 태그를 [자연],[정령],[환수],[불사],[인조],[인간]중 하나로 바꾸어도 좋다. 그 경우 접두어도「정령퇴치의」 「환수퇴치의」와 같이 변경할 것)",
939
+ "접두어:견고한 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【물리방어력】에 +4",
940
+ "접두어:항마의 해당태그:[중갑][경갑][연갑]\n아이템 효과:이 방어구의 【마법방어력】에 +4",
941
+ "접두어:방벽의 해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작될 때 [장벽:10]을 얻는다.",
942
+ "접두어:인내의 해당태그:[방패][머리]\n아이템 효과:〔기동:본문〕당신이 강제적인 이동을 받았을 때에 사용해 해당 거리를ー1Sq한다.",
943
+ "접두어:호법의 해당태그:[팔]\n아이템 효과:당신이 부여할 [장벽]의 강도에 +5.",
944
+
945
+ "접두어:맥동하는 해당태그:[팔]\n아이템 효과:당신이 부여하는 [재생]의 강도에+3.",
946
+ "접두어:질주하는 해당태그:[다리][외투]\n아이템 효과:〔기동:행동〕당신이 《런》, 《대시》를 사용했을 때에 사용해 이동거리를 +1Sq 한다. ",
947
+ "접두어:신속의 해당태그:[다리][외투]\n아이템 효과:이 아이템의 [행동수정]에 +3.",
948
+ "접두어:역경의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 [전투불능]이 된 직후 사용할 수 있다.당신은 【인과력】1점 얻는다. 장면에 1회사용 가능",
949
+ "접두어:숲지름 해당태그:[보조장비][악기][가방]\n아이템 효과:당신이 장면을 시작 될 때 [경감([천연]프롭, 기믹에서 오는 데미지): 15]를 얻는다.(이 효과를 선택할 때 태그를[마법], [기계] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [지옥지름], [함정지름]과 같이 변경할 것)",
950
+ "접두어:여행자의 해당태그:[가방]\n아이템 효과:이 아이템에 [소지품 슬롯] 4개를 추가한다.",
951
+
952
+ "접두어:맥동하는 해당태그:[팔]\n아이템 효과:당신이 부여하는 [재생]의 강도에+3.",
953
+ "접두어:질주하는 해당태그:[다리][외투]\n아이템 효과:〔기동:행동〕당신이 《런》, 《대시》를 사용했을 때에 사용해 이동거리를 +1Sq 한다. ",
954
+ "접두어:신속의 해당태그:[다리][외투]\n아이템 효과:이 아이템의 [행동수정]에 +3.",
955
+ "접두어:역경의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 [전투불능]이 된 직후 사용할 수 있다.당신은 【인과력】1점 얻는다. 장면에 1회사용 가능",
956
+ "접두어:숲지름 해당태그:[보조장비][악기][가방]\n아이템 효과:당신이 장면을 시작 될 때 [경감([천연]프롭, 기믹에서 오는 데미지): 15]를 얻는다.(이 효과를 선택할 때 태그를[마법], [기계] 중 하나로 바꾸어도 좋다. 그 경우 접두어도 [지옥지름], [함정지름]과 같이 변경할 것)",
957
+ "접두어:여행자의 해당태그:[가방]\n아이템 효과:이 아이템에 [소지품 슬롯] 4개를 추가한다.",
958
+ ]
959
+
960
+ table_3 = [
961
+ "접두어:기백의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +3한다.",
962
+ "접두어:신비의 해당태그:[지팡이][마석]\n아이템 효과:이 무기의【마력】에 +3한다.",
963
+ "접두어:원격의 해당태그:[활][트착]\n아이템 효과:이 무기의 사정거리에 +1Sq한다.",
964
+ "접두어:흡혈의 해당태그:[백병공격]가능한 무기\n아이템 효과:이 무기에의한[백병공격]으로 데미지를 입혔을 때【HP】는5점 회복된다.",
965
+ "접두어:충격의 해당태그:[한손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [멍함]을 입힌다.",
966
+ "접두어:노호의 해당태그:[양손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [위축]을 입힌다.",
967
+
968
+ "접두어:기백의 해당태그:모든 무기\n아이템 효과:이 무기의【공격력】에 +3한다.",
969
+ "접두어:신비의 해당태그:[지팡이][마석]\n아이템 효과:이 무기의【마력】에 +3한다.",
970
+ "접두어:원격의 해당태그:[활][트착]\n아이템 효과:이 무기의 사정거리에 +1Sq한다.",
971
+ "접두어:흡혈의 해당태그:[백병공격]가능한 무기\n아이템 효과:이 무기에의한[백병공격]으로 데미지를 입혔을 때【HP】는5점 회복된다.",
972
+ "접두어:충격의 해당태그:[한손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [멍함]을 입힌다.",
973
+ "접두어:노호의 해당태그:[양손]무기\n아이템 효과:이 무기에 의한《기본무기공격》으로 데미지를 입혔을 때 공격 대상에게 [위축]을 입힌다.",
974
+
975
+ "접두어:갑주비늘 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리로부터의 공격):10]을 얻는다.",
976
+ "접두어:화살반사 해당태그:[방패][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리 이외로부터의 공격) :10]을 얻는다.",
977
+ "접두어:내화의  해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(화염) :25]를 얻는다. (이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘], [정신]중 하나로 바꾸어도 좋다. 이경우 접두어도「내빙의」「내전의」와 같이 변경했어)",
978
+ "접두어:성채의  해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작 될 때 【장벽:20】을 얻는다.",
979
+ "접두어:정찰의  해당태그:[머리]\n아이템 효과:당신이 행할[정찰]태그를 가진 행동 및《이상탐지》판정에+1D.",
980
+ "접두어:쾌유의  해당태그:[머리]\n아이템 효과:당신의【회복력】에+5.",
981
+
982
+ "접두어:갑주비늘 해당태그:[방패][중갑][경갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리로부터의 공격:10]을 얻는다.",
983
+ "접두어:화살반사 해당태그:[방패][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(지근거리 이외로부터의 공격) :10]을 얻는다.",
984
+ "접두어:내화의  해당태그:[중갑][경갑][연갑]\n아이템 효과:당신은 장면이 시작 될 때 [경감(화염) :25]를 얻는다. (이 효과를 선택할 때 경감할 태그를 [냉기], [전격], [사독], [광휘], [정신]중 하나로 바꾸어도 좋다. 이경우 접두어도「내빙의」「내전의」와 같이 변경했어)",
985
+ "접두어:성채의  해당태그:[방패][머리]\n아이템 효과:당신은 장면이 시작 될 때 【장벽:20】을 얻는다.",
986
+ "접두어:정찰의  해당태그:[머리]\n아이템 효과:당신이 행할[정찰]태그를 가진 행동 및《이상탐지》판정에+1D.",
987
+ "접두어:쾌유의  해당태그:[머리]\n아이템 효과:당신의【회복력】에+5.",
988
+
989
+ "접두어:함정해제의 해당태그:[팔]\n아이템 효과:〔기동:판정 직전〕당신이 《프롭 해제》를 행할 때 사용하며그 판정은 크리티컬이 된다. 장면에1회 사용 가능",
990
+ "접두어:부동의  해당태그:[다리][외투]\n아이템 효과:당신은 [멍함],[경직]상태가 되어도 [저지능력]을 잃지 않는다.",
991
+ "접두어:그림자질주 해당태그:[다리][외투]\n아이템 효과:당신이 [은밀상태]일 때《런》을 해도 [은밀상태]는 해제되지 않는다.",
992
+ "접두어:심해의  해당태그:[보조장비][악기][가방]\n아이템 효과: 당신은 [암시],[수생]태그를 얻는다.",
993
+ "접두어:금전운의  해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림 또는 드롭 아이템 굴림을 한 직후에 사용하며 해당 굴림을 다시 굴린다. 장면에1회 사용할 수 있다.",
994
+ "접두어:함정회피의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:데미지 적용 직전〕당신에게 적용될 예정인 프롭 및[기믹]에 의한 데미지를 무효로 할 수 있다. 시나리오당1회 사용할 수 있다.",
995
+
996
+ "접두어:함정해제의 해당태그:[팔]\n아이템 효과:〔기동:판정 직전〕당신이 《프롭 해제》를 행할 때 사용하며그 판정은 크리티컬이 된다. 장면에1회 사용 가능",
997
+ "접두어:부동의  해당태그:[다리][외투]\n아이템 효과:당신은 [멍함],[경직]상태가 되어도 [저지능력]을 잃지 않는다.",
998
+ "접두어:그림자질주 해당태그:[다리][외투]\n아이템 효과:당신이 [은밀상태]일 때《런》을 해도 [은밀상태]는 해제되지 않는다.",
999
+ "접두어:심해의  해당태그:[보조장비][악기][가방]\n아이템 효과: 당신은 [암시],[수생]태그를 얻는다.",
1000
+ "접두어:금전운의  해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:본문〕당신이 재물표 굴림 또는 드롭 아이템 굴림을 한 직후에 사용하며 해당 굴림을 다시 굴린다. 장면에1회 사용할 수 있다.",
1001
+ "접두어:함정회피의 해당태그:[보조장비][악기][가방]\n아이템 효과:〔기동:데미지 적용 직전〕당신에게 적용될 예정인 프롭 및[기믹]에 의한 데미지를 무효로 할 수 있다. 시나리오당1회 사용할 수 있다.",
1002
+ ]
1003
+
1004
+ tableName = "프리픽스드 아이템 효과표"
1005
+ table = nil
1006
+
1007
+ case rank
1008
+ when 1
1009
+ tableName += "(매직 그레이드1)"
1010
+ table = table_1
1011
+ when 2
1012
+ tableName += "(매직 그레이드2)"
1013
+ table = table_2
1014
+ when 3
1015
+ tableName += "(매직그레이드3)"
1016
+ table = table_3
1017
+ end
1018
+
1019
+ result, number = get_table_by_d66(table)
1020
+
1021
+ text = "#{tableName}([#{number}]) > #{result}"
1022
+ return text
1023
+ end
1024
+
1025
+ # 공격 명중 장소 랜덤결정표
1026
+ def getHitLocationDiceCommandResult(command)
1027
+ return nil unless command == "HLOC"
1028
+
1029
+ tableName = "공격명중장소"
1030
+ table = [
1031
+ '이마',
1032
+ '뺨',
1033
+ '코',
1034
+ '턱',
1035
+ '뒷통수',
1036
+ '목',
1037
+
1038
+ '귀',
1039
+ '눈',
1040
+ '관자놀이',
1041
+ '팔',
1042
+ '팔꿈치',
1043
+ '손',
1044
+
1045
+ '손가락',
1046
+ '심장',
1047
+ '위',
1048
+ '폐',
1049
+ '갈비',
1050
+ '어깨',
1051
+
1052
+ '등',
1053
+ '옆구리',
1054
+ '허리',
1055
+ '아랫배',
1056
+ '허벅지',
1057
+ '목',
1058
+
1059
+ '장딴지',
1060
+ '아킬레스건',
1061
+ '발 뒤꿈치',
1062
+ '정강이',
1063
+ '새끼 발가락',
1064
+ '무릅',
1065
+
1066
+ '사회적 신용',
1067
+ '인간관계',
1068
+ '첫사랑의 추억',
1069
+ '완벽한 예측',
1070
+ '마음',
1071
+ '안경',
1072
+ ]
1073
+ result, number = get_table_by_d66(table)
1074
+ "#{tableName}(#{number}):#{result}"
1075
+ end
1076
+
1077
+ # PC명 랜덤 결정표
1078
+ def getPCNameDiceCommandResult(command)
1079
+ return nil unless command == "PCNM"
1080
+
1081
+ tableName = "PC名"
1082
+ table = [
1083
+ 'Kuraudo',
1084
+ 'Sefirosu',
1085
+ 'Kirito',
1086
+ 'Asuna',
1087
+ 'Leeroy Jenkins',
1088
+ 'Buront',
1089
+
1090
+ '의사양반',
1091
+ '거대도너츠',
1092
+ '이등병가민',
1093
+ '버섯대위',
1094
+ '∃@ㅏ이돌전도사E',
1095
+ '작업장',
1096
+
1097
+ '크로울리',
1098
+ '다이테스',
1099
+ '타츠야',
1100
+ '미유키',
1101
+ '슬레인',
1102
+ '타카본씨',
1103
+
1104
+ '흑의 연금술사',
1105
+ '†사랑의천사네코히메†',
1106
+ '데스★건',
1107
+ '卍칠흑의타천사卍',
1108
+ '광속의이명을가지고중력을자유자재로조종하는고귀한기사',
1109
+ '신세계†영걸살해자',
1110
+
1111
+ '로그호라',
1112
+ 'ㄱㄱㄱㄱ',
1113
+ '창고',
1114
+ '은행',
1115
+ '보관',
1116
+ '위탁',
1117
+
1118
+ '사스케',
1119
+ '라파엘로',
1120
+ '도나텔로',
1121
+ '미켈란젤로',
1122
+ '센다이',
1123
+ '후지키도',
1124
+ ]
1125
+
1126
+ result, number = get_table_by_d66(table)
1127
+
1128
+ return "#{tableName}(#{number}):#{result}"
1129
+ end
1130
+
1131
+ # ロデ研の新発明ランダム決定表
1132
+ def getInventionAttributeTextDiceCommandResult(command)
1133
+ return nil unless command =~ /IAT([ABMDLT]*)/
1134
+
1135
+ tableName = "로데릭 연구소의 새로운 발명"
1136
+
1137
+ table_indicate_string = Regexp.last_match(1) && Regexp.last_match(1) != '' ? Regexp.last_match(1) : 'MDLT'
1138
+ is_single = (table_indicate_string.length == 1)
1139
+
1140
+ result = []
1141
+ number = []
1142
+
1143
+ table_indicate_string.split(//).each do |char|
1144
+ dice_result = @randomizer.roll_once(6)
1145
+ number << dice_result.to_s
1146
+ result << case char
1147
+ when 'A', 'M'
1148
+ [
1149
+ '빛나고 돌며 소리가 울리는',
1150
+ '무언가를 자각한',
1151
+ '단단하고 강한',
1152
+ '굉장히 빠르거나 거친',
1153
+ '대량 생산이 가능한',
1154
+ '좋은 감촉의',
1155
+ ].map { |e| (is_single ? '특징A(장점):' : '') + e }
1156
+ when 'B', 'D'
1157
+ [
1158
+ '중독성 있는',
1159
+ '굉장히 무거운',
1160
+ '굉장히 냄새나는',
1161
+ '망가지기 쉬운',
1162
+ '설명할 것이 많은',
1163
+ '버려도 버려도 되돌아오는 ',
1164
+ ].map { |e| (is_single ? '특징B(단점):' : '') + e }
1165
+ when 'L'
1166
+ [
1167
+ '아름다운',
1168
+ '소박한',
1169
+ '풍류있는',
1170
+ '참신한',
1171
+ '형언할 수 없는',
1172
+ '목숨을 깍는 형태를 한',
1173
+ ].map { |e| (is_single ? '형용:' : '') + e }
1174
+ when 'T'
1175
+ [
1176
+ '무기',
1177
+ '방어구',
1178
+ '악세사리',
1179
+ '식량',
1180
+ '약품',
1181
+ '장난감',
1182
+ ].map { |e| (is_single ? '발명품의 종류:' : '') + e }
1183
+ end[dice_result - 1]
1184
+ end
1185
+
1186
+ return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}"
1187
+ end
1188
+
1189
+ # 아키바 거리에서 발생하는 문제 랜덤결정 표
1190
+ def getTroubleInAkibaStreetDiceCommandResult(command)
1191
+ return nil unless command == "TIAS"
1192
+
1193
+ tableName = "아키바 거리에서 발생하는 문제"
1194
+
1195
+ number = []
1196
+ result = []
1197
+
1198
+ [
1199
+ [
1200
+ '〈로그 호라이즌〉이',
1201
+ '〈초승달 동맹〉이',
1202
+ '〈D.D.D〉가',
1203
+ '〈흑검기사단〉이',
1204
+ '〈서풍여단〉이',
1205
+ '〈로데릭 상회〉가'
1206
+ ],
1207
+ [
1208
+ '길드 회관에서',
1209
+ '무위도식 골목에서',
1210
+ '거리 한가운데에서',
1211
+ '수풍관에서',
1212
+ '공중목욕탕에서',
1213
+ '하수구에서'
1214
+ ],
1215
+ [
1216
+ '불합리한',
1217
+ '겸손',
1218
+ '달콤한',
1219
+ '부자연스러운',
1220
+ '위험한',
1221
+ '머리 나쁜'
1222
+ ],
1223
+ [
1224
+ '싸움',
1225
+ '연애소식',
1226
+ '장난',
1227
+ '음모',
1228
+ '사고',
1229
+ '분실물'
1230
+ ]
1231
+ ].each do |table|
1232
+ dice_result = @randomizer.roll_once(6)
1233
+ number << dice_result.to_s
1234
+ result << table[dice_result - 1]
1235
+ end
1236
+
1237
+ return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}"
1238
+ end
1239
+
1240
+ # 버림받은 아이 랜덤결정표
1241
+ def getAbandonedChildDiceCommandResult(command)
1242
+ return nil unless command == "ABDC"
1243
+
1244
+ tableName = "버림받은 아이"
1245
+
1246
+ number = []
1247
+ result = []
1248
+
1249
+ [
1250
+ [
1251
+ '꽃의 이름',
1252
+ '별의 이름',
1253
+ '색깔 종류',
1254
+ '돌의 이름',
1255
+ '동물 이름',
1256
+ '번호'
1257
+ ].map { |e| '이름:' + e },
1258
+ [
1259
+ '폐 건물',
1260
+ '길가',
1261
+ '식객',
1262
+ '나무 위',
1263
+ '공원',
1264
+ '하수도'
1265
+ ].map { |e| '주거:' + e },
1266
+ [
1267
+ '무언가를 찾기',
1268
+ '요리',
1269
+ '노래',
1270
+ '장사',
1271
+ '손재주있는',
1272
+ '약삭빠른 행동'
1273
+ ].map { |e| '특기:' + e },
1274
+ [
1275
+ '깡마른',
1276
+ '키작은',
1277
+ '발육이 좋은',
1278
+ '키가 큰',
1279
+ '부드럽고 탄력있는',
1280
+ '근육질의'
1281
+ ].map { |e| '체형:' + e },
1282
+ [
1283
+ '과일',
1284
+ '고기',
1285
+ '신선한 야채',
1286
+ '생선',
1287
+ '과자',
1288
+ '벌레'
1289
+ ].map { |e| '좋아하는 음식:' + e },
1290
+ [
1291
+ '말이 서툰',
1292
+ '사투리',
1293
+ '일반적인 말투',
1294
+ '사극체',
1295
+ '3인칭',
1296
+ '귀국자녀'
1297
+ ].map { |e| '말투:' + e }
1298
+ ].each do |table|
1299
+ dice_result = @randomizer.roll_once(6)
1300
+ number << dice_result.to_s
1301
+ result << table[dice_result - 1]
1302
+ end
1303
+
1304
+ return "#{tableName}([#{number.join(',')}]):#{result.join(' ')}"
1305
+ end
1306
+
1307
+ # 楽器種別表
1308
+ def getMusicalInstrumentTypeDiceCommandResult(command)
1309
+ return nil unless command =~ /MII(\d?)/
1310
+
1311
+ is_roll = !(Regexp.last_match(1) && Regexp.last_match(1) != '')
1312
+ type = is_roll ? @randomizer.roll_once(6) : Regexp.last_match(1).to_i
1313
+
1314
+ return nil if type < 1 || 6 < type
1315
+
1316
+ tableName = "악기 종류 표"
1317
+ type_name = ['타악기1', '건반악기', '현악기1', '현악기2', '관악기1', '관악기2'][type - 1]
1318
+
1319
+ dice = @randomizer.roll_once(6)
1320
+ result = [
1321
+ ['캐스터네츠', '마라카스', '심벌즈', '트라이앵글', '북', '드럼'],
1322
+ ['목제 실로폰', '철제 실로폰', '하모늄', '하프시 코드', '피아노', '클라비코드'],
1323
+ ['하프', '류트', '기타', '바이올린', '첼로', '리라'],
1324
+ ['비파', '6현금', '호금', '샤미센', '시타르', '덜시머'],
1325
+ ['트럼펫', '호른', '트럼본', '튜바', '피리', '클라리넷'],
1326
+ ['리코더', '오카리나', '오보에', '하모니카', '아코디언', '퉁소']
1327
+ ][type - 1][dice - 1]
1328
+
1329
+ return tableName.to_s + (is_roll ? "(#{type})" : '') + ":#{type_name}(#{dice}):#{result}"
1330
+ end
1331
+
1332
+ def getEastalDiceCommandResult(command)
1333
+ return nil unless command =~ /ESTL(\d+)/
1334
+
1335
+ cr = Regexp.last_match(1).to_i
1336
+ return nil unless cr >= 1 && cr <= 10
1337
+
1338
+ tableName = "이스탈 탐색표"
1339
+
1340
+ table = ["숲 베리 따기: 여러분은 베리가 열린 수풀을 발견한다. 탐색을 하는 PC는 난이도 8의 [지각판정]을 한다(한 명당 1회만). 성공한 사람은 「숲 베리 (맘대로 샌드위치에 상당)」를 하나 입수한다.",
1341
+ "나뭇잎 사이로 햇빛이 비치는 산책길: 나뭇잎 사이로 햇빛이 비치는 밝은 잡목림이 이어진다. 적당히 사람의 손이 닿아서 산책하는 기분으로 걸을 수 있다.",
1342
+ "군생지에는 주의: 여러분은 트리피드의 군생지에 들어오고 말았다! 힘겨운 싸움 끝에 다행히도 승리를 거머쥐었지만, 여러분 전원은 [피로: 10]을 입는다.",
1343
+ "페어 트레이드: 여러분은 〈대지인〉 농부를 만났다. 20G를 내면 「계절야채 포토푀」를 구입할 수 있다(다 합쳐서 PC와 같은 수까지).",
1344
+ "강에서의 삶: 제방을 따라 강 근처를 걷는다. 작은 선착장에서 위세 좋은 목소리가 들린다. 물고기를 잡고 있는 모양이다.",
1345
+ "건너려 해도 건널 수 없는: 강물이 붇는 바람에 여러분은 강을 건널 곳을 찾느라 고생한다. [수생] 태그를 소지하고 있거나 얻을 수 있는 수단이 있는 PC가 한 명이라도 있다면 아무 문제 없다. 없다면 멀리 우회하여 전원 [피로: 10]을 입는다.",
1346
+ "코볼트 조우전: 여러분은 코볼트 무리를 물리쳤다! 전원 10G를 손에 넣는다. 쫓아가서 섬멸한다면 전원 [피로: 10]을 입는 대신 추가로 「코볼트의 이빨 [환전](10G)」를 한 사람당 1개 손에 넣는다.",
1347
+ "풍요로운 전원 풍경: 큰 논이 몇 자리나 펼쳐져 있다. 가을이라면 황금색 벼 이삭이 바람에 흔들릴 것이다.",
1348
+ "불운한 예감: 검은 고양이가 눈앞을 가로지르고, 까마귀가 머리 위에서 울고, 신발 끈이 뚝 끊어졌다. 왠지 모를 한기까지. 여러분 전원은 【인과력】을 1점 잃는다.",
1349
+ "친구의 친구는 친구: PC 전원은 2D를 굴린다. 가장 큰 눈이 나온 「당신」은 가장 적은 눈이 나온 「대상」과 공통의 지인에 대한 화제로 이야기꽃을 피운다. 당신과 대상은 「인과력 티켓」 한 장으로 각자 서로에 대한 커넥션을 취할 수 있다. 관계는「우정, 이해」 중 하나가 된다.",
1350
+ "시간은 흐른다: 길을 따라 외벽만 남은 철근 빌딩이 서 있다. 지금은 새의 둥지가 된 듯하다.",
1351
+ "갑작스러운 폭우!: 여러분은 갑작스러운 폭우를 만나, 고생 끝에 폐가에 도착했다. 여러분 전원은 [식량] 아이템을 하나 소비해야 한다. 단, [피로] 회복량은 절반이다. [식량] 아이템을 소비할 수 없는 경우는【인과력】 1점을 잃는다.",
1352
+ "들꽃이 만발하다: 여러분은 넓은 꽃밭에 도착한다. 탐색을 하는 PC는 목표치 9의 [지식판정을 한다(한 명당 1회만). 성공한 사람은 「귀중한 약초 [환전] (20G)」를 하나 입수한다.",
1353
+ "녹색 터널: 멋진 할엽수가 나란히 늘어서서 녹색의 천장을 이루고 있다. 발치에는 부엽토가 두껍게 깔렸고, 곳곳에서 나무뿌리가 모습을 드러내고 있다.",
1354
+ "고블린 강습 부대: 여러분은 고블린 강습부대와의 조우전에 휘말렸다. 여러분 전원은 [피로: 20]을 입거나, 또는 [시나리오n회]형 특기의 사용횟수를 소비한다(여러분이 선택).",
1355
+ "정보교환: 여러분은 모험자 집단과 만났다. 대표자는 목표 10의 [교섭판정]을 한다(적절한 서브 직업이 있다면 +2의 보너스를 얻을 수도 있다). 성공하면 부근의 정보를 들을 수 있다. 여러분 중 하나는 다음에 하는 [정찰] 행동에 +2를 얻는다.",
1356
+ "못의 어부: 물이 가득한 못에 나왔다. 어부가 투망을 던지는 모습이 보인다.",
1357
+ "토막난 샛길: 산사태로 길이 무너져 내리고 말았다. 이 길은 사용할 수 없을 것 같다. [비행] 상태이거나 [비행] 상태를 얻을 수 있는 수단을 가진 PC가 한 명이라도 있다면 주변을 탐색할 수 있으므로 문제는 없다. 그렇지 않다면 여러분은 아주 멀리 돌아가야 한다. 여러분 전원은 [피로:25]를 입는다.",
1358
+ "코볼트를 물리쳐라!: 여러분은 코볼트 순찰대를 물리쳤다. 전원 [피로: (1D6+5)]를 입는 대신, 전리품으로 1인당 20G를 입수한다.",
1359
+ "대지의 은총: 이랑을 따라 채소의 파릇파릇한 잎이 무성하다. 맛있는 요리를 만들 수 있을 것 같다.",
1360
+ "미끄러져 굴러서: 가도를 걷고 있는데 갑자기 거대한 와일드 보어가 튀어나온다. 피하던 찰나에 넘어져서 여러분 전원은 [소모품] 아이템을 하나 잃는다. [소모품]아이템을 가지고 있지 않다면 【인과력】 1점을 잃는다.",
1361
+ "빙글빙글 꽈당: PC 전원은 2D를 굴린다. 가장 작은 눈의 「당신」은 젖은 풀에 발이 미끄러져 굴러떨어지고 만다. 구해준 동료는 「인과력 티켓」 한 장으로 「당신」에 대해 커넥션을 얻을 수 있다. 관계는 「비호, 친애」 중 하나가 된다.",
1362
+ "무인들이 꾼 꿈의 흔적: 반쯤 무너진 돌담이 이어진다. 아인과의 격렬한 싸움의 흔적도 지금은 희미하게 남아있을 뿐이다.",
1363
+ "오리무중: 짙은 안개가 낀다. 팔을 뻗으면 손끝이 안 보일 정도다. 여러분 전원은 [피로: 25]를 입거나 【인과력】 1점을 잃는다(여러분이 선택).",
1364
+ "치유의 샘물: 여러분은 세차게 솟구치는 맑은 물을 발견한다. 목표치 13의 [지각판정]을 한다. 누구든 한 명이라도 성공하면 이것이 매우 맑으며 마력이 있는 물이라는 것을 알게 된다. 길어 담아갈 수는 없지만, 마시면 즉석에서 【인과력】 1점을 얻는다.",
1365
+ "침엽수 숲: 침엽수가 울퉁불퉁한 나무껍질을 드러내고 있다. 그늘에 잡초가 적어 조금 쌀쌀한 인상을 받는다.",
1366
+ "어인의 습격: 여러분은 사하긴 순찰소대와 격렬한 싸움을 벌였다! 여러분 전원은 [피로: 25]를 입거나 [소모품] 아이템 2개를 잃는다(여러분이 선택).",
1367
+ "상부상조: 여러분은 꼼짝도 못 하고 서 있는 마차에 탄 여행자를 만났다. 그들을 돕는 경우, 도우려는 멤버 전원이 [조작판정]을 한다. 달성치 합계가 (PC 수ⅹ10)이상이라면 마차를 길에 되돌린다. 그 경우 1인당 20G의 사례금을 받는다.",
1368
+ "시냇물과 산들바람: 잔잔하게 흐르는 작은 시냇가로 나왔다. 수면을 스쳐 지나가는 산들바람에 기분이 상쾌하다.",
1369
+ "파이팅 일발!: 여러분은 절벽을 따라 난 좁은 통로를 나아가느라 체력만이 아니라 기력까지 소모한다. 여러분 전원은 [피로:15]를 입는다. 거기에 더하여 [피로: 15]를 입거나 【인과력】 1점을 잃는다(여러분이 선택).",
1370
+ "거인과 만나다: 숲 위로 불쑥 머리를 내민 것은 대머리 거인이었다. 전투에 승리한 여러분은 전원 25G를 입수한다. 거인의 보금자리를 찾으려면 대표자가 목표치 12의 [해석판정]에 성공해야 한다. 성공한 경우 거인의 보금자리에서 [마촉매6]을 1D6+1개 입수한다.",
1371
+ "휴식 장소: 쉬기 딱 좋은 도로 가의 공터를 발견한다. 예전에 누군가 같은 생각을 한 사람이 있었는지 모닥불을 피운 흔적도 있다.",
1372
+ "그럴 리가: 길을 잃고 말았다. 여러분 전원은 【인과력】을 2점 잃는다. 【인과력】을 잃을 수 없는 경우, 부족한 【인과력】 1점당 [피로: 15]를 입는다. 여러분의 동료중에 [지도 제작자]나 [척후]가 있다면 [피로: 15]는 [피로: 10]으로 그친다.",
1373
+ "좋아하는 애 있어?: 무슨 영문인지 여러분은 휴식 중에 좋아하는 이성에 대한 화제에 돌입하고 말았다. [애정] 또는 [사랑], [설렘]에 준하는 커넥션을 가지고 있는 PC는 그 사실을 고백할 수 있다. 그 경우, GM은 그 PC의 용기에 깊이 감동하며【인과력】 1점을 주자. 만약 고백 상대가 지금 파티에 있는 동료라면, 롤플레이에 따라서는 그 상대에게도 준다.",
1374
+ "저 다리를 건너서: 붉게 녹슨 철교가 강 위로 그림자를 드리우고 있다. 예전에는 전차가 이 다리 위를 건넜는지 이끼 사이로 레일이 엿보인다.",
1375
+ "얼음덩어리: 큼직한 우박이 내려 사정없이 여러분을 두들긴다. 주위는 탁 트인 토지라서 피할 수도 없다. 여러분 전원은 [피로: 30]을 입는다.",
1376
+ "두근두근 동굴: 여러분은 기분 나쁜 동굴을 발견한다. 탐색을 하는 PC는 목표치 12의 [지각판정]을 한다. 실패한 사람은 [피로: 10]을 입는다. 한 사람이라도 성공한 경우, 동굴 안에서 금화 100G가 들어있는 자루를 발견한다. 공평하게 나누자!",
1377
+ "수풀을 헤치고: 낮은 관목이 곳곳에 수풀을 이루고 있어 똑바로 전진하기 힘들다.하지만 누군가가 지나간 길이 있어서 헤매지 않고 끝날 것 같다.",
1378
+ "이곳에서 저지하라!: 여러분은 〈대지인〉의 마을 주변에서 와이번과의 전투에 돌입했다! 여러분 전원은 [피로: 30]을 입거나 【인과력】 2점을 잃는다(여러분이 선택).",
1379
+ "언젠가 지나온 길: 여러분은 아직 신출내기인 〈모험자〉들과 만났다. 뭔가 도움을 주고 싶다면 [소모품]을 몇 개쯤 건네줄 수도 있고, 뭐든 조언을 해줄 수도 있다. 그들은 거듭 감사하며 길을 떠난다. GM은 PC들의 롤플레이에 따라 【인과력】 1점을 줄 수 있다.",
1380
+ "계곡에 울리는 물소리: 가파른 골짜기 밑에서 기세 좋게 물이 흐른다. 그리 멀지않은 곳에서 폭포 소리가 들려온다.",
1381
+ "독 늪: 여러분은 썩은 내가 풍기는 늪지를 가로질렀다. 여러분 전원은 목표치 14의 [운동판정]을 해야 한다. 실패한 PC는 [소모품] 아이템을 2개 잃는다.",
1382
+ "고르곤 슬레이어: 여러분은 쇠로 된 피부 를 지닌 소를 물리쳤다! 전원 【인과력】 1점을 잃는다. 전리품으로 【철우의 비늘 [환전] (35G)】를 인원수만큼 손에 넣는다.",
1383
+ "개척자들: 몇 명의 대지인이 숲을 개간하고 있다. 씨를 뿌리려면 조금 더 걸릴 것 같다.",
1384
+ "예상 밖의 조우: 10m가 넘는 녹색 드래곤과 우연히 마주친다. 왜 이런 곳에! 여러분은 전력을 다해 도망쳤다. 여러분 전원은 【인과력】을 2점 잃거나, [보조장비] 하나에 [파손] 태그를 입는다. 둘 다 할 수 없다면 [피로: 35]를 입는다.",
1385
+ "끝말잇기는 귀문: 여러분은 여행의 흥을 돋우기 위해 다 함께 끝말잇기를 하면서 걷고 있다. PC 전원은 「누」(GM은 다른걸로 바꿔도 좋다)로 시작하는 단어를 하나 발표한다. 가장 창피한 단어를 발표한 PC를 다 함께 결정한다. 그 PC에 대한 커넥션을 가지고 있는 다른 PC는 커넥션의 관계를 [동정], [실망], [재미있음]으로 변경할 수 있다.",
1386
+ "오래된 신역: 커다란 석제 토리이가 오랜세월의 풍파를 견디며 우뚝 솟아있다. 주위에 엄숙한 분위기가 가득했다.",
1387
+ "난기류: 돌풍은 회오리가 되었다! 여러분은 간신히 통과할 수 있었지만 멀쩡하지는 않았다. 여러분은 [피로: 35]를 입거나 [소모품] 2개를 잃는다(여러분이 선택).",
1388
+ "노리려면 월척을: 여러분은 멋진 낚시터를 발견한다. 탐색을 하는 PC는 [식량] 아이템을 하나 소비해서 목표치 13의 [조작판정]을 한다(어부나 그에 준하는 서브 직업에겐 +2를 줘도 좋다). 성공한 사람은「기름이 오른 송어 (정석 카레에 상당)」를 [1D/2]마리(최저 1마리) 입수한다.",
1389
+ "고목 미궁: 울퉁불퉁한 고목이 서로 얽혀 압박감을 느끼게 한다. 숲이 보내온 세월의 무게가 어깨를 짓누르는 듯하다.",
1390
+ "중과부적: 여러분은 무수한 구렁이에게 둘러싸였다! 여러분 전원은 [피로: 40]을 입거나 보조장비 하나에 [파손] 태그를 붙인다(여러분이 선택).",
1391
+ "축복의 고리: 여러분은 대지인의 마을에서 결혼을 축하하는 조촐한 연회를 접한다. 축복을 해주고 싶다면 대표 PC가 난이도 14의 [교섭] 판정을 한다. 선물로 [식량] 태그를 가진 아이템을 하나 내놓을 때마다 +2의 보너스를 얻는다. 성공한 경우, 어딘가에서 상쾌한 바람이 불어 여러분 전원은 【인과력】 1점을 얻는다. 그렇지 않은 경우라도 연회에는 초대받으며, 소박한 만찬을 먹고 전원의 [피로]가 -20 줄어든다.",
1392
+ "큰 강을 이루는 한 방울: 깨끗한 물이 세차게 솟아난다. 이 물은 분명 저 큰 강으로 이어질 것이다.",
1393
+ "냉랭한 산길: 여러분은 바람이 세차게 부는, 얼어붙을 듯한 산길을 걸어간다. [경감(냉기)를 가지고 있거나, 혹은 얻을 수 있는 PC는 이 영향을 받지 않는다. 그렇지 않은 PC는 【인과력】 2점을 잃거나 보조장비 하나에 [파손] 태그를 입는다(여러분이 선택). 양쪽 모두 선택할 수 없는 경우, [피로: 50]을 입는다.",
1394
+ "고블린의 야영지: 여러분은 야영 중인 고블린들을 물리쳤다! 전원 50G를 손에 넣는다. 목표치 14의 [지각판정]을 한다(한사람당 1회). 성공한 사람은 「고브 영웅상[환전] (60G)」을 하나 입수한다.",
1395
+ "줄곧 이어지는 생활: 산비탈의 한 면 전체에 밭들이 계단처럼 펼쳐져 있다. 이 정도의 논밭을 일구는 데 도대체 얼마나 많은 시간이 들었을까? 근처에는 틀림없이 〈대지인〉의 마을이 있을 것이다."]
1396
+
1397
+ d1 = @randomizer.roll_once(6)
1398
+ d2 = @randomizer.roll_once(6)
1399
+ value = (d1.to_i + d2.to_i - 2 + (cr - 1) * 5)
1400
+
1401
+ result = table[value]
1402
+
1403
+ return "#{tableName}CR#{cr}(#{value + 7}[#{d1},#{d2}])\n#{result}"
1404
+ end
1405
+ end
1406
+ end
1407
+ end