bcdice 3.0.0.pre.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +21 -0
  3. data/.github/.codecov.yaml +10 -0
  4. data/.github/workflows/coverage.yaml +21 -0
  5. data/.github/workflows/lint.yaml +13 -0
  6. data/.github/workflows/test.yml +20 -0
  7. data/.gitignore +14 -0
  8. data/.rubocop.yml +96 -0
  9. data/.rubocop_todo.yml +113 -0
  10. data/CHANGELOG.md +868 -0
  11. data/Gemfile +11 -0
  12. data/LICENSE +29 -0
  13. data/README.md +38 -0
  14. data/ROADMAP.md +30 -0
  15. data/Rakefile +118 -0
  16. data/bcdice.gemspec +27 -0
  17. data/bin/repl.rb +21 -0
  18. data/docs/README.txt +2028 -0
  19. data/docs/dicebot_sort_key.md +72 -0
  20. data/docs/how_to_make_dicebot.md +453 -0
  21. data/lib/bcdice.rb +8 -0
  22. data/lib/bcdice/arithmetic_evaluator.rb +167 -0
  23. data/lib/bcdice/base.rb +423 -0
  24. data/lib/bcdice/command_parser.rb +242 -0
  25. data/lib/bcdice/common_command.rb +23 -0
  26. data/lib/bcdice/common_command/add_dice.rb +54 -0
  27. data/lib/bcdice/common_command/add_dice/node.rb +488 -0
  28. data/lib/bcdice/common_command/add_dice/parser.rb +282 -0
  29. data/lib/bcdice/common_command/add_dice/randomizer.rb +48 -0
  30. data/lib/bcdice/common_command/barabara_dice.rb +57 -0
  31. data/lib/bcdice/common_command/calc.rb +39 -0
  32. data/lib/bcdice/common_command/choice.rb +35 -0
  33. data/lib/bcdice/common_command/d66_dice.rb +63 -0
  34. data/lib/bcdice/common_command/reroll_dice.rb +190 -0
  35. data/lib/bcdice/common_command/upper_dice.rb +165 -0
  36. data/lib/bcdice/common_command/version.rb +26 -0
  37. data/lib/bcdice/dice_table.rb +8 -0
  38. data/lib/bcdice/dice_table/chain_table.rb +33 -0
  39. data/lib/bcdice/dice_table/d66_grid_table.rb +26 -0
  40. data/lib/bcdice/dice_table/d66_range_table.rb +26 -0
  41. data/lib/bcdice/dice_table/d66_table.rb +34 -0
  42. data/lib/bcdice/dice_table/range_table.rb +267 -0
  43. data/lib/bcdice/dice_table/roll_result.rb +43 -0
  44. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +32 -0
  45. data/lib/bcdice/dice_table/table.rb +35 -0
  46. data/lib/bcdice/enum.rb +15 -0
  47. data/lib/bcdice/format.rb +36 -0
  48. data/lib/bcdice/game_system.rb +187 -0
  49. data/lib/bcdice/game_system/AFF2e.rb +141 -0
  50. data/lib/bcdice/game_system/AceKillerGene.rb +55 -0
  51. data/lib/bcdice/game_system/Airgetlamh.rb +117 -0
  52. data/lib/bcdice/game_system/Alsetto.rb +124 -0
  53. data/lib/bcdice/game_system/Alshard.rb +27 -0
  54. data/lib/bcdice/game_system/AlterRaise.rb +282 -0
  55. data/lib/bcdice/game_system/Amadeus.rb +622 -0
  56. data/lib/bcdice/game_system/Amadeus_Korean.rb +501 -0
  57. data/lib/bcdice/game_system/AnimaAnimus.rb +96 -0
  58. data/lib/bcdice/game_system/Arianrhod.rb +50 -0
  59. data/lib/bcdice/game_system/ArsMagica.rb +149 -0
  60. data/lib/bcdice/game_system/Avandner.rb +101 -0
  61. data/lib/bcdice/game_system/BBN.rb +143 -0
  62. data/lib/bcdice/game_system/BadLife.rb +435 -0
  63. data/lib/bcdice/game_system/BarnaKronika.rb +188 -0
  64. data/lib/bcdice/game_system/BattleTech.rb +530 -0
  65. data/lib/bcdice/game_system/BeastBindTrinity.rb +348 -0
  66. data/lib/bcdice/game_system/BeginningIdol.rb +2527 -0
  67. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +2378 -0
  68. data/lib/bcdice/game_system/BladeOfArcana.rb +252 -0
  69. data/lib/bcdice/game_system/BlindMythos.rb +460 -0
  70. data/lib/bcdice/game_system/BloodCrusade.rb +423 -0
  71. data/lib/bcdice/game_system/BloodMoon.rb +213 -0
  72. data/lib/bcdice/game_system/CardRanker.rb +249 -0
  73. data/lib/bcdice/game_system/ChaosFlare.rb +181 -0
  74. data/lib/bcdice/game_system/Chill.rb +163 -0
  75. data/lib/bcdice/game_system/Chill3.rb +52 -0
  76. data/lib/bcdice/game_system/CodeLayerd.rb +132 -0
  77. data/lib/bcdice/game_system/ColossalHunter.rb +569 -0
  78. data/lib/bcdice/game_system/CrashWorld.rb +81 -0
  79. data/lib/bcdice/game_system/Cthulhu.rb +252 -0
  80. data/lib/bcdice/game_system/Cthulhu7th.rb +767 -0
  81. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +386 -0
  82. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +383 -0
  83. data/lib/bcdice/game_system/CthulhuTech.rb +263 -0
  84. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +243 -0
  85. data/lib/bcdice/game_system/Cthulhu_Korean.rb +240 -0
  86. data/lib/bcdice/game_system/DarkBlaze.rb +207 -0
  87. data/lib/bcdice/game_system/DarkDaysDrive.rb +425 -0
  88. data/lib/bcdice/game_system/DarkSouls.rb +91 -0
  89. data/lib/bcdice/game_system/DeadlineHeroes.rb +583 -0
  90. data/lib/bcdice/game_system/DemonParasite.rb +524 -0
  91. data/lib/bcdice/game_system/DetatokoSaga.rb +310 -0
  92. data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +310 -0
  93. data/lib/bcdice/game_system/DiceBot.rb +17 -0
  94. data/lib/bcdice/game_system/DiceOfTheDead.rb +111 -0
  95. data/lib/bcdice/game_system/DoubleCross.rb +373 -0
  96. data/lib/bcdice/game_system/DoubleCross_Korean.rb +371 -0
  97. data/lib/bcdice/game_system/Dracurouge.rb +1856 -0
  98. data/lib/bcdice/game_system/Dracurouge_Korean.rb +310 -0
  99. data/lib/bcdice/game_system/DungeonsAndDragons.rb +19 -0
  100. data/lib/bcdice/game_system/EarthDawn.rb +225 -0
  101. data/lib/bcdice/game_system/EarthDawn3.rb +275 -0
  102. data/lib/bcdice/game_system/EarthDawn4.rb +272 -0
  103. data/lib/bcdice/game_system/EclipsePhase.rb +51 -0
  104. data/lib/bcdice/game_system/Elric.rb +36 -0
  105. data/lib/bcdice/game_system/Elysion.rb +1213 -0
  106. data/lib/bcdice/game_system/EmbryoMachine.rb +227 -0
  107. data/lib/bcdice/game_system/EndBreaker.rb +132 -0
  108. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +27 -0
  109. data/lib/bcdice/game_system/Fiasco.rb +123 -0
  110. data/lib/bcdice/game_system/Fiasco_Korean.rb +122 -0
  111. data/lib/bcdice/game_system/FilledWith.rb +1543 -0
  112. data/lib/bcdice/game_system/FullMetalPanic.rb +27 -0
  113. data/lib/bcdice/game_system/FutariSousa.rb +994 -0
  114. data/lib/bcdice/game_system/FutariSousa_Korean.rb +994 -0
  115. data/lib/bcdice/game_system/Garako.rb +559 -0
  116. data/lib/bcdice/game_system/GardenOrder.rb +451 -0
  117. data/lib/bcdice/game_system/GehennaAn.rb +136 -0
  118. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +120 -0
  119. data/lib/bcdice/game_system/GoblinSlayer.rb +168 -0
  120. data/lib/bcdice/game_system/GoldenSkyStories.rb +77 -0
  121. data/lib/bcdice/game_system/Gorilla.rb +44 -0
  122. data/lib/bcdice/game_system/GranCrest.rb +518 -0
  123. data/lib/bcdice/game_system/Gundog.rb +52 -0
  124. data/lib/bcdice/game_system/GundogRevised.rb +294 -0
  125. data/lib/bcdice/game_system/GundogZero.rb +261 -0
  126. data/lib/bcdice/game_system/Gurps.rb +403 -0
  127. data/lib/bcdice/game_system/GurpsFW.rb +2330 -0
  128. data/lib/bcdice/game_system/HarnMaster.rb +208 -0
  129. data/lib/bcdice/game_system/HatsuneMiku.rb +706 -0
  130. data/lib/bcdice/game_system/Hieizan.rb +48 -0
  131. data/lib/bcdice/game_system/HouraiGakuen.rb +270 -0
  132. data/lib/bcdice/game_system/HuntersMoon.rb +503 -0
  133. data/lib/bcdice/game_system/Illusio.rb +89 -0
  134. data/lib/bcdice/game_system/InfiniteFantasia.rb +51 -0
  135. data/lib/bcdice/game_system/Insane.rb +822 -0
  136. data/lib/bcdice/game_system/Insane_Korean.rb +773 -0
  137. data/lib/bcdice/game_system/IthaWenUa.rb +38 -0
  138. data/lib/bcdice/game_system/JamesBond.rb +45 -0
  139. data/lib/bcdice/game_system/Kamigakari.rb +394 -0
  140. data/lib/bcdice/game_system/Kamigakari_Korean.rb +428 -0
  141. data/lib/bcdice/game_system/KanColle.rb +938 -0
  142. data/lib/bcdice/game_system/KemonoNoMori.rb +258 -0
  143. data/lib/bcdice/game_system/KillDeathBusiness.rb +1420 -0
  144. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +1510 -0
  145. data/lib/bcdice/game_system/KurayamiCrying.rb +49 -0
  146. data/lib/bcdice/game_system/LiveraDoll.rb +375 -0
  147. data/lib/bcdice/game_system/LogHorizon.rb +3567 -0
  148. data/lib/bcdice/game_system/LogHorizon_Korean.rb +1407 -0
  149. data/lib/bcdice/game_system/LostRecord.rb +30 -0
  150. data/lib/bcdice/game_system/LostRoyal.rb +242 -0
  151. data/lib/bcdice/game_system/MagicaLogia.rb +1148 -0
  152. data/lib/bcdice/game_system/MeikyuDays.rb +415 -0
  153. data/lib/bcdice/game_system/MeikyuKingdom.rb +466 -0
  154. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +269 -0
  155. data/lib/bcdice/game_system/MetalHead.rb +249 -0
  156. data/lib/bcdice/game_system/MetalHeadExtream.rb +917 -0
  157. data/lib/bcdice/game_system/MetallicGuardian.rb +31 -0
  158. data/lib/bcdice/game_system/MonotoneMuseum.rb +354 -0
  159. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +304 -0
  160. data/lib/bcdice/game_system/Nechronica.rb +211 -0
  161. data/lib/bcdice/game_system/Nechronica_Korean.rb +160 -0
  162. data/lib/bcdice/game_system/NeverCloud.rb +74 -0
  163. data/lib/bcdice/game_system/NightWizard.rb +231 -0
  164. data/lib/bcdice/game_system/NightWizard3rd.rb +24 -0
  165. data/lib/bcdice/game_system/NightmareHunterDeep.rb +117 -0
  166. data/lib/bcdice/game_system/NinjaSlayer.rb +274 -0
  167. data/lib/bcdice/game_system/NjslyrBattle.rb +54 -0
  168. data/lib/bcdice/game_system/Nuekagami.rb +293 -0
  169. data/lib/bcdice/game_system/OneWayHeroics.rb +134 -0
  170. data/lib/bcdice/game_system/OracleEngine.rb +265 -0
  171. data/lib/bcdice/game_system/OrgaRain.rb +77 -0
  172. data/lib/bcdice/game_system/Oukahoushin3rd.rb +162 -0
  173. data/lib/bcdice/game_system/Paradiso.rb +323 -0
  174. data/lib/bcdice/game_system/Paranoia.rb +64 -0
  175. data/lib/bcdice/game_system/ParanoiaRebooted.rb +109 -0
  176. data/lib/bcdice/game_system/ParasiteBlood.rb +231 -0
  177. data/lib/bcdice/game_system/Pathfinder.rb +21 -0
  178. data/lib/bcdice/game_system/Peekaboo.rb +324 -0
  179. data/lib/bcdice/game_system/Pendragon.rb +39 -0
  180. data/lib/bcdice/game_system/PhantasmAdventure.rb +73 -0
  181. data/lib/bcdice/game_system/Postman.rb +185 -0
  182. data/lib/bcdice/game_system/PulpCthulhu.rb +184 -0
  183. data/lib/bcdice/game_system/Raisondetre.rb +171 -0
  184. data/lib/bcdice/game_system/RecordOfLodossWar.rb +58 -0
  185. data/lib/bcdice/game_system/RecordOfSteam.rb +149 -0
  186. data/lib/bcdice/game_system/RokumonSekai2.rb +110 -0
  187. data/lib/bcdice/game_system/RoleMaster.rb +24 -0
  188. data/lib/bcdice/game_system/RuneQuest.rb +47 -0
  189. data/lib/bcdice/game_system/RyuTuber.rb +266 -0
  190. data/lib/bcdice/game_system/Ryutama.rb +199 -0
  191. data/lib/bcdice/game_system/SRS.rb +348 -0
  192. data/lib/bcdice/game_system/SamsaraBallad.rb +111 -0
  193. data/lib/bcdice/game_system/Satasupe.rb +1173 -0
  194. data/lib/bcdice/game_system/ScreamHighSchool.rb +128 -0
  195. data/lib/bcdice/game_system/SevenFortressMobius.rb +34 -0
  196. data/lib/bcdice/game_system/ShadowRun.rb +26 -0
  197. data/lib/bcdice/game_system/ShadowRun4.rb +49 -0
  198. data/lib/bcdice/game_system/ShadowRun5.rb +80 -0
  199. data/lib/bcdice/game_system/SharedFantasia.rb +69 -0
  200. data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +85 -0
  201. data/lib/bcdice/game_system/ShinkuuGakuen.rb +506 -0
  202. data/lib/bcdice/game_system/ShinobiGami.rb +680 -0
  203. data/lib/bcdice/game_system/ShoujoTenrankai.rb +677 -0
  204. data/lib/bcdice/game_system/Skynauts.rb +324 -0
  205. data/lib/bcdice/game_system/SteamPunkers.rb +485 -0
  206. data/lib/bcdice/game_system/StellarKnights.rb +856 -0
  207. data/lib/bcdice/game_system/SterileLife.rb +452 -0
  208. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +103 -0
  209. data/lib/bcdice/game_system/StratoShout.rb +316 -0
  210. data/lib/bcdice/game_system/StratoShout_Korean.rb +314 -0
  211. data/lib/bcdice/game_system/Strave.rb +223 -0
  212. data/lib/bcdice/game_system/SwordWorld.rb +491 -0
  213. data/lib/bcdice/game_system/SwordWorld2_0.rb +295 -0
  214. data/lib/bcdice/game_system/SwordWorld2_5.rb +121 -0
  215. data/lib/bcdice/game_system/TherapieSein.rb +93 -0
  216. data/lib/bcdice/game_system/TokumeiTenkousei.rb +96 -0
  217. data/lib/bcdice/game_system/TokyoGhostResearch.rb +122 -0
  218. data/lib/bcdice/game_system/TokyoNova.rb +19 -0
  219. data/lib/bcdice/game_system/Torg.rb +364 -0
  220. data/lib/bcdice/game_system/Torg1_5.rb +139 -0
  221. data/lib/bcdice/game_system/TorgEternity.rb +414 -0
  222. data/lib/bcdice/game_system/TrinitySeven.rb +364 -0
  223. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +287 -0
  224. data/lib/bcdice/game_system/TwilightGunsmoke.rb +527 -0
  225. data/lib/bcdice/game_system/Utakaze.rb +153 -0
  226. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +132 -0
  227. data/lib/bcdice/game_system/Villaciel.rb +555 -0
  228. data/lib/bcdice/game_system/WARPS.rb +33 -0
  229. data/lib/bcdice/game_system/WaresBlade.rb +34 -0
  230. data/lib/bcdice/game_system/Warhammer.rb +336 -0
  231. data/lib/bcdice/game_system/WitchQuest.rb +275 -0
  232. data/lib/bcdice/game_system/WorldOfDarkness.rb +135 -0
  233. data/lib/bcdice/game_system/YankeeYogSothoth.rb +440 -0
  234. data/lib/bcdice/game_system/YearZeroEngine.rb +134 -0
  235. data/lib/bcdice/game_system/ZettaiReido.rb +142 -0
  236. data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +383 -0
  237. data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +89 -0
  238. data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +196 -0
  239. data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +223 -0
  240. data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +214 -0
  241. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +610 -0
  242. data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +117 -0
  243. data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +380 -0
  244. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +184 -0
  245. data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +417 -0
  246. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +912 -0
  247. data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +121 -0
  248. data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +67 -0
  249. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +166 -0
  250. data/lib/bcdice/game_system/one_way_heroics/tables.rb +668 -0
  251. data/lib/bcdice/loader.rb +37 -0
  252. data/lib/bcdice/normalize.rb +38 -0
  253. data/lib/bcdice/preprocessor.rb +87 -0
  254. data/lib/bcdice/randomizer.rb +137 -0
  255. data/lib/bcdice/repl.rb +155 -0
  256. data/lib/bcdice/user_defined_dice_table.rb +153 -0
  257. data/lib/bcdice/version.rb +3 -0
  258. metadata +304 -0
@@ -0,0 +1,371 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/arithmetic_evaluator'
4
+ require 'bcdice/dice_table/range_table'
5
+
6
+ module BCDice
7
+ module GameSystem
8
+ class DoubleCross_Korean < Base
9
+ # ゲームシステムの識別子
10
+ ID = 'DoubleCross:Korean'
11
+
12
+ # ゲームシステム名
13
+ NAME = '더블크로스2nd,3rd'
14
+
15
+ # ゲームシステム名の読みがな
16
+ SORT_KEY = '国際化:Korean:더블크로스'
17
+
18
+ # ダイスボットの使い方
19
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
20
+ ・판정 커맨드(xDX+y@c or xDXc+y)
21
+  "(개수)DX(수정)@(크리티컬치)" 혹은 "(개수)DX(크리티컬치)(수정)" 으로 지정합니다.
22
+  수정치도 붙일 수 있습니다.
23
+  예)10dx  10dx+5@8(OD tool식)  5DX7+7-3(질풍노도식)
24
+ ・각종표
25
+  ・감정표(ET)
26
+   포지티브와 네거티브 양쪽을 굴려, 겉으로 나타는 쪽에 O를 붙여 표시합니다.
27
+   물론 임의로 정하는 부분을 변경해도 괜찮습니다.
28
+ ・D66다이스 있음
29
+ INFO_MESSAGE_TEXT
30
+
31
+ register_prefix(['\d+DX.*', 'ET'])
32
+
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)
103
+
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
137
+ end
138
+
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
242
+
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)
252
+ 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
+ end
307
+
308
+ # 感情表(ポジティブ)
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
338
+
339
+ # 感情表(ネガティブ)
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
369
+ end
370
+ end
371
+ end
@@ -0,0 +1,1856 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class Dracurouge < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'Dracurouge'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'ドラクルージュ'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'とらくるうしゆ'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~MESSAGETEXT
17
+ ・行い判定(DRx+y)
18
+  x:振るサイコロの数(省略時4)、y:渇き修正(省略時0)
19
+  例) DR DR6 DR+1 DR5+2
20
+ ・抗い判定(DRRx)
21
+  x:振るサイコロの数
22
+  例) DRR3
23
+ ・原風景表(ST)、叙勲表(CO)、叙勲後表(CA)、遥か過去表(EP)
24
+  原罪表(OS)、受難表(PN)、近況表(RS)、平和な過去表(PP)
25
+ ・堕落表(CTx) x:渇き (例) CT3
26
+ ・堕落の兆し表(CS)、拡張・堕落の兆し表(ECS)
27
+ ・絆内容決定表(BT)
28
+ ・反応表(RTxy)x:血統、y:道 xy省略で一括表示
29
+  血統 D:ドラク、R:ローゼンブルク、H:ヘルズガルド、M:ダストハイム
30
+     A:アヴァローム N:ノスフェラス、G:ゲイズヴァルト、K:カインシルト
31
+  道 F:領主、G:近衛、R:遍歴、W:賢者、J:狩人、N:夜獣
32
+    E:将軍、B:僧正、H:空駆、K:船長、L:寵童、V:仲立、U:技師、D:博士
33
+    S:星読、G2:後見
34
+  例)RT(一括表示)、RTDF(ドラクの領主)、RTAG2(アヴァロームの後見人)
35
+ ・異端の反応表(HRTxy)x:血統、y:道 xy省略で一括表示
36
+  血統 L:異端卿、V:ヴルコラク、N:ナハツェーラ、K:カルンシュタイン
37
+     G:グリマルキン、S:ストリガ、M:メリュジーヌ、F:フォーン
38
+     H:ホムンクルス、E:エナメルム、S2:サングィナリエ、A:アールヴ
39
+     V2:ヴィーヴル、L2:ルーガルー、A2:アルラウネ、F2:フリッガ
40
+  道 W:野伏、N:流浪、S:密使、H:魔女、F:剣士、X:検体
41
+  例)HRT(一括表示)、HRTVW(ヴルコラクの野伏)、HRTF2X(フリッガの検体)
42
+ ・D66ダイスあり
43
+ MESSAGETEXT
44
+
45
+ def initialize(command)
46
+ super(command)
47
+ @enabled_d66 = true
48
+ @d66_sort_type = D66SortType::NO_SORT
49
+ end
50
+
51
+ def eval_game_system_specific_command(command)
52
+ getConductDiceCommandResult(command) ||
53
+ getResistDiceCommandResult(command) ||
54
+ getReactionDiceCommandResult(command) ||
55
+ getHeresyReactionDiceCommandResult(command) ||
56
+ 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)
66
+ end
67
+
68
+ def getConductDiceCommandResult(command)
69
+ return nil unless command =~ /^DR(\d*)(\+(\d+))?$/
70
+
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
76
+
77
+ gloryDiceCount = getGloryDiceCount(diceList)
78
+ gloryDiceCount.times { diceList << 10 }
79
+
80
+ diceList, calculationProcess = getThirstyAddedResult(diceList, thirstyPoint)
81
+ thirstyPointMarker = (thirstyPoint == 0 ? "" : "+#{thirstyPoint}")
82
+
83
+ result = "(#{command}) > #{diceCount}D6#{thirstyPointMarker} > "
84
+ result += "[ #{calculationProcess} ] > " unless calculationProcess.empty?
85
+ result += "[ #{diceList.join(', ')} ]"
86
+ return result
87
+ end
88
+
89
+ def getGloryDiceCount(diceList)
90
+ oneCount = countTargetDice(diceList, 1)
91
+ sixCount = countTargetDice(diceList, 6)
92
+
93
+ gloryDiceCount = (oneCount / 2) + (sixCount / 2)
94
+ return gloryDiceCount
95
+ end
96
+
97
+ def countTargetDice(diceList, target)
98
+ diceList.select { |i| i == target }.count
99
+ end
100
+
101
+ def getThirstyAddedResult(diceList, thirstyPoint)
102
+ return diceList, '' if thirstyPoint == 0
103
+
104
+ targetIndex = diceList.rindex { |i| i <= 6 }
105
+ return diceList, '' if targetIndex.nil?
106
+
107
+ textList = []
108
+
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
116
+
117
+ diceList[targetIndex] += thirstyPoint
118
+
119
+ return diceList, textList.join(', ')
120
+ end
121
+
122
+ def getResistDiceCommandResult(command)
123
+ return nil unless command =~ /^DRR(\d+)$/
124
+
125
+ diceCount = Regexp.last_match(1).to_i
126
+ diceCount = 4 if diceCount == 0
127
+
128
+ diceList = @randomizer.roll_barabara(diceCount, 6).sort
129
+
130
+ result = "(#{command}) > #{diceCount}D6 > [ #{diceList.join(', ')} ]"
131
+ return result
132
+ end
133
+
134
+ def getReactionDiceCommandResult(command)
135
+ return nil unless command =~ /^RT((\w\d*)(\w\d*))?/
136
+
137
+ typeText1 = Regexp.last_match(2)
138
+ typeText2 = Regexp.last_match(3)
139
+
140
+ name = "反応表"
141
+
142
+ return getReactionText(name, typeText1, typeText2, getReactionInfoBlood, getReactionInfoStyle)
143
+ end
144
+
145
+ def getHeresyReactionDiceCommandResult(command)
146
+ return nil unless command =~ /^HRT((\w\d*)(\w\d*))?/
147
+
148
+ typeText1 = Regexp.last_match(2)
149
+ typeText2 = Regexp.last_match(3)
150
+
151
+ name = "異端の反応表"
152
+
153
+ return getReactionText(name, typeText1, typeText2, getHeresyReactionInfoBlood, getHeresyReactionInfoStyle)
154
+ end
155
+
156
+ def getReactionText(name, typeText1, typeText2, infos1, infos2)
157
+ return nil unless checkTypeText(typeText1, infos1)
158
+ return nil unless checkTypeText(typeText2, infos2)
159
+
160
+ ten_value = @randomizer.roll_once(6)
161
+ one_value = @randomizer.roll_once(6)
162
+ number = "#{ten_value}#{one_value}"
163
+
164
+ isBefore = (ten_value < 4)
165
+ infos = isBefore ? infos1 : infos2
166
+
167
+ typeText = (isBefore ? typeText1 : typeText2)
168
+
169
+ index = (one_value - 1) + (isBefore ? (ten_value - 1) : (ten_value - 4)) * 6
170
+ debug("index", index)
171
+
172
+ resultText = ''
173
+ if typeText.nil?
174
+ resultText = getReactionTextFull(infos, index)
175
+ else
176
+ info = infos.find { |i| i[:type] == typeText }
177
+ return nil if info.nil?
178
+
179
+ resultText = getReactionTex(info, index)
180
+ end
181
+
182
+ return "#{name}(#{number}) > #{resultText}"
183
+ end
184
+
185
+ def checkTypeText(typeText, infos)
186
+ return true if typeText.nil?
187
+
188
+ keys = infos.collect { |i| i[:type] }
189
+ return keys.include?(typeText)
190
+ end
191
+
192
+ def getReactionTextFull(infos, index)
193
+ resultTexts = []
194
+
195
+ infos.each do |info|
196
+ resultTexts << getReactionTex(info, index)
197
+ end
198
+
199
+ return resultTexts.join('/')
200
+ end
201
+
202
+ def getReactionTex(info, index)
203
+ typeName = info[:name]
204
+ text = info[:table][index]
205
+
206
+ return "#{typeName}:#{text}"
207
+ end
208
+
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
+ def getCorruptionDiceCommandResult(command)
1257
+ return nil unless command =~ /^CT(\d+)$/
1258
+
1259
+ modify = Regexp.last_match(1).to_i
1260
+
1261
+ name = "堕落表"
1262
+ table =
1263
+ [
1264
+ [0, "あなたは完全に堕落した。この時点であなたは[壁の華]となり、人狼、黒山羊、夜獣卿のいずれかとなる。その[幕]の終了後にセッションから退場する。247ページの「消滅・完全なる堕落」も参照すること。"],
1265
+ [1, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を2回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"],
1266
+ [3, "あなたの肉体は精神にふさわしい変異を起こす……。「堕落の兆し表」を1回振って特徴を得る。このセッション終了後、【道】を「夜獣」にすること。(既に「夜獣」なら【道】は変わらない)"],
1267
+ [5, "気高き心もやがて堕ちる。あなたが今、最も多くルージュを持つ対象へのルージュを全て失い、同じだけのノワールを得る。ノワールを得た結果【渇き】が3点以上になった場合は、再度堕落表を振ること。"],
1268
+ [6, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール2点を獲得する。"],
1269
+ [7, "内なる獣の息遣い……あなたが今【渇き】を得たノワールの対象へ、任意のノワール1点を獲得する。"],
1270
+ [8, "荒ぶる心を鎮める……幸いにも何も起きなかった。"],
1271
+ [99, "あなたは荒れ狂う感情を抑え、己を律した! 【渇き】が1減少する!"],
1272
+ ]
1273
+
1274
+ dice_list = @randomizer.roll_barabara(2, 6)
1275
+ number = dice_list.sum()
1276
+ number_text = dice_list.join(",")
1277
+
1278
+ index = (number - modify)
1279
+ debug('index', index)
1280
+ text = get_table_by_number(index, table)
1281
+
1282
+ return "2D6[#{number_text}]-#{modify} > #{name}(#{index}) > #{text}"
1283
+ end
1284
+
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)
1400
+
1401
+ return "#{name}(#{index}) > #{title}:#{text} > #{yearTitle}:#{yearText} > #{calculateText} > #{yearTitle}:#{year}年"
1402
+ end
1403
+
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})"
1407
+
1408
+ year = ArithmeticEvaluator.eval(text.gsub(/×/, "*"))
1409
+ return year, text
1410
+ end
1411
+
1412
+ def getD6xResult(count, dice6Count)
1413
+ total = 0
1414
+
1415
+ count.times do |_i|
1416
+ number = 0
1417
+
1418
+ dice6Count.times do |_i|
1419
+ number *= 10
1420
+ dice = @randomizer.roll_once(6)
1421
+ number += dice
1422
+ end
1423
+
1424
+ total += number
1425
+ 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
+ end
1559
+
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
1731
+ end
1732
+
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
1775
+
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)
1854
+ end
1855
+ end
1856
+ end