bcdice 3.0.0.pre.rc.1 → 3.0.0.pre.rc.2
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 +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
|