bcdice 3.6.0 → 3.7.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 +25 -0
- data/i18n/FutariSousa/ja_jp.yml +431 -0
- data/i18n/LogHorizon/ja_jp.yml +1 -1
- data/lib/bcdice/arithmetic/parser.rb +1 -1
- data/lib/bcdice/command/parser.rb +1 -1
- data/lib/bcdice/common_command/add_dice/parser.rb +106 -74
- data/lib/bcdice/common_command/add_dice.rb +1 -1
- data/lib/bcdice/common_command/barabara_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/calc/parser.rb +1 -1
- data/lib/bcdice/common_command/d66_dice.rb +1 -1
- data/lib/bcdice/common_command/reroll_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/tally_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/upper_dice/parser.rb +1 -1
- data/lib/bcdice/game_system/Ayabito.rb +170 -4
- data/lib/bcdice/game_system/BeginningIdol.rb +2 -0
- data/lib/bcdice/game_system/BeginningIdol2022.rb +184 -0
- data/lib/bcdice/game_system/FutariSousa.rb +30 -5
- data/lib/bcdice/game_system/GhostLive.rb +144 -0
- data/lib/bcdice/game_system/GoblinSlayer.rb +30 -8
- data/lib/bcdice/game_system/IfIfIf.rb +648 -0
- data/lib/bcdice/game_system/Kutulu.rb +95 -0
- data/lib/bcdice/game_system/Sengensyou.rb +59 -0
- data/lib/bcdice/game_system/VisionConnect.rb +135 -0
- data/lib/bcdice/game_system/WorldOfDarkness.rb +40 -44
- data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
- data/lib/bcdice/game_system.rb +6 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +12 -6
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class Kutulu < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'Kutulu'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'Kutulu'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'くとうるう'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGETEXT
|
17
|
+
■判定 nKU n: ダイス数
|
18
|
+
|
19
|
+
例)3KU: ダイスを3個振って、その結果を表示(ギリギリでの成功も表示)
|
20
|
+
|
21
|
+
■対抗判定 nKR n: ダイス数
|
22
|
+
|
23
|
+
例)2KR: ダイスを2個振って、その結果を表示。対抗判定用の3桁の数字も出力。(大きい方が勝利)
|
24
|
+
INFO_MESSAGETEXT
|
25
|
+
|
26
|
+
register_prefix('\dK[UR]')
|
27
|
+
|
28
|
+
def initialize(command)
|
29
|
+
super(command)
|
30
|
+
|
31
|
+
@sort_barabara_dice = true # バラバラロール(Bコマンド)でソート有
|
32
|
+
end
|
33
|
+
|
34
|
+
def eval_game_system_specific_command(command)
|
35
|
+
resolute_action(command) || resolute_competition(command)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
# アクティヴ能力の判定
|
41
|
+
# @param [String] command
|
42
|
+
# @return [Result]
|
43
|
+
def resolute_action(command)
|
44
|
+
m = /(\d)KU/.match(command)
|
45
|
+
return nil unless m
|
46
|
+
|
47
|
+
num_dices = m[1].to_i
|
48
|
+
|
49
|
+
dices = @randomizer.roll_barabara(num_dices, 6).sort
|
50
|
+
dice_text = dices.join(",")
|
51
|
+
|
52
|
+
output = "(#{num_dices}KU) > #{dice_text}"
|
53
|
+
|
54
|
+
success_num = dices.count { |val| val >= 4 }
|
55
|
+
counts_4 = dices.count(4)
|
56
|
+
if success_num > 0
|
57
|
+
output += " > 成功数#{success_num}"
|
58
|
+
if success_num == 1 && counts_4 == 1
|
59
|
+
output += " > *ギリギリでの成功"
|
60
|
+
end
|
61
|
+
return Result.success(output)
|
62
|
+
else
|
63
|
+
output += " > 失敗"
|
64
|
+
return Result.failure(output)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# 対抗判定用出力
|
69
|
+
# @param [String] command
|
70
|
+
# @return [Result]
|
71
|
+
def resolute_competition(command)
|
72
|
+
m = /(\d)KR/.match(command)
|
73
|
+
return nil unless m
|
74
|
+
|
75
|
+
num_dices = m[1].to_i
|
76
|
+
|
77
|
+
dices = @randomizer.roll_barabara(num_dices, 6).sort
|
78
|
+
dice_text = dices.join(",")
|
79
|
+
|
80
|
+
counts_6 = dices.count(6)
|
81
|
+
counts_5 = dices.count(5)
|
82
|
+
success_num = dices.count { |val| val >= 4 }
|
83
|
+
com_text = format("(%d%d%d)", success_num, counts_6, counts_5)
|
84
|
+
|
85
|
+
output = "(#{num_dices}KR) > #{dice_text} > #{com_text}"
|
86
|
+
|
87
|
+
if success_num > 0
|
88
|
+
return Result.success(output)
|
89
|
+
else
|
90
|
+
return Result.failure(output)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class Sengensyou < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'Sengensyou'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = '千幻抄'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'せんけんしよう'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
・SGS 命中判定・回避判定
|
18
|
+
INFO_MESSAGE_TEXT
|
19
|
+
|
20
|
+
register_prefix('SGS')
|
21
|
+
|
22
|
+
def eval_game_system_specific_command(command)
|
23
|
+
# 命中判定・回避判定
|
24
|
+
parser = Command::Parser.new('SGS', round_type: @round_type).restrict_cmp_op_to(nil)
|
25
|
+
command = parser.parse(command)
|
26
|
+
|
27
|
+
unless command
|
28
|
+
return nil
|
29
|
+
end
|
30
|
+
|
31
|
+
dice_list = @randomizer.roll_barabara(3, 6)
|
32
|
+
dice_total = dice_list.sum()
|
33
|
+
is_critical = dice_total >= 16
|
34
|
+
is_fumble = dice_total <= 5
|
35
|
+
additional_text =
|
36
|
+
if is_critical
|
37
|
+
"クリティカル"
|
38
|
+
elsif is_fumble
|
39
|
+
"ファンブル"
|
40
|
+
end
|
41
|
+
modify_text = "#{dice_total}#{Format.modifier(command.modify_number)}" if command.modify_number != 0
|
42
|
+
sequence = [
|
43
|
+
"(3D6#{Format.modifier(command.modify_number)})",
|
44
|
+
"#{dice_total}[#{dice_list.join(',')}]",
|
45
|
+
modify_text,
|
46
|
+
(dice_total + command.modify_number).to_s,
|
47
|
+
additional_text,
|
48
|
+
].compact
|
49
|
+
|
50
|
+
result = Result.new.tap do |r|
|
51
|
+
r.text = sequence.join(" > ")
|
52
|
+
r.critical = is_critical
|
53
|
+
r.fumble = is_fumble
|
54
|
+
end
|
55
|
+
return result
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bcdice/command/parser'
|
4
|
+
|
5
|
+
module BCDice
|
6
|
+
module GameSystem
|
7
|
+
class VisionConnect < Base
|
8
|
+
# ゲームシステムの識別子
|
9
|
+
ID = "VisionConnect"
|
10
|
+
|
11
|
+
# ゲームシステム名
|
12
|
+
NAME = "ヴィジョンコネクト"
|
13
|
+
|
14
|
+
# ゲームシステム名の読みがな
|
15
|
+
SORT_KEY = "ういしよんこねくと"
|
16
|
+
|
17
|
+
HELP_MESSAGE = <<~TEXT
|
18
|
+
・判定(VC+x@c#f>=y)
|
19
|
+
!:コマンドの最初に付けると致命的失敗が全てアクシデントになる。
|
20
|
+
x:修正値。能力値、戦闘値、その他修正値など。省略可。
|
21
|
+
y:目標値。省略時は決定的成功/致命的失敗のみ表示。
|
22
|
+
c:クリティカル値。@ごと省略可。省略時は12。
|
23
|
+
f:ファンブル値。#ごと省略可。省略時は3。
|
24
|
+
(例)VC+3>=8
|
25
|
+
VC+7@11>=12
|
26
|
+
!VC+6-1#4>=10
|
27
|
+
|
28
|
+
・各種表
|
29
|
+
アクシデント表 AT
|
30
|
+
トラブル表 TT
|
31
|
+
TEXT
|
32
|
+
|
33
|
+
def eval_game_system_specific_command(command)
|
34
|
+
return check_action(command) || roll_tables(command, TABLES)
|
35
|
+
end
|
36
|
+
|
37
|
+
def check_action(command)
|
38
|
+
parser = Command::Parser.new(/!?VC/, round_type: RoundType::FLOOR)
|
39
|
+
.enable_critical
|
40
|
+
.enable_fumble
|
41
|
+
.restrict_cmp_op_to(nil, :>=)
|
42
|
+
parsed = parser.parse(command)
|
43
|
+
return nil if parsed.nil?
|
44
|
+
|
45
|
+
stamina_zero = parsed.command[0] == '!'
|
46
|
+
critical_target = parsed.critical || 12
|
47
|
+
fumble_target = parsed.fumble || 3
|
48
|
+
accident_target = stamina_zero ? fumble_target : 2
|
49
|
+
|
50
|
+
dice_arr = @randomizer.roll_barabara(2, 6)
|
51
|
+
dice_sum = dice_arr.sum
|
52
|
+
result_sum = dice_sum + parsed.modify_number
|
53
|
+
is_critical = dice_sum >= critical_target
|
54
|
+
is_fumble = dice_sum <= fumble_target
|
55
|
+
is_accident = dice_sum <= accident_target
|
56
|
+
is_trouble = is_fumble && !is_accident
|
57
|
+
if is_critical
|
58
|
+
is_success = true
|
59
|
+
result_str = "決定的成功"
|
60
|
+
elsif is_accident
|
61
|
+
is_success = false
|
62
|
+
result_str = "致命的失敗(アクシデント)"
|
63
|
+
elsif is_trouble
|
64
|
+
is_success = false
|
65
|
+
result_str = "致命的失敗(トラブル)"
|
66
|
+
elsif parsed.target_number.nil?
|
67
|
+
is_success = nil
|
68
|
+
elsif result_sum >= parsed.target_number
|
69
|
+
is_success = true
|
70
|
+
result_str = "成功"
|
71
|
+
else
|
72
|
+
is_success = false
|
73
|
+
result_str = "失敗"
|
74
|
+
end
|
75
|
+
|
76
|
+
sequence = [
|
77
|
+
"(#{parsed.to_s(:after_modify_number)})",
|
78
|
+
"#{dice_sum}[#{dice_arr.join(',')}]#{Format.modifier(parsed.modify_number)}",
|
79
|
+
result_sum,
|
80
|
+
result_str
|
81
|
+
].compact
|
82
|
+
|
83
|
+
Result.new.tap do |r|
|
84
|
+
r.text = sequence.join(" > ")
|
85
|
+
r.critical = is_critical
|
86
|
+
r.fumble = is_fumble
|
87
|
+
r.success = is_success || false
|
88
|
+
r.failure = is_success.nil? ? false : !is_success
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
TABLES = {
|
93
|
+
'AT' => DiceTable::Table.new(
|
94
|
+
'アクシデント表',
|
95
|
+
'1D6',
|
96
|
+
[
|
97
|
+
'頭がぼんやりして、まぶたが重くなってきた……。これは睡魔の襲来? キャラクターの操作がおぼつかなくなる。シーン終了まで能力値判定、戦闘値判定の達成値に-3される。スタミナを3点消費することで、この効果を打ち消すことができる。',
|
98
|
+
'キーボード、マウス、ゲームパッドなどが操作不能になった! キャラクターを操作することができない。戦闘中の場合は次のラウンドの準備プロセス終了までキャラクターアクションを行うことができず、スキルや特技の使用もできない。スタミナを3点消費することで、この効果を打ち消すことができる。',
|
99
|
+
'急に画面が真っ暗に! パソコンやゲーム機を見ると、動作はしている。これはモニタの問題かっ! キャラクターを操作することができない。戦闘中の場合は次のラウンドの終了までキャラクターアクションを行うことができず、スキル、特技の使用もできない。スタミナを4点消費することで、この効果を打ち消すことができる。',
|
100
|
+
'突然、通信回線が不調となり、切断されてしまった! 急いで再ログインしなければ! シーンから自動的に退場となる。戦闘中の場合は次のラウンドの準備プロセス終了後、登場できる。スタミナを4点消費することで、この効果を打ち消すことができる。',
|
101
|
+
'いきなり画面が真っ黒になり、パソコンやゲーム機が再起動し始めた……。シーンから自動的に退場となる。戦闘中の場合は次のラウンドの終了後、登場できる。スタミナを5点消費することで、この効果を打ち消すことができる。',
|
102
|
+
'突然、画面が消えた。いや、画面だけじゃない。電化製品がすべて止まっているようだ。もしや、これは停電!? シーンから自動的に退場となる。次のシーンの開始時に登場できる。スタミナを5点消費することで、この効果を打ち消すことができる。',
|
103
|
+
]
|
104
|
+
),
|
105
|
+
'TT' => DiceTable::D66RangeTable.new(
|
106
|
+
'トラブル表',
|
107
|
+
{
|
108
|
+
11..13 => 'チャットで誤爆(発言ミス)をしてしまった。恥ずかしさで、スタミナが1点減少する。',
|
109
|
+
14..16 => 'かまってほしいのか、ペットがちょっとした悪戯をしてきた。ごめん、今は忙しいのだ。ペットを取得していない場合は何も起こらない。ペットを取得していた場合、罪悪感によりスタミナが1点減少する。',
|
110
|
+
21..23 => '何かの用事があるのか、それとも食事の時間なのか、家族から声を掛けられた。家族を取得していない場合は何も起こらない。家族を取得していた場合、気が焦ってスタミナが2点減少する。',
|
111
|
+
24..26 => '玄関のチャイムが鳴り、「宅配便でーす」の声が外から聞こえてきた。こんな時にっ!? 家族がいれば、荷物を受け取ってもらえるのだが……。家族を取得している場合は何も起こらない。家族を取得していない場合、スタミナが2点減少する。',
|
112
|
+
31..33 => '操作中に勢い余って腕が飲み物に当たってしまい、中身がこぼれてしまった。あとで掃除しないと……。ドリンクを取得していない、あるいはすべて使用済みである場合は何も起こらない。ドリンクを1個失う。',
|
113
|
+
34..36 => 'キーボードやゲームパッドの調子があまりよくない。やっぱり、ゲーミングデバイスに買い換えた方がいいか……。デバイスを取得している場合は何も起こらない。デバイスを取得していない場合、ストレスによりスタミナが2点減少する。',
|
114
|
+
41..43 => '知り合いから電話が掛かってきた。電話しながらの操作はちょっと大変だ。より集中しなければならないため、スタミナが2点減少する。',
|
115
|
+
44..46 => '急にお手洗いに行きたくなってきた。ちょっと我慢しなければならないため、スタミナが2点減少する。',
|
116
|
+
51..51 => 'レアモンスターがポップ(出現)したとチャットで通知が来た! でも、今は行くことができない……。ブレイブを取得していない場合は何も起こらない。ブレイブを取得している場合、悔しさでスタミナが3点減少する。',
|
117
|
+
52..52 => '出品しているアイテムのマーケットでの相場が下がったと知り合いからチャットが飛んできた。マイスターを取得していない場合は何も起こらない。マイスターを取得している場合、悲しさでスタミナが3点減少する。',
|
118
|
+
53..53 => '操作の方法が分からなくなって、焦りまくる。ノービスを取得していない場合は何も起こらない。ノービスを取得している場合、混乱でスタミナが3点減少する。',
|
119
|
+
54..54 => 'ギルドのメンバーからギルドを抜けたいという相談のチャットが飛んできた。リーダーを取得していない場合は何も起こらない。リーダーを取得している場合、驚きのあまりスタミナが3点減少する。',
|
120
|
+
55..55 => '知り合いから攻略の手伝いを頼むチャットが飛んできた。ごめんなさい、今はちょっと無理……。ヘルパーを取得していない場合は何も起こらない。ヘルパーを取得している場合、申し訳なさでスタミナが3点減少する。',
|
121
|
+
56..56 => 'つきまとってくるユーザーから、しつこくチャットが飛んでくる。面倒くさいなぁ。フェイバリットを取得していない場合は何も起こらない。フェイバリットを取得している場合、煩わしさでスタミナが3点減少する。',
|
122
|
+
61..61 => '誰かと一緒にプレイするのに慣れていないためか、ちょっと緊張しているかもしれない。ローンウルフを取得していない場合は何も起こらない。ローンウルフを取得している場合、緊張でスタミナが3点減少する。',
|
123
|
+
62..62 => '事前に入手していた情報が間違っていた!? どう対応してよいか分からず、焦りまくる。ブレインを取得していない場合は何も起こらない。ブレインを取得している場合、焦りのあまりスタミナが3点減少する。',
|
124
|
+
63..63 => '配信でトラブルが発生!? 対応に慌ててしまう。ストリーマーを取得していない場合は何も起こらない。ストリーマーを取得している場合、狼狽によってスタミナが3点減少する。',
|
125
|
+
64..64 => '使っているゲーミングデバイスの調子がよくない。ガジェッターを取得していない場合は何も起こらない。ガジェッターを取得している場合、いらだちでスタミナが3点減少する。',
|
126
|
+
65..65 => '合間にプレイしている別のゲームや流し見していた動画に注意が向いて、操作をミスしてしまう。カジュアルを取得していない場合は何も起こらない。カジュアルを取得している場合、後悔でスタミナが3点減少する。',
|
127
|
+
66..66 => 'ハードコアを取得していない場合は何も起こらない。トラブル表の51~65の項目の効果を受ける。ハードコア以外に取得しているスタイルに合わせて、効果を適用すること(たとえば、ブレイブならば51、マイスターなら52となる)。',
|
128
|
+
}
|
129
|
+
),
|
130
|
+
}.freeze
|
131
|
+
|
132
|
+
register_prefix('!?VC', TABLES.keys)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -25,17 +25,9 @@ module BCDice
|
|
25
25
|
|
26
26
|
register_prefix('\d+ST')
|
27
27
|
|
28
|
-
def initialize(command)
|
29
|
-
super(command)
|
30
|
-
@successDice = 0
|
31
|
-
@botchDice = 0
|
32
|
-
@rerollDice = 0
|
33
|
-
end
|
34
|
-
|
35
28
|
def eval_game_system_specific_command(command)
|
36
|
-
|
29
|
+
difficulty = 6
|
37
30
|
auto_success = 0
|
38
|
-
|
39
31
|
enabled_reroll = false
|
40
32
|
enabled_20th = false
|
41
33
|
|
@@ -48,40 +40,55 @@ module BCDice
|
|
48
40
|
when 'STA'
|
49
41
|
enabled_20th = true
|
50
42
|
end
|
51
|
-
|
43
|
+
difficulty = md[3].to_i if md[3]
|
52
44
|
auto_success = md[4].to_i if md[4]
|
53
45
|
|
54
|
-
|
46
|
+
difficulty = 6 if difficulty < 2
|
55
47
|
|
56
48
|
sequence = []
|
57
|
-
sequence.push "DicePool=#{dice_pool}, Difficulty=#{
|
49
|
+
sequence.push "DicePool=#{dice_pool}, Difficulty=#{difficulty}, AutomaticSuccess=#{auto_success}"
|
58
50
|
|
59
51
|
# 出力では Difficulty=11..12 もあり得る
|
60
|
-
|
52
|
+
difficulty = 10 if difficulty > 10
|
61
53
|
|
62
|
-
total_success =
|
54
|
+
total_success = 0
|
63
55
|
total_botch = 0
|
56
|
+
once_success = false
|
64
57
|
|
65
|
-
dice, success, botch
|
58
|
+
dice, ten_success, success, botch = roll_wod(dice_pool, difficulty)
|
66
59
|
sequence.push dice.join(',')
|
67
60
|
total_success += success
|
68
61
|
total_botch += botch
|
69
62
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
63
|
+
# 成功がひとつでもあったか覚えておく
|
64
|
+
once_success = true if success > 0 || ten_success > 0
|
65
|
+
|
66
|
+
if enabled_20th
|
67
|
+
# 20周年記念版なら10の目は2成功扱い
|
68
|
+
total_success += ten_success * 2
|
69
|
+
else
|
70
|
+
# Revised Editionでは10は1成功と数える
|
71
|
+
total_success += ten_success
|
72
|
+
|
73
|
+
# 振り足し判定ありなら10が出ただけ振り足しを行う
|
74
|
+
if enabled_reroll
|
75
|
+
while ten_success > 0
|
76
|
+
# 振り足しの出目1は大失敗ではない
|
77
|
+
dice, ten_success, success = roll_wod(ten_success, difficulty)
|
78
|
+
sequence.push dice.join(',')
|
79
|
+
total_success += (success + ten_success)
|
80
|
+
end
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
84
|
+
total_success -= [total_success, total_botch].min
|
85
|
+
|
86
|
+
total_success += auto_success # 意志力による自動成功は打ち消されない
|
87
|
+
|
82
88
|
if total_success > 0
|
83
89
|
sequence.push "成功数#{total_success}"
|
84
|
-
elsif total_botch > 0
|
90
|
+
elsif total_botch > 0 && once_success == false
|
91
|
+
# ボッチが存在し、かつ成功がひとつもない場合のみ大失敗
|
85
92
|
sequence.push "大失敗"
|
86
93
|
else
|
87
94
|
sequence.push "失敗"
|
@@ -91,10 +98,9 @@ module BCDice
|
|
91
98
|
return output
|
92
99
|
end
|
93
100
|
|
94
|
-
#
|
95
|
-
#
|
96
|
-
|
97
|
-
def roll_wod(dice_pool, diff, enabled_botch = true, auto_success_value = 1)
|
101
|
+
# 出目10と1、難易度以上が出た成功の目をカウントする。
|
102
|
+
# それぞれの解釈はバージョンによって異なるため、呼び出し元で行う。
|
103
|
+
def roll_wod(dice_pool, difficulty)
|
98
104
|
# FIXME: まとめて振る
|
99
105
|
dice = Array.new(dice_pool) do
|
100
106
|
dice_now = @randomizer.roll_once(10)
|
@@ -105,30 +111,20 @@ module BCDice
|
|
105
111
|
|
106
112
|
success = 0
|
107
113
|
botch = 0
|
108
|
-
|
114
|
+
ten_success = 0
|
109
115
|
|
110
116
|
dice.each do |d|
|
111
117
|
case d
|
112
118
|
when 10
|
113
|
-
|
114
|
-
when
|
119
|
+
ten_success += 1
|
120
|
+
when difficulty...10
|
115
121
|
success += 1
|
116
122
|
when 1
|
117
|
-
botch += 1
|
123
|
+
botch += 1
|
118
124
|
end
|
119
125
|
end
|
120
126
|
|
121
|
-
|
122
|
-
success += auto_success
|
123
|
-
|
124
|
-
if enabled_botch
|
125
|
-
# 成功と大失敗を相殺する
|
126
|
-
c = [success, botch].min
|
127
|
-
success -= c
|
128
|
-
botch -= c
|
129
|
-
end
|
130
|
-
|
131
|
-
return dice, success, botch, auto_success
|
127
|
+
return dice, ten_success, success, botch
|
132
128
|
end
|
133
129
|
end
|
134
130
|
end
|
@@ -6,7 +6,7 @@ module BCDice
|
|
6
6
|
TAG_TABLE = DiceTable::D66GridTable.new(
|
7
7
|
"タグ決定表",
|
8
8
|
[
|
9
|
-
["情報イベント", "
|
9
|
+
["情報イベント", "エクストリーム(サ)", "カワイイ(サ)", "トンデモ(サ)", "マニア(サ)", "ヲタク(サ)"],
|
10
10
|
["音楽(ア)", "好きなタグ", "トレンド(ア)", "読書(ア)", "パフォーマンス(ア)", "美術(ア)"],
|
11
11
|
["アラサガシ(マ)", "おせっかい(マ)", "好きなタグ", "家事(マ)", "ガリ勉(マ)", "健康(マ)"],
|
12
12
|
["アウトドア(休)", "工作(休)", "スポーツ(休)", "同一タグ", "ハイソ(休)", "旅行(休)"],
|
data/lib/bcdice/game_system.rb
CHANGED
@@ -26,6 +26,7 @@ require "bcdice/game_system/BattleTech"
|
|
26
26
|
require "bcdice/game_system/BeastBindTrinity"
|
27
27
|
require "bcdice/game_system/BeginningIdol"
|
28
28
|
require "bcdice/game_system/BeginningIdol_Korean"
|
29
|
+
require "bcdice/game_system/BeginningIdol2022"
|
29
30
|
require "bcdice/game_system/BladeOfArcana"
|
30
31
|
require "bcdice/game_system/BlindMythos"
|
31
32
|
require "bcdice/game_system/BloodCrusade"
|
@@ -84,6 +85,7 @@ require "bcdice/game_system/Garako"
|
|
84
85
|
require "bcdice/game_system/GardenOrder"
|
85
86
|
require "bcdice/game_system/GehennaAn"
|
86
87
|
require "bcdice/game_system/GeishaGirlwithKatana"
|
88
|
+
require "bcdice/game_system/GhostLive"
|
87
89
|
require "bcdice/game_system/GoblinSlayer"
|
88
90
|
require "bcdice/game_system/GoldenSkyStories"
|
89
91
|
require "bcdice/game_system/Gorilla"
|
@@ -98,6 +100,7 @@ require "bcdice/game_system/HatsuneMiku"
|
|
98
100
|
require "bcdice/game_system/Hieizan"
|
99
101
|
require "bcdice/game_system/HouraiGakuen"
|
100
102
|
require "bcdice/game_system/HuntersMoon"
|
103
|
+
require "bcdice/game_system/IfIfIf"
|
101
104
|
require "bcdice/game_system/Illusio"
|
102
105
|
require "bcdice/game_system/InfiniteBabeL"
|
103
106
|
require "bcdice/game_system/InfiniteFantasia"
|
@@ -116,6 +119,7 @@ require "bcdice/game_system/KemonoNoMori"
|
|
116
119
|
require "bcdice/game_system/KillDeathBusiness"
|
117
120
|
require "bcdice/game_system/KillDeathBusiness_Korean"
|
118
121
|
require "bcdice/game_system/KurayamiCrying"
|
122
|
+
require "bcdice/game_system/Kutulu"
|
119
123
|
require "bcdice/game_system/LiveraDoll"
|
120
124
|
require "bcdice/game_system/LogHorizon"
|
121
125
|
require "bcdice/game_system/LogHorizon_Korean"
|
@@ -171,6 +175,7 @@ require "bcdice/game_system/SRS"
|
|
171
175
|
require "bcdice/game_system/SamsaraBallad"
|
172
176
|
require "bcdice/game_system/Satasupe"
|
173
177
|
require "bcdice/game_system/ScreamHighSchool"
|
178
|
+
require "bcdice/game_system/Sengensyou"
|
174
179
|
require "bcdice/game_system/SevenFortressMobius"
|
175
180
|
require "bcdice/game_system/ShadowRun"
|
176
181
|
require "bcdice/game_system/ShadowRun4"
|
@@ -212,6 +217,7 @@ require "bcdice/game_system/UnsungDuet"
|
|
212
217
|
require "bcdice/game_system/Utakaze"
|
213
218
|
require "bcdice/game_system/VampireTheMasquerade5th"
|
214
219
|
require "bcdice/game_system/Villaciel"
|
220
|
+
require "bcdice/game_system/VisionConnect"
|
215
221
|
require "bcdice/game_system/WARPS"
|
216
222
|
require "bcdice/game_system/WaresBlade"
|
217
223
|
require "bcdice/game_system/Warhammer"
|
data/lib/bcdice/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bcdice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SAKATA Sinji
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- lib/bcdice/game_system/BattleTech.rb
|
158
158
|
- lib/bcdice/game_system/BeastBindTrinity.rb
|
159
159
|
- lib/bcdice/game_system/BeginningIdol.rb
|
160
|
+
- lib/bcdice/game_system/BeginningIdol2022.rb
|
160
161
|
- lib/bcdice/game_system/BeginningIdol_Korean.rb
|
161
162
|
- lib/bcdice/game_system/BladeOfArcana.rb
|
162
163
|
- lib/bcdice/game_system/BlindMythos.rb
|
@@ -217,6 +218,7 @@ files:
|
|
217
218
|
- lib/bcdice/game_system/GardenOrder.rb
|
218
219
|
- lib/bcdice/game_system/GehennaAn.rb
|
219
220
|
- lib/bcdice/game_system/GeishaGirlwithKatana.rb
|
221
|
+
- lib/bcdice/game_system/GhostLive.rb
|
220
222
|
- lib/bcdice/game_system/GoblinSlayer.rb
|
221
223
|
- lib/bcdice/game_system/GoldenSkyStories.rb
|
222
224
|
- lib/bcdice/game_system/Gorilla.rb
|
@@ -230,6 +232,7 @@ files:
|
|
230
232
|
- lib/bcdice/game_system/Hieizan.rb
|
231
233
|
- lib/bcdice/game_system/HouraiGakuen.rb
|
232
234
|
- lib/bcdice/game_system/HuntersMoon.rb
|
235
|
+
- lib/bcdice/game_system/IfIfIf.rb
|
233
236
|
- lib/bcdice/game_system/Illusio.rb
|
234
237
|
- lib/bcdice/game_system/InfiniteBabeL.rb
|
235
238
|
- lib/bcdice/game_system/InfiniteFantasia.rb
|
@@ -248,6 +251,7 @@ files:
|
|
248
251
|
- lib/bcdice/game_system/KillDeathBusiness.rb
|
249
252
|
- lib/bcdice/game_system/KillDeathBusiness_Korean.rb
|
250
253
|
- lib/bcdice/game_system/KurayamiCrying.rb
|
254
|
+
- lib/bcdice/game_system/Kutulu.rb
|
251
255
|
- lib/bcdice/game_system/LiveraDoll.rb
|
252
256
|
- lib/bcdice/game_system/LogHorizon.rb
|
253
257
|
- lib/bcdice/game_system/LogHorizon_Korean.rb
|
@@ -303,6 +307,7 @@ files:
|
|
303
307
|
- lib/bcdice/game_system/SamsaraBallad.rb
|
304
308
|
- lib/bcdice/game_system/Satasupe.rb
|
305
309
|
- lib/bcdice/game_system/ScreamHighSchool.rb
|
310
|
+
- lib/bcdice/game_system/Sengensyou.rb
|
306
311
|
- lib/bcdice/game_system/SevenFortressMobius.rb
|
307
312
|
- lib/bcdice/game_system/ShadowRun.rb
|
308
313
|
- lib/bcdice/game_system/ShadowRun4.rb
|
@@ -344,6 +349,7 @@ files:
|
|
344
349
|
- lib/bcdice/game_system/Utakaze.rb
|
345
350
|
- lib/bcdice/game_system/VampireTheMasquerade5th.rb
|
346
351
|
- lib/bcdice/game_system/Villaciel.rb
|
352
|
+
- lib/bcdice/game_system/VisionConnect.rb
|
347
353
|
- lib/bcdice/game_system/WARPS.rb
|
348
354
|
- lib/bcdice/game_system/WaresBlade.rb
|
349
355
|
- lib/bcdice/game_system/Warhammer.rb
|
@@ -413,7 +419,7 @@ metadata:
|
|
413
419
|
homepage_uri: https://bcdice.org
|
414
420
|
source_code_uri: https://github.com/bcdice/BCDice
|
415
421
|
changelog_uri: https://github.com/bcdice/BCDice/blob/master/CHANGELOG.md
|
416
|
-
post_install_message:
|
422
|
+
post_install_message:
|
417
423
|
rdoc_options: []
|
418
424
|
require_paths:
|
419
425
|
- lib
|
@@ -428,8 +434,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
428
434
|
- !ruby/object:Gem::Version
|
429
435
|
version: '0'
|
430
436
|
requirements: []
|
431
|
-
rubygems_version: 3.
|
432
|
-
signing_key:
|
437
|
+
rubygems_version: 3.3.7
|
438
|
+
signing_key:
|
433
439
|
specification_version: 4
|
434
440
|
summary: BCDice is a rolling dice engine for TRPG
|
435
441
|
test_files: []
|