bcdice 3.9.0 → 3.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42944751b9e1101ab29df8042cb267f762ec4626c02d1301130716f5117ae5a1
4
- data.tar.gz: b273615ac178eb8f8f243961604dcdd9e6eb54a3ac90d41a3adc04005dae5d45
3
+ metadata.gz: 5804af6296cb509b73b2489953c75a3ebc2c88a6be93f398cfa6b46d69eabe26
4
+ data.tar.gz: a1b868d3706fd20040ed1720f572cbbc60479b7b43f500361cd49af5d8dce5b2
5
5
  SHA512:
6
- metadata.gz: 8e1e55ae455c5b0b36bd8dd5e3f4351f0ee06b195795ca44e8384c85b0fd907c682049a9d37f6b55b57a729612e0f64a1ec75a0cf437ce694a55ec6b19c46f97
7
- data.tar.gz: ca3a7a2f2c0fd78ecc60c4b99b3d692de1deb7aa9266ac1734ad4ae96bc9399488ced485590f0b29b69ca3807c947ad371756528a22a073493f9b98977ecd2c1
6
+ metadata.gz: c84ded2153b972ef840a345142fa2d599f6e023eb309ee3e5761bd8f74b9a8e2f6c2437b0c8cbbbf40b8dffe273910179e0baac2db10c9194b65dab5ea630c35
7
+ data.tar.gz: 744050243951df6df9b0816f3d7c6f71ff82796278b42438a828c1e9797224d18cf830ad6818ee8715fe4c6f799ef5d2cf4a7fad18655d09a086bde44d133ce4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Change Log
2
2
 
3
+ ## 3.11.0 2023/08/23
4
+
5
+ ### 対応ゲームシステムの追加
6
+ - ガンダム・センチネルRPG (GundamSentinel): Facelessさんありがとうっ! ([#633](https://github.com/bcdice/BCDice/pull/633), [#634](https://github.com/bcdice/BCDice/pull/634))
7
+ - マモノスクランブル (MamonoScramble): ([#635](https://github.com/bcdice/BCDice/pull/635))
8
+ - デモンスパイク (DemonSpike): ([#636](https://github.com/bcdice/BCDice/pull/636))
9
+ - RuneQuest:Roleplaying in Glorantha (RuneQuestRoleplayingInGlorantha): フレッド緑野さんありがとうっ! ([#637](https://github.com/bcdice/BCDice/pull/637))
10
+ - ゾンビライン (ZombiLine): 蜂紫さんありがとうっ! ([#638](https://github.com/bcdice/BCDice/pull/638/files))
11
+
12
+ ## 3.10.0 2023/07/15
13
+
14
+ ### 対応ゲームシステムの追加
15
+ - 英雄の尺度 (HeroScale): モグさんありがとうっ! ([#613](https://github.com/bcdice/BCDice/pull/613))
16
+ - Ventangle (Ventangle): 三木里 秀予さんありがとうっ! ([#626](https://github.com/bcdice/BCDice/pull/626))
17
+
18
+ ### 追加機能
19
+ - Vampire:The Masquerade5th: Hungerダイスを内数指定できるコマンドを追加。フレッド緑野さんありがとうっ! ([#615](https://github.com/bcdice/BCDice/pull/615))
20
+ - モノトーンミュージアムRPG: 目標値 `?` に対応。えいむさんありがとうっ! ([#617](https://github.com/bcdice/BCDice/pull/617))
21
+ - シノビガミ: ヘルプメッセージを修正 ([#618](https://github.com/bcdice/BCDice/pull/618))
22
+ - シノビガミ: 表を多数追加。NiSLaさんありがとうっ! ([#625](https://github.com/bcdice/BCDice/pull/625))
23
+ - 獸ノ森: 「嚙神ノ宴」の表を追加。ゆいこさんありがとうっ! ([#629](https://github.com/bcdice/BCDice/pull/629))
24
+ - SRSじゃない世界樹の迷宮TRPG: 判定の成否を表示するよう変更。ゆいこさんありがとうっ! ([#630](https://github.com/bcdice/BCDice/pull/630))
25
+
26
+ ### 変更
27
+ - SRSじゃない世界樹の迷宮TRPG: 各種表記を公式ルールの用語に合わせて変更。ゆいこさんありがとうっ! ([#630](https://github.com/bcdice/BCDice/pull/630))
28
+
29
+ ### 誤植修正
30
+ - シノビガミ: ヘルプメッセージを修正 ([#618](https://github.com/bcdice/BCDice/pull/618))
31
+ - エモクロアTRPG: ヘルプメッセージを修正。電気魚さんありがとうっ! ([#622](https://github.com/bcdice/BCDice/pull/622))
32
+
33
+ ### バグ修正
34
+ - シノビガミ: 異形表を修正。クキソージさんありがとうっ! ([#621](https://github.com/bcdice/BCDice/pull/621))
35
+
3
36
  ## 3.9.0 2023/03/25
4
37
 
5
38
  ### 対応ゲームシステムの追加
@@ -9,11 +42,12 @@
9
42
  ### 追加機能
10
43
  - 初音ミクTRPG: 表をいくつか追加。カルメヤキさんありがとうっ! ([#602](https://github.com/bcdice/BCDice/pull/602))
11
44
  - スタンダードRPGシステム系: クリティカルを `@` で、ファンブルを `#` で指定できるように。三木里 秀予さんありがとうっ! ([#605](https://github.com/bcdice/BCDice/pull/605))
45
+ - シノビガミ: 表を多数追加。NiSLaさん、hetaregirl1802さん、三木里 秀予さんありがとうっ! ([#608](https://github.com/bcdice/BCDice/pull/608))
12
46
  - ダンジョンズ&ドラゴンズ第5版: 両手持ちのダメージ算出コマンドを追加。Facelessさんありがとうっ! ([#612](https://github.com/bcdice/BCDice/pull/612))
13
47
  - ダンジョンズ&ドラゴンズ第5版: 攻撃ロールでクリティカル値を指定できるように。Facelessさんありがとうっ! ([#612](https://github.com/bcdice/BCDice/pull/612))
14
48
 
15
49
  ### 変更
16
- - シノビガミ: 変調表と戦場表の内容を改訂版に変更。 ([#588](https://github.com/bcdice/BCDice/pull/588))
50
+ - シノビガミ: 変調表と戦場表の内容を改訂版に変更。NiSLaさんありがとうっ! ([#608](https://github.com/bcdice/BCDice/pull/608))
17
51
 
18
52
  ### 誤植修正
19
53
  - 歯車の塔の探空士(冒険企画局): 航行イベント表 困難系の誤植を修正。おさむさんありがとうっ! ([#607](https://github.com/bcdice/BCDice/pull/607))
data/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![Gem Version](https://badge.fury.io/rb/bcdice.svg)](https://badge.fury.io/rb/bcdice)
5
5
  [![YARD](https://img.shields.io/badge/yard-docs-blue.svg)](https://yard.bcdice.org/)
6
6
  [![codecov](https://codecov.io/gh/bcdice/BCDice/branch/master/graph/badge.svg)](https://codecov.io/gh/bcdice/BCDice)
7
- [![Maintainability](https://api.codeclimate.com/v1/badges/15261694a7d758c4309f/maintainability)](https://codeclimate.com/github/bcdice/BCDice/maintainability)
8
7
  [![Discord](https://img.shields.io/discord/597133335243784192.svg?color=7289DA&logo=discord&logoColor=fff)][invite discord]
9
8
 
10
9
  様々なTRPGシステムの判定に対応したオンセツール用ダイスコマンドエンジン
@@ -1,16 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BCDice
2
4
  module GameSystem
3
5
  class CastleInGray < Base
4
6
  # ゲームシステムの識別子
5
- ID = "CastleInGray".freeze
7
+ ID = "CastleInGray"
6
8
 
7
9
  # ゲームシステム名
8
- NAME = "灰色城綺譚".freeze
10
+ NAME = "灰色城綺譚"
9
11
 
10
12
  # ゲームシステム名の読みがな
11
- SORT_KEY = "はいいろしようきたん".freeze
13
+ SORT_KEY = "はいいろしようきたん"
12
14
 
13
- HELP_MESSAGE = <<~TEXT.freeze
15
+ HELP_MESSAGE = <<~TEXT
14
16
  ■ 色占い (BnWm)
15
17
  n: 黒
16
18
  m: 白
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class DemonSpike < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'DemonSpike'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'デモンスパイク'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'てもんすはいく'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
+ ・行為判定 xDS+y
18
+  行為判定を行い、達成値、成否、成功度を出力する。
19
+  x: ダイス数(省略:2)
20
+  y: 能力値やスパイク能力による達成値の修正(省略可)
21
+ INFO_MESSAGE_TEXT
22
+
23
+ register_prefix('\d*DS')
24
+
25
+ def eval_game_system_specific_command(command)
26
+ roll_action(command)
27
+ end
28
+
29
+ private
30
+
31
+ def roll_action(command)
32
+ parser = Command::Parser.new("DS", round_type: @round_type)
33
+ .enable_prefix_number
34
+ .restrict_cmp_op_to(nil)
35
+ parsed = parser.parse(command)
36
+ unless parsed
37
+ return nil
38
+ end
39
+
40
+ parsed.prefix_number ||= 2
41
+ if parsed.prefix_number < 2
42
+ return nil
43
+ end
44
+
45
+ step = roll_step(parsed.prefix_number)
46
+ step_list = [step]
47
+ while step[:dice_sum] == 10
48
+ step = roll_step(parsed.prefix_number)
49
+ step_list.push(step)
50
+ end
51
+
52
+ is_fumble = step_list[0][:dice_sum] == 2
53
+ total = is_fumble ? 0 : step_list.sum { |s| s[:dice_sum] } + parsed.modify_number
54
+ success_level = total / 10
55
+ is_success = total >= 10
56
+
57
+ res =
58
+ if is_success
59
+ "成功, 成功度#{success_level}"
60
+ elsif is_fumble
61
+ "自動的失敗"
62
+ else
63
+ "失敗"
64
+ end
65
+
66
+ sequence = [
67
+ "(#{parsed})",
68
+ step_list.map { |s| "#{s[:dice_sum]}[#{s[:dice_list].join(',')}]" },
69
+ total,
70
+ res,
71
+ ].flatten
72
+
73
+ return Result.new.tap do |r|
74
+ r.condition = is_success
75
+ r.critical = step_list.length > 1
76
+ r.fumble = is_fumble
77
+ r.text = sequence.join(" > ")
78
+ end
79
+ end
80
+
81
+ def roll_step(times)
82
+ dice_list = @randomizer.roll_barabara(times, 6).sort.reverse
83
+ dice_sum = (dice_list[0] + dice_list[1]).clamp(2, 10)
84
+
85
+ return {dice_list: dice_list, dice_sum: dice_sum}
86
+ end
87
+ end
88
+ end
89
+ end
@@ -22,10 +22,10 @@ module BCDice
22
22
  ダイスの個数は省略可能で、省略した場合1個になります。
23
23
  例)2DM<=5 DM<=8
24
24
  ・技能値判定(sDAa+z)
25
- "(技能レベル)DA(能力値)+(ボーナスダイス)"で指定します。
26
- ボーナスダイスの個数は省略可能で、省略した場合0になります。
25
+ "(技能レベル)DA(能力値)+(ダイスボーナス)"で指定します。
26
+ ダイスボーナスの個数は省略可能で、省略した場合0になります。
27
27
  技能レベルは1~3の数値、またはベース技能の場合"b"が入ります。
28
- ダイスの個数は技能レベルとボーナスダイスの個数により決定し、s+z個のダイスを振ります。(s="b"の場合はs=1)
28
+ ダイスの個数は技能レベルとダイスボーナスの個数により決定し、s+z個のダイスを振ります。(s="b"の場合はs=1)
29
29
  判定値はs+aとなります。(s="b"の場合はs=0)
30
30
  MESSAGETEXT
31
31
 
@@ -0,0 +1,377 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class GundamSentinel < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'GundamSentinel'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'ガンダム・センチネルRPG'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'かんたむせんちねる'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
+ ・基本戦闘(BB, BBM)
18
+  BB[+修正][>回避値]で基本戦闘を判定します。回避値を指定すると、命中・回避も表示します。
19
+  BBM[+修正][>回避値]でモブ用の基本戦闘を判定します。クリティカルを判定します。回避値を指定すると、命中・回避も表示します。
20
+
21
+  例)BB BBM BB+5>14 BBM+5>15
22
+
23
+ ・一般技能(GS)
24
+  GS[+修正][>目標値]で一般技能を判定します。目標値を指定しない場合は、目標値10で判定します。
25
+
26
+  例)GS GS+5 GS+5>10
27
+
28
+
29
+ ・各種表
30
+  敵MSクリティカルヒットチャート (ECHC)
31
+  PC用脱出判定チャート      (PEJC[+m] m:修正)
32
+  艦船追加ダメージ決定チャート  (ASDC)
33
+  対空砲結果チャート       (AARC[+m]=t m:修正, t:対空防御力)
34
+  リハビリ判定チャート      (RTJC[+m] m:修正)
35
+  二次被害判定チャート      (SDDC)
36
+ INFO_MESSAGE_TEXT
37
+
38
+ def initialize(command)
39
+ super(command)
40
+
41
+ @round_type = RoundType::CEIL
42
+ @d66_sort_type = D66SortType::NO_SORT
43
+ end
44
+
45
+ def eval_game_system_specific_command(command)
46
+ roll_basic_battle(command) ||
47
+ roll_general_skill(command) ||
48
+ roll_anti_aircraft_gun_result_chart(command) ||
49
+ roll_escape_chart(command) ||
50
+ roll_rehabilitation_chart(command) ||
51
+ roll_tables(command, TABLES)
52
+ end
53
+
54
+ private
55
+
56
+ # 基本戦闘ロール
57
+ def roll_basic_battle(command)
58
+ m = /^BB(M)?([-+][-+\d]+)?(>([-+\d]+))?/.match(command)
59
+ return nil unless m
60
+
61
+ mob = m[1]
62
+ modify = ArithmeticEvaluator.eval(m[2])
63
+ have_modify = false
64
+ have_modify = true if m[2]
65
+ avoid = ArithmeticEvaluator.eval(m[4])
66
+ have_avoid = false
67
+ have_avoid = true if m[4]
68
+
69
+ d60 = @randomizer.roll_once(6)
70
+ d06 = @randomizer.roll_once(6)
71
+ total_d = d60 * 10 + d06
72
+ d60 += (d06 + modify - 1).div(6)
73
+ d06 = (d06 + modify - 1).modulo(6) + 1
74
+ total = d60 * 10 + d06
75
+ total = 11 if total < 11
76
+
77
+ success = false
78
+ failure = false
79
+ critical = false
80
+
81
+ modify_label = nil
82
+ if have_modify
83
+ if modify >= 0
84
+ modify_label = "#{total_d}+#{modify}"
85
+ else
86
+ modify_label = "#{total_d}#{modify}"
87
+ end
88
+ end
89
+
90
+ critical_label = nil
91
+ if mob && (total >= 66)
92
+ critical_label = "クリティカル"
93
+ critical = true
94
+ end
95
+
96
+ result = nil
97
+ if have_avoid
98
+ if total > avoid
99
+ result = "命中(+" + count_success(total, avoid).to_s + ")"
100
+ success = true
101
+ else
102
+ result = "回避"
103
+ failure = true
104
+ end
105
+ end
106
+
107
+ sequence = [
108
+ "(#{command})",
109
+ modify_label,
110
+ total,
111
+ result,
112
+ critical_label,
113
+ ].compact
114
+
115
+ Result.new(sequence.join(" > ")).tap do |r|
116
+ r.success = success
117
+ r.failure = failure
118
+ r.critical = critical
119
+ end
120
+ end
121
+
122
+ def count_success(dice, avoid)
123
+ d60 = dice.div(10)
124
+ d06 = dice.modulo(10)
125
+ a60 = avoid.div(10)
126
+ a06 = avoid.modulo(10)
127
+
128
+ return ((d60 * 6 + d06) - (a60 * 6 + a06))
129
+ end
130
+
131
+ # 一般技能ロール
132
+ def roll_general_skill(command)
133
+ m = /^GS([-+][-+\d]+)?(>([-+\d]+))?/.match(command)
134
+ return nil unless m
135
+
136
+ modify = ArithmeticEvaluator.eval(m[1])
137
+ have_modify = false
138
+ have_modify = true if m[1]
139
+ target = ArithmeticEvaluator.eval(m[3])
140
+ target = 10 unless m[3]
141
+
142
+ success = false
143
+ failure = false
144
+
145
+ dice = @randomizer.roll_sum(2, 6)
146
+
147
+ modify_label = nil
148
+ if have_modify
149
+ if modify >= 0
150
+ modify_label = "#{dice}+#{modify}"
151
+ else
152
+ modify_label = "#{dice}#{modify}"
153
+ end
154
+ end
155
+ total = dice + modify
156
+ if total > target
157
+ result = "成功"
158
+ success = true
159
+ else
160
+ result = "失敗"
161
+ failure = true
162
+ end
163
+
164
+ sequence = [
165
+ "(#{command})",
166
+ modify_label,
167
+ total,
168
+ result,
169
+ ].compact
170
+
171
+ Result.new(sequence.join(" > ")).tap do |r|
172
+ r.success = success
173
+ r.failure = failure
174
+ end
175
+ end
176
+
177
+ # 各種表
178
+
179
+ # 対空砲結果チャート
180
+ GUN_RESULT_CHART = [
181
+ ["D", "H", "H", "H", 10, 8, 6, 5, 4, 2, 1, "-", "-"],
182
+ ["D", "H", "H", "H", 12, 10, 9, 8, 6, 5, 3, 2, "-"],
183
+ ["D", "D", "H", "H", "H", 12, 10, 9, 7, 6, 4, 3, 1],
184
+ ["D", "D", "H", "H", "H", 14, 13, 12, 10, 8, 6, 5, 3],
185
+ ["D", "D", "D", "H", "H", "H", 14, 13, 11, 9, 7, 6, 4],
186
+ ["D", "D", "D", "H", "H", "H", "H", 16, 14, 12, 11, 8, 6],
187
+ ].freeze
188
+
189
+ def roll_anti_aircraft_gun_result_chart(command)
190
+ parser = Command::Parser.new("AARC", round_type: @round_type).restrict_cmp_op_to(:==)
191
+ parsed = parser.parse(command)
192
+
193
+ return nil unless parsed
194
+
195
+ target = parsed.target_number.clamp(1, 6)
196
+ dice = @randomizer.roll_sum(2, 6)
197
+ total = (dice + parsed.modify_number).clamp(1, 13)
198
+
199
+ cmd =
200
+ if parsed.modify_number != 0
201
+ "(#{dice}#{Format.modifier(parsed.modify_number)}=#{total})"
202
+ else
203
+ total.to_s
204
+ end
205
+ result = GUN_RESULT_CHART[target - 1][total - 1]
206
+
207
+ Result.new().tap do |r|
208
+ r.text = "対空砲結果チャート(#{cmd}vs#{target}) > 結果「#{result}」"
209
+ r.condition = result.is_a?(Integer)
210
+ end
211
+ end
212
+
213
+ # PC用脱出判定チャート
214
+ ESCAPE_CHART = [
215
+ '*',
216
+ '*',
217
+ '無傷で脱出',
218
+ '無傷で脱出',
219
+ '無傷で脱出',
220
+ '軽傷で脱出「1D6ダメージ。」',
221
+ '中傷で脱出「2D6ダメージ。」',
222
+ '重傷で脱出「3D6ダメージ。」',
223
+ '重体で脱出「1D3の耐久力が残る。」',
224
+ '戦死「二階級特進。」',
225
+ '戦死「二階級特進。」',
226
+ '戦死「二階級特進。」',
227
+ '戦死「二階級特進。」',
228
+ ].freeze
229
+
230
+ def roll_escape_chart(command)
231
+ parser = Command::Parser.new("PEJC", round_type: @round_type).restrict_cmp_op_to(nil)
232
+ parsed = parser.parse(command)
233
+ return nil unless parsed
234
+
235
+ dice = @randomizer.roll_sum(2, 6)
236
+ total = (dice + parsed.modify_number).clamp(2, 12)
237
+
238
+ cmd =
239
+ if parsed.modify_number != 0
240
+ "#{dice}#{Format.modifier(parsed.modify_number)}=#{total}"
241
+ else
242
+ total.to_s
243
+ end
244
+ result = ESCAPE_CHART[total]
245
+
246
+ Result.new("PC用脱出判定チャート(#{cmd}) > #{result}")
247
+ end
248
+
249
+ REHABILITATION_CHART = [
250
+ '*',
251
+ '*',
252
+ 'なし',
253
+ '1ヶ月',
254
+ '2ヶ月',
255
+ '3ヶ月',
256
+ '4ヶ月',
257
+ '5ヶ月',
258
+ '6ヶ月',
259
+ '10ヶ月',
260
+ '1年',
261
+ '1年6ヶ月',
262
+ '1年と、もう一度このチャートで振った結果分を足した期間',
263
+ ].freeze
264
+
265
+ def roll_rehabilitation_chart(command)
266
+ parser = Command::Parser.new("RTJC", round_type: @round_type).restrict_cmp_op_to(nil)
267
+ parsed = parser.parse(command)
268
+ return nil unless parsed
269
+
270
+ dice = @randomizer.roll_sum(2, 6)
271
+ total = (dice + parsed.modify_number).clamp(2, 12)
272
+
273
+ cmd =
274
+ if parsed.modify_number != 0
275
+ "#{dice}#{Format.modifier(parsed.modify_number)}=#{total}"
276
+ else
277
+ total.to_s
278
+ end
279
+ result = REHABILITATION_CHART[total]
280
+
281
+ Result.new("リハビリ判定チャート(#{cmd}) > #{result}")
282
+ end
283
+
284
+ TABLES = {
285
+ 'ECHC' => DiceTable::Table.new(
286
+ '敵MSクリティカルヒットチャート',
287
+ '2D6',
288
+ [
289
+ 'コックピット直撃:目標MSは残骸となる。',
290
+ '腕破損:同時に携帯武器も失う。携帯武装の交換も行えない。直ちにモラル判定を-4で行う。',
291
+ '射撃武装破損:目標MSはその時点で使用しているナンバーの若い武装を1つ失う。全ての武装を失った場合、モラル判定を行う。',
292
+ '頭部直撃:目標MSはメインカメラを失い、以後射撃、格闘の命中判定に-6の修正を受ける。頭部に装備されている武装も失われる。',
293
+ 'パイロット気絶:目標MSは回復するまで行動不能。',
294
+ '目標MSへのダメージ2倍。',
295
+ '目標MSへのダメージ2倍。',
296
+ '目標MSへのダメージ3倍。',
297
+ '脚破損:目標MSは、以後の回避値に-6の修正を受ける。',
298
+ 'コントロール不能:目標MSは1D6ラウンドの間、行動不能。',
299
+ '熱核ジェネレーター直撃:目標MSは直ちに爆発(耐久力0)する。',
300
+ ]
301
+ ),
302
+ 'ASDC' => DiceTable::Table.new(
303
+ '艦船追加ダメージ決定チャート',
304
+ '2D6',
305
+ [
306
+ 'ブリッジ損傷「複数ある艦は、総てのブリッジが損傷すると以後の対空防御は修正を+5する。」',
307
+ 'カタパルト損傷「複数ある艦は、総てのカタパルトが損傷すると、MSの発着艦ができなくなる。」',
308
+ '追加ダメージ「追加2D6×2ダメージ。」',
309
+ '主砲大破「主砲1門を失う。」',
310
+ '副砲大破「副砲1門を失う。」',
311
+ '追加ダメージ「追加2D6ダメージ。」',
312
+ '追加ダメージ「追加2D6ダメージ。」',
313
+ '追加ダメージ「追加2D6ダメージ。」',
314
+ '1ターン行動不能「1ターンはその艦は何も行動ができない。」',
315
+ '航行不能「その艦はそのヘックスから動けなくなる。」',
316
+ 'エンジン誘爆「1D6×10%の耐久力を失う。」',
317
+ ]
318
+ ),
319
+ 'SDDC' => DiceTable::D66GridTable.new(
320
+ '二次被害判定チャート',
321
+ [
322
+ [
323
+ '奇蹟的に無傷「不発!?今回のダメージは0。」',
324
+ 'メインカメラ破損「以後、射撃、格闘の命中判定に-3の修正を受ける。」',
325
+ 'コクピット破損「以後の追加ダメージ判定に-1の修正を受ける。」',
326
+ '右腕損傷「携帯していた武装も失う。また右腕での武器の使用はできなくなる。」',
327
+ '左腕損傷「携帯していた武装も失う。また左腕での武器の使用はできなくなる。」',
328
+ '気絶「気絶判定の余地無く、必ず気絶する。」',
329
+ ],
330
+ [
331
+ '気絶「気絶判定を-6の修正で行う。」',
332
+ '気絶「気絶判定を-4の修正で行う。」',
333
+ '気絶「気絶判定を-2の修正で行う。」',
334
+ '気絶「気絶判定を行う。」',
335
+ '予備弾倉破損「携帯している予備弾倉かEパックを1つ失う。」',
336
+ 'サブカメラ破損「以後、射撃、格闘の命中判定に-1の修正を受ける。」',
337
+ ],
338
+ [
339
+ '固定武装破損「固定されている武装を1つ失う。」',
340
+ '予備武装破損「携帯している以外の武装を1つ失う。」',
341
+ '頭部破損「メインカメラも失い、以後、射撃、格闘の命中判定に-3の修正を受ける。」',
342
+ '右脚破損「以後、回避値が1D3低下する。」',
343
+ '左脚破損「以後、回避値が1D3低下する。」',
344
+ '操縦機構破損「以後、すべての行動は消費行動ポイントを1ポイント余分に消費する。」',
345
+ ],
346
+ [
347
+ '軽傷「パイロットは1D6のダメージを受ける。また気絶判定を行う。」',
348
+ '中傷「パイロットは2D6のダメージを受ける。また気絶判定を-6修正で行う。」',
349
+ '重傷「パイロットは3D6のダメージを受ける。また気絶判定を-9修正で行う。」',
350
+ '操縦伝達部破損「以後すべての射撃、格闘の命中判定と回避値に-1の修正を受ける。」',
351
+ 'センサー破損「イニシアティブ決定に-1の修正を受ける。」',
352
+ '脱出機構破損「脱出判定に+3の修正を受ける。」',
353
+ ],
354
+ [
355
+ '熱核ジェネレーター損傷「行動の「追加移動」が行えなくなる。」',
356
+ '右腕の携帯武装破損「右腕に持っていた武装を1つ失う。」',
357
+ '左腕の携帯武装破損「左腕に持っていた武装を1つ失う。」',
358
+ 'サブスラスター破損「回避値が1低下する。」',
359
+ 'プロペラントタンク破損「プロペラントタンクを1つ失う。」',
360
+ 'バックパック破損「推進剤3D6ポイント失う。」',
361
+ ],
362
+ [
363
+ 'メインスラスター破損「回避値が1D6低下する。」',
364
+ '動力パイプ破損「以後、行動ポイント決定のダイスに-1の修正を受ける。」',
365
+ '動力伝達機構破損「以後、行動ポイント決定のサイコロに-1D3の修正を受ける。」',
366
+ 'サブスラスター破損「旋回が120度までしかできなくなる。」',
367
+ 'メインスラスター破損「旋回が60度までしかできなくなる。」',
368
+ '熱核ジェネレーター直撃「そのMSは爆発する。PCは直ちに脱出判定を行う。」',
369
+ ]
370
+ ]
371
+ ),
372
+ }.freeze
373
+
374
+ register_prefix('BBM?', 'GS', 'AARC', 'PEJC', 'RTJC', TABLES.keys)
375
+ end
376
+ end
377
+ end