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,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class OrgaRain < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'OrgaRain'
8
+
9
+ # ゲームシステム名
10
+ NAME = '在りて遍くオルガレイン'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'ありてあまねくおるかれいん'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~MESSAGETEXT
17
+ 判定:[n]OR(count)
18
+
19
+ []内のコマンドは省略可能。
20
+ 「n」でダイス数を指定。省略時は「1」。
21
+ (count)で命数を指定。「3111」のように記述。最大6つ。順不同可。
22
+
23
+ 【書式例】
24
+ ・5OR6042 → 5dで命数「0,2,4,6」の判定
25
+ ・6OR33333 → 6dで命数「3,3,3,3,3」の判定。
26
+ MESSAGETEXT
27
+
28
+ def initialize(command)
29
+ super(command)
30
+ @sort_add_dice = true # ダイスのソート有
31
+ end
32
+
33
+ register_prefix([
34
+ '(\d+)?OR([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?'
35
+ ])
36
+
37
+ def eval_game_system_specific_command(command)
38
+ if command =~ /(\d+)?OR([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?([0-9])?$/i
39
+ diceCount = (Regexp.last_match(1) || 1).to_i
40
+ countNo = [(Regexp.last_match(2) || -1).to_i, (Regexp.last_match(3) || -1).to_i, (Regexp.last_match(4) || -1).to_i, (Regexp.last_match(5) || -1).to_i, (Regexp.last_match(6) || -1).to_i, (Regexp.last_match(7) || -1).to_i]
41
+ countNo.delete(-1)
42
+ countNo = countNo.sort
43
+
44
+ return checkRoll(diceCount, countNo)
45
+ end
46
+
47
+ return nil
48
+ end
49
+
50
+ def checkRoll(diceCount, countNo)
51
+ diceArray = @randomizer.roll_barabara(diceCount, 10).sort
52
+ diceText = diceArray.join(',')
53
+
54
+ diceArray.map! { |x| x == 10 ? 0 : x }
55
+
56
+ resultArray = []
57
+ success = 0
58
+ diceArray.each do |i|
59
+ multiple = countNo.count(i)
60
+ if multiple > 0
61
+ resultArray.push("#{i}(x#{multiple})")
62
+ success += multiple
63
+ else
64
+ resultArray.push("×")
65
+ end
66
+ end
67
+
68
+ countText = countNo.join(',')
69
+ resultText = resultArray.join(',')
70
+
71
+ result = "#{diceCount}D10(命数:#{countText}) > #{diceText} > #{resultText} > 成功数:#{success}"
72
+
73
+ return result
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class Oukahoushin3rd < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'Oukahoushin3rd'
8
+
9
+ # ゲームシステム名
10
+ NAME = '央華封神RPG 第三版'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'おうかほうしんRPG3'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
+ ・各種表
18
+  ・能力値判定裏成功表(NHT)
19
+  ・武器攻撃裏成功表(BKT)
20
+  ・受け・回避裏成功表(UKT)
21
+  ・仙術行使裏成功表(SKT)
22
+  ・仙術抵抗裏成功表(STT)
23
+  ・精神値ダメージ悪影響表(SDT)
24
+  ・狂気表(KKT)
25
+ INFO_MESSAGE_TEXT
26
+
27
+ def eval_game_system_specific_command(command)
28
+ chosen = roll_tables(command, TABLES)
29
+ return replace_dice_notation(chosen)
30
+ end
31
+
32
+ private
33
+
34
+ def replace_dice_notation(text)
35
+ text&.gsub(/(\d+)D(\d+)/) do |matched|
36
+ times, sides = matched.split("D").map(&:to_i)
37
+ value = @randomizer.roll_sum(times, sides)
38
+ "#{matched}(=>#{value})"
39
+ end
40
+ end
41
+
42
+ TABLES = {
43
+ "BKT" => DiceTable::Table.new(
44
+ "武器攻撃裏成功表",
45
+ "2D6",
46
+ [
47
+ "1ポイント清徳値が低下。連続攻撃が行える。この場合の連続攻撃においては、命中判定のサイコロは常にひっくり返して用いるが、2撃目以降はこの表は使わない。",
48
+ "敵に叩きつけると同時に武器が破損。素手や身体に備わった武器(爪、牙など)で攻撃をしていた場合には、自身にも1D6(のみ)ダメージ。",
49
+ "効果的命中。ダメージに1D6加算。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、体力または機敏(攻撃を行った者が選択する)が1ポイント低下。",
50
+ "ふつうの命中。",
51
+ "不完全な命中、ダメージは半分。(3ゾロ)1ポイント仙骨が低下。",
52
+ "ふつうの命中。",
53
+ "体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。",
54
+ "ふつうの命中。",
55
+ "体力または機敏(攻撃を行った者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。",
56
+ "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。",
57
+ "1ポイント清徳値が低下。体力または機敏(攻撃を行った者が選択する)が1ポイント上昇。"
58
+ ]
59
+ ),
60
+ "KKT" => DiceTable::Table.new(
61
+ "狂気表",
62
+ "2D6",
63
+ [
64
+ "心神喪失、生ける屍。",
65
+ "被害妄想。仲間も含め、他者は全て自分を傷つけようとしていると思いこむ。行動はゲームマスターが管理。",
66
+ "重度の不安症。失敗を恐れるあまり、次ラウンドは行動不可。それ以降も、2ラウンドに1回しか行動できない(自動武器や使役獣への命令なども)。\\n「次のラウンドに行動できない」状態では、「割り込み」は行えない。",
67
+ "重度の依存症。自分で行動を決められず、仲間に決めてもらわなければならない。",
68
+ "二重人格。二つ目の人格は狂気。新たに狂気表(KKT)で決定(再度二重人格が出た場合は、振りなおす)。狂気表を使った直後は、この二つ目の人格。\\n1日以上、二重人格が持続している場合、その間に精神値ダメージを受けるたびに、その直後に1Dを振らねばならない。1が出たらこの狂気が顔を出す。\\n二つ目の人格が顔を出している時間は、1Dで決定する(1~3:短時間、4~5:半日、6:1日)。",
69
+ "軽度の依存症。仲間の承認がなければ、思いついた行動を実行できない。",
70
+ "軽度の偏執狂。ある行為や物品などに異常な執着を示す。ただし、行動に大きな影響は与えない。具体的な内容は、ゲームマスターとプレイヤーの相談で決定。",
71
+ "重度の偏執狂。行動に重大な影響を与える。具体的内容は、ゲームマスターが決定。",
72
+ "恐怖症。あるものに対して恐怖。対象からは、ひたすら逃亡しようとする。また、対象に遭遇するたびに、難易度10で意志の能力値判定を行わねばならず、失敗したら1Dの精神値ダメージを受ける。恐怖の対象は、ゲームマスターが決定。",
73
+ "狂暴化。仲間も含め、他者はすべて敵とみなし、傷つけようとする。行動はゲームマスターが管理。",
74
+ "錯乱。行動はゲームマスターが「なるべくでたらめになるように」決定する。"
75
+ ]
76
+ ),
77
+ "NHT" => DiceTable::Table.new(
78
+ "能力値判定裏成功表",
79
+ "2D6",
80
+ [
81
+ "1ポイント清徳値が低下。変な癖が身についてしまう。",
82
+ "やりすぎ。過剰な成功をしたり、よけいなことまでして災いが起こりうる。",
83
+ "「気」の爆発。大成功。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)1ポイント仙骨が上昇、使用した能力値が1ポイント低下。",
84
+ "ふつうの成功。",
85
+ "不完全な成功、数値的効果は半分ほどに見積もる。(3ゾロ)1ポイント仙骨が低下。",
86
+ "ふつうの成功。",
87
+ "使用した能力値が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。",
88
+ "ふつうの成功。",
89
+ "使用した能力値が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。",
90
+ "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。",
91
+ "1ポイント清徳値が低下。使用した能力値が1ポイント上昇。"
92
+ ]
93
+ ),
94
+ "SDT" => DiceTable::Table.new(
95
+ "精神値ダメージ悪影響表",
96
+ "1D6",
97
+ [
98
+ "一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。",
99
+ "一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。",
100
+ "一瞬の放心。直後の判定は自動的に失敗。精神値を1D6×最大値の10%回復。",
101
+ "放心状態。強制され、自動失敗するまで、自発的行動不可。精神値を(1D6+2)×最大値の10%回復。",
102
+ "精神異常(具体的内容は狂気表(KKT)で決定)。短時間のみ。精神値を(1D6+4)×最大値の10%回復。",
103
+ "精神異常(具体的内容は狂気表(KKT)で決定)。期間は1D6を振って決定(1~3:1日、4~5:99日間、6:永遠)。精神値を最大値まで回復。"
104
+ ]
105
+ ),
106
+ "SKT" => DiceTable::Table.new(
107
+ "仙術行使裏成功表",
108
+ "2D6",
109
+ [
110
+ "1ポイント清徳値が低下。1ポイント仙骨が上昇。",
111
+ "術の効果は術者にも解除不能になる。精神値に1点ダメージを受ける。",
112
+ "「気」の暴走。効果3倍。ただし極度に疲労するため、精神値に1D6点ダメージを受ける。(2ゾロ)術者は1D6日間、仙術が使用不能になる。1ポイント仙骨が上昇。",
113
+ "術が敵にかけたものの場合、仲間の1人を巻きこむ。精神値に1点ダメージを受ける。",
114
+ "不完全な成功、効果半分。(3ゾロ)持続時間のある術の場合、術者がひたすら精神集中していない限り、術はすぐに解除される。",
115
+ "ふつうの成功。",
116
+ "1ポイント清徳値が低下。(4ゾロ)仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント上昇。",
117
+ "術が味方もしくは自分にかけたものの場合、敵の1人にも同じようにかかる。精神値に1点ダメージを受ける。",
118
+ "仙骨以外のいずれかの能力値(術者選択)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。",
119
+ "1D3ポイント清徳値が低下。",
120
+ "1D6ポイント清徳値が低下。仙骨以外のいずれかの能力値(術者選択)が1ポイント上昇。"
121
+ ]
122
+ ),
123
+ "STT" => DiceTable::Table.new(
124
+ "仙術抵抗裏成功表",
125
+ "2D6",
126
+ [
127
+ "1ポイント清徳値が低下。",
128
+ "そらされた術の効果が味方に及ぶ。味方の誰にそらされたかは、この表を使ったものが選ぶ。集団攻撃仙術の場合、抵抗に成功したものの中から選ぶこと。ほかの誰も成功に抵抗していなかったときは、ふつうの抵抗成功として扱う。精神値に1点ダメージを受ける。",
129
+ "仙術をかけた敵にその効果が及ぼされる。敵自身はそれに対して、抵抗を試みることができる。(2ゾロ)1ポイント仙骨が上昇。1ポイント知覚が低下。",
130
+ "ふつうの抵抗成功。",
131
+ "不完全な抵抗、ふつうの半分の効果を受ける。(3ゾロ)1ポイント仙骨が低下。",
132
+ "ふつうの抵抗成功。",
133
+ "仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。",
134
+ "ふつうの抵抗成功。",
135
+ "仙骨または知覚(仙術に抵抗した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。",
136
+ "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。",
137
+ "1ポイント清徳値が低下。仙骨または知覚(仙術に抵抗した者が選択する)が1ポイント上昇。"
138
+ ]
139
+ ),
140
+ "UKT" => DiceTable::Table.new(
141
+ "受け・回避裏成功表",
142
+ "2D6",
143
+ [
144
+ "1ポイント清徳値が低下。",
145
+ "転倒する(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。精神値に1点ダメージを受ける。",
146
+ "相手のバランスを崩すのに成功。攻撃を行った敵が転倒(空を飛んでいるものは落下。乗騎などに乗っていたら転落)。(2ゾロ)1ポイント仙骨が上昇、機敏または知覚(攻撃を防御した者が選択する)が1ポイント低下。",
147
+ "ふつうの防御成功。",
148
+ "不完全な防御、通常の半分のダメージを受ける。しかし敵が連続攻撃を行うことは出来ない。攻撃者が裏成功攻撃であってもその反動は決めない。(3ゾロ)1ポイント仙骨が低下。",
149
+ "ふつうの防御成功。",
150
+ "機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント上昇。(4ゾロ)能力値の上昇は永遠。",
151
+ "ふつうの防御成功。",
152
+ "機敏または知覚(攻撃を防御した者が選択する)が1D6日間、1ポイント低下。(5ゾロ)能力値の低下は永遠。",
153
+ "呼吸を乱す、数瞬間(1D6ラウンド)は仙術を使用できない。",
154
+ "1ポイント清徳値が低下。機敏または知覚(攻撃を防御した者が選択する)が1ポイント上昇。"
155
+ ]
156
+ ),
157
+ }.freeze
158
+
159
+ register_prefix(TABLES.keys)
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,323 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class Paradiso < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'Paradiso'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'チェレステ色のパラディーゾ'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'ちえれすていろのはらていいそ'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~MESSAGETEXT
17
+ ◆判定 (nCPt[f]@c)、(nD20<=t[f]@c) n:ダイス数(省略時:1) t:目標値(省略時:14) f:絶不調の追加ファンブル値 c:人機一体の追加クリティカル値
18
+  例)CP12 CP(13+1) 3CP12[18,19]@7
19
+ ◆各種表
20
+  ・ラジオ・マリエッタ表 RMT
21
+  ・移動表 TOT
22
+  ・探索表 EXT
23
+  ・補給表 SUT
24
+ ◆ダメージチェック (DCa[20,30]) a:【攻撃力】、[20]:20mm機銃追加、[30]:30mmガンポッド追加
25
+  例)DC4:【攻撃力】4でダメージチェック DC5[20]:【攻撃力】5でダメージチェック、うち1つは20mm機銃 DC5[20,30]:【攻撃力】5でダメージチェック、うち1つは20mm機銃、うち1つは30mmガンポッド
26
+ MESSAGETEXT
27
+
28
+ register_prefix(['(\d+)*D20<=.*', '(\d+)*CP.*', 'RMT', 'TOT', 'EXT', 'SUT', 'DC(\d+).*'])
29
+
30
+ def eval_game_system_specific_command(command) # ダイスロールコマンド
31
+ # 通常判定部分をgetJudgeResultコマンドに切り分け
32
+ result = getJudgeResult(command)
33
+ return result unless result.nil?
34
+
35
+ # ダメージチェック部分をgetDamageResultコマンドに切り分け
36
+ result = getDamageResult(command)
37
+ return result unless result.nil?
38
+
39
+ # テーブル
40
+ case command.upcase # 大文字にしてチェックする
41
+ when 'RMT'
42
+ result = get_radiomarietta_table
43
+ when 'TOT'
44
+ result = get_takeoff_table
45
+ when 'EXT'
46
+ result = get_exploration_table
47
+ when 'SUT'
48
+ result = get_flightsupply_table
49
+ end
50
+ return result unless result.nil?
51
+ end
52
+
53
+ # 通常判定
54
+ def getJudgeResult(command)
55
+ case command
56
+ when /^(\d+)*D20<=(\d+)?(\[(\d+)(,(\d+))?\])?(\@(\d+))?$/i
57
+ number = (Regexp.last_match(1) || 1).to_i # ダイス数。省略時は1
58
+ target = (Regexp.last_match(2) || 14).to_i # 目標値。省略時は14 if 空白 then 14 else 記載の値
59
+ fumble1 = (Regexp.last_match(4) || 21).to_i # 追加ファンブル値。省略時は21
60
+ fumble2 = (Regexp.last_match(6) || 21).to_i # 追加ファンブル値。省略時は21
61
+ critical = (Regexp.last_match(8) || 21).to_i # 追加クリティカル値。省略時は21
62
+ when /^(\d+)*CP(\d+)?(\[(\d+)(,(\d+))?\])?(\@(\d+))?$/i
63
+ number = (Regexp.last_match(1) || 1).to_i
64
+ target = (Regexp.last_match(2) || 14).to_i
65
+ fumble1 = (Regexp.last_match(4) || 21).to_i
66
+ fumble2 = (Regexp.last_match(6) || 21).to_i
67
+ critical = (Regexp.last_match(8) || 21).to_i
68
+ else return nil
69
+ end
70
+
71
+ dice = 0
72
+ dicetext = ""
73
+ crit_flg = false
74
+ fumb_flg = false
75
+ succ_flg = false
76
+
77
+ number.times do
78
+ dice = @randomizer.roll_once(20)
79
+
80
+ if dicetext == ""
81
+ dicetext = dice.to_s
82
+ else
83
+ dicetext = dicetext + "," + dice.to_s
84
+ end
85
+
86
+ if [1, critical].include?(dice)
87
+ crit_flg = true
88
+ elsif [20, fumble1, fumble2].include?(dice) # パラディーゾではクリティカル優先!
89
+ fumb_flg = true
90
+ elsif dice <= target
91
+ succ_flg = true
92
+ end
93
+ end
94
+
95
+ if crit_flg == true
96
+ result = "クリティカル"
97
+ elsif fumb_flg == true
98
+ result = "ファンブル"
99
+ elsif succ_flg == true
100
+ result = "成功"
101
+ else
102
+ result = "失敗"
103
+ end
104
+
105
+ text = "(#{number}D20 目標値#{target}) > (#{dicetext}) > #{result}"
106
+
107
+ return text
108
+ end
109
+
110
+ # ダメージチェック DCa[20,30]
111
+ def getDamageResult(command)
112
+ biggun = [0, 0, 0]
113
+
114
+ case command
115
+ when /^DC(\d+)(\[(\d+)(,(\d+))?(,(\d+))?(,(\d+))?(,(\d+))?(,(\d+))?\])?$/i
116
+ attack = (Regexp.last_match(1) || 1).to_i # ダイス数。省略時は1
117
+ biggun[0] = (Regexp.last_match(3) || 0).to_i # コダワリ機銃、省略時は0
118
+ biggun[1] = (Regexp.last_match(5) || 0).to_i
119
+ biggun[2] = (Regexp.last_match(7) || 0).to_i
120
+ biggun[3] = (Regexp.last_match(9) || 0).to_i
121
+ biggun[4] = (Regexp.last_match(11) || 0).to_i
122
+ biggun[5] = (Regexp.last_match(13) || 0).to_i
123
+ else return nil
124
+ end
125
+
126
+ dice = 0
127
+ dicetext = ""
128
+ damage = Array.new(20, 0)
129
+ doubledam = 0
130
+ tripledam = 0
131
+
132
+ biggun.each do |bg|
133
+ case bg
134
+ when 30
135
+ tripledam += 1
136
+ when 20
137
+ doubledam += 1
138
+ end
139
+ end
140
+
141
+ attack.times do
142
+ dice = @randomizer.roll_once(20)
143
+
144
+ if dicetext == ""
145
+ dicetext = dice.to_s
146
+ else
147
+ dicetext = dicetext + "," + dice.to_s
148
+ end
149
+
150
+ if tripledam >= 1
151
+ damage[dice - 1] += 3
152
+ tripledam += -1
153
+ dicetext += "【30mm】"
154
+ elsif doubledam >= 1
155
+ damage[dice - 1] += 2
156
+ doubledam += -1
157
+ dicetext += "【20mm】"
158
+ else
159
+ damage[dice - 1] += 1
160
+ end
161
+ end
162
+
163
+ result = "\n#{damage[0]}#{damage[1]}#{damage[2]}#{damage[3]}#{damage[4]}\n#{damage[5]}#{damage[6]}#{damage[7]}#{damage[8]}#{damage[9]}\n#{damage[10]}#{damage[11]}#{damage[12]}#{damage[13]}#{damage[14]}\n#{damage[15]}#{damage[16]}#{damage[17]}#{damage[18]}#{damage[19]}"
164
+
165
+ text = "攻撃力#{attack}ダメージチェック > (#{dicetext}) > #{result}"
166
+
167
+ return text
168
+ end
169
+
170
+ # ラジオマリエッタ表
171
+ def get_radiomarietta_table
172
+ dice = @randomizer.roll_once(20)
173
+ case dice
174
+ when 1
175
+ text = "「なんてこった! ここで事故のお知らせだ!」\n通行止め……。ランダムなマス1つを決定する。この一日中、そのマスに移動する事はできない。"
176
+ when 2..4
177
+ text = "「今日はまたずいぶんと湿気てるねぇ……。古傷がある人は要注意だよ」\n天候が悪い。この一日中、「●移動」のアクションで移動できるマス数は常に1マス低くなる。"
178
+ when 5..10
179
+ text = "「日常は至上! 異常は退場! なんにもないからラジオは以上! ……なんつて」\nいつもどおりの日々。のんびりとした風で、何事もなし。"
180
+ when 11, 12
181
+ text = "「それじゃ、本日のメインコーナー。行ってみよう!」\n軽妙なトーク。PC全員の【乗り手コンディション】が1点小さくなる。"
182
+ when 13..15
183
+ text = "「いーなー、こんな日はボクも飛んでみたい気分だよ! ブオノあたりまでバーッとね!」\nとんでもなく快晴で絶好のフライト日和。【機体コンディション】【乗り手コンディション】がそれぞれ1点小さくなる。"
184
+ when 16
185
+ text = "「店頭で言えば嬉しい値引き。本日のラッキーワードをメモする用意はできたかい?」\nおトクな情報。この一日中、各PCごとに一回ずつ、「価格」の効果値が2低いものとして効果を処理できる(最低値0)"
186
+ when 17
187
+ text = "「いっやー……熱演だったね。もーぅ次回が待ちきれなぁい!!」\nラジオドラマが神回だった。その日一日に行う「交流」で獲得できる【キズナ】の点数が+1される。"
188
+ when 18
189
+ text = "「イエス!ナイス!エレガンス!あのサーカス団が帰ってくる!」\nサーカス団がやってくる!ランダムなマス1つを決定する。\nこの一日中、そのマスは「娯楽施設:5」(P.55)の効果を得る。"
190
+ when 19
191
+ text = "「ラジオネーム、ハプニングさんからのお便り! おっとぉ、これは興味深い相談だ」\nラジオの話している内容から手がかりが見つかる。\[手がかり\]が1箇所追加で配置される。"
192
+ when 20
193
+ text = "「今夜は素敵なパーリィデイ! みんな!今夜の仮装を何にするかはもう決めてるかな?」\n酒場でパーティだ!「酒場」のスポット効果を持つスポットに「レストラン:「パーティ」」が追加される。"
194
+ end
195
+
196
+ return "ラジオマリエッタ表" + "\(" + dice.to_s + "\):" + text
197
+ end
198
+
199
+ # 移動表
200
+ def get_takeoff_table
201
+ dice = @randomizer.roll_once(20)
202
+ case dice
203
+ when 1
204
+ text = "エンジンがぶっ壊れた!ただちに【機体コンディション】が「20」となり、このターン中は2つ目のアクションも含め「●移動」することができない。"
205
+ when 2
206
+ text = "離水に失敗した! キミの愛機のダメージマップ上の任意の「翼」部位のダメージボックスに1点のダメージを与え、このターン中は2つ目のアクションも含め「●移動」することができない。"
207
+ when 3
208
+ text = "軽いエンジントラブル。このアクションでは移動することができない。"
209
+ when 4
210
+ text = "同業者に遭遇。しかし煽られて曲芸飛行につきあわされる。\n任意の方向に強制的に3マス移動し、【物資点】3点を失う。"
211
+ when 5
212
+ text = "道を間違えたらしい。【物資点】を5点消費し、ランダムな方向に1マス移動する効果を3回繰り返す。"
213
+ when 6
214
+ text = "気づいたらオイル漏れを起こしていた!【物資点】を3点消費する。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。"
215
+ when 7
216
+ text = "あいにくのにわか雨。あまり飛びたくないなあ。1マスにつき1点の【物資点】を消費して最大2マスまで移動できる。"
217
+ when 8
218
+ text = "唐突な襲撃。一撃加えたあと、謎の襲撃者はいずこかへ去っていった……。命中判定の達成値が12であると扱う、【火力】3のダメージチェックを受ける。その後、1マスにつき1点の【物資点】を消費して最大4マスまで移動できる。"
219
+ when 9
220
+ text = "んー、少し調子が悪いかな? 1マスにつき1点の【物資点】を消費して最大3マスまで移動できる。"
221
+ when 10..12
222
+ text = "順調な空の旅。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる。"
223
+ when 13
224
+ text = "島巡りの観光艇と遭遇。ちやほやされていい気分。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、キミの【乗り手コンディション】を2点までの任意の点数下げる事ができる。"
225
+ when 14
226
+ text = "同業者と遭遇。1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。"
227
+ when 15
228
+ text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大7マスまで移動できる上、キミの【機体コンディション】を2点までの任意の点数下げる事ができる。"
229
+ when 16
230
+ text = "すごく調子がいいぞ!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでも続けて「●移動」を行う事ができる。"
231
+ when 17
232
+ text = "通りかかった先に思わぬ情報が!1マスにつき1点の【物資点】を消費して最大5マスまで移動できる上、このアクションがこのターンに行う1回目のアクションである場合、2回目のアクションでは今いるマスに\[手がかり\]が配置されているものとして「●探索」が行える。"
233
+ when 18
234
+ text = "酒場が恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の「酒場」のスポット効果を持つマスに移動する。"
235
+ when 19
236
+ text = "アジトが恋しい……。【物資点】を5点消費し、即座に同じ「クエストマップ」内の任意のキミの「アジト」に移動する。"
237
+ when 20
238
+ text = "仲間が恋しい……。【物資点】を5点消費し、即座に任意のPC一人のいる場所に移動する。"
239
+ end
240
+
241
+ return "移動表" + "\(" + dice.to_s + "\):" + text
242
+ end
243
+
244
+ # 探索表
245
+ def get_exploration_table
246
+ dice = @randomizer.roll_once(20)
247
+ case dice
248
+ when 1
249
+ text = "クソっ!このマスに付与されていた\[手がかり\]を失う。"
250
+ when 2
251
+ text = "「ツケ払いやがれ!」見に覚えがあるかないか。キミに詰め寄ってくるヤツがいる。【物資点】を10点消費するか、「ツケを伸ばす」のどちらかを選択する。ツケを伸ばすを選択した場合、次にキミが行う「●探索」のアクションでも、探索表の結果は参照せず、自動的にこの効果が適用される。"
252
+ when 3
253
+ text = "謎は深まる。このマスに付与されていた\[手がかり\]を失い、ランダムな場所に再付与する。【情報点】は得られない。"
254
+ when 4
255
+ text = "コネクションは大事だ。「支援チェック」をチェックしていない【キズナ】が1点以上存在すれば、その「支援チェック」を入れたあと、このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。"
256
+ when 5..8
257
+ text = "情報を手に入れるためには、少し骨を折る必要がありそうだ。好きな能力値を2つ組み合わせて{探索判定}を行う。成功すればこのマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。"
258
+ when 9
259
+ text = "情報を提供してくれるというアイツは見返りを要求してきた。【物資点】を4点消費できる。そうした場合、このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。"
260
+ when 10..13
261
+ text = "危なげなく情報ゲット。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。"
262
+ when 14
263
+ text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、【物資点】を5点獲得する。"
264
+ when 15
265
+ text = "手がかりを追っている事を話すと、ソイツは協力を持ちかけてきてくれた。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、アイテム「チケット」(P\.69)を入手する。"
266
+ when 16
267
+ text = "昔の仲間から手がかりについて聞くことになった。ついでに積もる話も少々。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに同業者は「キミへの【キズナ】」を1点得る。同業者はこのセッション中、キミが望む場面でキミに「判定支援」を行ってくれる。"
268
+ when 17
269
+ text = "空軍にいる友人から手がかりについて聞くことになった。「なあ、お前もフラフラしてないで空軍に入ったらどうだ?」耳に痛い。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、アイテム「空軍のツテ」(P\.69)を入手する。"
270
+ when 18
271
+ text = "手がかりを追っていたら他にもボロボロと……。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。さらに、1D20を二回振り、この「クエストマップ」上のランダムなマス2つを求める。それらのマスに\[手がかり\]が付与されていなければ、\[手がかり\]を付与する。"
272
+ when 19
273
+ text = "あっさり情報を掴むことができてしまった。このマスに付与されていた\[手がかり\]を失い、【情報点】を1点獲得する。この「●探索」ではアクションを消費せず、追加で別のアクションを宣言する事ができる。"
274
+ when 20
275
+ text = "これは重要な手がかりだ! このマスに付与されていた\[手がかり\]を失い、【情報点】を2点獲得する。"
276
+ end
277
+
278
+ return "探索表" + "\(" + dice.to_s + "\):" + text
279
+ end
280
+
281
+ # 補給表
282
+ def get_flightsupply_table
283
+ dice = @randomizer.roll_once(20)
284
+ case dice
285
+ when 1
286
+ text = "……えっ?! キミの【物資点】は0点となる。"
287
+ when 2
288
+ text = "おいおい勘弁してくれよ……。このアクションがそのセグメントの一回目のアクションだった場合、キミは2回目のアクションを行えない。その後【物資点】を5点獲得する。"
289
+ when 3
290
+ text = "取材に巻き込まれる。【物資点】は獲得できないが、記者の発言からはぽろりとなにかが見えたような?1D20を振り、出た目に対応したマスに「手がかり」を1つ配置する。"
291
+ when 4
292
+ text = "成果ゼロ。ま、こんな日もあるかな。【物資点】は獲得できない。"
293
+ when 5
294
+ text = "うまいこと補給できなかった。【物資点】を5点獲得する。"
295
+ when 6
296
+ text = "「一稼ぎと言ったらこれだろ?」と声をかけてくる悪友たち。「カジノ」(『基本ルールブック』P\.55)のスポット効果を即座に適用する。ただしこの処理では判定の失敗により「刑務所」のスポット効果を持つスポットに移動する効果は発生せず、代わりに「酒場」のスポット効果を持つスポットに移動した上で、自身が持つ全ての【キズナ】の「支援チェック」にチェックを入れる。その後、次のセグメントが終了するまでの間アクションは行えない。"
297
+ when 7..9
298
+ text = "のんびり釣りといこう。釣果は運次第だ。1D20を振り、出た目と同じ数だけ【物資点】を獲得する。"
299
+ when 10..12
300
+ text = "なにごともなく補給が完了する。【物資点】を10点獲得する。"
301
+ when 13
302
+ text = "ラジオの音が聞こえる。PCが望むなら、1D20を振り、出た目を「ラジオ・マリエッタ表」(『基本ルールブック』P.29)に照らし合わせて、その結果を反映する。これ以後、朝セグメントで振られたラジオ・マリエッタ表の効果は失われる。その後【物資点】を10点獲得する。"
303
+ when 14
304
+ text = "補給の合間、ちょっと口寂しくなってしまって露店へ。【物資点】を8点獲得し、アイテム「レモネード」(『基本ルールブック』P\.69)を入手する。"
305
+ when 15
306
+ text = "補給の合間、軽くメンテナンス。【機体コンディション】を1点下げることができる。その後【物資点】を10点獲得する。"
307
+ when 16
308
+ text = "補給の合間、店主と軽く談笑。【乗り手コンデイション】を1点下げることができる。その後【物資点】を10点獲得する。"
309
+ when 17
310
+ text = "補給の合間、仲間に軽く挨拶しておこうか。同じマスに他のPCがいた場合、そのPC1人への【キズナ】を1点獲得する。その後【物資点】を10点獲得する。"
311
+ when 18
312
+ text = "補給の合間に通りがかった相手と意気投合。相手はキミへの【キズナ】を1点取得する。【物資点】を10点獲得する。"
313
+ when 19
314
+ text = "あっさり補給が終わってしまった。どうしようかな。この補給ではアクションを消費せず、【物資点】を10点獲得する。"
315
+ when 20
316
+ text = "降って湧いた幸運!【物資点】が20点になる。"
317
+ end
318
+
319
+ return "補給表" + "\(" + dice.to_s + "\):" + text
320
+ end
321
+ end
322
+ end
323
+ end