bcdice 3.0.0.pre.rc.1 → 3.0.0.pre.rc.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/i18n/DetatokoSaga/ja_jp.yml +3 -2
- data/i18n/DetatokoSaga/ko_kr.yml +1 -0
- data/lib/bcdice.rb +2 -0
- data/lib/bcdice/arithmetic_evaluator.rb +2 -0
- data/lib/bcdice/common_command.rb +2 -0
- data/lib/bcdice/common_command/add_dice.rb +2 -0
- data/lib/bcdice/common_command/add_dice/randomizer.rb +2 -0
- data/lib/bcdice/common_command/barabara_dice.rb +2 -0
- data/lib/bcdice/common_command/barabara_dice/node.rb +2 -0
- data/lib/bcdice/common_command/calc.rb +2 -0
- data/lib/bcdice/common_command/d66_dice.rb +2 -0
- data/lib/bcdice/common_command/upper_dice.rb +2 -0
- data/lib/bcdice/common_command/version.rb +2 -0
- data/lib/bcdice/dice_table.rb +2 -0
- data/lib/bcdice/dice_table/chain_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_grid_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_parity_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_range_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_table.rb +2 -0
- data/lib/bcdice/dice_table/roll_result.rb +2 -0
- data/lib/bcdice/dice_table/table.rb +2 -0
- data/lib/bcdice/enum.rb +2 -0
- data/lib/bcdice/format.rb +2 -0
- data/lib/bcdice/game_system.rb +6 -0
- data/lib/bcdice/game_system/AlchemiaStruggle.rb +58 -24
- data/lib/bcdice/game_system/BBN.rb +6 -4
- data/lib/bcdice/game_system/BlindMythos.rb +0 -1
- data/lib/bcdice/game_system/CodeLayerd.rb +33 -65
- data/lib/bcdice/game_system/DesperateRun.rb +163 -0
- data/lib/bcdice/game_system/DetatokoSaga.rb +25 -7
- data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +3 -3
- data/lib/bcdice/game_system/DiceBot.rb +22 -4
- data/lib/bcdice/game_system/InfiniteBabeL.rb +518 -0
- data/lib/bcdice/game_system/JekyllAndHyde.rb +42 -0
- data/lib/bcdice/game_system/Peekaboo.rb +1 -1
- data/lib/bcdice/game_system/RecordOfLodossWar.rb +6 -4
- data/lib/bcdice/game_system/RyuTuber.rb +6 -4
- data/lib/bcdice/game_system/Satasupe.rb +0 -2
- data/lib/bcdice/game_system/ShoujoTenrankai.rb +1 -1
- data/lib/bcdice/game_system/SteamPunkers.rb +6 -4
- data/lib/bcdice/game_system/Yggdrasill.rb +605 -0
- data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +2 -0
- data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +2 -0
- data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +2 -0
- data/lib/bcdice/game_system/one_way_heroics/tables.rb +2 -0
- data/lib/bcdice/loader.rb +11 -4
- data/lib/bcdice/normalize.rb +2 -0
- data/lib/bcdice/randomizer.rb +2 -0
- data/lib/bcdice/repl.rb +2 -0
- data/lib/bcdice/result.rb +2 -0
- data/lib/bcdice/translate.rb +2 -0
- data/lib/bcdice/user_defined_dice_table.rb +2 -0
- data/lib/bcdice/version.rb +3 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55126c604f27cdbc88666e1db1e0ba1a41e25231d9ba6b8f3a0af7f815635071
|
4
|
+
data.tar.gz: 2b7eff8967a7de735bdad238f4b2d9c6341ecb7722c08fbba56eed7664001769
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 138610ab3c08353af3fb34acec240e8857e83c989c058ed2b6faa26dbccbee852f03d15d358039c3b2cbec5073ff49339118d988eacb1be035ec11721883c6d5
|
7
|
+
data.tar.gz: 58fef97c6e5e515aaab831e5ed09c425f94c5396bdab7a6dcb52babbac9e9933003c7d268fb717b208e3d07cfaebbeef5aca84b23a061b78ea274fa89b9475aa
|
data/CHANGELOG.md
CHANGED
@@ -12,6 +12,10 @@
|
|
12
12
|
- アルケミア・ストラグル (AlchemiaStruggle): ViViさんありがとうっ! ([#341](https://github.com/bcdice/BCDice/pull/341))
|
13
13
|
- 呪印感染 (JuinKansen): 猫あきら。さん情報提供ありがとうっ! ([#345](https://github.com/bcdice/BCDice/pull/345))
|
14
14
|
- 韓国語版マギカロギア 마기카로기아 (MagicaLogia:Korean): Faithさんありがとうっ! ([#360](https://github.com/bcdice/BCDice/pull/360))
|
15
|
+
- 鋼鉄のユグドラシル (Yggdrasill): Doktorさん、Mid9658さんありがとうっ! ([#361](https://github.com/bcdice/BCDice/pull/361))
|
16
|
+
- Desperate Run TRPG (Desperate Run): えおふさんありがとうっ! ([#362](https://github.com/bcdice/BCDice/pull/362))
|
17
|
+
- ジキルとハイドとグリトグラ (JekyllAndHyde): えおふさんありがとうっ! ([#362](https://github.com/bcdice/BCDice/pull/362))
|
18
|
+
- 少年のための少女展爛会異聞 Infinite BabeL (InfiniteBabeL): 全裸さんありがとうっ! ([#367](https://github.com/bcdice/BCDice/pull/367))
|
15
19
|
|
16
20
|
### 追加機能
|
17
21
|
- ログ・ホライズンTRPG: LHZB1とLHZB2両方の財宝表をサポート、消耗表ロールを追加、財宝表ロールを追加、区切り文字を変更 ([#279](https://github.com/bcdice/BCDice/pull/279))
|
data/i18n/DetatokoSaga/ja_jp.yml
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
ja_jp:
|
2
2
|
DetatokoSaga:
|
3
3
|
DS:
|
4
|
-
input_options: "判定!
|
4
|
+
input_options: "判定! スキルランク:%{skill} フラグ:%{flag} 目標値:%{target}"
|
5
|
+
modifier: " 修正値:%{modifier}"
|
5
6
|
success: 目標値以上!【成功】
|
6
7
|
failure: 目標値未満…【失敗】
|
7
8
|
JD:
|
8
|
-
input_options: "判定!
|
9
|
+
input_options: "判定! スキルランク:%{skill} フラグ:%{flag}"
|
9
10
|
modifier: " 修正値:%{modifier}"
|
10
11
|
total_value: "判定値:%{total}"
|
11
12
|
less_than_flag: "、フラグ以下!【気力%{will}点減少】【判定値変更不可】"
|
data/i18n/DetatokoSaga/ko_kr.yml
CHANGED
data/lib/bcdice.rb
CHANGED
data/lib/bcdice/dice_table.rb
CHANGED
data/lib/bcdice/enum.rb
CHANGED
data/lib/bcdice/format.rb
CHANGED
data/lib/bcdice/game_system.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "bcdice/game_system/AFF2e"
|
2
4
|
require "bcdice/game_system/AceKillerGene"
|
3
5
|
require "bcdice/game_system/Airgetlamh"
|
@@ -42,6 +44,7 @@ require "bcdice/game_system/DarkDaysDrive"
|
|
42
44
|
require "bcdice/game_system/DarkSouls"
|
43
45
|
require "bcdice/game_system/DeadlineHeroes"
|
44
46
|
require "bcdice/game_system/DemonParasite"
|
47
|
+
require "bcdice/game_system/DesperateRun"
|
45
48
|
require "bcdice/game_system/DetatokoSaga"
|
46
49
|
require "bcdice/game_system/DetatokoSaga_Korean"
|
47
50
|
require "bcdice/game_system/DiceBot"
|
@@ -86,11 +89,13 @@ require "bcdice/game_system/Hieizan"
|
|
86
89
|
require "bcdice/game_system/HouraiGakuen"
|
87
90
|
require "bcdice/game_system/HuntersMoon"
|
88
91
|
require "bcdice/game_system/Illusio"
|
92
|
+
require "bcdice/game_system/InfiniteBabeL"
|
89
93
|
require "bcdice/game_system/InfiniteFantasia"
|
90
94
|
require "bcdice/game_system/Insane"
|
91
95
|
require "bcdice/game_system/Insane_Korean"
|
92
96
|
require "bcdice/game_system/IthaWenUa"
|
93
97
|
require "bcdice/game_system/JamesBond"
|
98
|
+
require "bcdice/game_system/JekyllAndHyde"
|
94
99
|
require "bcdice/game_system/JuinKansen"
|
95
100
|
require "bcdice/game_system/Kamigakari"
|
96
101
|
require "bcdice/game_system/Kamigakari_Korean"
|
@@ -193,4 +198,5 @@ require "bcdice/game_system/WitchQuest"
|
|
193
198
|
require "bcdice/game_system/WorldOfDarkness"
|
194
199
|
require "bcdice/game_system/YankeeYogSothoth"
|
195
200
|
require "bcdice/game_system/YearZeroEngine"
|
201
|
+
require "bcdice/game_system/Yggdrasill"
|
196
202
|
require "bcdice/game_system/ZettaiReido"
|
@@ -10,39 +10,52 @@ module BCDice
|
|
10
10
|
SORT_KEY = "あるけみあすとらくる"
|
11
11
|
|
12
12
|
HELP_MESSAGE = <<~MESSAGETEXT
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
13
|
+
■ ダイスロール( xAS )
|
14
|
+
xDをロールします。
|
15
|
+
例) 5AS
|
16
|
+
|
17
|
+
■ ダイスロール&最大になるようにピック( xASy )
|
18
|
+
xDをロールし、そこから最大になるようにy個をピックします。
|
19
|
+
例) 4AS3
|
20
|
+
|
21
|
+
■ ウルダイスの獲得( xUL )
|
22
|
+
xDのウルダイスを振り、出た出目の個数をNo.ごとにカウントします。
|
23
|
+
例) 6UL
|
24
|
+
|
25
|
+
■ 表
|
26
|
+
・奇跡の触媒
|
27
|
+
・エレメント (CELE, CElement)
|
28
|
+
・アルケミア (CALC, CAlchemia)
|
29
|
+
・インフォーマント (CINF, CInformant)
|
30
|
+
・イノセンス (CINN, CInnocence)
|
31
|
+
・アクワイヤード (CACQ, CAcquired)
|
32
|
+
・携行品
|
33
|
+
・Sサイズ (ARS, ArticleS)
|
34
|
+
・Mサイズ (ARM, ArticleM)
|
35
|
+
・Lサイズ (ARL, ArticleL)
|
36
|
+
・PC情報獲得表 (PCI, PCInformation)
|
37
|
+
・理由表 (REA, Reason)
|
38
|
+
・交流表 (ASS, Associate)
|
39
|
+
・接触のきっかけ表 (CON, Contact)
|
36
40
|
MESSAGETEXT
|
37
41
|
|
38
42
|
ROLL_REG = /^(\d+)AS(\d+)?$/i.freeze
|
39
43
|
|
40
|
-
register_prefix('
|
44
|
+
register_prefix('\d+AS', '\d+UL')
|
45
|
+
|
46
|
+
def initialize(command)
|
47
|
+
super(command)
|
48
|
+
|
49
|
+
@sort_add_dice = true # 加算ダイスのソート有
|
50
|
+
@sort_barabara_dice = true # バラバラダイスでソート有
|
51
|
+
@round_type = RoundType::CEIL # 割り算をした時の端数切り上げ
|
52
|
+
end
|
41
53
|
|
42
54
|
def eval_game_system_specific_command(command)
|
43
55
|
c = ALIAS[command] || command
|
44
56
|
|
45
57
|
try_roll_alchemia(c) ||
|
58
|
+
try_roll_uldice(c) ||
|
46
59
|
roll_tables(c, TABLES)
|
47
60
|
end
|
48
61
|
|
@@ -67,6 +80,27 @@ module BCDice
|
|
67
80
|
end
|
68
81
|
end
|
69
82
|
|
83
|
+
def try_roll_uldice(command)
|
84
|
+
match = /^(\d+)UL$/.match(command)
|
85
|
+
return nil unless match
|
86
|
+
|
87
|
+
roll_dice_count = match[1].to_i
|
88
|
+
dice_list = @randomizer.roll_barabara(roll_dice_count, 6).sort
|
89
|
+
dice_list_text = dice_list.join(",")
|
90
|
+
|
91
|
+
result = dice_list.group_by(&:itself)
|
92
|
+
.map { |k, v| "No.#{k}: #{v.size}個" }
|
93
|
+
.join(", ")
|
94
|
+
|
95
|
+
sequence = [
|
96
|
+
"(#{roll_dice_count}D6)",
|
97
|
+
"[#{dice_list_text}]",
|
98
|
+
result
|
99
|
+
]
|
100
|
+
|
101
|
+
sequence.join(" > ")
|
102
|
+
end
|
103
|
+
|
70
104
|
def roll_alchemia(roll_dice_count)
|
71
105
|
@randomizer.roll_barabara(roll_dice_count, 6)
|
72
106
|
end
|
@@ -1,16 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module BCDice
|
2
4
|
module GameSystem
|
3
5
|
class BBN < Base
|
4
6
|
# ダイスボットで使用するコマンドを配列で列挙する
|
5
7
|
register_prefix('\d+BN.*')
|
6
8
|
|
7
|
-
ID = 'BBN'
|
9
|
+
ID = 'BBN'
|
8
10
|
|
9
|
-
NAME = 'BBNTRPG'
|
11
|
+
NAME = 'BBNTRPG'
|
10
12
|
|
11
|
-
SORT_KEY = 'ひいひいえぬTRPG'
|
13
|
+
SORT_KEY = 'ひいひいえぬTRPG'
|
12
14
|
|
13
|
-
HELP_MESSAGE = <<~MESSAGETEXT
|
15
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
14
16
|
・判定(xBN±y>=z[c,f])
|
15
17
|
xD6の判定。クリティカル、ファンブルの自動判定を行います。
|
16
18
|
1Dのクリティカル値とファンブル値は1。2Dのクリティカル値とファンブル値は2。
|
@@ -30,6 +30,12 @@ module BCDice
|
|
30
30
|
|
31
31
|
register_prefix('[+-]?\d*CL([+-]\d+)?[@\d]*.*')
|
32
32
|
|
33
|
+
def initialize(command)
|
34
|
+
super(command)
|
35
|
+
|
36
|
+
@sides_implicit_d = 10
|
37
|
+
end
|
38
|
+
|
33
39
|
def eval_game_system_specific_command(command)
|
34
40
|
debug('eval_game_system_specific_command command', command)
|
35
41
|
|
@@ -41,10 +47,10 @@ module BCDice
|
|
41
47
|
base = (m[1] || 1).to_i
|
42
48
|
modifier1 = m[2].to_i
|
43
49
|
target = (m[4] || 6).to_i
|
44
|
-
|
50
|
+
critical_target = (m[6] || 1).to_i
|
45
51
|
modifier2 = m[7].to_i
|
46
52
|
diff = m[9].to_i
|
47
|
-
result =
|
53
|
+
result = check_roll(base, target, critical_target, diff, modifier1 + modifier2)
|
48
54
|
end
|
49
55
|
|
50
56
|
return nil if result.empty?
|
@@ -52,80 +58,42 @@ module BCDice
|
|
52
58
|
return "#{command} > #{result}"
|
53
59
|
end
|
54
60
|
|
55
|
-
def
|
56
|
-
|
57
|
-
|
58
|
-
base = getValue(base)
|
59
|
-
target = getValue(target)
|
60
|
-
criticalTarget = getValue(criticalTarget)
|
61
|
-
if base <= 0
|
62
|
-
criticalTarget = 0
|
61
|
+
def check_roll(base, target, critical_target, diff, modifier)
|
62
|
+
if base <= 0 # クリティカルしない1D
|
63
|
+
critical_target = 0
|
63
64
|
base = 1
|
64
65
|
end
|
65
66
|
|
66
67
|
target = 10 if target > 10
|
68
|
+
dice_list = @randomizer.roll_barabara(base, 10).sort
|
69
|
+
success_count = dice_list.count { |x| x <= target }
|
70
|
+
critical_count = dice_list.count { |x| x <= critical_target }
|
71
|
+
success_total = success_count + critical_count + modifier
|
67
72
|
|
68
|
-
|
69
|
-
|
70
|
-
diceList = @randomizer.roll_barabara(base, 10).sort
|
71
|
-
|
72
|
-
result += " > [#{diceList.join(',')}]#{Format.modifier(modifier)} > "
|
73
|
-
result += getRollResultString(diceList, target, criticalTarget, diff, modifier)
|
74
|
-
|
75
|
-
return result
|
76
|
-
end
|
77
|
-
|
78
|
-
def getRollResultString(diceList, target, criticalTarget, diff, modifier)
|
79
|
-
successCount, criticalCount = getSuccessInfo(diceList, target, criticalTarget)
|
80
|
-
|
81
|
-
successTotal = successCount + criticalCount + modifier
|
82
|
-
result = ""
|
73
|
+
mod_text = Format.modifier(modifier)
|
83
74
|
|
75
|
+
# (10d10+5)
|
76
|
+
result = "(#{base}d10#{mod_text}) > [#{dice_list.join(',')}]#{mod_text} > "
|
84
77
|
result += "判定値[#{target}] " unless target == 6
|
85
|
-
result += "クリティカル値[#{
|
86
|
-
result += "達成値[#{
|
87
|
-
|
88
|
-
# 出目がすべて判定値より大きければ固定値に関わらずファンブル
|
89
|
-
if successCount <= 0
|
90
|
-
result += " > ファンブル!"
|
91
|
-
return result
|
92
|
-
end
|
78
|
+
result += "クリティカル値[#{critical_target}] " unless critical_target == 1
|
79
|
+
result += "達成値[#{success_count}]"
|
93
80
|
|
94
|
-
|
95
|
-
result += Format.modifier(modifier)
|
96
|
-
result += "=[#{successTotal}]" if criticalCount > 0 || modifier != 0
|
81
|
+
return "#{result} > ファンブル!" if success_count <= 0
|
97
82
|
|
98
|
-
|
99
|
-
result +=
|
100
|
-
|
101
|
-
return result
|
102
|
-
end
|
103
|
-
|
104
|
-
def getSuccessResultText(successTotal, diff)
|
105
|
-
return successTotal.to_s if diff == 0
|
106
|
-
return "成功" if successTotal >= diff
|
107
|
-
|
108
|
-
return "失敗"
|
109
|
-
end
|
110
|
-
|
111
|
-
def getSuccessInfo(diceList, target, criticalTarget)
|
112
|
-
debug("checkSuccess diceList, target, criticalTarget", diceList, target, criticalTarget)
|
113
|
-
|
114
|
-
successCount = 0
|
115
|
-
criticalCount = 0
|
116
|
-
|
117
|
-
diceList.each do |dice|
|
118
|
-
successCount += 1 if dice <= target
|
119
|
-
criticalCount += 1 if dice <= criticalTarget
|
120
|
-
end
|
121
|
-
|
122
|
-
return successCount, criticalCount
|
123
|
-
end
|
83
|
+
result += "+クリティカル[#{critical_count}]" if critical_count > 0
|
84
|
+
result += mod_text
|
85
|
+
result += "=[#{success_total}]" if critical_count > 0 || modifier != 0
|
124
86
|
|
125
|
-
|
126
|
-
|
87
|
+
success_text =
|
88
|
+
if diff == 0
|
89
|
+
success_total.to_s
|
90
|
+
elsif success_total >= diff
|
91
|
+
"成功"
|
92
|
+
else
|
93
|
+
"失敗"
|
94
|
+
end
|
127
95
|
|
128
|
-
return
|
96
|
+
return "#{result} > #{success_text}"
|
129
97
|
end
|
130
98
|
end
|
131
99
|
end
|