bcdice 3.3.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 (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
@@ -0,0 +1,133 @@
1
+ module BCDice
2
+ module GameSystem
3
+ class CastleInGray < Base
4
+ # ゲームシステムの識別子
5
+ ID = "CastleInGray".freeze
6
+
7
+ # ゲームシステム名
8
+ NAME = "灰色城綺譚".freeze
9
+
10
+ # ゲームシステム名の読みがな
11
+ SORT_KEY = "はいいろしようきたん".freeze
12
+
13
+ HELP_MESSAGE = <<~TEXT.freeze
14
+ ■ 色占い (BnWm)
15
+ n: 黒
16
+ m: 白
17
+ n, m は1~12の異なる整数
18
+
19
+ 例) B12W7
20
+ 例) B5W12
21
+
22
+ ■ 悪意の渦による占い (MALn)
23
+ n: 悪意の渦
24
+ n は1~12の整数
25
+
26
+ ■ その他
27
+ ・感情表 ET
28
+ ・暗示表(黒) BIT
29
+ ・暗示表(白) WIT
30
+ TEXT
31
+
32
+ TABLES = {
33
+ "ET" => DiceTable::Table.new(
34
+ "感情表",
35
+ "1D12",
36
+ [
37
+ "友情(白)/敵視(黒)",
38
+ "恋慕(白)/嫌悪(黒)",
39
+ "信頼(白)/不信(黒)",
40
+ "同情(白)/憐憫(黒)",
41
+ "憧憬(白)/劣等感(黒)",
42
+ "尊敬(白)/蔑視(黒)",
43
+ "忠誠(白)/執着(黒)",
44
+ "有用(白)/邪魔(黒)",
45
+ "許容(白)/罪悪感(黒)",
46
+ "羨望(白)/嫉妬(黒)",
47
+ "共感(白)/拒絶(黒)",
48
+ "愛情(白)/狂信(黒)"
49
+ ]
50
+ ),
51
+ "BIT" => DiceTable::Table.new(
52
+ "暗示表(黒)",
53
+ "1D12",
54
+ [
55
+ "終わりなき夜に生まれつく者もあり",
56
+ "悪意もて真実を語らば",
57
+ "笑えども笑みはなし",
58
+ "影より抜け出ることあたわじ",
59
+ "心の赴くままに手をとれ",
60
+ "時ならぬ嵐の過ぎ去るを待つ",
61
+ "赦されぬと知るがゆえに",
62
+ "見張りは持ち場を離れる",
63
+ "誰もが盲いたる彷徨い人なり",
64
+ "落ちる日を眺めるがごとく",
65
+ "冷たく雨ぞ降りしきる",
66
+ "今日は笑む花も明日には枯れゆく"
67
+ ]
68
+ ),
69
+ "WIT" => DiceTable::Table.new(
70
+ "暗示表(白)",
71
+ "1D12",
72
+ [
73
+ "無垢なる者のみが真実を得る",
74
+ "げに慈悲深きは沈黙なり",
75
+ "懐かしき日々は去りぬ",
76
+ "束の間に光さす",
77
+ "迷える者に手を差し伸べよ",
78
+ "嵐の前には静けさがある",
79
+ "どうか責めないで",
80
+ "灯した明かりを絶やさぬように",
81
+ "目を開けて見よ",
82
+ "淑やかに訪れる",
83
+ "今こそ泣け、さもなくば二度と泣くな",
84
+ "時が許す間に薔薇を摘め"
85
+ ]
86
+ ),
87
+ }.freeze
88
+
89
+ register_prefix('B', 'MAL', TABLES.keys)
90
+
91
+ def eval_game_system_specific_command(command)
92
+ return roll_color(command) || roll_mal(command) || roll_tables(command, TABLES)
93
+ end
94
+
95
+ def roll_color(command)
96
+ m = /^B(\d{1,2})W(\d{1,2})$/.match(command)
97
+ return nil unless m
98
+
99
+ black = m[1].to_i
100
+ white = m[2].to_i
101
+ return nil unless black.between?(1, 12) && white.between?(1, 12)
102
+
103
+ value = @randomizer.roll_once(12)
104
+
105
+ if black == white
106
+ return color_text(black, white, value, '白と黒は重ねられません')
107
+ end
108
+
109
+ if white > black
110
+ return color_text(black, white, value, black <= value && value < white ? '黒' : '白')
111
+ else
112
+ return color_text(black, white, value, white <= value && value < black ? '白' : '黒')
113
+ end
114
+ end
115
+
116
+ def color_text(black, white, value, result)
117
+ return "色占い(黒#{black}白#{white}) > [#{value}] > #{result}"
118
+ end
119
+
120
+ def roll_mal(command)
121
+ m = /^MAL(\d{1,2})$/i.match(command)
122
+ return nil unless m
123
+
124
+ mal = m[1].to_i
125
+ return nil unless mal.between?(1, 12)
126
+
127
+ value = @randomizer.roll_once(12)
128
+ result = value <= mal ? '黒' : '白'
129
+ return "悪意の渦(#{mal}) > [#{value}] > #{result}"
130
+ end
131
+ end
132
+ end
133
+ end
@@ -193,12 +193,12 @@ module BCDice
193
193
  end
194
194
 
195
195
  def getRegistResult(command)
196
- m = /^RES(B)?([-\d]+)$/i.match(command)
196
+ m = /^RESB?(-?\d+)$/i.match(command)
197
197
  unless m
198
198
  return nil
199
199
  end
200
200
 
201
- value = m[2].to_i
201
+ value = m[1].to_i
202
202
  target = value * 5 + 50
203
203
 
204
204
  if target < 5
@@ -64,17 +64,17 @@ module BCDice
64
64
  combine_roll(command)
65
65
  when /^FAR/i
66
66
  getFullAutoResult(command)
67
- when /^BMR/i # 狂気の発作(リアルタイム)
67
+ when "BMR" # 狂気の発作(リアルタイム)
68
68
  roll_bmr_table()
69
- when /^BMS/i # 狂気の発作(サマリー)
69
+ when "BMS" # 狂気の発作(サマリー)
70
70
  roll_bms_table()
71
- when /^FCL/i # キャスティング・ロールのプッシュに失敗した場合(小)
71
+ when "FCL" # キャスティング・ロールのプッシュに失敗した場合(小)
72
72
  roll_1d8_table("キャスティング・ロール失敗(小)表", FAILED_CASTING_L_TABLE)
73
- when /^FCM/i # キャスティング・ロールのプッシュに失敗した場合(大)
73
+ when "FCM" # キャスティング・ロールのプッシュに失敗した場合(大)
74
74
  roll_1d8_table("キャスティング・ロール失敗(大)表", FAILED_CASTING_M_TABLE)
75
- when /^PH/i # 恐怖症表
75
+ when "PH" # 恐怖症表
76
76
  roll_1d100_table("恐怖症表", PHOBIAS_TABLE)
77
- when /^MA/i # マニア表
77
+ when "MA" # マニア表
78
78
  roll_1d100_table("マニア表", MANIAS_TABLE)
79
79
  end
80
80
  end
@@ -105,10 +105,10 @@ module BCDice
105
105
 
106
106
  if total == 1
107
107
  ResultLevel.new(:critical)
108
- elsif total <= difficulty
109
- ResultLevel.new(:success)
110
108
  elsif total >= fumble
111
109
  ResultLevel.new(:fumble)
110
+ elsif total <= difficulty
111
+ ResultLevel.new(:success)
112
112
  else
113
113
  ResultLevel.new(:failure)
114
114
  end
@@ -119,14 +119,14 @@ module BCDice
119
119
 
120
120
  if total == 1
121
121
  ResultLevel.new(:critical)
122
+ elsif total >= fumble
123
+ ResultLevel.new(:fumble)
122
124
  elsif total <= (difficulty / 5)
123
125
  ResultLevel.new(:extreme_success)
124
126
  elsif total <= (difficulty / 2)
125
127
  ResultLevel.new(:hard_success)
126
128
  elsif total <= difficulty
127
129
  ResultLevel.new(:regular_success)
128
- elsif total >= fumble
129
- ResultLevel.new(:fumble)
130
130
  else
131
131
  ResultLevel.new(:failure)
132
132
  end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/game_system/Cthulhu"
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class Cthulhu_SimplifiedChinese < Cthulhu
8
+ # ゲームシステムの識別子
9
+ ID = 'Cthulhu:SimplifiedChinese'
10
+
11
+ # ゲームシステム名
12
+ NAME = '克苏鲁的呼唤 第六版'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = '国際化:Simplified Chinese:克苏鲁的呼唤 第六版'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
19
+ c=大成功值 / f=大失败值 / s=极难成功
20
+
21
+ 1d100<=n c・f・s全部关闭(只进行数值比较判定)
22
+
23
+ ・带cfs判定的判定指令
24
+
25
+ CC 掷1d100骰 c=1、f=100
26
+ CCB 同上,c=5、f=96
27
+
28
+ 例:CC<=80 (以80技能値进行行为判定。并以1%的标准使用cf的值)
29
+ 例:CCB<=55 (以55技能値进行行为判定。并以5%的标准使用cf的值)
30
+
31
+ ・关于组合骰
32
+
33
+ CBR(x,y) c=1、f=100
34
+ CBRB(x,y) c=5、f=96
35
+
36
+ ・关于对抗骰
37
+ RES(x-y) c=1、f=100
38
+ RESB(x-y) c=5、f=96
39
+
40
+ ※故障值判定
41
+
42
+ ・CC(x) c=1、f=100
43
+ x=故障值。骰点在x以上并且发生大失败时,会和大失败一起显示(文本为「大失败&故障」)
44
+ 没有发生大失败时,与成功或失败无关,文斗都会显示为「故障」(不显示成功或失败的情况下进行覆盖显示)
45
+
46
+ ・CCB(x) c=5、f=96
47
+ 同上
48
+
49
+ INFO_MESSAGE_TEXT
50
+
51
+ register_prefix_from_super_class()
52
+
53
+ def initialize(command)
54
+ super(command)
55
+
56
+ @locale = :zh_hans
57
+ end
58
+ end
59
+ end
60
+ end
@@ -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)
@@ -30,6 +30,11 @@ module BCDice
30
30
  ・D66ダイスあり
31
31
  INFO_MESSAGE_TEXT
32
32
 
33
+ def initialize(command)
34
+ super(command)
35
+ @sides_implicit_d = 10
36
+ end
37
+
33
38
  register_prefix('\d+DX', 'ET')
34
39
 
35
40
  # 成功判定コマンドのノード
@@ -115,8 +115,9 @@ module BCDice
115
115
  dice_count = 4 if dice_count == 0
116
116
 
117
117
  dice_list = @randomizer.roll_barabara(dice_count, 6).sort
118
+ total = dice_list.sum()
118
119
 
119
- return "(#{command}) > #{dice_count}D6 > [ #{dice_list.join(', ')} ]"
120
+ return "(#{command}) > #{dice_count}D6 > [ #{dice_list.join(', ')} ] > #{total}"
120
121
  end
121
122
 
122
123
  def getReactionDiceCommandResult(command)