bcdice 3.5.0 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/i18n/FutariSousa/ja_jp.yml +705 -9
  4. data/i18n/KillDeathBusiness/ja_jp.yml +1 -1
  5. data/i18n/SwordWorld/ja_jp.yml +6 -0
  6. data/i18n/SwordWorld2_0/ja_jp.yml +37 -0
  7. data/i18n/SwordWorld2_5/ja_jp.yml +57 -0
  8. data/lib/bcdice/common_command/add_dice/node.rb +28 -4
  9. data/lib/bcdice/common_command/add_dice/parser.rb +149 -85
  10. data/lib/bcdice/dice_table/d66_parity_table.rb +8 -0
  11. data/lib/bcdice/game_system/Avandner.rb +1 -2
  12. data/lib/bcdice/game_system/Ayabito.rb +229 -0
  13. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  14. data/lib/bcdice/game_system/CyberpunkRed.rb +135 -0
  15. data/lib/bcdice/game_system/DarkDaysDrive.rb +76 -41
  16. data/lib/bcdice/game_system/Elysion.rb +36 -20
  17. data/lib/bcdice/game_system/FutariSousa.rb +48 -4
  18. data/lib/bcdice/game_system/KemonoNoMori.rb +17 -17
  19. data/lib/bcdice/game_system/NeverCloud.rb +19 -8
  20. data/lib/bcdice/game_system/Shiranui.rb +145 -0
  21. data/lib/bcdice/game_system/ShuumatsuKikou.rb +298 -0
  22. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  23. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +18 -5
  24. data/lib/bcdice/game_system/SwordWorld.rb +6 -6
  25. data/lib/bcdice/game_system/SwordWorld2_0.rb +16 -39
  26. data/lib/bcdice/game_system/SwordWorld2_5.rb +3 -63
  27. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +29 -28
  28. data/lib/bcdice/game_system/cyberpunk_red/tables.rb +530 -0
  29. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +1 -1
  30. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +1 -1
  31. data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
  32. data/lib/bcdice/game_system/sword_world/rating_options.rb +47 -0
  33. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +34 -82
  34. data/lib/bcdice/game_system/sword_world/rating_parser.rb +43 -53
  35. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +14 -10
  36. data/lib/bcdice/game_system.rb +4 -0
  37. data/lib/bcdice/randomizer.rb +1 -1
  38. data/lib/bcdice/version.rb +1 -1
  39. metadata +11 -2
@@ -0,0 +1,229 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/command/parser'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class Ayabito < Base
8
+ # ゲームシステムの識別子
9
+ ID = "Ayabito"
10
+
11
+ # ゲームシステム名
12
+ NAME = "あやびと"
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = "あやひと"
16
+
17
+ HELP_MESSAGE = <<~TEXT
18
+ ・判定コマンド(xAB±y@c>=z)
19
+ x:サイコロの数(10以上の場合9個振り、それ以降を成功数2として加算する)
20
+ ±y:成功数への補正(省略可)
21
+ c:クリティカル値(@ごと省略可。省略時は6)
22
+ z:目標値(妨害値など。>=ごと省略可)
23
+ (例) 4AB
24
+ 11AB>=5
25
+ 5AB+1
26
+ 6AB@5>=3
27
+
28
+ ・各種表
29
+ 感情表 ET
30
+ 帝都東京シーン表 TST / 場面演出シーン表 BST
31
+ 交流表 CET
32
+ ファンブル表 FT
33
+ 封印期間表 LT
34
+ TEXT
35
+
36
+ def initialize(command)
37
+ super(command)
38
+ @sort_barabara_dice = true
39
+ @round_type = RoundType::CEIL
40
+ end
41
+
42
+ def eval_game_system_specific_command(command)
43
+ return check_action(command) || roll_tables(command, TABLES)
44
+ end
45
+
46
+ def check_action(command)
47
+ parser = Command::Parser.new("AB", round_type: RoundType::CEIL).has_prefix_number.enable_critical.restrict_cmp_op_to(nil, :>=)
48
+ parsed = parser.parse(command)
49
+ return nil if parsed.nil?
50
+
51
+ if parsed.prefix_number < 10
52
+ dice_cnt = parsed.prefix_number
53
+ over_modify = 0
54
+ else
55
+ dice_cnt = 9
56
+ over_modify = parsed.prefix_number - 9
57
+ end
58
+ modify = parsed.modify_number
59
+ critical_target = parsed.critical || 6
60
+ target = parsed.target_number
61
+
62
+ dice_arr = @randomizer.roll_barabara(dice_cnt, 6).sort
63
+ dice_str = dice_arr.join(",")
64
+ has_critical = dice_arr.any? { |x| x >= critical_target }
65
+ success_cnt = dice_arr.count { |x| x >= 4 } + dice_arr.count(6) + over_modify * 2
66
+ has_fumble = success_cnt == 0 && dice_arr.include?(1)
67
+ if has_fumble
68
+ success_cnt = 0
69
+ else
70
+ success_cnt += modify
71
+ end
72
+ result = target.nil? ? success_cnt >= 1 : success_cnt > target
73
+
74
+ Result.new.tap do |r|
75
+ r.text = "(#{dice_cnt}B6>=4)#{over_modify > 0 ? "+#{over_modify * 2}" : ''} > [#{dice_str}]#{over_modify > 0 ? "+#{over_modify * 2}" : ''} > 成功数#{success_cnt} > #{result ? '成功' : '失敗'}#{has_critical ? '(クリティカル)' : ''}#{has_fumble ? '(ファンブル)' : ''}"
76
+ r.critical = has_critical
77
+ r.fumble = has_fumble
78
+ r.success = result
79
+ r.failure = !result
80
+ end
81
+ end
82
+
83
+ TABLES = {
84
+ 'ET' => DiceTable::D66Table.new(
85
+ '感情表',
86
+ D66SortType::NO_SORT,
87
+ {
88
+ 11 => '信頼/不信感',
89
+ 12 => '好奇心/無関心',
90
+ 13 => '優越感/劣等感',
91
+ 14 => '好意/敵意',
92
+ 15 => '安心感/不安感',
93
+ 16 => '愛情/偏愛',
94
+ 21 => '同情/憐憫',
95
+ 22 => '親近感/疎外感',
96
+ 23 => '連帯感/隔意',
97
+ 24 => '尽力/面倒',
98
+ 25 => '貸し/借り',
99
+ 26 => '庇護欲/食傷',
100
+ 31 => '期待/反発',
101
+ 32 => '熱狂/心酔',
102
+ 33 => '幸福感/不快感',
103
+ 34 => '尊敬/軽蔑',
104
+ 35 => '憧憬/嫉妬',
105
+ 36 => '忠誠/服従',
106
+ 41 => '友情/侮蔑',
107
+ 42 => '競争心/警戒',
108
+ 43 => '感謝/後悔',
109
+ 44 => '感服/恐怖',
110
+ 45 => '興味/屈辱',
111
+ 46 => '誠意/憎悪',
112
+ 51 => '羨望/嫌悪',
113
+ 52 => '共感/懸念',
114
+ 53 => '傾倒/厭気',
115
+ 54 => '赦し/怒り',
116
+ 55 => '有為/苦手',
117
+ 56 => '恩義/不満',
118
+ 61 => '予感/困惑',
119
+ 62 => '懐旧/忘却',
120
+ 63 => '慕情/執着',
121
+ 64 => '夢中/退屈',
122
+ 65 => '贖罪/罪悪感',
123
+ 66 => '慈愛/殺意',
124
+ }
125
+ ),
126
+ 'TST' => DiceTable::D66LeftRangeTable.new(
127
+ '帝都東京シーン表',
128
+ D66SortType::NO_SORT,
129
+ [
130
+ [1..1, Array.new(6, "子~巳までの任意の十二支を選択する。")],
131
+ [2..3, [
132
+ "[子]帝国大学の赤門、学生たちが今日も勉学に励んでいる。",
133
+ "[丑]吉原の歓楽街。昼間は静かだが、夜は活気を見せてくれる。",
134
+ "[寅]上野公園。桜に新緑、紅葉など、季節の顔を見せてくれる。",
135
+ "[卯]浅草六区は今日も賑やか。浅草寺や仲見世には、多くの人々が行き交う。",
136
+ "[辰]凌雲閣。浅草十二階として親しまれる塔に昇り、周囲を一望する。",
137
+ "[巳]丸の内の東京駅。構内の喧騒とは裏腹に、霞ヶ関は静かに時が流れる。",
138
+ ]],
139
+ [4..5, [
140
+ "[午]銀座をぶらぶらと歩く。百貨店が立ち並ぶこの街では、何でも買うことができるらしい。",
141
+ "[未]日比谷の帝国劇場。演目は、話題のトップスタアによる華やかなる歌劇のようだ。",
142
+ "[申]皇居のほとり。水面にうかぶ蓮の葉が、しずかに揺れている。",
143
+ "[酉]明治神宮の境内。神聖なる雰囲気を味わうことができる。",
144
+ "[戌]新たな東京の名所である新宿。今では東西を二分する街である。",
145
+ "[亥]日本帝国軍駐屯地。妖怪人間共同実働部隊の本部も敷地内にある。",
146
+ ]],
147
+ [6..6, Array.new(6, "午~亥まで任意の十二支を選択する。")],
148
+ ]
149
+ ),
150
+ 'BST' => DiceTable::D66LeftRangeTable.new(
151
+ '場面演出シーン表',
152
+ D66SortType::NO_SORT,
153
+ [
154
+ [1..1, Array.new(6, "子~巳までの任意の十二支を選択する。")],
155
+ [2..3, [
156
+ "[子]人々が寝静まる帝都の夜。月に雲がかかるとともに、魔の香りが漂っている。",
157
+ "[丑]草木も眠る静けさの中、犬の遠吠えだけが聞こえてくる。",
158
+ "[寅]一陣の風が吹き抜ける。風に乗った匂いが、妙に鼻をくすぐってきた。",
159
+ "[卯]霧や朝もやに包まれる。向こうに見える姿は誰だろうか……",
160
+ "[辰]帝都に朝日が射す。人々は起き出し、日々の営みを始める。",
161
+ "[巳]清廉な雰囲気の風景。鳥や虫の声、風にそよぐ木々の音が聞こえてくる。",
162
+ ]],
163
+ [4..5, [
164
+ "[午]時計の針がある時間を指し示す。刻を告げるチャイムや鐘が響き渡る。",
165
+ "[未]昼間の大通り。自動車や路面電車が走り、行き交う人々の雑踏が至るところで見られる。",
166
+ "[申]夕刻、どこからともなく、定かではない声や物音が漏れてくる。",
167
+ "[酉]瓦斯灯(がすとう)が通りを鮮やかに照らす。夜が街のもうひとつの顔を出し始める。",
168
+ "[戌]星空の下、月明かりが微かに夜道を照らしている。",
169
+ "[亥]光ひとつない暗闇の中。何者かの気配が蠢いている……",
170
+ ]],
171
+ [6..6, Array.new(6, "午~亥まで任意の十二支を選択する。")],
172
+ ]
173
+ ),
174
+ 'CET' => DiceTable::D66LeftRangeTable.new(
175
+ '交流表',
176
+ D66SortType::NO_SORT,
177
+ [
178
+ [1..1, Array.new(6, "感情~性格までの任意のテーマを選択する。")],
179
+ [2..3, [
180
+ "[感情]相手に抱いている感情、伝えるべきか伝えないべきか。",
181
+ "[人間]相手に人間という存在をどう思うか、聞いてみるとしよう。",
182
+ "[友達]相手に友人や仲間について語ろう。話すことで分かる想いもあるだろう。",
183
+ "[告白]相手に話していいか分からないが、自分の秘めたる想いを語ろう。",
184
+ "[思い出]相手に、過去の思い出を話してみよう。相手から昔話をきけるかもしれない。",
185
+ "[性格]相手に自身の性格を語ろう。表向きのみ話すか、奥底まで話してしまうかは、事と次第による。",
186
+ ]],
187
+ [4..5, [
188
+ "[関係性]相手とは、いつからこうした関係だったのか。相手と関係性について話そう。",
189
+ "[妖怪]相手に妖怪という存在をどう思うか、聞いてみるとしよう。",
190
+ "[あやびと]相手に、自分があやびとである意味や意義を語ってみよう。",
191
+ "[想い]相手が今、何かしら想う人や物事について聞いてみよう。",
192
+ "[夢]相手に自分の夢を語ろう。未来の夢、かつて捨てた夢かもしれない。",
193
+ "[半生]相手に自身の半生を語ろう。半生こそが、今の自分となるきっかけなのだから……",
194
+ ]],
195
+ [6..6, Array.new(6, "関係性~半生までの任意のテーマを選択する。")],
196
+ ]
197
+ ),
198
+ 'FT' => DiceTable::Table.new(
199
+ 'ファンブル表',
200
+ '1D6',
201
+ [
202
+ 'PCの【耐久値】を-5する(最低1)。',
203
+ 'PCの【活力値】を-5する(最低1)',
204
+ 'PCは戦闘ないしフェイズが終了するまで《アビリティ》を使用できない。',
205
+ 'PCは戦闘ないしフェイズが終了するまで[絆]を使用できない。',
206
+ 'セッション終了時まで、登場するエネミーすべての【耐久値】を+3する',
207
+ 'セッション終了時まで、登場するエネミーすべてのダメージを+2する。',
208
+ ]
209
+ ),
210
+ 'LT' => DiceTable::Table.new(
211
+ '封印期間表',
212
+ '1D6',
213
+ [
214
+ # '1日',
215
+ '1週間',
216
+ '1ヶ月',
217
+ '1年',
218
+ '10年',
219
+ '50年',
220
+ '100年',
221
+ # '500年',
222
+ ]
223
+ ),
224
+ }.freeze
225
+
226
+ register_prefix('\d*AB', TABLES.keys)
227
+ end
228
+ end
229
+ end
@@ -46,7 +46,7 @@ module BCDice
46
46
 
47
47
  # @return [Command::Parser] PPCコマンドの構文解析器
48
48
  def self.ppc_parser
49
- return @ppc_parser if @ppc_parser
49
+ return @ppc_parser if defined?(@ppc_parser) && @ppc_parser
50
50
 
51
51
  @ppc_parser = Command::Parser.new(/PPC(?:[LCR][LU]?)?/, round_type: RoundType::FLOOR)
52
52
  @ppc_parser.enable_prefix_number
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/game_system/cyberpunk_red/tables"
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class CyberpunkRed < Base
8
+ # ゲームシステムの識別子
9
+ ID = 'CyberpunkRed'
10
+
11
+ # ゲームシステム名
12
+ NAME = 'サイバーパンクRED'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = 'さいはあはんくれつと'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~HELP
19
+ ・判定 CPx+y>=z
20
+  (x=能力値と技能値の合計、y=修正値、z=難易度 or 受動側 x、y、zは省略可)
21
+  例)CP12 CP10+2>=12 CP7-1 CP8+4 CP7>=12 CP CP>=9
22
+
23
+ 各種表
24
+ ・致命的損傷表
25
+  FFD :身体への致命的損傷
26
+  HFD :頭部への致命的損傷
27
+ ・遭遇表
28
+  NCDT :ナイトシティ(日中)
29
+  NCMT :ナイトシティ(深夜)
30
+ ・スクリームシート
31
+  SCSR :スクリームシート(ランダム)
32
+  SCST :スクリームシート分類
33
+  SCSA :ヘッドラインA
34
+  SCSB :ヘッドラインB
35
+  SCSC :ヘッドラインC
36
+ ・最寄りの自販機
37
+  VMCR :最寄りの自販機表
38
+  VMCT :自販機タイプ決定表
39
+  VMCE :食品
40
+  VMCF :ファッション
41
+  VMCS :変なもの
42
+ ・ボデガの客
43
+  STORE :ボデガの客と店員
44
+  STOREA :店主またはレジ係
45
+  STOREB :変わった客その1
46
+  STOREC :変わった客その2
47
+ HELP
48
+
49
+ # 判定の正規表現
50
+ CP_RE = /^CP(?<ability>\d+)?(?<modifier>[+-]\d+)?(?<target>>=\d+)?/.freeze
51
+
52
+ def initialize(command)
53
+ super(command)
54
+
55
+ @sort_add_dice = false
56
+ @d66_sort_type = D66SortType::NO_SORT
57
+ end
58
+
59
+ def eval_game_system_specific_command(command)
60
+ debug("eval_game_system_specific_command begin string", command)
61
+
62
+ cp_roll_result(command) || roll_tables(command, TABLES)
63
+ end
64
+
65
+ private_constant :CP_RE
66
+
67
+ def cp_roll_result(command)
68
+ parser = Command::Parser.new('CP', round_type: RoundType::FLOOR)
69
+ .enable_suffix_number
70
+ .restrict_cmp_op_to(nil, :>=)
71
+ parsed = parser.parse(command)
72
+ return nil if parsed.nil?
73
+
74
+ dice_cnt = 1
75
+ dice_face = 10
76
+ modify_number = 0
77
+ total = 0
78
+
79
+ result = Result.new
80
+
81
+ dices = [@randomizer.roll_once(dice_face)]
82
+ total += dices.first
83
+ modify_number += parsed.suffix_number if parsed.suffix_number
84
+ modify_number += parsed.modify_number if parsed.modify_number
85
+ total += modify_number
86
+
87
+ case dices.first
88
+ when 10 # critical
89
+ dices << @randomizer.roll_once(dice_face)
90
+ total += dices.last
91
+ result.critical = true
92
+ when 1 # fumble
93
+ dices << @randomizer.roll_once(dice_face)
94
+ total -= dices.last
95
+ result.fumble = true
96
+ end
97
+
98
+ if parsed.target_number
99
+ if total >= parsed.target_number
100
+ result.success = true
101
+ else
102
+ result.failure = true
103
+ end
104
+ end
105
+
106
+ result.text = "(#{dice_cnt}D#{dice_face}#{Format.modifier(modify_number)}#{parsed.cmp_op}#{parsed.target_number})"
107
+ result.text += ' > '
108
+ result.text += "#{dices.first}[#{dices.first}]#{Format.modifier(modify_number)}"
109
+ result.text += ' > '
110
+
111
+ if result.critical?
112
+ result.text += '決定的成功! > '
113
+ result.text += "#{dices.last}[#{dices.last}] > "
114
+ end
115
+ if result.fumble?
116
+ result.text += '決定的失敗! > '
117
+ result.text += "#{dices.last}[#{dices.last}] > "
118
+ end
119
+
120
+ result.text += total.to_s
121
+
122
+ if result.success?
123
+ result.text += ' > 成功'
124
+ end
125
+ if result.failure?
126
+ result.text += ' > 失敗'
127
+ end
128
+
129
+ return result
130
+ end
131
+
132
+ register_prefix('CP', TABLES.keys)
133
+ end
134
+ end
135
+ end
@@ -32,17 +32,13 @@ module BCDice
32
32
  CT キャンプ表
33
33
  KZT 関係属性表
34
34
  IA イケメンアクション決定表
35
- IAA 遠距離
36
- IAB 移動
37
- IAC 近距離
38
- IAD 善人
39
- IAE 悪人
40
- IAF 幼い
41
- IAG バカ
42
- IAH 渋い
43
- IAI 賢い
44
- IAJ 超自然
45
- ・D66ダイスあり
35
+ IAA 遠距離 IAB 移動 IAC 近距離 IAD 善人 IAE 悪人
36
+ IAF 幼い IAG バカ IAH 渋い IAI 賢い IAJ 超自然
37
+ IAX イケメンアクション決定表 → IA表
38
+ ■本格的な戦闘
39
+ CAC センターの行動決定
40
+ DDC 対話ダメージ表
41
+ ・D66ダイス昇順
46
42
  INFO_MESSAGE_TEXT
47
43
 
48
44
  def initialize(command)
@@ -69,8 +65,23 @@ module BCDice
69
65
 
70
66
  def eval_game_system_specific_command(command)
71
67
  roll_tables(command, TABLES) ||
68
+ command_iax(command) ||
72
69
  RTT.roll_command(randomizer, command)
73
70
  end
71
+
72
+ private
73
+
74
+ def command_iax(command)
75
+ return nil unless command == "IAX"
76
+
77
+ ia = TABLES["IA"].choice(@randomizer.roll_d66(D66SortType::ASC))
78
+ m = ia.body.match(/\(([A-Z]+)\)/)
79
+ return ia unless m
80
+
81
+ ia2 = TABLES[m[1]].choice(@randomizer.roll_once(6))
82
+ return "#{ia} > #{ia2}"
83
+ end
84
+
74
85
  RTT = DiceTable::SaiFicSkillTable.new(
75
86
  [
76
87
  ['背景', ['呪い', '絶望', '孤児', '死別', '一般人', '獲物', '憧れ', '友人', '挑戦者', '血縁', '永遠']],
@@ -277,31 +288,31 @@ module BCDice
277
288
  "イケメンアクション決定表",
278
289
  D66SortType::ASC,
279
290
  {
280
- 11 => "遠距離",
281
- 12 => "遠距離",
282
- 13 => "移動",
283
- 14 => "移動",
284
- 15 => "近距離",
285
- 16 => "近距離",
286
- 22 => "善人",
287
- 23 => "善人",
288
- 24 => "悪人",
289
- 25 => "悪人",
290
- 26 => "幼い",
291
- 33 => "幼い",
292
- 34 => "バカ",
293
- 35 => "バカ",
294
- 36 => "渋い",
295
- 44 => "渋い",
296
- 45 => "賢い",
297
- 46 => "賢い",
298
- 55 => "超自然",
299
- 56 => "超自然",
291
+ 11 => "遠距離(IAA)",
292
+ 12 => "遠距離(IAA)",
293
+ 13 => "移動(IAB)",
294
+ 14 => "移動(IAB)",
295
+ 15 => "近距離(IAC)",
296
+ 16 => "近距離(IAC)",
297
+ 22 => "善人(IAD)",
298
+ 23 => "善人(IAD)",
299
+ 24 => "悪人(IAE)",
300
+ 25 => "悪人(IAE)",
301
+ 26 => "幼い(IAF)",
302
+ 33 => "幼い(IAF)",
303
+ 34 => "バカ(IAG)",
304
+ 35 => "バカ(IAG)",
305
+ 36 => "渋い(IAH)",
306
+ 44 => "渋い(IAH)",
307
+ 45 => "賢い(IAI)",
308
+ 46 => "賢い(IAI)",
309
+ 55 => "超自然(IAJ)",
310
+ 56 => "超自然(IAJ)",
300
311
  66 => "振り直しor自由選択"
301
312
  }
302
313
  ),
303
314
  "IAA" => DiceTable::Table.new(
304
- "イケメンアクション(遠距離)表",
315
+ "イケメンアクション(遠距離)表(P172)",
305
316
  "1D6",
306
317
  [
307
318
  "目を合わせて微笑む(かっこよさ:4)",
@@ -313,7 +324,7 @@ module BCDice
313
324
  ]
314
325
  ),
315
326
  "IAB" => DiceTable::Table.new(
316
- "イケメンアクション(移動)表",
327
+ "イケメンアクション(移動)表(P172)",
317
328
  "1D6",
318
329
  [
319
330
  "車道側を歩く(かっこよさ:4)",
@@ -325,7 +336,7 @@ module BCDice
325
336
  ]
326
337
  ),
327
338
  "IAC" => DiceTable::Table.new(
328
- "イケメンアクション(近距離)表",
339
+ "イケメンアクション(近距離)表(P173)",
329
340
  "1D6",
330
341
  [
331
342
  "黙って見つめる(かっこよさ:3)",
@@ -337,7 +348,7 @@ module BCDice
337
348
  ]
338
349
  ),
339
350
  "IAD" => DiceTable::Table.new(
340
- "イケメンアクション(善人)表",
351
+ "イケメンアクション(善人)表(P173)",
341
352
  "1D6",
342
353
  [
343
354
  "手を引いて逃げる(かっこよさ:4)",
@@ -349,7 +360,7 @@ module BCDice
349
360
  ]
350
361
  ),
351
362
  "IAE" => DiceTable::Table.new(
352
- "イケメンアクション(悪人)表",
363
+ "イケメンアクション(悪人)表(P174)",
353
364
  "1D6",
354
365
  [
355
366
  "攻撃する(かっこよさ:4)",
@@ -361,7 +372,7 @@ module BCDice
361
372
  ]
362
373
  ),
363
374
  "IAF" => DiceTable::Table.new(
364
- "イケメンアクション(幼い)表",
375
+ "イケメンアクション(幼い)表(P174)",
365
376
  "1D6",
366
377
  [
367
378
  "甘える(かっこよさ:3)",
@@ -373,7 +384,7 @@ module BCDice
373
384
  ]
374
385
  ),
375
386
  "IAG" => DiceTable::Table.new(
376
- "イケメンアクション(バカ)表",
387
+ "イケメンアクション(バカ)表(P175)",
377
388
  "1D6",
378
389
  [
379
390
  "苦悩する(かっこよさ:4)",
@@ -385,7 +396,7 @@ module BCDice
385
396
  ]
386
397
  ),
387
398
  "IAH" => DiceTable::Table.new(
388
- "イケメンアクション(渋い)表",
399
+ "イケメンアクション(渋い)表(P175)",
389
400
  "1D6",
390
401
  [
391
402
  "説教(かっこよさ:4)",
@@ -397,7 +408,7 @@ module BCDice
397
408
  ]
398
409
  ),
399
410
  "IAI" => DiceTable::Table.new(
400
- "イケメンアクション(賢い)表",
411
+ "イケメンアクション(賢い)表(P176)",
401
412
  "1D6",
402
413
  [
403
414
  "難しい本を読む(かっこよさ:3)",
@@ -409,7 +420,7 @@ module BCDice
409
420
  ]
410
421
  ),
411
422
  "IAJ" => DiceTable::Table.new(
412
- "イケメンアクション(超自然)表",
423
+ "イケメンアクション(超自然)表(P176)",
413
424
  "1D6",
414
425
  [
415
426
  "水に濡れる(かっこよさ:4)",
@@ -420,6 +431,30 @@ module BCDice
420
431
  "光る(かっこよさ:6)"
421
432
  ]
422
433
  ),
434
+ "CAC" => DiceTable::Table.new(
435
+ "センターの行動決定表",
436
+ "1d6",
437
+ [
438
+ "逃走",
439
+ "不意打ち",
440
+ "連続行動",
441
+ "対話",
442
+ "威嚇",
443
+ "攻撃"
444
+ ]
445
+ ),
446
+ "DDC" => DiceTable::Table.new(
447
+ "対話ダメージ表",
448
+ "1d6",
449
+ [
450
+ "焦り",
451
+ "焦り",
452
+ "不調",
453
+ "不調",
454
+ "ショック",
455
+ "ショック",
456
+ ]
457
+ )
423
458
  }.freeze
424
459
 
425
460
  register_prefix(RTT.prefixes, TABLES.keys)