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,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bcdice/arithmetic_evaluator'
4
- require 'bcdice/dice_table/range_table'
3
+ require "bcdice/game_system/DoubleCross"
5
4
 
6
5
  module BCDice
7
6
  module GameSystem
8
- class DoubleCross_Korean < Base
7
+ class DoubleCross_Korean < DoubleCross
9
8
  # ゲームシステムの識別子
10
9
  ID = 'DoubleCross:Korean'
11
10
 
@@ -28,344 +27,28 @@ module BCDice
28
27
  ・D66다이스 있음
29
28
  INFO_MESSAGE_TEXT
30
29
 
31
- register_prefix(['\d+DX.*', 'ET'])
30
+ register_prefix_from_super_class()
32
31
 
33
- # 成功判定コマンドのノード
34
- class DX
35
- # ノードを初期化する
36
- # @param [Integer] num ダイス数
37
- # @param [Integer] critical_value クリティカル値
38
- # @param [Integer] modifier 修正値
39
- # @param [Integer] target_value 目標値
40
- def initialize(num, critical_value, modifier, target_value)
41
- @num = num
42
- @critical_value = critical_value
43
- @modifier = modifier
44
- @target_value = target_value
45
-
46
- @modifier_str = Format.modifier(@modifier)
47
- @expression = node_expression()
48
- end
49
-
50
- # 成功判定を行う
51
- # @param randomizer [Randomizer]
52
- # @return [String] 判定結果
53
- def execute(randomizer)
54
- if @critical_value < 2
55
- return "(#{@expression}) > 크리티컬치가 너무 낮습니다. 2 이상을 지정해주세요."
56
- end
57
-
58
- if @num < 1
59
- return "(#{@expression}) > 자동실패"
60
- end
61
-
62
- # 出目のグループの配列
63
- value_groups = []
64
- # 次にダイスロールを行う際のダイス数
65
- num_of_dice = @num
66
- # 回転数
67
- loop_count = 0
68
-
69
- while num_of_dice > 0 && loop_count < CommonCommand::RerollDice::REROLL_LIMIT
70
- values = randomizer.roll_barabara(num_of_dice, 10)
71
-
72
- value_group = ValueGroup.new(values, @critical_value)
73
- value_groups.push(value_group)
74
-
75
- # 次回はクリティカル発生数と等しい個数のダイスを振る
76
- # [3rd ルールブック1 p. 185]
77
- num_of_dice = value_group.num_of_critical_occurrences
78
-
79
- loop_count += 1
80
- end
81
-
82
- return result_str(value_groups)
83
- end
84
-
85
- private
86
-
87
- # 数式表記を返す
88
- # @return [String]
89
- def node_expression
90
- lhs = "#{@num}DX#{@critical_value}#{@modifier_str}"
91
-
92
- return @target_value ? "#{lhs}>=#{@target_value}" : lhs
93
- end
94
-
95
- # 判定結果の文字列を返す
96
- # @param [Array<ValueGroup>] value_groups 出目のグループの配列
97
- # @return [String]
98
- def result_str(value_groups)
99
- fumble = value_groups[0].values.all? { |value| value == 1 }
100
- # TODO: Ruby 2.4以降では Array#sum が使える
101
- sum = value_groups.map(&:max).reduce(0, &:+)
102
- achieved_value = fumble ? 0 : (sum + @modifier)
32
+ def initialize(command)
33
+ super(command)
103
34
 
104
- parts = [
105
- "(#{@expression})",
106
- "#{value_groups.join('+')}#{@modifier_str}",
107
- achieved_value_with_if_fumble(achieved_value, fumble),
108
- compare_result(achieved_value, fumble)
109
- ]
110
-
111
- return parts.compact.join(' > ')
112
- end
113
-
114
- # ファンブルかどうかを含む達成値の表記を返す
115
- # @param [Integer] achieved_value 達成値
116
- # @param [Boolean] fumble ファンブルしたか
117
- # @return [String]
118
- def achieved_value_with_if_fumble(achieved_value, fumble)
119
- fumble ? "#{achieved_value} (펌블)" : achieved_value.to_s
120
- end
121
-
122
- # 達成値と目標値を比較した結果を返す
123
- # @param [Integer] achieved_value 達成値
124
- # @param [Boolean] fumble ファンブルしたか
125
- # @return [String, nil]
126
- def compare_result(achieved_value, fumble)
127
- return nil unless @target_value
128
-
129
- # ファンブル時は自動失敗
130
- # [3rd ルールブック1 pp. 186-187]
131
- return '실패' if fumble
132
-
133
- # 達成値が目標値以上ならば行為判定成功
134
- # [3rd ルールブック1 p. 187]
135
- return achieved_value >= @target_value ? '성공' : '실패'
136
- end
35
+ @locale = :ko_kr
137
36
  end
138
37
 
139
- # 出目のグループを表すクラス
140
- class ValueGroup
141
- # 出目の配列
142
- # @return [Array<Integer>]
143
- attr_reader :values
144
- # クリティカル値
145
- # @return [Integer]
146
- attr_reader :critical_value
147
-
148
- # 出目のグループを初期化する
149
- # @param [Array<Integer>] values 出目の配列
150
- # @param [Integer] critical_value クリティカル値
151
- def initialize(values, critical_value)
152
- @values = values.sort
153
- @critical_value = critical_value
154
- end
155
-
156
- # 出目のグループの文字列表記を返す
157
- # @return [String]
158
- def to_s
159
- "#{max}[#{@values.join(',')}]"
160
- end
161
-
162
- # 出目のグループ中の最大値を返す
163
- # @return [Integer]
164
- #
165
- # クリティカル値以上の出目が含まれていた場合は10を返す。
166
- # [3rd ルールブック1 pp. 185-186]
167
- def max
168
- @values.any? { |value| critical?(value) } ? 10 : @values.max
169
- end
170
-
171
- # クリティカルの発生数を返す
172
- # @return [Integer]
173
- def num_of_critical_occurrences
174
- @values
175
- .select { |value| critical?(value) }
176
- .length
177
- end
178
-
179
- private
180
-
181
- # クリティカルが発生したかを返す
182
- # @param [Integer] value 出目
183
- # @return [Boolean]
184
- #
185
- # クリティカル値以上の値が出た場合、クリティカルとする。
186
- # [3rd ルールブック1 pp. 185-186]
187
- def critical?(value)
188
- value >= @critical_value
189
- end
190
- end
191
-
192
- def check_nD10(total, _dice_total, dice_list, cmp_op, target)
193
- return '' if target == '?'
194
- return '' unless cmp_op == :>=
195
-
196
- if dice_list.count(1) == dice_list.size
197
- " > 펌블"
198
- elsif total >= target
199
- " > 성공"
200
- else
201
- " > 실패"
202
- end
203
- end
204
-
205
- # ダイスボット固有コマンドの処理を行う
206
- # @param [String] command コマンド
207
- # @return [String] ダイスボット固有コマンドの結果
208
- # @return [nil] 無効なコマンドだった場合
209
- def eval_game_system_specific_command(command)
210
- if (dx = parse_dx(command))
211
- return dx.execute(@randomizer)
212
- end
213
-
214
- if command == 'ET'
215
- return roll_emotion_table()
216
- end
217
-
218
- return nil
219
- end
220
-
221
- private
222
-
223
- # OD Tool式の成功判定コマンドの正規表現
224
- #
225
- # キャプチャ内容は以下のとおり:
226
- #
227
- # 1. ダイス数
228
- # 2. 修正値
229
- # 3. クリティカル値
230
- # 4. 達成値
231
- DX_OD_TOOL_RE = /\A(\d+)DX([-+]\d+(?:[-+*]\d+)*)?@(\d+)(?:>=(\d+))?\z/io.freeze
232
-
233
- # 疾風怒濤式の成功判定コマンドの正規表現
234
- #
235
- # キャプチャ内容は以下のとおり:
236
- #
237
- # 1. ダイス数
238
- # 2. クリティカル値
239
- # 3. 修正値
240
- # 4. 達成値
241
- DX_SHIPPU_DOTO_RE = /\A(\d+)DX(\d+)?([-+]\d+(?:[-+*]\d+)*)?(?:>=(\d+))?\z/io.freeze
38
+ class DX < DoubleCross::DX
39
+ # @param (see DoubleCross::DX#initialize)
40
+ def initialize(num, critical_value, modifier, target_value)
41
+ super(num, critical_value, modifier, target_value)
242
42
 
243
- # 成功判定コマンドの構文解析を行う
244
- # @param [String] command コマンド文字列
245
- # @return [DX, nil]
246
- def parse_dx(command)
247
- case command
248
- when DX_OD_TOOL_RE
249
- return parse_dx_od(Regexp.last_match)
250
- when DX_SHIPPU_DOTO_RE
251
- return parse_dx_shippu_doto(Regexp.last_match)
43
+ @locale = :ko_kr
252
44
  end
253
-
254
- return nil
255
- end
256
-
257
- # OD Tool式の成功判定コマンドの正規表現マッチ情報からノードを作る
258
- # @param [MatchData] m 正規表現のマッチ情報
259
- # @return [DX]
260
- def parse_dx_od(m)
261
- num = m[1].to_i
262
- modifier = m[2] ? ArithmeticEvaluator.eval(m[2]) : 0
263
- critical_value = m[3] ? m[3].to_i : 10
264
-
265
- target_value = m[4]&.to_i
266
-
267
- return DX.new(num, critical_value, modifier, target_value)
268
- end
269
-
270
- # 疾風怒濤式の成功判定コマンドの正規表現マッチ情報からノードを作る
271
- # @param [MatchData] m 正規表現のマッチ情報
272
- # @return [DX]
273
- def parse_dx_shippu_doto(m)
274
- num = m[1].to_i
275
- critical_value = m[2] ? m[2].to_i : 10
276
- modifier = m[3] ? ArithmeticEvaluator.eval(m[3]) : 0
277
-
278
- target_value = m[4]&.to_i
279
-
280
- return DX.new(num, critical_value, modifier, target_value)
281
- end
282
-
283
- # 感情表を振る
284
- #
285
- # ポジティブとネガティブの両方を振って、表になっている側に○を付ける。
286
- #
287
- # @return [String]
288
- def roll_emotion_table
289
- pos_result = POSITIVE_EMOTION_TABLE.roll(@randomizer)
290
- neg_result = NEGATIVE_EMOTION_TABLE.roll(@randomizer)
291
-
292
- positive = @randomizer.roll_once(2) == 1
293
- pos_neg_text =
294
- if positive
295
- ["○#{pos_result.content}", neg_result.content]
296
- else
297
- [pos_result.content, "○#{neg_result.content}"]
298
- end
299
-
300
- output_parts = [
301
- "감정표(#{pos_result.sum}-#{neg_result.sum})",
302
- pos_neg_text.join(' - ')
303
- ]
304
-
305
- return output_parts.join(' > ')
306
45
  end
307
46
 
308
47
  # 感情表(ポジティブ)
309
- POSITIVE_EMOTION_TABLE = DiceTable::RangeTable.new(
310
- '감정표(포지티브)',
311
- '1D100',
312
- [
313
- # [0, '傾倒(けいとう)'],
314
- [1..5, '호기심'],
315
- [6..10, '동경'],
316
- [11..15, '존경'],
317
- [16..20, '연대감'],
318
- [21..25, '자애'],
319
- [26..30, '감복'],
320
- [31..35, '순애'],
321
- [36..40, '우정'],
322
- [41..45, '모정(慕情)'],
323
- [46..50, '동정'],
324
- [51..55, '유지(遺志)'],
325
- [56..60, '비호'],
326
- [61..65, '행복감'],
327
- [66..70, '신뢰'],
328
- [71..75, '집착'],
329
- [76..80, '친근감'],
330
- [81..85, '성의'],
331
- [86..90, '호의'],
332
- [91..95, '유위(有為)'],
333
- [96..100, '진력'],
334
- # [101, '懐旧(かいきゅう)'],
335
- # [102, '任意(にんい)'],
336
- ]
337
- ).freeze
48
+ POSITIVE_EMOTION_TABLE = positive_emotion_table(:ko_kr).freeze
338
49
 
339
50
  # 感情表(ネガティブ)
340
- NEGATIVE_EMOTION_TABLE = DiceTable::RangeTable.new(
341
- '감정표(네거티브)',
342
- '1D100',
343
- [
344
- # [0, '侮蔑(ぶべつ)'],
345
- [1..5, '식상'],
346
- [6..10, '위협'],
347
- [11..15, '질투'],
348
- [16..20, '회개'],
349
- [21..25, '공포'],
350
- [26..30, '불안'],
351
- [31..35, '열등감'],
352
- [36..40, '소외감'],
353
- [41..45, '치욕'],
354
- [46..50, '연민'],
355
- [51..55, '편애'],
356
- [56..60, '증오'],
357
- [61..65, '격의'],
358
- [66..70, '혐오'],
359
- [71..75, '시의심'],
360
- [76..80, '싫음'],
361
- [81..85, '불신감'],
362
- [86..90, '불쾌감'],
363
- [91..95, '분만(憤懣)'],
364
- [96..100, '적개심'],
365
- # [101, '無関心(むかんしん)'],
366
- # [102, '任意(にんい)'],
367
- ]
368
- ).freeze
51
+ NEGATIVE_EMOTION_TABLE = negative_emotion_table(:ko_kr).freeze
369
52
  end
370
53
  end
371
54
  end
@@ -44,91 +44,79 @@ module BCDice
44
44
 
45
45
  def initialize(command)
46
46
  super(command)
47
- @enabled_d66 = true
48
47
  @d66_sort_type = D66SortType::NO_SORT
49
48
  end
50
49
 
51
50
  def eval_game_system_specific_command(command)
52
- getConductDiceCommandResult(command) ||
53
- getResistDiceCommandResult(command) ||
51
+ roll_conduct_dice(command) ||
52
+ roll_resist_dice(command) ||
54
53
  getReactionDiceCommandResult(command) ||
55
54
  getHeresyReactionDiceCommandResult(command) ||
56
55
  getCorruptionDiceCommandResult(command) ||
57
- getTableDiceCommandResult(command) ||
58
- getSourceSceneDiceCommandResult(command) ||
59
- getPassionDiceCommandResult(command) ||
60
- getConfermentDiceCommandResult(command) ||
61
- getConfermentAfterDiceCommandResult(command) ||
62
- getElderPastDiceCommandResult(command) ||
63
- getOriginalSinDiceCommandResult(command) ||
64
- getRecentStateDiceCommandResult(command) ||
65
- getPeacefulPastDiceCommandResult(command)
56
+ roll_tables(command, self.class::TABLES)
66
57
  end
67
58
 
68
- def getConductDiceCommandResult(command)
69
- return nil unless command =~ /^DR(\d*)(\+(\d+))?$/
59
+ private
70
60
 
71
- diceCount = Regexp.last_match(1).to_i
72
- diceCount = 4 if diceCount == 0
73
- thirstyPoint = Regexp.last_match(3).to_i
74
-
75
- diceList = @randomizer.roll_barabara(diceCount, 6).sort
61
+ # 行い判定 (DRx+y)
62
+ def roll_conduct_dice(command)
63
+ m = /^DR(\d*[1-9])?(\+\d+)?$/.match(command)
64
+ unless m
65
+ return nil
66
+ end
76
67
 
77
- gloryDiceCount = getGloryDiceCount(diceList)
78
- gloryDiceCount.times { diceList << 10 }
68
+ dice_count = m[1]&.to_i || 4
69
+ thirsty_point = m[2].to_i
79
70
 
80
- diceList, calculationProcess = getThirstyAddedResult(diceList, thirstyPoint)
81
- thirstyPointMarker = (thirstyPoint == 0 ? "" : "+#{thirstyPoint}")
71
+ dice_list = @randomizer.roll_barabara(dice_count, 6).sort
82
72
 
83
- result = "(#{command}) > #{diceCount}D6#{thirstyPointMarker} > "
84
- result += "[ #{calculationProcess} ] > " unless calculationProcess.empty?
85
- result += "[ #{diceList.join(', ')} ]"
86
- return result
87
- end
73
+ glory_dice = count_glory_dice(dice_list)
74
+ dice_list += Array.new(glory_dice, 10)
88
75
 
89
- def getGloryDiceCount(diceList)
90
- oneCount = countTargetDice(diceList, 1)
91
- sixCount = countTargetDice(diceList, 6)
76
+ calculation_process = apply_thirsty_point(dice_list, thirsty_point)
92
77
 
93
- gloryDiceCount = (oneCount / 2) + (sixCount / 2)
94
- return gloryDiceCount
95
- end
78
+ sequence = [
79
+ "(#{command})",
80
+ "#{dice_count}D6#{Format.modifier(thirsty_point)}",
81
+ calculation_process,
82
+ "[ #{dice_list.join(', ')} ]",
83
+ ].compact
96
84
 
97
- def countTargetDice(diceList, target)
98
- diceList.select { |i| i == target }.count
85
+ return sequence.join(" > ")
99
86
  end
100
87
 
101
- def getThirstyAddedResult(diceList, thirstyPoint)
102
- return diceList, '' if thirstyPoint == 0
88
+ def count_glory_dice(dice_list)
89
+ one_count = dice_list.count(1)
90
+ six_count = dice_list.count(6)
103
91
 
104
- targetIndex = diceList.rindex { |i| i <= 6 }
105
- return diceList, '' if targetIndex.nil?
92
+ return (one_count / 2) + (six_count / 2)
93
+ end
106
94
 
107
- textList = []
95
+ def apply_thirsty_point(dice_list, thirsty_point)
96
+ return nil if thirsty_point == 0
108
97
 
109
- diceList.each_with_index do |item, index|
110
- if targetIndex == index
111
- textList << "#{item}+#{thirstyPoint}"
112
- else
113
- textList << item.to_s
114
- end
115
- end
98
+ idx = dice_list.rindex { |i| i <= 6 }
116
99
 
117
- diceList[targetIndex] += thirstyPoint
100
+ text_list = dice_list.map(&:to_s)
101
+ text_list[idx] += "+#{thirsty_point}"
102
+ dice_list[idx] += thirsty_point
118
103
 
119
- return diceList, textList.join(', ')
104
+ return "[ #{text_list.join(', ')} ]"
120
105
  end
121
106
 
122
- def getResistDiceCommandResult(command)
123
- return nil unless command =~ /^DRR(\d+)$/
107
+ # 抗い判定 (DRRx)
108
+ def roll_resist_dice(command)
109
+ m = /^DRR(\d+)$/.match(command)
110
+ unless m
111
+ return nil
112
+ end
124
113
 
125
- diceCount = Regexp.last_match(1).to_i
126
- diceCount = 4 if diceCount == 0
114
+ dice_count = m[1].to_i
115
+ dice_count = 4 if dice_count == 0
127
116
 
128
- diceList = @randomizer.roll_barabara(diceCount, 6).sort
117
+ dice_list = @randomizer.roll_barabara(dice_count, 6).sort
129
118
 
130
- result = "(#{command}) > #{diceCount}D6 > [ #{diceList.join(', ')} ]"
131
- return result
119
+ return "(#{command}) > #{dice_count}D6 > [ #{dice_list.join(', ')} ]"
132
120
  end
133
121
 
134
122
  def getReactionDiceCommandResult(command)
@@ -137,9 +125,11 @@ module BCDice
137
125
  typeText1 = Regexp.last_match(2)
138
126
  typeText2 = Regexp.last_match(3)
139
127
 
140
- name = "反応表"
128
+ name = translate("Dracurouge.RT.name")
129
+ blood = translate("Dracurouge.RT.blood")
130
+ style = translate("Dracurouge.RT.style")
141
131
 
142
- return getReactionText(name, typeText1, typeText2, getReactionInfoBlood, getReactionInfoStyle)
132
+ return getReactionText(name, typeText1, typeText2, blood, style)
143
133
  end
144
134
 
145
135
  def getHeresyReactionDiceCommandResult(command)
@@ -148,9 +138,11 @@ module BCDice
148
138
  typeText1 = Regexp.last_match(2)
149
139
  typeText2 = Regexp.last_match(3)
150
140
 
151
- name = "異端の反応表"
141
+ name = translate("Dracurouge.HRT.name")
142
+ blood = translate("Dracurouge.HRT.blood")
143
+ style = translate("Dracurouge.HRT.style")
152
144
 
153
- return getReactionText(name, typeText1, typeText2, getHeresyReactionInfoBlood, getHeresyReactionInfoStyle)
145
+ return getReactionText(name, typeText1, typeText2, blood, style)
154
146
  end
155
147
 
156
148
  def getReactionText(name, typeText1, typeText2, infos1, infos2)
@@ -169,11 +161,10 @@ module BCDice
169
161
  index = (one_value - 1) + (isBefore ? (ten_value - 1) : (ten_value - 4)) * 6
170
162
  debug("index", index)
171
163
 
172
- resultText = ''
173
164
  if typeText.nil?
174
165
  resultText = getReactionTextFull(infos, index)
175
166
  else
176
- info = infos.find { |i| i[:type] == typeText }
167
+ info = infos[typeText.to_sym]
177
168
  return nil if info.nil?
178
169
 
179
170
  resultText = getReactionTex(info, index)
@@ -185,14 +176,13 @@ module BCDice
185
176
  def checkTypeText(typeText, infos)
186
177
  return true if typeText.nil?
187
178
 
188
- keys = infos.collect { |i| i[:type] }
189
- return keys.include?(typeText)
179
+ return infos.keys.include?(typeText.to_sym)
190
180
  end
191
181
 
192
182
  def getReactionTextFull(infos, index)
193
183
  resultTexts = []
194
184
 
195
- infos.each do |info|
185
+ infos.each_value do |info|
196
186
  resultTexts << getReactionTex(info, index)
197
187
  end
198
188
 
@@ -206,1069 +196,22 @@ module BCDice
206
196
  return "#{typeName}:#{text}"
207
197
  end
208
198
 
209
- def getReactionInfoBlood
210
- infos =
211
- [
212
- {type: "D",
213
- name: "ドラク",
214
- table: [
215
- '空に輝く紅い月を仰ぐ',
216
- '小さくため息をつく',
217
- '相手を見下すように見る',
218
- 'じっと目を合わせ語りかける',
219
- 'かすかに微笑んで見せる',
220
- '懐から蝙蝠が飛び立つ',
221
- '頭上を蝙蝠が渦巻くように飛ぶ',
222
- '眉を寄せると共に、目が紅く光る',
223
- '手の中のワインを一口すする',
224
- '全身から薄紅色のオーラを発する',
225
- '不敵な笑みを浮かべる',
226
- '風もなく髪が舞う',
227
- '飽きた目で相手を見据える',
228
- '足元に小さなつむじ風が起こる',
229
- '激情や緊張感に髪が逆立つ',
230
- '紅い月の光を浴び、目を閉じる',
231
- '武器を掲げ、誓いの音頭を取る',
232
- '己の紋章をじっと見つめる'
233
- ]},
234
- {type: "R",
235
- name: "ローゼンブルク",
236
- table: [
237
- '鼻で笑う',
238
- '前髪をかき上げる',
239
- '己の髪をいじる',
240
- '一人小さく笑う',
241
- 'ハミングで歌を口ずさむ',
242
- '片足を軸に、くるりと回る',
243
- '花弁を具現化し散らす',
244
- '衣装や鎧の色や装飾を変える',
245
- '己に酔い、目を閉じる',
246
- '具現化した華を手の中で弄ぶ',
247
- '気になる相手を口説こうとする',
248
- '肩をすくめる',
249
- '己の武器に口づけをする',
250
- '誘うように誰かの手を取る',
251
- '楽器を具現化し音を奏でる',
252
- '相手にウィンクする',
253
- '衣装についた埃を払う',
254
- 'マントから無数の蝶が飛び立つ'
255
- ]},
256
- {type: "H",
257
- name: "ヘルズガルド",
258
- table: [
259
- '自粛を呼びかける咳払いをする',
260
- '眉をひそめる',
261
- '小言を言う',
262
- '無表情で相手を観察する',
263
- '足元に小さな地獄門が生じる',
264
- '周囲にわずかな怨嗟の声が響く',
265
- '咎めるような目を向ける',
266
- '直立不動の姿勢で立つ',
267
- '呆れた様子でため息をつく',
268
- '突然、振り返って睨む',
269
- '周囲の空気が凍りつく',
270
- '胸に手を当て、己を落ち着かせる',
271
- '手の中に具現化した鎖を弄ぶ',
272
- '周囲を厳しい目で見渡す',
273
- '仲間に疑いの視線を向ける',
274
- '感情に合わせ周囲に鎖が具現化',
275
- '堕落について忠告する',
276
- '冷たい視線で相手を一瞥する'
277
- ]},
278
- {type: "M",
279
- name: "ダストハイム",
280
- table: [
281
- '眉を寄せて考え込む',
282
- '周りを値踏みする目で見る',
283
- '手元に本を具現化し書き込む',
284
- 'つまらなそうに眺める',
285
- '落ち着いた歩調で近づく',
286
- '目を閉じ、過去に想いを馳せる',
287
- '歩む跡、かすかな霧が舞う',
288
- '苦笑を浮かべて歩み寄る',
289
- '現状を分析する独り言を言う',
290
- '興味深そうに質問する',
291
- '目の前の様式に文句を言う',
292
- '無感動に会釈をする',
293
- '手の中に具現化したペンを弄ぶ',
294
- '目を見開き、感心する',
295
- '本、袖、マントなどで口元を隠す',
296
- '宙に浮かび、すべるように進む',
297
- '無感情に状況を検分する',
298
- '一瞬、姿が霧に包まれぼやける'
299
- ]},
300
- {type: "A",
301
- name: "アヴァローム",
302
- table: [
303
- '欠伸を噛み殺す',
304
- '頭をかく',
305
- '手元に生じた果実を食べる',
306
- '人懐っこい笑みを浮かべる',
307
- '夜鳥が肩にとまって来る',
308
- '黒猫が足元にじゃれて来る',
309
- '周囲を妖精の光が舞う',
310
- '瞬時に相手の側に現れる',
311
- '瞬時に相手から離れる',
312
- '虫や植物に気を取られる',
313
- '無垢な笑みを見せる',
314
- 'うっかり誰かを巻き込んでころぶ',
315
- '誰かに甘えるようにもたれかかる',
316
- '笑みを浮かべながら頷く',
317
- '小さく首をかしげる',
318
- '無数の黒い鳥の羽根が宙を舞う',
319
- '果実を取り出して食べる',
320
- '思わせぶりな言葉や仕草をする'
321
- ]},
322
- {type: "N",
323
- name: "ノスフェラス",
324
- table: [
325
- '冥王領の方角を睨む',
326
- '舌打ちをする',
327
- '俯いて床や地面を睨む',
328
- '無意識に涙が伝う',
329
- '唇を噛む',
330
- '胸を押さえじっと考える',
331
- '首を打ち振って邪念を払う',
332
- '内心の怒りに険しい貌となる',
333
- '毅然とした態度で立ち向かう',
334
- '渇いた笑い声を漏らす',
335
- '己の血族を貶める言葉を紡ぐ',
336
- '静かな怒りと共に目が青白く光る',
337
- '野の花に触れ、それを枯らす',
338
- '疲れた様子で淡く光る吐息を吐く',
339
- '己の紋章をぼんやりと見つめる',
340
- '自嘲的に小さく笑う',
341
- '疲れた目でぼんやりと他を見る',
342
- '何か決心したように顔を上げる'
343
- ]},
344
- {type: "G",
345
- name: "ゲイズヴァルト",
346
- table: [
347
- '相手を見下すように見る',
348
- '激情に合わせ頭髪が',
349
- '高らかに自らの血統を名乗る',
350
- '武器を具現化し、掲げる',
351
- '他者を睨みつける',
352
- '相対する者が、圧迫感を感じる',
353
- 'じっと目を閉じる',
354
- '他に威圧的な態度をとる',
355
- '不敵な笑みを浮かべる',
356
- '片目に手を当て、眉を寄せる',
357
- '目が一瞬だけ異様に光る',
358
- '鋭い視線を周囲に巡らせる',
359
- '髪が淡く光る',
360
- '背後の者が、貴卿の視線を感じる',
361
- '眼球の白目が異様な色に光る',
362
- '目隠しを具現化して目を隠す',
363
- '余裕のある笑みを浮かべる',
364
- '目から光が炎のように噴き上がる'
365
- ]},
366
-
367
- {type: "K",
368
- name: "カインシルト",
369
- table: [
370
- '両手で顔を覆う',
371
- '逆立つ小さく肩を落とす',
372
- '過去を思い出し、眉をひそめる',
373
- '疲れ切ったように座り込む',
374
- '己の紋章に触れ、ためいきをつく',
375
- 'ワインの水面をじっと見つめる',
376
- '疲れ、渇いた笑みを浮かべる',
377
- '居心地悪そうに下を向く',
378
- '故郷の方角をちらりと見る',
379
- '衣装の襟や裾をいじる',
380
- '他の騎士から少し距離をとり、離れる',
381
- '他の騎士を、自虐的に褒める',
382
- '胸に手を当て、沈思黙考する',
383
- '己のかつての血統の名を呟く',
384
- '沈痛な面持ちで空を見上げる',
385
- '誇りを持って、己の紋章を掲げる',
386
- '己の罪や信仰を吐露する',
387
- '血統を捨てた理由について語る'
388
- ]},
389
-
390
- ]
391
-
392
- return infos
393
- end
394
-
395
- def getReactionInfoStyle
396
- infos =
397
- [
398
- {type: "F",
399
- name: "領主",
400
- table: [
401
- '相手の目を覗き心を探る',
402
- '己の領地に想いを馳せる',
403
- '従者を侍らせる',
404
- '従者の世話を受ける',
405
- '好ましい相手を手招きする',
406
- '憂いに満ちた物思いにふける',
407
- '重々しく頷く',
408
- '優しげな微笑を浮かべる',
409
- 'ちらりと己の紋章を示す',
410
- 'ワインの杯を他の騎士に渡す',
411
- 'じっと風景を眺める',
412
- '手の中にチェスの駒を具現化する',
413
- '胸を張り、自信を持って発言する',
414
- '速やかに謝罪する',
415
- '他の騎士を正面から褒める',
416
- '他の騎士の髪や頬を撫でる',
417
- '重々しく名乗りを上げる',
418
- '口元を隠しつつ上品に笑う'
419
- ]},
420
- {type: "G",
421
- name: "近衛",
422
- table: [
423
- '主の傍にそっと寄り添う',
424
- '紋章の刻まれた盾を掲げる',
425
- '武器を構えて上品に一礼する',
426
- '己の盾の紋章を指でなぞる',
427
- '他の騎士に寄り添う',
428
- '主の背後から相手を睨む',
429
- '主の前、または傍らにひざまずく',
430
- 'きまり悪そうに顔を赤く染める',
431
- '誰かの前に立ちはだかる',
432
- '落ち着かなげに歩き回る',
433
- 'はにかんだ笑みを浮かべる',
434
- '緊張した視線を周囲に巡らす',
435
- '心の中で他の騎士と試合をする',
436
- 'じっと動かず控えている',
437
- '主をじっと見つめる',
438
- '主を褒めたたえる',
439
- '主の袖を握りしめる',
440
- '主に対する、周囲の態度を咎める'
441
- ]},
442
- {type: "R",
443
- name: "遍歴",
444
- table: [
445
- 'かつての戦いについて語る',
446
- '風に髪をなびかせる',
447
- '具現化した乗騎を撫でる',
448
- '仲間の肩を叩く、あるいは抱く',
449
- '爽やかに笑う',
450
- '高らかに名乗りをあげる',
451
- '周囲に積極的に話しかける',
452
- '己の名に誓い、約束をする',
453
- '大げさに誰かを褒めたたえる',
454
- '他の騎士に手合わせを乞う',
455
- 'マントを大げさにひるがえす',
456
- '相手を褒めそやし口づけを求める',
457
- '己の故郷を思い出す',
458
- '己の紋章について語る',
459
- '他の騎士と世間話をする',
460
- '困ったように小さく唸る',
461
- '格上の前に跪いて礼を尽くす',
462
- '格下や人間に微笑みかける'
463
- ]},
464
- {type: "W",
465
- name: "賢者",
466
- table: [
467
- '相手を推し測るように見つめる',
468
- 'メガネを具現化してかける',
469
- 'わずかな点に目を留める',
470
- '大げさにため息をついて見せる',
471
- '目を閉じて思索にふける',
472
- '他の騎士に助言する',
473
- 'ごまかすように咳払いする',
474
- 'わずかな会釈をする',
475
- '他の騎士に目で合図をする',
476
- '謎めいた笑みを浮かべる',
477
- '空に浮かぶ星々を眺める',
478
- '深い知識で詳しい説明をする',
479
- '未来について占ってみる',
480
- 'ささやかな予言をする',
481
- '噂の類を他の騎士に囁く',
482
- 'ふとした品を興味深く観察する',
483
- '月を見上げドラクルを褒め讃える',
484
- '他の騎士の感情をいさめる'
485
- ]},
486
- {type: "J",
487
- name: "狩人",
488
- table: [
489
- '“敵”を思い出し険しい目になる',
490
- '唾を吐く',
491
- '具現化した武器を撫でる',
492
- '陰鬱な目で虚空を睨む',
493
- '裾から現れた蛇か蜘蛛を撫でる',
494
- '思いつめた目で夜空を見る',
495
- '己の武器を舐めて見せる',
496
- '暗い笑みを浮かべる',
497
- '物陰に隠れる',
498
- '他の騎士の紋章を観察する',
499
- '空気を読まない発言をする',
500
- '突然振り向いて背後に警戒する',
501
- '過去の無念に血涙を流す',
502
- '鮫のように笑う',
503
- 'その場にいない騎士を嘲笑う',
504
- '他の騎士とのへだたりを感じる',
505
- 'ぼそりと名乗りをあげる',
506
- '格下を見下した目で見る'
507
- ]},
508
- {type: "N",
509
- name: "夜獣",
510
- table: [
511
- '獣のような荒い呼吸をする',
512
- '潤んだ上目遣いで相手を見る',
513
- '俯いて深呼吸する',
514
- '壁や床に爪を立てて引っかく',
515
- '己に言い聞かせる独り言を言う',
516
- '堕落の兆しをじっと見る',
517
- '他の騎士から目をそらす',
518
- '他の騎士の機嫌を窺う',
519
- '相手を睨み唸る',
520
- '己の指先をちろりと舐め上げる',
521
- '他の騎士から距離を取り離れる',
522
- '獰猛な笑みを浮かべる',
523
- '己の肌を、爪などで傷つける',
524
- 'こっそり舌なめずりをする',
525
- '妖しい流し目を送る',
526
- '哀しげな目で己の紋章を見る',
527
- '獲物を狙う目で、他の騎士を見る',
528
- '自虐的な言葉をつぶやく'
529
- ]},
530
- {type: "E",
531
- name: "将軍",
532
- table: [
533
- '机や壁を叩きつつ、激昂する',
534
- '失敗した部下をたしなめる',
535
- '凶悪な笑みを浮かべる',
536
- '音を立てて踵をそろえ、直立する',
537
- '不機嫌そうに酒杯をあおる',
538
- '壁や卓上に周辺地図を具現化する',
539
- '口をつぐみ、厳めしい顔をする',
540
- '部下から情報を耳打ちされる',
541
- '他の騎士を品定めするように見る',
542
- '内密の話のため、移動する',
543
- '他の騎士に助言する',
544
- '他者をいさめる',
545
- '目を閉じ、戦場に想いを馳せる',
546
- '部下や民に酒食をふるまう',
547
- 'かつての戦場について語る',
548
- '戦術について他の騎士と語る',
549
- '他者を激励する',
550
- '部下や民からの報告を聞く'
551
- ]},
552
- {type: "B",
553
- name: "僧正",
554
- table: [
555
- '深々とため息をつく',
556
- '紅い月を眺め、涙を溢れさせる',
557
- '他者を咎め説教する',
558
- 'その場に跪き、月へ祈る',
559
- '他の騎士を心配する',
560
- '教典の一文を読み上げる',
561
- '他の騎士や民を諌める',
562
- '教典を具現化し、他者に手渡す',
563
- '真祖へ感謝の言葉を述べる',
564
- '壇上などに真祖の印を具現化する',
565
- '騎士や民を微笑み眺める',
566
- '他者の言葉に大いに感動する',
567
- '他の騎士の行いを戒める',
568
- '相手を慈しむ微笑みを浮かべる',
569
- '他者を大いに褒める',
570
- '他者をいたわるように撫でる',
571
- '真祖の印を強く握りしめる',
572
- '天の紅き月へ感謝を捧げる'
573
- ]},
574
- {type: "H",
575
- name: "空駆",
576
- table: [
577
- '乗騎が他を退け、過剰に守ろうとする',
578
- '粗相した乗騎を、軽く叱る',
579
- '他の者らを警戒する乗騎をなだめる',
580
- '他の者に心許す乗騎に嫉妬する',
581
- '己の乗騎と、子供のように戯れる',
582
- '乗騎に乗り、共に駆ける素晴らしさを語る',
583
- '高らかに、己と乗騎の名乗りをあげる',
584
- 'つい礼法を忘れ、誰かの髪を撫でる',
585
- '乗騎にもたれかかり、目を細める',
586
- '周りと話しつつも、己の乗騎を気に掛ける',
587
- '己の乗騎に語りかける',
588
- '己の乗騎と、食事を分け合う',
589
- '己の乗騎を褒められて照れる',
590
- '己の乗騎の頼もしさについて語る',
591
- '様々な装飾を具現化し、己の乗騎を飾る',
592
- '具現化ではない小鳥や小動物が集まる',
593
- '乗騎を抱きしめて撫でながら褒める',
594
- '己の乗騎を得た次第について語る'
595
- ]},
596
- {type: "K",
597
- name: "船長",
598
- table: [
599
- '少しばかり下世話な冗句を言う',
600
- '礼式に肩をすくめ、居心地悪そうにする',
601
- 'かすかな潮風を具現化させ、吹かせる',
602
- '口笛で素朴な曲を披露して見せる',
603
- '瀟洒ならずとも快活な笑いをこぼす',
604
- 'その周囲にかすかな潮騒が聞こえ始める',
605
- '異国風の歌や曲を披露して見せる',
606
- '誰かに、美しい貝殻を土産として手渡す',
607
- '誰かの手を取り、異国風の踊りに誘う',
608
- '異郷の珍味、酒を周りに勧める',
609
- '己の船の小さな模型を具現化して見せる',
610
- '情熱的に、誰かをかき口説く',
611
- '他の領地で見聞した話を語る',
612
- '己の船と、その名の由来について語る',
613
- '誰かを次の航海に誘う',
614
- '海の脅威について法螺交じりに語る',
615
- '異郷の様々な情景を具現化して見せる',
616
- '遥か遠い奇妙な島や海域について語る'
617
- ]},
618
-
619
- {type: "L",
620
- name: "寵童",
621
- table: [
622
- '主の影にそっと隠れる',
623
- '主から離れず、ぴったりと密着する',
624
- '主の袖を小さく摘まみ、軽く引っ張る',
625
- '主に頭を撫でてもらう',
626
- '主の髪に指を絡め、梳いたり弄ったりする',
627
- '主に甘えるようにもたれかかる',
628
- '主に、ちょっとした我儘を言う',
629
- 'はにかんだ笑顔を浮かべて見せる',
630
- '目を潤ませ、熱い溜息をつく',
631
- 'きまり悪そうに頬を赤く染め、顔を背ける',
632
- '申し訳なさそうな顔で、うつむいてしまう',
633
- '主以外の騎士を、じっと見つめてしまう',
634
- '無意識に誘うような仕草をしてしまう',
635
- '誰かに飛びつき、しがみついて抱きしめる',
636
- '庇護欲をそそらせる微笑を浮かべる',
637
- '主以外の騎士に、熱心に質問を重ねる',
638
- '切なげな溜息をつく',
639
- '主の手を取り、その指を舐める'
640
- ]},
641
- {type: "V",
642
- name: "仲立",
643
- table: [
644
- '他者を冷たい目で品定めする',
645
- '人目を避けて、露骨に不機嫌な顔になる',
646
- '音を立てずに舌打ちする',
647
- 'ほがらかな笑顔だが、目は笑っていない',
648
- '敢えて周囲に軽んじられるよう、振る舞う',
649
- '顎に手を当て、軽く考え込む',
650
- '会話に入り込めない者を話に誘う',
651
- '他の者らを紹介させ合い、縁を取り持つ',
652
- '目論見を思案し、悪い顔で目を細める',
653
- '周囲の人間模様をそれとなく観察する',
654
- '誰かに積極的に話しかける',
655
- '笑顔で会話しつつ、相手の真意を探る',
656
- 'そっと相手の唇に指を当て、言葉を封じる',
657
- '様々な人々との談笑にふける',
658
- '誰かにちょっとした贈り物を手渡す',
659
- '誰かに相談事はないかと、軽く聞く',
660
- '誰かについて、惜しみない賞賛を語る',
661
- '誰かを嫌味でない程度に褒めそやす'
662
- ]},
663
- {type: "U",
664
- name: "技師",
665
- table: [
666
- '持ち歩いていた人形の部位を弄ぶ',
667
- '過去の作品を具現化し、自画自賛する',
668
- '己の技巧の未熟さについて嘆く',
669
- '己の作品以外が褒められるを聞いて嫉妬',
670
- 'ふとした品を興味深そうに分解し始める',
671
- '人形に活かすべく誰かの体を撫で回す',
672
- '誰かの手を取り、弄り回す',
673
- '突然、羊皮紙に図面を書き始める',
674
- 'メガネを具現化してかける',
675
- '人形の美しさについて、周囲の意見を問う',
676
- '相手の美しさを奇妙な視点で賛辞する',
677
- '思いついた人形の部位を具現化してみる',
678
- '他愛ない事象から、新たな着想を得る',
679
- '自動人形のための衣装を具現化してみる',
680
- '魂と堕落について、誰かと語り合う',
681
- '己の理想とする人形について語る',
682
- '誰かの美しさに目を奪われる',
683
- '誰かの仕草に、嘆息して感動を覚える'
684
- ]},
685
- {type: "D",
686
- name: "博士",
687
- table: [
688
- '素晴らしい着想を得て、奇声をあげる',
689
- '誰かの非理論的な発言に食ってかかる',
690
- '他の騎士の非合理的作法を鼻で笑う',
691
- '突然、満面の笑みを浮かべる',
692
- '己の研究について嬉々として語る',
693
- '平然と場の空気を無視した発言をする',
694
- '実験動物を見る目で、誰かを見つめる',
695
- '衣装の機能性について、誰かを批判する',
696
- '己の才に酔い、一人ほくそえむ',
697
- '閃いた着想を紙片に書き留めておく',
698
- '行き詰った研究について独り言を呟く',
699
- '誰かのあまりに低い知的水準を嘆く',
700
- 'メガネを具現化してかける',
701
- '黙り込んで様々な試行錯誤に専念する',
702
- '目を閉じて、学術的瞑想にふける',
703
- 'ふとした品を興味深く観察し、分析する',
704
- '誰かに研究への協力を頼みこむ',
705
- '己なりに知的な言葉で誰かを賛辞する'
706
- ]},
707
- {type: "S",
708
- name: "星読",
709
- table: [
710
- '空に同調しすぎて、一瞬だけ具現化が解ける',
711
- '目を開き空を見上げたまま、仰向けに横たわる',
712
- 'じっと空を見上げたまま、反応しなくなる',
713
- '星辰の変化に驚愕し、奇声をあげてしまう',
714
- 'ほんやりと空の星を見上げる',
715
- '星を掴もうとするように両手を広げ、空を見上げる',
716
- '目を見開き、じっと空の星を集中して見つめる',
717
- '星辰について感覚的な言葉を並べ続ける',
718
- 'ぶつぶつと星の在り方について呟き、計算する',
719
- '手近な誰かに、星辰の在り様を細かく説明する',
720
- '思わぬ星の動きを見つけ、興奮する',
721
- '誰かに、興味深い星が宿っていることに気づく',
722
- '誰かに、星の定めた運命を予言する',
723
- '誰かに、その運命を変えると宣言する',
724
- '空を指差し、その先にある星を輝かせる',
725
- '空に手を軽く振り、風を起こして雲をどかす',
726
- '空に手を軽く振り、雲で特定の星を隠す',
727
- '空に手を差し出し、紅月をさらに輝かせる'
728
- ]},
729
- {type: "G2",
730
- name: "後見",
731
- table: [
732
- '己の過去に搦めて、誰かを説教してしまう',
733
- '庇護対象の未熟さに、小さな溜息をつく',
734
- '少し離れた場所から庇護対象を見守る',
735
- '昂り、出しゃばってしまいそうな己を抑える',
736
- '庇護対象の背後に、黙って控える',
737
- '誰かと語らいつつ、庇護対象を時折うかがう',
738
- '若き騎士らの様子を、まぶしそうに見守る',
739
- '己の紋章を撫でて、若き日々に思いを馳せる',
740
- 'そっと、庇護対象を背後から抱き寄せる',
741
- '顎に手を当て、軽く考え込む',
742
- '会話に入り込めない者を話に誘う',
743
- '他の者らを紹介させ合い、縁を取り持つ',
744
- '誰かに、庇護対象の良き逸話を話す',
745
- 'ふと、自身の騎士道の果てが近づいたと感じる',
746
- '民らの様子を、注意深く観察する',
747
- '庇護対象の成長に、、思わず顔をほころばせる',
748
- '庇護対象に、控えめな助言を与える',
749
- '庇護対象に微笑みかけ、わずかに褒める'
750
- ]},
751
- ]
752
-
753
- return infos
754
- end
755
-
756
- def getHeresyReactionInfoBlood
757
- infos =
758
- [
759
- {type: "L",
760
- name: "異端卿",
761
- table: [
762
- '床を睨み意識を何とか保つ',
763
- '歩いた跡に、消えゆく塵を遺す',
764
- '鎧全体に、光が脈打つ',
765
- '金の軋むような呻き声を漏らす',
766
- '足音に悲嘆がこもる',
767
- '声なき咆哮を放つ',
768
- '他者を威圧する',
769
- '胸に手を当て、己を落ち着かせる',
770
- '一瞬、かつての紋章が浮かぶ',
771
- '鎧の中で金属の軋む音がする',
772
- '鎧に一瞬、無数の棘が生える',
773
- '兜の中の目がギラギラと光る',
774
- '体が痙攣したように震える',
775
- '鎧の一部が一瞬、武器化する',
776
- '鎧が蠢いて奇怪な形になる',
777
- '周囲に青白い光が立ち昇る',
778
- '己の目的について語る',
779
- '恐ろしい目で他者を見る'
780
- ]},
781
- {type: "V",
782
- name: "ヴルコラク",
783
- table: [
784
- '己の頭をかきむしる',
785
- '膝をついて、苦しみもがく',
786
- '一瞬、人狼の姿が重なる',
787
- '他者の喉を凝視する',
788
- '獣のように呼吸が荒くなる',
789
- '己に言い聞かせる独り言を言う',
790
- '唇を噛み、口の端から血を流す',
791
- 'ざわざわと衣服の下で肉が蠢く',
792
- '牙を剥きだして唸る',
793
- '顔を険しくしかめる',
794
- '思いつめた目で押し黙る',
795
- '壁にすがりつき、嗚咽を漏らす',
796
- '己の胸を押さえて深呼吸する',
797
- '獲物を狙う目で、騎士を見る',
798
- '月をじっと見つめる',
799
- '一瞬、頭に狼の耳が現れる',
800
- '月を見上げ、怒りの唸りを漏らす',
801
- '決意した顔で、正面を見る'
802
- ]},
803
- {type: "N",
804
- name: "ナハツェーラ",
805
- table: [
806
- '生きたものをじっと見つめる',
807
- '己の手を見て、深いため息をつく',
808
- '少しだけ遅れて受け応えする',
809
- '一瞬、脱力して死体に戻る',
810
- 'ひからびたような笑い声を漏らす',
811
- '歩いた跡に血の足跡が残る',
812
- '周囲に生ぬるい湿った風が吹く',
813
- '手がどろりと血に塗れる',
814
- '無意識に、涙が流れてしまう',
815
- '植物に触れ、一瞬で枯らす',
816
- '裾から多数の骨が溢れ出す',
817
- '触れた通常の品が、朽ち果てる',
818
- '周囲の温度が下がる',
819
- '目が青白く光る',
820
- '淡く光るため息を漏らす',
821
- '傍らに鬼火を具現化する',
822
- '生前について語る',
823
- '手の中に髑髏を具現化する'
824
- ]},
825
- {type: "K",
826
- name: "カルンシュタイン",
827
- table: [
828
- '姿が霧に包まれぼやける',
829
- '一瞬、白目が黒く染まる',
830
- '存在感を消して物陰に佇む',
831
- '周囲の些細な音に警戒する',
832
- '騎士から目をそらす',
833
- '一人小さく笑う',
834
- '床を浮かび、すべるように進む',
835
- '歩む跡、かすかに黒い霧が舞う',
836
- '黒い蒸気のような吐息を吐く',
837
- '片足を軸に、くるりと回る',
838
- '己の髪をいじったり、かき上げる',
839
- '衣装についた埃を払う',
840
- '口元を隠して笑みをこぼす',
841
- '他から距離を取って、闇に潜む',
842
- '騎士の紋章をじろじろと見る',
843
- '貴族的な笑みをこぼす',
844
- '自信に溢れた様子で胸を張る',
845
- '豪奢な衣装を具現化してまとう'
846
- ]},
847
- {type: "G",
848
- name: "グリマルキン",
849
- table: [
850
- 'その場で居眠りする',
851
- '大きな欠伸をする',
852
- '猫の姿で、居眠りをする',
853
- '猫の姿で、壁をひっかく',
854
- '他者の具現化に飛びかかる',
855
- '黒猫が足元にじゃれて来る',
856
- '尻尾をぴんと伸ばす',
857
- '猫の姿で、他者を威嚇する',
858
- '不満を漏らす',
859
- '猫の姿で、狭い所に入り込む',
860
- '耳と尻尾がぴくぴくと動く',
861
- '家具や木の上に登る',
862
- '猫の声で鳴く',
863
- '退屈そうに小物をいじり回す',
864
- '周囲に近隣の猫が集まる',
865
- '猫の姿で、他者の膝上にのる',
866
- '適当な小物にじゃれついて遊ぶ',
867
- '他者にじゃれつく'
868
- ]},
869
- {type: "S",
870
- name: "ストリガ",
871
- table: [
872
- '翼をきつく閉じて怯える',
873
- '他の騎士や異端にとにかく謝る',
874
- '弱者をいじめる',
875
- '他のストリガを貶める言葉を紡ぐ',
876
- '強者にへりくだって媚びを売る',
877
- '民などに高慢な態度をとる',
878
- '民の小さな失敗をなじる',
879
- '肩にとまった小鳥と語らう',
880
- '翼を広げ、他者に手をさしのべる',
881
- '袖から小鳥が飛び立つ',
882
- 'ハミングで歌を口ずさむ',
883
- '上空で鳥が輪を描き、歌う',
884
- '他者に愛想よく微笑みかける',
885
- '無数の黒い鳥の羽根が宙を舞う',
886
- '他者を翼で包み抱きしめる',
887
- '美しい声で歌い始める',
888
- '肩に舞い降りた鳥が耳元で鳴く',
889
- '周囲に無数の小鳥が集まる'
890
- ]},
891
- {type: "M",
892
- name: "メリュジーヌ",
893
- table: [
894
- 'ぼんやりと遠くを眺める',
895
- '口から小さく威嚇音を漏らす',
896
- '一瞬舌を出し、香りを舐めとる',
897
- 'つまらなさそうに様子を眺める',
898
- '過去を思い出すように考え込む',
899
- '目を見開き、他者に感心する',
900
- '湿った風が渦巻く',
901
- '下半身を人間のものに変える',
902
- '手から水を生み出し、杯に注ぐ',
903
- '周囲に水たまりができる',
904
- '謎めいた笑みを浮かべる',
905
- '舌を伸ばし、他者の顔を舐める',
906
- '下半身の蛇を、他者に絡ませる',
907
- '興味深そうに質問する',
908
- '毒蛇を具現化し、身に絡め弄ぶ',
909
- '袖から無数の蛇が現れる',
910
- '卵を取り出して丸呑みする',
911
- '他者に下半身を絡め抱きしめる'
912
- ]},
913
- {type: "F",
914
- name: "フォーン",
915
- table: [
916
- 'より退廃的な衣装をまとう',
917
- '悪戯っぽく首をかしげてみせる',
918
- 'よこしまな笑顔を見せる',
919
- 'ふしだらな舌なめずりをする',
920
- '顔を上気させ、ため息をつく',
921
- '己を抱きしめて身をよじる',
922
- '己の指先をちろりと舐め上げる',
923
- 'ひどく淫らな声を漏らす',
924
- '武器にいやらしく舌を這わす',
925
- '濡れた上目遣いを見せる',
926
- '扇情的な仕草をする',
927
- '頭髪があやしく波打つ',
928
- '妖しい流し目を送る',
929
- '他者の耳元に囁き、息をかける',
930
- '他者にしなだれかかる',
931
- '他者の体に手を這わせ愛撫する',
932
- '謎めいた笑みを浮かべる',
933
- '他者を口説き始める'
934
- ]},
935
- {type: "H",
936
- name: "ホムンクルス",
937
- table: [
938
- '苦しそうに咳き込みながら膝をつく',
939
- 'ふらつき、壁や他の騎士にもたれる',
940
- '己の胸に手を当て、沈痛な顔を見せる',
941
- '腕か脚が一瞬、霧のように崩れかける',
942
- '自嘲的な乾いた笑いが漏れる',
943
- '無表情に周りの様子をぼんやり眺める',
944
- '月光を避けるように影や屋内に入る',
945
- '他の騎士に手を伸ばしかけて、止める',
946
- '不意に月光を浴びてしまい、苦痛を耐える',
947
- '会話に入ろうとするが、やめてしまう',
948
- '具現化した花の消える様子に己を重ねる',
949
- '他の騎士たちをまぶしそうに見守る',
950
- '未来について、詳細な推理を述べる',
951
- '疲れた様子で、淡く光る吐息を深々と吐く',
952
- '瞬時に予想し、落ちかけた品を受け止める',
953
- '遠い先の話題に、自虐的な笑みを漏らす',
954
- '一刻後の天候を、正確に言い当てる',
955
- 'ほんのかすかな笑顔が浮かぶ'
956
- ]},
957
- {type: "E",
958
- name: "エナメルム",
959
- table: [
960
- '人形の虚ろな表情からは何もわからない',
961
- '居心地悪そうに、隅にいる',
962
- '何かを口にしかけるが、うつむいてしまう',
963
- '何かに触れ、カチンと金属音を立てる',
964
- 'ぎこちない動きで体を動かす',
965
- '誰かに無言で、何かを訴える',
966
- '身振り手振りで、己の感情を伝えようとする',
967
- 'せめて感触を得ようと、誰かに触れ続ける',
968
- '誰かをじっと、硝子の瞳で見つめている',
969
- '人の体にはできない動きで、奇妙に舞う',
970
- '立ったまま、微動だにしない',
971
- '己の記憶を取り戻そうと、辺りを見回す',
972
- '無意識に、表情も動かぬまま涙が溢れる',
973
- '誰かの所作を、己に取り入れようとする',
974
- '声ではない、楽器の音色のような歌を披露',
975
- '無機的な目で、冷たく誰かを一瞥する',
976
- '無言でただそっと、誰かに寄り添う',
977
- '断片的に、かつての魂の記憶が蘇る'
978
- ]},
979
- {type: "S2",
980
- name: "サングィナリエ",
981
- table: [
982
- '怒りや欲望で、顔が怪物のように醜くゆがむ',
983
- '衝動的に誰かを抱き寄せ、首筋に顔を寄せる',
984
- '騎士を嘲るように見て、鼻で笑う',
985
- '渇きと共に、口の端から紅い唾液が垂れる',
986
- '足元から真紅の血だまりが広がり、場を覆う',
987
- '目が光り、誰かの首筋を舐めるように見る',
988
- '騎士道の偽善性を説き、嘲笑う',
989
- '誰かの首筋を、じいっと凝視する',
990
- '胸に手を当て、深呼吸して己を落ち着かせる',
991
- '誰かの血の味を口の中に思い出し、ほくそ笑む',
992
- '切なげなため息をつき、舌なめずりする',
993
- '誰かに、慇懃無礼な皮肉めいた誉め言葉を送る',
994
- 'マントをひるがえして誰かに近づくか、傍から退く',
995
- '目が異様な光を灯す、民がいるなら陶然となる',
996
- 'わざとらしく衣装についた埃を払ってみせる',
997
- '高らかに、サングィナリエの血統を名乗る',
998
- '騎士の在り方について、異端の論を披露する',
999
- '余裕のある不敵な笑みを浮かべる'
1000
- ]},
1001
- {type: "A",
1002
- name: "アールヴ",
1003
- table: [
1004
- '平然と場の空気を無視した発言をする',
1005
- '他の誰かが褒められて様子に、嫉妬する',
1006
- 'ハミングで、妖精の歌を口ずさむ',
1007
- '好奇心も露に、誰かに話しかける',
1008
- '肩にとまった小鳥と語らう',
1009
- '野の花をそっと愛でて、微笑む',
1010
- '誰かに、剣での立ち合いを求める',
1011
- '流れるような動きで誰かに近づき、手を取る',
1012
- '妖精の美酒を手元に出し、誰かの盃に注ぐ',
1013
- '周囲に小さな妖精たちが、光の点となって舞う',
1014
- '妖精郷の歌や舞を披露してみせる',
1015
- '様々な人々との談笑にふける',
1016
- '誰かに愛の言葉を捧げ、口説き始める',
1017
- '誰かについて、惜しみない称賛を語る',
1018
- '少し奇妙な言い回しで、誰かを賛辞する',
1019
- '騎士道について、熱く語る',
1020
- '己の属する妖精郷の宮廷に、誰かを誘う',
1021
- '誰かの振る舞いに嘆息し、大いに感動を覚える'
1022
- ]},
1023
- {type: "V2",
1024
- name: "ヴィーヴル",
1025
- table: [
1026
- '周囲の者は、圧迫感と居心地の悪さを感じる',
1027
- '誰かに、理不尽な我儘を言う',
1028
- 'つまらなさそうに他の者達の様子を眺める',
1029
- '話題を断ち切り、己の目的を率直に遂げんとす',
1030
- '傲慢とも取れる目で誰かを見下ろし、品定めする',
1031
- '威嚇するように、腕に翼を大きく広げる',
1032
- '誰かを子供扱いし、わざと挑発してからかう',
1033
- '幻に包まれたように、その姿が一瞬だけ揺らぐ',
1034
- '表情を変えずとも、ぞわりと龍体の色が変わる',
1035
- '浮かんだまま、遠い目をする',
1036
- '他の者達の絆の強さを、見定めようと観察する',
1037
- '誰かに髪の手入れを求める',
1038
- '各地の様々な事象について、次々と質問する',
1039
- '真祖と龍と月について、滔々と語り始める',
1040
- '誰かの行いを諫め、戒める',
1041
- '誰かを龍の翼で包むように抱きしめ、褒める',
1042
- '誰かを慈しむように撫で、いたわる',
1043
- 'その姿が一瞬、巨大な龍に見える'
1044
- ]},
1045
- {type: "L2",
1046
- name: "ルーガルー",
1047
- table: [
1048
- '巨大な狼の姿となって、警戒も露にうなる',
1049
- '怒りを耐えるように、拳をきつく握りしめる',
1050
- '苛立たしげに、狼の口から牙を剥きだしてうなる',
1051
- '怒りを抑えるが、獣毛が逆立つ',
1052
- '疲労や緊張から、獣のように呼吸が荒くなる',
1053
- '疲れ、乾いた笑みを浮かべる',
1054
- '周囲の些細な音に警戒し、耳を動かす',
1055
- '誰かを睨みつけ、威圧する',
1056
- '狼の鼻先が、ひくひくと動く',
1057
- '鋭い視線を無表情で巡らせ、状況を把握する',
1058
- '目を閉じ、腕を組んで、じっと立ち続ける',
1059
- '1人遠く、故郷の方角へと視線を向けて佇む',
1060
- '決意した顔で、正面から誰かと向かい合う',
1061
- '沈痛な面持ちで空を見上げ、うなる',
1062
- '自然の在り様について、言葉少なに語る',
1063
- 'たとえ屋内であろうと、野の風が吹く',
1064
- '誰かの美しさに、思わず目を奪われる',
1065
- '目を閉じて、故郷たる自然に思いを馳せる'
1066
- ]},
1067
- {type: "A2",
1068
- name: "アルラウネ",
1069
- table: [
1070
- '不満を漏らしたり、軽い我儘を言ったりする',
1071
- 'そっと誰かの耳元に何かを囁く',
1072
- '己の髪に指を絡め、梳いたり弄ったりする',
1073
- '感じ取った未来を口にしかけるが、やめてしまう',
1074
- '1悪戯っほい、謎めいた笑みを浮かべる',
1075
- '誰かに己の身をすりつけるように、絡みつく',
1076
- '瞬時に予知し、落ちかけた品を受け止める',
1077
- 'わずかに動くごとに、周囲を花の香りが包む',
1078
- '舞うような足取りで、誰かに密着するよう近づく',
1079
- '煽情的な仕草をしつつ、妖しい流し目を送る',
1080
- '誰かに甘えるようにもたれかかる',
1081
- '誰かの運命について、断片的に口にする',
1082
- '足元に妖しくも美しい花畑が具現化される',
1083
- '具現化した蔓と葉が、その肢体に絡みつく',
1084
- '周囲に無数の花弁を具現化しつつ、舞う',
1085
- 'より華麗で美しい衣装をまとう',
1086
- '未来について、曖昧な予言を口にする',
1087
- '己に咲く花を摘み、誰かに手渡す(瞬時に再生)'
1088
- ]},
1089
- {type: "F2",
1090
- name: "フリッガ",
1091
- table: [
1092
- 'その影が巨大な蜘蛛となって、蠢く',
1093
- '他の騎士や異端にとにかく謝る',
1094
- '居心地悪そうに、隅にいる',
1095
- 'ほがらかな笑顔だが、目は笑っていない',
1096
- '恋の話題に、自虐的な笑みしか浮かばない',
1097
- '己に口い聞かせるように、独り言を言う',
1098
- '会話に入ろうとするが、やめてしまう',
1099
- '申し訳なさそうな顔で、うつむいてしまう',
1100
- '無意識に、己の腹をいとおしげに撫でる',
1101
- '誰かの腕や袖をしっかりと掴んで、離さない',
1102
- '誰かを思いつめた目で、じっと見つめている',
1103
- '目を潤ませ、熱い溜息をつく',
1104
- '他の騎士に手を伸ばしかけて、止める',
1105
- '具現化した糸を、誰かの指とつなぐ',
1106
- '困ったような、泣き笑いの微笑みを浮かべる',
1107
- '誰かにびったりと密着して離れない',
1108
- 'そっと相手の唇に指を当て、言葉を封じる',
1109
- '誰かに、狂気の如き恋心を抱き始める'
1110
- ]},
1111
- ]
1112
-
1113
- return infos
1114
- end
1115
-
1116
- def getHeresyReactionInfoStyle
1117
- infos =
1118
- [
1119
- {type: "W",
1120
- name: "野伏",
1121
- table: [
1122
- '露骨に、騎士から距離をとる',
1123
- '騎士や民を見て、舌打ちする',
1124
- '騎士について不満を口にする',
1125
- '民の在り様について批判する',
1126
- '獰猛な笑みで周りをねめつける',
1127
- '粗野に体をぼりぼりと掻く',
1128
- '床に唾を吐き捨てる',
1129
- '武骨な武具を具現化する',
1130
- '革袋の酒や水を飲み干す',
1131
- '他者に咎めるような目を向ける',
1132
- '手づかみで、粗野に食事する',
1133
- '騎士を見下した目で見る',
1134
- '正面から相手を見据え会話する',
1135
- '取り出した肉を噛みちぎり喰らう',
1136
- '自然の力について語る',
1137
- '周囲を厳しい目で見渡す',
1138
- '無礼な発言をする',
1139
- '己の土地について語る'
1140
- ]},
1141
- {type: "N",
1142
- name: "流浪",
1143
- table: [
1144
- '呆れた様子でため息をつく',
1145
- '欠伸を噛み殺す',
1146
- '大げさに肩をすくめて見せる',
1147
- '他から距離を取り、様子を眺める',
1148
- '具現化した果実を食べる',
1149
- '口笛を吹く',
1150
- '一組のカードを具現化して弄ぶ',
1151
- '名もなき野草の花を愛でる',
1152
- '楽器を具現化し、音を奏でる',
1153
- '他者と世間話をする',
1154
- '風評を元に他者を褒めたたえる',
1155
- '吹く風に目を細める',
1156
- '小鳥や虫、植物らに話しかける',
1157
- '仲間の肩を叩く、あるいは抱く',
1158
- '風に髪をなびかせる',
1159
- '旅の土産話を披露する',
1160
- '目を閉じてリラックスする',
1161
- '他者に異郷の珍しい品を渡す'
1162
- ]},
1163
- {type: "S",
1164
- name: "密使",
1165
- table: [
1166
- '周りを値踏みする目で見る',
1167
- '冷たい目で外を眺める',
1168
- '濁った眼で、他者をじっと見る',
1169
- '無感情に状況を検分する',
1170
- '小さな名もなき花を目に留める',
1171
- '他の騎士に目で合図を送る',
1172
- '感情のない目で他者を見る',
1173
- '小さく自嘲的な笑みを浮かべる',
1174
- '過剰なほどに周囲を警戒する',
1175
- '他者をちらちらと観察する',
1176
- '手の中でナイフを弄ぶ',
1177
- '騎士に深々と礼をする',
1178
- '自虐的な言葉を呟く',
1179
- 'そっと騎士に寄り添い控える',
1180
- '他者と世間話をし、談笑する',
1181
- '主の名を、心の中で唱える',
1182
- '騎士を褒めたたえる',
1183
- '他者に積極的に話しかける'
1184
- ]},
1185
- {type: "H",
1186
- name: "魔女",
1187
- table: [
1188
- '誰もいないところに話しかける',
1189
- '含み笑いから、やがて高笑いへ',
1190
- '眉を寄せて、水面を見つめる',
1191
- '騎士を胡乱な目で見る',
1192
- '大鍋を具現化し、かき混ぜる',
1193
- '胡散臭い笑みを浮かべる',
1194
- '足元をゴブリンが駆けていく',
1195
- '小さく含み笑いを漏らす',
1196
- '奇妙な言い回しの言葉を言う',
1197
- '具現化した杖で、床を叩く',
1198
- '思わせぶりな言葉や仕草をする',
1199
- '周囲を魔法や妖精の光が舞う',
1200
- '奇妙な知識で状況説明する',
1201
- '奇怪な呪文を呟く',
1202
- 'あやしげな護符を取り出す',
1203
- '袖から現れた小動物と会話する',
1204
- '他者の人相などを占う',
1205
- '手の中に青白い炎を具現化する'
1206
- ]},
1207
- {type: "F",
1208
- name: "剣士",
1209
- table: [
1210
- '騎士の礼儀作法を嘲笑い、茶化す',
1211
- '具現化した武器の柄に手を伸ばす',
1212
- '凶悪な笑みを浮かべ、相手をねめつける',
1213
- '油断なく周囲に視線を走らせ、警戒する',
1214
- '剣を手の中に具現化し、弄ぶ',
1215
- '口笛やハミングで、簡単な曲を奏でる',
1216
- '不敵な笑みを浮かべながら、名乗る',
1217
- '周囲の騎士や異端との戦いを、思い描く',
1218
- '誰かに関する風聞と、実際の印象を語る',
1219
- '警戒と同時に、手が武器に伸びてしまう',
1220
- '自信に溢れた様子で、堂々と会話する',
1221
- '過去の敗北から得た教訓について語る',
1222
- '闘志により周りの風景が、ぐにゃりと歪む',
1223
- '周囲に風が渦巻き、衣装をはためかせる',
1224
- '気に入った相手を口説こうとする',
1225
- '勇ましく迫力に満ちた剣舞を披露する',
1226
- '騎士や民に目を向けて、舌打ちする',
1227
- 'かつての戦いや冒険について語る'
1228
- ]},
1229
- {type: "X",
1230
- name: "検体",
1231
- table: [
1232
- '肉体が異形化しようとするように、波打つ',
1233
- '発作的にうずくまり、呻き苦しむ',
1234
- '指の長さが異様に伸びたり縮んだりする',
1235
- 'ふとした金属音に、異様なほど怯える',
1236
- '汗をかきながら、俯いて深呼吸する',
1237
- '己に言い聞かせるように、独り言をいう',
1238
- '蘇る苦痛の記憶に、震えが止まらない',
1239
- '誰かにぴったりとしがみついて離れない',
1240
- '一瞬、肌に無数の傷跡が浮かび上がる',
1241
- '過去を振り払うように、首を打ち振る',
1242
- '初対面の人物の所作に、怯え隠れる',
1243
- '体の内から、脈打つように異様な光を放つ',
1244
- '一瞬、爪や犬歯が伸びて異形の姿となる',
1245
- '何かの拍子に、異様なほどの跳躍をする',
1246
- '他の者を妬み呪う言葉が口から溢れる',
1247
- '目から血が涙のように流れ出す',
1248
- '壁にすがりつき、何かを抑え嗚咽を漏らす',
1249
- '誰かに、己の苦しみからの助けを求める'
1250
- ]},
1251
- ]
1252
-
1253
- return infos
1254
- end
1255
-
1256
199
  def getCorruptionDiceCommandResult(command)
1257
200
  return nil unless command =~ /^CT(\d+)$/
1258
201
 
1259
202
  modify = Regexp.last_match(1).to_i
1260
203
 
1261
- name = "堕落表"
204
+ name = translate("Dracurouge.CT.name")
1262
205
  table =
1263
206
  [
1264
- [0, "あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。"],
1265
- [1, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を2回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"],
1266
- [3, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を1回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"],
1267
- [5, "気高き心もやがて堕ちる。あなたが今、最も多くルージュを持つ対象へのルージュを全て失い、同じだけのノワールを得る。ノワールを得た結果【渇き】が3点以上になった場合は、再度堕落表を振ること。"],
1268
- [6, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール2点を獲得する。"],
1269
- [7, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール1点を獲得する。"],
1270
- [8, "荒ぶる心を鎮める……幸いにも何も起きなかった。"],
1271
- [99, "あなたは荒れ狂う感情を抑え、己を律した! 【渇き】が1減少する!"],
207
+ [0, translate("Dracurouge.CT.table.0")],
208
+ [1, translate("Dracurouge.CT.table.1")],
209
+ [3, translate("Dracurouge.CT.table.3")],
210
+ [5, translate("Dracurouge.CT.table.5")],
211
+ [6, translate("Dracurouge.CT.table.6")],
212
+ [7, translate("Dracurouge.CT.table.7")],
213
+ [8, translate("Dracurouge.CT.table.8")],
214
+ [99, translate("Dracurouge.CT.table.99")],
1272
215
  ]
1273
216
 
1274
217
  dice_list = @randomizer.roll_barabara(2, 6)
@@ -1282,575 +225,330 @@ module BCDice
1282
225
  return "2D6[#{number_text}]-#{modify} > #{name}(#{index}) > #{text}"
1283
226
  end
1284
227
 
1285
- def getTableDiceCommandResult(command)
1286
- info = TABLES[command]
1287
- return nil if info.nil?
1288
-
1289
- name = info[:name]
1290
- type = info[:type]
1291
- table = info[:table]
1292
-
1293
- text, number =
1294
- case type
1295
- when '2D6'
1296
- get_table_by_2d6(table)
1297
- when '1D6'
1298
- get_table_by_1d6(table)
1299
- when 'D66'
1300
- get_table_by_d66(table)
1301
- end
1302
-
1303
- return nil if text.nil?
1304
-
1305
- return "#{name}(#{number}) > #{text}"
1306
- end
1307
-
1308
- def getSourceSceneDiceCommandResult(command)
1309
- return nil unless command =~ /^ST$/
1310
-
1311
- name = "原風景表"
1312
- table = getSourceSceneTable
1313
- return getTitleD66TableResult(name, table)
1314
- end
1315
-
1316
- def getPassionDiceCommandResult(command)
1317
- return nil unless command =~ /^PN$/
1318
-
1319
- name = "受難表"
1320
- table = getPassionTable
1321
- return getTitleD66TableResult(name, table)
1322
- end
1323
-
1324
- def getTitleD66TableResult(name, table)
1325
- debug("getTitleD66TableResult")
1326
- item, index = get_table_by_d66(table)
1327
- return nil if item.nil?
1328
-
1329
- title, text, = item
1330
-
1331
- return "#{name}(#{index}) > #{title}:#{text}"
1332
- end
1333
-
1334
- def getConfermentDiceCommandResult(command)
1335
- return nil unless command =~ /^CO$/
1336
-
1337
- name = "叙勲表"
1338
- table = getConfermentTable
1339
- yearTitle = "叙勲年齢"
1340
-
1341
- return getYearTableResult(name, table, yearTitle)
1342
- end
1343
-
1344
- def getConfermentAfterDiceCommandResult(command)
1345
- return nil unless command =~ /^CA$/
1346
-
1347
- name = "叙勲後表"
1348
- table = getConfermentAfterTable
1349
- yearTitle = "騎士歴"
1350
-
1351
- return getYearTableResult(name, table, yearTitle)
1352
- end
1353
-
1354
- def getElderPastDiceCommandResult(command)
1355
- return nil unless command =~ /^EP$/
1356
-
1357
- name = "遥か過去表"
1358
- table = getElderPastTable
1359
- yearTitle = "騎士歴"
1360
-
1361
- return getYearTableResult(name, table, yearTitle)
1362
- end
1363
-
1364
- def getOriginalSinDiceCommandResult(command)
1365
- return nil unless command =~ /^OS$/
1366
-
1367
- name = "原罪表"
1368
- table = getOriginalSinTable
1369
- yearTitle = "外見年齢"
1370
-
1371
- return getYearTableResult(name, table, yearTitle)
1372
- end
1373
-
1374
- def getRecentStateDiceCommandResult(command)
1375
- return nil unless command =~ /^RS$/
1376
-
1377
- name = "近況表"
1378
- table = getRecentStateTable
1379
- yearTitle = "活動年数"
1380
-
1381
- return getYearTableResult(name, table, yearTitle)
1382
- end
1383
-
1384
- def getPeacefulPastDiceCommandResult(command)
1385
- return nil unless command =~ /^PP$/
1386
-
1387
- name = "平和な過去表"
1388
- table = getPeacefulPastTable
1389
- yearTitle = "外見年齢"
1390
-
1391
- return getYearTableResult(name, table, yearTitle)
1392
- end
1393
-
1394
- def getYearTableResult(name, table, yearTitle)
1395
- item, index = get_table_by_d66(table)
1396
- return nil if item.nil?
1397
-
1398
- title, text, yearText, = item
1399
- year, calculateText = getYear(yearText)
228
+ class YearTable
229
+ # @param key [String]
230
+ # @param locale [Symbol]
231
+ # @param years [Array<String>]
232
+ # @return [YearTable]
233
+ def self.from_i18n(key, locale, years)
234
+ table = I18n.translate(key, locale: locale, raise: true)
235
+ items = table[:items].zip(years)
236
+ return new(table[:name], table[:year_title], items)
237
+ end
1400
238
 
1401
- return "#{name}(#{index}) #{title}:#{text} > #{yearTitle}:#{yearText} > #{calculateText} > #{yearTitle}:#{year}年"
1402
- end
239
+ # @param name [String]
240
+ # @param year_title [String]
241
+ # @param items [Array<Array<(String, String)>>]
242
+ def initialize(name, year_title, items)
243
+ @name = name
244
+ @year_title = year_title
245
+ @items = items.freeze
246
+ end
1403
247
 
1404
- def getYear(yearText)
1405
- text = yearText.gsub(/(\d+)D(6+)/) { getD6xResult(Regexp.last_match(1).to_i, Regexp.last_match(2).length) }
1406
- text = "(#{text})"
248
+ # @param randomizer [Randomizer]
249
+ # @return [String]
250
+ def roll(randomizer)
251
+ tens, ones = randomizer.roll_barabara(2, 6)
252
+ index = (tens - 1) * 6 + (ones - 1)
1407
253
 
1408
- year = ArithmeticEvaluator.eval(text.gsub(/×/, "*"))
1409
- return year, text
1410
- end
254
+ text, year_expr = @items[index]
255
+ interim_expr = year_expr.gsub(/\d+D6+/) { |expr| roll_d6x(expr, randomizer) }
256
+ year = ArithmeticEvaluator.eval(interim_expr.gsub("×", "*"))
1411
257
 
1412
- def getD6xResult(count, dice6Count)
1413
- total = 0
1414
-
1415
- count.times do |_i|
1416
- number = 0
258
+ "#{@name}(#{tens}#{ones}) > #{text} > #{@year_title}:#{year_expr} > (#{interim_expr}) > #{@year_title}:#{year}年"
259
+ end
1417
260
 
1418
- dice6Count.times do |_i|
1419
- number *= 10
1420
- dice = @randomizer.roll_once(6)
1421
- number += dice
261
+ private
262
+
263
+ # D66と同様の形式でD666などにも対応したダイスロール
264
+ #
265
+ # @param expr [String]
266
+ # @param randomizer [Randomizer]
267
+ # @return [Integer]
268
+ def roll_d6x(expr, randomizer)
269
+ times, sides = expr.split("D", 2)
270
+ times = times.to_i
271
+
272
+ list = Array.new(times) do
273
+ randomizer.roll_barabara(sides.length, 6)
274
+ .reverse # テスト系の互換性のために反転する
275
+ .map.with_index { |x, idx| x * (10**idx) }
276
+ .sum()
1422
277
  end
1423
278
 
1424
- total += number
279
+ return list.sum()
1425
280
  end
1426
-
1427
- return total.to_s
1428
- end
1429
-
1430
- def getSourceSceneTable
1431
- table =
1432
- [
1433
- ["虐待", "あの地獄のような日々で、貴卿がされてきたことを思えば……騎士となっても、人を見る目は暗い。"],
1434
- ["野良犬の如く", "孤児だった貴卿はひたすら盗み殺し騙して。手段を問わず生き抜いた。騎士の前には罪人として突き出された。"],
1435
- ["悪行", "貴卿は叙勲以前、悪しき不徳の行いに手を染めていた。幸いにも主には気づかれず、騎士となったが……行いは正されているだろうか?"],
1436
- ["忌まわしの火", "故郷は太陽の欠片に襲われた。家族は命を落とし、騎士が貴卿を救った。あの呪わしい炎を貴卿は忘れない。"],
1437
- ["太陽の夢", "今はなき太陽の照らす……美しく生命に満ちた世界を、幼い頃から夢で見る。奇妙な疑念が内から消えない。"],
1438
- ["黒い衝動", "暴力性や残虐性が、貴卿の中に眠っている。それは時折突発的に現れて……大事なものを破壊するのだ。"],
1439
- ["氷の心", "過酷な日々を暮らす中、貴卿の心は凍てついた。能力を買われ騎士となるが……心の氷はまだ溶けない。"],
1440
- ["腰抜け", "かつての貴卿は、立ち向かうべきものから逃げ出した。それは騎士となってなお残る、心の疵だ。"],
1441
- ["孤独", "貴卿はずっと孤独だった。手を差し伸べてくれたのは主のみ。主なき日々など考えられない。"],
1442
- ["野心", "貴卿はより高い地位が欲しい。民では足りない。騎士になりたい。もっともっと多くを支配したいのだ。"],
1443
- ["惚れっぽい", "簡単に恋をしてしまう。わずかな縁でも恋人のつもりになって、心から尽くしてしまうのだ。"],
1444
- ["間近の堕落", "故郷の領主が堕落し、暴虐を為した。貴卿は、騎士というものについて他ほど無邪気には信じられまい。"],
1445
- ["妄想", "夢見がちな貴卿は、自らが騎士となる夢想を何度もしてきた。今も、ともすれば夢を見ているのだろうか。"],
1446
- ["空白", "かつての時間の中には思い出せない時期がある。その間に何があったのか、貴卿には何もわからない。"],
1447
- ["敬虔なる心", "貴卿は人の頃より紅き月とドラクルを深く信仰してきた。たゆまぬ信仰こそ、己を騎士に導いたと信じている。"],
1448
- ["妖精の導き", "入ってはならぬ森で妖精と親しくなった。そして戯れる中、気づけば貴卿は騎士の城にいた。"],
1449
- ["従者の一族", "生まれつき従者として生きる一族もいる。貴卿はその中に生まれ、才見出されて騎士となったのだ。"],
1450
- ["市井の心", "ごく凡俗な民の家にて長く育った貴卿は世俗的ながらも、民の視野を持つ騎士となるであろう。"],
1451
- ["流浪", "貴卿は人の頃から流浪の身。視野を広げるつもりの旅であったが、従者としてこの地に居つくこととなった。"],
1452
- ["人の血縁", "血縁者が騎士となった。そしたまた貴卿も……。貴卿には、人としての血縁者が、同胞にいるのだ。"],
1453
- ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、貴卿は妖精や獣の友である。"],
1454
- ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、貴卿の魂はあまりに気高く美しい。そして脆い。"],
1455
- ["戦場の獣", "主と共に、貴卿は数多の戦場を渡った。戦いは貴卿の呼吸であり歩み。何処にあろうとも戦いの嵐は逃さぬ。"],
1456
- ["古き格式", "貴卿は非常に格式を重んじる地に生まれ育った。たとえ形骸化しようと、古き格式を忘れて何が騎士か。"],
1457
- ["カリスマ", "人に頼られ注目を浴びやすい。貴卿は生まれつき、人々のまとめ役だ。騎士には必要な才と言えるだろう。"],
1458
- ["鍛錬の日々", "騎士となる日を目指し、幼き頃から武の鍛錬欠かさず。いまや貴卿はこれほどの武勇を得たのだ。"],
1459
- ["恩返し", "かつて、貴卿はある騎士に助けられた。そして彼の方を助けるべく従者となり……ついに騎士となったのだ。"],
1460
- ["騎士の養子", "幼くして見いだされ、物ごころついた頃には、騎士手づからの教育と鍛錬を受けて来た。人の親は知らない。"],
1461
- ["英雄志願", "守られる民としての生活に耐えられなかった。貴卿は英雄への道を求め家を飛び出し、従者となったのだ。"],
1462
- ["燃える恋", "一目見て、ある騎士に恋をした。人の身では叶わぬ恋。しかし貴卿はついに叙勲を受け、騎士となる。"],
1463
- ["救世の想い", "人々は様々な恐怖に怯え、困窮している。己の努力で何とかできれば……と、貴卿は騎士への道を選んだ。"],
1464
- ["美貌", "貴卿の美貌が評判になる頃、その美を耳にした騎士が訪れ、貴卿を城に導いた。"],
1465
- ["憧れの騎士", "貴卿には憧れる騎士がいる。いつかきっとその人と同じ高みに立つのだと、心に決めた人物がいるのだ。"],
1466
- ["ドラクルの夢", "ある日の夢の中、貴卿のもとにドラクルが降りた。そして人生の全てを変える神託を賜ったのだ。"],
1467
- ["神童", "時として、貴卿のように有り余る才を持って生まれる者がいる。そして定められたように騎士への道を歩むのだ。"],
1468
- ["運命の子", "貴卿の生まれた折、旅の賢者が訪れた。貴卿はきっと伝説に残る騎士となるだろう。そう約束されているのだ。"],
1469
- ]
1470
- return table
1471
- end
1472
-
1473
- def getConfermentTable
1474
- table =
1475
- [
1476
- ["堕落の血", "貴卿は堕落者に襲われ、その結果……騎士となった。貴卿に流れるは堕落した血なのだ。", "7+1D6×1D6"],
1477
- ["忌まわしの血", "乱心した主は堕落の間際、公爵の許しも得ず貴卿を叙勲した。残された貴卿には……疑いの目が向けられた。", "7+1D6×1D6"],
1478
- ["悪しき取引", "貴卿は主と悪しき取引の後、叙勲を受けた。主は不徳の身、今や貴卿の立場は主の奴隷も同然である。", "7+1D6×1D6"],
1479
- ["裏切の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ信じた者に裏切られる日が来るであろうと。", "7+1D6×1D6"],
1480
- ["謀略", "貴卿は騎士にあるまじき行いによって他を蹴落とし、叙勲を得た。その秘密を知る者はいない。今のところは。", "7+1D6×1D6"],
1481
- ["不吉な予言", "叙勲の折、賢者は貴卿に予言をした……大切な人を自らの手で殺めるだろうと。", "7+1D6×1D6"],
1482
- ["堕落の誘い", "その叙勲の折、貴卿の脳裏に堕落した己が現れた。そして、堕落すべしと囁きかけて来た。今も、時折。", "7+1D6×1D6"],
1483
- ["不相応", "他の従者はみんな優れた才能を持っていた。貴卿には何もない……なのに主は、なぜか貴卿を選んだ。", "10+2D6"],
1484
- ["矮小なる主", "叙勲と共にものの見方は変わる。叙勲後、主がくだらない存在と見えた。貴卿は主のもとを離れた。", "7+1D6×1D6"],
1485
- ["家庭あれど", "貴卿は人として家庭を築いていた。しかし、主より叙勲を受けられるならばと……貴卿は家庭を捨てたのだ。", "14+1D6×1D6"],
1486
- ["かき口説き", "貴卿は主を甘き言葉で口説き、心蕩かして叙勲を与えさせた。精神面において主はむしろ……貴卿なのだ。", "7+1D6×1D6"],
1487
- ["不安", "騎士とは何か。叙勲とは何か。騎士そのものとなった今も、貴卿は言い知れぬ不安を感じている……。", "10+1D6×1D6"],
1488
- ["忘却", "誰が貴卿を騎士にしたのか。正直わからない……気が付いたら騎士になっていたのだ。", "7+1D6×1D6"],
1489
- ["ある夜の寝室", "それは衝動的な行いだったのだろう。主はある夜、突如訪れ……あなたに口づけをし、叙勲を施したのだ。", "10+2D6"],
1490
- ["生存者", "堕落者、あるいは太陽の欠片の襲撃を受け、主の従者は全滅。貴卿のみが生き延び……叙勲を受けた。", "7+1D6×1D6"],
1491
- ["献身の誓い", "叙勲の折、貴卿は民を守り続けると誓った。貴卿は民の盾にして、数多の敵を退ける矛である。", "14+1D6×1D6"],
1492
- ["罪許されて", "貴卿は罪を犯した。罪人として処罰を受ける中、主は貴卿を認め叙勲すら与えてくれた。報わねばなるまい。", "10+2D6"],
1493
- ["守秘の誓い", "叙勲の折、貴卿は主から秘密を知らされた。そしてそれを決して他に漏らさぬ誓いを立てたのだ。", "7+1D6×1D6"],
1494
- ["勝者は一人", "その日、主の従者数多において武術の試合が行われた。貴卿は最後に勝ち残り、ついに叙勲を得たのだ。", "14+1D6×1D6"],
1495
- ["磨かれし技", "今まで一つの技を磨き、極め続けた。その愚直に磨かれた技が評価され、貴卿は叙勲を受けたのだ。", "18+1D6×1D6"],
1496
- ["武勲の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ大乱が起こる中にて目覚ましき武勲を上げんと。", "10+2D6"],
1497
- ["癒えぬ傷痕", "貴卿の体には消えぬ傷痕が刻まれている。しかし、傷を受けてまで主を守った功こそ、貴卿を騎士にした。", "7+1D6×1D6"],
1498
- ["隆盛の予言", "叙勲の折、賢者は貴卿に予言をした……その名は財と誉れに包まれ安らかにあらんと。", "7+1D6×1D6"],
1499
- ["胆力", "貴卿は主と共に堕落者に襲われ……一歩も退かずあれば、その胆力を認められ叙勲を受けた。", "7+1D6×1D6"],
1500
- ["友情の予言", "叙勲の折、賢者は貴卿に予言をした……いずれ素晴らしき友を得んと。", "7+1D6×1D6"],
1501
- ["惜しまれり", "長く従者として生きる中、貴卿は老いた。しかし、老いてなお、主は貴卿を必要とした。それゆえの叙勲である。", "30+1D6×1D6"],
1502
- ["守護の誓い", "叙勲の折、ある人を、町を、国を守ると誓った。それを背に敵に立ち向かう限り、あなたは逃げ出したりしない。", "14+1D6×1D6"],
1503
- ["返しきれぬ恩", "あの日、貴卿は死んだ……。しかし貴卿は、主の叙勲により蘇った。主は罰を受けたが、それでも笑っていた。", "7+1D6×1D6"],
1504
- ["信仰の誓い", "叙勲の折、貴卿はドラクルへの篤き信仰を誓った。紅き月の下、貴卿の勝利はドラクルに捧げられよう。", "14+1D6×1D6"],
1505
- ["終わらじの恋", "騎士と互いに恋に落ちた。甘く狂おしい時間、移ろいゆく時。貴卿は恋人の手で叙勲を受け、騎士となった。", "10+2D6"],
1506
- ["英雄の予言", "叙勲の折、賢者は貴卿に予言をした……恐るべき敵を打ち倒し、その名は諸国に響くであろうと。", "14+1D6×1D6"],
1507
- ["忠義の誓い", "叙勲の折、ある人に深き忠誠を誓った。たとえ世界を敵に回そうと、貴卿が裏切ることなどありはしない。", "14+1D6×1D6"],
1508
- ["生ける芸術", "叙勲により、貴卿の美貌はさらなる高みに上った。もはや貴卿を見て心奪われぬ者などいない。", "7+4D6"],
1509
- ["思わぬ武勲", "貴卿は従者の身ながら、思わぬ武勲を立てた。その功は叙勲を受けるに十分のものである。", "14+1D6×1D6"],
1510
- ["当主の寵愛", "貴卿は、公爵家当主その人の寵愛を得た。宮廷において、重き地位を得られるであろう。", "7+1D6×1D6"],
1511
- ["始祖の寵愛", "貴卿は、始祖その人の寵愛を得た。真祖ドラクルに最も近しい、誇るべき身の一人となったのだ。", "7+1D6×1D6"],
1512
- ]
1513
- return table
1514
- end
1515
-
1516
- def getConfermentAfterTable
1517
- table =
1518
- [
1519
- ["滅亡", "貴卿の領地は敵に滅ぼされた。守るべき民は絶え、名誉は失われた。彼の者らを許すわけにはいかない。", "2D6×10"],
1520
- ["冤罪", "貴卿は身に覚えのない罪を背負っている。何者かの陰謀が貴卿を絡めとり、罪を負わせたのだ。", "1D6×1D6"],
1521
- ["呪い", "かつて貴卿は、妖精から呪いを受けた。呪いはゆっくりと貴卿を蝕み、その身に災いを招いている。", "1D6×1D6"],
1522
- ["血の昂ぶり", "戦った後は体が火照り昂ぶり、どうしようもなく疼く。堕落の日は遠くない……貴卿の中には確信がある。", "2D6×5"],
1523
- ["報復の序章", "かつて貴卿の名誉は友に裏切られ、奪われた。今や新たな道を歩んでいるが、復讐は今も忘れていない。", "2D6×10"],
1524
- ["仇敵", "忘れてはならぬ敵がいる。やつの胸を貫き、首を落とすまで、貴卿に安息の日は来ない。来ないのだ。", "1D6×1D6"],
1525
- ["堕落の共鳴", "貴卿の魂は堕ちかけているのだろうか。堕落した者たちがどうしようもなく近しく思えてしまうのだ。", "2D6×10"],
1526
- ["不徳の日々", "かつての貴卿は品行方正とは言い難い人物だった。心入れかえた貴卿だが、まだまだ世間の目は厳しい。", "1D6×5"],
1527
- ["主の堕落", "貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、心ない他の騎士から、侮蔑や疑惑を受けがちだ。", "2D6×10"],
1528
- ["冥王の虜囚", "冥王の侵攻の中。貴卿は敗れ、一時なれど虜囚の辱めを受けた。奴らを許すわけにはいかない。", "2D6×3"],
1529
- ["近しき堕落", "貴卿の友や恋人が堕落した。それは決して拭えず、忘れられない。常に心に幽鬼の如く頭をもたげるのだ。", "1D6×1D6"],
1530
- ["修羅", "貴卿は戦い続けて来た。功を他に譲ってでも戦い、戦い、戦い続けて。戦うだけの存在となりつつある。", "1D6×1D6"],
1531
- ["空白", "騎士となってから、思い出せない時期がある。その間に何があったのか、貴卿には何もわからない。", "2D6×10"],
1532
- ["追跡", "堕落した友を捜している。彼の者が大切だからこそ、貴卿がケリをつけねばならないのだ。", "2D6×10"],
1533
- ["退屈", "変わらぬ日常。甲斐なき日々。仲間の武勲を聞き、貴卿は自らも勲を立てんと立ち上がった。", "2D6×20"],
1534
- ["失恋", "愛深きゆえに貴卿は愛を捨てた。……捨てきってはいないかもしれないが、捨てたと信じた。", "2D6×10"],
1535
- ["隠遁", "戦いに虚しさを感じたのはいつからか。勇猛な騎士だったあなただが、今は静かに隠者として暮らしている。", "2D6×20"],
1536
- ["謎の失踪", "貴卿の大切な人が突然、姿を消してしまった。攫われたのか、逃げたのか、それともまさか……。", "1D6×1D6"],
1537
- ["井の中の蛙", "己こそ最高の騎士と思っていた貴卿だが……彼の騎士を見て全ては崩れた。まだまだ修練が足りぬ。", "1D6×3"],
1538
- ["賢者の予言", "貴卿は予言に導かれている。貴卿は誰かと出会わねばならぬ。それは主君か友か恋人……あるいは敵か。", "1D6×1D6"],
1539
- ["浮名", "多くの恋を振りまく貴卿の名は宮廷では有名だ。敵も味方も、きっと抱えきれぬほどにいることだろう。", "1D6×5"],
1540
- ["見届け人", "民の移り変わる様をじっと眺めている。貴卿は目まぐるしく変わる彼らを眺めるのが好きなのだ。", "2D6×10"],
1541
- ["人捜し", "貴卿はその心を動かした人を捜している。人間だ。人は脆く移ろいやすい……早く見つけねば。", "1D6×1D6"],
1542
- ["深い寵愛", "貴卿は主より深い愛情を注がれ続けた。そのため叙勲は随分以前だが、騎士の活動は始めたばかりだ。", "2D6×10"],
1543
- ["血気盛ん", "貴卿は多くの騎士と立ち合い、自らの技と力を磨きたい。腕のある騎士を見れば、挑まずにいられぬ。", "2D6"],
1544
- ["啓蒙", "至高なる騎士と違い、世界は愚かで哀れな民で溢れている。騎士として彼らを導いてやらねばなるまい……。", "1D6×1D6"],
1545
- ["叙勲すべし", "必要な人がいる。彼の人を叙勲せねばならぬ。貴卿はそのため、功に焦り始めている。", "2D6"],
1546
- ["憂国の士", "貴卿は己が国の現状を憂う。宮廷の問題を正さねばならぬと、心に深く誓っている。", "1D6×1D6"],
1547
- ["叙勲与えり", "功少なくともそれなりの古株として、貴卿は己の従者を叙勲し、騎士に取り立てた経験がある。", "2D6×20"],
1548
- ["堕落の虜囚", "貴卿は一時、堕落者の虜囚となり、慰み者として日々を過ごしたことがある。屈辱であり汚名だ……。", "2D6×10"],
1549
- ["名勝負", "貴卿は己の意志を貫くため決闘し、勝利した。その決闘は、近隣でも噂の名勝負とされている。", "1D6×1D6"],
1550
- ["長き眠り", "貴卿はかつて太陽の欠片と戦い、体の多くを喪失して眠りについた……随分と長く寝ていたようだ。", "2D6×50"],
1551
- ["世界は広く", "騎士となって世界の広さを知った。可能な限り世界を知りたい……貴卿は広き世界を見聞せんとしている。", "2D6×10"],
1552
- ["王器", "叙勲以来、人をひれ伏させる圧倒的な魅力を得た。それはまさしく、支配者となるべく与えられた資質だ。", "1D6×1D6"],
1553
- ["高名", "数多の決闘や馬上試合で実力を示してきた。あなたは実力ある騎士として名を馳せている。", "2D6×5"],
1554
- ["伝説", "貴卿は未だ偉業わずかなれど、その逸話は伝説の域。すでに吟遊詩人らの歌にさえ歌われている。", "1D6×1D6"],
1555
- ]
1556
-
1557
- return table
1558
281
  end
1559
282
 
1560
- def getElderPastTable
1561
- table =
1562
- [
1563
- ["古き罪人", "地獄が生まれるより前。誰もが忘れた牢に閉じ込められていた罪人……それが貴卿だ。幾百年を経て、ついに牢は破られた。", "1D66+1300"],
1564
- ["地獄漏れ", "貴卿は不徳と堕落を重ね、地獄へと幽閉された……はずだ。しかし、気づけば外におり、数百年が過ぎていた……。", "1D666"],
1565
- ["禁忌の探求", "とうに死した一人の民……あるいは騎士を、貴卿は蘇らさんとしている。外法の類だ。わかっていても……諦められぬのだ。", "1D666"],
1566
- ["堕落せし身", "一度は堕落し、恥と穢れにまみれた。心ある友らが救い出してくれたが、汚名は今も付きまとう。堕落の兆しが全て消えようとも。", "1D666"],
1567
- ["臆病の失態", "太陽竜の現れた時、貴卿は恐怖から討伐の招集より逃げ出した。この恥は、長き時を経た今も貴卿の心を苛んでいる。", "1D66+1250"],
1568
- ["無限の復讐", "貴卿はこの世の理不尽に泣かされた。ゆえに終わらぬ復讐を始めたのだ。この世界全てを、変えてしまうために……。", "1D666"],
1569
- ["悪しき発端", "かつて貴卿は、よからぬ考えに取りつかれていた。かつての活動は、今も悪しき後継者を生んでいる。止めねばなるまい。", "3D6×100"],
1570
- ["妖精の輪", "妖精に誘われ、一夜の宴を楽しんだ。そして今……かつてより、幾百年が過ぎている。貴卿を知る騎士は、まずいない。", "2D6×100"],
1571
- ["破滅の疫病", "あの頃、疫病はノスフェラス以外も侵した。貴卿の故郷もまた……民を見殺しにした貴卿に、彼の冥王を責められようか。", "1D66+1210"],
1572
- ["主の堕落", "貴卿を叙勲した主が堕落した。主を誇って来た貴卿は、己の中から何か大切なものが……すっぽりと抜けたように思えた。", "1D666"],
1573
- ["異端の友", "かつて、異端と騎士の距離は近かった。貴卿には異端の友がおり、距離を取りつつもお互いに助け合って来たのだが……。", "2D6×100"],
1574
- ["時を超えて", "何があったのかわからない。しかし、気づけば遥か未来の大地に立っていた。幾百年もの空白が、今も貴卿を苛んでいる。", "3D6×100"],
1575
- ["太陽竜襲撃", "彼の太陽竜による襲撃を、貴卿はまともに受けた。守るべき領地は失われ、討つべき太陽竜も、己の手では討てなかったのだ。", "1D66+1300"],
1576
- ["数多の堕落", "知る者の多くが堕落していった。かつての友で今も残るはわずか。決して堕落すまいと、固い決意をしているが……。", "2D6×100"],
1577
- ["最後の命令", "太陽竜討伐の折、ある将軍が貴卿を庇い、帰らぬ人となった。最後の命令は「生きろ」――以来、貴卿は命令を守り続けている。", "1D6+1250"],
1578
- ["今は後日談", "貴卿は復讐を成し遂げた。そして、為すべきことを失った。かろうじて堕落は避けているが、新たな生きる甲斐を見つけねば。", "1D666"],
1579
- ["守るべき地", "ある領主が、堕落した。惨劇の後、もはやそこには誰も住まない。だが、貴卿が彼の人と過ごした思い出はある。守らねば。", "1D666"],
1580
- ["開拓者", "民の心を知りたくて。貴卿は一人荒野を拓き耕した。やがて村ができ、貴卿は領主となった。彼の地は貴卿の第二の故郷だ。", "1D666"],
1581
- ["己だけが", "太陽竜討伐の折、目の前でゲイズヴァルト家が滅んだ。貴卿にわずかでも勇気があれば、彼の家は残っていたのでは……。", "1D66+1250"],
1582
- ["信仰の日々", "僧正として拝殿にこもり、大いなるドラクルへの感謝を捧げてきた。今も、紅き月を見上げる時、貴卿の内には感謝が満ちる。", "2D6×100"],
1583
- ["寵童の日々", "叙勲の主によって、屋敷の中で大事に大事に扱われてきた。騎士として不本意でもあったが、人として彼の方を愛している。", "1D666"],
1584
- ["傍観の日々", "民の移り変わる様をじっと眺めている。貴卿は目まぐるしく彼らを、隠者として眺めているのが好きだった。", "3D6×100"],
1585
- ["遍歴の日々", "遍歴の騎士として諸領を巡り、数多の騎士、数多の冒険、数多の恋の中で過ごしてきた。今も色あせぬ美しき思い出だ。", "2D6×100"],
1586
- ["忠義の日々", "仕えるべき御方を見つけ、貴卿は全てを捧げて彼の人を守ってきた。その忠誠は未だ損なわれてはいない……。", "2D6×100"],
1587
- ["民の血統", "叙勲され、騎士になったが……民の頃を捨てられなかった。貴卿はずっと、ずっと、己の血縁や友の子孫を見守っている。", "1D6×150"],
1588
- ["長い眠り", "生き疲れてか、傷を負ってか。貴卿は長い長い眠りについた。そうして近年ようやく目を覚ましたばかりである。", "2D6×100"],
1589
- ["冥王と後悔", "かつてノスフェラスにて地位を得ていた。しかしあの災禍の中で貴卿は逃げたのだ。冥王と化す彼女を見捨てて……。", "1D66+1250"],
1590
- ["勃興の協力者", "貴卿はローゼンブルク勃興のため、グランツ公へと協力してきた。彼の裏も表もよく知っているし、彼の地で勢力も築いている。", "1D66+400"],
1591
- ["ノスフェラス", "貴卿はノスフェラス末期、疫病の中で叙勲を受けて救われたる騎士。冥王とその一党の風評を何より苦々しく見てきた者だ。", "1212"],
1592
- ["財産", "長い年月の中、貴卿は多くの品や建物を具現化し、永続化した。貴卿の周囲は己の生み出したもので溢れている。", "2D6×100"],
1593
- ["妖精の国", "騎士を引退し、歴代アヴァローム公の如く、妖精らの国で楽しく暮らしていた。今宵、騎士として世に出たは、気まぐれに過ぎぬ。", "2D6×100"],
1594
- ["数多の叙勲", "数多の戦いを経て来た貴卿は、数え切れぬ武勲を立てて来た。一つ一つを数えるのも、もはや馬鹿らしいほどだ。", "1D66×10"],
1595
- ["血統の重鎮", "血統とは、騎士の最も大きな枠組みであり派閥だ。そして貴卿は、血統内において大きな発言力を持つ重鎮なのだ。", "3D6×100"],
1596
- ["始祖の懇意", "始祖とて心寂しい時はある。貴卿はある始祖と懇意にしていた。彼女にとって、あなたは数少ない心許せる存在なのだ。", "3D6×100"],
1597
- ["太陽竜討伐", "彼の恐るべき太陽竜討伐に参加し、華々しき活躍を飾った。その一方で貴卿は、多くの犠牲者らも目にしている。", "1D66+1300"],
1598
- ["最初の騎士", "貴卿こそは、真祖百年の喪が明けし時、始祖その人より最初期に叙勲されたる騎士。常夜全ての歴史の生き証人だ。", "1D66+1833"],
1599
- ]
1600
-
1601
- return table
1602
- end
1603
-
1604
- def getOriginalSinTable
1605
- table =
1606
- [
1607
- ["虐待", "あの地獄のような日々で、御身がされてきたことを思えば……誰も彼も、常夜国すべて等しく呪うしかない。", "7+1D6×1D6"],
1608
- ["野良犬の如く", "孤児だった御身は盗み殺し騙して。手段を問わず生き抜いた。罪人として捕まらず、逃げ延びたは天運か。", "7+1D6×1D6"],
1609
- ["弱肉強食", "暴力で欲しいものを奪ってきた御身は、略奪者にして狩人。どれだけ取り繕っても、世を支配するのは獣の法。", "7+1D6×1D6"],
1610
- ["黒い衝動", "暴力性や残虐性が、御身の中に眠っている。それは時折突発的に表れて……大事なものを破壊するのだ。", "7+1D6×1D6"],
1611
- ["氷の心", "過酷な日々を暮らす中、御身の心は凍てついた。異端として力を得た今も……心の氷はまだ溶けない。", "7+1D6×1D6"],
1612
- ["生存者", "堕落者、あるいは太陽の欠片の襲撃を受け、故郷は全滅。御身のみが生き延びた。背負う魂は数多い。", "7+1D6×1D6"],
1613
- ["血の渇き", "民の体を流れる血に、異様な執着を覚えてしまう。どうしても満たされぬ時は、己の血を舐めるほどに。", "7+1D6×1D6"],
1614
- ["嘲笑の的", "いつも、周りで誰かが嘲笑う。誰も彼も御身を嘲笑う。何が間違っているというのか、何がおかしいというのか。", "7+1D6×1D6"],
1615
- ["死者を前", "に大切な人が死んだ。朽ちゆく死体を見て、死のおぞましさを知った。何があろうと絶対に、死んでなるものか。", "7+1D6×1D6"],
1616
- ["騎士への嫉妬", "御身は騎士という存在に嫉妬していた。美しく強く老いぬ者ら……なぜ奴らは華々しく、己は惨めなのか。", "13+1D6×1D6"],
1617
- ["背負う罪", "かつて、ふとした悪戯心が、人を死なせてしまった。どれほど時を経ても、最初に刻まれた罪は消えない。", "7+1D6×1D6"],
1618
- ["騎士の堕落", "よく知る騎士が堕落し、暴虐を為した。御身は、騎士というものが異端と何も変わらぬと知っている。", "13+1D6×1D6"],
1619
- ["太陽の幻視", "昔から時折、太陽に照らされた大地の夢を見る。それは決して、悪い世界ではなかったと思えるのだが……。", "7+1D6×1D6"],
1620
- ["退廃", "酒色に御身は、どうしようもない屑と化していた。思い出したくもない、怠惰と強欲に溺れた日々。", "13+1D6×1D6"],
1621
- ["虚栄", "誰かに認めて欲しくて、己を嘘で塗り固めて。努力以上に、嘘を重ねて生きて来た。", "13+1D6×1D6"],
1622
- ["黒い歴史", "かつての己は弱く、愚かで。思い返せば、頭を掻きむしりながら消え去りたいという想いばかりが。", "13+1D6×1D6"],
1623
- ["刻まれた恐怖", "恐ろしい存在に出会った。堕落者か、妖精か、太陽か。御身の中には、それに対する恐怖が刻まれたままだ。", "7+1D6×1D6"],
1624
- ["血気盛ん", "性急に過ぎると、古くから言われていた。しかし年を経ても、気質は治らぬ。御身の心は今も、若く、未熟だ。", "7+1D6×1D6"],
1625
- ["孤独への恐怖", "一人きりは怖い。寂しさは恐怖だ。媚びてでも、使われてでも、傍にいてくれないと、気が狂いそうになる。", "10+1D6×1D6"],
1626
- ["野育ち", "森や荒野で一人生きて来た。獣も人も何も変わりはしない。ただ一匹の獣として生きて来たのだ。", "7+1D6×1D6"],
1627
- ["唸る獣", "人に、威圧的に接してしまう。友好的に接したくても、それができない。御身の笑顔は牙を剥く獣の如し。", "15+1D6×1D6"],
1628
- ["移り気", "どうにも目先のものに気をとられがちだ。落ち着いてものごとを考えられない。年経ても変わらぬ性分だ。", "6+2D6"],
1629
- ["空白", "遠い昔、異端の力を得る前の己について、覚えていない。思い出そうとすると、脳中に霧がかかるのだ。", "7+1D6×1D6"],
1630
- ["蘇生の願い", "大切な人が死んだ。けれど諦められない。諦めない。何か、解決策が、蘇らせる方法が、きっと。", "7+1D6×1D6"],
1631
- ["本の虫", "静かに本を読むのが好きだ。本の中の世界、己の世界に没頭したい。外で駆けまわるのは苦手なのだ。", "13+1D6×1D6"],
1632
- ["老醜", "老いて朽ちゆく恐怖。死への忌避感。必死でもがいて足掻いて、御身はそれから逃れようとした。", "35+1D6×1D6"],
1633
- ["好奇心", "気を引くものがあれば、目を向ける。秘密とあれば暴かずにいられない。知らぬままでは、済ませられぬのだ。", "9+2D6"],
1634
- ["惚れっぽい", "簡単に恋をしてしまう。わずかな縁でも恋人のつもりになって、心まで尽くしてしまうのだ。", "13+1D6×1D6"],
1635
- ["叶わぬ初恋", "ある民に恋をした。恋は叶わず、彼の人は御身の前から姿を消した。けれど、あの笑顔は、今も御身を力づける。", "9+2D6"],
1636
- ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、御身の魂はどこまでも穢れなく美しい。そして脆い。", "6+2D6"],
1637
- ["平穏", "御身は家族に囲まれ、愛情に満ちた生活を送っていた。平凡な生活、平凡な日々。とても、とても幸せだった。", "7+1D6×1D6"],
1638
- ["甘い夢", "世界を何も知らなかった甘い夢の日々。その夢から覚めたのは幸福か、不幸か。あるいは今も、夢の中か。", "7+2D6"],
1639
- ["美貌", "誰もが羨み、振り返る美貌。その美貌は周囲に響き、また騎士すらも御身を賛美した。", "7+1D6×1D5"],
1640
- ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、御身は妖精や獣の友である。", "7+1D6×1D6"],
1641
- ["騎士の奉仕者", "御身は麗しき騎士に仕えていた。信頼と憧れを育み、その立場に誇りを持っていたのだが……。", "13+1D6×1D6"],
1642
- ["神童", "御身は有り余る才を持って生まれた。騎士になるかと思われていたのだが……。", "7+1D6×1D6"],
1643
- ]
1644
- return table
1645
- end
1646
-
1647
- def getPassionTable
1648
- table =
1649
- [
1650
- ["地獄", "騎士らによって、御身は一度は地獄に封じられた。何とか脱出できたのは、幸運以外のなにものでもあるまい。"],
1651
- ["暴発する殺意", "殺すつもりなどなかったのに。ふとした口論から、かっとなって……一人の民をその手で、殺めてしまった。"],
1652
- ["復讐の道", "かつて御身は友に裏切られ、全てを奪われた。今や御身の命は、かつての友を葬るためにある。"],
1653
- ["異端審問", "あの忌まわしき異端審問官らに捕まり、屈辱と苦痛を受けた。彼の者らの存在など決して認めぬ……。"],
1654
- ["仇敵", "忘れてはならぬ敵がいる。やつの胸を貫き、首を落とすまで、御身に安息の日は来ない。来ないのだ。"],
1655
- ["堕落の冤罪", "一人の騎士が堕落した。その罪を民や他の騎士らは、当人ではなく……異端である御身に押し付けたのだ。"],
1656
- ["忌まわしの火", "故郷は太陽の欠片に襲われた。全てが焼かれ、御身も傷を負った。あの呪わしい炎、決して忘れはしない。"],
1657
- ["惨劇に佇む", "気がつけば、無数の民の血肉舞う惨状の中に立っていた。これは己の所業なのか……? 答える者はいない。"],
1658
- ["異相の拒絶", "かつての御身は己の異端の体を受け入れられなかった。何度も己の異相を切り落とし、堕落の淵に迷った。"],
1659
- ["堕落の道標", "何気ない言葉が、友の心を傷つけた。彼の者は堕落した。御身の言葉が切っ掛けでないと、どうして言えようか。"],
1660
- ["力に酔う", "異端の力を得て、有頂天となった。己こそ王と信じ、民に暴虐を為した。すぐに誤りを思い知りはしたが……。"],
1661
- ["近しき堕落", "友や恋人が堕落した。それは忘れられぬ過去。ともすれば己もまた、と悪しき未来を思い描いてしまう。"],
1662
- ["民への失望", "信頼を育んで来た民が、異端審問官らの言葉に流され、御身を罵り始めた。御身が何をしたというのか。"],
1663
- ["民の罠", "快く迎えられ、宿に泊められ……眠りについた御身を襲ったのは異端審問官だった。もはや、民など信じぬ。"],
1664
- ["異端卿の友", "御身のよく知る異端が、御身の友たる騎士を再叙勲し、異端卿に変えた。御身一人だけが……何も知らされず。"],
1665
- ["堕落の様相", "御身は堕落者に襲われた。何とか生き残ったが、あの怪物の様相は……己もまた、ああなってしまうのか?"],
1666
- ["それでも力が", "御身は騎士になれなかった。それでも力が欲しくて……異端にすがりつき、隷属と引き換えに力を得たのだ。"],
1667
- ["石もて追われ", "人外の力を持つ御身に、民は石を投げつけ追い払わんとした。何もしてはいないのに……民は信じられぬ。"],
1668
- ["呪い", "妖精から呪いを受けた。呪いはゆっくりと御身を蝕み、その身に災いを招く。すでに呪いは解けたろうか?"],
1669
- ["望まぬ救い", "受難より御身を救った者は、さらなる災いであった。救い手は暴君となり、御身の全てを支配したのだ。"],
1670
- ["汚い仕事", "騎士に雇われ、下劣な仕事をした。結果、汚名をかぶせられ、その地を逃げ出す羽目となったのだが。"],
1671
- ["異端の住処", "行ってはならぬ場所に行き。逢ってはならぬ異端に逢って。御身はそのまま、故郷へ帰れぬ身となった。"],
1672
- ["死別", "特別な存在だった民が……少し見ぬ間に死んでいた。同じ異端に変え、時を過ごすつもりだったのに。"],
1673
- ["真の恋", "これまでの恋とはただの欲望であった。御身は真の恋を知ったのだ。全てが手遅れになった後に……。"],
1674
- ["拒絶", "愛した民がいた。同じ異端に変えて、長い時の伴侶としたかったが……当人から拒絶された。"],
1675
- ["最期の足掻き", "民として死にかけ。潔く散るはずが……最後の最後で執着に囚われた。代価を差し出し、異端と化したのだ。"],
1676
- ["死の味", "きっと御身は一度は死んだのだ。命を失い、体が冷たい塊と化すあの時を……とてもよく、覚えているのだから。"],
1677
- ["妖精の導き", "入ってはならぬ森で妖精と親しくなった。そして戯れる中、気づけば見知らぬ土地と時代にいたのだ。"],
1678
- ["つまずき", "ほんのわずかなつまずきが、いつまでも澱のように残っている。この憂いが晴れる日は来るのだろうか。"],
1679
- ["忘却", "御身に何か忌まわしいことが起きた……はずだ。しかし思い出せない。いったい何が……?"],
1680
- ["人でなしの恋", "御身は異端との恋に落ちた。甘く狂おしい時間、移ろいゆく時。御身は恋人の手で、異端の体を得た。"],
1681
- ["主の気まぐれ", "あの日、死んだはずの御身……。しかし、通りすがった主が、御身を異端へと変えて救ってくれたのだ。"],
1682
- ["悲劇の予言", "魔女が御身に予言をした……いつか、大切な人を自らの手で殺めるだろうと。"],
1683
- ["かき口説き", "御身は、孤独な異端を甘き言葉で口説き、心蕩かし、己を仲間に加えさせた。精神面において主はむしろ……。"],
1684
- ["孤独", "ずっと孤独だった。異端となってなお孤独。御身はこのまま、堕落を待つばかりかと思ったのだが……。"],
1685
- ["井の中の蛙", "己こそ最強と思っていた御身だが……一人の騎士を見て、全ては崩れた。まだまだ、世界は広い。"],
1686
- ]
1687
- return table
1688
- end
1689
-
1690
- def getRecentStateTable
1691
- table =
1692
- [
1693
- ["悪夢", "眠りにつくたび、受難の記憶が蘇る。御身の心は晴れず、忌まわしい悪夢がつきまとい続けているのだ。", "2D6×10"],
1694
- ["血の昂ぶり", "戦った後は体が火照り昂ぶり、どうしようもなく疼く。堕落の日は遠くない……御身には確信がある。", "1D6×1D6"],
1695
- ["逃走", "異端審問官に追われ、住み慣れた地を離れねばならなかった。民も、異端に不審の目を向ける。生きづらい。", "1D6×1D6"],
1696
- ["堕落の共鳴", "御身の魂は堕ちかけているのだろうか。堕落した者たちがどうしようもなく近しく思えてしまうのだ。", "1D6×1D6"],
1697
- ["死にたがり", "もう飽きるほど生きた。堕落者や太陽を少しでも巻き添えに……己にふさわしい場所で、消滅してしまいたい。", "3D6×30"],
1698
- ["再叙勲の儀", "騎士を異端卿に変える方法を、御身は知っている。そして実際に一人の異端卿を生み出してもいるのだ。", "3D6×30"],
1699
- ["改心", "かつての御身はろくでもない悪党だった。心入れかえたのだが……異端に対する世間の目は厳しい。", "2D6×10"],
1700
- ["追跡", "堕落した友を探している。彼の者が大切だからこそ、御身の手でケリをつけねばならないのだ。", "2D6×10"],
1701
- ["嵐の予感", "御身には予感がある――常夜国に近く、恐るべき災厄が起きるであろう。少しでも多くに知らせ、備えねば。", "2D6×10"],
1702
- ["仮面", "傷つくのが怖くて、表情を作った。本当の己を隠した。今や御身はもう、本当の己を忘れてしまっている……。", "2D6×10"],
1703
- ["墓守", "親しくして死んでいった者たちの墓を見守っている。誰もが拝殿の墓場に葬られるわけではないのだ。", "2D6×20"],
1704
- ["空白", "その体となってから、思い出せない時期がある。その間に何があったのか、御身には何もわからない。", "1D6×1D6"],
1705
- ["失恋", "御身は異端ゆえか、その性格ゆえか。一つの恋を終えた。今は傷心のままに彷徨っている。", "1D6×1D6"],
1706
- ["主がために", "騎士か異端か。御身には、心に決めた特定の主がいる。その方の命に従い、御身は行動する。", "1D6×1D6"],
1707
- ["新米", "御身は未だ、異端となったばかり。得た力に振り回され、受難にも懲りず(古き異端は選択できない)。", "1"],
1708
- ["退屈", "変わらぬ日常。甲斐なき日々。ゆっくりと朽ちていく感覚。このまま己を失い、堕落してしまうのだろうか。", "2D6×10"],
1709
- ["隠遁", "民の目、騎士の目は、平穏を乱す。御身は自らの平穏のため、厳しき自然の中で隠棲している。", "2D6×20"],
1710
- ["愛がほしい", "寂しくて人恋しい日々。誰かを信じたい。誰かに信じられたい。利用されてもいいから、人の側にいたい。", "1D6×1D6"],
1711
- ["魔女の予言", "御身は予言に導かれている。御身は誰かと出会わねばならぬ。それは主か友か恋人……あるいは敵か。", "1D6×1D6"],
1712
- ["見届け人", "民の移り変わる様をじっと眺めている。御身は目まぐるしく彼らを眺めるのが好きなのだ。", "3D6×30"],
1713
- ["後継探し", "御身は己の心を動かす民を探している。己と同じ存在に変え、永遠の時を共に過ごすのだ……。", "3D6×20"],
1714
- ["ゴブリン", "ゴブリンたちに懐かれている。彼らは頻繁に、御身の前へと姿を現し、ちょっとした悪戯や贈り物をしていくのだ。", "1D6×1D6"],
1715
- ["血の後継", "御身は目に留めた者を仲間に加えたことがある。そして、その者との親交は未だ途絶えてはいない。", "3D6×30"],
1716
- ["神秘の伝承", "神秘の技を、民や他の異端に伝えている。古い知識を伝えるためあるいは単に驚く顔を見ようと。 ", "3D6×20"],
1717
- ["変革の狼煙", "異端と蔑まれ、このような立場に追いやられた現状を是とするのか? 立ち上がり、変えるべきではないか?", "1D6×1D6"],
1718
- ["民と共に", "長く民と交わり、彼らとの交流の中で生きて来た。多くの感謝と、いくらかの疑いを受けながら生きている。", "1D6×1D6"],
1719
- ["放浪癖", "一つ所に留まる気になれない。御身は常に道を歩き、数多の村、数多の都市を渡り歩いてきた。", "1D6×1D6"],
1720
- ["民の間に", "積極的に民と交わり、彼らの生活に関わっている。御身は人が好きで、彼らと接してこそ、己を感じられるのだ。", "1D6×1D6"],
1721
- ["恩返し", "かつて、御身はある騎士、または異端に助けられた。いつか、この恩は返さねばならない。", "1D6×10"],
1722
- ["騎士の友", "騎士と時を過ごし、信頼を築いた。騎士という連中への忌避感は少ない。彼らとは助け合えるだろう。", "2D6×10"],
1723
- ["長き眠り", "御身はかつて人知れず太陽の欠片と戦い、体の多くを喪失して眠りについた……随分と長く寝ていたようだ。", "3D6×50"],
1724
- ["英雄の星", "出会った魔女が予言した……いずれ御身が恐るべき敵を打ち倒し、その名は諸領に響くであろうと。", "1D6×1D6"],
1725
- ["導くもの", "多くの異端が、蔑まれる立場に甘んじ、堕落していく。御身が誇りと、家族と、愛情を教えねばならない。", "3D6×20"],
1726
- ["慈愛", "御身は全てを慈しむ。たとえ今は不幸な行き違いがあろうとも、彼らを救い続ける手を止めてはなるまい。", "2D6×10"],
1727
- ["生ける芸術", "その美しさゆえ、御身に平穏は訪れぬ。姿を見ただけで、あらゆる者が御身に焦がれ、愛を捧げよう。", "1D6×1D6"],
1728
- ["伝説", "御身は異端なれど、常夜国の歴史に少なからず関わってきた。吟遊詩人にも歌われる伝説の存在だ。", "3D6×50"],
1729
- ]
1730
- return table
283
+ class << self
284
+ private
285
+
286
+ def translate_tables(locale)
287
+ {
288
+ "CO" => YearTable.from_i18n(
289
+ "Dracurouge.table.CO",
290
+ locale,
291
+ [
292
+ "7+1D6×1D6",
293
+ "7+1D6×1D6",
294
+ "7+1D6×1D6",
295
+ "7+1D6×1D6",
296
+ "7+1D6×1D6",
297
+ "7+1D6×1D6",
298
+ "7+1D6×1D6",
299
+ "10+2D6",
300
+ "7+1D6×1D6",
301
+ "14+1D6×1D6",
302
+ "7+1D6×1D6",
303
+ "10+1D6×1D6",
304
+ "7+1D6×1D6",
305
+ "10+2D6",
306
+ "7+1D6×1D6",
307
+ "14+1D6×1D6",
308
+ "10+2D6",
309
+ "7+1D6×1D6",
310
+ "14+1D6×1D6",
311
+ "18+1D6×1D6",
312
+ "10+2D6",
313
+ "7+1D6×1D6",
314
+ "7+1D6×1D6",
315
+ "7+1D6×1D6",
316
+ "7+1D6×1D6",
317
+ "30+1D6×1D6",
318
+ "14+1D6×1D6",
319
+ "7+1D6×1D6",
320
+ "14+1D6×1D6",
321
+ "10+2D6",
322
+ "14+1D6×1D6",
323
+ "14+1D6×1D6",
324
+ "7+4D6",
325
+ "14+1D6×1D6",
326
+ "7+1D6×1D6",
327
+ "7+1D6×1D6",
328
+ ]
329
+ ),
330
+ "CA" => YearTable.from_i18n(
331
+ "Dracurouge.table.CA",
332
+ locale,
333
+ [
334
+ "2D6×10",
335
+ "1D6×1D6",
336
+ "1D6×1D6",
337
+ "2D6×5",
338
+ "2D6×10",
339
+ "1D6×1D6",
340
+ "2D6×10",
341
+ "1D6×5",
342
+ "2D6×10",
343
+ "2D6×3",
344
+ "1D6×1D6",
345
+ "1D6×1D6",
346
+ "2D6×10",
347
+ "2D6×10",
348
+ "2D6×20",
349
+ "2D6×10",
350
+ "2D6×20",
351
+ "1D6×1D6",
352
+ "1D6×3",
353
+ "1D6×1D6",
354
+ "1D6×5",
355
+ "2D6×10",
356
+ "1D6×1D6",
357
+ "2D6×10",
358
+ "2D6",
359
+ "1D6×1D6",
360
+ "2D6",
361
+ "1D6×1D6",
362
+ "2D6×20",
363
+ "2D6×10",
364
+ "1D6×1D6",
365
+ "2D6×50",
366
+ "2D6×10",
367
+ "1D6×1D6",
368
+ "2D6×5",
369
+ "1D6×1D6",
370
+ ]
371
+ ),
372
+ "EP" => YearTable.from_i18n(
373
+ "Dracurouge.table.EP",
374
+ locale,
375
+ [
376
+ "1D66+1300",
377
+ "1D666",
378
+ "1D666",
379
+ "1D666",
380
+ "1D66+1250",
381
+ "1D666",
382
+ "3D6×100",
383
+ "2D6×100",
384
+ "1D66+1210",
385
+ "1D666",
386
+ "2D6×100",
387
+ "3D6×100",
388
+ "1D66+1300",
389
+ "2D6×100",
390
+ "1D6+1250",
391
+ "1D666",
392
+ "1D666",
393
+ "1D666",
394
+ "1D66+1250",
395
+ "2D6×100",
396
+ "1D666",
397
+ "3D6×100",
398
+ "2D6×100",
399
+ "2D6×100",
400
+ "1D6×150",
401
+ "2D6×100",
402
+ "1D66+1250",
403
+ "1D66+400",
404
+ "1212",
405
+ "2D6×100",
406
+ "2D6×100",
407
+ "1D66×10",
408
+ "3D6×100",
409
+ "3D6×100",
410
+ "1D66+1300",
411
+ "1D66+1833",
412
+ ]
413
+ ),
414
+ "OS" => YearTable.from_i18n(
415
+ "Dracurouge.table.OS",
416
+ locale,
417
+ [
418
+ "7+1D6×1D6",
419
+ "7+1D6×1D6",
420
+ "7+1D6×1D6",
421
+ "7+1D6×1D6",
422
+ "7+1D6×1D6",
423
+ "7+1D6×1D6",
424
+ "7+1D6×1D6",
425
+ "7+1D6×1D6",
426
+ "7+1D6×1D6",
427
+ "13+1D6×1D6",
428
+ "7+1D6×1D6",
429
+ "13+1D6×1D6",
430
+ "7+1D6×1D6",
431
+ "13+1D6×1D6",
432
+ "13+1D6×1D6",
433
+ "13+1D6×1D6",
434
+ "7+1D6×1D6",
435
+ "7+1D6×1D6",
436
+ "10+1D6×1D6",
437
+ "7+1D6×1D6",
438
+ "15+1D6×1D6",
439
+ "6+2D6",
440
+ "7+1D6×1D6",
441
+ "7+1D6×1D6",
442
+ "13+1D6×1D6",
443
+ "35+1D6×1D6",
444
+ "9+2D6",
445
+ "13+1D6×1D6",
446
+ "9+2D6",
447
+ "6+2D6",
448
+ "7+1D6×1D6",
449
+ "7+2D6",
450
+ "7+1D6×1D5",
451
+ "7+1D6×1D6",
452
+ "13+1D6×1D6",
453
+ "7+1D6×1D6",
454
+ ]
455
+ ),
456
+ "RS" => YearTable.from_i18n(
457
+ "Dracurouge.table.RS",
458
+ locale,
459
+ [
460
+ "2D6×10",
461
+ "1D6×1D6",
462
+ "1D6×1D6",
463
+ "1D6×1D6",
464
+ "3D6×30",
465
+ "3D6×30",
466
+ "2D6×10",
467
+ "2D6×10",
468
+ "2D6×10",
469
+ "2D6×10",
470
+ "2D6×20",
471
+ "1D6×1D6",
472
+ "1D6×1D6",
473
+ "1D6×1D6",
474
+ "1",
475
+ "2D6×10",
476
+ "2D6×20",
477
+ "1D6×1D6",
478
+ "1D6×1D6",
479
+ "3D6×30",
480
+ "3D6×20",
481
+ "1D6×1D6",
482
+ "3D6×30",
483
+ "3D6×20",
484
+ "1D6×1D6",
485
+ "1D6×1D6",
486
+ "1D6×1D6",
487
+ "1D6×1D6",
488
+ "1D6×10",
489
+ "2D6×10",
490
+ "3D6×50",
491
+ "1D6×1D6",
492
+ "3D6×20",
493
+ "2D6×10",
494
+ "1D6×1D6",
495
+ "3D6×50",
496
+ ]
497
+ ),
498
+ "PP" => YearTable.from_i18n(
499
+ "Dracurouge.table.PP",
500
+ locale,
501
+ [
502
+ "8+2D6",
503
+ "6+2D6",
504
+ "7+1D6×1D6",
505
+ "15+1D6×1D6",
506
+ "7+1D6×1D6",
507
+ "7+1D6×1D6",
508
+ "7+1D6×1D6",
509
+ "7+1D6×1D6",
510
+ "7+1D6×1D6",
511
+ "7+1D6×1D6",
512
+ "7+1D6×1D6",
513
+ "7+1D6×1D6",
514
+ "6+2D6",
515
+ "7+1D6×1D6",
516
+ "9+2D6",
517
+ "15+1D6×1D6",
518
+ "9+3D6",
519
+ "7+1D6×1D6",
520
+ "10+1D6×1D6",
521
+ "9+2D6",
522
+ "9+2D6",
523
+ "9+3D6",
524
+ "6+2D6",
525
+ "7+1D6×1D6",
526
+ "7+1D6×1D6",
527
+ "7+1D6×1D6",
528
+ "6+2D6",
529
+ "10+1D6×1D6",
530
+ "7+1D6×1D6",
531
+ "12+1D6×1D6",
532
+ "15+1D6×1D6",
533
+ "9+3D6",
534
+ "7+1D6×1D6",
535
+ "7+1D6×1D6",
536
+ "7+1D6×1D6",
537
+ "12+4D6",
538
+ ]
539
+ ),
540
+ "ST" => DiceTable::D66Table.from_i18n("Dracurouge.table.ST", locale),
541
+ "PN" => DiceTable::D66Table.from_i18n("Dracurouge.table.PN", locale),
542
+ "CS" => DiceTable::Table.from_i18n("Dracurouge.table.CS", locale),
543
+ "ECS" => DiceTable::D66Table.from_i18n("Dracurouge.table.ECS", locale),
544
+ "BT" => DiceTable::Table.from_i18n("Dracurouge.table.BT", locale),
545
+ }
546
+ end
1731
547
  end
1732
548
 
1733
- def getPeacefulPastTable
1734
- table =
1735
- [
1736
- ["乱暴者", "短気で、気性が荒く、ついつい手が出て乱暴を働いてしまう。故郷での評判はあまりよくない。今はどうだろう?", "8+2D6"],
1737
- ["孤児", "親兄弟もなく、ただ一人で知恵を働かせて生きて来た。自由だが、厳しい環境の中で御身の魂は磨かれてきたのだ。", "6+2D6"],
1738
- ["絶対の恐怖", "ある生き物が、どうしようもなく恐い。とにかく生理的に無理。それを見れば御身は無様に飛び上がり逃げまどう。", "7+1D6×1D6"],
1739
- ["酒乱", "昔から酒に酔うと、どうにもろくなことをしない。民でなくなった今、酒には酔わないはずだが……。", "15+1D6×1D6"],
1740
- ["怠け者", "才能はあっても、動くのはどうにも億劫で。いつも、どうにかしてラクに過ごそうと、そればかり考えていた。", "7+1D6×1D6"],
1741
- ["内気", "臆病で人見知りする性格。人との交流も苦手。付き合いは深く狭く。そんな御身でも縁はあるもので……。", "7+1D6×1D6"],
1742
- ["血気盛ん", "性急に過ぎると、古くから言われていた。しかし年を経ても、気質は直らぬ。御身の心は今も若く、未熟だ。", "7+1D6×1D6"],
1743
- ["幼馴染", "とても仲のいい幼馴染がおり、将来について語り合っていた。今、彼の人はどうしていることだろうか。", "7+1D6×1D6"],
1744
- ["忘れざる味", "御身には、どうしても忘れがたい大好物がある。民でなくなった今も、それを夢中で口にしてしまうだろう。", "7+1D6×1D6"],
1745
- ["朴念仁", "かつて多数の異性から想いを向けられたが、御身は気づかなかった。最近ふと思い出し、気づいたのだ。", "7+1D6×1D6"],
1746
- ["ある別れ", "親友や家族が、騎士または異端となり……故郷を離れた。しかし、同じ時を生きる今なら、きっと会 えるはずだ。", "7+1D6×1D6"],
1747
- ["本の虫", "静かに本を読むのが好きだ。本の中の世界、己の世界に没頭したい。外で駆けまわるのは苦手なのだ。", "7+1D6×1D6"],
1748
- ["はねっかえり", "どうにも人の言葉を、素直に聞けない。ついつい反抗しては周りに迷惑をかけてしまう。時を経た今も変わらず。", "6+2D6"],
1749
- ["お調子者", "あれこれと失敗しているのに、ついつい調子に乗ってしまう。勢いのままに、無謀な行動をしてしまいがちだ。", "7+1D6×1D6"],
1750
- ["好奇心", "気を引くものがあれば、目を向ける。秘密とあれば暴かずにいられない。知らぬままでは、済ませられぬのだ。", "9+2D6"],
1751
- ["説教癖", "何かと人の所作が気になり、つい人にうるさく言ってしまう。己自身にも厳しくあろうとしているのだが……。", "15+1D6×1D6"],
1752
- ["腕自慢", "恵まれた体躯と身体能力で、故郷において並ぶものなき腕自慢、力自慢だった。無論、民としては……だが。", "9+3D6"],
1753
- ["自然の中で", "故郷が僻地にあったのか。それとも野に暮らしていたのか。御身は自然に溶け込み、自然をよく知っている。", "7+1D6×1D6"],
1754
- ["旅人", "様々な村や街を行き来する旅人だった。流浪の異端や、遍歴の騎士にも、それなりの知り合いがいる。", "10+1D6×1D6"],
1755
- ["自由に焦がれ", "平凡な日々への反発。己という枠を超えて、異端になってしまえば、きっと自由になれると思った。", "9+2D6"],
1756
- ["叶わぬ初恋", "ある民に恋をした。恋は叶わず、彼の人は御身の前から姿を消した。けれど、あの笑顔は、今も御身を力づける。", "9+2D6"],
1757
- ["奇妙な初恋", "一人の異端と出会い、その美しさに恋をした。彼の人を求め、すべてを打ち捨て……同じ時を生きる身となった", "9+3D6"],
1758
- ["移り気", "どうにも目先のものに気をとられがちだ。落ち着いてものごとを考えられない。年経ても変わらぬ性分だ。", "6+2D6"],
1759
- ["鳥獣の友", "鳥や獣の意思がなんとなくわかる。御身は彼らの友であり、様々な場で助けられ、また助けてもきた。", "7+1D6×1D6"],
1760
- ["妖精の友", "妖精を引き寄せる、奇妙な魅力を持って生まれた。幼き頃より、御身は妖精や獣の友である。", "7+1D6×1D6"],
1761
- ["おせっかい", "周りの人が気になって仕方がない。困っている人には、迷惑がられても口出ししてしまう性分なのだ。", "7+1D6×1D6"],
1762
- ["無垢なる魂", "浮世の邪念から余りに遠く生きて来たがゆえに、御身の魂はどこまでも穢れなく美しい。そして脆い。", "6+2D6"],
1763
- ["修道僧", "真祖の拝殿にて、僧正に仕える修道僧だった。もっとも、異端審問のような視野の狭い考えは持っていない。", "10+1D6×1D6"],
1764
- ["平穏", "御身は家族に囲まれ、愛情に満ちた生活を送っていた。平凡な生活、平凡な日々。とても、とても幸せだった。", "7+1D6×1D6"],
1765
- ["働き者", "故郷では評判の働き者。誠実な人柄でも知られていた。その気質は今も変わらず、余裕を持って行動できない。", "12+1D6×1D6"],
1766
- ["熟練者", "ある専門技術について、天才的な能力を持っている。故郷の領主も、御身の意見や技術を頼みとしたほどだ。", "15+1D6×1D6"],
1767
- ["熱愛", "とても深く、激しい、熱病のような恋をした。恋の炎は今も、御身の中でくすぶっている。決して消えてはいない。", "9+3D6"],
1768
- ["美貌", "誰もが羨み、振り返る美貌。その美貌は周囲に響き、また騎士すらも御身を賛美した。", "7+1D6×1D6"],
1769
- ["魔女の弟子", "故郷の近くに住む魔女にかわいがられていた。薬草や占い、異端について、御身は人よりよく知るだろう。", "7+1D6×1D6"],
1770
- ["騎士の友", "ある騎士によく寵愛を受けていた。否、立場の差を超えた、友情や親愛と言ってもいい対等の絆をつないだのだ。", "7+1D6×1D6"],
1771
- ["血統を遺す身", "伴侶を得て、子を為し、家庭を築いた。その血は、御身が民ならざる身となった今も脈絡と続いている。", "12+4D6"],
1772
- ]
1773
- return table
1774
- end
549
+ TABLES = translate_tables(:ja_jp)
1775
550
 
1776
- TABLES =
1777
- {
1778
- 'CS' => {
1779
- name: "堕落の兆し表",
1780
- type: '2D6',
1781
- table: [
1782
- 'あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。',
1783
- '獣そのものの頭(狼、山羊、蝙蝠のいずれか)',
1784
- '夜鳥の翼',
1785
- 'コウモリの翼',
1786
- '鉤爪ある異形の腕',
1787
- 'ねじれた二本角',
1788
- '狼の耳と尾',
1789
- '青ざめた肌',
1790
- '異様な光を宿す目',
1791
- '突き出した犬歯',
1792
- '目に見える変化はない……'
1793
- ],
1794
- },
1795
-
1796
- 'ECS' => {
1797
- name: "拡張・堕落の兆し表",
1798
- type: 'D66',
1799
- table: [
1800
- '完全なる堕落:あなたは〔壁の華〕となり、いずれかの堕落者となる。その〔幕〕の終了後にセッションから退場する。(基本247ページ参照)',
1801
- '異様な体躯:体が膨れ上がったように、過剰なまでの筋肉を付け、体格も巨躯となる。堕落は近い。',
1802
- '殺戮鬼:民に触れれば、もう貴卿は衝動を抑えきれない。引き裂き殺し、血を啜ってしまう。民に近づいてはならない……。',
1803
- '獣頭:頭が狼や山羊、蝙蝠そのものとなる。遠目にもわかる異常であり、人狼と間違えられて討たれる騎士もいるという。',
1804
- '原初の鎧:体の多くが硬い漆黒の塊となり、禍々しい怪物のような体となる。顔または顔の半分は、元の形を維持できるだろう。',
1805
- '夜鳥の翼:背中に黒い鳥の翼が生える。ストリガともはや変わらず、貴卿は常に異端と並べ揶揄されるだろう。',
1806
- '蝙蝠の翼:背中に蝙蝠の翼が生える。決して隠せず、限定的ながらも空を飛べる……毛の生えた黒い翼だ。',
1807
- '割れた肌:全身の肌がひび割れる。中からじわりと紅い光が常に漏れる。姿が美しかろうと、その様子はもはや怪物だ。',
1808
- '退廃の香り:甘く心蕩かす香りが体から発せられる。騎士ならばともかく、民には麻薬や媚薬のように作用するものだ。',
1809
- '異形の腕:悪鬼を思わせる鉤爪を備えた腕。表面はタールのような漆黒の塊で覆われ……歪んだ凶悪な形をしている。',
1810
- '鬼火を宿す目:目に鬼火が宿る。この異様な光は目から溢れ、炎となって常に揺らめいている。貴卿とまともに向き合う者はもういない。',
1811
- '悪の棘:肘や膝、拳、額、あるいはより思わぬところから、黒か赤の鋭い棘が生える。周囲の皮膚も硬質化を始める。',
1812
- '異様なる刻印:顔を含めた全身の肌に、紅い光による異端の如き刻印が現れる。欲望の性質によって、刻印の様相は常に変わる。',
1813
- '毒蛇:肩からか、あるいは尾のように、禍々しい毒蛇が生える。袖や裾から見せれば具現化させた使役獣に見えなくもないが……。',
1814
- '第三の目:貴卿の額に、第三の目が開く。髪やフードで隠せなくもないが……隠し通すのは難しいだろう。',
1815
- '拡がる鱗:貴卿の体のそこかしこが鱗に覆われ始める。ゆっくりと拡がるそれは、やがて隠しきれなくなるだろう。',
1816
- '獣の唸り:貴卿の内から、獣の唸り声が聞こえるようになる。やがては獣臭も漂い始めるだろう。内は既に獣となりつつある。',
1817
- '変身:なぜこのような……貴卿は性別、外見年齢、体格のいずれか、時にはすべてが大きく変わってしまう。',
1818
- '山羊の角:頭から二本の、ねじれた長い山羊角が生えてくる。この角は、具現化などによって隠したりはできない。',
1819
- '牙の咢:歯が全て犬歯となり、口自体も大きく開くようになる。笑顔も、威嚇しているかのように見えるだろう。',
1820
- '竜の翼:背中に鱗で覆われた頑強な翼が生える。滑空程度はできるだろう。幸いにも竜翼は……吉兆と見る騎士も多い。',
1821
- '山羊の脚:衣装で何とか隠せるのが救いだが……その脚は黒山羊のものとなってしまった。見た者は嫌悪に眉をひそめるだろう。',
1822
- '狼の耳と尾:貴卿の頭に狼の耳が、尻に狼の尾が現れる。これらは獣のように、貴卿の感情に合わせて動く。',
1823
- '闇溢れの目:目の、白目が黒くなる。さらに目からは闇がにじみ出しあふれ、黒い炎の如く揺らめく。',
1824
- '青ざめた肌:死体のように冷たく、また異様に青ざめた肌となる。一見して貴卿の堕落は明らかだ。',
1825
- '発作的変身:【渇き】が増えるごとに貴卿の姿は一瞬だけ、特定の堕落者の姿に変身してしまう。おぞましき末路の暗示なのだ。',
1826
- '具現化不安定:具現化が不安定となる。貴卿が具現化するものは全て歪み、優雅さを失った異形となるだろう。',
1827
- '異様に光る眼:目が鬼火のように光っている。それは闇におぞましい尾を引いて、無意識の内に獲物を狙うだろう。',
1828
- '目立つ犬歯:八重歯と言うには長く、鋭すぎる犬歯。口づけの折、ともすれば相手の肌を傷つけてしまいそうになる……。',
1829
- '魔女爪:手足の爪が、異様な鉤爪となる。具現化でごまかすこともできない……籠手などを常に着けておけば可能だろうか。',
1830
- '加減困難:貴卿の力は制御が難しくなる。ふとした拍子に、家具を壊したり民を傷つけてしまうだろう。',
1831
- '長い舌:貴卿の舌は、己の目まで届くほどに長くなる。幸いにも伸ばして見せない限りは、外部からわかるまいが……。',
1832
- '不埒な口づけ:口づけのごとに、貴卿を異様な劣情が襲う。その作法は浅ましく、淫らがましいものとなってしまうだろう。',
1833
- '堕落の影:紅い月光が照らす貴卿の影は、もはや堕落者のものだ。初対面ならともかく、長く気づかれずには……いられまい。',
1834
- '月光欲:屋根があると不快感を感じる。なるべく月光を浴びられる場所でいたい。宮廷でも庭園やバルコニーを好むだろう。',
1835
- '幸運:自覚するような兆しはないようだが……己を戒めねばなるまい。貴卿は今や堕落の瀬戸際にいると自覚せよ。'
1836
- ],
1837
- },
1838
-
1839
- 'BT' => {
1840
- name: "絆内容決定表:ルージュ/ノワール",
1841
- type: '1D6',
1842
- table: [
1843
- '憐(Pity) 相手を憐れみ、慈しむ。/侮(Contempt) 相手を侮り、軽蔑する。',
1844
- '友(Friend) 相手に友情を持つ。/妬(Jealousy) 相手を羨望し、妬む。',
1845
- '信(Trust) 相手を信頼する。/欲(Desire) 相手を欲し、我がものにしたいと思う。',
1846
- '恋(Love) 相手に恋し、愛する。/怒(Anger) 相手に怒りを感じる。',
1847
- '敬(Respect) 相手の実力や精神を敬う。/殺(Kill) 相手に殺意を持ち、滅ぼそうと思う。',
1848
- '主(Obey) 相手を主と仰ぎ、忠誠を誓う。/仇(Vendetta) 相手を怨み、仇と狙う。'
1849
- ],
1850
- },
1851
- }.freeze
1852
-
1853
- register_prefix(['DR.*', 'RT.*', 'HRT.*', 'CT\d+', "ST", "CO", "CA", "EP", "OS", "PN", "RS", "PP"] + TABLES.keys)
551
+ register_prefix('DR', 'RT', 'HRT', 'CT\d+', TABLES.keys)
1854
552
  end
1855
553
  end
1856
554
  end