bcdice 3.5.0 → 3.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|