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,423 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class BloodCrusade < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'BloodCrusade'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'ブラッド・クルセイド'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'ふらつとくるせいと'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
+ ・各種表
18
+  ・関係属性表 RT
19
+  ・シーン表 ST
20
+  ・先制判定指定特技表 IST
21
+  ・身体部位決定表   BRT
22
+  ・自信幸福表     CHT
23
+  ・地位幸福表     SHT
24
+  ・日常幸福表     DHT
25
+  ・人脈幸福表     LHT
26
+  ・退路幸福表     EHT
27
+  ・ランダム全特技表  AST
28
+  ・軽度狂気表     MIT
29
+  ・重度狂気表     SIT
30
+  ・戦場シーン表    BDST
31
+  ・夢シーン表     DMST
32
+  ・田舎シーン表    CYST
33
+  ・学校シーン表    SLST
34
+  ・館シーン表     MNST
35
+  ・時間経過表(10代~60代、半吸血鬼)TD1T~TD6T、TDHT
36
+ ・D66ダイスあり
37
+ INFO_MESSAGE_TEXT
38
+
39
+ def initialize(command)
40
+ super(command)
41
+
42
+ @sort_add_dice = true
43
+ @enabled_d66 = true
44
+ @d66_sort_type = D66SortType::ASC
45
+ @round_type = RoundType::CEIL # 端数切り上げに設定
46
+ end
47
+
48
+ def check_2D6(total, dice_total, _dice_list, cmp_op, target)
49
+ return '' if target == '?'
50
+ return '' unless cmp_op == :>=
51
+
52
+ if dice_total <= 2
53
+ " > ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る)"
54
+ elsif dice_total >= 12
55
+ " > スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6)"
56
+ elsif total >= target
57
+ " > 成功"
58
+ else
59
+ " > 失敗"
60
+ end
61
+ end
62
+
63
+ def eval_game_system_specific_command(command)
64
+ roll_tables(command, TABLES)
65
+ end
66
+
67
+ TABLES_WITH_BLOOD_MOON = {
68
+ "ST" => DiceTable::Table.new(
69
+ "シーン表",
70
+ "2D6",
71
+ [
72
+ "どこまでも広がる荒野。風が吹き抜けていく。",
73
+ "血まみれの惨劇の跡。いったい誰がこんなことを?",
74
+ "都市の地下。かぼそい明かりがコンクリートを照らす。",
75
+ "豪華な調度が揃えられた室内。くつろぎの空間を演出。",
76
+ "普通の道端。様々な人が道を行き交う。",
77
+ "明るく浮かぶ月の下。暴力の気配が満ちていく。",
78
+ "打ち捨てられた廃墟。荒れ果てた景色に心も荒む。",
79
+ "生活の様子が色濃く残る部屋の中。誰の部屋だろう?",
80
+ "喧しい飲食店。騒ぐ人々に紛れつつ自体は進行する。",
81
+ "ざわめく木立。踊る影。",
82
+ "高い塔の上。都市を一望できる。"
83
+ ]
84
+ ),
85
+ "IST" => DiceTable::Table.new(
86
+ "先制判定指定特技表",
87
+ "1D6",
88
+ [
89
+ "《自信/社会5》",
90
+ "《地位/社会9》",
91
+ "《日常/環境3》",
92
+ "《人脈/環境9》",
93
+ "《退路/環境11》",
94
+ "《心臓/胴部7》"
95
+ ]
96
+ ),
97
+ "BRT" => DiceTable::Table.new(
98
+ "身体部位決定表",
99
+ "2D6",
100
+ [
101
+ "《脳》",
102
+ "《利き腕》",
103
+ "《利き脚》",
104
+ "《消化器》",
105
+ "《感覚器》",
106
+ "《攻撃したキャラクターの任意》",
107
+ "《口》",
108
+ "《呼吸器》",
109
+ "《逆脚》",
110
+ "《逆腕》",
111
+ "《心臓》"
112
+ ]
113
+ ),
114
+ "AST" => DiceTable::ChainTable.new(
115
+ "ランダム全特技表",
116
+ "1D6",
117
+ [
118
+ DiceTable::Table.new(
119
+ "社会",
120
+ "2D6",
121
+ ["怯える", "脅す", "考えない", "自信", "黙る", "伝える", "だます", "地位", "笑う", "話す", "怒る"]
122
+ ),
123
+ DiceTable::Table.new(
124
+ "頭部",
125
+ "2D6",
126
+ ["聴く", "感覚器", "見る", "反応", "考える", "脳", "閃く", "予感", "叫ぶ", "口", "噛む"]
127
+ ),
128
+ DiceTable::Table.new(
129
+ "腕部",
130
+ "2D6",
131
+ ["締める", "殴る", "斬る", "利き腕", "撃つ", "操作", "刺す", "逆腕", "振る", "掴む", "投げる"]
132
+ ),
133
+ DiceTable::Table.new(
134
+ "胴部",
135
+ "2D6",
136
+ ["塞ぐ", "呼吸器", "止める", "受ける", "測る", "心臓", "逸らす", "かわす", "耐える", "消化器", "落ちる"]
137
+ ),
138
+ DiceTable::Table.new(
139
+ "脚部",
140
+ "2D6",
141
+ ["走る", "迫る", "蹴る", "利き脚", "跳ぶ", "仕掛ける", "踏む", "逆脚", "這う", "伏せる", "歩く"]
142
+ ),
143
+ DiceTable::Table.new(
144
+ "環境",
145
+ "2D6",
146
+ ["休む", "日常", "隠れる", "待つ", "現れる", "人脈", "捕らえる", "開ける", "逃げる", "退路", "休まない"]
147
+ )
148
+ ]
149
+ ),
150
+ "MIT" => DiceTable::Table.new(
151
+ "軽度狂気表",
152
+ "1D6",
153
+ [
154
+ "【誇大妄想】(判定に失敗するたびに【感情】が1増加する。)",
155
+ "【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)",
156
+ "【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【感情】が6増加する。)",
157
+ "【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)",
158
+ "【不死幻想】(自分が受けるダメージが全て1増加する。)",
159
+ "【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。)"
160
+ ]
161
+ ),
162
+ "SIT" => DiceTable::Table.new(
163
+ "重度狂気表",
164
+ "1D6",
165
+ [
166
+ "【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)",
167
+ "【見えない友達】(自分の関わる「関係を深める」判定にマイナス3の修正がつく。)",
168
+ "【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)",
169
+ "【陰謀論】(「幸福を味わう」判定にマイナス3の修正がつく。)",
170
+ "【指令受信】(追跡フェイズBでの自分の行動は、可能な範囲でGMが決定する。)",
171
+ "【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)"
172
+ ]
173
+ )
174
+ }.freeze
175
+
176
+ TABLES = {
177
+ "RT" => DiceTable::Table.new(
178
+ "関係属性表",
179
+ "1D6",
180
+ [
181
+ "共感/不信",
182
+ "友情/忌避",
183
+ "愛情/嫌悪",
184
+ "忠義/侮蔑",
185
+ "憧憬/引け目",
186
+ "保護欲/殺意"
187
+ ]
188
+ ),
189
+ "CHT" => DiceTable::Table.new(
190
+ "自信幸福表",
191
+ "1D6",
192
+ [
193
+ "【戦闘能力】あなたは吸血鬼狩人としての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。",
194
+ "【美貌】あなたは自分が美しいことを知っています。他人もあなたを美しいと思っているはず。鏡を見るたびに、あなたは自分の美しさに惚れ惚れしてしまいます。",
195
+ "【血筋】あなたは名家の血を引く者です。祖先の栄光を背負い、家門の名誉を更に増すために、偉業をなす運命にあります。または、普通にいい家族に恵まれているのかもしれません。",
196
+ "【趣味の技量】あなたは趣味の分野では第一人者です。必ずしも名前が知れ渡っているわけではありませんが、どんな相手にも負けない自信があります。どんな趣味かは自由です。",
197
+ "【仕事の技量】職場で最も有能なもの、それがあなたです。誰もあなたの仕事の量とクオリティを超えられません。どんな仕事をしているかは自由に決めて構いません。",
198
+ "【長生き】あなたは吸血鬼狩人としてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。"
199
+ ]
200
+ ),
201
+ "SHT" => DiceTable::Table.new(
202
+ "地位幸福表",
203
+ "1D6",
204
+ [
205
+ "【役職】あなたは職場、あるいは吸血鬼狩人の組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。",
206
+ "【英雄】あなたはかつて偉業を成し遂げたことがあり、誰でもそれを知っています。少々くすぐったい気もしますが、英雄として扱われるのは悪くありません。",
207
+ "【お金持ち】あなたには財産があります。それも生半可な財産ではなく、人が敬意を払うだけの財産です。あなたはお金に困ることはなく、その幸せを知っています",
208
+ "【特権階級】あなたは国が定める特権階級の一員です。王族や貴族をイメージするとわかりやすいでしょう。あなたは、どこに行っても、それ相応の扱いを受けることになります。",
209
+ "【人格者】誰もが認める人格者としての評判を持っているため、あなたのところには悩みを抱えた人々が引きも切らずに押しかけてきます。大変ですが、ちょっと楽しい",
210
+ "【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります"
211
+ ]
212
+ ),
213
+ "DHT" => DiceTable::Table.new(
214
+ "日常幸福表",
215
+ "1D6",
216
+ [
217
+ "【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。",
218
+ "【職場】あなたは仕事が楽しくて仕方ありません。意義ある仕事で払いも悪くなく、チームの仲間はみんないい奴ばかりです。残業は……ちょっとあるかもしれません。",
219
+ "【行きつけの店】あなたには休みの日や職場帰りに立ち寄る行きつけの店があり、そこにいる時間は安らぎを感じることができます。店員とも顔見知りです。",
220
+ "【ベッド】あなたは動物を飼っています。よく懐いた可愛い、またはかっこいい動物です。一緒に過ごす時間はあなたに幸せを感じさせてくれます",
221
+ "【親しい隣人】おとなりさんやお向かいさん。よくお土産を渡したり、小さな子供を預かったりするような仲です。風邪を引いたときには、家事を手伝ってくれることも。",
222
+ "【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。"
223
+ ]
224
+ ),
225
+ "LHT" => DiceTable::Table.new(
226
+ "人脈幸福表",
227
+ "1D6",
228
+ [
229
+ "【理解ある家族】あなたの家族は、あなたが吸血鬼狩人であることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。",
230
+ "【有能な友人】あなたの友人は、吸血鬼の存在とあなたの本当の仕事を知っています。そして、直接戦うだけの技量はないものの、あなたの探索をサポートしてくれます。",
231
+ "【愛する恋人】あなたには愛する人がいます。見つめあうだけで、あなたの心は舞い上がり……帰ってきません。この恋人を失うなんて、考えるだけでも恐ろしいことです。",
232
+ "【同志の権力者】あなたには吸血鬼の存在を知りながら、奴らに屈していない権力者との繋がりがあります。様々な違法行為をはたらく際に、役に立つでしょう。",
233
+ "【得がたい師匠】あなたは使う武器を学んだ師匠がいて、それを通して兄弟弟子とも繋がりがあります。過酷な訓練を経て、彼らとあなたには強い絆ができています。",
234
+ "【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。"
235
+ ]
236
+ ),
237
+ "EHT" => DiceTable::Table.new(
238
+ "退路幸福表",
239
+ "1D6",
240
+ [
241
+ "【故郷の町】あなたは生まれ育った街を離れて吸血鬼狩人として活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。",
242
+ "【待っている人】あなたが吸血鬼狩人をやめて、普通の暮らしに戻ることを待ちわびている人がいます。そして、あなたはその思いに応えたいと思っています。",
243
+ "【就職先】あなたは吸血鬼狩りの報酬がなくなっても、すぐに入ることができる就職先があるので安心です。有能なのか過疎地域なのかは分かりませんが。",
244
+ "【配偶者】あなたは吸血鬼狩人をやめたあとに家庭に入ろうと考えています。暮らしの設計はすでに済み、あとは実行するだけなのですが、なかなかそうはいきません。",
245
+ "【大志】あなたが吸血鬼狩人として活動しているのは、やむにやまれぬ事情があるからです。あなたには「本当にやりたかったこと」があり、いつかその夢をかなえる気でいます。",
246
+ "【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。"
247
+ ]
248
+ ),
249
+ "BDST" => DiceTable::Table.new(
250
+ "戦場シーン表",
251
+ "2D6",
252
+ [
253
+ "塹壕。迫撃砲が唸りを上げ、兵士たちの悲鳴が響き渡る。",
254
+ "港の堤防。遠ざかっていく貨物船と、ゆっくりと揺れる鉛色の水面。",
255
+ "一面の草に覆われた野原。膝から下は見えない。",
256
+ "ドーム競技場。中のフィールドよりも外の通路が使われることが多い。",
257
+ "建物と建物の間に、いつの間にかできた空き地。入る道は狭い。",
258
+ "採石場。背景を爆破するのに向いた場所だ。",
259
+ "工場。用途の分からない巨大機械が放置され、雰囲気を盛り上げる。",
260
+ "暗いトンネル。停められた車のヘッドライトだけが頼りだ。",
261
+ "競馬場。人のいない観客席を広告板が見下ろしている。",
262
+ "河川敷。土手の補強用ブロックの規則的な並びが目眩を引き起こす。",
263
+ "司令室。壁の巨大スクリーンでは、何かのカウントダウンが進行中。"
264
+ ]
265
+ ),
266
+ "CYST" => DiceTable::Table.new(
267
+ "田舎シーン表",
268
+ "2D6",
269
+ [
270
+ "誰かの家。庭付き二階建て。部屋は余っている。",
271
+ "山。周囲は木に囲まれ、その向こうの景色は全く見えない。",
272
+ "さびれたバス停。時刻表は錆に覆われていて読むのが難しい。",
273
+ "国道沿いのファミレス。巨大な駐車場にトラックが並ぶ。",
274
+ "大型量販店。服や靴、電化製品などの大きな店。",
275
+ "あぜ道。周りには季節によって違う姿を見せる水田が広がる。",
276
+ "大型ショッピングモール。何でも揃う。",
277
+ "コンビニ。11時で閉まるので夜は開いていないこともある。",
278
+ "野菜の無人販売所。木の棚に人参やジャガイモが置いてある。",
279
+ "廃屋。近所の学生がよく忍び込んで悪さをしているとか。",
280
+ "駅。ホームには屋根がなく、周りには山と森が広がっている。"
281
+ ]
282
+ ),
283
+ "DMST" => DiceTable::Table.new(
284
+ "夢シーン表",
285
+ "2D6",
286
+ [
287
+ "愛しい人を抱きしめていると、いつのまにか別人に変わっていて驚く。",
288
+ "もらった種を鉢に植えて待っていると、人が生えてきた。",
289
+ "ひたすら落下し続けている。一緒に堕ちている人が何か叫んでいる。",
290
+ "誰かをひどく殴りつけている。一発ごとに周りの観客から喝采が上がる。",
291
+ "知らない人ばかりのパーティのなか、必死に知り合いを探している。",
292
+ "何かに追いかけられて暗い道を走っている。そして追いつかれた。",
293
+ "列車に乗って、通り過ぎていく景色を見ている。向かいの客席に誰かがいる。",
294
+ "朝起きて冷蔵庫を開けにいくと、ありえない人物が朝食を作っていた。",
295
+ "なぜか分からないが捕まって留置された。入れられた房には意外な人が。",
296
+ "道端にいた散歩の犬が「これは夢だ」と事情を語り始めた。",
297
+ "みんな死んでしまった。墓の前で座っていると、近づいてくる人影がある。"
298
+ ]
299
+ ),
300
+ "MNST" => DiceTable::Table.new(
301
+ "館シーン表",
302
+ "2D6",
303
+ [
304
+ "地下牢。朽ち果てた骸の手首には鉄枷がはまったままだ。",
305
+ "礼拝堂。何千本もの蝋燭が祭壇を照らす。",
306
+ "厨房。得体の知れない鍋の中で何かが煮えたぎっている。",
307
+ "客間。天蓋付きの寝台は分厚く暖かそうだ。",
308
+ "中庭。ガゼボが配置されているが斬りかかってはいけない。",
309
+ "天井の高い廊下。あちこちに風景画が飾られている。",
310
+ "植木の迷路。動物型の植木が沈黙の咆哮をあげている。",
311
+ "玄関ホール。もちろん二階まで吹き抜けで階段がある。",
312
+ "食堂。果てしなく長いテーブルに椅子がセットされている。",
313
+ "時計塔。巨大な歯車とシャフトの組み合わせが回る。",
314
+ "領主の部屋。重厚なデスクと背後の本棚が威圧的だ。"
315
+ ]
316
+ ),
317
+ "SLST" => DiceTable::Table.new(
318
+ "学校シーン表",
319
+ "2D6",
320
+ [
321
+ "廊下。消防ホースの箱がやたらと赤く目立つ",
322
+ "運動場。石灰と混ざり合った白っぽい砂が積もっている。",
323
+ "保健室。白いカーテンが揺れ、同じく白いベッドで影がおどる。",
324
+ "講堂。ワックスのかかった床が、靴とこすれて甲高い音で鳴る。",
325
+ "人でいっぱいの教室。みな座ってはいるがやかましい。",
326
+ "誰もいない教室。時計の音がやけに大きく響く。",
327
+ "昇降口。いくつも並んだ大きな下駄箱に名前が書かれている。",
328
+ "音楽室。作曲家の肖像画がピアノを見下ろしている。",
329
+ "理科室。薬品と埃の臭いが鼻をつく。",
330
+ "工作室。机の大きな傷には木くずが詰まっている。",
331
+ "開かずの教室。ここは真っ暗だ……出口も入り口もない。"
332
+ ]
333
+ ),
334
+ "TD1T" => DiceTable::Table.new(
335
+ "時間経過表十代",
336
+ "1D6",
337
+ [
338
+ "自分探しの旅に出た。旅先で見つけた新しい自分は、なかなか好きになれるやつだった。\n狩人は主武装のうち一つを変更してもかまわない。変更したらキャラクターの再構築を行う。",
339
+ "吸血鬼狩りを通して、仲間との絆が深まる。\n仲間の狩人から一人を目標として選び、その狩人に対する関係【震度】を2増加させる。\nその状態でセッションを開始する。",
340
+ "自分の将来に不安を覚え、吸血鬼狩り以外のことにチャレンジしてみるものの、どれも中途半端でうまくいかない。\n狩人は「動転」の変調を発動した状態でセッションを開始する。",
341
+ "最近イヤなことがあって、相当不機嫌な状態になっている。\n【モラル】の現在値を0にし、その状態でセッションを開始する。",
342
+ "新しい友達が出来る。\n狩人と同じ年齢の協力者を、狩人のプレイヤーが作成する。レベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。",
343
+ "ちょっと見ないうちに協力者が成長する。\n協力者を獲得している場合、その中から一人を選ぶ。\nその協力者のレベルが1上昇する。\n協力者を獲得していない場合、効果はない。"
344
+ ]
345
+ ),
346
+ "TD2T" => DiceTable::Table.new(
347
+ "時間経過表二十代",
348
+ "1D6",
349
+ [
350
+ "表の仕事や学業で大抜擢され、若き天才として大いに名をはせる。\n【モラル】が3増加し、その状態でセッションを開始する。",
351
+ "人生の新たな楽しみを発見する。\n【幸福】を一つ新たに設定し、獲得できる。\n【人間力】が足りない場合は、入れ替えるか無視すること。",
352
+ "恋人との関係がシリアスなトラブルに変化する。\nまだ解決してはいないが、かなりのストレスだ。\n【感情】が3増加した状態でセッションを開始する。",
353
+ "休暇中に無茶をして大怪我を負ってしまう。\n吸血鬼狩りはタイミングが命なので、怪我をおして参加することになる。\n狩人は「重症」の変調を発動した状態でセッションを開始する。",
354
+ "新しい友達が出来た。\n狩人と五歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。この協力者はセッションに登場し、獲得すれば使用できる。",
355
+ "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。"
356
+ ]
357
+ ),
358
+ "TD3T" => DiceTable::Table.new(
359
+ "時間経過表三十代",
360
+ "1D6",
361
+ [
362
+ "ある種の慎重さを身につけ、常に狩りの準備を怠らないようになる。\n再殺武装から一つを選び、それをすでに獲得した状態でセッションを開始する。",
363
+ "拠点の運営に協力し、管理を最適化して簡単に利用できるようにした。\n狩人側の拠点を一つ選び、その必要レベルを1減少させる。\nただし1未満にはならない。",
364
+ "だんだんと責任のある立場になるにつれ、それに縛られているような感慨を覚えるようになる。\n「捕縛」の変調を発動した状態でセッションを開始する。",
365
+ "狩人の噂を聞きつけた協力者が現れ、知己を得る。\n狩人と十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。",
366
+ "軽い生活習慣病を発症する。特に狩りに影響はしない。",
367
+ "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。"
368
+ ]
369
+ ),
370
+ "TD4T" => DiceTable::Table.new(
371
+ "時間経過表四十代",
372
+ "1D6",
373
+ [
374
+ "だんだんと物事に動じず、迷わなくなってきた自分に気づく。\nこのセッションの遭遇シーンでは感情属性を任意に設定できる。",
375
+ "重厚さを増す大人のオーラによって、他の狩人からの尊敬を勝ち取ることに成功する。\n仲間の狩人から目標を一人選び、目標から狩人への関係【深度】を1増加する。",
376
+ "後進の育成に熱心になる。\nこのセッションの間、自分の追跡シーンに自分より若い味方キャラクターが登場している場合、判定にプラス1の修正がつく。\nこの修正は累積しない。",
377
+ "大病発覚。\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。",
378
+ "幅広い人脈の中から吸血鬼の実在に耐えられる人物を見つけ出す。\n狩人と二十歳差までで任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベル1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。",
379
+ "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。"
380
+ ]
381
+ ),
382
+ "TD5T" => DiceTable::Table.new(
383
+ "時間経過表五十代",
384
+ "1D6",
385
+ [
386
+ "長年の経験によって【人間力】がこのセッションの間だけ1増加し、【幸福】も一つ獲得する。\nこの効果は累積せず、すでに【人間力】が5の場合は効果なし。",
387
+ "武器の扱いにトリックを付け加える。\n【ダメージ修正】がこのセッションの間だけ1増加する。この効果は累積しない。",
388
+ "長年酷使されてきた体が、そろそろ狩りについていけなくなる。\n「捕縛」の変調を発動した状態でセッションを開始する。",
389
+ "大病発覚。狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。",
390
+ "協力者を獲得している場合、そのうち一人が爆発的な成長を見せる。\nその協力者のレベルを2上げる。協力者を獲得していない場合、効果はなし。",
391
+ "協力者を獲得している場合、そのうち一人に絡んだイベントが発生していた。\n「転職」「結婚」「挫折」「失恋」「出産」「その他」などから一つを任意に選び、その協力者のレベルを1上げる。\n協力者を獲得していない場合、狩人のイベントとなり効果はない。"
392
+ ]
393
+ ),
394
+ "TD6T" => DiceTable::Table.new(
395
+ "時間経過表六十代",
396
+ "1D6",
397
+ [
398
+ "偉大な狩人の風格を漂わせることに成功。\n狩人のことを慕い、狩人に対して【深度】5の関係があるレベル7の協力者を獲得する。\n望むなら即座に後継者にしてもよい。",
399
+ "吸血鬼の永遠の命に対する憧れが膨れあがってくる。\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\nこの効果は累積しない。",
400
+ "隠退生活に思いをはせ始める。\nもはや狩りにあまり積極的にはなれず、【モラル】の現在値を0にし、その状態でセッションを開始する。",
401
+ "大病発覚。\n狩人に後継者がいる場合、結果フェイズで狩人は死亡する。\n後継者がいない場合、またはセッション中に決別したり裏切られた場合には、奇跡的に回復する。",
402
+ "ふと死期を悟る。次の狩りが最後になるだろう。\nセッションの間、暴走のたびに【激情】を二つ獲得できる。\n結果フェイズで狩人は死亡する。",
403
+ "協力者を獲得している場合、その指導に一年をかける。\n協力者のなかから一人を選び、その協力者のレベルを2上げる。\n協力者を獲得していない場合、のんびりした一年だった。"
404
+ ]
405
+ ),
406
+ "TDHT" => DiceTable::Table.new(
407
+ "時間経過表半吸血鬼",
408
+ "1D6",
409
+ [
410
+ "じっくりと時間をかけて、敵吸血鬼の個性を研究する。\nこのセッションの間、吸血鬼を目標とした「前哨戦」の判定にプラス1の修正がつく。\nこの効果は累積しない。",
411
+ "自分の血の力について考慮を深め、より自由に使いこなせるようになる。\n修得している血戒グループのアビリティから一つを選び、その名前に「+」をつけること。\nそのアビリティの反動はやはり二倍だが、【感情】の増加にすることができる。",
412
+ "吸血鬼の強大な力に対する憧れが膨れあがってくる。\nセッションの間、「誘惑」に対する抵抗判定にマイナス2の修正がつく。\nこの効果は累積しない。",
413
+ "種族がらみのイヤなイベントが起こった。\n【モラル】の現在値を0にし、その状態でセッションを開始する。",
414
+ "吸血鬼に転成を持ちかけられる。\n敵の吸血鬼に対する関係【深度】が1増加し、その状態でセッションを開始する。",
415
+ "新しい友達が出来る。\n任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。"
416
+ ]
417
+ ),
418
+ }.merge(TABLES_WITH_BLOOD_MOON).freeze
419
+
420
+ register_prefix(TABLES.keys)
421
+ end
422
+ end
423
+ end
@@ -0,0 +1,213 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/game_system/BloodCrusade"
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class BloodMoon < Base
8
+ # ゲームシステムの識別子
9
+ ID = 'BloodMoon'
10
+
11
+ # ゲームシステム名
12
+ NAME = 'ブラッド・ムーン'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = 'ふらつとむうん'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
19
+ ・各種表
20
+  ・関係属性表 RAT
21
+  ・導入タイプ決定表(ノーマル) IDT
22
+  ・導入タイプ決定表(ハード込み) ID2T
23
+  ・シーン表 ST
24
+  ・先制判定指定特技表 IST
25
+  ・身体部位決定表   BRT
26
+  ・自信幸福表     CHT
27
+  ・地位幸福表     SHT
28
+  ・日常幸福表     DHT
29
+  ・人脈幸福表     LHT
30
+  ・退路幸福表     EHT
31
+  ・ランダム全特技表  AST
32
+  ・軽度狂気表     MIT
33
+  ・重度狂気表     SIT
34
+ ・D66ダイスあり
35
+ INFO_MESSAGE_TEXT
36
+
37
+ def initialize(command)
38
+ super(command)
39
+
40
+ @sort_add_dice = true
41
+ @enabled_d66 = true
42
+ @d66_sort_type = D66SortType::ASC
43
+ @round_type = RoundType::CEIL # 端数切り上げに設定
44
+ end
45
+
46
+ # ゲーム別成功度判定(2D6)
47
+ def check_2D6(total, dice_total, _dice_list, cmp_op, target)
48
+ return '' if target == '?'
49
+ return '' unless cmp_op == :>=
50
+
51
+ if dice_total <= 2
52
+ return " > ファンブル(【余裕】が 0 に)"
53
+ elsif dice_total >= 12
54
+ return " > スペシャル(【余裕】+3)"
55
+ elsif total >= target
56
+ return " > 成功"
57
+ else
58
+ return " > 失敗"
59
+ end
60
+ end
61
+
62
+ def eval_game_system_specific_command(command)
63
+ return roll_tables(command, TABLES)
64
+ end
65
+
66
+ TABLES = {
67
+ "CHT" => DiceTable::Table.new(
68
+ "自信幸福表",
69
+ "1D6",
70
+ [
71
+ "【戦闘能力】あなたはハンターとしての自分の戦闘能力に自信を持っています。たとえ負けようとも、それは運か相手か仲間が悪かったので、あなたの戦闘能力が低いわけではありません。",
72
+ "【美貌】あなたは自分が美しいことを知っています。他人もあなたを美しいと思っているはず。鏡を見るたびに、あなたは自分の美しさに惚れ惚れしてしまいます。",
73
+ "【血筋】あなたは名家の血を引く者です。祖先の栄光を背負い、家門の名誉を更に増すために、偉業をなす運命にあります。または、普通にいい家族に恵まれているのかもしれません。",
74
+ "【趣味の技量】あなたは趣味の分野では第一人者です。必ずしも名前が知れ渡っているわけではありませんが、どんな相手にも負けない自信があります。どんな趣味かは自由です。",
75
+ "【仕事の技量】職場で最も有能なもの、それがあなたです。誰もあなたの仕事の量とクオリティを超えられません。どんな仕事をしているかは自由に決めて構いません。",
76
+ "【長生き】あなたはハンターとしてかなりの年月を過ごしてきたが、まだ死んでいません。これは誇るべきことです。そこらの若造には、まだまだ負けていません。"
77
+ ]
78
+ ),
79
+ "SHT" => DiceTable::Table.new(
80
+ "地位幸福表",
81
+ "1D6",
82
+ [
83
+ "【役職】あなたは職場、あるいはハンターの組織のなかで高い階級についています。そのため、下にいるものには命令でき、相応の敬意を払われます。",
84
+ "【英雄】あなたはかつて偉業を成し遂げたことがあり、誰でもそれを知っています。少々くすぐったい気もしますが、英雄として扱われるのは悪くありません。",
85
+ "【お金持ち】あなたには財産があります。それも生半可な財産ではなく、人が敬意を払うだけの財産です。あなたはお金に困ることはなく、その幸せを知っています",
86
+ "【特権階級】あなたは国が定める特権階級の一員です。王族や貴族をイメージするとわかりやすいでしょう。あなたは、どこに行っても、それ相応の扱いを受けることになります。",
87
+ "【人格者】誰もが認める人格者としての評判を持っているため、あなたのところには悩みを抱えた人々が引きも切らずに押しかけてきます。大変ですが、ちょっと楽しい",
88
+ "【リーダー】あなたは所属している何らかの組織を率いる立場にあります。会社の社長や、部活動の部長などです。あなたは求められてその地位にあります"
89
+ ]
90
+ ),
91
+ "DHT" => DiceTable::Table.new(
92
+ "日常幸福表",
93
+ "1D6",
94
+ [
95
+ "【家】あなたの家はとても快適な空間です。コストと時間をかけて作り上げられた、あなたが居住するための空間。それはあなたの幸せの源なのです。",
96
+ "【職場】あなたは仕事が楽しくて仕方ありません。意義ある仕事で払いも悪くなく、チームの仲間はみんないい奴ばかりです。残業は……ちょっとあるかもしれません。",
97
+ "【行きつけの店】あなたには休みの日や職場帰りに立ち寄る行きつけの店があり、そこにいる時間は安らぎを感じることができます。店員とも顔見知りです。",
98
+ "【ベッド】あなたは動物を飼っています。よく懐いた可愛い、またはかっこいい動物です。一緒に過ごす時間はあなたに幸せを感じさせてくれます",
99
+ "【親しい隣人】おとなりさんやお向かいさん。よくお土産を渡したり、小さな子供を預かったりするような仲です。風邪を引いたときには、家事を手伝ってくれることも。",
100
+ "【思い出】あなたは昔の思い出を心の支えにしています。何らかの幸せな記憶……それがあれば、この先にどんなつらいことが待っていても大丈夫でしょう。"
101
+ ]
102
+ ),
103
+ "LHT" => DiceTable::Table.new(
104
+ "人脈幸福表",
105
+ "1D6",
106
+ [
107
+ "【理解ある家族】あなたの家族は、あなたがハンターであることを知ったうえで協力してくれます。これがどれほど稀なことかは、仲間に聞けば分かるでしょう。",
108
+ "【有能な友人】あなたの友人は、吸血鬼の存在とあなたの本当の仕事を知っています。そして、直接戦うだけの技量はないものの、あなたの探索をサポートしてくれます。",
109
+ "【愛する恋人】あなたには愛する人がいます。見つめあうだけで、あなたの心は舞い上がり……帰ってきません。この恋人を失うなんて、考えるだけでも恐ろしいことです。",
110
+ "【同志の権力者】あなたには吸血鬼の存在を知りながら、奴らに屈していない権力者との繋がりがあります。様々な違法行為をはたらく際に、役に立つでしょう。",
111
+ "【得がたい師匠】あなたは使う武器を学んだ師匠がいて、それを通して兄弟弟子とも繋がりがあります。過酷な訓練を経て、彼らとあなたには強い絆ができています。",
112
+ "【可愛い子供】あなたには子供がいます。聡明で魅力的、しかも健康な……将来を嘱望される子供です。子供が掴む幸せな未来を思う時、あなたの顔には笑みが広がります。"
113
+ ]
114
+ ),
115
+ "EHT" => DiceTable::Table.new(
116
+ "退路幸福表",
117
+ "1D6",
118
+ [
119
+ "【故郷の町】あなたは生まれ育った街を離れてハンターとして活動しています。いつの日かあの町へ帰る……その思いがあなたを戦いのなかで支えています。",
120
+ "【待っている人】あなたがハンターをやめて、普通の暮らしに戻ることを待ちわびている人がいます。そして、あなたはその思いに応えたいと思っています。",
121
+ "【就職先】あなたは吸血鬼狩りの報酬がなくなっても、すぐに入ることができる就職先があるので安心です。有能なのか過疎地域なのかは分かりませんが。",
122
+ "【配偶者】あなたはハンターをやめたあとに家庭に入ろうと考えています。暮らしの設計はすでに済み、あとは実行するだけなのですが、なかなかそうはいきません。",
123
+ "【大志】あなたがハンターとして活動しているのは、やむにやまれぬ事情があるからです。あなたには「本当にやりたかったこと」があり、いつかその夢をかなえる気でいます。",
124
+ "【空想の王国】あなたには辛いことがあると白昼夢にふける、あるいは物語に没入する癖があり、そのときには非常に幸せな気分になることができます。"
125
+ ]
126
+ ),
127
+ "ID2T" => DiceTable::D66Table.new(
128
+ "導入タイプ決定表(ハード込み)",
129
+ D66SortType::ASC,
130
+ {
131
+ 11 => "依頼\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\n《報酬》 経験値2",
132
+ 12 => "防衛\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\n《報酬》 経験値2",
133
+ 13 => "復讐\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターを無力化すること。\n《報酬》 経験値2",
134
+ 14 => "関係\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値2",
135
+ 15 => "挑戦\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値2",
136
+ 16 => "救済\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\n《報酬》 経験値2",
137
+ 22 => "復調\n 《概要》 ハンターは正気を取り戻し、【狂気】を癒すために戦う。\n《目的》 結果フェイズまでに自分の【狂気】を2減らす。\n《報酬》 経験値2",
138
+ 23 => "撃滅 \n《概要》 ハンターは狩りの対象であるモンスターを倒すために育成されていたり、モンスターに【幸福】を全て破壊された過去を持っている。\n《目的》 モンスターを自分で無力化する。\n《報酬》 経験値6",
139
+ 24 => "競争 \n《概要》 ハンターは自分で決めたライバルに勝つために狩りを行う。\n《目的》 他のプレイヤーのハンターからライバルを一人選ぶ。結果フェイズの段階で、ライバルよりも多くのモンスターとフォロワーを攻撃で倒している事。このライバルはシーンプレイヤーが選択する。\n《報酬》 経験値6",
140
+ 25 => "育成 \n《概要》 ハンターは仲間を成長させるために狩りに出る。\n《目的》 他の狩人すべてに導入タイプの目的を達成させる。\n《報酬》 達成した人数+2の経験値",
141
+ 26 => "窮乏 \n《概要》 ハンターは貧乏なので、金のために狩りをしなければならない。\n《目的》 自分が装備しているアイテムから一つを対象として選ぶ。対象は即座に破壊される。そのうえで、結果フェイズまで対象が書いてあったアイテム欄を使用しない。この対象はシーンプレイヤーが選択する。\n《報酬》 経験値6",
142
+ 33 => "泰然 \n《概要》 ハンターはクールでかっこいい自分のスタイルを守るために狩りをする。\n《目的》 結果フェイズまで【激情】を使用しない。\n《報酬》 経験値8",
143
+ 34 => "対話 \n《概要》 ハンターはモンスターと話をするために追いかけていく。\n《目的》 モンスターに対する関係【深度】が2以上になっている状態で決戦フェイズに入る。\n《報酬》 経験値8",
144
+ 35 => "完勝 \n《概要》 ハンターは今回の敵となるモンスターに勝ったことがある。今度こそ、とどめを刺すのだ。\n《目的》 部位ダメージを受けずにモンスターを無力化する。\n《報酬》 経験値4",
145
+ 36 => "依頼(ハード) \n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】を一つも結果フェイズまで破壊されないこと。対象となるハンターは、ゲームマスターが指定する。\n《報酬》 経験値4",
146
+ 44 => "防衛(ハード) \n《概要》 ハンターは今回の敵となるモンスターに自分の【幸福】を狙われている。モンスターを倒さなければ、【幸福】を守ることはできない。\n《目的》 自分の獲得している【幸福】を一つも結果フェイズで失わないこと。\n《報酬》 経験値4",
147
+ 45 => "復讐(ハード) \n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも、【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターとフォロワー全てを攻撃で倒すこと。自分の攻撃でなくてもかまわない。\n《報酬》 経験値6",
148
+ 46 => "関係(ハード) \n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】5になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値4",
149
+ 55 => "挑戦(ハード) \n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が一度も無力化されずに生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値6",
150
+ 56 => "救済(ハード) \n《概要》 ハンターは今回の敵となるフォロワー全員を救うために戦う。\n《目的》 結果フェイズまでにフォロワー全員を「説得」で無力化する。\n《報酬》 経験値6",
151
+ 66 => "振り直し"
152
+ }
153
+ ),
154
+ "IDT" => DiceTable::Table.new(
155
+ "導入タイプ決定表(ノーマル)",
156
+ "1D6",
157
+ [
158
+ "依頼\n《概要》 ハンターは任意のキャラクターに他のハンターの【幸福】を守るように依頼され、その依頼を受ける。\n《目的》 他のハンターの【幸福】のうち一つを結果フェイズまで破壊されないこと。この【幸福】は、ゲームマスターが指定する。\n《報酬》 経験値2",
159
+ "防衛\n《概要》 ハンターは今回の敵となるモンスターに【幸福】を狙われている。モンスターを倒さなければ【幸福】を守る事は出来ない。\n《目的》 自分の獲得している【幸福】のうち一つを結果フェイズで失わないこと。この【幸福】はゲームマスターが指定する。\n《報酬》 経験値2",
160
+ "復讐\n《概要》 ハンターは今回の敵となるモンスターに負けたことがある。戦闘に敗北したのか、それとも【幸福】を壊されたのか。いずれにせよ、復讐の時だ。\n《目的》 結果フェイズまでにモンスターを無力化すること。\n《報酬》 経験値2",
161
+ "関係\n《概要》 ハンターは、特定の人物が参加しているから、という理由で狩りに参加する。憧れているのかライバルなのか、単に仲がいいのかは自由。\n《目的》 結果フェイズの時点で他のハンターのうち一人との関係が、お互いに【深度】3以上になっていること。対象のハンターはシーンプレイヤーが決定する。\n《報酬》 経験値2",
162
+ "挑戦\n《概要》 ハンターは今回の敵となるモンスターのことをなんらかの理由で知り、自分から戦いに赴く。\n《目的》 結果フェイズまでハンター全員が生き残り、かつ、フォロワーやモンスターに変化していないこと。\n《報酬》 経験値2",
163
+ "救済\n《概要》 ハンターは今回の敵となるフォロワーのうち一人を救うために戦う。\n《目的》 結果フェイズまでに対象のフォロワーを「説得」で無力化する。このフォロワーはシーンプレイヤーが決定する。\n《報酬》 経験値2"
164
+ ]
165
+ ),
166
+ "RAT" => DiceTable::D66Table.new(
167
+ "関係属性表",
168
+ D66SortType::NO_SORT,
169
+ {
170
+ 11 => "愛情",
171
+ 12 => "憧れ",
172
+ 13 => "怒り",
173
+ 14 => "悲しみ",
174
+ 15 => "感謝",
175
+ 16 => "期待",
176
+ 21 => "憧れ",
177
+ 22 => "共感",
178
+ 23 => "恐怖",
179
+ 24 => "嫌悪",
180
+ 25 => "困惑",
181
+ 26 => "罪悪感",
182
+ 31 => "怒り",
183
+ 32 => "恐怖",
184
+ 33 => "殺意",
185
+ 34 => "嫉妬",
186
+ 35 => "憎悪",
187
+ 36 => "忠義",
188
+ 41 => "悲しみ",
189
+ 42 => "嫌悪",
190
+ 43 => "嫉妬",
191
+ 44 => "不信感",
192
+ 45 => "侮蔑",
193
+ 46 => "保護欲",
194
+ 51 => "感謝",
195
+ 52 => "困惑",
196
+ 53 => "憎悪",
197
+ 54 => "侮蔑",
198
+ 55 => "満足感",
199
+ 56 => "友情",
200
+ 61 => "期待",
201
+ 62 => "罪悪感",
202
+ 63 => "忠義",
203
+ 64 => "保護欲",
204
+ 65 => "友情",
205
+ 66 => "喜び"
206
+ }
207
+ ),
208
+ }.merge(BloodCrusade::TABLES_WITH_BLOOD_MOON).freeze
209
+
210
+ register_prefix(TABLES.keys)
211
+ end
212
+ end
213
+ end