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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -28,7 +28,6 @@ module BCDice
28
28
  super(command)
29
29
 
30
30
  @sort_add_dice = true
31
- @enabled_d66 = true
32
31
  @d66_sort_type = D66SortType::NO_SORT
33
32
  end
34
33
 
@@ -39,94 +38,35 @@ module BCDice
39
38
  debug("eval_game_system_specific_command command", command)
40
39
 
41
40
  case command.upcase
42
-
43
- when "RT"
44
- tableName, result, number = getReimonCompensationTableResult
45
-
46
41
  when /^MT(\d*)$/
47
42
  rank = Regexp.last_match(1)
48
43
  rank ||= 1
49
44
  rank = rank.to_i
50
45
  tableName, result, number = getGetMaterialTableResult(rank)
51
-
52
46
  else
53
- return roll_tables(command, TABLES)
47
+ return roll_tables(command, self.class::TABLES)
54
48
  end
55
49
 
56
50
  if result.empty?
57
51
  return ""
58
52
  end
59
53
 
60
- text = "#{tableName}(#{number}):#{result}"
54
+ text = "#{tableName}(#{number}) > #{result}"
61
55
  return text
62
56
  end
63
57
 
64
- def getReimonCompensationTableResult
65
- tableName = "霊紋消費の代償表"
66
-
67
- table = [
68
- '邪神化:物理法則を超過しすぎた代償として、霊魂そのものが歪み、PCは即座にアラミタマへと変貌する。アラミタマ化したPCは、いずこかへと消え去る。',
69
- '存在消滅:アラミタマ化を最後の力で抑え込む。だがその結果、PCの霊魂は燃え尽きてしまい、この世界から消滅する。そのPCは[状態変化:死亡]となり死体も残らない。',
70
- '死亡:霊魂の歪みをかろうじて食い止めるが、霊魂が崩壊する。PCは[状態変化:死亡]となるが遺体は残る。',
71
- '霊魂半壊:霊魂の歪みを食い止めるものの、霊魂そのものに致命的な負傷を受け、全身に障害が残る。それに伴って霊紋も消滅し、一般人へと戻る。',
72
- '記憶消滅:奇跡的に霊魂の摩耗による身体的な悪影響を免れる。時間を置くことで霊紋も回復するが、精神的に影響を受け、すべての記憶を失ってしまう。',
73
- '影響なし:奇跡的に、霊魂の摩耗による悪影響を完全に退け、さらに霊紋の回復も早期を見込める。肉体や精神にも、特に影響はない。',
74
- ]
75
- result, number = get_table_by_1d6(table)
76
-
77
- return tableName, result, number
78
- end
79
-
80
58
  def getGetMaterialTableResult(rank)
81
- tableName = "獲得素材チャート"
82
- table = [
83
- '真紅の',
84
- 'ざらつく',
85
- '紺碧の',
86
- '鋭い',
87
- '黄金の',
88
- '柔らかな',
89
- '銀色の',
90
- '尖った',
91
- '純白の',
92
- '硬い',
93
- '漆黒の',
94
- '輝く',
95
- 'なめらかな',
96
- '濁った',
97
- 'ふさふさの',
98
- '邪悪な',
99
- '粘つく',
100
- '聖なる',
101
- '灼熱の',
102
- '炎の',
103
- '氷結の',
104
- '氷の',
105
- '熱い',
106
- '風の',
107
- '冷たい',
108
- '雷の',
109
- '土の',
110
- '幻の',
111
- '骨状の',
112
- '刻印の',
113
- '牙状の',
114
- '鱗状の',
115
- '石状の',
116
- '宝石状の',
117
- '毛皮状の',
118
- '羽根状の',
119
- ]
59
+ tableName = translate("Kamigakari.MT.name")
60
+ table = translate("Kamigakari.MT.items")
120
61
 
121
62
  result, number = get_table_by_d66(table)
122
- result += "断片"
123
63
 
124
64
  effect, number2 = getMaterialEffect(rank)
125
65
  number = "#{number},#{number2}"
126
66
 
127
67
  price = getPrice(effect)
128
68
 
129
- result = "#{result}。#{effect}"
69
+ result = translate("Kamigakari.MT.result_format", material: result, effect: effect)
130
70
  result += ":#{price}" unless price.nil?
131
71
 
132
72
  return tableName, result, number
@@ -139,10 +79,10 @@ module BCDice
139
79
  type = ""
140
80
  if number < 6
141
81
  result, number2 = getMaterialEffectNomal(rank)
142
- type = "よく見つかる素材"
82
+ type = translate("Kamigakari.MT.common_material.name")
143
83
  else
144
84
  result, number2 = getMaterialEffectRare()
145
- type = "珍しい素材"
85
+ type = translate("Kamigakari.MT.rare_material.name")
146
86
  end
147
87
 
148
88
  result = "#{type}:#{result}"
@@ -152,21 +92,7 @@ module BCDice
152
92
  end
153
93
 
154
94
  def getMaterialEffectNomal(rank)
155
- table = [
156
- [13, '体力+n'],
157
- [16, '敏捷+n'],
158
- [23, '知性+n'],
159
- [26, '精神+n'],
160
- [33, '幸運+n'],
161
- [35, '物D+n'],
162
- [41, '魔D+n'],
163
- [43, '行動+n'],
164
- [46, '生命+n×3'],
165
- [53, '装甲+n'],
166
- [56, '結界+n'],
167
- [63, '移動+nマス'],
168
- [66, '※PCの任意'],
169
- ]
95
+ table = translate("Kamigakari.MT.common_material.items")
170
96
 
171
97
  number = @randomizer.roll_d66(D66SortType::NO_SORT)
172
98
 
@@ -198,17 +124,19 @@ module BCDice
198
124
  end
199
125
 
200
126
  def getMaterialEffectRare()
201
- table = [[3, '**付与'],
202
- [5, '**半減'],
203
- [6, '※GMの任意'],]
127
+ table = [
128
+ [3, "**" + translate("Kamigakari.MT.rare_material.give_attribute")], # 付与
129
+ [5, "**" + translate("Kamigakari.MT.rare_material.halve_damage")], # 半減
130
+ [6, translate("Kamigakari.MT.rare_material.optional_by_GM")],
131
+ ]
204
132
 
205
133
  number = @randomizer.roll_once(6)
206
134
  result = get_table_by_number(number, table)
207
135
  debug('getMaterialEffectRare result', result)
208
136
 
209
- if result =~ /\*\*/
137
+ if result.include?("**")
210
138
  attribute, number2 = getAttribute()
211
- result = result.sub(/\*\*/, attribute.to_s)
139
+ result = result.sub("**", attribute.to_s)
212
140
  number = "#{number},#{number2}"
213
141
  end
214
142
 
@@ -216,16 +144,7 @@ module BCDice
216
144
  end
217
145
 
218
146
  def getAttribute()
219
- table = [
220
- [21, '[火炎]'],
221
- [33, '[冷気]'],
222
- [43, '[電撃]'],
223
- [53, '[風圧]'],
224
- [56, '[幻覚]'],
225
- [62, '[魔毒]'],
226
- [64, '[磁力]'],
227
- [66, '[閃光]'],
228
- ]
147
+ table = translate("Kamigakari.MT.attribute")
229
148
 
230
149
  number = @randomizer.roll_d66(D66SortType::NO_SORT)
231
150
 
@@ -235,160 +154,46 @@ module BCDice
235
154
  end
236
155
 
237
156
  def getPrice(effect)
238
- power = 0
239
-
240
- case effect
241
- when /\+(\d+)/
242
- power = Regexp.last_match(1).to_i
243
- when /付与/
244
- power = 3
245
- when /半減/
246
- power = 4
247
- else
248
- power = 0
249
- end
157
+ power =
158
+ if (m = effect.match(/\+(\d+)/))
159
+ m[1].to_i
160
+ elsif effect.include?(translate("Kamigakari.MT.rare_material.give_attribute")) # 付与
161
+ 3
162
+ elsif effect.include?(translate("Kamigakari.MT.rare_material.halve_damage")) # 半減
163
+ 4
164
+ else
165
+ 0
166
+ end
250
167
 
251
- table = [nil,
252
- '500G(効果値:1)',
253
- '1000G(効果値:2)',
254
- '1500G(効果値:3)',
255
- '2000G(効果値:4)',
256
- '3000G(効果値:5)',]
168
+ table = [
169
+ nil,
170
+ "500G(#{translate('Kamigakari.MT.effect_power')}:1)",
171
+ "1000G(#{translate('Kamigakari.MT.effect_power')}:2)",
172
+ "1500G(#{translate('Kamigakari.MT.effect_power')}:3)",
173
+ "2000G(#{translate('Kamigakari.MT.effect_power')}:4)",
174
+ "3000G(#{translate('Kamigakari.MT.effect_power')}:5)",
175
+ ]
257
176
  price = table[power]
258
177
 
259
178
  return price
260
179
  end
261
180
 
262
- TABLES = {
263
- "ET" => DiceTable::D66Table.new(
264
- "感情表",
265
- D66SortType::NO_SORT,
266
- {
267
- 11 => "運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。",
268
- 12 => "運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。",
269
- 13 => "家族/そのキャラクターに、家族のような親近感をいだいている。",
270
- 14 => "家族/そのキャラクターに、家族のような親近感をいだいている。",
271
- 15 => "腐れ縁/そのキャラクターに、腐れ縁を感じている。",
272
- 16 => "腐れ縁/そのキャラクターに、腐れ縁を感じている。",
273
- 21 => "師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。",
274
- 22 => "師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。",
275
- 23 => "好敵手/そのキャラクターを、好敵手だと感じている。",
276
- 24 => "好敵手/そのキャラクターを、好敵手だと感じている。",
277
- 25 => "親近感/そのキャラクターに、親近感をいだいている。",
278
- 26 => "親近感/そのキャラクターに、親近感をいだいている。",
279
- 31 => "誠意/そのキャラクターに、誠実さを感じている。",
280
- 32 => "誠意/そのキャラクターに、誠実さを感じている。",
281
- 33 => "友情/そのキャラクターに、友情をいだいている。",
282
- 34 => "友情/そのキャラクターに、友情をいだいている。",
283
- 35 => "尊敬/そのキャラクターに、尊敬をいだいている。",
284
- 36 => "尊敬/そのキャラクターに、尊敬をいだいている。",
285
- 41 => "庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。",
286
- 42 => "庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。",
287
- 43 => "好感/そのキャラクターに、好感をいだいている。",
288
- 44 => "好感/そのキャラクターに、好感をいだいている。",
289
- 45 => "興味/そのキャラクターに、興味をいだいている。",
290
- 46 => "興味/そのキャラクターに、興味をいだいている。",
291
- 51 => "感銘/そのキャラクターに、感銘をいだいている。",
292
- 52 => "感銘/そのキャラクターに、感銘をいだいている。",
293
- 53 => "畏怖/そのキャラクターに、畏怖をいだいている。",
294
- 54 => "畏怖/そのキャラクターに、畏怖をいだいている。",
295
- 55 => "お気に入り/そのキャラクターを、気に入っている。",
296
- 56 => "お気に入り/そのキャラクターを、気に入っている。",
297
- 61 => "愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。",
298
- 62 => "愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。",
299
- 63 => "信頼/そのキャラクターに、信頼を感じている。",
300
- 64 => "信頼/そのキャラクターに、信頼を感じている。",
301
- 65 => "*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。",
302
- 66 => "*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。"
303
- }
304
- ),
305
- "KT" => DiceTable::D66Table.new(
306
- "魔境臨界表",
307
- D66SortType::NO_SORT,
308
- {
309
- 11 => "時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。",
310
- 12 => "時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。",
311
- 13 => "強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。",
312
- 14 => "強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。",
313
- 15 => "影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。",
314
- 16 => "影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。",
315
- 21 => "無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。",
316
- 22 => "無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。",
317
- 23 => "空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。",
318
- 24 => "空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。",
319
- 25 => "防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。",
320
- 26 => "防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。",
321
- 31 => "素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。",
322
- 32 => "素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。",
323
- 33 => "なし\n特に何も起こらない。",
324
- 34 => "なし\n特に何も起こらない。",
325
- 35 => "モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。",
326
- 36 => "モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。",
327
- 41 => "休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。",
328
- 42 => "休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。",
329
- 43 => "龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。",
330
- 44 => "龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。",
331
- 45 => "固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。",
332
- 46 => "固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。",
333
- 51 => "龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。",
334
- 52 => "龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。",
335
- 53 => "術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。",
336
- 54 => "術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。",
337
- 55 => "装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。",
338
- 56 => "装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。",
339
- 61 => "愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。",
340
- 62 => "愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。",
341
- 63 => "GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。",
342
- 64 => "GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。",
343
- 65 => "臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。",
344
- 66 => "臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。"
345
- }
346
- ),
347
- "NT" => DiceTable::D66Table.new(
348
- "伝奇名字・名前決定表",
349
- D66SortType::NO_SORT,
181
+ class << self
182
+ private
183
+
184
+ def translate_tables(locale)
350
185
  {
351
- 11 => "御剣(みつるぎ) 陸/凛",
352
- 12 => "獅子内(ししうち) 大和/楓",
353
- 13 => "白銀(はくぎん) 隼人/桜",
354
- 14 => "竹内(たけのうち) 真/遥",
355
- 15 => "古太刀(こだち) 大地/美咲",
356
- 16 => "空閑(くが) 俊/真央",
357
- 21 => "鬼形(おにがた) 諒/舞",
358
- 22 => "御巫(みかんなぎ) 匠/七海",
359
- 23 => "護摩堂(ごまどう) 仁/千尋",
360
- 24 => "龍円(りゅうえん) 拓真/茜",
361
- 25 => "鏡部(かがみべ) 京/明日香",
362
- 26 => "犬神(いぬがみ) 剛/栞",
363
- 31 => "明月院(めいげついん) 葵/唯",
364
- 32 => "百目鬼(どうめき) 蓮也/萌",
365
- 33 => "恐神(おそがみ) 達也/綾香",
366
- 34 => "蘭(あららぎ) 龍之介/梓",
367
- 35 => "珠輝(たまき) 章/瞳",
368
- 36 => "眼龍(がんりゅう) 圭/沙織",
369
- 41 => "鉄砲塚(てっぽうづか) 雅人/沙良",
370
- 42 => "檻神(おりがみ) 直哉/弥生",
371
- 43 => "不死原(ふじわら) 純/千秋",
372
- 44 => "九郎座(くろうざ) 武蔵/春菜",
373
- 45 => "土御門(つちみかど) 亮介/翠",
374
- 46 => "十六夜(いざよい) 啓二/双葉",
375
- 51 => "転法輪(てんぽうりん) 英雄/麗菜",
376
- 52 => "執行(しぎょう) 響/小百合",
377
- 53 => "祝(ほうり) 良太郎/陽奈",
378
- 54 => "神尊(こうそ) 智/紫苑",
379
- 55 => "芦屋(あしや) 孝之/香澄",
380
- 56 => "七社(ななしゃ) 克己/風香",
381
- 61 => "騎馬(きば) 哲也/詩乃",
382
- 62 => "当麻(とうま) 玄/沙耶",
383
- 63 => "狐塚(きつねづか) 北斗/麻耶",
384
- 64 => "天神林(てんじんばやし) 空/晶",
385
- 65 => "明嵐(めあらし) 八雲/乙葉",
386
- 66 => "草壁(くさかべ) 大悟/文"
186
+ "RT" => DiceTable::Table.from_i18n("Kamigakari.table.RT", locale),
187
+ "ET" => DiceTable::D66Table.from_i18n("Kamigakari.table.ET", locale),
188
+ "KT" => DiceTable::D66Table.from_i18n("Kamigakari.table.KT", locale),
189
+ "NT" => DiceTable::D66Table.from_i18n("Kamigakari.table.NT", locale),
387
190
  }
388
- ),
389
- }.freeze
191
+ end
192
+ end
193
+
194
+ TABLES = translate_tables(:ja_jp)
390
195
 
391
- register_prefix(['RT', 'MT(\d*)'] + TABLES.keys)
196
+ register_prefix('MT(\d*)', TABLES.keys)
392
197
  end
393
198
  end
394
199
  end
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/game_system/Kamigakari"
4
+
3
5
  module BCDice
4
6
  module GameSystem
5
- class Kamigakari_Korean < Base
7
+ class Kamigakari_Korean < Kamigakari
6
8
  # ゲームシステムの識別子
7
9
  ID = 'Kamigakari:Korean'
8
10
 
@@ -24,405 +26,15 @@ module BCDice
24
26
  ・D66주사위 가능
25
27
  INFO_MESSAGE_TEXT
26
28
 
27
- register_prefix([
28
- 'RT',
29
- 'MT(\d*)',
30
- 'ET',
31
- 'NT',
32
- 'KT'
33
- ])
29
+ register_prefix_from_super_class()
34
30
 
35
31
  def initialize(command)
36
32
  super(command)
37
33
 
38
- @sort_add_dice = true
39
- @enabled_d66 = true
40
- @d66_sort_type = D66SortType::NO_SORT
41
- end
42
-
43
- def eval_game_system_specific_command(command)
44
- tableName = ""
45
- result = ""
46
-
47
- debug("eval_game_system_specific_command command", command)
48
-
49
- case command
50
-
51
- when "RT"
52
- tableName, result, number = getReimonCompensationTableResult
53
-
54
- when /^MT(\d*)$/
55
- rank = Regexp.last_match(1)
56
- rank ||= 1
57
- rank = rank.to_i
58
- tableName, result, number = getGetMaterialTableResult(rank)
59
-
60
- when "ET"
61
- tableName, result, number = getEmotionTableResult
62
-
63
- when "NT"
64
- tableName, result, number = getNameTableResult
65
-
66
- when "KT"
67
- tableName, result, number = getKyoukaiTableResult
68
-
69
- else
70
- debug("eval_game_system_specific_command commandNOT matched -> command:", command)
71
- return ""
72
- end
73
-
74
- if result.empty?
75
- return ""
76
- end
77
-
78
- text = "#{tableName}(#{number}):#{result}"
79
- return text
80
- end
81
-
82
- def getReimonCompensationTableResult
83
- tableName = "영문소비의 댓가표"
84
-
85
- table = [
86
- '사신화:물리법칙을 너무 초월한 대가로, 영혼이 왜곡되어, PC는 즉시 아라미타마로 변모한다. 아라미타마화한 PC는, 어딘가로 떠나간다.',
87
- '존재소멸:아라미타마화를 최후의 힘으로 억누른다. 하지만 그 결과, PC의 영혼은 불타버려, 이 세계에서 소멸한다. 그 PC는 [상태변화: 사망]이 되어, 시체도 남지 않는다.',
88
- '사망:영혼의 왜곡을 어떻게든 막지만, 영혼이 붕괴한다. PC는 [상태변화: 사망]이 되나 유체는 남는다.',
89
- '영혼반괴:영혼의 왜곡을 막아냈지만, 영혼 자체에 치명적인 부상을 입어, 전신에 장해가 남는다. 거기에 동반하여 영문도 소실해, 일반인으로 돌아간다.',
90
- '기억소멸:기적적으로, 영혼의 마모에 의한 신체적 악영향을 피한다. 시간을 두는 것으로 영문도 회복되나, 정신적인 영향을 받아, 모든 기억을 잃는다.',
91
- '영향없음:기적적으로, 영혼의 마모에 의한 악영향을 완전히 피하고, 또한 영문의 회복도 빠를 것으로 보인다. 육체나 정신 모두, 딱히 영향은 없다.',
92
- ]
93
- result, number = get_table_by_1d6(table)
94
-
95
- return tableName, result, number
96
- end
97
-
98
- def getEmotionTableResult
99
- tableName = "감정표"
100
-
101
- table = [
102
- [11, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'],
103
- [12, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'],
104
- [13, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'],
105
- [14, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'],
106
- [15, '악연/그 캐릭터에게, 악연을 느끼고 있다.'],
107
- [16, '악연/그 캐릭터에게, 악연을 느끼고 있다.'],
108
- [21, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
109
- [22, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
110
- [23, '호적수/그 캐릭터를, 호적수라 여기고 있다.'],
111
- [24, '호적수/그 캐릭터를, 호적수라 여기고 있다.'],
112
- [25, '친근감/그 캐릭터에게, 친근감을 품고 있다.'],
113
- [26, '친근감/그 캐릭터에게, 친근감을 품고 있다.'],
114
- [31, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'],
115
- [32, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'],
116
- [33, '우정/그 캐릭터에게, 우정을 품고 있다.'],
117
- [34, '우정/그 캐릭터에게, 우정을 품고 있다.'],
118
- [35, '존경/그 캐릭터에게, 존경을 품고 있다.'],
119
- [36, '존경/그 캐릭터에게, 존경을 품고 있다.'],
120
- [41, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
121
- [42, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
122
- [43, '호감/그 캐릭터에게, 호감을 품고 있다.'],
123
- [44, '호감/그 캐릭터에게, 호감을 품고 있다.'],
124
- [45, '흥미/그 캐릭터에게, 흥미를 품고 있다.'],
125
- [46, '흥미/그 캐릭터에게, 흥미를 품고 있다.'],
126
- [51, '감명/그 캐릭터에게, 감명을 느끼고 있다.'],
127
- [52, '감명/그 캐릭터에게, 감명을 느끼고 있다.'],
128
- [53, '외경/그 캐릭터를 두려워하고 있다.'],
129
- [54, '외경/그 캐릭터를 두려워하고 있다.'],
130
- [55, '마음에 듬/그 캐릭터를 마음에 들어한다.'],
131
- [56, '마음에 듬/그 캐릭터를 마음에 들어한다.'],
132
- [61, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'],
133
- [62, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'],
134
- [63, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'],
135
- [64, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'],
136
- [65, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'],
137
- [66, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'],
138
- ]
139
-
140
- number = @randomizer.roll_d66(D66SortType::NO_SORT)
141
-
142
- result = get_table_by_number(number, table)
143
-
144
- return tableName, result, number
145
- end
146
-
147
- def getNameTableResult
148
- tableName = "전기 성씨・이름 결정표"
149
-
150
- table = [
151
- [11, '미츠루기(御剣) 리쿠/린'],
152
- [12, '시시우치(獅子内) 야마토/카에데'],
153
- [13, '하쿠긴(白銀) 하야토/사쿠라'],
154
- [14, '타케노우치(竹内) 마코토/하루카'],
155
- [15, '코다치(古太刀) 다이치/미사'],
156
- [16, '쿠가(空閑) 슌/마오'],
157
- [21, '오니가타(鬼形) 료/마이'],
158
- [22, '미칸나기(御巫) 타쿠미/나나미'],
159
- [23, '고마도우(護摩堂) 히토시/치히로'],
160
- [24, '류엔(龍円) 타쿠마/아카네'],
161
- [25, '카가미베(鏡部) 쿄우/아스카'],
162
- [26, '이누가미(犬神) 코우/시오리'],
163
- [31, '메이게츠인(明月院) 아오이/유이'],
164
- [32, '도우메키(百目鬼) 렌야/모에'],
165
- [33, '오소가미(怨神) 타츠야/아야카'],
166
- [34, '아라라기(蘭) 류노스케/아즈사'],
167
- [35, '타마키(珠輝) 아키라/히토미'],
168
- [36, '간류(眼龍) 케이/사오리'],
169
- [41, '텟포즈카(鉄砲塚) 마사토/사라'],
170
- [42, '오리가미(檻神) 나오야/야요이'],
171
- [43, '후지와라(不死原) 쥰/치아키'],
172
- [44, '쿠로우자(九朗座) 무사시/하루나'],
173
- [45, '츠치미카도(土御門) 쿄스케/스이'],
174
- [46, '이자요이(十六夜) 케이지/후타바'],
175
- [51, '텐포우린(転法輪) 히로/레나'],
176
- [52, '시교우(執行) 히비키/사유리'],
177
- [53, '호우리(祝) 료타로/히나'],
178
- [54, '코우소(神尊) 토모/시온'],
179
- [55, '아시야(芦屋) 타카유키/카스미'],
180
- [56, '나나샤(七社) 카즈키/후카'],
181
- [61, '키바(騎馬) 테츠야/시노'],
182
- [62, '토우마(当麻) 켄/사야'],
183
- [63, '키츠네즈카(狐塚) 호쿠토/마야'],
184
- [64, '텐진바야시(天神林) 소라/아키라'],
185
- [65, '메아라시(明嵐) 야쿠모/오토하'],
186
- [66, '쿠사카베(草壁) 다이고/아야'],
187
- ]
188
-
189
- number = @randomizer.roll_d66(D66SortType::NO_SORT)
190
-
191
- result = get_table_by_number(number, table)
192
-
193
- return tableName, result, number
194
- end
195
-
196
- def getKyoukaiTableResult
197
- tableName = "마경임계표"
198
-
199
- table = [
200
- [11, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."],
201
- [12, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."],
202
- [13, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."],
203
- [14, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."],
204
- [15, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."],
205
- [16, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."],
206
- [21, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."],
207
- [22, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."],
208
- [23, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."],
209
- [24, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."],
210
- [25, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."],
211
- [26, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."],
212
- [31, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."],
213
- [32, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."],
214
- [33, "없음\n딱히 아무 일도 일어나지 않는다."],
215
- [34, "없음\n딱히 아무 일도 일어나지 않는다."],
216
- [35, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."],
217
- [36, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."],
218
- [41, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."],
219
- [42, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."],
220
- [43, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."],
221
- [44, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."],
222
- [45, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."],
223
- [46, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."],
224
- [51, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."],
225
- [52, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."],
226
- [53, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."],
227
- [54, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."],
228
- [55, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다.。"],
229
- [56, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다."],
230
- [61, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."],
231
- [62, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."],
232
- [63, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."],
233
- [64, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."],
234
- [65, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."],
235
- [66, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."],
236
- ]
237
-
238
- number = @randomizer.roll_d66(D66SortType::NO_SORT)
239
-
240
- result = get_table_by_number(number, table)
241
-
242
- return tableName, result, number
243
- end
244
-
245
- def getGetMaterialTableResult(rank)
246
- tableName = "획득 소재 차트"
247
- table = [
248
- '진홍의 ',
249
- '까끌까끌한 ',
250
- '비취의 ',
251
- '예리한 ',
252
- '황금의 ',
253
- '말랑말랑한 ',
254
- '은색의 ',
255
- '뾰족한 ',
256
- '순백의 ',
257
- '딱딱한 ',
258
- '칠흑의 ',
259
- '빛나는 ',
260
- '매끄러운 ',
261
- '탁한 ',
262
- '덥수룩한 ',
263
- '사악한 ',
264
- '끈적이는 ',
265
- '성스러운 ',
266
- '작열의 ',
267
- '불꽃의 ',
268
- '빙결의 ',
269
- '얼음의 ',
270
- '뜨거운 ',
271
- '바람의 ',
272
- '차가운 ',
273
- '번개의 ',
274
- '흙의 ',
275
- '환상의 ',
276
- '뼈형태의 ',
277
- '봉인의 ',
278
- '이빨형태의 ',
279
- '비늘형태의 ',
280
- '돌형태의 ',
281
- '보석형태의 ',
282
- '모피형태의 ',
283
- '깃털형태의 ',
284
- ]
285
-
286
- result, number = get_table_by_d66(table)
287
- result += "단편"
288
-
289
- effect, number2 = getMaterialEffect(rank)
290
- number = "#{number},#{number2}"
291
-
292
- price = getPrice(effect)
293
-
294
- result = "#{result}.#{effect}"
295
- result += ":#{price}" unless price.nil?
296
-
297
- return tableName, result, number
298
- end
299
-
300
- def getMaterialEffect(rank)
301
- number = @randomizer.roll_once(6)
302
-
303
- result = ""
304
- type = ""
305
- if number < 6
306
- result, number2 = getMaterialEffectNomal(rank)
307
- type = "자주 발견되는 소재"
308
- else
309
- result, number2 = getMaterialEffectRare()
310
- type = "드문 소재"
311
- end
312
-
313
- result = "#{type}:#{result}"
314
- number = "#{number},#{number2}"
315
-
316
- return result, number
317
- end
318
-
319
- def getMaterialEffectNomal(rank)
320
- table = [
321
- [13, '체력+n'],
322
- [16, '민첩+n'],
323
- [23, '지성+n'],
324
- [26, '정신+n'],
325
- [33, '행운+n'],
326
- [35, '물D+n'],
327
- [41, '마D+n'],
328
- [43, '행동+n'],
329
- [46, '생명+n×3'],
330
- [53, '장갑+n'],
331
- [56, '결계+n'],
332
- [63, '이동+n마스'],
333
- [66, '※PC의 임의'],
334
- ]
335
-
336
- number = @randomizer.roll_d66(D66SortType::NO_SORT)
337
-
338
- result = get_table_by_number(number, table)
339
- debug("getMaterialEffectNomal result", result)
340
-
341
- if result =~ /\+n/
342
- power, number2 = getMaterialEffectPower(rank)
343
-
344
- result = result.sub(/\+n/, "+#{power}")
345
- number = "#{number},#{number2}"
346
- end
347
-
348
- return result, number
34
+ @locale = :ko_kr
349
35
  end
350
36
 
351
- def getMaterialEffectPower(rank)
352
- table = [
353
- [4, [1, 1, 1, 2, 2, 3]],
354
- [8, [1, 1, 2, 2, 3, 3]],
355
- [9, [1, 2, 3, 3, 4, 5]],
356
- ]
357
-
358
- rank = 9 if rank > 9
359
- rankTable = get_table_by_number(rank, table)
360
- power, number = get_table_by_1d6(rankTable)
361
-
362
- return power, number
363
- end
364
-
365
- def getMaterialEffectRare()
366
- table = [[3, '**부여'],
367
- [5, '**반감'],
368
- [6, '※GM의 임의'],]
369
-
370
- number = @randomizer.roll_once(6)
371
- result = get_table_by_number(number, table)
372
- debug('getMaterialEffectRare result', result)
373
-
374
- if result =~ /\*\*/
375
- attribute, number2 = getAttribute()
376
- result = result.sub(/\*\*/, attribute.to_s)
377
- number = "#{number},#{number2}"
378
- end
379
-
380
- return result, number
381
- end
382
-
383
- def getAttribute()
384
- table = [
385
- [21, '[화염]'],
386
- [33, '[냉기]'],
387
- [43, '[전격]'],
388
- [53, '[풍압]'],
389
- [56, '[환각]'],
390
- [62, '[마독]'],
391
- [64, '[자력]'],
392
- [66, '[섬광]'],
393
- ]
394
-
395
- number = @randomizer.roll_d66(D66SortType::NO_SORT)
396
-
397
- result = get_table_by_number(number, table)
398
-
399
- return result, number
400
- end
401
-
402
- def getPrice(effect)
403
- power = 0
404
-
405
- case effect
406
- when /\+(\d+)/
407
- power = Regexp.last_match(1).to_i
408
- when /부여/
409
- power = 3
410
- when /반감/
411
- power = 4
412
- else
413
- power = 0
414
- end
415
-
416
- table = [nil,
417
- '500G(효과치:1)',
418
- '1000G(효과치:2)',
419
- '1500G(효과치:3)',
420
- '2000G(효과치:4)',
421
- '3000G(효과치:5)',]
422
- price = table[power]
423
-
424
- return price
425
- end
37
+ TABLES = translate_tables(:ko_kr).freeze
426
38
  end
427
39
  end
428
40
  end