bcdice 3.1.3 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +186 -76
  3. data/README.md +3 -2
  4. data/i18n/BeginningIdol/ja_jp.yml +2806 -0
  5. data/i18n/BeginningIdol/ko_kr.yml +1400 -0
  6. data/i18n/Cthulhu/zh_hans.yml +11 -0
  7. data/i18n/KillDeathBusiness/ja_jp.yml +1 -1
  8. data/i18n/MagicaLogia/ja_jp.yml +1 -1
  9. data/i18n/MagicaLogia/zh_hans.yml +564 -0
  10. data/i18n/MonotoneMuseum/ko_kr.yml +526 -53
  11. data/i18n/StellarKnights/ja_jp.yml +498 -0
  12. data/i18n/StellarKnights/ko_kr.yml +498 -0
  13. data/i18n/zh_hans.yml +7 -0
  14. data/lib/bcdice/command/parsed.rb +11 -3
  15. data/lib/bcdice/command/parser.rb +179 -100
  16. data/lib/bcdice/common_command/add_dice.rb +1 -1
  17. data/lib/bcdice/common_command/barabara_dice/node.rb +2 -2
  18. data/lib/bcdice/common_command/barabara_dice/result.rb +6 -0
  19. data/lib/bcdice/common_command/calc.rb +1 -1
  20. data/lib/bcdice/common_command/choice.rb +82 -7
  21. data/lib/bcdice/common_command/tally_dice/node.rb +135 -0
  22. data/lib/bcdice/common_command/tally_dice/parser.rb +302 -0
  23. data/lib/bcdice/common_command/tally_dice.rb +19 -0
  24. data/lib/bcdice/common_command.rb +2 -0
  25. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  26. data/lib/bcdice/dice_table/d66_left_range_table.rb +29 -0
  27. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  28. data/lib/bcdice/dice_table/d66_table.rb +5 -1
  29. data/lib/bcdice/dice_table.rb +3 -0
  30. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  31. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  32. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  33. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  34. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  35. data/lib/bcdice/game_system/Amadeus.rb +110 -93
  36. data/lib/bcdice/game_system/AngelGear.rb +10 -5
  37. data/lib/bcdice/game_system/AnimaAnimus.rb +16 -9
  38. data/lib/bcdice/game_system/Aoharubaan.rb +91 -0
  39. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  40. data/lib/bcdice/game_system/AssaultEngine.rb +91 -0
  41. data/lib/bcdice/game_system/Avandner.rb +1 -1
  42. data/lib/bcdice/game_system/BadLife.rb +264 -289
  43. data/lib/bcdice/game_system/Bakenokawa.rb +244 -0
  44. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  45. data/lib/bcdice/game_system/BattleTech.rb +109 -28
  46. data/lib/bcdice/game_system/BeastBindTrinity.rb +28 -12
  47. data/lib/bcdice/game_system/BeginningIdol.rb +118 -2392
  48. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +10 -2312
  49. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  50. data/lib/bcdice/game_system/BlindMythos.rb +39 -38
  51. data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
  52. data/lib/bcdice/game_system/BloodMoon.rb +9 -8
  53. data/lib/bcdice/game_system/CardRanker.rb +8 -7
  54. data/lib/bcdice/game_system/CastleInGray.rb +133 -0
  55. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  56. data/lib/bcdice/game_system/Chill.rb +10 -10
  57. data/lib/bcdice/game_system/Chill3.rb +9 -9
  58. data/lib/bcdice/game_system/CodeLayerd.rb +39 -39
  59. data/lib/bcdice/game_system/ColossalHunter.rb +34 -47
  60. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  61. data/lib/bcdice/game_system/Cthulhu.rb +3 -3
  62. data/lib/bcdice/game_system/Cthulhu7th.rb +56 -18
  63. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  64. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  65. data/lib/bcdice/game_system/Cthulhu_SimplifiedChinese.rb +60 -0
  66. data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
  67. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  68. data/lib/bcdice/game_system/DeadlineHeroes.rb +11 -10
  69. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  70. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  71. data/lib/bcdice/game_system/DoubleCross.rb +8 -1
  72. data/lib/bcdice/game_system/Dracurouge.rb +3 -2
  73. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  74. data/lib/bcdice/game_system/Elric.rb +18 -14
  75. data/lib/bcdice/game_system/Elysion.rb +1 -1
  76. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  77. data/lib/bcdice/game_system/Emoklore.rb +25 -20
  78. data/lib/bcdice/game_system/FateCoreSystem.rb +117 -0
  79. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  80. data/lib/bcdice/game_system/FilledWith.rb +4 -0
  81. data/lib/bcdice/game_system/FutariSousa.rb +12 -10
  82. data/lib/bcdice/game_system/GURPS.rb +17 -28
  83. data/lib/bcdice/game_system/Garako.rb +1 -1
  84. data/lib/bcdice/game_system/GardenOrder.rb +12 -7
  85. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  86. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  87. data/lib/bcdice/game_system/Gorilla.rb +2 -8
  88. data/lib/bcdice/game_system/GranCrest.rb +189 -417
  89. data/lib/bcdice/game_system/Gundog.rb +9 -8
  90. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  91. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  92. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  93. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  94. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  95. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  96. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  97. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  98. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  99. data/lib/bcdice/game_system/Insane.rb +13 -20
  100. data/lib/bcdice/game_system/Irisbane.rb +154 -0
  101. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  102. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  103. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  104. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  105. data/lib/bcdice/game_system/KanColle.rb +4 -9
  106. data/lib/bcdice/game_system/Karukami.rb +84 -0
  107. data/lib/bcdice/game_system/KemonoNoMori.rb +26 -39
  108. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  109. data/lib/bcdice/game_system/KurayamiCrying.rb +142 -3
  110. data/lib/bcdice/game_system/LiveraDoll.rb +254 -304
  111. data/lib/bcdice/game_system/LogHorizon.rb +10 -7
  112. data/lib/bcdice/game_system/MagicaLogia_SimplifiedChinese.rb +66 -0
  113. data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
  114. data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
  115. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +4 -3
  116. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  117. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  118. data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
  119. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  120. data/lib/bcdice/game_system/Nechronica.rb +63 -90
  121. data/lib/bcdice/game_system/NinjaSlayer.rb +6 -7
  122. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  123. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  124. data/lib/bcdice/game_system/Paradiso.rb +1 -1
  125. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  126. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  127. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  128. data/lib/bcdice/game_system/PersonaO.rb +86 -0
  129. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  130. data/lib/bcdice/game_system/Postman.rb +1 -1
  131. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  132. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  133. data/lib/bcdice/game_system/Revulture.rb +123 -0
  134. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  135. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  136. data/lib/bcdice/game_system/SRS.rb +17 -16
  137. data/lib/bcdice/game_system/SamsaraBallad.rb +38 -11
  138. data/lib/bcdice/game_system/Satasupe.rb +32 -32
  139. data/lib/bcdice/game_system/ScreamHighSchool.rb +5 -5
  140. data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
  141. data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
  142. data/lib/bcdice/game_system/Skynauts.rb +103 -142
  143. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  144. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  145. data/lib/bcdice/game_system/SteamPunkers.rb +25 -7
  146. data/lib/bcdice/game_system/StellarKnights.rb +85 -706
  147. data/lib/bcdice/game_system/StellarKnights_Korean.rb +79 -0
  148. data/lib/bcdice/game_system/{SterileLife.rb → StellarLife.rb} +162 -226
  149. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  150. data/lib/bcdice/game_system/Strave.rb +1 -1
  151. data/lib/bcdice/game_system/SwordWorld.rb +22 -9
  152. data/lib/bcdice/game_system/SwordWorld2_0.rb +22 -7
  153. data/lib/bcdice/game_system/SwordWorld2_5.rb +8 -2
  154. data/lib/bcdice/game_system/TalesFromTheLoop.rb +83 -0
  155. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  156. data/lib/bcdice/game_system/TokumeiTenkousei.rb +4 -3
  157. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  158. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  159. data/lib/bcdice/game_system/ToshiakiHolyGrailWar.rb +92 -0
  160. data/lib/bcdice/game_system/TrinitySeven.rb +279 -280
  161. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  162. data/lib/bcdice/game_system/Utakaze.rb +53 -48
  163. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  164. data/lib/bcdice/game_system/WARPS.rb +11 -9
  165. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  166. data/lib/bcdice/game_system/Warhammer.rb +15 -6
  167. data/lib/bcdice/game_system/Warhammer4.rb +15 -11
  168. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  169. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  170. data/lib/bcdice/game_system/YearZeroEngine.rb +40 -19
  171. data/lib/bcdice/game_system/Yggdrasill.rb +1 -1
  172. data/lib/bcdice/game_system/ZettaiReido.rb +20 -25
  173. data/lib/bcdice/game_system/beginning_idol/accessories_table.rb +31 -0
  174. data/lib/bcdice/game_system/beginning_idol/bad_status_table.rb +43 -0
  175. data/lib/bcdice/game_system/beginning_idol/chain_d66_table.rb +29 -0
  176. data/lib/bcdice/game_system/beginning_idol/chain_table.rb +37 -0
  177. data/lib/bcdice/game_system/beginning_idol/costume_table.rb +37 -0
  178. data/lib/bcdice/game_system/beginning_idol/d6_twice_table.rb +36 -0
  179. data/lib/bcdice/game_system/beginning_idol/item_table.rb +51 -0
  180. data/lib/bcdice/game_system/beginning_idol/my_skill_name_table.rb +44 -0
  181. data/lib/bcdice/game_system/beginning_idol/random_event_table.rb +31 -0
  182. data/lib/bcdice/game_system/beginning_idol/skill_table.rb +63 -0
  183. data/lib/bcdice/game_system/beginning_idol/table.rb +193 -0
  184. data/lib/bcdice/game_system/beginning_idol/with_abnormality.rb +74 -0
  185. data/lib/bcdice/game_system/beginning_idol/work_table.rb +57 -0
  186. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  187. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +4 -4
  188. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +50 -7
  189. data/lib/bcdice/game_system/sword_world/rating_parser.rb +148 -107
  190. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
  191. data/lib/bcdice/game_system.rb +18 -1
  192. data/lib/bcdice/repl.rb +1 -1
  193. data/lib/bcdice/result.rb +26 -0
  194. data/lib/bcdice/version.rb +1 -1
  195. metadata +48 -6
@@ -0,0 +1,318 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/dice_table/chain_table"
4
+ require "bcdice/dice_table/sai_fic_skill_table"
5
+ require "bcdice/dice_table/table"
6
+ require "bcdice/format"
7
+
8
+ module BCDice
9
+ module GameSystem
10
+ class StarryDolls < Base
11
+ # ゲームシステムの識別子
12
+ ID = "StarryDolls"
13
+
14
+ # ゲームシステム名
15
+ NAME = "スタリィドール"
16
+
17
+ # ゲームシステム名の読みがな
18
+ SORT_KEY = "すたりいとおる"
19
+
20
+ # ダイスボットの使い方
21
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
22
+ ・行為判定 nD6±m@s>=t
23
+  nD6の行為判定を行う。スペシャル/ファンブル/成功/失敗を判定。
24
+   n: ダイス数
25
+   m: 修正(省略可)
26
+   s: スペシャル値(省略時 12)
27
+   t: 目標値(?指定可)
28
+ ・各種表
29
+  ・ランダム特技決定表 RTTn (n:分野番号、省略可能)
30
+    1願望 2元素 3星使い 4動作 5召喚 6人間性
31
+  ・ランダム分野表 RCT
32
+  ・ランダム星座表 HOR
33
+    ランダム星座表A HORA/ランダム星座表B HORB
34
+  ・主人関係表 MRT/関係属性表 RAT
35
+  ・奇跡表 MIR
36
+  ・戦果表 BRT
37
+  ・事件表 TRO
38
+  ・遭遇表 ENC
39
+  ・致命傷表 FWT
40
+  ・カタストロフ表 CAT
41
+  ・回想表
42
+    〈魔術師の庭〉回想表 JDSRT/〈セブンス・ヘブン〉回想表 SHRT
43
+    /〈祝福の鐘〉回想表 BCRT/〈オメガ探偵社〉回想表 ODRT
44
+ ・D66ダイスあり
45
+ INFO_MESSAGE_TEXT
46
+
47
+ def initialize(command)
48
+ super(command)
49
+
50
+ @d66_sort_type = D66SortType::ASC
51
+ end
52
+
53
+ def eval_game_system_specific_command(command)
54
+ action_roll(command) ||
55
+ roll_tables(command, TABLES) ||
56
+ RTT.roll_command(@randomizer, command)
57
+ end
58
+
59
+ private
60
+
61
+ SPECIAL = "スペシャル(【星命力】を1D6点回復)"
62
+ FUMBLE = "ファンブル(ランダムなサインが【蝕】状態へ変化)"
63
+
64
+ RTT = DiceTable::SaiFicSkillTable.new(
65
+ [
66
+ ["願望", ["創造", "研究", "守護", "絆", "*かに座", "夢", "*しし座", "自由", "恋愛", "脚光", "世界"]],
67
+ ["元素", ["光", "雷", "*ふたご座", "水", "火", "風", "木", "氷", "*おとめ座", "土", "闇"]],
68
+ ["星使い", ["*おうし座", "幸運", "幻影", "テレパシー", "予知夢", "星読み", "治癒", "天候", "変身", "時間停止", "*てんびん座"]],
69
+ ["動作", ["*おひつじ座", "精密", "高速", "怪力", "隠密", "飛行", "言霊", "模倣", "軽業", "歌舞", "*さそり座"]],
70
+ ["召喚", ["リボン", "照明具", "*うお座", "料理", "獣", "花", "乗り物", "書物", "*いて座", "武器", "財宝"]],
71
+ ["人間性", ["勇気", "知恵", "熱意", "調和", "*みずがめ座", "愛情", "*やぎ座", "センス", "根気", "礼節", "理性"]],
72
+ ]
73
+ )
74
+
75
+ def action_roll(command)
76
+ parser = Command::Parser.new("D6", round_type: round_type)
77
+ .has_prefix_number
78
+ .restrict_cmp_op_to(:>=)
79
+ .enable_critical
80
+ .enable_question_target
81
+ cmd = parser.parse(command)
82
+ return nil unless cmd
83
+
84
+ times = cmd.prefix_number
85
+ return nil if times < 1
86
+
87
+ fumble = 2
88
+ special = cmd.critical || 12
89
+
90
+ if special <= fumble
91
+ special = fumble + 1 # p.180
92
+ cmd.critical = special
93
+ end
94
+
95
+ dice_list = @randomizer.roll_barabara(times, 6)
96
+ dice_total = dice_list.sum()
97
+ total = dice_total + cmd.modify_number
98
+
99
+ result =
100
+ if dice_total <= fumble
101
+ Result.fumble(FUMBLE)
102
+ elsif dice_total >= special
103
+ Result.critical(SPECIAL)
104
+ elsif cmd.question_target?
105
+ Result.new
106
+ elsif total >= cmd.target_number
107
+ Result.success("成功")
108
+ else
109
+ Result.failure("失敗")
110
+ end
111
+
112
+ sequence = [
113
+ "(#{cmd.to_s(:after_modify_number)})",
114
+ "#{dice_total}[#{dice_list.join(',')}]#{Format.modifier(cmd.modify_number)}",
115
+ total,
116
+ result.text
117
+ ].compact
118
+
119
+ result.text = sequence.join(" > ")
120
+ result
121
+ end
122
+
123
+ HOR_TABLE_A = DiceTable::Table.new(
124
+ "ランダム星座表A", # p.177
125
+ "1D6",
126
+ [
127
+ "おひつじ座",
128
+ "おうし座",
129
+ "ふたご座",
130
+ "かに座",
131
+ "しし座",
132
+ "おとめ座",
133
+ ]
134
+ )
135
+
136
+ HOR_TABLE_B = DiceTable::Table.new(
137
+ "ランダム星座表B", # p.177
138
+ "1D6",
139
+ [
140
+ "てんびん座",
141
+ "さそり座",
142
+ "いて座",
143
+ "やぎ座",
144
+ "みずがめ座",
145
+ "うお座",
146
+ ]
147
+ )
148
+
149
+ TABLES = {
150
+ "HORA" => HOR_TABLE_A,
151
+ "HORB" => HOR_TABLE_B,
152
+ "HOR" => DiceTable::ChainTable.new(
153
+ "ランダム星座表", # p.177
154
+ "1D6",
155
+ [
156
+ HOR_TABLE_A,
157
+ HOR_TABLE_A,
158
+ HOR_TABLE_A,
159
+ HOR_TABLE_B,
160
+ HOR_TABLE_B,
161
+ HOR_TABLE_B,
162
+ ]
163
+ ),
164
+ "MRT" => DiceTable::Table.new(
165
+ "主人関係表", # p.186
166
+ "1D6",
167
+ [
168
+ "親",
169
+ "友人",
170
+ "恩師",
171
+ "相棒",
172
+ "上司",
173
+ "恋人",
174
+ ]
175
+ ),
176
+ "RAT" => DiceTable::Table.new(
177
+ "関係属性表", # p.186
178
+ "1D6",
179
+ [
180
+ "尊敬/優越感",
181
+ "理解/反抗",
182
+ "愉快/恐怖",
183
+ "友情/競争",
184
+ "恋心/不気味",
185
+ "庇護/劣等感",
186
+ ]
187
+ ),
188
+ "MIR" => DiceTable::Table.new(
189
+ "奇跡表", # p.177
190
+ "1D6",
191
+ [
192
+ "空から降る一筋の光が星人形の体を包み込み、不思議な力を与えてくれる。",
193
+ "守護星座に関連する人や動物が現れ、星人形に力を貸してくれる。",
194
+ "運命が不自然なまでに星人形の味方をし、すべてが上手く進んでいく。",
195
+ "星人形の必要とするものが空中から次々と現れる。",
196
+ "少しの間だけ〈劇場〉の住人が正気に戻り、一致団結して星人形に協力してくれる。",
197
+ "体中に星命力が溢れ出し、限界を超えた大規模な星術を扱えるようになる。",
198
+ ]
199
+ ),
200
+ "BRT" => DiceTable::Table.new(
201
+ "戦果表", # p.191
202
+ "1D6",
203
+ [
204
+ "所持しているアイテムから一つを選び、同じものをもう一つ獲得する。所持していない場合はもう一度戦果表を使用する。",
205
+ "時計を獲得する。",
206
+ "ロザリオを獲得する。",
207
+ "コンパスを獲得する。",
208
+ "星の欠片を獲得する。",
209
+ "自由なアイテムを一つ獲得する。",
210
+ ]
211
+ ),
212
+ "TRO" => DiceTable::Table.new(
213
+ "事件表", # p.193
214
+ "2D6",
215
+ [
216
+ "〈変晶体〉を手にした途端、人形兵の軍勢に見つかり追われることに……! なんとかして振り切ろう!",
217
+ "〈変晶体〉を乗せた物体が空を飛んでいる。接触する方法はないだろうか。",
218
+ "不気味な商人が現れた。価値あるものを差し出せば、〈変晶体〉と交換してくれるという。上手く交渉しよう。",
219
+ "〈変晶体〉の影響で理性を失った人々が大喧嘩をしている。これでは浄化するのも困難だ……仲間と協力して仲裁しよう。",
220
+ "〈変晶体〉は建物の中にあるようだが、警備が厳重だ。どうやって侵入しようか……。",
221
+ "罪のない人たちが〈変晶体〉を持つ敵に捕らわれているようだ。仲間と共に人々を助け出し、〈変晶体〉を浄化しよう。",
222
+ "〈変晶体〉に操られた人々がこちらへ敵意の目を向けている。危害は加えたくないが、一体どうすれば……!",
223
+ "〈変晶体〉に取り憑かれた動物が、仲間に襲いかかった! 早く助け出さなければ!",
224
+ "仲間が敵にさらわれてしまった! 敵は〈変晶体〉も持っているようだ。追跡して仲間を助けなければ!",
225
+ "入り組んだ場所に迷い込んでしまった。〈変晶体〉の気配は近いはずだが、どこにあるのだろう?",
226
+ "〈変晶体〉は深い水の底に沈んでいるようだ。浄化する方法はないだろうか……。",
227
+ ]
228
+ ),
229
+ "ENC" => DiceTable::Table.new(
230
+ "遭遇表", # p.193
231
+ "1D6",
232
+ [
233
+ "『弁士』コオロギのパルランテ\n指定特技: 《調和/人間性5》\n効果: プラネタリカードルール非採用時、このセッション中【運命力】を1点上昇させる。\nプラネタリカードルール採用時、ベネフィックを1枚獲得する。",
234
+ "『航空士』鳩のコロンボ\n指定特技: 《熱意/人間性4》\n効果: コンパスを1つ獲得する。",
235
+ "『医者』カラスのコルヴォ\n指定特技: 《礼節/人間性11》\n効果: 星の欠片を1つ獲得する。",
236
+ "『御者』むく犬のメドーラ\n指定特技: 《知恵/人間性3》\n効果: 時計を1つ獲得する。",
237
+ "『道化』ピエロのアルレッキーノ\n指定特技: 《センス/人間性9》\n効果: 【関係】の使用チェックをすべてはずす。使用チェックがなければ、アルレッキーノに【関係】を獲得する。",
238
+ "『少女』ヤギのカプレッティーナ\n指定特技: 《愛情/人間性7》\n効果: ロザリオを1つ獲得する。",
239
+ ]
240
+ ),
241
+ "FWT" => DiceTable::Table.new(
242
+ "致命傷表", # p.184
243
+ "1D6",
244
+ [
245
+ "敵の攻撃は星人形の瞳を直撃し、宝石は鮮血のごとく砕け散った。PCは形骸化する。",
246
+ "なんとか致命傷は免れたが、もう戦闘は難しそうだ……。PCは戦闘から脱落する。",
247
+ "最後の力をふり絞り、星人形は持っていたものを仲間へ投げ渡した。PCは所持しているアイテムを誰かに譲渡したのち戦闘から脱落する。",
248
+ "星人形は自分の気持ちを誰かに託しながら、地面に倒れ込んだ。仲間のうち誰か一人がPCに対する【関係】を獲得したのち、PCは戦闘から脱落する。",
249
+ "ただでやられるわけにはいかない……! 星人形は捨て身の攻撃を放つ。PCはエネミー1体に霧装の【耐久値】と同じダメージを与えたのち、戦闘から脱落する。",
250
+ "こんなところで倒れるわけにはいかない。星人形は【星命力】1点で戦闘に復帰する。再度【星命力】が0になった場合、PCは致命傷表を使用せず戦闘から脱落する。",
251
+ ]
252
+ ),
253
+ "CAT" => DiceTable::Table.new(
254
+ "カタストロフ表", # p.198
255
+ "1D6",
256
+ [
257
+ "〈劇場〉全体が大きく揺れ、空間に裂け目が生じる。現実は塗り替えられ……〈変容区〉と化した。最も恐れていた事態に、星人形たちは呆然と立ち尽くすほかなかった。",
258
+ "激しい地鳴りと共に人形兵たちの増援が押し寄せ、形成が逆転してしまう。星人形たちはやむを得ず〈劇場〉を後にした。",
259
+ "「時間切れです」戦場に〈悪魔派〉がやってきた。星座の加護は遮られ、星人形の体から力が抜けていく。「いずれまた」という声を最後に星人形の意識は途絶え……現実世界で目を覚ました。",
260
+ "突如〈型堕ち〉が苦しみ始め、体に残っていた〈悪夢の霧〉を爆発させた。意識を失った星人形たちが目覚めたのは現実世界だった。……まだ再挑戦する時間はあるはずだ。",
261
+ "〈型堕ち〉は自分を制御できなくなり、〈悪夢の霧〉に呑まれて姿を消してしまった。主を失った〈劇場〉は成長も衰退もしないまま、鏡の中に残り続けることになるだろう。",
262
+ "〈型堕ち〉の体は膨張する〈悪夢の霧〉の圧力に耐えきれず、宝石を内側から破壊してしまった。〈型堕ち〉に残された命はあとわずかだ。星人形は〈型堕ち〉の最期を看取ることになる。",
263
+ ]
264
+ ),
265
+ "JDSRT" => DiceTable::Table.new(
266
+ "〈魔術師の庭〉回想表", # p.187
267
+ "1D6",
268
+ [
269
+ "仕事に必要な道具が不足し、急遽買い出しへ。荷物が重くなりそうだからと、キーNPCも手伝ってくれることになった。",
270
+ "キーNPCはあなたの仕事に感謝し、プレゼントを贈ってくれた。箱の中身はキーNPCのお気に入りの一品らしい。",
271
+ "主人はお客さんと話し込んでいる。あなたが部屋の片隅で退屈そうにしていると、キーNPCと目が合った。",
272
+ "整備作業がひと区切りついたところで、キーNPCがお茶とお菓子を持ってきてくれた。少し休憩しよう。",
273
+ "整備中、星人形の体に傷が見つかった。どこで付けたのだろう? あなたはキーNPCに聞いてみることにした。",
274
+ "部屋を移動中、あるものが目に留まる。それはキーNPCにとって思い出深いものであるようだ。",
275
+ ]
276
+ ),
277
+ "SHRT" => DiceTable::Table.new(
278
+ "〈セブンス・ヘブン〉回想表", # p.187
279
+ "1D6",
280
+ [
281
+ "掃除をしていたら、お家のものを引っ掛けて壊してしまった! そこへキーNPCがやってきて……。",
282
+ "キーNPCはちょっとお疲れの様子。あなたはお茶とお菓子を持って労ってあげることにした。",
283
+ "料理の材料を取りたいのに、棚に手が届かない……。あなたはキーNPCに助けを求めた。",
284
+ "キーNPCの仕事をお手伝い。こんな体験は初めてだ! あなたはワクワクしながら挑戦する。",
285
+ "お客さんの星人形に制服を貸し出して、一緒に写真撮影をすることに。照れてるだろうか? それともノリノリ?",
286
+ "今日はセブンス・ヘブンのファン感謝イベント。会場には、差し入れを持ったキーNPCの姿もあった。",
287
+ ]
288
+ ),
289
+ "BCRT" => DiceTable::Table.new(
290
+ "〈祝福の鐘〉回想表", # p.187
291
+ "1D6",
292
+ [
293
+ "終演後のエントランスで挨拶をしていると、キーNPCが誰かと話し込んでいる。ちょっと様子を見に行こう。",
294
+ "次の公演に向けて衣装合わせ。どんな役をやる? 衣装のフィット具合はどう? 確認していると、キーNPCが様子を見にやってきた。",
295
+ "基礎練習。地道なルーチンワークの間、スパイスとなるのはキーNPCとのおしゃべりだ。",
296
+ "学校での公演。終わったあと、子どもたちに囲まれてもみくちゃになる。キーNPCは、子どもが好きだったっけ?",
297
+ "地方巡業。一緒に移動するキーNPCと、あれこれ話し込んでいると、意外な話題に移っていって……。",
298
+ "撤収作業も終わりに近づくステージの上。誰もいない客席に向けて、キーNPCが遠い目をしている。",
299
+ ]
300
+ ),
301
+ "ODRT" => DiceTable::Table.new(
302
+ "〈オメガ探偵社〉回想表", # p.187
303
+ "1D6",
304
+ [
305
+ "事件調査のため、キーNPCに聞き込み。何か有益な情報は出るだろうか。世間話になってしまうかも?",
306
+ "依頼もなく平和な探偵事務所へ、キーNPCがやってきた。これが事件の序章に……なるんだろうか?",
307
+ "みんなで、近所の家のペット探し。キーNPCの見知ったペットらしく、ちょっと心配そうな顔をしている。",
308
+ "警察の事件調査を手伝うことに。キーNPCは、事件の重要参考人として呼び出されているようだ。",
309
+ "地道な張り込み調査をしているところへ、キーNPCがやってきた。あなたに差し入れもあるようだ。",
310
+ "華麗なる事件解決! 主人の推理をたくさん手伝うことができた。キーNPCも、あなたに一目置いてくれそう。",
311
+ ]
312
+ ),
313
+ }.freeze
314
+
315
+ register_prefix('\d+D6', RTT.prefixes, TABLES.keys)
316
+ end
317
+ end
318
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'bcdice/base'
3
4
  require 'bcdice/dice_table/d66_range_table'
4
5
 
5
6
  module BCDice
@@ -20,7 +21,7 @@ module BCDice
20
21
  ・表
21
22
  ・プロフ(Profile):年齢表 PAT, 性別表 PST, 国籍表 PCT
22
23
  ・名前表(Name):イギリス NIT, アメリカ NAT, フランス NFT, ドイツ NGT, ソビエト NST, 日本表 NJT
23
- ・過去表(Past):トゥルース PTT, ガーディアン PGT, ノーブル PNT, デヴォート PDT, エセティック PET, チャレンジ PCT
24
+ ・過去表(Past):トゥルース PTT, ガーディアン PGT, ノーブル PNT, デヴォート PDT, エセティック PET, チャレンジ PACT
24
25
  ・経緯表(Background):ギガントアームズ BGT, アーマードリム BAT, エッジモービル BET, クロノウェポン BCT, スパイテック BST, スチームウェア BWT
25
26
  ・特徴表(Feature):特徴表S FST, 特徴表P FPT
26
27
  ・関係性表(Relationship):関係性表S RST, 関係性表P RPT
@@ -52,19 +53,23 @@ module BCDice
52
53
 
53
54
  result =
54
55
  if dice_list.all? { |x| x == 1 }
55
- "ファンブル"
56
+ Result.fumble("ファンブル")
56
57
  elsif target_number
57
- successes >= target_number ? "成功" : "失敗"
58
+ successes >= target_number ? Result.success("成功") : Result.failure("失敗")
59
+ else
60
+ Result.new
58
61
  end
59
62
 
60
- sequence = [
63
+ result.text = [
61
64
  "(#{command})",
62
65
  "[#{dice_list_text}]",
63
66
  "成功数:#{successes}, 失敗数:#{failures}",
64
- result
65
- ].compact
67
+ result.text
68
+ ].compact.join(" > ")
66
69
 
67
- return sequence.join(" > ")
70
+ result.critical = dice_list.include?(6)
71
+
72
+ return result
68
73
  end
69
74
 
70
75
  # スチームパンカーズ用のテーブル
@@ -271,6 +276,19 @@ module BCDice
271
276
  "【報復】 あなたの恩師は過去に蒸気事件で犠牲となっている。あなたはいつか、その犯人に報復するつもりだ。"
272
277
  ]
273
278
  ),
279
+ "PACT" => SPTable.new(
280
+ "過去表『チャレンジ』",
281
+ [
282
+ "【誓い】 とある陰謀により、あなたは大切な何かを失った。いつか陰謀を暴く……それがあなたの誓いだ。",
283
+ "【研究】 あなたは蒸気犯罪で用いられるスチームギアを撲滅するために、常に研究を続けている。",
284
+ "【反抗】 あなたは夢や努力を嘲笑されて育った。そのせいか、人々を虐げる蒸気事件が我慢ならない。",
285
+ "【克服】 あなたは恐ろしい蒸気事件に遭遇した過去がある。その恐怖を克服するため、蒸気事件に挑むのだ。",
286
+ "【修練】 あなたは修練により、己を高める術を知っている。そして修練のため、蒸気事件に挑むのだ。",
287
+ "【挑戦】 あなたは幼少時から困難に立ち向かい続けてきた。ゆえに、蒸気事件であろうと立ち向かうのだ。",
288
+ "【決着】 あなたは怨敵である蒸気事件の犯人を追っている。いつの日か、そいつとは決着をつけるつもりだ。",
289
+ "【異質】 あなたは困難に立ち向かうことでしか高揚できない。そして、蒸気事件以上の困難など存在しないのだ。"
290
+ ]
291
+ ),
274
292
  "BGT" => SPTable.new(
275
293
  "経緯表『ギガントアームズ』",
276
294
  [