bcdice 3.1.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +154 -75
  3. data/README.md +3 -2
  4. data/i18n/Cthulhu/zh_hans.yml +11 -0
  5. data/i18n/MagicaLogia/zh_hans.yml +564 -0
  6. data/i18n/StellarKnights/ja_jp.yml +498 -0
  7. data/i18n/StellarKnights/ko_kr.yml +498 -0
  8. data/i18n/zh_hans.yml +7 -0
  9. data/lib/bcdice/command/parsed.rb +11 -3
  10. data/lib/bcdice/command/parser.rb +179 -100
  11. data/lib/bcdice/common_command/add_dice.rb +1 -1
  12. data/lib/bcdice/common_command/barabara_dice/node.rb +2 -2
  13. data/lib/bcdice/common_command/barabara_dice/result.rb +6 -0
  14. data/lib/bcdice/common_command/calc.rb +1 -1
  15. data/lib/bcdice/common_command/choice.rb +78 -7
  16. data/lib/bcdice/dice_table.rb +3 -0
  17. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  18. data/lib/bcdice/dice_table/d66_left_range_table.rb +29 -0
  19. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  20. data/lib/bcdice/game_system.rb +10 -0
  21. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  22. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  23. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  24. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  25. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  26. data/lib/bcdice/game_system/Amadeus.rb +110 -93
  27. data/lib/bcdice/game_system/AngelGear.rb +10 -5
  28. data/lib/bcdice/game_system/AnimaAnimus.rb +16 -9
  29. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  30. data/lib/bcdice/game_system/Avandner.rb +1 -1
  31. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  32. data/lib/bcdice/game_system/BattleTech.rb +109 -28
  33. data/lib/bcdice/game_system/BeastBindTrinity.rb +28 -12
  34. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  35. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  36. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  37. data/lib/bcdice/game_system/BlindMythos.rb +39 -38
  38. data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
  39. data/lib/bcdice/game_system/BloodMoon.rb +9 -8
  40. data/lib/bcdice/game_system/CardRanker.rb +8 -7
  41. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  42. data/lib/bcdice/game_system/Chill.rb +10 -10
  43. data/lib/bcdice/game_system/Chill3.rb +9 -9
  44. data/lib/bcdice/game_system/CodeLayerd.rb +39 -39
  45. data/lib/bcdice/game_system/ColossalHunter.rb +34 -47
  46. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  47. data/lib/bcdice/game_system/Cthulhu.rb +1 -1
  48. data/lib/bcdice/game_system/Cthulhu7th.rb +50 -12
  49. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  50. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  51. data/lib/bcdice/game_system/Cthulhu_SimplifiedChinese.rb +60 -0
  52. data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
  53. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  54. data/lib/bcdice/game_system/DeadlineHeroes.rb +11 -10
  55. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  56. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  57. data/lib/bcdice/game_system/DoubleCross.rb +3 -1
  58. data/lib/bcdice/game_system/Dracurouge.rb +3 -2
  59. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  60. data/lib/bcdice/game_system/Elric.rb +18 -14
  61. data/lib/bcdice/game_system/Elysion.rb +1 -1
  62. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  63. data/lib/bcdice/game_system/Emoklore.rb +25 -20
  64. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  65. data/lib/bcdice/game_system/FilledWith.rb +4 -0
  66. data/lib/bcdice/game_system/FutariSousa.rb +12 -10
  67. data/lib/bcdice/game_system/GURPS.rb +17 -28
  68. data/lib/bcdice/game_system/Garako.rb +1 -1
  69. data/lib/bcdice/game_system/GardenOrder.rb +12 -7
  70. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  71. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  72. data/lib/bcdice/game_system/Gorilla.rb +2 -8
  73. data/lib/bcdice/game_system/GranCrest.rb +189 -417
  74. data/lib/bcdice/game_system/Gundog.rb +9 -8
  75. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  76. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  77. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  78. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  79. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  80. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  81. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  82. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  83. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  84. data/lib/bcdice/game_system/Insane.rb +13 -20
  85. data/lib/bcdice/game_system/Irisbane.rb +154 -0
  86. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  87. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  88. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  89. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  90. data/lib/bcdice/game_system/KanColle.rb +4 -9
  91. data/lib/bcdice/game_system/KemonoNoMori.rb +26 -39
  92. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  93. data/lib/bcdice/game_system/KurayamiCrying.rb +141 -2
  94. data/lib/bcdice/game_system/LiveraDoll.rb +254 -304
  95. data/lib/bcdice/game_system/LogHorizon.rb +13 -10
  96. data/lib/bcdice/game_system/MagicaLogia_SimplifiedChinese.rb +66 -0
  97. data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
  98. data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
  99. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +4 -3
  100. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  101. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  102. data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
  103. data/lib/bcdice/game_system/Nechronica.rb +63 -90
  104. data/lib/bcdice/game_system/NinjaSlayer.rb +6 -7
  105. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  106. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  107. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  108. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  109. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  110. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  111. data/lib/bcdice/game_system/PersonaO.rb +86 -0
  112. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  113. data/lib/bcdice/game_system/Postman.rb +1 -1
  114. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  115. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  116. data/lib/bcdice/game_system/Revulture.rb +123 -0
  117. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  118. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  119. data/lib/bcdice/game_system/SRS.rb +17 -16
  120. data/lib/bcdice/game_system/SamsaraBallad.rb +38 -11
  121. data/lib/bcdice/game_system/Satasupe.rb +32 -32
  122. data/lib/bcdice/game_system/ScreamHighSchool.rb +5 -5
  123. data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
  124. data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
  125. data/lib/bcdice/game_system/Skynauts.rb +103 -142
  126. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  127. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  128. data/lib/bcdice/game_system/SteamPunkers.rb +25 -7
  129. data/lib/bcdice/game_system/StellarKnights.rb +85 -706
  130. data/lib/bcdice/game_system/StellarKnights_Korean.rb +79 -0
  131. data/lib/bcdice/game_system/SterileLife.rb +2 -3
  132. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  133. data/lib/bcdice/game_system/Strave.rb +1 -1
  134. data/lib/bcdice/game_system/SwordWorld.rb +16 -7
  135. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -2
  136. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -2
  137. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  138. data/lib/bcdice/game_system/TokumeiTenkousei.rb +4 -3
  139. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  140. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  141. data/lib/bcdice/game_system/ToshiakiHolyGrailWar.rb +92 -0
  142. data/lib/bcdice/game_system/TrinitySeven.rb +279 -280
  143. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  144. data/lib/bcdice/game_system/Utakaze.rb +53 -48
  145. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  146. data/lib/bcdice/game_system/WARPS.rb +11 -9
  147. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  148. data/lib/bcdice/game_system/Warhammer.rb +15 -6
  149. data/lib/bcdice/game_system/Warhammer4.rb +15 -11
  150. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  151. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  152. data/lib/bcdice/game_system/Yggdrasill.rb +1 -1
  153. data/lib/bcdice/game_system/ZettaiReido.rb +20 -25
  154. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  155. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +4 -4
  156. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  157. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
  158. data/lib/bcdice/repl.rb +1 -1
  159. data/lib/bcdice/result.rb +26 -0
  160. data/lib/bcdice/version.rb +1 -1
  161. metadata +22 -5
@@ -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
  [
@@ -17,12 +17,15 @@ module BCDice
17
17
 
18
18
  # ダイスボットの使い方
19
19
  HELP_MESSAGE = <<~MESSAGETEXT
20
- ・判定 nSK[d][,k>l,...]
20
+ ・アタック判定 nSK[d][,k>l,...]
21
21
  []内は省略可能。
22
22
  n: ダイス数、d: アタック判定における対象の防御力、k, l: ダイスの出目がkならばlに変更(アマランサスのスキル「始まりの部屋」用)
23
23
  d省略時はダイスを振った結果のみ表示。(nSKはnB6と同じ)
24
24
 
25
25
  4SK: ダイスを4個振って、その結果を表示
26
+ 4+2SK: ダイスを4+2 (=6) 個振って、その結果を表示
27
+ 5/2SK: ダイスを5個の半分 (=2) 個振って、その結果を表示
28
+ (5+3)/2SK: ダイスを(5+3)個の半分 (=4) 個振って、その結果を表示
26
29
  5SK3: 【アタック判定:5ダイス】、対象の防御力を3として成功数を表示
27
30
  3SK,1>6: ダイスを3個振り、出目が1のダイスを全て6に変更し、その結果を表示
28
31
  6SK4,1>6,2>6: 【アタック判定:6ダイス】、出目が1と2のダイスを全て6に変更、対象の防御力を4として成功数を表示
@@ -73,10 +76,14 @@ module BCDice
73
76
  def eval_game_system_specific_command(command)
74
77
  command = command.upcase
75
78
 
76
- if (table = TABLES[command])
79
+ if (table = self.class::TABLES[command])
77
80
  table.roll(@randomizer)
78
- elsif (m = /(\d+)SK(\d)?((,\d>\d)+)?/.match(command))
79
- resolute_action(m[1].to_i, m[2] && m[2].to_i, m[3], command)
81
+ elsif (m = %r{([()+/\d]+)SK(\d)?((,\d>\d)+)?}.match(command))
82
+ num_dices = Arithmetic.eval(m[1], RoundType::FLOOR)
83
+
84
+ unless num_dices.nil?
85
+ resolute_action(num_dices, m[2] && m[2].to_i, m[3])
86
+ end
80
87
  elsif command == 'STB2'
81
88
  roll_all_situation_b2_tables
82
89
  elsif command == 'ALLS'
@@ -94,13 +101,15 @@ module BCDice
94
101
  # @param [Integer] num_dices
95
102
  # @param [Integer | nil] defence
96
103
  # @param [String] dice_change_text
97
- # @param [String] command
98
- # @return [String]
99
- def resolute_action(num_dices, defence, dice_change_text, command)
104
+ # @return [Result, String]
105
+ def resolute_action(num_dices, defence, dice_change_text)
100
106
  dices = @randomizer.roll_barabara(num_dices, 6).sort
101
107
  dice_text = dices.join(",")
102
108
 
103
- output = "(#{command}) > #{dice_text}"
109
+ output = "(#{remake_command(num_dices, defence, dice_change_text)}) > #{dice_text}"
110
+ if dices.empty?
111
+ return output + translate("StellarKnights.SK.no_dice_error")
112
+ end
104
113
 
105
114
  # FAQによると、ダイスの置き換えは宣言された順番に適用されていく
106
115
  dice_change_rules = parse_dice_change_rules(dice_change_text)
@@ -113,12 +122,27 @@ module BCDice
113
122
  output += " > [#{dices.join(',')}]"
114
123
  end
115
124
 
116
- unless defence.nil?
117
- success = dices.count { |val| val >= defence }
118
- output += " > 成功数: #{success}"
125
+ if defence.nil?
126
+ success = false
127
+ failure = false
128
+ else
129
+ success_num = dices.count { |val| val >= defence }
130
+ output += " > " + translate("StellarKnights.SK.success_num", success_num: success_num)
131
+ success = success_num > 0
132
+ failure = !success
133
+ end
134
+
135
+ Result.new(output).tap do |r|
136
+ r.success = success
137
+ r.failure = failure
119
138
  end
139
+ end
120
140
 
121
- output
141
+ def remake_command(num_dices, defence, dice_change_text)
142
+ command = "#{num_dices}SK"
143
+ command += defence.to_s unless defence.nil?
144
+ command += dice_change_text unless dice_change_text.nil?
145
+ command
122
146
  end
123
147
 
124
148
  def parse_dice_change_rules(text)
@@ -136,17 +160,19 @@ module BCDice
136
160
  end
137
161
 
138
162
  def roll_all_situation_b2_tables
139
- (1..6).map { |num| TABLES["STB2#{num}"].roll(@randomizer) }.join("\n")
163
+ (1..6).map { |num| self.class::TABLES["STB2#{num}"].roll(@randomizer) }.join("\n")
140
164
  end
141
165
 
142
166
  def roll_all_situation_tables
143
- ['STA', 'STB', 'STC'].map { |command| TABLES[command].roll(@randomizer) }.join("\n")
167
+ ['STA', 'STB', 'STC'].map { |command| self.class::TABLES[command].roll(@randomizer) }.join("\n")
144
168
  end
145
169
 
146
170
  def roll_personality_table
147
- value1, index1 = get_table_by_d66(PERSONALITY_TABLE)
148
- value2, index2 = get_table_by_d66(PERSONALITY_TABLE)
149
- return "性格表(#{index1},#{index2}) > #{value1}にして#{value2}"
171
+ value1, index1 = get_table_by_d66(translate("StellarKnights.PET.items"))
172
+ value2, index2 = get_table_by_d66(translate("StellarKnights.PET.items"))
173
+ name = translate("StellarKnights.PET.name")
174
+ result = translate("StellarKnights.PET.result", value1: value1, value2: value2)
175
+ return "#{name}(#{index1},#{index2}) > #{result}"
150
176
  end
151
177
 
152
178
  def roll_fragment_table(num)
@@ -154,700 +180,53 @@ module BCDice
154
180
  return nil
155
181
  end
156
182
 
157
- results = Array.new(num) { get_table_by_d66(FRAGMENT_TABLE) }
183
+ results = Array.new(num) { get_table_by_d66(translate("StellarKnights.FT.items")) }
158
184
  values = results.map { |r| r[0] }
159
185
  indexes = results.map { |r| r[1] }
186
+ name = translate("StellarKnights.FT.name")
187
+
188
+ return "#{name}(#{indexes.join(',')}) > #{values.join(translate('StellarKnights.FT.sep'))}"
189
+ end
190
+
191
+ class << self
192
+ private
160
193
 
161
- return "フラグメント表(#{indexes.join(',')}) > #{values.join(',')}"
194
+ def translate_tables(locale)
195
+ {
196
+ "TT" => DiceTable::D66GridTable.from_i18n("StellarKnights.tables.TT", locale),
197
+ "STA" => DiceTable::Table.from_i18n("StellarKnights.tables.STA", locale),
198
+ "STB" => DiceTable::D66OneThirdTable.from_i18n("StellarKnights.tables.STB", locale),
199
+ "STB21" => DiceTable::Table.from_i18n("StellarKnights.tables.STB21", locale),
200
+ "STB22" => DiceTable::Table.from_i18n("StellarKnights.tables.STB22", locale),
201
+ "STB23" => DiceTable::Table.from_i18n("StellarKnights.tables.STB23", locale),
202
+ "STB24" => DiceTable::Table.from_i18n("StellarKnights.tables.STB24", locale),
203
+ "STB25" => DiceTable::Table.from_i18n("StellarKnights.tables.STB25", locale),
204
+ "STB26" => DiceTable::Table.from_i18n("StellarKnights.tables.STB26", locale),
205
+ "STC" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.STC", locale),
206
+ "GAT" => DiceTable::Table.from_i18n("StellarKnights.tables.GAT", locale),
207
+ "HOT" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.HOT", locale),
208
+ "DET" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.DET", locale),
209
+ "WIT" => DiceTable::D66OneThirdTable.from_i18n("StellarKnights.tables.WIT", locale),
210
+ "YST" => DiceTable::D66OneThirdTable.from_i18n("StellarKnights.tables.YST", locale),
211
+ "YSTA" => DiceTable::D66OneThirdTable.from_i18n("StellarKnights.tables.YSTA", locale),
212
+ "YSTM" => DiceTable::D66OneThirdTable.from_i18n("StellarKnights.tables.YSTM", locale),
213
+ "STM" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.STM", locale),
214
+ "YSTL" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.YSTL", locale),
215
+ "YSTR" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.YSTR", locale),
216
+ "STBR" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.STBR", locale),
217
+ "STCR" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.STCR", locale),
218
+ "STBS" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.STBS", locale),
219
+ "STE" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.STE", locale),
220
+ "YSTB" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.YSTB", locale),
221
+ "YSTF" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.YSTF", locale),
222
+ "STAL" => DiceTable::D66HalfGridTable.from_i18n("StellarKnights.tables.STAL", locale),
223
+ }
224
+ end
162
225
  end
163
226
 
164
- THEME_TABLE = [
165
- ['未来', '占い', '遠雷', '恋心', '歯磨き', '鏡'].freeze,
166
- ['過去', 'キス', 'ささやき声', '黒い感情', 'だっこ', '青空'].freeze,
167
- ['童話', '決意', '風の音', '愛情', '寝顔', '鎖'].freeze,
168
- ['ふたりの秘密', 'アクシデント!', '小鳥の鳴き声', '笑顔', '食事', '宝石'].freeze,
169
- ['思い出', 'うとうと', '鼓動', '嫉妬', 'ベッド', '泥'].freeze,
170
- ['恋の話', 'デート', 'ため息', '内緒話', 'お風呂', '小さな傷'].freeze,
171
- ].freeze
172
-
173
- SITUATION_TABLE_A = ['朝、誰もいない', '騒がしい昼間の', '寂しい夕暮れの横たわる', '星の瞬く夜、', '静謐の夜更けに包まれた', '夜明け前の'].freeze
174
-
175
- SITUATION_TABLE_B_1_2 = [
176
- "教室  小道具:窓、机、筆記用具、チョークと黒板、窓の外から聞こえる部活動の声",
177
- "カフェテラス 小道具:珈琲、紅茶、お砂糖とミルク、こちらに手を振っている学友",
178
- "学園の中庭 小道具:花壇、鳥籠めいたエクステリア、微かに聴こえる鳥の囁き",
179
- "音楽室 小道具:楽器、楽譜、足踏みオルガン、壁に掛けられた音楽家の肖像画",
180
- "図書館 小道具:高い天井、天井に迫る程の本棚、無数に収められた本",
181
- "渡り廊下 小道具:空に届きそうな高さ、遠くに別の学園が見える、隣を飛び過ぎて行く鳥",
182
- ].freeze
183
-
184
- SITUATION_TABLE_B_3_4 = [
185
- "花の咲き誇る温室 小道具:むせ返るような花の香り、咲き誇る花々、ガラス越しの陽光",
186
- "アンティークショップ 小道具:アクセサリーから置物まで、見慣れない古い機械は地球時代のもの?",
187
- "ショッピングモール 小道具:西欧の街並みを思わせるショッピングモール、衣類に食事、お茶屋さんも",
188
- "モノレール 小道具:車窓から覗くアーセルトレイの街並み、乗客はあなたたちだけ",
189
- "遊歩道 小道具:等間隔に並ぶ街路樹、レンガ造りの街並み、微かに小鳥のさえずり",
190
- "おしゃれなレストラン 小道具:おいしいごはん、おしゃれな雰囲気、ゆったりと流れる時間",
191
- ].freeze
192
-
193
- SITUATION_TABLE_B_5_6 = [
194
- "何処ともしれない暗がり 小道具:薄暗がりの中、微かに見えるのは互いの表情くらい",
195
- "寂れた喫茶店 小道具:姿を見せないマスター、その孫娘が持ってくる珈琲、静かなひととき",
196
- "階段の下、秘密のお茶会 小道具:知る人ぞ知る階段下スペースのお茶会、今日はあなたたちだけ",
197
- "学生寮の廊下 小道具:滅多に人とすれ違わない学生寮の廊下、窓の外には中庭が見える",
198
- "ふたりの部屋 小道具:パートナーと共に暮らすあなたの部屋、内装や小物はお気に召すまま",
199
- "願いの決闘場 小道具:決闘の場、ステラナイトたちの花章が咲き誇る場所",
200
- ].freeze
201
-
202
- SITUATION_TABLE_B = [
203
- SITUATION_TABLE_B_1_2,
204
- SITUATION_TABLE_B_1_2,
205
- SITUATION_TABLE_B_3_4,
206
- SITUATION_TABLE_B_3_4,
207
- SITUATION_TABLE_B_5_6,
208
- SITUATION_TABLE_B_5_6,
209
- ].freeze
210
-
211
- SITUATION_TABLE_B2_1 = ['地下のだだっぴろい学食', 'パンの種類が豊富な購買の前', '本当は進入禁止の屋上', 'キャンプ部が手入れしている中庭', '共用の広いグラウンド', '使い古された教室'].freeze
212
-
213
- SITUATION_TABLE_B2_2 = ['(美術or音楽)準備室', '美しく整備された中庭', '音楽室', '格調高いカフェテラス', '誰もいない大型劇場', '完璧な調和を感じる温室'].freeze
214
-
215
- SITUATION_TABLE_B2_3 = ['中庭の神殿めいた温室', '質素だが美しい会食室', '天井まで届く本棚の並ぶ図書館', '誰もいない学習室', '寮生たちの秘密のお茶会室', '寮の廊下'].freeze
216
-
217
- SITUATION_TABLE_B2_4 = ['遠く聞こえる爆発音', '学生のアンケート調査を受ける', '空から降ってくるドローン', '膨大な蔵書を備えた閉架書庫', '鳴らすと留年するという小さな鐘の前', '木漏れ日のあたたかな森'].freeze
218
-
219
- SITUATION_TABLE_B2_5 = ['おしゃれなカフェテラス', '小さなプラネタリウム', 'ローマの神殿めいた屋内プール', '誰もいない講堂', '謎のおしゃれな空き部屋', '花々の咲き乱れる温室'].freeze
220
-
221
- SITUATION_TABLE_B2_6 = ['人気のない教室', '歴代の寄せ書きの刻まれた校門前', '珍しく人気のない学食', '鍵の外れっぱなしの屋上', '校舎裏', '外周環状道路へ繋がる橋'].freeze
222
-
223
- SITUATION_TABLE_C_1_2_3 = [
224
- "未来の話:決闘を勝ち抜いたら、あるいは負けてしまったら……未来のふたりはどうなるのだろう。",
225
- "衣服の話:冴えない服を着たりしていないか? あるいはハイセンス過ぎたりしないだろうか。よぉし、私が選んであげよう!!",
226
- "ステラバトルの話:世界の未来は私たちにかかっている。頭では分かっていても、まだ感情が追いつかないな……。",
227
- "おいしいごはんの話:おいしいごはんは正義。100年前も6405年前も異世界だろうと、きっと変わらない真理なのだ。おかわり!",
228
- "家族の話:生徒たちは寮生活が多い。離れて暮らす家族は、どんな人たちなのか。いつかご挨拶に行きたいと言い出したりしても良いだろう。",
229
- "次の週末の話:週末、何をしますか? 願いをかけた決闘の合間、日常のひとときも、きっと大切な時間に違いない。",
230
- ].freeze
231
-
232
- SITUATION_TABLE_C_4_5_6 = [
233
- "好きな人の話:……好きな人、いるんですか? これはきっと真剣な話。他の何よりも重要な話だ。",
234
- "子供の頃の話:ちいさな頃、パートナーはどんな子供だったのだろうか。どんな遊びをしたのだろうか。",
235
- "好きなタイプの話:パートナーはどんな人が好みなのでしょうか……。気になります、えぇ。",
236
- "思い出話:ふたりの思い出、あるいは出会う前の思い出の話。",
237
- "願いの話:叶えたい願いがあるからこそ、ふたりは出会った。この戦いに勝利したら、どんな形で願いを叶えるのだろうか。",
238
- "ねぇ、あの子誰?:この前見かけたパートナーと一緒にいた子。あの子誰?だーれー!? むー!!"
239
- ].freeze
240
-
241
- SITUATION_TABLE_C = [
242
- SITUATION_TABLE_C_1_2_3,
243
- SITUATION_TABLE_C_1_2_3,
244
- SITUATION_TABLE_C_1_2_3,
245
- SITUATION_TABLE_C_4_5_6,
246
- SITUATION_TABLE_C_4_5_6,
247
- SITUATION_TABLE_C_4_5_6,
248
- ].freeze
249
-
250
- GAKUEN_TABLE = [
251
- "アーセルトレイ公立大学",
252
- "イデアグロリア芸術総合大学",
253
- "シトラ女学院",
254
- "フィロソフィア大学",
255
- "聖アージェティア学園",
256
- "スポーン・オブ・アーセルトレイ",
257
- ].freeze
258
-
259
- HOPE_TABLE_1_2_3 = [
260
- "より良き世界:世界はもっとステキになる。きっと、ずっと、もっと。",
261
- "まだまだ物足りない:もっと上へ、もっと強く、あなたの未来は輝いている。",
262
- "立ち止まっている暇はない!:止まっている時間がもったいない。もっともっと世界を駆けるのだ!",
263
- "私が守るよ:君を傷つける全てから、私が絶対守ってあげる。",
264
- "未来は希望に満ちている:生きていないと、素敵なことは起きないんだ!",
265
- "慈愛の手:届く限り、あなたは手を差し伸べ続ける。",
266
- ].freeze
267
-
268
- HOPE_TABLE_4_5_6 = [
269
- "自分を犠牲にしてでも:世界はもっときらきらしているんだよ。それを伝える為に、あなたは自分すら犠牲にする。",
270
- "右手を伸ばす:救いたいもの、助けたいもの、大事なもの、なにひとつ見捨てるつもりはない!",
271
- "無限の愛:愛を注ごう。この胸に溢れんばかりのこの愛を!",
272
- "あなたを王に:絶望を知ったパートナーこそ、世界の王に相応しい。私があなたを王にする!",
273
- "救世主:私はきっと、世界を救える。誰だって、救ってみせる。",
274
- "大好きな人のために!:世界は希望に満ちている。あなたをもっと幸せにしたいの!",
275
- ].freeze
276
-
277
- HOPE_TABLE = [
278
- HOPE_TABLE_1_2_3,
279
- HOPE_TABLE_1_2_3,
280
- HOPE_TABLE_1_2_3,
281
- HOPE_TABLE_4_5_6,
282
- HOPE_TABLE_4_5_6,
283
- HOPE_TABLE_4_5_6,
284
- ].freeze
285
-
286
- DESPAIR_TABLE_1_2_3 = [
287
- "理不尽なる世界:あなたは世界が如何に理不尽であるか思い知った。",
288
- "この手は届かない:あなたにも目標はあった。しかし、もうこの手は届かないのだ。",
289
- "停滞した世界:どんなにあがこうと、世界は変わらない。この絶望は救われない。",
290
- "どうして僕をいじめるの:あなたは虐げられて生きてきた。守ってくれる者など、どこにもいなかった。",
291
- "過去は絶望に満ちている:ずっとずっと、悪いことばかり、辛いことばかりだった。",
292
- "周囲の視線:世界があなたを見る目は、限りなく冷たいものだった。",
293
- ].freeze
294
-
295
- DESPAIR_TABLE_4_5_6 = [
296
- "大事故:それは壮絶な事故、いいや、それは事故なんて優しいものですらなかった。",
297
- "目の前で消えたモノ:あなたの目の前で、大切なものは消えてしまった。",
298
- "喪失:何よりも大事にしていたものは、もう二度と、この手には戻らない。",
299
- "没落:あなたか、あなたの親か、ともかくあなたはかつての栄華を一瞬にして失った。",
300
- "救いはない:底の底へと沈んでしまった。もう、誰も、俺を救ってくれる人は……。",
301
- "偽物だった:あなたは幸せだった。そう思っていた。でもそれは全て作り物で、あなたは騙されていたのだ。",
302
- ].freeze
303
-
304
- DESPAIR_TABLE = [
305
- DESPAIR_TABLE_1_2_3,
306
- DESPAIR_TABLE_1_2_3,
307
- DESPAIR_TABLE_1_2_3,
308
- DESPAIR_TABLE_4_5_6,
309
- DESPAIR_TABLE_4_5_6,
310
- DESPAIR_TABLE_4_5_6,
311
- ].freeze
312
-
313
- YOUR_STORY_TABLE_1_2 = [
314
- "熟練ステラナイト:あなたは既に何度もステラバトルを征してきた熟練者で ある。【勲章:3~7の間の好きな値】【歪みの共鳴:1】",
315
- "権力者の血筋:統治政府や企業の上層部、あるいは学園組織の運営者の家系である。",
316
- "天才:あなたは紛うことなき天才だ。",
317
- "天涯孤独:あなたに両親はいない。促成培養槽で造られた者なのか、あるいは両親を失ったのか……。",
318
- "救いの手:あなたは誰かに助けてもらった。だから、ここにいるのだ。",
319
- "欠損:心や身体、大切な宝物、家族、あなたは何かを失って、そのまま今に至った。",
320
- ].freeze
321
-
322
- YOUR_STORY_TABLE_3_4 = [
323
- "大切なもの:大事にしているものがある。",
324
- "お気に入りの場所:好きな場所がある。秘密の場所、あるいは誰かと来たい場所。",
325
- "メイド or バトラー:あなたには仕えるべき相手がいる。金銭の関係か、家柄か、恩義故かは自由に決めて良い。",
326
- "パートナー大好き!!!!!!:私はー!! パートナーがー!! 大好きだー!!!",
327
- "目指せ理想のタイプ:パートナーの理想のタイプ目指してー、ファイトー!!",
328
- "世界への不満:こんな世界はダメダメだ! 私が絶対に創り変えてやる!!",
329
- ].freeze
330
-
331
- YOUR_STORY_TABLE_5_6 = [
332
- "停滞:何もかもがつまらない。満たされない。動かない世界に嫌気が差している。",
333
- "願いの奴隷:願いを叶える為なら、手段は選ばない。願いの為だけに私は生きている。",
334
- "犯罪者の子:あなたの親は何らかの犯罪に手を染めた。その悪評は、子である君にも影響を及ぼしている。",
335
- "探求者:世界の真実、隠された真実、万物の真理……あなたが追い求めるものはどこまでも尽きない。",
336
- "正義:困った人を見捨てられない、悪は許せない、この胸に宿るのは正義の心。",
337
- "誓約生徒会(カヴェナンター):あなたは一度、エクリプスと化し、討伐された者だ。しかし願いを諦めることは出来ない。だから、あなたはこの仮面を受け取り、戦い続けているのだ。【勲章:0~5の間の好きな値】【歪みの共鳴:0~2の間の好きな値】",
338
- ].freeze
339
-
340
- YOUR_STORY_TABLE = [
341
- YOUR_STORY_TABLE_1_2,
342
- YOUR_STORY_TABLE_1_2,
343
- YOUR_STORY_TABLE_3_4,
344
- YOUR_STORY_TABLE_3_4,
345
- YOUR_STORY_TABLE_5_6,
346
- YOUR_STORY_TABLE_5_6,
347
- ].freeze
348
-
349
- YOUR_STORY_TABLE_ANOTHER_WORLD_1_2 = [
350
- "終わりなき戦場:あなたは果ての見えない戦場の世界からここへ流れ着いた。",
351
- "滅びの世界:戦争、あるいは環境汚染か、滅びた後の世界から、あなたはここへ流れ着いた。",
352
- "獣人たちの世界:人とは、獣の特徴を備えた者を指す言葉だった――あなたの世界では。あなたは獣の特徴を備えており、それはアーセルトレイでは奇異の目で見られることだろう。",
353
- "箱庭の世界:都市か、屋敷か、あなたの住んでいた世界は極狭いものだった。大好きな姉妹や家族と、ただ平穏に暮らすだけの日々。永遠に続くと思っていたそれは、ある日突然に崩壊して、あなたはこの世界へと辿り着いた。",
354
- "永遠なる迷宮の世界:無限に広がる迷宮の世界、人々はそこを旅する探索者だった。旧世界の遺産とも称される星まるごとが迷宮の世界、心躍る冒険――そんな日々は、ある日突然に終わってしまった。あなたが辿り着いたのは、アーセルトレイと呼ばれるこの場所だった。",
355
- "巡礼者の世界:広大な自然と石造りの都の世界を、誰もが旅をし続ける世界からあなたはここへ流れ着いた。アーセルトレイに存在する文明は、どれもあなたにとって未知のものだろう。だが、広大なるあの世界へ、戻ることはもう出来ないのだ。",
356
- ].freeze
357
-
358
- YOUR_STORY_TABLE_ANOTHER_WORLD_3_4 = [
359
- "永遠のヴィクトリア:200年にわたるヴィクトリア女王の統治が続く常闇の世界。蒸気の霧が街を覆い、夜な夜な怪人が闊歩する世界から、あなたはここへ流れ着いた。あなたからすれば、ここは平和な世界だ。しかし、ステラバトルの願いがぶつかる華やかさだけは、あの頃を思い出させる。",
360
- "剣撃乱舞する世界:我々からすれば戦国と呼ばれた極東の一時代を、永遠に繰り返していた世界からあなたはここへ流れ着いた。あなたの剣技は、ステラバトルを切り抜けるのに十分に役立つことだろう。",
361
- "薄暗き森の世界:広大にして永遠に続く森に包まれた世界、霧と風、獣の鳴き声に満ちた世界から、あなたはここへ流れ着いた。あなたの姿を見て、エルフだとか、妖精だとか呼ぶものもいるかもしれないが、あなたには関係のないことだ。",
362
- "人類の瀬戸際:ここも、故郷も、大して変わらない。あなたの故郷は、地球に先んじてロアテラに滅ぼされた世界だ。ここを守護することに躊躇いはない。しかしそれよりも、あなたにとってはここで出会った唯一のパートナーの方が大切なのだ。",
363
- "人形劇の世界:あなたの世界に生きる人々は、元々は人間と呼ばれていたらしい。全ての住人が人形と化したあなたの故郷は、それなりに平和で、楽しいものだったはずだ。しかしそんな日々は、ある日突然終わってしまった。人形そのものであるあなたの姿は、時に奇異の目で見られることだろう。",
364
- "怪獣迎撃の世界:巨大な怪獣が存在し、それを迎え撃つ戦いを繰り返していた世界から、あなたはここへ流れ着いた。そして今も、アーセルトレイは異世界からの侵略者、ロアテラに狙われていると、あなたは理解している。",
365
- ].freeze
366
-
367
- YOUR_STORY_TABLE_ANOTHER_WORLD_5_6 = [
368
- "蒸気機関の世界:蒸気機関技術が異様に発達した世界から、あなたはここへ流れ着いた。アーセルトレイの技術レベルはそれらに匹敵するものだが、あなたからすると使い方の分からない不思議な技術だ。",
369
- "極東幻想の世界:我々の知る旧地球時代の日本、その国にて語られた鬼や妖怪が実在した世界からあなたはここへ流れ着いた。あなたからすれば、ステラナイトの強さはそれらをも超えるものかもしれない。",
370
- "異端生物の世界:バイオ技術か、交配の結果か、様々な生物と人類が融合した世界から、あなたはここへ辿り着いた。獣や鳥、海棲生物の特徴をあなたは備えている。",
371
- "異端科学の世界:人と機械の境界が曖昧な世界、個と全が曖昧な世界から、あなたはここへ流れ着いた。",
372
- "先進科学の世界:地球の科学がどこまでも真っ直ぐに育った世界から、あなたはここへ流れ着いた。美しく磨きあげられた街並み、道行く人の誰もが笑顔で、万人が幸せな世界から。",
373
- "草花の世界:植物と人が融合した世界から、あなたはここへ流れ着いた。あなたの身体は植物そのものかもしれないし、あるいは眼窩から花が咲いているかもしれない。",
374
- ].freeze
375
-
376
- YOUR_STORY_TABLE_ANOTHER_WORLD = [
377
- YOUR_STORY_TABLE_ANOTHER_WORLD_1_2,
378
- YOUR_STORY_TABLE_ANOTHER_WORLD_1_2,
379
- YOUR_STORY_TABLE_ANOTHER_WORLD_3_4,
380
- YOUR_STORY_TABLE_ANOTHER_WORLD_3_4,
381
- YOUR_STORY_TABLE_ANOTHER_WORLD_5_6,
382
- YOUR_STORY_TABLE_ANOTHER_WORLD_5_6,
383
- ].freeze
384
-
385
- WISH_TABLE_1_2 = [
386
- "未知の開拓者:誰も知らない世界、誰も知らない宇宙、誰も知らない星に旅立つんだ!【願いの階梯:4】",
387
- "故郷の復興:あなたの故郷である異世界、あるいは地球を復興する。【願いの階梯:4(階層規模の場合)】【願いの階梯:7(惑星規模の場合)】",
388
- "復讐:絶対にこの復讐を果たすのだ。【願いの階梯:2】",
389
- "誰にも傷つけられない世界:誰も私たちを傷つけない。そんな世界であればいい。【願いの階梯:7(惑星規模)】【願いの階梯:8(宇宙規模)】",
390
- "きらめく世界:世界を明るく楽しくしたい。私が光になるんだ!【願いの階梯:3(自分の変革)】【願いの階梯:7(世界そのものの変革)】",
391
- "おいしいごはん:ふたりで美味しいご飯を食べよう。それが世界で、一番大切なことなんだよ!【願いの階梯:2(おいしいごはんを食べるだけ)】【願いの階梯:4(ふたりの置かれた状況の改善)】",
392
- ].freeze
393
-
394
- WISH_TABLE_3_4 = [
395
- "私だけのもの:独り占めしたいモノがある。【願いの階梯:5】",
396
- "新たなる存在:この世に存在しないけれど、存在してほしいと願うモノ。私はそれが欲しいんだ。【願いの階梯:6】",
397
- "欲しいもの:どうしても手に入れたいものがある。【願いの階梯:1~10(欲しいものの種類によって変動)】",
398
- "取り戻す:あなたたちは何かを奪われた。それを取り戻すのが、唯一の願いだ。【願いの階梯:4(努力次第でいつか手に届く範囲)】【願いの階梯:6(通常は取り戻せないもの)】",
399
- "誰よりも、高く、遠くへ!:こんな鳥籠は嫌だ。空の果てを目指すんだ!【願いの階梯:4(積層都市内)】【願いの階梯:8(宇宙規模の場合)】",
400
- "あなたを自由に:大切なものは囚われ、縛られている。私のちからで、それを解き放つんだ!【願いの階梯:4(努力次第でいつか叶う範囲)】【願いの階梯:6(奇跡の領域)】",
401
- ].freeze
402
-
403
- WISH_TABLE_5_6 = [
404
- "誰かの笑顔:誰かの笑顔の為に戦っても、いいだろう?【願いの階梯:1~6(対象の状況によって変動する)】",
405
- "別の世界へ:……この世界ではない、別の世界へ行きたい。【願いの階梯:7(惑星規模)】【願いの階梯:8(宇宙規模)】",
406
- "世界を平和に:平穏な日々を願っても許されるような世界に、この世界をやすらぎに満ちた場所に……。【願いの階梯:7】",
407
- "世界を再誕させる:世界は根本から創り直す必要がある!【願いの階梯:8】",
408
- "世界を征服する:私たちが王になってやる!【願いの階梯:7】",
409
- "契約者:あなたの願いは既に叶えられた。今も戦い続けている理由は、女神との契約があるからだ。【願いの階梯:なし】",
410
- ].freeze
411
-
412
- WISH_TABLE = [
413
- WISH_TABLE_1_2,
414
- WISH_TABLE_1_2,
415
- WISH_TABLE_3_4,
416
- WISH_TABLE_3_4,
417
- WISH_TABLE_5_6,
418
- WISH_TABLE_5_6,
419
- ].freeze
420
-
421
- PERSONALITY_TABLE = ['可憐', '冷静', '勇敢', '楽観主義', '負けず嫌い', 'コレクター気質', 'クール', '癒やし系', '惚れやすい', '悲観主義', '泣きやすい', 'お嬢様', '純粋', '頑固', '辛辣', 'まじめ', '落ち込みやすい', '謙虚', 'スマート', 'ゆるふわ', '好奇心旺盛', 'はらぺこ', '華麗', '狭いところが好き', '冷徹', '朴念仁', '王子様', '目立ちたがり', '過激', 'マゾヒスト', 'ダンディ', 'あらあらうふふ', '過保護', '死にたがり', '強い自尊心', 'サディスト'].freeze
422
-
423
- YOUR_STORY_TABLE_MARGINALIA_1_2 = [
424
- "パブ/カフェー店員:あなたは霧の帝都に無数に存在するパブ、あるいは桜の帝都で増え始めたカフェーの店員です。",
425
- "屋台の店員:― 屋台とは戦いだ。あなたは霧の帝都の至る所に存在する、屋台の店員です。商売敵は数え切れないくらい存在します。目指せ、ナンバーワン屋台!!",
426
- "商人:がっぽがっぽ。お空に都市がやってきて、販路が増えたぞがっぽがっぽ。あなたは様々な商品を扱う商人です。小売からもうひとつの世界を股にかける交易商人まで、商いの道は果てしなく広がっています。",
427
- "飛行船・船長:あなたはふたつの都市をつなぐ交通の要、飛行船の船長です! ところで最近、船長の間で変な噂がたっています。ふたつの世界のちょうど狭間を通過する瞬間に、怪物と戦う騎士の幻が見えるのだとかなんとか……。",
428
- "飛行船駅員:あなたは飛行船発着場で働く駅員です。管制員から売店の職員まで、数多の人々によって飛行船は運航されています。",
429
- "図書館司書/博物館学芸員:あなたは文化の保護、知識の継承を担っています。霧の帝都、桜の帝都のどちらにも、立派な図書館、博物館が存在します。有名なのは桜の帝都「桜花書籍館」と霧の帝都「図書博物館」でしょう。",
430
- ].freeze
431
-
432
- YOUR_STORY_TABLE_MARGINALIA_3_4 = [
433
- "帝都警察:あなたは帝都警察に所属し、都市の平和を守っています。帝都警察は市民の憧れの職業であり、皆誇りをもって職務に励んでいます。",
434
- "警察軍:あなたは都市の有事の際に出動するべく、日々訓練に励む軍人です。災害や大規模な犯罪が発生した時こそ、あなたの出番です。",
435
- "寡黙なる霧(クラブ・マイクロフト):霧の女王に仕える秘密の騎士団。いわゆる諜報機関、スパイ組織の構成員です。あなたは日々、怪物の発生や犯罪組織の暗躍に目を光らせています。",
436
- "桜機関(ブロッサムエンジン):あなたはこの世界を、ロアテラに喰われる前に滅ぼすことを決意し、桜機関に所属したエージェントです。しかし、まだメモリィズを使用していないのは、迷いがあるからなのか、何らかの思惑があるからなのかもしれません。",
437
- "桜花教神官:「万物には桜が宿っています。我らの誇りたる桜を傷つけることがないように」あなたは桜花教の神官です。神官は日々大変忙しい生活を送っています。毎日の祭事に祭りの準備、そしてふらりと現れる桜の皇帝への対応……頑張ってくださいね?",
438
- "妖精教神官:「妖精は、いつもあなたの行いを見守っています」あなたは妖精教の神官です。週に一度のお祈りの日、毎日の貧民街への炊き出し、迷子の保護、霧の宮殿から抜け出していった霧の女王の捜索等、大忙しの日々が待っています。",
439
- ].freeze
440
-
441
- YOUR_STORY_TABLE_MARGINALIA_5_6 = [
442
- "流浪の民:あなたの祖先は、この世界に「都市の外側」があった時代に、この場所へ流れ着いてきた者です。この都市ではあまり見かけない髪、肌、目の色をしていたり、顔つきが少々異なっていたりします。",
443
- "イーストエンド:あなたは霧の帝都の貧民街で暮らしています。何故か伝統的に、貧民街は「イーストエンド」と呼ばれており、その地名がそのまま「貧民」を意味する言葉にもなっています。",
444
- "貴族:あなたは貴族として、民を守り、国を守ってきた一族の末裔です。遥かな空に、もうひとつの世界が現れても、異世界の騎士を交えた戦いが起きたとしても、あなたの使命は変わらず民と国を守ることなのです。",
445
- "職人:あなたは何らかの技術を身に付けた職人です。時計職人から傘張り職人まで、あなたの技術がふたつの世界を支えているのです。",
446
- "メイド/バトラー:あなたは貴族の屋敷や、宮殿、御所で働くメイド/バトラーや、その見習いです。ご主人さまのため、今日も職務に励むのです。",
447
- "バックアップ:あなたはかつて桜の皇帝、霧の女王のバックアップとして作成された人造生命体です。うりふたつの容姿をしていますが、その記憶は厳重に封印されており、あなたを含め、誰もその真実を知る者はいません。",
448
- ].freeze
449
-
450
- YOUR_STORY_TABLE_MARGINALIA = [
451
- YOUR_STORY_TABLE_MARGINALIA_1_2,
452
- YOUR_STORY_TABLE_MARGINALIA_1_2,
453
- YOUR_STORY_TABLE_MARGINALIA_3_4,
454
- YOUR_STORY_TABLE_MARGINALIA_3_4,
455
- YOUR_STORY_TABLE_MARGINALIA_5_6,
456
- YOUR_STORY_TABLE_MARGINALIA_5_6,
457
- ].freeze
458
-
459
- SITUATION_TABLE_MARGINALIA_1_2_3 = [
460
- "表のお仕事:生きていくにはお金がかかる。霧の女王様や総帥に頼ってばかりじゃいられない! さぁ今日も元気に出勤だ! パートナーと一緒に、どんなお仕事をしているか描写してみよう!",
461
- "カフェーでのんびり:とてものんびりした時間。おいしい紅茶とあまーいお菓子。……滅びそうな世界だなんて、思えないよね。",
462
- "路面電車:道路を電車が走るなんて不思議な気分。最新鋭の路面電車をご堪能あれ。さて、今日はどこへ行こうかな?",
463
- "参拝:霧の帝都なら妖精教会、桜の帝都なら桜花教神社。お参りをすると、ちょっと自分の考えがまとまるような気がする。",
464
- "アパルトメント:アーセルトレイと比べると、どうしても時代を感じてしまうアパルトメント。でもパートナーがいれば関係ない! せっかくだし、この世界でも思い出を作っていこう!",
465
- "桜の皇帝に遭遇:すごく意味深な質問をされた後、皇帝陛下は答えを聞くことなく、にっこりと微笑んで去っていった。えっ、あれ本物だよね? 本物の皇帝だよね!?",
466
- ].freeze
467
-
468
- SITUATION_TABLE_MARGINALIA_4_5_6 = [
469
- "暗闇会議:路地裏か、真夜中の私室か、夢の中か、ふとした瞬間に訪れた暗闇。「君たちは、永遠に続く苦しみを生きるか、その前に死ぬか、どちらが正しいと思う?」そんな声が聞こえた気がする。",
470
- "東部暗黒街:霧の帝都で最も治安の悪い場所。けれど誰もが好きでそうなったわけじゃない。人によっては、ここの方が居心地が良いのかも。",
471
- "帝都劇場:どちらの帝都にも、立派な劇場がある。最近では電気館なる、アーセルトレイでいう映画館もできてきたらしいよ? ちょっと行ってみない?",
472
- "飛行船内:帝都の間を結ぶ飛行船。アーセルトレイのモノレールにも少し似ているけれど、もっとレトロな感じ。船内販売の美味しいアイスクリンは絶対食べておこう!",
473
- "パブが私を呼んでいる:パブりに行こうぜ、バディ。愉快な音楽と、美味しい飲み物と、ちょっと癖の強い料理が私たちを待っている! 今夜も派手に騒ごうぜ!",
474
- "霧の女王からの呼び出し:霧の女王陛下に呼び出され、宮殿へ向かう道中の会話。いったい何の用事なんだろう? 確か先週は、アーセルトレイの話をいっぱいしながら、美味しいお茶をごちそうになったなぁ。",
475
- ].freeze
476
-
477
- SITUATION_TABLE_MARGINALIA = [
478
- SITUATION_TABLE_MARGINALIA_1_2_3,
479
- SITUATION_TABLE_MARGINALIA_1_2_3,
480
- SITUATION_TABLE_MARGINALIA_1_2_3,
481
- SITUATION_TABLE_MARGINALIA_4_5_6,
482
- SITUATION_TABLE_MARGINALIA_4_5_6,
483
- SITUATION_TABLE_MARGINALIA_4_5_6,
484
- ].freeze
485
-
486
- YOUR_STORY_TABLE_LETTER_1_2_3 = [
487
- "旅に出ていた:あなたが旅先にいる時に、世界の滅びはおとずれた。旅にでなければ、あの人と離れ離れにはならなかったのに。",
488
- "生き別れの――:パートナーとは生き別れの兄弟姉妹、親子のような、親密な関係だった。",
489
- "双子:あなたとパートナーは双子だった。どこにいても、きっとこの想いと鼓動は同じだ。",
490
- "幼馴染:あなたとパートナーは幼馴染だった。",
491
- "親友:きっとそれは、恋人や親子よりも深い友情だった。",
492
- "隠しきれない本音:本当は隠すつもりだった本音が、手紙となるとどうしても漏れ出してしまう。",
493
- ].freeze
494
-
495
- YOUR_STORY_TABLE_LETTER_4_5_6 = [
496
- "愛している:あなたはパートナーを愛している。何よりも、誰よりも、世界よりも。",
497
- "パズル:あなたは手紙に本音を隠す。縦読みだったり、暗号だったり……きっとそれは照れ隠しなのだ。",
498
- "恥ずかしい!!:かつて言葉では言えたのに、手紙となると素直になれない! どうしてだー!",
499
- "インク、筆跡:インクの色、筆跡を見るだけで、その手紙の主が誰だかわかる。――もちろん、君だろう?",
500
- "心の支え:心の支えにしているものがある。それはきっと、パートナーがくれたものだ。",
501
- "共犯者:ふたりはかつて、何らかの共犯者だった。内容は、自分自身が知っているだろう?",
502
- ].freeze
503
-
504
- YOUR_STORY_TABLE_LETTER = [
505
- YOUR_STORY_TABLE_LETTER_1_2_3,
506
- YOUR_STORY_TABLE_LETTER_1_2_3,
507
- YOUR_STORY_TABLE_LETTER_1_2_3,
508
- YOUR_STORY_TABLE_LETTER_4_5_6,
509
- YOUR_STORY_TABLE_LETTER_4_5_6,
510
- YOUR_STORY_TABLE_LETTER_4_5_6,
511
- ].freeze
512
-
513
- YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3 = [
514
- "大好き:本当は、世界のことなんてどうでもいい。パートナーの方が大切。ずっとずっと大切なんだから。",
515
- "いつか人間に:あなたはリコレクト・ドールではなく、人間になりたいと思っている。",
516
- "永遠の命:遥かな未来を見てみたい。願わくば、パートナーと一緒に。",
517
- "ふたりきり:あなたはパートナーと一緒にいることだけを大切なことだと考えている。",
518
- "私は人形:……感情? それは必要なもの?",
519
- "探検隊:あなたは荒廃したこの世界をどこまでも探検したいと思っている。",
520
- ].freeze
521
-
522
- YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6 = [
523
- "退屈な日々:あなたはこの荒廃した世界を退屈に思っている。",
524
- "理想の私:あなたは、あなたの考えうる限り最高で完璧で理想的なリコレクト・ドールだ。",
525
- "思弁的ドール:あなたは正直どこにもでかけたくない。いいじゃーん、ここからでも色々分かるって、あっ、ひっぱらないでー、あー。",
526
- "使命の徒:あなたはリコレクト・ドールとしての使命を第一に思っている。",
527
- "未知なる創造主:あなたはいつか人間に会ってみたいと思っている。",
528
- "漠然とした不安:旅も、戦いも、その先に待つのが終わりの日々なら……。みんなはどうして、不安に思わないの……?",
529
- ].freeze
530
-
531
- YOUR_STORY_TABLE_RECOLLECT_DOLL = [
532
- YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3,
533
- YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3,
534
- YOUR_STORY_TABLE_RECOLLECT_DOLL_1_2_3,
535
- YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6,
536
- YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6,
537
- YOUR_STORY_TABLE_RECOLLECT_DOLL_4_5_6,
538
- ].freeze
539
-
540
- SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3 = [
541
- "教室:かつて学校の教室だった場所。椅子と机が散乱している。",
542
- "劇場:かつて大きな劇場だった場所。天井が崩落し、ステージは瓦礫に埋もれている。",
543
- "遊園地:かつて遊園地と呼ばれていた場所。錆びついた骨組み、朽ちたステージ、観覧車の支柱は曲がって、今にも倒れそう。",
544
- "民家:扉や窓が無い家屋。埃が積もった室内には、錆びた家具がそのままになっている。",
545
- "音楽室:折れた譜面台や朽ちたピアノが放置された学校の一室。かつて音楽室と言われていた場所。",
546
- "喫茶店:食器と家具が散乱し、埃が積もった飲食店跡。かつては喫茶店だった場所。",
547
- ].freeze
548
-
549
- SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6 = [
550
- "図書館:ぼろぼろになった本と、倒れた本棚が放置された施設。かつて図書館だった場所。",
551
- "高層ビル:壁面が崩れ、骨格だけになった高層建築。上層階からは荒廃都市全体が見渡せる。かつてはオフィスビルだった場所。",
552
- "ショッピングモール:商店跡が建ち並ぶ施設。かつて大型ショッピングモールだった場所。",
553
- "荒野:都市周辺に、地平線の果てまで広がる灰色の荒野。かつてはのどかな田園地帯だった。",
554
- "駅:崩れた駅舎と、所々欠損した線路。かつて鉄道の駅だった場所。",
555
- "公園:石化した木々と、朽ちたベンチが点在する公園跡。かつては人々のいこいの場所だった。",
556
- ].freeze
557
-
558
- SITUATION_TABLE_B_RECOLLECT_DOLL = [
559
- SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3,
560
- SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3,
561
- SITUATION_TABLE_B_RECOLLECT_DOLL_1_2_3,
562
- SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6,
563
- SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6,
564
- SITUATION_TABLE_B_RECOLLECT_DOLL_4_5_6,
565
- ].freeze
566
-
567
- SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3 = [
568
- "仲良し:友達なのか、家族なのか。楽しそうによりそう2人の姿。",
569
- "けんか:顔を真っ赤にしてにらみ合う2人の姿。どうやらけんかしてしまったらしい。",
570
- "ダンス:手を取り、笑いながら、くるくると踊る2人の姿。",
571
- "食事:美味しそうに食事を摂る人の姿。あーん。",
572
- "読書:何かの本を熱心に読みふける人の姿。あの分厚い本は何?",
573
- "おしゃべり:楽しそうにおしゃべりする人々の姿。楽しそう、うぅん、幸せそう、なのかな?",
574
- ].freeze
575
-
576
- SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6 = [
577
- "イベント:笑顔で乾杯する人々の姿。誕生会? 結婚式? 何のイベントだろう?",
578
- "家族:連れ添い歩く家族の姿。パパとママ……家族って、どんなもの?",
579
- "友達:楽しそうに連れだって歩く、少年少女たちの姿。私たちは、友達……なのかな……?",
580
- "恋人:人目を忍んで手を繋ぎ見つめ合う、2人の姿。わ、わわ、わー! これは見ちゃだめー!! ",
581
- "別れ:涙を流しながら、別々の方向へ歩いて行く2人の姿。",
582
- "怪物:身の丈の倍ほどもある竜のような怪物と、逃げ惑う人々の姿。",
583
- ].freeze
584
-
585
- SITUATION_TABLE_C_RECOLLECT_DOLL = [
586
- SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3,
587
- SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3,
588
- SITUATION_TABLE_C_RECOLLECT_DOLL_1_2_3,
589
- SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6,
590
- SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6,
591
- SITUATION_TABLE_C_RECOLLECT_DOLL_4_5_6,
592
- ].freeze
593
-
594
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3 = [
595
- "長い廊下:お喋りをしながら歩いていると、いつまで経っても目的地につかないながーい廊下。時々遭難者がでるの。",
596
- "迷子の女の子発見:迷子の女の子に遭遇してしまった。道案内してあげよう。……でも、やけに古い形の制服だなぁ。",
597
- "中庭のお茶会:お散歩していたらお茶会に招かれちゃった。みんなふたりの馴れ初めを聞きたいらしいぞ?",
598
- "誰もいない教室:あれ? さっきまでみんないたのに……。今はふたりしかいないみたい。",
599
- "学生寮:第3階層、シトラ女学院学生寮。まるで鳥籠のようだけれど、暮らしてみれば居心地は抜群。",
600
- "音楽室:昼間なら合唱部の歌声が、夜ならとても静かな夜の風が聞こえる場所。",
601
- ].freeze
602
-
603
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6 = [
604
- "シトラ女学院旧校舎:地球時代からあったとされる、まるで神殿のような白く美しい旧校舎。立入禁止。でも内緒話にはうってつけ。",
605
- "輝紡の塔:塔とは名ばかりの、各委員会が部屋を構える大きなお屋敷。よく迷子が出るという噂あり。",
606
- "地下談話室:良く晴れた日の温室を、絵画と錯視で再現した談話室。雨の日でもぽかぽか。",
607
- "中庭のさくら:第1階層、シトラ女学院の中庭には、とても美しいさくらが咲いています。これは地球時代からあるものなのだとか……。",
608
- "約束の館:静かに祈りを捧げる場所。昔は礼拝堂と呼ばれていたとか。ここで愛の告白をすると、永遠の愛が得られるという噂も!",
609
- "星詠の間:輝紡の塔、最上階の小さな一室。地球があった頃の星空を再現する、星空投影機が設置されています。",
610
- ].freeze
611
-
612
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL = [
613
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3,
614
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3,
615
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_1_2_3,
616
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6,
617
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6,
618
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL_4_5_6,
619
- ].freeze
620
-
621
- SITUATION_TABLE_ECLIPSE_1_2_3 = [
622
- "道行く人々、その全ての視線が、まるで俺達を値踏みしているようだ……。",
623
- "かけられる言葉、その全てに何か裏があるように思える。俺達を騙そうとしているんじゃないか?",
624
- "部屋から出たくない。世界の全てが俺を殺そうとしている。早く、早くステラバトルの夜を……。",
625
- "何故こいつは、俺の顔を見て笑っているんだ?不快だ……殺してしまいたい……。",
626
- "俺をひとりにしないでくれ、どこにも行かないでくれ、頼む、俺を孤独にしないでくれ……。",
627
- "誰も俺達を信じない、誰も俺達を必要としない。俺には、お前だけいればいいんだ。",
628
- ].freeze
629
-
630
- SITUATION_TABLE_ECLIPSE_4_5_6 = [
631
- "世界の全てがおかしくなってしまった。もはや、世界を救えるのは俺達だけだ。",
632
- "ふたりの女神め、お前たちが黒幕だったのか。ステラバトルを終えたら、次はお前たちを殺してやる。",
633
- "俺の願いは……何だったか……。ああ、いや、すまない。大丈夫だ、俺は冷静だ。本当に……ああ……。",
634
- "風景のコントラストが、やけに強く見える。趣味の悪い絵画のようで気持ち悪い……。",
635
- "何を食べても味が感じられない。ロアテラの力が、世界の法則にまで侵食したのだろうか……。",
636
- "世界の全てがモノクロに見える。なんだこれは、ロアテラの力によるものなのか? 早く、早く世界を救わねば……。",
637
- ].freeze
638
-
639
- SITUATION_TABLE_ECLIPSE = [
640
- SITUATION_TABLE_ECLIPSE_1_2_3,
641
- SITUATION_TABLE_ECLIPSE_1_2_3,
642
- SITUATION_TABLE_ECLIPSE_1_2_3,
643
- SITUATION_TABLE_ECLIPSE_4_5_6,
644
- SITUATION_TABLE_ECLIPSE_4_5_6,
645
- SITUATION_TABLE_ECLIPSE_4_5_6,
646
- ].freeze
647
-
648
- FRAGMENT_TABLE = ['出会い', '水族館', '動物園', '絵本', '童話', '神話', '怒った', '笑った', '泣いた', '好き', '愛情', '憎悪', '寒い', '暑い', '甘い', '苦い', 'お菓子', '路地', '部屋', '身体', 'ぬくもり', '毛布', '空想', '願い', '笑顔', '味覚', '映画', '朗読', 'うた', '音楽', '視力', '肌の色', '聴力', '声', '痛覚', '触覚'].freeze
649
-
650
- YOUR_STORY_TABLE_BRINGER_1_2_3 = [
651
- "肉親を失った:ブライトによる事件であなたは肉親を失った。",
652
- "恋人を失った: ブライトによる事件であなたは恋人や伴侶を失った。",
653
- "八つ当たり:あなたはやり場のない怒りを、ブリンガーとしての職務にぶつけている。",
654
- "正義感:あなたがブライトを狩れば、助かる人がいる。",
655
- "スカウト:あなたは何らかの才能を見出され、ブリンガーとなった。",
656
- "冷徹なる者:あなたはフォージの生命を、冷徹に切り捨てられると見込まれスカウトされた。本当に?",
657
- ].freeze
658
-
659
- YOUR_STORY_TABLE_BRINGER_4_5_6 = [
660
- "復讐:あなたはブライトという存在に復讐するために生きている。",
661
- "ノブリス・オブリージュ:あなたはブリンガーであることを義務だと考えている。",
662
- "世界を取り戻す:ラストヴライトを目指そう。君となら、世界を救えるはずだ。",
663
- "愛情:あなたはフォージを愛してしまった。",
664
- "歴戦のブリンガー:あなたのパートナーはフォージのフラグメントを1~3個失った状態で作成する。",
665
- "他階層出身:あなたは他の階層から第753層へ来た折に、世界の崩壊に巻き込まれた。",
666
- ].freeze
667
-
668
- YOUR_STORY_TABLE_BRINGER = [
669
- YOUR_STORY_TABLE_BRINGER_1_2_3,
670
- YOUR_STORY_TABLE_BRINGER_1_2_3,
671
- YOUR_STORY_TABLE_BRINGER_1_2_3,
672
- YOUR_STORY_TABLE_BRINGER_4_5_6,
673
- YOUR_STORY_TABLE_BRINGER_4_5_6,
674
- YOUR_STORY_TABLE_BRINGER_4_5_6,
675
- ].freeze
676
-
677
- YOUR_STORY_TABLE_FORGE_1_2_3 = [
678
- "信頼:あなたはパートナーを信頼している。あなたとなら大丈夫。",
679
- "愛情:あなたはパートナーを愛している。自分はフォージなのに、こんな感情を抱いても良いのだろうか。",
680
- "利用:あなたはパートナーを利用して、何かを成そうとしている。",
681
- "正義感:あなたが戦い続ければ、世界は維持される。",
682
- "気になる:パートナーが気になる。気になるの。す、好きとかじゃないし。気になるだけ。",
683
- "人形:あなたは無感情に、ただ任務を遂行し続ける。",
684
- ].freeze
685
-
686
- YOUR_STORY_TABLE_FORGE_4_5_6 = [
687
- "失敗作:あなたは製造段階で問題が発生している。あなたはフラグメントを1個失う。",
688
- "ノブリス・オブリージュ:あなたはフォージであることを義務だと考えている。",
689
- "世界を取り戻す:ラストヴライトを目指そう。パートナーとなら、世界を救えるはずだ。",
690
- "戦いたくない:あなたは戦いが嫌いだ。でもパートナーのためなら……。",
691
- "自傷癖:どうせ死ぬなら、今傷ついても同じでしょ?",
692
- "過去の記憶:あなたの元になった魂の輝き、その記憶をあなたは持っている。",
693
- ].freeze
694
-
695
- YOUR_STORY_TABLE_FORGE = [
696
- YOUR_STORY_TABLE_FORGE_1_2_3,
697
- YOUR_STORY_TABLE_FORGE_1_2_3,
698
- YOUR_STORY_TABLE_FORGE_1_2_3,
699
- YOUR_STORY_TABLE_FORGE_4_5_6,
700
- YOUR_STORY_TABLE_FORGE_4_5_6,
701
- YOUR_STORY_TABLE_FORGE_4_5_6,
702
- ].freeze
703
-
704
- SITUATION_TABLE_ALT_LEVOOT_1_2_3 = [
705
- "張り込み中:パートナーがあんぱんとコーヒーを買ってきた。ひとまず腹ごしらえだ!",
706
- "張り込み中:被疑者の部屋の窓にはカーテンがかかっている。薄暗いし、眠っているのかもしれない。はぁ、こっちも眠いぞ……。",
707
- "追走劇:ブライト被疑者が逃走している。逃げるということは何かやましいことがあるのだろう。行くぞ!",
708
- "追走劇:日常会話の最後に、他のステラナイトから被疑者確保の救援依頼が入る。手を貸してやるとしましょうか。",
709
- "引き渡し後:大人しくつかまったブライト被疑者を引き渡した後。さて、何か食べに行こうか。",
710
- "引き渡し後:被疑者を引き渡した後。逮捕の為に色々壊したりしてしまったので、報告書を書かねば。手伝ってくれよぉ……。",
711
- ].freeze
712
-
713
- SITUATION_TABLE_ALT_LEVOOT_4_5_6 = [
714
- "非番:今日は何もなければこのまま休みだ。たまにはどこかに出かけるか?",
715
- "非番:何か良い匂いがする。……パートナーが手料理を作ってくれた!?",
716
- "殺人現場:ブライトの凶行の現場。現場検証に立ち会うことになったが……。",
717
- "殺人現場:ブライトに殺されたのは、あなたの懇意にしていた情報屋だった。許さねぇぞ……。",
718
- "寿命を数える:あと、パートナーは何日生きられるのか。その日になったら、俺はこいつを殺せるのか。",
719
- "記念日:フォージとの記念日は毎月ある。一周年がないから、毎月なんだ。",
720
- ].freeze
721
-
722
- SITUATION_TABLE_ALT_LEVOOT = [
723
- SITUATION_TABLE_ALT_LEVOOT_1_2_3,
724
- SITUATION_TABLE_ALT_LEVOOT_1_2_3,
725
- SITUATION_TABLE_ALT_LEVOOT_1_2_3,
726
- SITUATION_TABLE_ALT_LEVOOT_4_5_6,
727
- SITUATION_TABLE_ALT_LEVOOT_4_5_6,
728
- SITUATION_TABLE_ALT_LEVOOT_4_5_6,
729
- ].freeze
730
-
731
- TABLES = {
732
- "TT" => DiceTable::D66GridTable.new(
733
- "お題表",
734
- THEME_TABLE
735
- ),
736
- "STA" => DiceTable::Table.new(
737
- "シチュエーション表A:時間",
738
- "1D6",
739
- SITUATION_TABLE_A
740
- ),
741
- "STB" => DiceTable::D66GridTable.new(
742
- "シチュエーション表B:場所",
743
- SITUATION_TABLE_B
744
- ),
745
- "STB21" => DiceTable::Table.new(
746
- "シチュエーション表Bその2:学園編 アーセルトレイ公立大学",
747
- "1D6",
748
- SITUATION_TABLE_B2_1
749
- ),
750
- "STB22" => DiceTable::Table.new(
751
- "シチュエーション表Bその2:学園編 イデアグロリア芸術総合大学",
752
- "1D6",
753
- SITUATION_TABLE_B2_2
754
- ),
755
- "STB23" => DiceTable::Table.new(
756
- "シチュエーション表Bその2:学園編 シトラ女学院",
757
- "1D6",
758
- SITUATION_TABLE_B2_3
759
- ),
760
- "STB24" => DiceTable::Table.new(
761
- "シチュエーション表Bその2:学園編 フィロソフィア大学",
762
- "1D6",
763
- SITUATION_TABLE_B2_4
764
- ),
765
- "STB25" => DiceTable::Table.new(
766
- "シチュエーション表Bその2:学園編 聖アージェティア学園",
767
- "1D6",
768
- SITUATION_TABLE_B2_5
769
- ),
770
- "STB26" => DiceTable::Table.new(
771
- "シチュエーション表Bその2:学園編 スポーン・オブ・アーセルトレイ",
772
- "1D6",
773
- SITUATION_TABLE_B2_6
774
- ),
775
- "STC" => DiceTable::D66GridTable.new(
776
- "シチュエーション表C:話題",
777
- SITUATION_TABLE_C
778
- ),
779
- "GAT" => DiceTable::Table.new(
780
- "所属組織決定",
781
- "1D6",
782
- GAKUEN_TABLE
783
- ),
784
- "HOT" => DiceTable::D66GridTable.new(
785
- "希望表",
786
- HOPE_TABLE
787
- ),
788
- "DET" => DiceTable::D66GridTable.new(
789
- "絶望表",
790
- DESPAIR_TABLE
791
- ),
792
- "WIT" => DiceTable::D66GridTable.new(
793
- "願い事表",
794
- WISH_TABLE
795
- ),
796
- "YST" => DiceTable::D66GridTable.new(
797
- "あなたの物語表",
798
- YOUR_STORY_TABLE
799
- ),
800
- "YSTA" => DiceTable::D66GridTable.new(
801
- "あなたの物語表:異世界",
802
- YOUR_STORY_TABLE_ANOTHER_WORLD
803
- ),
804
- "YSTM" => DiceTable::D66GridTable.new(
805
- "あなたの物語表:マルジナリア世界",
806
- YOUR_STORY_TABLE_MARGINALIA
807
- ),
808
- "STM" => DiceTable::D66GridTable.new(
809
- "シチュエーション表:マルジナリア世界",
810
- SITUATION_TABLE_MARGINALIA
811
- ),
812
- "YSTL" => DiceTable::D66GridTable.new(
813
- "あなたの物語表:手紙世界",
814
- YOUR_STORY_TABLE_LETTER
815
- ),
816
- "YSTR" => DiceTable::D66GridTable.new(
817
- "あなたの物語表:リコレクト・ドール",
818
- YOUR_STORY_TABLE_RECOLLECT_DOLL
819
- ),
820
- "STBR" => DiceTable::D66GridTable.new(
821
- "シチュエーション表B:場所(リコレクト・ドール)",
822
- SITUATION_TABLE_B_RECOLLECT_DOLL
823
- ),
824
- "STCR" => DiceTable::D66GridTable.new(
825
- "シチュエーション表C:リコレクト",
826
- SITUATION_TABLE_C_RECOLLECT_DOLL
827
- ),
828
- "STBS" => DiceTable::D66GridTable.new(
829
- "シチュエーション表B:シトラセッティング",
830
- SITUATION_TABLE_B_RECOLLECT_SUT_TU_REAL
831
- ),
832
- "STE" => DiceTable::D66GridTable.new(
833
- "シチュエーション表:エクリプス専用",
834
- SITUATION_TABLE_ECLIPSE
835
- ),
836
- "YSTB" => DiceTable::D66GridTable.new(
837
- "あなたの物語表:ブリンガー",
838
- YOUR_STORY_TABLE_BRINGER
839
- ),
840
- "YSTF" => DiceTable::D66GridTable.new(
841
- "あなたの物語表:フォージ",
842
- YOUR_STORY_TABLE_FORGE
843
- ),
844
- "STAL" => DiceTable::D66GridTable.new(
845
- "シチュエーション表:オルトリヴート",
846
- SITUATION_TABLE_ALT_LEVOOT
847
- ),
848
- }.freeze
849
-
850
- register_prefix('\d+SK\d?(,\d>\d)*', 'STB2', 'ALLS', 'PET', 'FT\d*', TABLES.keys)
227
+ TABLES = translate_tables(:ja_jp)
228
+
229
+ register_prefix('[()+\/\d]+SK', 'STB2', 'ALLS', 'PET', 'FT', TABLES.keys)
851
230
  end
852
231
  end
853
232
  end