bcdice 3.5.0 → 3.6.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 (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)