bcdice 3.3.0 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +158 -74
  3. data/README.md +2 -1
  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/FutariSousa/ja_jp.yml +705 -9
  8. data/i18n/KillDeathBusiness/ja_jp.yml +2 -2
  9. data/i18n/MagicaLogia/ja_jp.yml +1 -1
  10. data/i18n/MonotoneMuseum/ko_kr.yml +526 -53
  11. data/i18n/SwordWorld/ja_jp.yml +6 -0
  12. data/i18n/SwordWorld2_0/ja_jp.yml +37 -0
  13. data/i18n/SwordWorld2_5/ja_jp.yml +57 -0
  14. data/lib/bcdice/common_command/add_dice/node.rb +28 -4
  15. data/lib/bcdice/common_command/add_dice/parser.rb +149 -85
  16. data/lib/bcdice/common_command/choice.rb +82 -7
  17. data/lib/bcdice/common_command/tally_dice/node.rb +135 -0
  18. data/lib/bcdice/common_command/tally_dice/parser.rb +302 -0
  19. data/lib/bcdice/common_command/tally_dice.rb +19 -0
  20. data/lib/bcdice/common_command.rb +2 -0
  21. data/lib/bcdice/dice_table/d66_left_range_table.rb +29 -0
  22. data/lib/bcdice/dice_table/d66_parity_table.rb +8 -0
  23. data/lib/bcdice/dice_table/d66_table.rb +5 -1
  24. data/lib/bcdice/dice_table.rb +1 -0
  25. data/lib/bcdice/game_system/AngelGear.rb +9 -4
  26. data/lib/bcdice/game_system/Aoharubaan.rb +91 -0
  27. data/lib/bcdice/game_system/AssaultEngine.rb +91 -0
  28. data/lib/bcdice/game_system/Avandner.rb +1 -2
  29. data/lib/bcdice/game_system/Ayabito.rb +229 -0
  30. data/lib/bcdice/game_system/BadLife.rb +264 -289
  31. data/lib/bcdice/game_system/Bakenokawa.rb +244 -0
  32. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  33. data/lib/bcdice/game_system/BeginningIdol.rb +116 -2390
  34. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +10 -2312
  35. data/lib/bcdice/game_system/CastleInGray.rb +133 -0
  36. data/lib/bcdice/game_system/Cthulhu.rb +2 -2
  37. data/lib/bcdice/game_system/Cthulhu7th.rb +10 -10
  38. data/lib/bcdice/game_system/Cthulhu_SimplifiedChinese.rb +60 -0
  39. data/lib/bcdice/game_system/CyberpunkRed.rb +135 -0
  40. data/lib/bcdice/game_system/DarkDaysDrive.rb +76 -41
  41. data/lib/bcdice/game_system/DoubleCross.rb +5 -0
  42. data/lib/bcdice/game_system/Dracurouge.rb +2 -1
  43. data/lib/bcdice/game_system/Elysion.rb +36 -20
  44. data/lib/bcdice/game_system/Emoklore.rb +1 -1
  45. data/lib/bcdice/game_system/FateCoreSystem.rb +117 -0
  46. data/lib/bcdice/game_system/FutariSousa.rb +48 -4
  47. data/lib/bcdice/game_system/GranCrest.rb +171 -406
  48. data/lib/bcdice/game_system/Irisbane.rb +154 -0
  49. data/lib/bcdice/game_system/Karukami.rb +84 -0
  50. data/lib/bcdice/game_system/KemonoNoMori.rb +17 -17
  51. data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
  52. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  53. data/lib/bcdice/game_system/NeverCloud.rb +19 -8
  54. data/lib/bcdice/game_system/PersonaO.rb +86 -0
  55. data/lib/bcdice/game_system/Revulture.rb +2 -2
  56. data/lib/bcdice/game_system/Shiranui.rb +145 -0
  57. data/lib/bcdice/game_system/ShuumatsuKikou.rb +298 -0
  58. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  59. data/lib/bcdice/game_system/SteamPunkers.rb +14 -1
  60. data/lib/bcdice/game_system/StellarKnights.rb +1 -1
  61. data/lib/bcdice/game_system/{SterileLife.rb → StellarLife.rb} +162 -226
  62. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +18 -5
  63. data/lib/bcdice/game_system/SwordWorld.rb +11 -7
  64. data/lib/bcdice/game_system/SwordWorld2_0.rb +30 -38
  65. data/lib/bcdice/game_system/SwordWorld2_5.rb +9 -63
  66. data/lib/bcdice/game_system/TalesFromTheLoop.rb +83 -0
  67. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  68. data/lib/bcdice/game_system/ToshiakiHolyGrailWar.rb +92 -0
  69. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +29 -28
  70. data/lib/bcdice/game_system/YearZeroEngine.rb +40 -19
  71. data/lib/bcdice/game_system/beginning_idol/accessories_table.rb +31 -0
  72. data/lib/bcdice/game_system/beginning_idol/bad_status_table.rb +43 -0
  73. data/lib/bcdice/game_system/beginning_idol/chain_d66_table.rb +29 -0
  74. data/lib/bcdice/game_system/beginning_idol/chain_table.rb +37 -0
  75. data/lib/bcdice/game_system/beginning_idol/costume_table.rb +37 -0
  76. data/lib/bcdice/game_system/beginning_idol/d6_twice_table.rb +36 -0
  77. data/lib/bcdice/game_system/beginning_idol/item_table.rb +51 -0
  78. data/lib/bcdice/game_system/beginning_idol/my_skill_name_table.rb +44 -0
  79. data/lib/bcdice/game_system/beginning_idol/random_event_table.rb +31 -0
  80. data/lib/bcdice/game_system/beginning_idol/skill_table.rb +63 -0
  81. data/lib/bcdice/game_system/beginning_idol/table.rb +193 -0
  82. data/lib/bcdice/game_system/beginning_idol/with_abnormality.rb +74 -0
  83. data/lib/bcdice/game_system/beginning_idol/work_table.rb +57 -0
  84. data/lib/bcdice/game_system/cyberpunk_red/tables.rb +530 -0
  85. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +1 -1
  86. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +1 -1
  87. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +4 -4
  88. data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
  89. data/lib/bcdice/game_system/sword_world/rating_options.rb +47 -0
  90. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +40 -45
  91. data/lib/bcdice/game_system/sword_world/rating_parser.rb +172 -141
  92. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +14 -10
  93. data/lib/bcdice/game_system.rb +16 -1
  94. data/lib/bcdice/randomizer.rb +1 -1
  95. data/lib/bcdice/version.rb +1 -1
  96. metadata +45 -5
@@ -2,9 +2,9 @@
2
2
 
3
3
  module BCDice
4
4
  module GameSystem
5
- class SterileLife < Base
5
+ class StellarLife < Base
6
6
  # ゲームシステムの識別子
7
- ID = 'SterileLife'
7
+ ID = 'StellarLife'
8
8
 
9
9
  # ゲームシステム名
10
10
  NAME = 'ステラーライフTRPG'
@@ -37,68 +37,17 @@ module BCDice
37
37
   ・超未来の宇宙船内 INT
38
38
  MESSAGETEXT
39
39
 
40
- register_prefix('\d*DA', 'VPFT', 'VNFT', 'VNRT', 'AAFT', 'AST', 'RNST', 'RET', 'TRST', 'TRAT', 'TRMT', 'TROT', 'TET', 'ENT', 'CUT', 'NAT', 'INT')
41
- def eval_game_system_specific_command(command) # ダイスロールコマンド
40
+ register_prefix('\d*DA')
41
+ def eval_game_system_specific_command(command)
42
42
  # 通常判定部分をgetJudgeResultコマンドに切り分け
43
43
  output = getJudgeResult(command)
44
44
  return output unless output.nil?
45
45
 
46
46
  # テーブル
47
- result = '0'
48
- type = ""
49
- total_n = ""
47
+ table = TABLES[command]
48
+ return table.roll(@randomizer) unless table.nil?
50
49
 
51
- case command.upcase # 大文字にしてチェックする
52
- when 'VPFT'
53
- type = '船名接頭辞表'
54
- result, total_n = get_shipprefix_table
55
- when 'VNFT'
56
- type = '船名前半表'
57
- result, total_n = get_shipnameformer_table
58
- when 'VNRT'
59
- type = '船名後半表'
60
- result, total_n = get_shipnamelatter_table
61
- when 'AAFT'
62
- type = 'アバターアルファベット表①'
63
- result, total_n = get_avataralphabetfirst_table
64
- when 'AAST'
65
- type = 'アバターアルファベット表②'
66
- result, total_n = get_avataralphabetsecond_table
67
- when 'RNST'
68
- type = 'ランダムNPC艦表'
69
- result, total_n = get_randomnpcship_table
70
- when 'RET'
71
- type = 'ランダムイベント表'
72
- result, total_n = get_randomevent_table
73
- when 'TRST'
74
- type = 'お宝特徴表'
75
- result, total_n = get_treasurespec_table
76
- when 'TRAT'
77
- type = 'お宝形容表'
78
- result, total_n = get_treasureappearance_table
79
- when 'TRMT'
80
- type = 'お宝外見表'
81
- result, total_n = get_treasurematerial_table
82
- when 'TROT'
83
- type = 'お宝物品表'
84
- result, total_n = get_treasureobject_table
85
- when 'TET'
86
- type = '超未来の技術'
87
- result, total_n = get_sftechnology_table
88
- when 'ENT'
89
- type = '超未来のエンタメ'
90
- result, total_n = get_sfentertainment_table
91
- when 'CUT'
92
- type = '超未来の文化'
93
- result, total_n = get_sfculture_table
94
- when 'NAT'
95
- type = '超未来の自然'
96
- result, total_n = get_sfnature_table
97
- when 'INT'
98
- type = '超未来の宇宙船内'
99
- result, total_n = get_sfinterior_table
100
- end
101
- return "#{type}(#{total_n}) > #{result}"
50
+ nil
102
51
  end
103
52
 
104
53
  def getJudgeResult(command)
@@ -120,9 +69,10 @@ module BCDice
120
69
  if number <= 0 then number = 1 end
121
70
 
122
71
  number.times do
123
- dice = @randomizer.roll_once(10) - 1
124
- if (dice + correction).to_i >= single || dice == triple then success += 1 end
125
- if (dice + correction).to_i >= double || dice == triple then success += 1 end
72
+ dice = @randomizer.roll_once(10)
73
+ dice = 0 if dice == 10
74
+ if (dice + correction) >= single || dice == triple then success += 1 end
75
+ if (dice + correction) >= double || dice == triple then success += 1 end
126
76
  if dice == triple then success += 1 end # unless triple == -1 3成功はダイス目一致時のみ
127
77
  if dicetext == ""
128
78
  dicetext = dice.to_s
@@ -148,54 +98,95 @@ module BCDice
148
98
  return result
149
99
  end
150
100
 
151
- # 1D10 ロール用
152
- def get_table_by_1d10(table)
153
- dice = @randomizer.roll_once(10)
101
+ class StellarLifeD10Table < DiceTable::Table
102
+ def initialize(name, items)
103
+ super(name, '1D10', items)
104
+ end
154
105
 
155
- text = table[dice - 1]
106
+ def choice(value)
107
+ index = value - @times
108
+ return RollResult.new(@name, value, @items[index])
109
+ end
156
110
 
157
- indexText = (dice - 1).to_s
111
+ # このゲームでは D10 の出目 10 を 0 と読む
112
+ class RollResult < DiceTable::RollResult
113
+ def to_s
114
+ "#{@table_name}(#{@value == 10 ? 0 : value}) > #{@body}"
115
+ end
116
+ end
117
+ end
158
118
 
159
- return '1', indexText if text.nil?
119
+ # 紙面上で 0 始まり 9 終わりの D10 テーブル( 0, 1, 2, ..., 8, 9 )
120
+ class StellarLifeD10_0to9_Table < StellarLifeD10Table
121
+ def initialize(name, *items)
122
+ super(name, items[1..9] + [items[0]]) # 出目 10 を 0 と読む(表示する)ため、 0 番目を末尾に回す.
123
+ end
124
+ end
160
125
 
161
- return text, indexText
126
+ # 紙面上で 1 始まり 0 終わりの D10 テーブル( 1, 2, 3, ..., 8, 9, 0 )
127
+ class StellarLifeD10_1to0_Table < StellarLifeD10Table
128
+ def initialize(name, *items)
129
+ super(name, items)
130
+ end
162
131
  end
163
132
 
164
- # D1010 ロール用
165
- def get_table_by_d1010(table)
166
- dice1 = @randomizer.roll_once(10)
167
- dice2 = @randomizer.roll_once(10)
133
+ # D10 を 2 個振って、 100 通りの結果を得るテーブル
134
+ # (このゲームではこの振り方の表に 2D10 と書いてあるので、そういう名前にしてある)
135
+ class StellarLife2D10Table
136
+ def initialize(name, *items)
137
+ @name = name
138
+ @items = items.freeze
139
+ end
168
140
 
169
- num = (dice1 - 1) * 10 + (dice2 - 1)
141
+ def roll(randomizer)
142
+ dices = randomizer.roll_barabara(2, 10)
170
143
 
171
- text = table[num]
144
+ row_index = dices[0] == 10 ? 0 : dices[0]
145
+ column_index = dices[1] == 10 ? 0 : dices[1]
172
146
 
173
- indexText = "#{dice1 - 1}#{dice2 - 1}"
147
+ key = row_index * 10 + column_index
148
+ chosen = @items[key]
174
149
 
175
- return '1', indexText if text.nil?
150
+ return RollResult.new(@name, format("%02d", key), chosen)
151
+ end
176
152
 
177
- return text, indexText
153
+ # 出目 10 を 0 と読むため、ゼロパディングしなければならない
154
+ class RollResult < DiceTable::RollResult
155
+ def to_s
156
+ "#{@table_name}(#{format('%02d', @value)}) > #{@body}"
157
+ end
158
+ end
178
159
  end
179
160
 
180
- # D510 ロール用
181
- def get_table_by_d510(table)
182
- dice1 = @randomizer.roll_once(10)
183
- dice2 = @randomizer.roll_once(10)
184
-
185
- num = ((dice1 - 1) / 2) * 10 + (dice2 - 1)
186
-
187
- text = table[num]
188
-
189
- indexText = "#{dice1 - 1}#{dice2 - 1}"
190
-
191
- return '1', indexText if text.nil?
192
-
193
- return text, indexText
161
+ # D10 を 2 個振って、 50 通りの結果を得るテーブル
162
+ #
163
+ # イメージ図:
164
+ #
165
+ # [0-1] [2-3] .. [8-9]
166
+ # [0]
167
+ # [1]
168
+ # [2]
169
+ # :
170
+ # [8]
171
+ # [9]
172
+ #
173
+ # (c.f. ルールブック p120, p123 )
174
+ class StellarLife2D10HalfTable < StellarLife2D10Table
175
+ def initialize(name, items)
176
+ super(
177
+ name,
178
+ *items.map do |row|
179
+ row.map do |value|
180
+ [value, value]
181
+ end.flatten
182
+ end.flatten
183
+ )
184
+ end
194
185
  end
195
186
 
196
- # 船名接頭辞表
197
- def get_shipprefix_table
198
- table = [
187
+ TABLES = {
188
+ 'VPFT' => StellarLifeD10_0to9_Table.new(
189
+ '船名接頭辞表',
199
190
  'ISS(独立宇宙船)',
200
191
  'PCS(惑星運搬船)',
201
192
  'NSS(中立星間船)',
@@ -206,13 +197,9 @@ module BCDice
206
197
  'OES(外縁探検船)',
207
198
  'SSS(主権星間船)',
208
199
  'HMS(陛下の船)'
209
- ]
210
- return get_table_by_1d10(table)
211
- end
212
-
213
- # 船名前半表
214
- def get_shipnameformer_table
215
- table = [
200
+ ),
201
+ 'VNFT' => StellarLife2D10Table.new(
202
+ '船名前半表',
216
203
  'ブラック', 'ホワイト', 'レッド', 'ブルー', 'グリーン', 'パープル', 'ライラック', 'ブラウン', 'シルバー', 'ゴールド',
217
204
  'ネイビー', 'マリン', 'オーシャン', 'アクア', 'セイル', 'アンカー', 'パイレーツ', 'プライヴァティア', 'アルマダ', 'フロティラ',
218
205
  'ギャリソン', 'タンク', 'センチネル', 'スクァッド', 'トループ', 'フロント', 'オフェンシブ', 'ヴァンガード', 'オーダー', 'フラッグ',
@@ -223,80 +210,60 @@ module BCDice
223
210
  'フリー', 'ライト', 'リベラル', 'リッチ', 'エコノミー', 'マーケット', 'ナショナル', 'ソーシャル', 'エコロジカル', 'ナチュラル',
224
211
  'ロイヤル', 'プリンシパル', 'インペリアル', 'マジェスティック', 'ノーブル', 'ロード', 'ハイネス', 'デューク', 'カウント', 'バロン',
225
212
  'スモーク', 'クリア', 'ブリザード', 'ゲイル', 'ミスト', 'ヘイル', 'スノウ', 'ライトニング', 'サンダー', '(PC1人の名前)'
226
- ]
227
- return get_table_by_d1010(table)
228
- end
229
-
230
- # 船名後半表
231
- def get_shipnamelatter_table
232
- table = [
213
+ ),
214
+ 'VNRT' => StellarLife2D10Table.new(
215
+ '船名後半表',
233
216
  'ローズ', 'ダンデリオン', 'オーキッド', 'アザリア', 'スウォードリリー', 'アイリス', 'ラベンダー', 'プロテア', 'グラジオラス', 'マグノリア',
234
217
  'ライナー', 'カッター', 'フライター', 'フェリー', 'バルジ', 'クルーザー', 'クラフト', 'リガー', 'キール', 'ヴェッセル',
235
218
  'リミテッド', 'インク', 'マーチャント', 'エクスペディション', 'コンボイ', 'キャラバン', 'コマース', 'レティニュー', 'アドバイザリー', 'コンサルティング',
236
- 'テレスコープ', 'オブザーバー', 'グラス', 'コスモス', 'ヘブン', 'ノート', 'ロット', 'スペースフェアラー', 'ノマド',
219
+ 'テレスコープ', 'オブザーバー', 'グラス', 'コスモス', 'ヘブン', 'ノート', 'ロット', 'スペース', 'フェアラー', 'ノマド',
237
220
  'ブローカー', 'ディーラー', 'ダイバー', 'ドライバー', 'アドベンチャラー', 'ランナー', 'ウォーカー', 'トラベラー', 'トレーダー', 'エクスプローラー',
238
221
  'キャット', 'パンサー', 'ライオン', 'ピューマ', 'レオパルド', 'タイガー', 'ジャガー', 'オセロット', 'リンクス', 'チーター',
239
222
  'ウォルフ', 'カメレオン', 'クラブ', 'オスカー', 'シャーク', 'イーグル', 'コンドル', 'ドルフィン', 'サウルス', 'フィッシュ',
240
223
  'コンキスタドール', 'フサリア', 'ナイト', 'コサック', 'ヘタイロイ', 'バーサーカー', 'レギオン', 'ウォリアー', 'テルシオ', 'ライダー',
241
224
  'ルール', 'ディメイン', 'レイン', 'ジャスティス', 'エンクレーブ', 'ステート', 'カントリー', 'レルム', 'ドミニオン', 'ソブリン',
242
- 'ストーム', 'テンペスト', 'アヴァランチ', 'ストライク', 'フォール', 'クエイク', 'ハリケーン', 'ブラスター', 'ブリザード', '(PC 1人の名前)'
243
- ]
244
- return get_table_by_d1010(table)
245
- end
246
-
247
- # アバターアルファベット表①
248
- def get_avataralphabetfirst_table
249
- table = [
225
+ 'ストーム', 'テンペスト', 'アヴァランチ', 'ストライク', 'フォール', 'クエイク', 'ハリケーン', 'ブラスター', 'ブリザード', '(PC1人の名前)'
226
+ ),
227
+ 'AAFT' => StellarLifeD10_0to9_Table.new(
228
+ 'アバターアルファベット表①',
250
229
  'A', 'F', 'G', 'I', 'J', 'K', 'R', 'S', 'T', 'V'
251
- ]
252
- return get_table_by_1d10(table)
253
- end
254
-
255
- # アバターアルファベット表②
256
- def get_avataralphabetsecond_table
257
- table = [
230
+ ),
231
+ 'AAST' => StellarLifeD10_0to9_Table.new(
232
+ 'アバターアルファベット表②',
258
233
  'D', 'F', 'L', 'M', 'N', 'O', 'R', 'S', 'X', 'Z'
259
- ]
260
- return get_table_by_1d10(table)
261
- end
262
-
263
- # ランダムNPC艦
264
- def get_randomnpcship_table
265
- table = [
266
- '装甲+20(HP+400)', '装甲+20(HP+400)', '〈電磁パルスフィールド〉1基', '〈中性粒子ビーム砲〉2基', '〈バリアフィールド〉2基',
267
- '装甲+20(HP+400)', '装甲+20(HP+400)', '〈電磁パルスフィールド〉1基 〈高機動ミサイル〉2基', '〈バリアフィールド〉2基',
268
- '装甲+20(HP+400)', '装甲+20(HP+400)', '〈リサイクルフォージ〉', '〈高機動ミサイル〉2基', '〈バリアフィールド〉2基',
269
- '装甲+20(HP+400)', '装甲+20(HP+400)', '〈リサイクルフォージ〉', '〈高機動ミサイル〉2基', '〈レーザーディフェンス〉2基',
270
- '装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈高圧縮精製装置〉', '〈アタックドローン〉1基 〈レーザーディフェンス〉2基',
271
- '装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈高圧縮精製装置〉', '〈爆縮高エネルギービーム砲〉2基 〈レーザーディフェンス〉2基',
272
- '装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈艦載メタルディテクター〉', '〈マグネティックアロイミサイル〉2基', '〈艦内防護装甲〉',
273
- '装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈「スターブレイカー」のハリボテ〉', '〈ドローンアバター〉1基 装甲+40(HP+800)',
274
- '装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈中性粒子ビーム砲〉2基', '〈拡散粒子ビーム砲〉2基 装甲+40(HP+800)',
275
- '装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈中性粒子ビーム砲〉2基', '〈マイクロミサイルポッド〉2基', '装甲+40(HP+800)'
276
- ]
277
- return get_table_by_d510(table)
278
- end
279
-
280
- # ランダムイベント表
281
- def get_randomevent_table
282
- table = [
283
- # 0
284
- '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得',
285
- # 1
286
- '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '巨大暗黒星雲 この星系ではビーム属性の攻撃の判定で達成値-1', '超新星残骸 この星系では実体弾属性の攻撃の判定で達成値-1', 'C型アステロイド 推進剤400を獲得', '氷のアステロイド群 推進剤500を獲得', '巨大アイスブロック 推進剤600を獲得', '資源アステロイド 推進剤200、鋼材200を獲得', '枯渇彗星核 実体弾攻撃でダメージ200を出すと推進剤600を獲得', '放棄されたドローン 鋼材200、希少金属1を獲得',
287
- # 2
288
- '金属塊 鋼材300を獲得', 'S型アステロイド 鋼材400を獲得', 'S型アステロイド 鋼材400を獲得', 'スペースデブリ 鋼材500を獲得', 'スペースデブリ 鋼材500を獲得', 'M型アステロイド 鋼材600を獲得', '艦船の残骸 鋼材700を獲得', '大資源アステロイド 推進剤300、鋼材300を獲得', '小惑星の欠片 ビーム攻撃でダメージ200を出すと鋼材600を獲得', '希少金属アステロイド 希少金属2を獲得',
289
- # 3
290
- '砕けた惑星核 希少金属3を獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '氷のアステロイド群 推進剤500を獲得', '巨大アイスブロック 推進剤600を獲得',
291
- # 4
292
- '大資源アステロイド 推進剤300、鋼材300を獲得', '氷火山アステロイド 推進剤300、希少金属1を獲得', 'オーガニックアステロイド 推進剤700を獲得', '金属塊 鋼材300を獲得', 'スペースデブリ 鋼材500を獲得', 'M型アステロイド 鋼材600を獲得', '放棄されたモジュール 鋼材300、希少金属1を獲得', '砕けた惑星核 希少金属3を獲得', 'レアアースアステロイド 希少金属4を獲得', 'レアアースアステロイド 希少金属4を獲得'
293
- ]
294
- return get_table_by_d510(table)
295
- end
296
-
297
- # お宝特徴表
298
- def get_treasurespec_table
299
- table = [
234
+ ),
235
+ 'RNST' => StellarLife2D10HalfTable.new(
236
+ 'ランダムNPC艦表',
237
+ [
238
+ ['装甲+20(HP+400)', '装甲+20(HP+400)', '〈電磁パルスフィールド〉1基', '〈中性粒子ビーム砲〉2基', '〈バリアフィールド〉2基'],
239
+ ['装甲+20(HP+400)', '装甲+20(HP+400)', '〈電磁パルスフィールド〉1基', '〈高機動ミサイル〉2基', '〈バリアフィールド〉2基'],
240
+ ['装甲+20(HP+400)', '装甲+20(HP+400)', '〈リサイクルフォージ〉', '〈高機動ミサイル〉2基', '〈バリアフィールド〉2基'],
241
+ ['装甲+20(HP+400)', '装甲+20(HP+400)', '〈リサイクルフォージ〉', '〈高機動ミサイル〉2基', '〈レーザーディフェンス〉2基'],
242
+ ['装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈高圧縮精製装置〉', '〈アタックドローン〉1基', '〈レーザーディフェンス〉2基'],
243
+ ['装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈高圧縮精製装置〉', '〈爆縮高エネルギービーム砲〉2基', '〈レーザーディフェンス〉2基'],
244
+ ['装甲+20(HP+400)', '〈ホーミング量子ビーム〉2基', '〈艦載メタルディテクター〉', '〈マグネティックアロイミサイル〉2基', '〈艦内防護装甲〉'],
245
+ ['装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈「スターブレイカー」のハリボテ〉', '〈ドローンアバター〉1基', '装甲+40(HP+800)'],
246
+ ['装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈中性粒子ビーム砲〉2基', '〈拡散粒子ビーム砲〉2基', '装甲+40(HP+800)'],
247
+ ['装甲+20(HP+400)', '〈ロングランスミサイル〉2基', '〈中性粒子ビーム砲〉2基', '〈マイクロミサイルポッド〉2基', '装甲+40(HP+800)'],
248
+ ]
249
+ ),
250
+ 'RET' => StellarLife2D10HalfTable.new(
251
+ 'ランダムイベント表',
252
+ [
253
+ ['燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '金属塊 鋼材300を獲得', '砕けた惑星核 希少金属3を獲得', '大資源アステロイド 推進剤300、鋼材300を獲得'],
254
+ ['燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', 'S型アステロイド 鋼材400を獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '氷火山アステロイド 推進剤300、希少金属1を獲得'],
255
+ ['燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '巨大暗黒星雲 この星系ではビーム属性の攻撃の判定で達成値-1', 'S型アステロイド 鋼材400を獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', 'オーガニックアステロイド 推進剤700を獲得'],
256
+ ['燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '超新星残骸 この星系では実体弾属性の攻撃の判定で達成値-1', 'スペースデブリ 鋼材500を獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', '金属塊 鋼材300を獲得'],
257
+ ['燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', 'C型アステロイド 推進剤400を獲得', 'スペースデブリ 鋼材500を獲得', '燃料1 《周辺探索》成功数0~1では推進剤[1D10×30]獲得', 'スペースデブリ 鋼材500を獲得'],
258
+ ['鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '氷のアステロイド群 推進剤500を獲得', 'M型アステロイド 鋼材600を獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', 'M型アステロイド 鋼材600を獲得'],
259
+ ['鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '巨大アイスブロック 推進剤600を獲得', '艦船の残骸 鋼材700を獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '放棄されたモジュール 鋼材300、希少金属1を獲得'],
260
+ ['鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '資源アステロイド 推進剤200、鋼材200を獲得', '大資源アステロイド 推進剤300、鋼材300を獲得', '鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '砕けた惑星核 希少金属3を獲得'],
261
+ ['鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '枯渇彗星核 実体弾攻撃でダメージ200を出すと推進剤600を獲得', '小惑星の欠片 ビーム攻撃でダメージ200を出すと鋼材600を獲得', '氷のアステロイド群 推進剤500を獲得', 'レアアースアステロイド 希少金属4を獲得'],
262
+ ['鋼材1 《周辺探索》成功数0~1では鋼材[1D10×30]獲得', '放棄されたドローン 鋼材200、希少金属1を獲得', '希少金属アステロイド 希少金属2を獲得', '巨大アイスブロック 推進剤600を獲得', 'レアアースアステロイド 希少金属4を獲得'],
263
+ ]
264
+ ),
265
+ 'TRST' => StellarLife2D10Table.new(
266
+ 'お宝特徴表',
300
267
  '恐竜を模した(価値+3)', 'ヘビを模した(価値+1)', '魚を模した(価値+1)', 'イヌを模した(価値+1)', 'ウマを模した(価値+1)', 'ネズミを模した(価値+1)', 'ウサギを模した(価値+1)', 'クマを模した(価値+1)', 'ネコを模した(価値+1)', '鳥を模した(価値+2)',
301
268
  '触り心地の良い(価値+1)', 'ふかふかした(価値+1)', 'ふわふわの', '柔らかな', 'なめらかな', 'かすかに震える', 'とげとげした', '硬質な', 'ザラッとした', '持ちやすい(価値+1)',
302
269
  '美しい(価値+1)', 'きれいな', '麗しの(価値+1)', '華美な', '派手な', 'ほのかに発光する', '色とりどりの', '鮮やかな', '変化に富む', '可憐な(価値+1)',
@@ -307,13 +274,9 @@ module BCDice
307
274
  '気高き(価値+1)', '艶やかな', '気取った', '気位の高い', 'リッチな', '気品漂う', '高潔な', '格調高い(価値+1)', '典雅な', 'ロイヤルな(価値+1)',
308
275
  '闇に溶けるような(価値+1)', '血塗られた', '片翼の', '円環の', '「機関」の', 'オッドアイの', '片目の', '堕天使の', '二重人格の(価値+1)', '輝きを纏う(価値+1)',
309
276
  '秘密を持つ(価値+2)', 'いわく付きの(価値+1)', '歴史ある(価値+1)', '奪い合われた(価値+1)', '受け継がれた(価値+1)', '失われた文化の(価値+1)', '謎に満ちた(価値+1)', '廃墟で見つかった(価値+1)', 'あのシリーズの1つ(価値+1)', '寵愛を受けた(価値+3)'
310
- ]
311
- return get_table_by_d1010(table)
312
- end
313
-
314
- # お宝形容表
315
- def get_treasureappearance_table
316
- table = [
277
+ ),
278
+ 'TRAT' => StellarLife2D10Table.new(
279
+ 'お宝形容表',
317
280
  'ブレスト(価値+3)', 'ホーリー(価値+1)', 'ワンダフル(価値+1)', 'シャイニング(価値+1)', 'スーパー(価値+1)', 'エクセレント(価値+1)', 'グロリアス(価値+1)', 'グレート(価値+1)', 'フラワリー(価値+1)', 'ミラクル(価値+2)',
318
281
  'アース(価値+1)', 'サバンナ(価値+1)', 'マウンテン', 'リバー', 'フォレスト', 'ジャングル', 'デザート', 'ハイランド', 'レイク', 'オーシャン(価値+1)',
319
282
  'スペース(価値+1)', 'コスモ', 'ワールド(価値+1)', 'ユニバーサル', 'スカイ', 'メテオール', 'コメット', 'ルナティック', 'プラネタリー', 'ステラー(価値+1)',
@@ -324,13 +287,9 @@ module BCDice
324
287
  '宇宙(価値+1)', '乾坤', '世界', '森羅万象', '空の', '流星の', '隕石の', '月の(価値+1)', '惑星', '星の(価値+1)',
325
288
  '大地の(価値+1)', '草原の', '山の', '川の', '森の', '林の', '砂漠の', '高地の', '湖の(価値+1)', '海の(価値+1)',
326
289
  '祝福の(価値+2)', '神聖な(価値+1)', '不思議な(価値+1)', '輝かしい(価値+1)', '超(価値+1)', '素晴らしい(価値+1)', '栄光の(価値+1)', '偉大な(価値+1)', '華の(価値+1)', '奇跡の(価値+3)'
327
- ]
328
- return get_table_by_d1010(table)
329
- end
330
-
331
- # お宝外見表
332
- def get_treasurematerial_table
333
- table = [
290
+ ),
291
+ 'TRMT' => StellarLife2D10Table.new(
292
+ 'お宝外見表',
334
293
  'ダイヤモンド(価値+3)', 'ジェイド(価値+1)', 'エメラルド(価値+1)', 'トパーズ(価値+1)', 'サファイア(価値+1)', 'ルビー(価値+1)', 'ガーネット(価値+1)', 'ラピスラズリ(価値+1)', 'アメジスト(価値+1)', 'スモーキークォーツ(価値+2)',
335
294
  'ゴールデン(価値+1)', 'チタン(価値+1)', 'ブリキの', 'アイアン', 'スチール', '真鍮の', 'ブロンズ', 'カッパー', 'シルバー', 'プラチナ(価値+1)',
336
295
  'マーブル(価値+1)', 'グラナイト', 'オブシディアン(価値+1)', 'スレート', 'ライムストーン', 'ガラス', 'リネン', 'ビロード', 'コットン', 'シルク(価値+1)',
@@ -341,13 +300,9 @@ module BCDice
341
300
  '大理石の(価値+1)', '御影石の', '黒曜石の', '粘板岩の', '石灰岩の', '玻璃の', '麻の', '天鵞絨の(価値+1)', '綿の', '絹の(価値+1)',
342
301
  '黄金の(価値+1)', 'アルミニウム', '錫の', '鉄の', '鋼鉄の', '鉛の', '青銅の', '銅の', '銀の(価値+1)', '白金の(価値+1)',
343
302
  '金剛石の(価値+2)', '翡翠の(価値+1)', '翠玉の(価値+1)', '黄玉の(価値+1)', '蒼玉の(価値+1)', '紅玉の(価値+1)', '紅榴石の(価値+1)', '瑠璃の(価値+1)', '紫水晶の(価値+1)', '煙水晶の(価値+3)'
344
- ]
345
- return get_table_by_d1010(table)
346
- end
347
-
348
- # お宝物品表
349
- def get_treasureobject_table
350
- table = [
303
+ ),
304
+ 'TROT' => StellarLife2D10Table.new(
305
+ 'お宝物品表',
351
306
  'フルート(価値+3)', 'オカリナ(価値+1)', 'ギター(価値+1)', 'ピアノ(価値+1)', 'ドラム(価値+1)', 'ティンパニー(価値+1)', '太鼓(価値+1)', 'トランペット(価値+1)', 'ハープ(価値+1)', 'マイク(価値+2)',
352
307
  'ブランコ(価値+1)', '人形(価値+1)', 'シーソー', 'ベンチ', 'すべり台', 'ラケット', 'ミニカー', 'コースター', 'ボール', 'オーブ(価値+1)',
353
308
  '皿(価値+1)', 'プレート', 'ティーセット(価値+1)', '箸', 'フォーク', 'スプーン', 'ナイフ', 'フライパン', '鍋', 'カップ(価値+1)',
@@ -358,13 +313,9 @@ module BCDice
358
313
  'スマートドレス(価値+1)', 'タッチパネル', 'インプットグローブ', 'プロジェクター', 'ディテクター', 'アナライザー', 'インジェクター', 'エアーボトル(価値+1)', 'ワイヤーロンチャー', 'ジェットパック(価値+1)',
359
314
  'ランプ(価値+1)', 'ドア', '窓', '灯籠', '棚', 'キッチン', 'ソファ', '椅子', 'テーブル(価値+1)', 'ベッド(価値+1)',
360
315
  '人物像(価値+2)', 'フィギュア(価値+1)', 'モデル(価値+1)', '植物像(価値+1)', '動物像(価値+1)', 'レリーフ(価値+1)', 'オブジェ(価値+1)', 'ドーム(価値+1)', 'タペストリー(価値+1)', '絵画(価値+3)'
361
- ]
362
- return get_table_by_d1010(table)
363
- end
364
-
365
- # 超未来の技術
366
- def get_sftechnology_table
367
- table = [
316
+ ),
317
+ 'TET' => StellarLifeD10_1to0_Table.new(
318
+ '超未来の技術',
368
319
  '船の種、家の種、ビルの種:発達したバイオテクノロジーにより、光合成をしながらカーボン製品を作り出す「種」が作られました。土に植えると一軒家に育ったり、立派な木になってコップの実をならせたりします。',
369
320
  'ワープリング:星と星の間を結ぶ空間のトンネルを作り出すのが、「ワープリング」です。中に入ると超光速で空間が周回しており、数時間から数日で数光年先の星に辿り着くことができます。',
370
321
  '擬似重力発生装置:超未来の宇宙船や宇宙ステーションでは、回転による遠心力などを活用して、擬似的に床に引っ張られる力を発生させています。パラメーターを変えれば、物の重さも体重も思いのままです。',
@@ -375,30 +326,22 @@ module BCDice
375
326
  'ジェットパック:個人用の強力なジェット噴射機で、誰でも空に飛び上がることができます。長く使っていると高熱を発するので注意。宇宙空間では、これとスマートワイヤーを組み合わせて移動に使います。',
376
327
  'メンタルプロジェクション:ヒトの心は、様々な価値観や性格が溶け合う複層的なもの。その複雑な姿を脳波投影で視界に映して、心の整理を付けやすくする技術です。しばしば「天使と悪魔」のビジュアルを付けます。',
377
328
  'スライムソファ:球体状の大きなソファで、ポリマーとカーボン素材でできており、自在に変形させたり柔らかさを変えたりできます。床や壁に吸着してくれるため、無重力空間では身体を固定してくれます。'
378
- ]
379
- return get_table_by_1d10(table)
380
- end
381
-
382
- # 超未来のエンタメ
383
- def get_sfentertainment_table
384
- table = [
329
+ ),
330
+ 'ENT' => StellarLifeD10_1to0_Table.new(
331
+ '超未来のエンタメ',
385
332
  'ホロシアター:劇場いっぱいにホログラムを展開して、広大な大地や美しい空の上などで大冒険のスペクタクルショーを「その場にいるような」臨場感で楽しむことができます。',
386
333
  'アバターファイト!:手の平サイズの小型の人型アバターを思念で操って、ドームの中でバトルを楽しみます。フィールドはホログラム生成で、ビームやミサイルもホログラム再現なので、損傷の心配はありません。',
387
- 'VRゲーム:外接電脳さえ持っていれば、VR ゴーグルがなくても仮想現実世界にダイブできます。圧倒的なリアリティを持つ仮想世界を堪能し、育成や対戦、パズルなど様々なゲームを楽しめます。',
334
+ 'VRゲーム:外接電脳さえ持っていれば、VRゴーグルがなくても仮想現実世界にダイブできます。圧倒的なリアリティを持つ仮想世界を堪能し、育成や対戦、パズルなど様々なゲームを楽しめます。',
388
335
  'ハイド・アンド・シーク:惑星全域を舞台にしたかくれんぼです。第七感覚をフル活用して都市の全域を見て回り、ときには動物たちからも情報を集めながら、この星のどこかにいる鬼を見つけ出しましょう。',
389
336
  'アロマバス:リラックスできる香りがいっぱいのお湯に浸かって、心身を癒やします。神経に疲れが溜まる超未来。ハーブの香りを思い切り吸い込んで、緊張を溶きほぐします。',
390
337
  'ロジックパズル:外接電脳をフル活用しないと解けないような、難解なパズルに挑戦します。一見すると無関係な2つの要素を組み合わせることで、意外な手がかりが見つかります。',
391
338
  'ホロアスレチック:コンクリートや植物性ビルなどを使って組み立てた殺風景なアスレチックを、ホログラムで美しくダイナミックに彩ります。超未来人の高い運動能力を存分に発揮できます。',
392
339
  'スカイレース:超未来なので人は空を飛べます。トリブリードは自前の翼で、そうでなくても自分で設計したグライダーなどで、空中にホロ投影されるリングを通過しながら、複雑なコースを高速で飛びます。',
393
340
  'ミステリーハウス:宝探しや事件解決など、規定時間以内に「謎」を解くイベントです。屋敷の中には手がかりが散りばめられており、VRでもリアルでも手軽に探偵遊びを楽しむことができます。',
394
- 'SNS:超未来のSNS は濃密にして苛烈!超高速でやり取りが行いながら、惑星の多くの人々と触れ合い交流を深めます。惑星ごとの微妙な文化の違いに注意を払いましょう。'
395
- ]
396
- return get_table_by_1d10(table)
397
- end
398
-
399
- # 超未来の文化
400
- def get_sfculture_table
401
- table = [
341
+ 'SNS:超未来のSNSは濃密にして苛烈!超高速でやり取りが行いながら、惑星の多くの人々と触れ合い交流を深めます。惑星ごとの微妙な文化の違いに注意を払いましょう。'
342
+ ),
343
+ 'CUT' => StellarLifeD10_1to0_Table.new(
344
+ '超未来の文化',
402
345
  'リスペクト・ユー:超未来の社会では、他人に対する「リスペクト」が何より大事にされています。見てもらうこと、尊敬されることを目指して、今日も人々はSNSで活動したり、働いたりします。',
403
346
  'マインドミュージック:手を振るうことで感情を音色にする未来的な音楽です。VRやホログラフィと組み合わせれば映像効果も付き、思うままに自分の心から湧き出る音楽を演奏することができます。',
404
347
  'レプロドュィーユ:オペラやバレエ、歌舞伎、ミュージカルといった歌劇の血筋を引いた文化です。物語や歴史の登場人物になりきって、身体の動きを正確に制御しつつ音楽を演奏して全身で表現を行います。',
@@ -409,13 +352,9 @@ module BCDice
409
352
  'ガーデニング:平たい土地に植物や柵、椅子や机などの種を植えて、美しい庭を造成します。惑星ごとに異なる気候に適応した様々な固有種を使って、その惑星ならではの花の彩りを演出しましょう。',
410
353
  'お料理!:超未来の合成肉や促成栽培野菜などを使って、舌を楽しませるおいしい料理を作りましょう。調理器具は3Dプリンターやクローナイフ、調味料は塩や砂糖、マイクロマシンに香辛料などです。',
411
354
  'シリコンオフィス:角張ったオフィス机やタイムカードなど超未来の世界では絶滅しました。人々は家からでも公園からでも木の上や洞窟の中からでもワークに参加しますし、趣味と労働の区別を付けません。'
412
- ]
413
- return get_table_by_1d10(table)
414
- end
415
-
416
- # 超未来の自然
417
- def get_sfnature_table
418
- table = [
355
+ ),
356
+ 'NAT' => StellarLifeD10_1to0_Table.new(
357
+ '超未来の自然',
419
358
  'アニマルハート:動物たちの鳴き声の意味を解読し、また脳波分析を組み合わせることで、高等知能動物たちとある程度の意思疎通ができます。共通の話題は天気の話や景色の話、それにコイバナなど。',
420
359
  'キャンプ:野外で夜を越すときは、キャンプをします。スマートテクスタイルを広げて雨風を避けるテントを作り、虫や鳥の鳴き声を聞きながら星空を眺めて一晩を過ごします。',
421
360
  'ミネラルウォーター:テラフォーミングした惑星の海は、元の惑星のミネラル組成によって成分がだいぶ違ってきます。それほどしょっぱくない海もあれば、赤や緑っぽい海もあり。生息する魚等もまったく違います。',
@@ -426,13 +365,9 @@ module BCDice
426
365
  'スカイハイ・ビュー:自然の環境ですばやく移動するには、グライダーや翼を使って滑空するのが手っ取り早いです。高い木や丘に上ってからジェットパック併用で舞い上がれば、空からの美しい景観も楽しめます。',
427
366
  '道なき森の道:惑星を覆う森の中には、基本的に整備された道はありません。空を見上げれば陽の光を遮る樹の冠。草をかき分け、花や草いきれの臭いを感じながら、ときには木の上を通って、先に進みます。',
428
367
  'テラフォーミング:この銀河で、地球以外のすべての惑星はヒトが入植するために「テラフォーミング」したものです。水と大気を形成し、植物を育て、動物たちを導入し、長い年月を経て現在の姿になりました。'
429
- ]
430
- return get_table_by_1d10(table)
431
- end
432
-
433
- # 超未来の宇宙船内
434
- def get_sfinterior_table
435
- table = [
368
+ ),
369
+ 'INT' => StellarLifeD10_1to0_Table.new(
370
+ '超未来の宇宙船内',
436
371
  '甲板上でお茶を:狭い宇宙船に飽きてきたら、甲板の上に出て無限に広がる宇宙を感じることもできます。気圧0なので圧力ポットで持ってくる必要がありますが、星空を眺めながら飲むお茶は乙なものです。',
437
372
  'マイクロマシン隔壁:宇宙船の隔壁はメタルナノカーボンやナノスチールでできていますが、補修のためにマイクロマシンが住んでいます。ときどき壁の端がちらちら動いて見えるのも、彼らのためかもしれません。',
438
373
  'ダンベル100kg持てる:惑星環境と比べれば、宇宙船の擬似重力はどうしても弱くなるもの。筋力の衰えを防ぐために、部屋にトレーニングマシンを生成して筋トレをします。適度な負荷をかけましょう。',
@@ -443,9 +378,10 @@ module BCDice
443
378
  'ワープ酔い:ワープ航法は空間の歪みを利用します。装甲が最も厚いユリカゴの中でも、ワープリングを出入りするときはグラっとくる感触があります。気分が悪くなったら、おとなしく寝ていましょう。',
444
379
  '1日25時間:宇宙船に「昼夜」はないため、照明を人工的に調整して生活サイクルを作ります。どうせ惑星ごとに1日の長さは違うので、24時間にこだわる必要はありません。自由に決めます。',
445
380
  'スターリー・スカイ:惑星の明かりも大気もない宇宙船の上からは、星空を鮮やかに見ることができます。当然、星によって天球図も違います。月が2つや4つあったり、連星が見られたりします。'
446
- ]
447
- return get_table_by_1d10(table)
448
- end
381
+ ),
382
+ }.freeze
383
+
384
+ register_prefix(TABLES.keys)
449
385
  end
450
386
  end
451
387
  end
@@ -37,6 +37,8 @@ module BCDice
37
37
  command = command.upcase
38
38
 
39
39
  result = checkRoll(command)
40
+
41
+ return result if result.instance_of?(Result)
40
42
  return result unless result.empty?
41
43
 
42
44
  return result
@@ -45,7 +47,8 @@ module BCDice
45
47
  def checkRoll(command)
46
48
  debug("checkRoll begin command", command)
47
49
 
48
- result = ''
50
+ result = Result.new
51
+ result.text = ''
49
52
  return result unless command =~ /^(\d+)SR([+\-]?\d+)?(>=(\d+))?$/i
50
53
 
51
54
  diceCount = Regexp.last_match(1).to_i
@@ -57,21 +60,31 @@ module BCDice
57
60
 
58
61
  totalValue = (dice + modify)
59
62
  modifyText = getModifyText(modify)
60
- result += "(#{command}) > #{dice}[#{diceList.join(',')}]#{modifyText} > #{totalValue}"
63
+ result.text += "(#{command}) > #{dice}[#{diceList.join(',')}]#{modifyText} > #{totalValue}"
61
64
 
62
65
  criticalResult = getCriticalResult(diceList)
63
66
  unless criticalResult.nil?
64
- result += " > クリティカル(+#{criticalResult}D6)"
67
+ result.critical = true
68
+ result.success = true
69
+ result.text += " > クリティカル(+#{criticalResult}D6)"
65
70
  return result
66
71
  end
67
72
 
68
73
  if isFumble(diceList, diceCount)
69
- result += ' > ファンブル'
74
+ result.fumble = true
75
+ result.failure = true
76
+ result.text += ' > ファンブル'
70
77
  return result
71
78
  end
72
79
 
73
80
  unless difficulty.nil?
74
- result += totalValue >= difficulty ? ' > 成功' : ' > 失敗'
81
+ if totalValue >= difficulty
82
+ result.success = true
83
+ result.text += ' > 成功'
84
+ else
85
+ result.failure = true
86
+ result.text += ' > 失敗'
87
+ end
75
88
  end
76
89
 
77
90
  return result