bcdice 3.0.0.pre.alpha.1 → 3.0.0.pre.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/.rubocop.yml +12 -0
  4. data/.rubocop_todo.yml +1 -0
  5. data/CHANGELOG.md +34 -0
  6. data/Gemfile +6 -3
  7. data/Rakefile +52 -18
  8. data/bcdice.gemspec +2 -0
  9. data/i18n/Amadeus/ja_jp.yml +386 -0
  10. data/i18n/Amadeus/ko_kr.yml +148 -0
  11. data/i18n/Cthulhu/ja_jp.yml +11 -0
  12. data/i18n/Cthulhu/ko_kr.yml +11 -0
  13. data/i18n/Cthulhu/zh_hant.yml +11 -0
  14. data/i18n/DetatokoSaga/ja_jp.yml +74 -0
  15. data/i18n/DetatokoSaga/ko_kr.yml +74 -0
  16. data/i18n/DoubleCross/ja_jp.yml +53 -0
  17. data/i18n/DoubleCross/ko_kr.yml +53 -0
  18. data/i18n/Dracurouge/ja_jp.yml +1374 -0
  19. data/i18n/Dracurouge/ko_kr.yml +295 -0
  20. data/i18n/Fiasco/ja_jp.yml +10 -0
  21. data/i18n/Fiasco/ko_kr.yml +10 -0
  22. data/i18n/FutariSousa/ja_jp.yml +720 -0
  23. data/i18n/FutariSousa/ko_kr.yml +746 -0
  24. data/i18n/Insane/ja_jp.yml +454 -0
  25. data/i18n/Insane/ko_kr.yml +502 -0
  26. data/i18n/Kamigakari/ja_jp.yml +276 -0
  27. data/i18n/Kamigakari/ko_kr.yml +204 -0
  28. data/i18n/KillDeathBusiness/ja_jp.yml +1092 -0
  29. data/i18n/KillDeathBusiness/ko_kr.yml +1062 -0
  30. data/i18n/LogHorizon/ja_jp.yml +3082 -0
  31. data/i18n/LogHorizon/ko_kr.yml +923 -0
  32. data/i18n/MagicaLogia/ja_jp.yml +564 -0
  33. data/i18n/MonotoneMuseum/ja_jp.yml +525 -0
  34. data/i18n/MonotoneMuseum/ko_kr.yml +89 -0
  35. data/i18n/Nechronica/ja_jp.yml +57 -0
  36. data/i18n/Nechronica/ko_kr.yml +14 -0
  37. data/i18n/StratoShout/ja_jp.yml +160 -0
  38. data/i18n/StratoShout/ko_kr.yml +160 -0
  39. data/i18n/ja_jp.yml +5 -0
  40. data/i18n/ko_kr.yml +7 -0
  41. data/i18n/zh_hant.yml +3 -0
  42. data/lib/bcdice/arithmetic/node.rb +154 -0
  43. data/lib/bcdice/base.rb +87 -101
  44. data/lib/bcdice/common_command.rb +2 -0
  45. data/lib/bcdice/common_command/add_dice.rb +5 -41
  46. data/lib/bcdice/common_command/add_dice/node.rb +92 -16
  47. data/lib/bcdice/common_command/add_dice/parser.rb +374 -274
  48. data/lib/bcdice/common_command/add_dice/parser.y +153 -0
  49. data/lib/bcdice/common_command/add_dice/randomizer.rb +25 -33
  50. data/lib/bcdice/common_command/barabara_dice.rb +6 -47
  51. data/lib/bcdice/common_command/barabara_dice/node.rb +84 -0
  52. data/lib/bcdice/common_command/barabara_dice/parser.rb +336 -0
  53. data/lib/bcdice/common_command/barabara_dice/parser.y +107 -0
  54. data/lib/bcdice/common_command/calc.rb +7 -30
  55. data/lib/bcdice/common_command/calc/node.rb +30 -0
  56. data/lib/bcdice/common_command/calc/parser.rb +271 -0
  57. data/lib/bcdice/common_command/calc/parser.y +79 -0
  58. data/lib/bcdice/common_command/choice.rb +137 -19
  59. data/lib/bcdice/common_command/d66_dice.rb +48 -34
  60. data/lib/bcdice/common_command/lexer.rb +46 -0
  61. data/lib/bcdice/common_command/repeat.rb +102 -0
  62. data/lib/bcdice/common_command/reroll_dice.rb +8 -158
  63. data/lib/bcdice/common_command/reroll_dice/node.rb +198 -0
  64. data/lib/bcdice/common_command/reroll_dice/parser.rb +421 -0
  65. data/lib/bcdice/common_command/reroll_dice/parser.y +158 -0
  66. data/lib/bcdice/common_command/upper_dice.rb +10 -129
  67. data/lib/bcdice/common_command/upper_dice/node.rb +181 -0
  68. data/lib/bcdice/common_command/upper_dice/parser.rb +412 -0
  69. data/lib/bcdice/common_command/upper_dice/parser.y +143 -0
  70. data/lib/bcdice/common_command/version.rb +9 -17
  71. data/lib/bcdice/deprecated/checker.rb +78 -0
  72. data/lib/bcdice/dice_table/d66_grid_table.rb +8 -0
  73. data/lib/bcdice/dice_table/d66_table.rb +10 -0
  74. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +75 -17
  75. data/lib/bcdice/dice_table/sai_fic_skill_table/category.rb +25 -0
  76. data/lib/bcdice/dice_table/sai_fic_skill_table/skill.rb +23 -0
  77. data/lib/bcdice/dice_table/table.rb +8 -0
  78. data/lib/bcdice/game_system.rb +7 -1
  79. data/lib/bcdice/game_system/AFF2e.rb +1 -1
  80. data/lib/bcdice/game_system/AceKillerGene.rb +2 -2
  81. data/lib/bcdice/game_system/Airgetlamh.rb +3 -3
  82. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  83. data/lib/bcdice/game_system/Alshard.rb +1 -1
  84. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  85. data/lib/bcdice/game_system/Amadeus.rb +46 -507
  86. data/lib/bcdice/game_system/Amadeus_Korean.rb +12 -456
  87. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  88. data/lib/bcdice/game_system/Arianrhod.rb +0 -1
  89. data/lib/bcdice/game_system/ArsMagica.rb +1 -1
  90. data/lib/bcdice/game_system/Avandner.rb +1 -1
  91. data/lib/bcdice/game_system/BBN.rb +1 -1
  92. data/lib/bcdice/game_system/BadLife.rb +1 -1
  93. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  94. data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -2
  95. data/lib/bcdice/game_system/BeginningIdol.rb +2 -3
  96. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +2 -3
  97. data/lib/bcdice/game_system/BladeOfArcana.rb +2 -2
  98. data/lib/bcdice/game_system/BlindMythos.rb +1 -1
  99. data/lib/bcdice/game_system/BloodCrusade.rb +0 -1
  100. data/lib/bcdice/game_system/BloodMoon.rb +0 -1
  101. data/lib/bcdice/game_system/CardRanker.rb +1 -2
  102. data/lib/bcdice/game_system/ChaosFlare.rb +1 -1
  103. data/lib/bcdice/game_system/Chill.rb +1 -1
  104. data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
  105. data/lib/bcdice/game_system/ColossalHunter.rb +1 -2
  106. data/lib/bcdice/game_system/Comes.rb +50 -0
  107. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  108. data/lib/bcdice/game_system/Cthulhu.rb +94 -97
  109. data/lib/bcdice/game_system/Cthulhu7th.rb +108 -67
  110. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  111. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  112. data/lib/bcdice/game_system/CthulhuTech.rb +8 -14
  113. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +7 -190
  114. data/lib/bcdice/game_system/Cthulhu_Korean.rb +5 -186
  115. data/lib/bcdice/game_system/DarkBlaze.rb +9 -5
  116. data/lib/bcdice/game_system/DarkDaysDrive.rb +17 -15
  117. data/lib/bcdice/game_system/DarkSouls.rb +1 -1
  118. data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
  119. data/lib/bcdice/game_system/DemonParasite.rb +1 -2
  120. data/lib/bcdice/game_system/DetatokoSaga.rb +48 -149
  121. data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +6 -274
  122. data/lib/bcdice/game_system/DiceOfTheDead.rb +9 -6
  123. data/lib/bcdice/game_system/DoubleCross.rb +102 -81
  124. data/lib/bcdice/game_system/DoubleCross_Korean.rb +13 -330
  125. data/lib/bcdice/game_system/Dracurouge.rb +376 -1678
  126. data/lib/bcdice/game_system/Dracurouge_Korean.rb +16 -271
  127. data/lib/bcdice/game_system/EarthDawn.rb +1 -1
  128. data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
  129. data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
  130. data/lib/bcdice/game_system/Elysion.rb +3 -4
  131. data/lib/bcdice/game_system/EmbryoMachine.rb +1 -1
  132. data/lib/bcdice/game_system/Emoklore.rb +131 -0
  133. data/lib/bcdice/game_system/EndBreaker.rb +1 -2
  134. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
  135. data/lib/bcdice/game_system/Fiasco.rb +87 -70
  136. data/lib/bcdice/game_system/Fiasco_Korean.rb +7 -95
  137. data/lib/bcdice/game_system/FilledWith.rb +462 -566
  138. data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
  139. data/lib/bcdice/game_system/FutariSousa.rb +103 -938
  140. data/lib/bcdice/game_system/FutariSousa_Korean.rb +7 -948
  141. data/lib/bcdice/game_system/{Gurps.rb → GURPS.rb} +184 -217
  142. data/lib/bcdice/game_system/Garako.rb +131 -39
  143. data/lib/bcdice/game_system/GardenOrder.rb +2 -2
  144. data/lib/bcdice/game_system/GehennaAn.rb +1 -1
  145. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  146. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  147. data/lib/bcdice/game_system/GoldenSkyStories.rb +1 -1
  148. data/lib/bcdice/game_system/Gorilla.rb +1 -1
  149. data/lib/bcdice/game_system/GranCrest.rb +2 -3
  150. data/lib/bcdice/game_system/GundogRevised.rb +1 -1
  151. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  152. data/lib/bcdice/game_system/GurpsFW.rb +2 -3
  153. data/lib/bcdice/game_system/HarnMaster.rb +2 -2
  154. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -2
  155. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  156. data/lib/bcdice/game_system/HuntersMoon.rb +1 -2
  157. data/lib/bcdice/game_system/Illusio.rb +2 -2
  158. data/lib/bcdice/game_system/Insane.rb +90 -717
  159. data/lib/bcdice/game_system/Insane_Korean.rb +7 -719
  160. data/lib/bcdice/game_system/Kamigakari.rb +47 -242
  161. data/lib/bcdice/game_system/Kamigakari_Korean.rb +6 -394
  162. data/lib/bcdice/game_system/KanColle.rb +3 -3
  163. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  164. data/lib/bcdice/game_system/KillDeathBusiness.rb +162 -1144
  165. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +6 -1459
  166. data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
  167. data/lib/bcdice/game_system/LiveraDoll.rb +2 -2
  168. data/lib/bcdice/game_system/LogHorizon.rb +350 -3379
  169. data/lib/bcdice/game_system/LogHorizon_Korean.rb +55 -1357
  170. data/lib/bcdice/game_system/LostRecord.rb +0 -1
  171. data/lib/bcdice/game_system/LostRoyal.rb +1 -2
  172. data/lib/bcdice/game_system/MagicaLogia.rb +158 -1044
  173. data/lib/bcdice/game_system/MeikyuDays.rb +1 -2
  174. data/lib/bcdice/game_system/MeikyuKingdom.rb +4 -4
  175. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +4 -5
  176. data/lib/bcdice/game_system/MetalHead.rb +1 -1
  177. data/lib/bcdice/game_system/MetalHeadExtream.rb +2 -2
  178. data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
  179. data/lib/bcdice/game_system/MonotoneMuseum.rb +38 -239
  180. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +10 -270
  181. data/lib/bcdice/game_system/NSSQ.rb +159 -0
  182. data/lib/bcdice/game_system/Nechronica.rb +34 -73
  183. data/lib/bcdice/game_system/Nechronica_Korean.rb +11 -128
  184. data/lib/bcdice/game_system/NeverCloud.rb +1 -1
  185. data/lib/bcdice/game_system/NightWizard.rb +1 -1
  186. data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
  187. data/lib/bcdice/game_system/NinjaSlayer.rb +12 -11
  188. data/lib/bcdice/game_system/NjslyrBattle.rb +1 -1
  189. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -2
  190. data/lib/bcdice/game_system/OracleEngine.rb +1 -1
  191. data/lib/bcdice/game_system/OrgaRain.rb +2 -2
  192. data/lib/bcdice/game_system/Paradiso.rb +1 -1
  193. data/lib/bcdice/game_system/Paranoia.rb +1 -1
  194. data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
  195. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  196. data/lib/bcdice/game_system/Peekaboo.rb +22 -122
  197. data/lib/bcdice/game_system/Postman.rb +2 -2
  198. data/lib/bcdice/game_system/PulpCthulhu.rb +3 -3
  199. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  200. data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
  201. data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
  202. data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
  203. data/lib/bcdice/game_system/RuinBreakers.rb +296 -0
  204. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  205. data/lib/bcdice/game_system/SRS.rb +1 -2
  206. data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
  207. data/lib/bcdice/game_system/Satasupe.rb +1 -2
  208. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  209. data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
  210. data/lib/bcdice/game_system/ShadowRun5.rb +2 -2
  211. data/lib/bcdice/game_system/SharedFantasia.rb +1 -1
  212. data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +1 -1
  213. data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
  214. data/lib/bcdice/game_system/ShinobiGami.rb +1 -2
  215. data/lib/bcdice/game_system/ShoujoTenrankai.rb +2 -2
  216. data/lib/bcdice/game_system/Skynauts.rb +1 -1
  217. data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
  218. data/lib/bcdice/game_system/StellarKnights.rb +1 -2
  219. data/lib/bcdice/game_system/SterileLife.rb +1 -1
  220. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -2
  221. data/lib/bcdice/game_system/StratoShout.rb +44 -247
  222. data/lib/bcdice/game_system/StratoShout_Korean.rb +6 -282
  223. data/lib/bcdice/game_system/Strave.rb +2 -2
  224. data/lib/bcdice/game_system/SwordWorld.rb +8 -9
  225. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -3
  226. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -3
  227. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  228. data/lib/bcdice/game_system/TokumeiTenkousei.rb +1 -1
  229. data/lib/bcdice/game_system/TokyoGhostResearch.rb +2 -2
  230. data/lib/bcdice/game_system/Torg.rb +2 -2
  231. data/lib/bcdice/game_system/Torg1_5.rb +1 -1
  232. data/lib/bcdice/game_system/TorgEternity.rb +1 -1
  233. data/lib/bcdice/game_system/TrinitySeven.rb +1 -1
  234. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  235. data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -2
  236. data/lib/bcdice/game_system/UnsungDuet.rb +139 -0
  237. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  238. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
  239. data/lib/bcdice/game_system/Villaciel.rb +1 -2
  240. data/lib/bcdice/game_system/Warhammer.rb +1 -1
  241. data/lib/bcdice/game_system/Warhammer4.rb +329 -0
  242. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  243. data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
  244. data/lib/bcdice/game_system/YankeeYogSothoth.rb +15 -15
  245. data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
  246. data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
  247. data/lib/bcdice/game_system/filled_with/cook_tables.rb +119 -0
  248. data/lib/bcdice/game_system/filled_with/lot_tables.rb +155 -0
  249. data/lib/bcdice/loader.rb +6 -8
  250. data/lib/bcdice/preprocessor.rb +15 -40
  251. data/lib/bcdice/repl.rb +1 -1
  252. data/lib/bcdice/result.rb +83 -0
  253. data/lib/bcdice/translate.rb +11 -0
  254. data/lib/bcdice/version.rb +1 -1
  255. metadata +80 -4
@@ -32,7 +32,7 @@ module BCDice
32
32
   AVO9@8[縦1,横4],[縦2,横6],[縦3,横8] AVO@2[縦6,横4],[縦2,横6]
33
33
  MESSAGETEXT
34
34
 
35
- register_prefix(['D.*', '2[Dd]6<=.*', 'SN.*', 'NV.*', 'AVO.*', 'BOM.*'])
35
+ register_prefix('D.*', '2[Dd]6<=.*', 'SN.*', 'NV.*', 'AVO.*', 'BOM.*')
36
36
 
37
37
  def initialize(command)
38
38
  super(command)
@@ -479,7 +479,7 @@ module BCDice
479
479
  )
480
480
  }.freeze
481
481
 
482
- register_prefix(['SP.*'] + TABLES.keys)
482
+ register_prefix('SP.*', TABLES.keys)
483
483
  end
484
484
  end
485
485
  end
@@ -67,7 +67,6 @@ module BCDice
67
67
  super(command)
68
68
 
69
69
  @sort_barabara_dice = true # バラバラロール(Bコマンド)でソート有
70
- @enabled_d66 = true
71
70
  @d66_sort_type = D66SortType::NO_SORT
72
71
  end
73
72
 
@@ -850,7 +849,7 @@ module BCDice
850
849
  ),
851
850
  }.freeze
852
851
 
853
- register_prefix(['\d+SK\d?(,\d>\d)*', 'STB2', 'ALLS', 'PET', 'FT\d*'] + TABLES.keys)
852
+ register_prefix('\d+SK\d?(,\d>\d)*', 'STB2', 'ALLS', 'PET', 'FT\d*', TABLES.keys)
854
853
  end
855
854
  end
856
855
  end
@@ -37,7 +37,7 @@ module BCDice
37
37
   ・超未来の宇宙船内 INT
38
38
  MESSAGETEXT
39
39
 
40
- register_prefix(['(\d+)*DA.*\[(\d+),(\d+)(,(\d+))?\]', 'VPFT', 'VNFT', 'VNRT', 'AAFT', 'AST', 'RNST', 'RET', 'TRST', 'TRAT', 'TRMT', 'TROT', 'TET', 'ENT', 'CUT', 'NAT', 'INT']) # '(\d+)*DA.*\[.*\]'
40
+ register_prefix('(\d+)*DA.*\[(\d+),(\d+)(,(\d+))?\]', 'VPFT', 'VNFT', 'VNRT', 'AAFT', 'AST', 'RNST', 'RET', 'TRST', 'TRAT', 'TRMT', 'TROT', 'TET', 'ENT', 'CUT', 'NAT', 'INT') # '(\d+)*DA.*\[.*\]'
41
41
 
42
42
  def eval_game_system_specific_command(command) # ダイスロールコマンド
43
43
  # 通常判定部分をgetJudgeResultコマンドに切り分け
@@ -21,13 +21,12 @@ module BCDice
21
21
  ・D66ダイスあり
22
22
  INFO_MESSAGE_TEXT
23
23
 
24
- register_prefix(['\d+SR.*'])
24
+ register_prefix('\d+SR.*')
25
25
 
26
26
  def initialize(command)
27
27
  super(command)
28
28
 
29
29
  @sort_add_dice = true
30
- @enabled_d66 = true
31
30
  @d66_sort_type = D66SortType::NO_SORT
32
31
  @round_type = RoundType::FLOOR
33
32
  end
@@ -24,26 +24,12 @@ module BCDice
24
24
  []内は省略可 D66入れ替えあり
25
25
  INFO_MESSAGE_TEXT
26
26
 
27
- register_prefix([
28
- 'VOT',
29
- 'GUT',
30
- 'BAT',
31
- 'KEYT',
32
- 'DRT',
33
- 'EMO',
34
- 'AT[1-6]?',
35
- 'SCENE',
36
- 'MACHI',
37
- 'GAKKO',
38
- 'BAND',
39
- 'TENKAI'
40
- ])
27
+ register_prefix('AT[1-6]?')
41
28
 
42
29
  def initialize(command)
43
30
  super(command)
44
31
 
45
32
  @sort_add_dice = true
46
- @enabled_d66 = true
47
33
  @d66_sort_type = D66SortType::ASC
48
34
  end
49
35
 
@@ -51,246 +37,32 @@ module BCDice
51
37
  return '' if target == '?'
52
38
  return '' unless cmp_op == :>=
53
39
 
54
- if dice_total <= 2
55
- " ファンブル! (ドラマフェイズ: 【ディスコード】+2 / ライブフェイズ: 【コンディション】-2)"
56
- elsif dice_total >= 12
57
- " スペシャル! (【コンディション】+2)"
58
- elsif total >= target
59
- " 成功"
60
- else
61
- " > 失敗"
62
- end
40
+ result =
41
+ if dice_total <= 2
42
+ translate("StratoShout.fumble")
43
+ elsif dice_total >= 12
44
+ translate("StratoShout.critical")
45
+ elsif total >= target
46
+ translate("success")
47
+ else
48
+ translate("failure")
49
+ end
50
+
51
+ return " > #{result}"
63
52
  end
64
53
 
65
54
  def eval_game_system_specific_command(command)
66
- case command.upcase
67
- when 'VOT'
68
- title = 'ボーカルトラブル表(P167)'
69
- table = [
70
- "歌詞を忘れてしまった! 何も言葉が出てこない……",
71
- "マイクのコードに足を引っ掛けてしまった! 危ない!",
72
- "マイクスタンドが倒れてしまった!",
73
- "音程がズレているけど、なかなか直せない!",
74
- "リズムがズレてきている気がする……修正できない!",
75
- "喉が枯れそうだ。まずい、セーブしないと……!"
76
- ]
77
- return textFrom1D6Table(title, table)
78
- when 'GUT'
79
- title = 'ギタートラブル表(P169)'
80
- table = [
81
- "やべっ、コードを間違えた! どうにかごまかそう……",
82
- "ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!",
83
- "ギターの音にノイズが乗ってるような……直ってくれ……!",
84
- "あれ? 今曲のどの辺りだっけ……?",
85
- "弦が切れてしまった! なんて不吉な……。",
86
- "ピックが飛んでった! 指で弾くしかない……!"
87
- ]
88
- return textFrom1D6Table(title, table)
89
- when 'BAT'
90
- title = 'ベーストラブル表(P171)'
91
- table = [
92
- "やべっ、コードを間違えた! どうにかごまかそう……",
93
- "ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!",
94
- "ベースの音にノイズが乗ってるような……直ってくれ……!",
95
- "あれ? 今曲のどの辺りだっけ……?",
96
- "指先の感覚が麻痺してきた。動かない……!",
97
- "テンポが速くなってきているけど、止まらない!"
98
- ]
99
- return textFrom1D6Table(title, table)
100
- when 'KEYT'
101
- title = 'キーボードトラブル表(P173)'
102
- table = [
103
- "指先の感覚が麻痺してきた。動かない……!",
104
- "音量のスライドに触れてしまった! 爆音が出てしまう!",
105
- "あれ? 今曲のどの辺りだっけ……?",
106
- "音の出ない鍵がある……故障!?",
107
- "音色を間違えた! 元の音色は何番だっけ……!?",
108
- "手を置く位置が一つズレてる……! 不協和音だ!"
109
- ]
110
- return textFrom1D6Table(title, table)
111
- when 'DRT'
112
- title = 'ドラムトラブル表(P175)'
113
- table = [
114
- "手がこんがらがってきた! 軌道修正しないと……!",
115
- "あれ? 今曲のどの辺りだっけ……?",
116
- "ハイハットが開かない! ネジが緩んでるのか……!?",
117
- "アドリブ入れたけど、次のフレーズが思いつかない……!",
118
- "テンポが速くなってきているけど、止まらない!",
119
- "スティックが飛んでった! 代わりはどこだっけ……。"
120
- ]
121
- return textFrom1D6Table(title, table)
122
- when 'EMO'
123
- title = '感情表(P183)'
124
- table = [
125
- "共感/不信",
126
- "友情/嫉妬",
127
- "好敵手/苛立ち",
128
- "不可欠/敬遠",
129
- "尊敬/劣等感",
130
- "愛情/負い目"
131
- ]
132
- return textFrom1D6Table(title, table)
133
- when /^AT([1-6]?)$/
134
- value = Regexp.last_match(1).to_i
55
+ if (m = /^AT([1-6]?)$/.match(command))
56
+ value = m[1].to_i
135
57
  return getSkillList(value)
136
- when "SCENE"
137
- title = "シーン表(P199)"
138
- table = [
139
- "一人の時間。ふと過去の記憶を辿る。そういえば以前、あんなことがあったような……。",
140
- "どこからか、言い争っているような声が聞こえてきた。喧嘩だろうか?",
141
- "夜の帳が下り、辺りは静寂に包まれている。あいつは今、何をしているだろう。",
142
- "仲間と一緒にご飯を食べていると、会話は自然とあの話に……。",
143
- "笑い声に満ちた空間。ずっとこんな時間が続けばいいのに。",
144
- "日の当たる場所。毎日の忙しさを離れ、穏やかな時間が過ぎていく。",
145
- "スマートフォンに着信の通知がついていた。電話? メッセージ? 誰からだろう。",
146
- "突然、あなたのもとに来訪者が現れた。何か伝えたいことがあるようだ。",
147
- "誰かの忘れ物を見つけた。届けてあげたほうがいいだろうか。",
148
- "誰かが噂話をしている。聞くつもりはなくとも、それは勝手に耳に入ってきた。",
149
- "なんだか悪寒がする。なにか良くないことが起きているような……。"
150
- ]
151
- return textFrom2D6Table(title, table)
152
- when "MACHI"
153
- title = "街角シーン表(P199)"
154
- table = [
155
- "入ったことのない場所に、初めて足を踏み入れた。少し緊張してしまうな。",
156
- "アルバイト先。バイト仲間から、意外なことを教えられた。",
157
- "会話もままならないような、大音量の音楽。その場にいるだけで気分が高揚する。",
158
- "横断歩道で信号を待っていると、見知った人物の姿を見つけた。",
159
- "突然の雨に、慌てて足を早める人々。自分も早く帰らなければ。",
160
- "何気なく立ち寄った店の中で、知人とばったり。こんなところで何を?",
161
- "練習を終えて立ち寄った飲食店で、意外な人物を発見。少し様子を見てみよう。",
162
- "あちこちから子どもたちのはしゃぎ声が聞こえてくる。自分にもあんな頃があったんだろうか。",
163
- "音のない、静寂の世界。たまには音から離れるのもいいものだ。",
164
- "電車の中。つり革に掴まりながら揺られていると、見覚えのある乗客を見つけた。",
165
- "カラオケの廊下を歩いていると、どこからか聞き覚えのある声が……?"
166
- ]
167
- return textFrom2D6Table(title, table)
168
- when "GAKKO"
169
- title = "学校シーン表(P199)"
170
- table = [
171
- "校舎裏、何かを話す二人組を見かけた。一体何を話しているのだろう……?",
172
- "とある部室。部員たちは集中して部活に励んでいるようだが……。",
173
- "先生から、ターゲットについて尋ねられた。なにか気になることがあるようだ。",
174
- "木々の隙間から朝日差し込む通学路。ある者は忙しそうに、またある者は楽しそうに校舎へ向かっている。",
175
- "休み時間。教室のあちこちで飛び交う、他愛のない噂話。その中から、気になる会話が聞こえてきた。",
176
- "何もかもが茜色に染まる夕暮れ時。生徒たちは学業から解放され、自由に残り少ない一日を過ごしている。",
177
- "移動教室だ。渡り廊下から下を見ると、見覚えのある人物がいた。",
178
- "昼休み。生徒は思い思いの場所で昼食を取っている。さて、自分はどこで食べようか。",
179
- "先生から頼まれごとを引き受けてしまった。さっさと済ませてしまおう。",
180
- "そろそろ学校が閉まる時間だ。明かりのついている教室はもうほとんどない。",
181
- "スピーカーから校内放送が聞こえた。誰かを呼んでいるようだが……?"
182
- ]
183
- return textFrom2D6Table(title, table)
184
- when "BAND"
185
- title = "バンドシーン表(P199)"
186
- table = [
187
- "音楽専門のニュースサイトをチェック。大小様々な記事が投稿されている。",
188
- "意外なところで練習している人物を発見。少し声をかけてみようか。",
189
- "ちょっとした壁に衝突。誰かに相談した方がいいかも……。",
190
- "ライブを見るためライブハウスへとやってきた。どんなステージになるのだろう。",
191
- "打ち合わせに行ったライブハウス。来ているのは自分たちだけじゃないようだ。",
192
- "練習が終わった帰り道。あいつも練習が終わった頃だろうか。",
193
- "どこからか楽器の音が聞こえてくる。誰か演奏しているのだろうか。",
194
- "熱気のこもる部屋を出て、スタジオの待合室でクールダウン。ソファに座っているのは……。",
195
- "訪れた楽器店で、見知った人物を発見。何をしに来ているのだろう。",
196
- "最新のヒット曲が流れるCDショップの店内。次はどんな曲をやろうか……。",
197
- "何気なく鳴らした音から、突発セッションに発展。軽く実力を見せつけてやろう。"
198
- ]
199
- return textFrom2D6Table(title, table)
200
- when 'TENKAI'
201
- title = 'シーン展開表(P201)'
202
- table = [
203
- [11, "絶望: ステップを更に大きくする、あるいはシーンプレイヤーを破滅に追い込むような状況に陥ります。【ディスコード】+2点。"],
204
- [12, "崩壊: ステップによってシーンプレイヤーの大切なものが崩壊する、あるいは崩壊目前に追い込まれます。【ディスコード】+2点。"],
205
- [13, "断絶: シーンプレイヤーはステップによって何かと絶縁状態になります。【ディスコード】+2点。"],
206
- [14, "恐怖: ステップに恐怖するような出来事に遭遇します。【ディスコード】+2点。"],
207
- [15, "誤解: シーンプレイヤーがステップに関するなんらかの誤解を受けます。【ディスコード】+2点。"],
208
- [16, "試練: シーンプレイヤーはステップに関連した試練に直面します。【ディスコード】+2点。"],
209
- [22, "悪心: シーンプレイヤーの心に魔が差し、ステップを不合理に解決しようとします。【ディスコード】+1点。"],
210
- [23, "束縛: ステップに関わるなんらかに束縛され、自由な行動ができなくなります。【ディスコード】+1点。"],
211
- [24, "凶兆: ステップについて、悪いことが起きそうな前触れが訪れます。【ディスコード】+1点。"],
212
- [25, "加速: シーンプレイヤーはステップの解決に追われます。【ディスコード】+1点。"],
213
- [26, "日常: シーンプレイヤーはのんびりとした日常を送ります。【コンディション】+1点。"],
214
- [33, "休息: ステップを忘れられるような、穏やかなひとときを過ごします。【コンディション】+1点。"],
215
- [34, "吉兆: ステップについて、いいことが起きそうな前触れが訪れます。【コンディション】+1点。"],
216
- [35, "発見: シーンプレイヤーはステップについて何かを発見します。【コンディション】+1点。"],
217
- [36, "希望: シーンプレイヤーの中に、ステップに対して前向きに取り組む意思が生まれます。【コンディション】+1点。"],
218
- [44, "成長: ステップを通して、シーンプレイヤーが成長します。【コンディション】+2点。"],
219
- [45, "愛情: ステップを通して、シーンプレイヤーが愛情に触れます。【コンディション】+2点。"],
220
- [46, "朗報: ステップに関する良い知らせが舞い込みます。【コンディション】+2点。"],
221
- [55, "好転: ステップが良い方向に向かうような事件が起きます。【コンディション】+3点。"],
222
- [56, "直感: ステップを解決させる決定的な閃きを得ます。【コンディション】+3点。"],
223
- [66, "奇跡: ステップに関して、奇跡的な幸運が舞い込みます。【コンディション】+3点。"],
224
- ]
225
- return textFromD66Table(title, table)
226
- # when 'TEMP'
227
- # title = '表(P)'
228
- # table = [
229
- # [11, ""],
230
- # [12, ""],
231
- # [13, ""],
232
- # [14, ""],
233
- # [15, ""],
234
- # [16, ""],
235
- # [22, ""],
236
- # [23, ""],
237
- # [24, ""],
238
- # [25, ""],
239
- # [26, ""],
240
- # [33, ""],
241
- # [34, ""],
242
- # [35, ""],
243
- # [36, ""],
244
- # [44, ""],
245
- # [45, ""],
246
- # [46, ""],
247
- # [55, ""],
248
- # [56, ""],
249
- # [66, ""],
250
- # ]
251
- # return textFromD66Table(title, table)
252
58
  end
253
59
 
254
- return nil
255
- end
256
-
257
- def textFromD66Table(title, table)
258
- dice = @randomizer.roll_d66(D66SortType::ASC)
259
- number, text, = table.assoc(dice)
260
-
261
- return "#{title} > [#{number}] > #{text}"
262
- end
263
-
264
- def textFrom1D6Table(title, table1, table2 = nil)
265
- text1, number1 = get_table_by_1d6(table1)
266
-
267
- text = "#{title} > "
268
- if table2.nil?
269
- text += "[#{number1}] > #{text1}"
270
- else
271
- text2, number2 = get_table_by_1d6(table2)
272
- text += "[#{number1},#{number2}] > #{text1}#{text2}"
273
- end
274
-
275
- return text
276
- end
277
-
278
- def textFrom2D6Table(title, table)
279
- text, number = get_table_by_2d6(table)
280
-
281
- return "#{title} > [#{number}] > #{text}"
60
+ roll_tables(command, self.class::TABLES)
282
61
  end
283
62
 
284
63
  def getSkillList(field = 0)
285
- title = '特技リスト'
286
- table = [
287
- ['主義', ['過去', '恋人', '仲間', '家族', '自分', '今', '理由', '夢', '世界', '幸せ', '未来']],
288
- ['身体', ['頭', '目', '耳', '口', '胸', '心臓', '血', '背中', '手', 'XXX', '足']],
289
- ['モチーフ', ['闇', '武器', '魔法', '獣', '町', '歌', '食べ物', '花', '空', '季節', '光']],
290
- ['エモーション', ['悲しい', '怒り', '不安', '恐怖', '驚き', '高鳴り', '情熱', '確信', '期待', '楽しい', '喜び']],
291
- ['行動', ['泣く', '忘れる', '消す', '壊す', '叫ぶ', '歌う', '踊る', '走る', '鳴らす', '呼ぶ', '笑う']],
292
- ['逆境', ['死', '喪失', '暴力', '孤独', '後悔', '実力', '退屈', '権力', '富', '恋愛', '生']],
293
- ]
64
+ title = translate("StratoShout.AT.name")
65
+ table = translate("StratoShout.AT.table")
294
66
 
295
67
  number1 = 0
296
68
  if field == 0
@@ -306,11 +78,36 @@ module BCDice
306
78
  if field == 0
307
79
  text += " > [#{number1},#{number2}]"
308
80
  else
309
- text += "(#{fieldName}分野) > [#{number2}]"
81
+ skill_class = translate("StratoShout.AT.skill_class", name: fieldName)
82
+ text += "#{skill_class} > [#{number2}]"
310
83
  end
311
84
 
312
85
  return "#{text} > 《#{skill}/#{fieldName}#{number2}》"
313
86
  end
87
+
88
+ class << self
89
+ private
90
+
91
+ def translate_tables(locale)
92
+ {
93
+ "VOT" => DiceTable::Table.from_i18n("StratoShout.table.VOT", locale),
94
+ "GUT" => DiceTable::Table.from_i18n("StratoShout.table.GUT", locale),
95
+ "BAT" => DiceTable::Table.from_i18n("StratoShout.table.BAT", locale),
96
+ "KEYT" => DiceTable::Table.from_i18n("StratoShout.table.KEYT", locale),
97
+ "DRT" => DiceTable::Table.from_i18n("StratoShout.table.DRT", locale),
98
+ "EMO" => DiceTable::Table.from_i18n("StratoShout.table.EMO", locale),
99
+ "SCENE" => DiceTable::Table.from_i18n("StratoShout.table.SCENE", locale),
100
+ "MACHI" => DiceTable::Table.from_i18n("StratoShout.table.MACHI", locale),
101
+ "GAKKO" => DiceTable::Table.from_i18n("StratoShout.table.GAKKO", locale),
102
+ "BAND" => DiceTable::Table.from_i18n("StratoShout.table.BAND", locale),
103
+ "TENKAI" => DiceTable::D66Table.from_i18n("StratoShout.table.TENKAI", locale),
104
+ }
105
+ end
106
+ end
107
+
108
+ TABLES = translate_tables(:ja_jp)
109
+
110
+ register_prefix(TABLES.keys)
314
111
  end
315
112
  end
316
113
  end
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/game_system/StratoShout"
4
+
3
5
  module BCDice
4
6
  module GameSystem
5
- class StratoShout_Korean < Base
7
+ class StratoShout_Korean < StratoShout
6
8
  # ゲームシステムの識別子
7
9
  ID = 'StratoShout:Korean'
8
10
 
@@ -22,293 +24,15 @@ module BCDice
22
24
  []내는 생략가능 D66는 변동있음
23
25
  INFO_MESSAGE_TEXT
24
26
 
25
- register_prefix([
26
- 'VOT',
27
- 'GUT',
28
- 'BAT',
29
- 'KEYT',
30
- 'DRT',
31
- 'EMO',
32
- 'AT[1-6]?',
33
- 'SCENE',
34
- 'MACHI',
35
- 'GAKKO',
36
- 'BAND',
37
- 'TENKAI'
38
- ])
27
+ register_prefix_from_super_class()
39
28
 
40
29
  def initialize(command)
41
30
  super(command)
42
31
 
43
- @sort_add_dice = true
44
- @enabled_d66 = true
45
- @d66_sort_type = D66SortType::ASC
46
- end
47
-
48
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
49
- return '' if target == '?'
50
- return '' unless cmp_op == :>=
51
-
52
- if dice_total <= 2
53
- " > 펌블! (드라마페이즈: 【디스코드】+2 / 라이브페이즈: 【컨디션】-2)"
54
- elsif dice_total >= 12
55
- " > 스페셜! (【컨디션】+2)"
56
- elsif total >= target
57
- " > 성공"
58
- else
59
- " > 실패"
60
- end
61
- end
62
-
63
- def eval_game_system_specific_command(command)
64
- case command.upcase
65
- when 'VOT'
66
- title = '보컬 트러블표(P167)'
67
- table = [
68
- "가사를 잊어버렸다! 어떤 말도 나오지 않아……",
69
- "마이크 코드에 발이 걸려버렸다! 위험해!",
70
- "마이크 스탠드가 쓰러져버렸다!",
71
- "음정이 어긋나고 있지만, 쉽게 고칠 수가 없어!",
72
- "리듬이 어긋나고 있는 것 같다……수정할 수 없어!",
73
- "목이 갈라질 것 같다. 위험해, 비축하지 않으면……!"
74
- ]
75
- return textFrom1D6Table(title, table)
76
- when 'GUT'
77
- title = '기타 트러블표(P169)'
78
- table = [
79
- "위험해, 코드를 틀렸다! 어떻게든 무마시키자……",
80
- "겍, 실드(신호를 전달하는 코드)가 빠져버렸다! 소리가 안 나와!",
81
- "기타 소리에 노이즈가 낀 것 같은데……고쳐져라……!",
82
- "어라? 지금 곡의 어느 부분이더라……?",
83
- "현이 끊겨버렸다! 무슨 불길한…….",
84
- "피크가 날아가버렸다! 손가락으로 칠 수밖에 없어……!"
85
- ]
86
- return textFrom1D6Table(title, table)
87
- when 'BAT'
88
- title = '베이스 트러블표(P171)'
89
- table = [
90
- "위험해, 코드를 틀렸다! 안 틀린 척 넘어가자……",
91
- "겍, 실드(신호를 전달하는 코드)가 뽑혔다! 소리가 안 나와!",
92
- "베이스 소리에 노이즈가 섞인 것 같은데……고쳐져라……!",
93
- "어라? 지금 어디 치고 있었더라……?",
94
- "손 끝의 감각이 둔해지기 시작했다. 안 움직여……!",
95
- "템포가 좀 빨라졌지만, 멈출 수 없어!"
96
- ]
97
- return textFrom1D6Table(title, table)
98
- when 'KEYT'
99
- title = '키보드 트러블표(P173)'
100
- table = [
101
- "손 끝의 감각이 둔해지기 시작했다. 안 움직여……!",
102
- "실수로 볼륨 슬라이드를 건드렸다! 굉음이 나올거야!",
103
- "어라? 지금 어디 치고 있었지……?",
104
- "음이 안 나는 건반이 있어……고장!?",
105
- "음색 잘못 골랐다! 원래 음색 몇 번에 저장해뒀었지……!?",
106
- "건반 한 개를 잘못 짚었어……! 불협화음이다!"
107
- ]
108
- return textFrom1D6Table(title, table)
109
- when 'DRT'
110
- title = '드럼 트러블표(P175)'
111
- table = [
112
- "팔이 꼬이기 시작했다! 다시 제대로 자릴 잡지 않으면……!",
113
- "어라? 지금 어디 치고 있었더라……?",
114
- "하이햇이 열리지 않아! 나사가 풀려있는 건가……!?",
115
- "애드립을 넣었는데, 다음 프레이즈가 기억나지 않는다……!",
116
- "템포가 점점 빨라지고 있지만, 멈출 수 없어!",
117
- "스틱이 날아갔다! 여분을 어디다 뒀더라……."
118
- ]
119
- return textFrom1D6Table(title, table)
120
- when 'EMO'
121
- title = '감정표(P183)'
122
- table = [
123
- "공감/불신",
124
- "우정/질투",
125
- "호적수/짜증",
126
- "불가결/경원",
127
- "존경/열등감",
128
- "애정/부담감"
129
- ]
130
- return textFrom1D6Table(title, table)
131
- when /^AT([1-6]?)$/
132
- value = Regexp.last_match(1).to_i
133
- return getSkillList(value)
134
- when "SCENE"
135
- title = "장면표(P199)"
136
- table = [
137
- "혼자만의 시간.문득 과거의 기억을 더듬어본다.그러고 보면 예전에 이런 일이 있었던 것 같은데…….",
138
- "어디선가 언쟁하는 듯한 소리가 들려온다. 싸우는 걸까?",
139
- "밤의 장막이 걷히고, 주변은 정적에 휩싸여 간다. 그녀석은 지금 뭘 하고있을까.",
140
- "동료와 함께 식사를 하고있자니, 화제는 자연스레 그 이야기로……",
141
- "웃음소리로 가득 찬 공간. 계속 이런 시간이 이어지면 좋을텐데.",
142
- "햇볕이 드는 장소. 바쁜 일상에서 잠시 빠져나와 평온한 시간이 흘러간다.",
143
- "스마트폰에서 착신 알람이 울린다. 전화? 메시지? 누구한테서 온 걸까.",
144
- "갑작스레 누군가가 당신을 찾아왔다. 뭔가 전할 것이 있는 모양이다.",
145
- "누군가가 잃어버린 물건을 발견했다. 전해주는 게 좋으려나.",
146
- "누군가 소문에 대한 이야기를 하고 있다. 들을 생각이 없어도 그것은 제멋대로 들려온다.",
147
- "어쩐지 오한이 인다. 좋지 않은 일이 일어날 것만 같은……"
148
- ]
149
- return textFrom2D6Table(title, table)
150
- when "MACHI"
151
- title = "거리 장면표(P199)"
152
- table = [
153
- "들어간 적 없는 곳에 처음으로 발을 내딛었다. 조금 긴장되네.",
154
- "아르바이트를 하는 곳. 함께 일하는 동료가 의외의 사실을 알려주었다.",
155
- "대화하는 것조차 어려울 정도로 큰 소리의 음악. 그 곳에 있는 것만으로도 기분이 고양된다.",
156
- "횡단보도에서 신호를 기다리고 있다보니 낯익은 인물의 모습을 발견했다.",
157
- "갑작스럽게 내리는 비에 당황해서 발걸음을 빨리 하는 사람들. 나도 빨리 돌아가야 하는데.",
158
- "무심코 들른 가게 안에서 아는 사람과 딱 마주쳤다. 이런 곳에서 뭘 하는 거야?",
159
- "연습을 끝내고 들른 음식점에서 의외의 인물을 발견. 잠시 그 모습을 지켜보자.",
160
- "여기저기서 어린 아이들의 신이 난 소목소리가 들려온다. 나도 저런 때가 있었을까?",
161
- "아무 소리도 없는 정적의 세계. 가끔은 소리를 멀리 하는 것도 좋겠지. ",
162
- "전차 안. 손잡이를 붙잡은 채 흔들리고 있다보니, 승객 중에서 낯익은 사람을 발견했다. ",
163
- "가라오케의 복도를 걷고 있다보면 어디선가 들어본 적 있는 목소리가……?"
164
- ]
165
- return textFrom2D6Table(title, table)
166
- when "GAKKO"
167
- title = "학교 장면표(P199)"
168
- table = [
169
- "교정 뒤에서 무언가에 대해 이야기하는 두 사람을 발견했다. 대체 무슨 얘기를 하고 있는 걸까……",
170
- "어느 동아리실, 부원들은 집중한 채 부활동에 힘쓰고 있는 것 같은데……",
171
- "선생님한테서 타겟에 대한 질문을 받았다. 뭔가 신경쓰이는 게 있는 모양이다.",
172
- "나뭇잎 사이로 아침햇살이 비쳐드는 등굣길. 어떤 사람은 바쁜 듯이, 또 어떤 사람은 즐거운 듯이 학교로 향하고 있다. ",
173
- "쉬는 시간. 교실 여기저기에 떠도는 시시한 소문들. 그 중에서 신경쓰이는 화제가 들려왔다.",
174
- "모든 것이 노을빛으로 물드는 해질녘. 학생들은 학업에서 해방되어 자유롭게 얼마 남지 않은 하루를 보내고 있다.",
175
- "이동수업용 교실로 향하는 구름다리에서 아래를 내려다보면, 낯익은 인물이 있다.",
176
- "점심 시간. 학생들은 제각각의 장소에서 점심 식사를 하고 있다. 자 그럼, 난 어디서 먹을까.",
177
- "선생님에게서 심부름을 부탁받아 떠맡고 말았다. 얼른 해치워버리자. ",
178
- "슬슬 학교의 문이 닫힐 시간이다. 불이 들어와 있는 교실은 이제 거의 없다",
179
- "스피커에서 교내방송이 들려온다. 누군가를 부르고 있는 것 같은데……?"
180
- ]
181
- return textFrom2D6Table(title, table)
182
- when "BAND"
183
- title = "밴드 장면표(P199)"
184
- table = [
185
- "음악 전문 인터넷 뉴스 사이트를 체크. 크고 작은 기사가 투고되어 있다.",
186
- "의외의 장소에서 연습하고 있는 인물을 발견. 살짝 말을 걸어볼까.",
187
- "사소한 벽에 부딪쳤다. 누군가한테 상담하는 게 좋을지도……",
188
- "라이브를 보기 위해 라이브 하우스에 찾아왔다. 어떤 스테이지가 되려나.",
189
- "멤버들과 만나기로 한 라이브하우스. 도착해 있는 건 우리들만이 아닌 것 같다",
190
- "연습이 끝난 후 돌아가는 길. 그녀석도 지금쯤 연습이 끝났으려나.",
191
- "어디선가 악기 소리가 들려온다. 누가 연주하고 있는 걸까.",
192
- "열기로 가득한 방에서 나와 스튜디오의 대합실에서 쿨 다운. 소파에 앉아있는 건……",
193
- "악기점에 방문했다가 낯익은 인물을 발견. 뭘 하러 온 걸까.",
194
- "최신 히트곡이 흐르고 있는 CD가게 안. 다음 곡은 어떤 걸로 할까……",
195
- "무심코 울린 소리에서 즉흥 세션으로 발전. 가볍게 실력을 보여줄까."
196
- ]
197
- return textFrom2D6Table(title, table)
198
- when 'TENKAI'
199
- title = '장면 전개표(P201)'
200
- table = [
201
- [11, "절망 : 절차를 역으로 크게 하거나 혹은, 장면 플레이어를 파멸로 몰아넣는 상황에 빠져듭니다.【디스코드】+2점"],
202
- [12, "붕괴 : 절차에 의해 장면 플레이어의 소중한 것이 붕괴되거나 혹은, 붕괴 직전에 몰립니다.【디스코드】+2점"],
203
- [13, "단절 : 장면 플레이어는 절차에 의해 무언가와 절연 상태가 됩니다.【디스코드】+2점"],
204
- [14, "공포 : 절차에 공포를 느낄만한 일과 조우합니다.【디스코드】+2점"],
205
- [15, "오해 : 장면 플레이어가 절차에 관련된 어떤 오해를 받습니다.【디스코드】+2점"],
206
- [16, "시련 : 장면 플레이어는 절차에 관련된 시련에 직면합니다.【디스코드】+2점"],
207
- [22, "악의 : 장면 플레이어의 마음에 순간적으로 나쁜 마음이 깃들어, 절차를 불합리하게 해결하려 합니다.【디스코드】+1점"],
208
- [23, "속박 : 절차에 관련된 무언가에 속박되어, 자유로운 행동이 불가능해집니다.【디스코드】+1점"],
209
- [24, "흉조 : 절차에 대해 나쁜 일이 일어날 것만 같은 조짐이 찾아옵니다.【디스코드】+1점"],
210
- [25, "가속 : 장면 플레이어는 절차의 해결에 쫓깁니다.【디스코드】+1점"],
211
- [26, "일상 : 장면 플레이어는 한가로운 일상을 보냅니다.【컨디션】+1점"],
212
- [33, "휴식 : 절차를 잊어버릴만큼 평온한 한 때를 보냅니다.【컨디션】+1점"],
213
- [34, "길조 : 절차에 대해 좋은 일이 일어날 것 같은 조짐이 찾아옵니다.【컨디션】+1점"],
214
- [35, "발견 : 장면 플레이어는 절차에 대한 무언가를 발견합니다.【컨디션】+1점"],
215
- [36, "희망 : 장면 플레이어의 마음 속에 절차에 대해 긍정적으로 맞설 의사가 생겨납니다.【컨디션】+1점"],
216
- [44, "성장 : 절차를 통해 장면 플레이어가 성장합니다.【컨디션】+2점"],
217
- [45, "애정 : 절차를 통해 장면 플레이어가 애정에 닿게 됩니다.【컨디션】+2점"],
218
- [46, "낭보 : 절차에 대한 좋은 소식이 날아들어옵니다.【컨디션】+2점"],
219
- [55, "호전 : 절차가 좋은 방향으로 향할 것 같은 사건이 일어납니다.【컨디션】+3점"],
220
- [56, "직감 : 절차를 해결할 수 있는 결정적인 번뜩임을 얻습니다.【컨디션】+3점"],
221
- [66, "기적 : 절차에 관한 기적적인 행운이 찾아옵니다.【컨디션】+3점"],
222
- ]
223
- return textFromD66Table(title, table)
224
- # when 'TEMP'
225
- # title = '表(P)'
226
- # table = [
227
- # [11, ""],
228
- # [12, ""],
229
- # [13, ""],
230
- # [14, ""],
231
- # [15, ""],
232
- # [16, ""],
233
- # [22, ""],
234
- # [23, ""],
235
- # [24, ""],
236
- # [25, ""],
237
- # [26, ""],
238
- # [33, ""],
239
- # [34, ""],
240
- # [35, ""],
241
- # [36, ""],
242
- # [44, ""],
243
- # [45, ""],
244
- # [46, ""],
245
- # [55, ""],
246
- # [56, ""],
247
- # [66, ""],
248
- # ]
249
- # return textFromD66Table(title, table)
250
- end
251
-
252
- return nil
253
- end
254
-
255
- def textFromD66Table(title, table)
256
- dice = @randomizer.roll_d66(D66SortType::ASC)
257
- number, text, = table.assoc(dice)
258
-
259
- return "#{title} > [#{number}] > #{text}"
260
- end
261
-
262
- def textFrom1D6Table(title, table1, table2 = nil)
263
- text1, number1 = get_table_by_1d6(table1)
264
-
265
- text = "#{title} > "
266
- if table2.nil?
267
- text += "[#{number1}] > #{text1}"
268
- else
269
- text2, number2 = get_table_by_1d6(table2)
270
- text += "[#{number1},#{number2}] > #{text1}#{text2}"
271
- end
272
-
273
- return text
274
- end
275
-
276
- def textFrom2D6Table(title, table)
277
- text, number = get_table_by_2d6(table)
278
-
279
- return "#{title} > [#{number}] > #{text}"
32
+ @locale = :ko_kr
280
33
  end
281
34
 
282
- def getSkillList(field = 0)
283
- title = '특기 리스트'
284
- table = [
285
- ['주의', ['과거', '연인', '동료', '가족', '자신', '지금', '이유', '꿈', '세계', '행복', '미래']],
286
- ['신체', ['머리', '눈', '귀', '입', '가슴', '심장', '피', '등', '손', 'XXX', '발']],
287
- ['모티브', ['어둠', '무기', '짐승', '기계', '거리', '노래', '창', '꽃', '하늘', '계절', '빛']],
288
- ['정서', ['슬픔', '분노', '불안', '공포', '놀라움', '설렘', '정열', '확신', '기대', '즐거움', '기쁨']],
289
- ['행동', ['우는', '잊는', '지우는', '부수는', '외치는', '노래하는', '춤추는', '달리는', '만나는', '부르는', '웃는']],
290
- ['역경', ['죽음', '상실', '폭력', '고독', '후회', '실력', '싫증', '본성', '부', '연애', '삶']],
291
- ]
292
-
293
- number1 = 0
294
- if field == 0
295
- table, number1 = get_table_by_1d6(table)
296
- else
297
- table = table[field - 1]
298
- end
299
-
300
- fieldName, table = table
301
- skill, number2 = get_table_by_2d6(table)
302
-
303
- text = title
304
- if field == 0
305
- text += " > [#{number1},#{number2}]"
306
- else
307
- text += "(#{fieldName}분야) > [#{number2}]"
308
- end
309
-
310
- return "#{text} > 《#{skill}/#{fieldName}#{number2}》"
311
- end
35
+ TABLES = translate_tables(:ko_kr).freeze
312
36
  end
313
37
  end
314
38
  end