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
@@ -1,24 +1,16 @@
1
1
  module BCDice
2
2
  module CommonCommand
3
- class Version
3
+ module Version
4
4
  PREFIX_PATTERN = /BCDiceVersion/.freeze
5
5
 
6
- # @param command [String]
7
- # @param _randomizer [Randomizer]
8
- # @param _game_system [Base]
9
- def initialize(command, _randomizer, _game_system)
10
- @command = command
11
- end
12
-
13
- # @return [Boolean]
14
- def secret?
15
- false
16
- end
17
-
18
- # @return [String, nil]
19
- def eval
20
- if @command == "BCDICEVERSION"
21
- "BCDice Ver#{BCDice::VERSION}"
6
+ class << self
7
+ def eval(command, _game_system, _randomizer)
8
+ command = command.split(" ", 2).first
9
+ if command.match?(/^BCDiceVersion$/i)
10
+ Result.new.tap do |r|
11
+ r.text = "BCDice Ver#{BCDice::VERSION}"
12
+ end
13
+ end
22
14
  end
23
15
  end
24
16
  end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module Deprecated
5
+ # 2D6などの特定の加算ダイスの結果をゲームシステムごとにカスタマイズするための
6
+ # @deprecate Base#result_2d6 等を利用してください
7
+ module Checker
8
+ private
9
+
10
+ # @param total [Integer] コマンド合計値
11
+ # @param rand_results [Array<CommonCommand::AddDice::Randomizer::RandResult>] ダイスの一覧
12
+ # @param cmp_op [Symbol] 比較演算子
13
+ # @param target [Integer, String] 目標値の整数か'?'
14
+ # @return [Result, nil]
15
+ def check_result_legacy(total, rand_results, cmp_op, target)
16
+ sides_list = rand_results.map(&:sides)
17
+ value_list = rand_results.map(&:value)
18
+ dice_total = value_list.sum()
19
+
20
+ ret =
21
+ case sides_list
22
+ when [100]
23
+ check_1D100(total, dice_total, cmp_op, target)
24
+ when [20]
25
+ check_1D20(total, dice_total, cmp_op, target)
26
+ when [6, 6]
27
+ check_2D6(total, dice_total, value_list, cmp_op, target)
28
+ end
29
+
30
+ return Result.new(ret.delete_prefix(" > ")) unless ret.nil? || ret.empty?
31
+
32
+ ret =
33
+ case sides_list.uniq
34
+ when [10]
35
+ check_nD10(total, dice_total, value_list, cmp_op, target)
36
+ when [6]
37
+ check_nD6(total, dice_total, value_list, cmp_op, target)
38
+ end
39
+
40
+ return Result.new(ret.delete_prefix(" > ")) unless ret.nil? || ret.empty?
41
+
42
+ return nil
43
+ end
44
+
45
+ # @param total [Integer]
46
+ # @param dice_total [Integer]
47
+ # @param cmp_op [Symbol]
48
+ # @param target
49
+ # @return [String, nil]
50
+ # @deprecate Base#result_1d100 を使ってください
51
+ def check_1D100(total, dice_total, cmp_op, target); end
52
+
53
+ # @param (see #check_1D100)
54
+ # @return [String, nil]
55
+ # @deprecate Base#result_1d20 を使ってください
56
+ def check_1D20(total, dice_total, cmp_op, target); end
57
+
58
+ # @param total [Integer]
59
+ # @param dice_total [Integer]
60
+ # @param dice_list [Array<Integer>]
61
+ # @param cmp_op [Symbol]
62
+ # @param target
63
+ # @return [String, nil]
64
+ # @deprecate Base#result_nd10 を使ってください
65
+ def check_nD10(total, dice_total, dice_list, cmp_op, target); end
66
+
67
+ # @param (see #check_nD10)
68
+ # @return [String, nil]
69
+ # @deprecate Base#result_2d6 を使ってください
70
+ def check_2D6(total, dice_total, dice_list, cmp_op, target); end
71
+
72
+ # @param (see #check_nD10)
73
+ # @return [String, nil]
74
+ # @deprecate Base#result_nd6 を使ってください
75
+ def check_nD6(total, dice_total, dice_list, cmp_op, target); end
76
+ end
77
+ end
78
+ end
@@ -2,6 +2,14 @@ module BCDice
2
2
  module DiceTable
3
3
  # D66を振って6x6マスの表を参照する
4
4
  class D66GridTable
5
+ # @param key [String]
6
+ # @param locale [Symbol]
7
+ # @return [D66GridTable]
8
+ def self.from_i18n(key, locale)
9
+ table = I18n.t(key, locale: locale, raise: true)
10
+ new(table[:name], table[:items])
11
+ end
12
+
5
13
  # @param [String] name 表の名前
6
14
  # @param [Array<Array<String>>] items 表の項目の配列
7
15
  def initialize(name, items)
@@ -2,6 +2,16 @@ module BCDice
2
2
  module DiceTable
3
3
  # D66を振って出目を昇順/降順にして表を参照する
4
4
  class D66Table
5
+ # @param key [String]
6
+ # @param locale [Symbol]
7
+ # @return [D66Table]
8
+ def self.from_i18n(key, locale)
9
+ table = I18n.t(key, locale: locale)
10
+ sort_type = D66SortType.const_get(table[:d66_sort_type])
11
+
12
+ new(table[:name], sort_type, table[:items])
13
+ end
14
+
5
15
  # @param [String] name 表の名前
6
16
  # @param [Symbol] sort_type 出目入れ替えの方式 BCDice::D66SortType
7
17
  # @param [Hash] items 表の項目 Key は数値
@@ -1,31 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/dice_table/sai_fic_skill_table/category"
4
+ require "bcdice/dice_table/sai_fic_skill_table/skill"
5
+
1
6
  module BCDice
2
7
  module DiceTable
3
8
  class SaiFicSkillTable
4
- def initialize(items, peekaboo_style: false)
5
- @items = items
6
- @peekaboo_style = peekaboo_style
9
+ # @param key [String]
10
+ # @param locale [Symbol]
11
+ # @param rtt [String] RTTに相当するコマンド
12
+ # @param rct [String] RCTに相当するコマンド
13
+ # @param rttn [Array] RTT1~6に相当するコマンドの配列
14
+ # @return [SaiFicSkillTable]
15
+ def self.from_i18n(key, locale, rtt: nil, rct: nil, rttn: nil)
16
+ global = I18n.t("RTT", locale: locale, raise: false, default: {})
17
+ table = global.merge(I18n.t(key, locale: locale, raise: true))
18
+ items = table[:items]
19
+ table = table.select { |k, _| [:rtt_format, :rttn_format, :rct_format, :s_format].include?(k) }
20
+ new(items, **table, rtt: rtt, rct: rct, rttn: rttn)
7
21
  end
8
22
 
9
- def roll(randomizer)
10
- category_dice = randomizer.roll_once(6)
11
- cindex = category_dice - 1
12
- category, skill_list = @items[cindex]
23
+ DEFAULT_RTT = "ランダム特技表(%<category_dice>d,%<row_dice>d) > %<text>s"
24
+ DEFAULT_RCT = "ランダム分野表(%<category_dice>d) > %<category_name>s"
25
+ DEFAULT_RTTN = "%<category_name>s分野ランダム特技表(%<row_dice>d) %<text>s"
26
+ DEFAULT_S = "《%<skill_name>s/%<category_name>s%<row_dice>d》"
13
27
 
14
- skill_dice = randomizer.roll_sum(2, 6)
15
- sindex = skill_dice - 2
16
- skill = skill_list[sindex]
28
+ # サイコロ・フィクション用ダイステーブルを初期化する。
29
+ # 既存の実装の互換性維持とルールブックの記載に準拠するために、コマンドと書式文字列を指定できる。
30
+ # @param items [Array] 特技リスト
31
+ # @param rtt [String] RTTに相当するコマンド
32
+ # @param rct [String] RCTに相当するコマンド
33
+ # @param rttn [Array] RTT1~6に相当するコマンドの配列
34
+ # @param rtt_format [String] RTTコマンドの出力用の書式文字列
35
+ # @param rct_format [String] RCTコマンドの出力用の書式文字列
36
+ # @param rttn_format [String] RTTNコマンドの出力用の書式文字列
37
+ # @param s_format [String] Skill#to_s出力用の書式文字列
38
+ def initialize(items, rtt: nil, rct: nil, rttn: nil, rtt_format: DEFAULT_RTT, rct_format: DEFAULT_RCT, rttn_format: DEFAULT_RTTN, s_format: DEFAULT_S)
39
+ @categories = items.map.with_index(1) do |(name, skills), index|
40
+ SaiFicSkillTable::Category.new(name, skills, index, s_format)
41
+ end
42
+ @rtt = rtt
43
+ @rct = rct
44
+ @rttn = rttn.to_a
45
+ @rtt_format = rtt_format
46
+ @rct_format = rct_format
47
+ @rttn_format = rttn_format
48
+ end
17
49
 
18
- return "ランダム指定特技表(#{category_dice},#{skill_dice}) #{result(category, skill, skill_dice)}"
50
+ RTTN = ["RTT1", "RTT2", "RTT3", "RTT4", "RTT5", "RTT6"].freeze
51
+ attr_reader :categories
52
+
53
+ # コマンドを解釈し、結果を取得する
54
+ # return [String]
55
+ def roll_command(randomizer, command)
56
+ c = command
57
+ if ["RTT", @rtt].include?(c)
58
+ format_skill(@rtt_format, roll_skill(randomizer))
59
+ elsif ["RCT", @rct].include?(c)
60
+ cat = roll_category(randomizer)
61
+ format(@rct_format, category_dice: cat.dice, category_name: cat.name)
62
+ elsif (index = RTTN.index(c)) || (index = @rttn.index(c))
63
+ format_skill(@rttn_format, @categories[index].roll(randomizer))
64
+ end
65
+ end
66
+
67
+ # 1D6を振り、ランダムで分野を決定する
68
+ # @return [SaiFicSkillTable::Category]
69
+ def roll_category(randomizer)
70
+ @categories[randomizer.roll_once(6) - 1]
71
+ end
72
+
73
+ # 1D6と2D6を振り、ランダムで特技を決定する
74
+ # @return [SaiFicSkillTable::Skill]
75
+ def roll_skill(randomizer)
76
+ roll_category(randomizer).roll(randomizer)
77
+ end
78
+
79
+ def prefixes
80
+ ([/RTT[1-6]?/i, "RCT", @rtt, @rct] + @rttn).compact
19
81
  end
20
82
 
21
83
  private
22
84
 
23
- def result(category, skill, skill_dice)
24
- if @peekaboo_style
25
- "《#{skill}/#{category}#{skill_dice}》"
26
- else
27
- "#{category}《#{skill}》"
28
- end
85
+ def format_skill(format_string, skill)
86
+ format(format_string, category_dice: skill.category_dice, row_dice: skill.row_dice, category_name: skill.category_name, skill_name: skill.name, text: skill.to_s)
29
87
  end
30
88
  end
31
89
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module DiceTable
5
+ class SaiFicSkillTable
6
+ class Category
7
+ def initialize(name, skills, dice, s_format)
8
+ @name = name
9
+ @skills = skills.map.with_index(2) { |s, index| SaiFicSkillTable::Skill.new(name, s, dice, index, s_format) }
10
+ @dice = dice
11
+ end
12
+
13
+ def roll(randomizer)
14
+ skills[randomizer.roll_sum(2, 6) - 2]
15
+ end
16
+
17
+ def to_s
18
+ @name
19
+ end
20
+
21
+ attr_reader :name, :dice, :skills
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module DiceTable
5
+ class SaiFicSkillTable
6
+ class Skill
7
+ def initialize(category_name, skill_name, category_dice, row_dice, s_format)
8
+ @category_name = category_name
9
+ @name = skill_name
10
+ @category_dice = category_dice
11
+ @row_dice = row_dice
12
+ @s_format = s_format
13
+ end
14
+
15
+ def to_s
16
+ format(@s_format, category_dice: @category_dice, row_dice: @row_dice, category_name: @category_name, skill_name: @name)
17
+ end
18
+
19
+ attr_reader :category_name, :name, :category_dice, :row_dice
20
+ end
21
+ end
22
+ end
23
+ end
@@ -2,6 +2,14 @@ module BCDice
2
2
  module DiceTable
3
3
  # 表を表すクラス
4
4
  class Table
5
+ # @param key [String]
6
+ # @param locale [Symbol]
7
+ # @return [Table]
8
+ def self.from_i18n(key, locale)
9
+ table = I18n.t(key, locale: locale)
10
+ new(table[:name], table[:type], table[:items])
11
+ end
12
+
5
13
  # @param [String] name 表の名前
6
14
  # @param [String] type 項目を選ぶときのダイスロールの方法 '1D6'など
7
15
  # @param [Array<String>] items 表の項目の配列
@@ -27,6 +27,7 @@ require "bcdice/game_system/Chill"
27
27
  require "bcdice/game_system/Chill3"
28
28
  require "bcdice/game_system/CodeLayerd"
29
29
  require "bcdice/game_system/ColossalHunter"
30
+ require "bcdice/game_system/Comes"
30
31
  require "bcdice/game_system/CrashWorld"
31
32
  require "bcdice/game_system/Cthulhu"
32
33
  require "bcdice/game_system/Cthulhu7th"
@@ -56,6 +57,7 @@ require "bcdice/game_system/EclipsePhase"
56
57
  require "bcdice/game_system/Elric"
57
58
  require "bcdice/game_system/Elysion"
58
59
  require "bcdice/game_system/EmbryoMachine"
60
+ require "bcdice/game_system/Emoklore"
59
61
  require "bcdice/game_system/EndBreaker"
60
62
  require "bcdice/game_system/EtrianOdysseySRS"
61
63
  require "bcdice/game_system/Fiasco"
@@ -75,7 +77,7 @@ require "bcdice/game_system/GranCrest"
75
77
  require "bcdice/game_system/Gundog"
76
78
  require "bcdice/game_system/GundogRevised"
77
79
  require "bcdice/game_system/GundogZero"
78
- require "bcdice/game_system/Gurps"
80
+ require "bcdice/game_system/GURPS"
79
81
  require "bcdice/game_system/GurpsFW"
80
82
  require "bcdice/game_system/HarnMaster"
81
83
  require "bcdice/game_system/HatsuneMiku"
@@ -117,6 +119,7 @@ require "bcdice/game_system/NightWizard3rd"
117
119
  require "bcdice/game_system/NightmareHunterDeep"
118
120
  require "bcdice/game_system/NinjaSlayer"
119
121
  require "bcdice/game_system/NjslyrBattle"
122
+ require "bcdice/game_system/NSSQ"
120
123
  require "bcdice/game_system/Nuekagami"
121
124
  require "bcdice/game_system/OneWayHeroics"
122
125
  require "bcdice/game_system/OracleEngine"
@@ -137,6 +140,7 @@ require "bcdice/game_system/RecordOfLodossWar"
137
140
  require "bcdice/game_system/RecordOfSteam"
138
141
  require "bcdice/game_system/RokumonSekai2"
139
142
  require "bcdice/game_system/RoleMaster"
143
+ require "bcdice/game_system/RuinBreakers"
140
144
  require "bcdice/game_system/RuneQuest"
141
145
  require "bcdice/game_system/RyuTuber"
142
146
  require "bcdice/game_system/Ryutama"
@@ -174,12 +178,14 @@ require "bcdice/game_system/TorgEternity"
174
178
  require "bcdice/game_system/TrinitySeven"
175
179
  require "bcdice/game_system/TunnelsAndTrolls"
176
180
  require "bcdice/game_system/TwilightGunsmoke"
181
+ require "bcdice/game_system/UnsungDuet"
177
182
  require "bcdice/game_system/Utakaze"
178
183
  require "bcdice/game_system/VampireTheMasquerade5th"
179
184
  require "bcdice/game_system/Villaciel"
180
185
  require "bcdice/game_system/WARPS"
181
186
  require "bcdice/game_system/WaresBlade"
182
187
  require "bcdice/game_system/Warhammer"
188
+ require "bcdice/game_system/Warhammer4"
183
189
  require "bcdice/game_system/WitchQuest"
184
190
  require "bcdice/game_system/WorldOfDarkness"
185
191
  require "bcdice/game_system/YankeeYogSothoth"
@@ -21,7 +21,7 @@ module BCDice
21
21
  MESSAGETEXT
22
22
 
23
23
  # ダイスボットで使用するコマンドを配列で列挙する
24
- register_prefix(['FF.+', 'FR.+', 'FD.+'])
24
+ register_prefix('FF.+', 'FR.+', 'FD.+')
25
25
 
26
26
  def explicit_sign(i)
27
27
  format('%+d', i)
@@ -27,10 +27,10 @@ module BCDice
27
27
   例)DCSL7 DCEL22
28
28
  INFO_MESSAGE_TEXT
29
29
 
30
- register_prefix([
30
+ register_prefix(
31
31
  '(AK|AKG)(\-?\d+)(\/\d+)?(@\d+)?',
32
32
  'DC(SL|BL|IM|BR|RF|EL).+'
33
- ])
33
+ )
34
34
 
35
35
  def eval_game_system_specific_command(command)
36
36
  case command
@@ -41,9 +41,9 @@ module BCDice
41
41
  ・15AAx4c0 → 15d10で目標値6、威力4、クリティカル無しの命中判定。
42
42
  MESSAGETEXT
43
43
 
44
- register_prefix([
45
- ['(\d+)?A(A|L)(\d+)?((x|\*)(\d+)(\+(\d+))?)?(C(\d+))?']
46
- ])
44
+ register_prefix(
45
+ '(\d+)?A(A|L)(\d+)?((x|\*)(\d+)(\+(\d+))?)?(C(\d+))?'
46
+ )
47
47
 
48
48
  def initialize(command)
49
49
  super(command)
@@ -37,7 +37,7 @@ module BCDice
37
37
  ・8ALC4x5 → 8d6で目標値4、攻撃力5、トライアンフ無しの命中判定。
38
38
  MESSAGETEXT
39
39
 
40
- register_prefix(['\d+AL(C|G)?(\d+)?(x|\*)\d+', '\d+ALC?(\d+)?'])
40
+ register_prefix('\d+AL(C|G)?(\d+)?(x|\*)\d+', '\d+ALC?(\d+)?')
41
41
 
42
42
  def initialize(command)
43
43
  super(command)
@@ -16,7 +16,7 @@ module BCDice
16
16
  ID = 'Alshard'
17
17
 
18
18
  # 固有のコマンドの接頭辞を設定する
19
- register_prefix(['2D6.*', 'AL.*'])
19
+ register_prefix('2D6.*', 'AL.*')
20
20
 
21
21
  # 成功判定のエイリアスコマンドを設定する
22
22
  set_aliases_for_srs_roll('AL')
@@ -34,10 +34,10 @@ module BCDice
34
34
  QUI:平穏・経験表をダイスロール
35
35
  MESSAGETEXT
36
36
 
37
- register_prefix([
37
+ register_prefix(
38
38
  'EMA(\d+)?', 'PER(\d+)?', 'LOC(\d+)?', 'QUI(\d+)?', 'DEL(\d+)?',
39
39
  'TRA(\d+)?', 'SCE(\d+)?', 'STA(\d+)?', 'EMO(\d+)?'
40
- ])
40
+ )
41
41
 
42
42
  def eval_game_system_specific_command(command)
43
43
  output =
@@ -49,26 +49,7 @@ module BCDice
49
49
  text = amadeusDice(command)
50
50
  return text unless text.nil?
51
51
 
52
- info = TABLES[command.upcase]
53
- return nil if info.nil?
54
-
55
- name = info[:name]
56
- type = info[:type]
57
- table = info[:table]
58
-
59
- text, number =
60
- case type
61
- when '1D6'
62
- get_table_by_1d6(table)
63
- when '2D6'
64
- get_table_by_2d6(table)
65
- when 'D66'
66
- get_table_by_d66_swap(table)
67
- end
68
-
69
- return nil if text.nil?
70
-
71
- return "#{name}(#{number}) > #{text}"
52
+ return roll_tables(command, self.class::TABLES)
72
53
  end
73
54
 
74
55
  def amadeusDice(command)
@@ -107,7 +88,9 @@ module BCDice
107
88
  achieve = dice + modify
108
89
  result = check_success(achieve, dice, signOfInequality, target, specialNum)
109
90
  if is_loop
110
- message += "#{achieve}_#{result}[#{dice}#{INGA_TABLE[dice]}]"
91
+ inga_table = translate("Amadeus.inga_table")
92
+ inga = inga_table[dice - 1]
93
+ message += "#{achieve}_#{result}[#{dice}#{inga}]"
111
94
  else
112
95
  message += "#{achieve}_#{result}[#{dice}]"
113
96
  end
@@ -117,506 +100,62 @@ module BCDice
117
100
  end
118
101
 
119
102
  def check_success(total_n, dice_n, signOfInequality, diff, special_n)
120
- return "ファンブル!" if dice_n == 1
121
- return "スペシャル!" if dice_n >= special_n
103
+ return translate("Amadeus.fumble") if dice_n == 1
104
+ return translate("Amadeus.special") if dice_n >= special_n
122
105
 
123
106
  cmp_op = Normalize.comparison_operator(signOfInequality)
124
107
  target_num = diff.to_i
125
108
 
126
109
  if total_n.send(cmp_op, target_num)
127
- "成功"
110
+ translate("success")
128
111
  else
129
- "失敗"
112
+ translate("failure")
130
113
  end
131
114
  end
132
115
 
133
116
  CHECK_DICE_COUNT = {"S" => 4, "A" => 3, "B" => 2, "C" => 1, "D" => 2}.freeze
134
- INGA_TABLE = [nil, "黒", "赤", "青", "緑", "白", "任意"].freeze
135
117
 
136
- TABLES =
118
+ def self.translate_tables(locale)
137
119
  {
138
- "ECT" => {
139
- name: "境遇表",
140
- type: '1D6',
141
- table: [
142
- '告白。あなたは、神と人間(獣の子の場合は何らかの動物)が愛し合って生まれた神子です。最近になって、その事実と予言について、自分の親から知らされました。あなたに両親がいる場合、どちらかの親は義理の親となります。',
143
- '孤児。あなたは、親のことについて何も知りませんでした。過酷な環境で暮らすなか、あなたの兄弟姉妹が、あなたを迎えに来ました。そして、あなたが神の子どもであり、予言の持ち主だということを教えてくれました。',
144
- '家族。あなたは、神の子として幼い頃から生活していました。現実と<聖地>を行き来し、様々なことを神である親から教えてもらっています。そして、いつの日か冒険に旅立ち、英雄になる日を楽しみに待っていました。',
145
- '血脈。あなたの一族には、「大きな運命を持つ子が生まれる」という予言が伝わっていました。その予言の子があなたです。恐らく、あなたの遠い先祖に神がいたのでしょう。一族はあなたに大きな期待や畏怖を寄せています。',
146
- '加護。あなたは、その資質や才能を親神に見いだされました。そして、夢の中で親神と出会い、<神の血>を直接与えられました。それ以来、あなたは不思議なものが見えたり聞こえたりするようになりました。',
147
- '帰依。あなたは、怪物によって命の危機にさらされました。しかし、神の血を授かることによって、死の淵からよみがえりました。以来、あなたは自らを助けてくれた神に帰依し、その人生を捧げることにしました。'
148
- ],
149
- },
150
-
151
- "BST" => {
152
- name: "戦場表",
153
- type: '1D6',
154
- table: [
155
- '墓場。ラウンドの終了時、PCと怪物の本体は、【生命力】が1D6点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、黒の領域にインガが追加で2つあるものとして扱います。',
156
- '市街地。すべてのPCと怪物は、与えるダメージが1D6点上昇します。また、この戦場にいる場合、PCがギフトを使用するとき、赤の領域にインガが追加で2つあるものとして扱います。',
157
- '水中。潜水状態にないPCは、あらゆる判定にマイナス1の修正がつきます。ラウンドの終了時、潜水状態でないPCと怪物の本体は、【生命力】が1D6点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、青の領域にインガが追加で2つあるものとして扱います。',
158
- '森林。すべてのPCと怪物は、受けるダメージが1D6点軽減します。また、この戦場にいる場合、PCがギフトを使用するとき、緑の領域にインガが追加で2つあるものとして扱います。',
159
- '空中。飛行状態にないPCは、あらゆる判定にマイナス1の修正がつきます。戦闘終了時、怪物の【生命力】が1点以上残っていた場合、その戦闘中に一度も飛行状態にならなかったPCと怪物の本体は、【生命力】が[戦闘に費やした乱戦ラウンド数×3D6]点減少します。また、この戦場にいる場合、PCがギフトを使用するとき、白の領域にインガが追加で2つあるものとして扱います。',
160
- '平地。特に変わった効果はありません。'
161
- ],
162
- },
163
-
164
- "RT" => {
165
- name: "関係表",
166
- type: '1D6',
167
- table: [
168
- '恋心(プラス)/殺意(マイナス)',
169
- '同情(プラス)/侮蔑(マイナス)',
170
- '憧憬(プラス)/嫉妬(マイナス)',
171
- '信頼(プラス)/疑い(マイナス)',
172
- '共感(プラス)/不気味(マイナス)',
173
- '大切(プラス)/面倒(マイナス)'
174
- ],
175
- },
176
-
177
- "PRT" => {
178
- name: "親心表",
179
- type: '1D6',
180
- table: [
181
- 'かわいい(プラス)/生意気(マイナス)',
182
- '期待(プラス)/脅威(マイナス)',
183
- '自慢(プラス)/恥(マイナス)',
184
- '愛情(プラス)/無関心(マイナス)',
185
- '有用(プラス)/心配(マイナス)',
186
- '過保護(プラス)/執着(マイナス)'
187
- ],
188
- },
189
-
190
- "FT" => {
191
- name: "ファンブル表",
192
- type: '1D6',
193
- table: [
194
- '運命の輪が回転する。運命の輪の上にある赤の領域のインガを青の領域に、青の領域のインガを緑の領域に、緑の領域のインガを白の領域に、白の領域のインガを赤の領域に、それぞれ同時に移動させる。',
195
- '仲間に迷惑をかけてしまう。自分以外のPC全員の【生命力】が1点減少する。',
196
- 'この失敗は後に祟るかもしれない……。自分の【生命力】が1D6点減少する。',
197
- 'あまりの失敗に、みんなの態度が変わる。自分に対して一番高い【想い】の値を持っているキャラクター全員の、【想い】の属性が反転する。',
198
- '心に大きな乱れが生まれる。自分の属性に対応した変調を受ける(黒なら絶望、赤なら憤怒、青なら臆病1、緑なら堕落、白なら恥辱)。',
199
- '周囲から活気が失われる。運命の輪のなかから、黒以外の領域のインガがすべて1つずつ減少する。'
200
- ],
201
- },
202
-
203
- "BT" => {
204
- name: "休憩表",
205
- type: 'D66',
206
- table: [
207
- [11, "土着の怪物が襲いかかってきた! なんとか撃退するが、傷を負ってしまった。1D6点のダメージを受ける。"],
208
- [12, "美女の沐浴をのぞいてしまった。1D6を振る。1~2なら「堕落」、3~4なら「恥辱」、5~6なら「重傷1」の変調を受ける。"],
209
- [13, "強欲な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。ただし、すべてのアイテムの価格は通常の値段より1高い。"],
210
- [14, "自分の過去の話をする。なんで、こんな話しちゃったんだろう? PCの中から、自分に対してもっとも高い【想い】を持つPC全員の、関係の属性が反転する。"],
211
- [15, "周囲の空気が変わった。運命の輪が動き出す予感!運命の輪の上にある赤の領域のインガを青の領域に、青の領域のインガを緑の領域に、緑の領域のインガを白の領域に、白の領域のインガを赤の領域に、それぞれ同時に移動させる。"],
212
- [16, "突然の空腹に襲われる。このシーン中に食事を行わなかったPCは「重傷2」の変調を受ける。この変調は、食事を行うと回復できる(ほかの方法でも回復可能)。"],
213
- [22, "<絶界>の外の世界の友人のことを思い出す。みんなは元気にしているだろうか? この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の変調を1つ回復するか、黒の領域からインガを1つ取り除くことができる。"],
214
- [23, "奇妙な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。"],
215
- [24, "喋る動物に願いごとをされる。動物たちも、この神話災害で苦しんでいるようだ。あなたは、「この怪物の本体の【生命力】を0にする」という追加の【任務】を受けることができる。この【任務】を達成すると、追加で経験値を20点もらうことができる。"],
216
- [25, "素敵な夢を見る。この出目を振ったプレイヤーは、自分のPC以外の好きなキャラクター一人に対する【想い】が1点上昇する。"],
217
- [26, "大切な人から、あなたを心配するメールが届いていた。なんて返そう? この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の変調を1つ回復するか、自分の好きなパトスマークについたチェックを1つ消す。"],
218
- [33, "親切な商人に出会う。このシーンに登場したキャラクターは、アイテムを購入することができる。ただし、すべてのアイテムの価格は通常の値段より1低い(価格1未満にはならない)。"],
219
- [34, "武器の手入れを行う。この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、そのセッションの間、自分の武器1つの威力を1点上昇させることができる。"],
220
- [35, "最後に買い物をしたときに、おつりを多くもらっていたことに気がついた。1神貨を手に入れる。"],
221
- [36, "食事をしながら、仲間と大いに語り合う。このシーンに登場して、食事を行ったキャラクターは、自分の好きなパトスマークについたチェックを一つ消す。"],
222
- [44, "一眠りしてしまったのか、不思議な夢を見る。この出目を振ったプレイヤーのPCは、【霊力】で判定を行うことができる。成功すると、好きな予言カード1枚を選び、その【真実】を見ることができる。"],
223
- [45, "チンピラにからまれている異性の子を見つける。この出目を振ったプレイヤーのPCは、【武勇】で判定を行うことができる。成功すると、その子は、そのPCに対して【想い】を1点獲得する。この子を協力者にするなら、そのプレイヤーはその子の名前と関係を自由に決めること。"],
224
- [46, "心地よい風に吹かれる。運命があなたに味方してくれるような気がした。好きな領域にインガを1つ配置する。"],
225
- [55, "目が覚めると、枕元に贈り物が。誰からだろう……? この出目を振ったプレイヤーのPCは、「ランダムアイテム表」を使用する。"],
226
- [56, "困っている神話生物を助けてあげた。【日常】で判定を行う。成功すると、次に移動判定を行うことになったとき、自動的にそれを成功にすることができる(達成値が必要な場合6として扱う)。"],
227
- [66, "親神が、あなたに話しかけてくる。親子の会話だ。この出目を振ったプレイヤーのPCは、【日常】で判定を行うことができる。成功すると、自分の親神に対する【想い】か、親神の自分に対する【想い】のいずれかを1点上昇する。"],
228
- ],
229
- },
230
-
231
- "FWT" => {
232
- name: "致命傷表",
233
- type: '1D6',
234
- table: [
235
- '絶望的な攻撃を受ける。そのキャラクターは死亡する。',
236
- '苦痛の悲鳴をあげ、無惨にも崩れ落ちる。そのキャラクターは行動不能になる。また、黒の領域のインガが1つ増える。',
237
- '攻撃を受けた武器が砕け、敵の攻撃が直撃する。そのキャラクターは行動不能になる。また、自分の武器一つを破壊する。',
238
- '強烈な一撃を受けて気絶する。そのキャラクターは行動不能になる。',
239
- '意識はあるが、立ち上がることができない。そのキャラクターは行動不能になる。次のシーンになったら【生命力】が1点に回復する。',
240
- '奇跡的に持ちこたえる。【生命力】1点で踏みとどまる。'
241
- ],
242
- },
243
-
244
- "BRT" => {
245
- name: "戦果表",
246
- type: '1D6',
247
- table: [
248
- '1神貨を獲得する。',
249
- '1D6神貨を獲得する。',
250
- '好きな領域にインガを1つ置く。',
251
- '黒の領域からインガを1つ取り除く。',
252
- '「ランダムアイテム」表で、アイテムを入手できる。',
253
- 'PC全員、自分の人物欄の中から、パトスのチェックを1つ消すことができる。'
254
- ],
255
- },
256
-
257
- "RIT" => {
258
- name: "ランダムアイテム表",
259
- type: '2D6',
260
- table: [
261
- '「鎧」を1個獲得する。',
262
- '「手がかり」を1個獲得する。',
263
- '「お洒落」を1個獲得する。',
264
- '「護符」を1個獲得する。',
265
- '「甘露」を1個獲得する。',
266
- '「食料」を1D6個獲得する。',
267
- '「お香」を1個獲得する。',
268
- '「供物」を1個獲得する。',
269
- '「霊薬」を1個獲得する。',
270
- '「ごちそう」を1個獲得する。',
271
- '「爆弾」を1個獲得する。'
272
- ],
273
- },
274
-
275
- "WT" => {
276
- name: "損傷表",
277
- type: '1D6',
278
- table: [
279
- '自分の【生命力】を1D6点減少する。',
280
- '1D6神貨を失う。',
281
- '黒の領域にインガを1つ置く。',
282
- '「臆病2」の変調を受ける。',
283
- '「重傷3」の変調を受ける。',
284
- '自分の人物欄のもっとも高い【想い】1つを選び、それを1点減少する。'
285
- ],
286
- },
287
-
288
- "NMT" => {
289
- name: "悪夢表",
290
- type: '1D6',
291
- table: [
292
- '絶望の闇に視界を遮断される。背後に怪物の気配を感じたと思ったときは遅かった。卑劣な攻撃があなたを襲う。好きな能力値で判定を行う。失敗すると死亡する。',
293
- '絶望の闇の中、悲痛な叫びが聞こえてくる。事件の被害者たちだろうか。あなたは、救えなかったのだ。【日常】で判定を行う。失敗すると、「絶望」の呪いを受ける。',
294
- '絶望の闇の中で怪物の笑いがこだまする。それは嘲りの笑いだった。怪物や仲間たち……何より自分への怒りがわき上がる。【日常】で判定を行う。失敗すると、「憤怒」の呪いを受ける。',
295
- '絶望の闇の中に一人取り残される。誰もあなたに気づかない。孤独に耐えながら、何とか日常へ帰還したが……そのときの恐怖がぬぐえない。【日常】で判定を行う。失敗すると、「臆病3」の呪いを受ける。',
296
- '絶望の闇から帰還したあなたを待っていたのは、代わり映えのない日常だった。あなたが任務に失敗しても、世界は変わらない。なら、もう、あんな怖い目をする必要はないんじゃないか? 【日常】で判定を行う。失敗すると、「堕落」の呪いを受ける。',
297
- '絶望の闇の中を必死で逃げ出した。背後から仲間の声が聞こえた気がする。しかし、あなたは振り返ることができなかった。【日常】で判定を行う。失敗すると、「恥辱」の呪いを受ける。'
298
- ],
299
- },
300
-
301
- "TGT" => {
302
- name: "目標表",
303
- type: '1D6',
304
- table: [
305
- '悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。',
306
- '狡猾。もっとも数値が高いパラグラフにいるPC一人を目標に選ぶ。全員が欄外にいる場合、欄外にいるPC全員を目標に選ぶ。',
307
- '非道。PCの中でもっとも低いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも低いランクの持ち主が複数いる場合、その中から、もっとも低いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。',
308
- '堅実。PCの中でもっとも低いランクの【技術】の持ち主一人を目標に選ぶ。もっとも低いランクの持ち主が複数いる場合、その中から、もっとも低いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。',
309
- '豪快。PCの中でもっとも高いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも高いランクの持ち主が複数いる場合、その中から、もっとも高いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMがその中から自由に一人目標を選ぶ。',
310
- '単純。もっとも数値が低いパラグラフにいるPC一人を目標に選ぶ。全員が欄外にいる場合、欄外にいるPC全員を目標に選ぶ。'
311
- ],
312
- },
313
-
314
- "CST" => {
315
- name: "制約表",
316
- type: '1D6',
317
- table: [
318
- '短命',
319
- '誘惑',
320
- '悪影響',
321
- '束縛',
322
- '喧嘩',
323
- '干渉'
324
- ],
325
- },
326
-
327
- "GCVT" => {
328
- name: "ギリシャ神群試練表",
329
- type: '1D6',
330
- table: [
331
- '山の向こうから一つ目の巨人、サイクロプスがこちらを見ている。岩を投げてきた!1D6点のダメージを受ける。',
332
- '水音に目を向けると、アルテミスが泉で水浴びをしていた。美しい……あ、気づかれた?自分が男性なら、「重傷2」の変調を受ける。自分が女性なら、「恥辱」の変調を受ける。',
333
- '海を渡ろうとすると、海が渦巻き乗った船が引き寄せられていく。中心にいるのは怪物カリュブディスだ。このままだと、船ごと飲み込まれてしまう。[青の領域にあるインガの数]点ダメージを受ける。',
334
- 'デュオニソスの女性信者、マイナスたちに取り囲まれる。彼女たちは完全に酔っ払っており、話は通じない上、酒を飲めと強要してくる。【生命力】が1点回復し、「堕落」の変調を受ける。',
335
- '巨大な天井を支えている巨人と出会う。巨人は「少しの間、支えるのを代わってくれないか?」と頼んでくる。断りにくい雰囲気だ……。【愛】で判定を行う。失敗すると、そのセッションの間、所持品の欄が一つ使えなくなる。その欄にアイテムが記入されていれば、それを捨てること。',
336
- '「あなた最近、調子に乗ってない?」アフロディーテに難癖をつけられた。「自分のことだけ見てればいいんじゃない?」鏡に映る自分が、とても美しく思えてきた。自分への【想い】が2点上昇し、それ以外の人物欄のパトスすべてにチェックを入れる。'
337
- ],
338
- },
339
-
340
- "YCVT" => {
341
- name: "ヤマト神群試練表",
342
- type: '1D6',
343
- table: [
344
- '空が急に暗くなる。太陽がどこにも見えない。もしかして、アマテラスが隠れてしまったのか?黒の領域にインガを一つ配置する。',
345
- 'いつのまにか、黄泉国に迷い込んでしまっていた。周囲は黄泉軍に取り囲まれている。どうにかして、逃げなくては!移動判定を行う。失敗すると、3点のダメージを受け、もう一度「試練表」を振る。',
346
- '目の前の海はワニザメでいっぱいだ。この海を渡らなければ、目的地にはたどり着けないのに。青の領域のインガを二つ取り除くか、自分が2D6点のダメージを受けるかを選ぶ。',
347
- '「みんなー楽しんでるー!?」ここはウズメが歌い踊るライブ会場だ。どうしよう、目的を忘れそうなほど楽しい!自分は、自分の属性のインガを一つ取り除くか、「堕落」の変調を受けるかを選ぶ。',
348
- '「龍の首の珠を取るのを手伝ってくれませんか?そうしたら、船に乗せてさしあげます」平安貴族のような格好をした男が話しかけてくる。手伝うしかないようだ。「重傷1」の変調を受ける。',
349
- '海岸でいじめられている亀を助けたら、海の中の宮殿につれてきてくれた。トヨタマヒメが現れ、盛大にもてなしてくれる。あっという間に、夢のような時間が過ぎていく。でも、そろそろ行かなくては。【日常】で判定する。失敗すると、自分の年齢を6D6歳増やし、「絶望」の変調を受ける。'
350
- ],
351
- },
352
-
353
- "ECVT" => {
354
- name: "エジプト神群試練表",
355
- type: '1D6',
356
- table: [
357
- '大蛇アペプが今にも目の前の空で輝く太陽を、飲み込もうとしている!止めなくては!【武勇】で判定する。失敗すると、黒の領域にインガを二つ配置する。',
358
- '気がつけば、魂が羽の生えたバーだけになって、空を飛んでいた。早く肉体に戻らなくては。【霊力】で判定する。自分の【生命力】を1D6点減少し、もう一度「試練表」を振る。',
359
- 'ぐつぐつと沸き立つ湖と、流れる火の川が見える。目的地は、この川を越えた先にある。【技術】で判定する。失敗すると、炎タグのついた2D6点のダメージを受け、黒以外の領域のインガが一つずつ取り除かれる。',
360
- '冥界ドゥアトの番人たちが、目の前に現れた。と畜場より来る吸血鬼、下半身の排泄物を喰らうものが近づいてくる。ここは冥界なのか、それとも、やつらが地上に這い出してきたのか。自分は、「重傷1」の変調を受けるか、「恥辱」の変調を受けるかを選ぶ。',
361
- '目の前にアヌビスがいる。アヌビスは天秤を掲げて、心臓を要求してくる。「お前の罪を数えろ」【日常】で判定を行う。失敗すると、【活力】が0点になる。この効果によって【生命力】の現在値が最大値を超えた場合、最大値と同じ値に調整する。',
362
- '獅子頭の神、シェセムが、悪人の頭を砕いて、死者のためのワインにしている。悪人と見なされれば、頭をもがれてしまうだろう。【日常】で判定を行う。失敗すると、「重傷2」の変調を受ける。'
363
- ],
364
- },
365
-
366
- "CCVT" => {
367
- name: "クトゥルフ神群試練表",
368
- type: '1D6',
369
- table: [
370
- '新聞記者たちが忙しく行き来しているオフィスにいる。ここは、新聞社アーカムアドバタイザーの編集部だ。「君が大きなニュースを持っていると聞いたんだけれど」記者の一人が尋ねてくる。自分の【真実】が公開されていなければ、「臆病1」の変調を受ける。',
371
- '魚の顔と鱗に覆われた身体をもつ、ディープワンに取り囲まれる。あなたが女性ならば、彼らのすみかに連れ去られてしまう。男性ならば、暴力を振るわれ、1D6点のダメージを受ける。女性なら、衣服を奪われ、「恥辱」の変調を受ける。',
372
- 'ここはどうやら夢の中らしい。目の前にクトゥルフがいる。「余になんの用だ。余を目覚めさせる気なら、容赦はしない」寝ぼけ眼のくせに、クトゥルフは怒っているようだ。「絶望」の変調を受ける。',
373
- '地下のもぐり酒場で一息つけた……と思ったら、トンプソン機関銃を構えた男たちが飛び込んできた。マフィアの抗争だ!4点のダメージを受ける。',
374
- '古ぼけた本を手に入れた。どうやら、魔導書のようだ。読むと正気を失う可能性もあるが、力が手に入る可能性も高い。【霊力】のランクがA以上なら、好きな領域にインガを二つ配置する。そうでない場合、「絶望」と「臆病2」の変調を受ける。',
375
- 'なんの変哲も無い民家にいる。アーカムの静かな風景が……ああ、窓に!窓に!黒の領域にインガを一つ配置する。'
376
- ],
377
- },
378
-
379
- "NCVT" => {
380
- name: "北欧神群試練表",
381
- type: '1D6',
382
- table: [
383
- '美しい乙女が告げる。「あなたはエインヘリアルたる資格がある」どうやら、戦乙女ヴァルキュリャに見初められたらしい。彼女たちは、戦死した者の魂を連れていくのだが。自分は、戦乙女から【想い】を2点獲得する。この【想い】の関係はマイナスの「殺意」となる。',
384
- '雄叫びと共に現れたのは、獣の皮を被った屈強な戦士たち、ベルセルクだった。手に手に斧を構え、こちらに向かってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。',
385
- 'オーディンの神子、エインヘリアルたちの宴会に紛れ込んでしまった。山のように積まれたご馳走を好きに食べていいと思ったら、「勝負だ!」という声。食べ比べを挑まれている。神子としては、負けるわけにはいかない。【日常】で判定を行う。失敗すると、「恥辱」の変調を受ける。',
386
- '「ここは我々の土地だ。ただで通れると思っているのか?」ドヴェルグが行く手を塞ぎ、神貨を要求してくる。彼らはがめついことで有名だ。神貨を2点支払う。支払わない場合、自分の【生命力】を1点減少して、もう一度「試練表」を使用する。',
387
- '「このまま冒険を続けても簡単すぎるんじゃないか?」ロキが話し掛けてきた。気がつくと君は狼の姿に変わっていた。このセッションの間、自分に「獣」のタグがつき、【愛】のランクが1段階低くなる(Dは変化しない)。',
388
- '巨人が話し掛けてくる。「お前に力をやってもいい。代わりに、片目か、片腕をよこせ」オーディンは片目を差し出して、知恵を手に入れた。嘘ではないだろうが……。【生命力】を3D6点減少することで、好きな領域にインガを二つ配置できる。減少しなかった場合、「臆病1」の変調を受ける。'
389
- ],
390
- },
391
-
392
- "DGVT" => {
393
- name: "ダンジョン試練表",
394
- type: '1D6',
395
- table: [
396
- '照明が切れてしまい、暗闇の中に放り出される。前が見えない。白の領域からインガを一つ取り除く。',
397
- '罠だ!こちらに向かって、巨大な岩が転がって来る!【技術】で判定する。失敗すると、2D6点のダメージを受ける。',
398
- '宝箱発見。罠がないかを慎重に調べてみよう。【技術】で判定する。成功すると、1神貨を獲得する。失敗すると、「憤怒」と「恥辱」の変調を受ける。',
399
- '謎解きが必要な部分に迷い込む。この謎を解かなければ、罠を無理矢理突破しなければならない。【頭脳】で判定を行う。失敗すると、「絶望」の変調を受け、1D6点のダメージを受ける。',
400
- '粘液が飛び散る部屋に入ってしまった。まずい、何でも溶かす酸だ!自分が装備しているアイテムの中から一つを選ぶ。選んだアイテムを破壊する。【食料】を選んだ場合は、すべての【食料】を破壊する。',
401
- '怪物たちのすみかに迷い込んでしまったようだ。怪物が一斉に襲ってくる!【武勇】で判定を行う。失敗すると、2D6点のダメージを受ける。'
402
- ],
403
- },
404
-
405
- "DAVT" => {
406
- name: "日常試練表",
407
- type: '1D6',
408
- table: [
409
- '仲間と移動していると、一般人の友達と偶然出会ってしまう。今何をしているかを聞かれたので、なんとかごまかす。自分に対して【想い】の値を持っているPC全員の属性が反転する。',
410
- '仕事や勉強を催促する電話がかかってきた。今はそれどころじゃないんだって!「憤怒」の変調を受ける。',
411
- 'ふと、見たかったテレビ番組を見逃していたことに気づいてしまう。録画もしてない。ちょっと凹む。自分の属性と同じ領域にあるインガを一つ取り除く。',
412
- '警官に捕まって、職務質問を受ける。ちょっと言えない理由で、急いでいるんですけど。黒の領域にインガを一つ配置する。',
413
- '自分の格好や言動が浮いていたらしい、自分を噂するひそひそ話が聞こえてきてしまう。「恥辱」の変調を受けるか、【食料】以外のアイテムを1つ破壊する。',
414
- '乗りたかった電車やバスに乗り遅れる。仕方ないから、走るか。移動判定を行う。失敗すると、「堕落」の変調を受け、もう一度「試練表」を使用する。'
415
- ],
416
- },
417
-
418
- "PRCT" => {
419
- name: "挑戦テーマ表【武勇】",
420
- type: '1D6',
421
- table: [
422
- '腕相撲',
423
- '喧嘩',
424
- '度胸試し',
425
- 'レスリング',
426
- '狩り',
427
- '武勇伝自慢'
428
- ],
429
- },
430
-
431
- "TCCT" => {
432
- name: "挑戦テーマ表【技術】",
433
- type: '1D6',
434
- table: [
435
- '織物',
436
- '戦車レース',
437
- 'マラソン',
438
- 'アクションゲーム',
439
- '射的',
440
- '資格自慢'
441
- ],
442
- },
443
-
444
- "INCT" => {
445
- name: "挑戦テーマ表【頭脳】",
446
- type: '1D6',
447
- table: [
448
- 'パズル',
449
- '謎かけ',
450
- 'チェス',
451
- '筆記試験',
452
- '禅問答',
453
- '学歴自慢'
454
- ],
455
- },
456
-
457
- "PSCT" => {
458
- name: "挑戦テーマ表【霊力】",
459
- type: '1D6',
460
- table: [
461
- '詩作',
462
- '動物を手なずける',
463
- '北風と太陽',
464
- '絵画',
465
- '演奏',
466
- 'のど自慢'
467
- ],
468
- },
469
-
470
- "LVCT" => {
471
- name: "挑戦テーマ表【愛】",
472
- type: '1D6',
473
- table: [
474
- 'ナンパ勝負',
475
- '誰かからより愛される',
476
- '美人コンテスト',
477
- 'ティッシュ配り',
478
- '借り物競争',
479
- '恋愛自慢'
480
- ],
481
- },
482
-
483
- "DACT" => {
484
- name: "挑戦テーマ表【日常】",
485
- type: '1D6',
486
- table: [
487
- '料理',
488
- '大食い',
489
- '呑み比べ',
490
- '倹約生活',
491
- 'サバイバル',
492
- 'リア充自慢'
493
- ],
494
- },
495
-
496
- "RGT" => {
497
- name: "ランダムギフト表",
498
- type: '1D6',
499
- table: [
500
- 'ランダムに選んだPCと同じ親神の親神ギフトの中から選ぶ。',
501
- 'GMが選んだキャラクターと同じ親神の親神ギフトの中から選ぶ。',
502
- 'ランダムに選んだPCと同じ神群の神群ギフトの中から選ぶ。',
503
- 'GMが選んだキャラクターと同じ神群の神群ギフトの中から選ぶ。',
504
- '好きな背景ギフトの中から選ぶ。',
505
- '好きな汎用ギフトの中から選ぶ。'
506
- ],
507
- },
508
-
509
- "FBT" => {
510
- name: "決戦戦果表",
511
- type: '1D6',
512
- table: [
513
- '1D6枚の神貨を獲得する。',
514
- '[戦闘に経過した偵察・乱戦・追撃ラウンド数の合計+2]枚の神貨を獲得する。',
515
- '[倒した怪物の本体レベル+2]枚の神貨を獲得する。',
516
- '[黒の領域の覚醒段階+2]枚の神貨を獲得。',
517
- '「ランダムアイテム表」で、アイテムを入手できる。',
518
- '「ランダムアイテム表」で、アイテムを入手できる。'
519
- ],
520
- },
521
-
522
- "CHVT" => {
523
- name: "中華神群試練表",
524
- type: '1D6',
525
- table: [
526
- 'たどりついた場所は、桃源郷であった。すべてを忘れて、しばらく楽しんでしまう。年齢が2D6点上昇し、「堕落」の変調を受ける。',
527
- '風にさらわれて、仙人に出会う。仙人は、稽古をつけてくれるが、激しい修行に体はボロボロになってしまった。好きな領域にインガを一つ配置し、「重傷4」の変調を受ける。',
528
- '美男・美女に誘惑されるが、それは妖怪の化けた姿だった。たぶらかされたことに、怒りを覚える。「憤怒」の変調を受ける。',
529
- '名前を呼ばれたので、返事をしたら、瓶の中に吸い込まれてしまった。瓶の中から脱出をするまでに苦労をする。2D6点のダメージを受け、「恥辱」の変調を受ける。',
530
- '地府で行われてる閻魔の裁判に参考人として招集される。下手な証言をしたために、疑われて地獄に落とされかかった。「絶望」の変調を受ける。',
531
- '麒麟の死骸を発見してしまう。これは、不吉の前触れだ。黒の領域にインガを一つ配置する。'
532
- ],
533
- },
534
-
535
- "LCVT" => {
536
- name: "ラストクロニクル神群試練表",
537
- type: '1D6',
538
- table: [
539
- 'レ・ムゥの五色の太陽がすべて輝きを失う「千年夜」の到来を幻視する。これは起こりうる未来なのだろうか……。黒の領域にインガを1つ配置する。',
540
- '召喚された小野小町が退屈を持て余してる。彼女の退屈を紛らわせるため【頭脳】か【愛】で判定する。失敗した場合、黒の領域にインガを1つ配置する。',
541
- '血肉を貨幣代わりに扱う商人・ブラッドトレーダーと出会う。ラストクロニクル神群の聖地の買い物リストからアイテムを1つ選ぶ。【生命力】を「価格×3点」消費することで、選んだアイテムを獲得する。',
542
- 'あなたは旅の途中で美女と出会い、意気投合する。しかし、その女性はメレドゥスの魔闘士・メニズマだった。彼女は去り際にあなたの精気を奪い取る。【生命力】と【活力】がそれぞれ1D6点減少する。',
543
- '強欲なる司都官が治める街に迷い込んでしまう。通行料として神貨を1D6点支払う。支払えない場合、2D6点ダメージを受ける。',
544
- '放浪の勇者・アルマイルから挨拶代わりの一撃を受ける。1D6点ダメージを受け、アルマイルからの【想い】が1点上昇する。'
545
- ],
546
- },
547
-
548
- "KCVT" => {
549
- name: "ケルト神群試練表",
550
- type: '1D6',
551
- table: [
552
- '怪物が奏でる銀の竪琴の音色が聞こえてきて、しばらくの間、眠ってしまう。眠っている間に、妖精たちに悪戯された。「恥辱」の変調を受け、アイテムを一つ選んで失う。',
553
- 'かつて倒した敵の娘から呪いをかけられてしまい、左腕が麻痺して動かなくなる。このセッションの間、【武勇】のランクが一段階減少する(Dより下にはならない)。',
554
- 'エイネーという女性に、泉の底にある指輪を取ってきて欲しいと頼まれる。泉の底に潜って戻って来ると、自分が加齢してしまっていることに気付く。罠だったのだ。自分の年齢をD66歳増やし、【活力】が0点になる。',
555
- '悪いドルイド僧から求婚を迫られる。急な話に戸惑っていると、ドルイド僧は怒りだし、PCを鹿に変える呪いをかけた。このセッションの間、【日常】のランクが一段階減少する(Dより下にはならない)。',
556
- 'ウィッカーマンに閉じ込められ、焼かれてしまう。「重傷4」の変調を受ける。',
557
- '道案内をしてくれた美女にそそのかされて、女人の国にたどりついてしまう。誘惑に耐えながら、なんとか脱出する。「堕落」と「臆病2」の変調を受ける。'
558
- ],
559
- },
560
-
561
- "SAT" => {
562
- name: "店内雰囲気表",
563
- type: 'D66',
564
- table: [
565
- [11, "山の中にある峠の茶屋"],
566
- [12, "煙草の煙がたゆたうセルフ式コーヒーチェーン店"],
567
- [13, "山上りの座卓がある和風茶寮"],
568
- [14, "ロココ調の優美で華やかな雰囲気の高級サロン"],
569
- [15, "ヴィクトリア調のシックで上品なティーハウス"],
570
- [16, "古い歌謡曲がかかり、テーブル筐体が懐かしい純喫茶"],
571
- [22, "若い子で賑わうポップな内装のいかにもなチェーン店"],
572
- [23, "ミッドセンチュリーの家具がお洒落なカフェ"],
573
- [24, "ジュークボックスが目立つアメリカンダイナー"],
574
- [25, "ピアノ曲が静かに流れる落ち着いた喫茶店"],
575
- [26, "ノマドな若者が目立つコーヒーチェーン店"],
576
- [33, "かわいい給仕さんがたくさんいるメイドカフェ"],
577
- [34, "独特の茶器でゆったりお茶を楽しめる中国茶館"],
578
- [35, "アースカラーが懐かしい健康志向なナチュラルカフェ"],
579
- [36, "見晴らしのいいカフェテラスが自慢のオープンカフェ"],
580
- [44, "壁一面にレコードが飾られているジャズ喫茶"],
581
- [45, "24時間営業で荒れた雰囲気の漫画喫茶"],
582
- [46, "色々なアナログゲームが楽しめるゲームカフェ"],
583
- [55, "ショッピングモールのフードコート内にある出店"],
584
- [56, "ビジネスマンたちが商談にいそしむ談話室"],
585
- [66, "水タバコを吸いながら会話に興じる中東風カフェ"],
586
- ],
587
- },
588
-
589
- "SMT" => {
590
- name: "特殊メニュー表",
591
- type: 'D66',
592
- table: [
593
- [11, "アド・パトレス(ケルト)"],
594
- [12, "アムブロシア(ギリシア)"],
595
- [13, "ネクタル(ギリシア)"],
596
- [14, "アムリタ(インド)"],
597
- [15, "ソーマ(インド)"],
598
- [16, "ヤシオリ(ヤマト)"],
599
- [22, "変若水/おちみず(ヤマト)"],
600
- [23, "天舐酒/あまのたむけざけ(ヤマト)"],
601
- [24, "エリクサー(錬金術)"],
602
- [25, "ハオマ(ペルシア)"],
603
- [26, "金丹(中華)"],
604
- [33, "神農茶(中華)"],
605
- [34, "チョコラトル(アステカ)"],
606
- [35, "クヴァシル(北欧)"],
607
- [36, "ヘイズルーンの乳(北欧)"],
608
- [44, "ホワイト・ドロップ(エジプト)"],
609
- [45, "リキッド・ゴールド(エジプト)"],
610
- [46, "ジヴァヤ・ヴォジャ(スラブ)"],
611
- [55, "スハルジク(メソポタミア)"],
612
- [56, "ニンフサグのミルク(メソポタミア)"],
613
- [66, "黄金の蜂蜜酒(クトゥルフ)"],
614
- ],
615
- },
120
+ "ECT" => DiceTable::Table.from_i18n("Amadeus.table.ECT", locale),
121
+ "BST" => DiceTable::Table.from_i18n("Amadeus.table.BST", locale),
122
+ "RT" => DiceTable::Table.from_i18n("Amadeus.table.RT", locale),
123
+ "PRT" => DiceTable::Table.from_i18n("Amadeus.table.PRT", locale),
124
+ "FT" => DiceTable::Table.from_i18n("Amadeus.table.FT", locale),
125
+ "BT" => DiceTable::D66Table.from_i18n("Amadeus.table.BT", locale),
126
+ "FWT" => DiceTable::Table.from_i18n("Amadeus.table.FWT", locale),
127
+ "BRT" => DiceTable::Table.from_i18n("Amadeus.table.BRT", locale),
128
+ "RIT" => DiceTable::Table.from_i18n("Amadeus.table.RIT", locale),
129
+ "WT" => DiceTable::Table.from_i18n("Amadeus.table.WT", locale),
130
+ "NMT" => DiceTable::Table.from_i18n("Amadeus.table.NMT", locale),
131
+ "TGT" => DiceTable::Table.from_i18n("Amadeus.table.TGT", locale),
132
+ "CST" => DiceTable::Table.from_i18n("Amadeus.table.CST", locale),
133
+ "GCVT" => DiceTable::Table.from_i18n("Amadeus.table.GCVT", locale),
134
+ "YCVT" => DiceTable::Table.from_i18n("Amadeus.table.YCVT", locale),
135
+ "ECVT" => DiceTable::Table.from_i18n("Amadeus.table.ECVT", locale),
136
+ "CCVT" => DiceTable::Table.from_i18n("Amadeus.table.CCVT", locale),
137
+ "NCVT" => DiceTable::Table.from_i18n("Amadeus.table.NCVT", locale),
138
+ "DGVT" => DiceTable::Table.from_i18n("Amadeus.table.DGVT", locale),
139
+ "DAVT" => DiceTable::Table.from_i18n("Amadeus.table.DAVT", locale),
140
+ "PRCT" => DiceTable::Table.from_i18n("Amadeus.table.PRCT", locale),
141
+ "TCCT" => DiceTable::Table.from_i18n("Amadeus.table.TCCT", locale),
142
+ "INCT" => DiceTable::Table.from_i18n("Amadeus.table.INCT", locale),
143
+ "PSCT" => DiceTable::Table.from_i18n("Amadeus.table.PSCT", locale),
144
+ "LVCT" => DiceTable::Table.from_i18n("Amadeus.table.LVCT", locale),
145
+ "DACT" => DiceTable::Table.from_i18n("Amadeus.table.DACT", locale),
146
+ "RGT" => DiceTable::Table.from_i18n("Amadeus.table.RGT", locale),
147
+ "FBT" => DiceTable::Table.from_i18n("Amadeus.table.FBT", locale),
148
+ "CHVT" => DiceTable::Table.from_i18n("Amadeus.table.CHVT", locale),
149
+ "LCVT" => DiceTable::Table.from_i18n("Amadeus.table.LCVT", locale),
150
+ "KCVT" => DiceTable::Table.from_i18n("Amadeus.table.KCVT", locale),
151
+ "SAT" => DiceTable::D66Table.from_i18n("Amadeus.table.SAT", locale),
152
+ "SMT" => DiceTable::D66Table.from_i18n("Amadeus.table.SMT", locale),
153
+ }
154
+ end
616
155
 
617
- }.freeze
156
+ TABLES = translate_tables(:ja_jp)
618
157
 
619
- register_prefix(['R[A-DS].*'] + TABLES.keys)
158
+ register_prefix('R[A-DS]', TABLES.keys)
620
159
  end
621
160
  end
622
161
  end