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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -0
- data/i18n/FutariSousa/ja_jp.yml +705 -9
- data/i18n/KillDeathBusiness/ja_jp.yml +1 -1
- data/i18n/SwordWorld/ja_jp.yml +6 -0
- data/i18n/SwordWorld2_0/ja_jp.yml +37 -0
- data/i18n/SwordWorld2_5/ja_jp.yml +57 -0
- data/lib/bcdice/common_command/add_dice/node.rb +28 -4
- data/lib/bcdice/common_command/add_dice/parser.rb +149 -85
- data/lib/bcdice/dice_table/d66_parity_table.rb +8 -0
- data/lib/bcdice/game_system/Avandner.rb +1 -2
- data/lib/bcdice/game_system/Ayabito.rb +229 -0
- data/lib/bcdice/game_system/BattleTech.rb +1 -1
- data/lib/bcdice/game_system/CyberpunkRed.rb +135 -0
- data/lib/bcdice/game_system/DarkDaysDrive.rb +76 -41
- data/lib/bcdice/game_system/Elysion.rb +36 -20
- data/lib/bcdice/game_system/FutariSousa.rb +48 -4
- data/lib/bcdice/game_system/KemonoNoMori.rb +17 -17
- data/lib/bcdice/game_system/NeverCloud.rb +19 -8
- data/lib/bcdice/game_system/Shiranui.rb +145 -0
- data/lib/bcdice/game_system/ShuumatsuKikou.rb +298 -0
- data/lib/bcdice/game_system/StarryDolls.rb +318 -0
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +18 -5
- data/lib/bcdice/game_system/SwordWorld.rb +6 -6
- data/lib/bcdice/game_system/SwordWorld2_0.rb +16 -39
- data/lib/bcdice/game_system/SwordWorld2_5.rb +3 -63
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +29 -28
- data/lib/bcdice/game_system/cyberpunk_red/tables.rb +530 -0
- data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +1 -1
- data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +1 -1
- data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
- data/lib/bcdice/game_system/sword_world/rating_options.rb +47 -0
- data/lib/bcdice/game_system/sword_world/rating_parsed.rb +34 -82
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +43 -53
- data/lib/bcdice/game_system/sword_world/transcendent_test.rb +14 -10
- data/lib/bcdice/game_system.rb +4 -0
- data/lib/bcdice/randomizer.rb +1 -1
- data/lib/bcdice/version.rb +1 -1
- 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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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)
|