bcdice 3.0.0.pre.alpha.2 → 3.0.0.pre.rc.1
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 +6 -0
- data/README.md +1 -0
- data/i18n/KillDeathBusiness/ja_jp.yml +4 -4
- data/i18n/KillDeathBusiness/ko_kr.yml +5 -4
- data/i18n/MagicaLogia/ko_kr.yml +564 -0
- data/i18n/MonotoneMuseum/ja_jp.yml +37 -1
- data/i18n/StratoShout/ja_jp.yml +4 -4
- data/i18n/StratoShout/ko_kr.yml +4 -4
- data/lib/bcdice.rb +2 -1
- data/lib/bcdice/arithmetic.rb +22 -0
- data/lib/bcdice/arithmetic/node.rb +112 -43
- data/lib/bcdice/arithmetic/parser.rb +240 -0
- data/lib/bcdice/arithmetic_evaluator.rb +5 -156
- data/lib/bcdice/base.rb +8 -1
- data/lib/bcdice/command/lexer.rb +57 -0
- data/lib/bcdice/command/parsed.rb +65 -0
- data/lib/bcdice/command/parser.rb +489 -0
- data/lib/bcdice/common_command/add_dice.rb +1 -1
- data/lib/bcdice/common_command/add_dice/node.rb +142 -69
- data/lib/bcdice/common_command/add_dice/parser.rb +100 -83
- data/lib/bcdice/common_command/barabara_dice/node.rb +7 -1
- data/lib/bcdice/common_command/barabara_dice/result.rb +22 -0
- data/lib/bcdice/common_command/calc/node.rb +10 -1
- data/lib/bcdice/common_command/calc/parser.rb +1 -1
- data/lib/bcdice/common_command/d66_dice.rb +3 -1
- data/lib/bcdice/common_command/lexer.rb +2 -1
- data/lib/bcdice/common_command/upper_dice/parser.rb +118 -97
- data/lib/bcdice/common_command/version.rb +1 -1
- data/lib/bcdice/deprecated/checker.rb +6 -6
- data/lib/bcdice/dice_table.rb +1 -0
- data/lib/bcdice/dice_table/d66_parity_table.rb +34 -0
- data/lib/bcdice/game_system.rb +3 -0
- data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
- data/lib/bcdice/game_system/AlchemiaStruggle.rb +312 -0
- data/lib/bcdice/game_system/Alshard.rb +0 -1
- data/lib/bcdice/game_system/Amadeus.rb +1 -1
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -5
- data/lib/bcdice/game_system/BadLife.rb +1 -1
- data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -10
- data/lib/bcdice/game_system/BeginningIdol.rb +4 -4
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +4 -4
- data/lib/bcdice/game_system/BladeOfArcana.rb +4 -4
- data/lib/bcdice/game_system/BlindMythos.rb +12 -9
- data/lib/bcdice/game_system/BloodCrusade.rb +12 -38
- data/lib/bcdice/game_system/BloodMoon.rb +2 -2
- data/lib/bcdice/game_system/CardRanker.rb +23 -63
- data/lib/bcdice/game_system/ChaosFlare.rb +3 -3
- data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
- data/lib/bcdice/game_system/ColossalHunter.rb +2 -2
- data/lib/bcdice/game_system/Cthulhu7th.rb +2 -2
- data/lib/bcdice/game_system/CthulhuTech.rb +0 -1
- data/lib/bcdice/game_system/DarkBlaze.rb +4 -4
- data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
- data/lib/bcdice/game_system/DoubleCross.rb +60 -93
- data/lib/bcdice/game_system/EmbryoMachine.rb +5 -5
- data/lib/bcdice/game_system/EtrianOdysseySRS.rb +0 -1
- data/lib/bcdice/game_system/FilledWith.rb +3 -3
- data/lib/bcdice/game_system/FullMetalPanic.rb +0 -1
- data/lib/bcdice/game_system/GURPS.rb +1 -1
- data/lib/bcdice/game_system/Garako.rb +3 -2
- data/lib/bcdice/game_system/GardenOrder.rb +1 -1
- data/lib/bcdice/game_system/GehennaAn.rb +3 -3
- data/lib/bcdice/game_system/Gundog.rb +1 -1
- data/lib/bcdice/game_system/GundogRevised.rb +3 -3
- data/lib/bcdice/game_system/GundogZero.rb +2 -2
- data/lib/bcdice/game_system/GurpsFW.rb +2 -5
- data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
- data/lib/bcdice/game_system/HuntersMoon.rb +17 -110
- data/lib/bcdice/game_system/JuinKansen.rb +251 -0
- data/lib/bcdice/game_system/KanColle.rb +17 -166
- data/lib/bcdice/game_system/KillDeathBusiness.rb +35 -44
- data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +2 -1
- data/lib/bcdice/game_system/LogHorizon.rb +8 -8
- data/lib/bcdice/game_system/LostRoyal.rb +1 -3
- data/lib/bcdice/game_system/MagicaLogia.rb +3 -3
- data/lib/bcdice/game_system/MagicaLogia_Korean.rb +66 -0
- data/lib/bcdice/game_system/MeikyuDays.rb +1 -1
- data/lib/bcdice/game_system/MeikyuKingdom.rb +1 -1
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +1 -1
- data/lib/bcdice/game_system/MetalHeadExtream.rb +4 -4
- data/lib/bcdice/game_system/MetallicGuardian.rb +0 -1
- data/lib/bcdice/game_system/MonotoneMuseum.rb +3 -2
- data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +1 -1
- data/lib/bcdice/game_system/NSSQ.rb +2 -2
- data/lib/bcdice/game_system/Nechronica.rb +3 -3
- data/lib/bcdice/game_system/NightWizard.rb +1 -1
- data/lib/bcdice/game_system/NightmareHunterDeep.rb +3 -4
- data/lib/bcdice/game_system/NinjaSlayer.rb +26 -28
- data/lib/bcdice/game_system/OracleEngine.rb +13 -17
- data/lib/bcdice/game_system/Paradiso.rb +2 -2
- data/lib/bcdice/game_system/PhantasmAdventure.rb +0 -4
- data/lib/bcdice/game_system/Raisondetre.rb +1 -1
- data/lib/bcdice/game_system/RecordOfLodossWar.rb +2 -3
- data/lib/bcdice/game_system/RokumonSekai2.rb +2 -2
- data/lib/bcdice/game_system/RuinBreakers.rb +1 -1
- data/lib/bcdice/game_system/Ryutama.rb +1 -1
- data/lib/bcdice/game_system/SRS.rb +0 -5
- data/lib/bcdice/game_system/SamsaraBallad.rb +4 -3
- data/lib/bcdice/game_system/Satasupe.rb +22 -14
- data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +1 -1
- data/lib/bcdice/game_system/ShinobiGami.rb +75 -39
- data/lib/bcdice/game_system/StellarKnights.rb +1 -3
- data/lib/bcdice/game_system/SterileLife.rb +1 -1
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
- data/lib/bcdice/game_system/StratoShout.rb +10 -36
- data/lib/bcdice/game_system/StratoShout_Korean.rb +2 -1
- data/lib/bcdice/game_system/SwordWorld.rb +5 -5
- data/lib/bcdice/game_system/SwordWorld2_5.rb +1 -1
- data/lib/bcdice/game_system/TherapieSein.rb +2 -2
- data/lib/bcdice/game_system/TokumeiTenkousei.rb +2 -2
- data/lib/bcdice/game_system/Torg.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +4 -7
- data/lib/bcdice/game_system/TrinitySeven.rb +2 -2
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +6 -6
- data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -1
- data/lib/bcdice/game_system/Utakaze.rb +1 -1
- data/lib/bcdice/game_system/Warhammer.rb +6 -6
- data/lib/bcdice/game_system/Warhammer4.rb +9 -12
- data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
- data/lib/bcdice/normalize.rb +1 -1
- data/lib/bcdice/preprocessor.rb +12 -8
- data/lib/bcdice/randomizer.rb +12 -0
- data/lib/bcdice/repl.rb +1 -1
- data/lib/bcdice/result.rb +2 -0
- data/lib/bcdice/user_defined_dice_table.rb +26 -15
- data/lib/bcdice/version.rb +1 -1
- metadata +14 -25
- data/.editorconfig +0 -21
- data/.github/.codecov.yaml +0 -10
- data/.github/workflows/coverage.yaml +0 -21
- data/.github/workflows/lint.yaml +0 -13
- data/.github/workflows/test.yml +0 -20
- data/.gitignore +0 -14
- data/.rubocop.yml +0 -108
- data/.rubocop_todo.yml +0 -114
- data/Gemfile +0 -14
- data/ROADMAP.md +0 -30
- data/Rakefile +0 -152
- data/bcdice.gemspec +0 -29
- data/bin/repl.rb +0 -21
- data/docs/README.txt +0 -2028
- data/docs/dicebot_sort_key.md +0 -72
- data/docs/how_to_make_dicebot.md +0 -453
- data/lib/bcdice/command_parser.rb +0 -242
- data/lib/bcdice/common_command/add_dice/parser.y +0 -153
- data/lib/bcdice/common_command/barabara_dice/parser.y +0 -107
- data/lib/bcdice/common_command/calc/parser.y +0 -79
- data/lib/bcdice/common_command/reroll_dice/parser.y +0 -158
- data/lib/bcdice/common_command/upper_dice/parser.y +0 -143
|
@@ -15,7 +15,7 @@ module BCDice
|
|
|
15
15
|
# ダイスボットの使い方
|
|
16
16
|
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
|
17
17
|
・判定
|
|
18
|
-
JDx or JDx
|
|
18
|
+
JDx or JDx±y or JDx,z JDx#z or JDx±y,z JDx±y#z
|
|
19
19
|
(x=難易度、y=補正、z=ファンブル率(リスク))
|
|
20
20
|
・履歴表 (HST)
|
|
21
21
|
・願い事表 (-WT)
|
|
@@ -33,7 +33,7 @@ module BCDice
|
|
|
33
33
|
・ソウル放出表 (SOUL)
|
|
34
34
|
・汎用演出表 (STGT)
|
|
35
35
|
・ヘルスタイリスト罵倒表 (HSAT、HSATx) xに数字(1,2)で表を個別ロール
|
|
36
|
-
・指定特技ランダム決定表 (SKLT)、指定特技分野ランダム決定表 (SKLJ)
|
|
36
|
+
・指定特技ランダム決定表 (SKLT, RTTn nは分野番号)、指定特技分野ランダム決定表 (RCT, SKLJ)
|
|
37
37
|
・エキストラ表 (EXT、EXTx) xに数字(1,2,3,4)で表を個別ロール
|
|
38
38
|
・製作委員決定表 PCDT/実際どうだったのか表 OHT
|
|
39
39
|
・タスク表 ヘルライオン PCT1/ヘルクロウ PCT2/ヘルスネーク PCT3/
|
|
@@ -70,28 +70,32 @@ module BCDice
|
|
|
70
70
|
def eval_game_system_specific_command(command)
|
|
71
71
|
debug("eval_game_system_specific_command command", command)
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
text = translate("KillDeathBusiness.JD.name") + result
|
|
78
|
-
return text
|
|
73
|
+
if command.start_with?("JD")
|
|
74
|
+
judgeDice(command)
|
|
75
|
+
else
|
|
76
|
+
rollTableCommand(command)
|
|
79
77
|
end
|
|
80
|
-
|
|
81
|
-
# 判定以外なら表コマンドの処理に
|
|
82
|
-
return rollTableCommand(command)
|
|
83
78
|
end
|
|
84
79
|
|
|
85
|
-
|
|
80
|
+
private
|
|
86
81
|
|
|
87
82
|
def judgeDice(command)
|
|
88
|
-
|
|
83
|
+
fumble_match = /,(\d+)$/.match(command)
|
|
84
|
+
|
|
85
|
+
parser = Command::Parser.new(/JD\d+/, round_type: round_type)
|
|
86
|
+
.enable_critical
|
|
87
|
+
.enable_fumble
|
|
88
|
+
.restrict_cmp_op_to(nil)
|
|
89
|
+
cmd = parser.parse(fumble_match&.pre_match || command)
|
|
90
|
+
unless cmd
|
|
89
91
|
return nil
|
|
90
92
|
end
|
|
91
93
|
|
|
92
|
-
target =
|
|
93
|
-
modify =
|
|
94
|
-
fumble =
|
|
94
|
+
target = cmd.command.delete_prefix("JD").to_i
|
|
95
|
+
modify = cmd.modify_number
|
|
96
|
+
fumble = fumble_match ? fumble_match[1].to_i : cmd.fumble.to_i
|
|
97
|
+
|
|
98
|
+
command = judge_expr(target, modify, fumble)
|
|
95
99
|
|
|
96
100
|
result = ""
|
|
97
101
|
|
|
@@ -138,12 +142,19 @@ module BCDice
|
|
|
138
142
|
end
|
|
139
143
|
end
|
|
140
144
|
|
|
141
|
-
return result
|
|
145
|
+
return translate("KillDeathBusiness.JD.name") + result
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def judge_expr(target, modifier, fumble)
|
|
149
|
+
modifier = Format.modifier(modifier)
|
|
150
|
+
fumble = ",#{fumble}" if fumble > 0
|
|
151
|
+
|
|
152
|
+
"JD#{target}#{modifier}#{fumble}"
|
|
142
153
|
end
|
|
143
154
|
|
|
144
155
|
def rollTableCommand(command)
|
|
145
156
|
command = ALIAS[command] || command
|
|
146
|
-
result = roll_tables(command, self.class::TABLES)
|
|
157
|
+
result = roll_tables(command, self.class::TABLES) || self.class::RTT.roll_command(@randomizer, command)
|
|
147
158
|
return result if result
|
|
148
159
|
|
|
149
160
|
tableName = ""
|
|
@@ -168,10 +179,6 @@ module BCDice
|
|
|
168
179
|
when /^EXT(\d)?$/
|
|
169
180
|
type = Regexp.last_match(1).to_i
|
|
170
181
|
tableName, result, number = getExtraTableResult(type)
|
|
171
|
-
|
|
172
|
-
when /^SKL(T|J)$/
|
|
173
|
-
type = Regexp.last_match(1)
|
|
174
|
-
tableName, result, number = getSkillTableResult(type)
|
|
175
182
|
end
|
|
176
183
|
|
|
177
184
|
if result.empty?
|
|
@@ -284,24 +291,6 @@ module BCDice
|
|
|
284
291
|
return tableName, result, number
|
|
285
292
|
end
|
|
286
293
|
|
|
287
|
-
def getSkillTableResult(type)
|
|
288
|
-
skillTableFull = translate("KillDeathBusiness.SKLT.items")
|
|
289
|
-
skillTable, num1 = get_table_by_1d6(skillTableFull)
|
|
290
|
-
skillGroup, table = skillTable
|
|
291
|
-
if type == "T"
|
|
292
|
-
tableName = translate("KillDeathBusiness.SKLT.name")
|
|
293
|
-
skill, num2 = get_table_by_2d6(table)
|
|
294
|
-
result = "「#{skillGroup}」《#{skill}》"
|
|
295
|
-
number = "#{num1},#{num2}"
|
|
296
|
-
else
|
|
297
|
-
tableName = translate("KillDeathBusiness.SKLJ.name")
|
|
298
|
-
result = skillGroup
|
|
299
|
-
number = num1
|
|
300
|
-
end
|
|
301
|
-
|
|
302
|
-
return tableName, result, number
|
|
303
|
-
end
|
|
304
|
-
|
|
305
294
|
def getExtraTableResult(type)
|
|
306
295
|
tableName = translate("KillDeathBusiness.EXT.name")
|
|
307
296
|
extraTable1 = [
|
|
@@ -417,9 +406,14 @@ module BCDice
|
|
|
417
406
|
"UMSPT" => DiceTable::Table.from_i18n("KillDeathBusiness.table.UMSPT", locale),
|
|
418
407
|
}
|
|
419
408
|
end
|
|
409
|
+
|
|
410
|
+
def translate_rtt(locale)
|
|
411
|
+
DiceTable::SaiFicSkillTable.from_i18n("KillDeathBusiness.RTT", locale, rtt: "SKLT", rct: "SKLJ")
|
|
412
|
+
end
|
|
420
413
|
end
|
|
421
414
|
|
|
422
415
|
TABLES = translate_tables(:ja_jp)
|
|
416
|
+
RTT = translate_rtt(:ja_jp)
|
|
423
417
|
|
|
424
418
|
register_prefix(
|
|
425
419
|
'ST[1-2]?',
|
|
@@ -427,12 +421,9 @@ module BCDice
|
|
|
427
421
|
'EST', 'sErviceST',
|
|
428
422
|
'HSAT[1-2]?',
|
|
429
423
|
'EXT[1-4]?',
|
|
430
|
-
'SKLT',
|
|
431
|
-
'SKLJ',
|
|
432
424
|
'JD'
|
|
433
425
|
)
|
|
434
|
-
register_prefix(TABLES.keys)
|
|
435
|
-
register_prefix(ALIAS.keys)
|
|
426
|
+
register_prefix(TABLES.keys, register_prefix(ALIAS.keys), RTT.prefixes)
|
|
436
427
|
end
|
|
437
428
|
end
|
|
438
429
|
end
|
|
@@ -35,7 +35,7 @@ module BCDice
|
|
|
35
35
|
・소울 방출표 (SOUL)
|
|
36
36
|
・범용연출표 (STGT)
|
|
37
37
|
・헬 스타일리스트 매도표 (HSAT、HSATx) x에 숫자(1,2)로 표를 개별 롤
|
|
38
|
-
・지정특기 랜덤 결정표 (SKLT)、지정특기 분야 랜덤 결정표 (SKLJ)
|
|
38
|
+
・지정특기 랜덤 결정표 (RTT, SKLT)、지정특기 분야 랜덤 결정표 (RCT, SKLJ)
|
|
39
39
|
・엑스트라 표 (EXT、EXTx) x에 숫자(1,2,3,4)로 표를 개별 롤
|
|
40
40
|
・제작위원 결정표 PCDT/실제 어떠했는가 표 OHT
|
|
41
41
|
・태스크 표 헬 라이온 PCT1/헬 크로우 PCT2/헬 스네이크 PCT3/
|
|
@@ -52,6 +52,7 @@ module BCDice
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
TABLES = translate_tables(:ko_kr)
|
|
55
|
+
RTT = translate_rtt(:ko_kr)
|
|
55
56
|
end
|
|
56
57
|
end
|
|
57
58
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "bcdice/base"
|
|
4
|
-
require "bcdice/command_parser"
|
|
5
4
|
|
|
6
5
|
module BCDice
|
|
7
6
|
module GameSystem
|
|
@@ -115,7 +114,8 @@ module BCDice
|
|
|
115
114
|
private
|
|
116
115
|
|
|
117
116
|
def getCheckRollDiceCommandResult(command)
|
|
118
|
-
parser =
|
|
117
|
+
parser = Command::Parser.new(/\d+LH/, round_type: round_type)
|
|
118
|
+
.restrict_cmp_op_to(nil, :>=)
|
|
119
119
|
|
|
120
120
|
parsed = parser.parse(command)
|
|
121
121
|
unless parsed
|
|
@@ -160,7 +160,7 @@ module BCDice
|
|
|
160
160
|
|
|
161
161
|
# 消耗表ロール
|
|
162
162
|
def roll_consumption(command)
|
|
163
|
-
m = /^CT\d*([
|
|
163
|
+
m = /^CT\d*([+\-\d]+)?$/.match(command)
|
|
164
164
|
return nil unless m
|
|
165
165
|
|
|
166
166
|
modifier = ArithmeticEvaluator.eval(m[1])
|
|
@@ -180,7 +180,7 @@ module BCDice
|
|
|
180
180
|
|
|
181
181
|
### 消耗表 ###
|
|
182
182
|
def roll_consumption_table(command)
|
|
183
|
-
m = /(P|E|G|C|ES|CS)CT(\d+)?([
|
|
183
|
+
m = /(P|E|G|C|ES|CS)CT(\d+)?([+\-\d]+)?(?:\$(\d+))?/.match(command)
|
|
184
184
|
return nil unless m
|
|
185
185
|
|
|
186
186
|
table = construct_consumption_table(m[1])
|
|
@@ -244,7 +244,7 @@ module BCDice
|
|
|
244
244
|
|
|
245
245
|
# 財宝表ロール
|
|
246
246
|
def roll_treasure(command)
|
|
247
|
-
m = /^TRS(\d+)*([
|
|
247
|
+
m = /^TRS(\d+)*([+\-\d]+)?$/.match(command)
|
|
248
248
|
return nil unless m
|
|
249
249
|
|
|
250
250
|
character_rank = m[1].to_i
|
|
@@ -261,7 +261,7 @@ module BCDice
|
|
|
261
261
|
|
|
262
262
|
### 財宝表 ###
|
|
263
263
|
def roll_treasure_table(command)
|
|
264
|
-
m = /^([CMIHG]TRS)(\d+)*([
|
|
264
|
+
m = /^([CMIHG]TRS)(\d+)*([+\-\d]+)?(\$)?$/.match(command)
|
|
265
265
|
return nil unless m
|
|
266
266
|
|
|
267
267
|
type = m[1]
|
|
@@ -286,7 +286,7 @@ module BCDice
|
|
|
286
286
|
|
|
287
287
|
# 拡張ルール財宝表
|
|
288
288
|
def roll_treasure_table_b2(command)
|
|
289
|
-
m = /^([CMIO]TRSE)(\d+)*([
|
|
289
|
+
m = /^([CMIO]TRSE)(\d+)*([+\-\d]+)?(\$)?$/.match(command)
|
|
290
290
|
return nil unless m
|
|
291
291
|
|
|
292
292
|
type = m[1]
|
|
@@ -487,7 +487,7 @@ module BCDice
|
|
|
487
487
|
|
|
488
488
|
# イースタル探索表
|
|
489
489
|
def roll_eastal_exploration_table(command)
|
|
490
|
-
m = /ESTL(\d+)?([
|
|
490
|
+
m = /ESTL(\d+)?([+\-\d]+)?(?:\$(\d+))?/.match(command)
|
|
491
491
|
return nil unless m
|
|
492
492
|
return nil if m[1].nil? && m[2].nil? && m[3].nil?
|
|
493
493
|
|
|
@@ -98,9 +98,7 @@ module BCDice
|
|
|
98
98
|
sequences = (1...6).map do |start_key|
|
|
99
99
|
find_sequence_from_start_key(keys, start_key)
|
|
100
100
|
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
sequence
|
|
101
|
+
sequences.select { |x| x.size > 1 }.max { |a, b| a.size <=> b.size }
|
|
104
102
|
end
|
|
105
103
|
|
|
106
104
|
def find_sequence_from_start_key(keys, start_key)
|
|
@@ -81,7 +81,7 @@ module BCDice
|
|
|
81
81
|
|
|
82
82
|
def eval_game_system_specific_command(command)
|
|
83
83
|
self.class::SKILL_TABLE.roll_command(@randomizer, command) ||
|
|
84
|
-
roll_tables(command, TABLES)
|
|
84
|
+
roll_tables(command, self.class::TABLES)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
private
|
|
@@ -124,7 +124,7 @@ module BCDice
|
|
|
124
124
|
private
|
|
125
125
|
|
|
126
126
|
def expand(chosen, randomizer)
|
|
127
|
-
chosen.gsub(
|
|
127
|
+
chosen.gsub(/%{([a-z]+)}/) do
|
|
128
128
|
m = Regexp.last_match
|
|
129
129
|
type = m[1].to_sym
|
|
130
130
|
|
|
@@ -216,7 +216,7 @@ module BCDice
|
|
|
216
216
|
"MFT" => force_field_table,
|
|
217
217
|
"MLT" => alliance_table,
|
|
218
218
|
"BST" => DiceTable::ChainTable.new(
|
|
219
|
-
"
|
|
219
|
+
I18n.translate("MagicaLogia.tables.BST.name", raise: true, locale: locale),
|
|
220
220
|
"1D6",
|
|
221
221
|
[
|
|
222
222
|
inveterate_enemy_table,
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "bcdice/game_system/MagicaLogia"
|
|
4
|
+
|
|
5
|
+
module BCDice
|
|
6
|
+
module GameSystem
|
|
7
|
+
class MagicaLogia_Korean < MagicaLogia
|
|
8
|
+
# ゲームシステムの識別子
|
|
9
|
+
ID = "MagicaLogia:Korean"
|
|
10
|
+
|
|
11
|
+
# ゲームシステム名
|
|
12
|
+
NAME = "마기카로기아"
|
|
13
|
+
|
|
14
|
+
# ゲームシステム名の読みがな
|
|
15
|
+
SORT_KEY = "国際化:Korean:마기카로기아"
|
|
16
|
+
|
|
17
|
+
# ダイスボットの使い方
|
|
18
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
|
19
|
+
・판정
|
|
20
|
+
스페셜/펌블/성공/실패
|
|
21
|
+
・각종 표
|
|
22
|
+
경력 표 BGT/ 초기 앵커 표 DAT/ 운명 속성 표 FAT
|
|
23
|
+
소원 표 WIT/ 프라이즈 표 PT
|
|
24
|
+
시간의 흐름 표(구판) TPT/ 대형판 시간의 흐름 표 TPTB
|
|
25
|
+
사건 표 AT
|
|
26
|
+
펌블 표 FT/ 상태이상 표 WT
|
|
27
|
+
운명 변전 표 FCT
|
|
28
|
+
전형적 재액 TCT/물리계 재액 PCT/정신계 재액 MCT/광기계 재액 ICT
|
|
29
|
+
사회계 재액 SCT/초자연계 재액 XCT/불가사의계 재액 WCT/코믹계 재액 CCT
|
|
30
|
+
마법사 재액 MGCT
|
|
31
|
+
장면표 ST/대형판 장면표 STB
|
|
32
|
+
극한 환경 XEST/내면 세계 IWST/마법 도시 MCST
|
|
33
|
+
사후 세계 WDST/미궁 세계 LWST
|
|
34
|
+
마법 서가 MBST/마법 학원 MAST/크레도의 탑 TCST
|
|
35
|
+
병행 세계 PWST/종말 PAST/이세계 술집 GBST
|
|
36
|
+
별빛 SLST/구 도서관 OLST
|
|
37
|
+
세계 법칙 추가 표 WLAT/떠돌이 괴물 표 WMT
|
|
38
|
+
랜덤 분야 표 RCT
|
|
39
|
+
랜덤 특기 표 RTT
|
|
40
|
+
별 분야 랜덤 특기 표 RTS, RTT1
|
|
41
|
+
짐승 분야 랜덤 특기 표 RTB, RTT2
|
|
42
|
+
힘 분야 랜덤 특기 표 RTF, RTT3
|
|
43
|
+
노래 분야 랜덤 특기 표 RTP, RTT4
|
|
44
|
+
꿈 분야 랜덤 특기 표 RTD, RTT5
|
|
45
|
+
어둠 분야 랜덤 특기 표 RTN, RTT6
|
|
46
|
+
백지 비밀 표 BST/
|
|
47
|
+
숙적표 MIT/모략 표 MOT/인연 표 MAT
|
|
48
|
+
기인표 MUT/역장 표 MFT/동맹 표 MLT
|
|
49
|
+
낙화 표 FFT
|
|
50
|
+
그 후의 전개 표 FLT
|
|
51
|
+
・D66 다이스 있음.
|
|
52
|
+
INFO_MESSAGE_TEXT
|
|
53
|
+
|
|
54
|
+
register_prefix_from_super_class()
|
|
55
|
+
|
|
56
|
+
def initialize(command)
|
|
57
|
+
super(command)
|
|
58
|
+
|
|
59
|
+
@locale = :ko_kr
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
SKILL_TABLE = translate_skill_table(:ko_kr)
|
|
63
|
+
TABLES = translate_tables(:ko_kr, SKILL_TABLE)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -63,7 +63,7 @@ module BCDice
|
|
|
63
63
|
string = replace_text(string)
|
|
64
64
|
|
|
65
65
|
debug("checkRoll string", string)
|
|
66
|
-
unless (m = /(^|\s)S?((\d+)[rR]6([
|
|
66
|
+
unless (m = /(^|\s)S?((\d+)[rR]6([+\-\d]*)(([>=]+)(\d+))?)(\s|$)/i.match(string))
|
|
67
67
|
debug("not mutch")
|
|
68
68
|
return nil
|
|
69
69
|
end
|
|
@@ -24,7 +24,7 @@ module BCDice
|
|
|
24
24
|
・休憩表:才覚 TBT/魅力 CBT/探索 SBT/武勇 VBT
|
|
25
25
|
お祭り FBT/空振り EBT/全体 WBT/カップル LBT
|
|
26
26
|
・ハプニング表:才覚 THT/魅力 CHT/探索 SHT/武勇 VHT
|
|
27
|
-
・視察表 RT/情報収集表
|
|
27
|
+
・視察表 RT/情報収集表 IG/ランダムマップ選択表 RMS
|
|
28
28
|
・痛打表 CAT/致命傷表 FWT/戦闘ファンブル表 CFT
|
|
29
29
|
・道中表 TT/交渉表 NT/相場表 MPT/王国災厄表 KDT/王国変動表 KCT
|
|
30
30
|
・感情表 ET/好意表 FET/敵意表 HET
|
|
@@ -62,7 +62,7 @@ module BCDice
|
|
|
62
62
|
text =
|
|
63
63
|
case command.upcase
|
|
64
64
|
|
|
65
|
-
when %r{([AS])R(\d+)(([
|
|
65
|
+
when %r{([AS])R(\d+)(([*/]\d+)*)?(((@|A|L)\d+)*)(!M)?$}i
|
|
66
66
|
m = Regexp.last_match
|
|
67
67
|
|
|
68
68
|
type = m[1]
|
|
@@ -121,7 +121,7 @@ module BCDice
|
|
|
121
121
|
when 'LDC'
|
|
122
122
|
get_loserDestiny_chart
|
|
123
123
|
|
|
124
|
-
when /(
|
|
124
|
+
when /(W)ENC(\d+)?/i
|
|
125
125
|
locationType = Regexp.last_match(1)
|
|
126
126
|
roc = (Regexp.last_match(2) || 0).to_i
|
|
127
127
|
get_randomEncounter_table(locationType, roc)
|
|
@@ -904,9 +904,9 @@ module BCDice
|
|
|
904
904
|
# 端数が使いたいので、parren_killer未使用
|
|
905
905
|
def get_value(originalValue, calculateText)
|
|
906
906
|
result = originalValue.to_f
|
|
907
|
-
calculateArray = (calculateText || '').scan(%r{[
|
|
907
|
+
calculateArray = (calculateText || '').scan(%r{[*/]\d*}) # 修正値を分割して配列へ
|
|
908
908
|
calculateArray.each do |i| # 配列内ループで補正率を計算
|
|
909
|
-
i =~ %r{([
|
|
909
|
+
i =~ %r{([*/])(\d*)}i
|
|
910
910
|
result *= Regexp.last_match(2).to_i if Regexp.last_match(1) == '*'
|
|
911
911
|
result /= Regexp.last_match(2).to_i if Regexp.last_match(1) == '/'
|
|
912
912
|
end
|
|
@@ -26,7 +26,7 @@ module BCDice
|
|
|
26
26
|
自動成功、自動失敗、成功、失敗を自動表示します。
|
|
27
27
|
・各種表
|
|
28
28
|
・感情表 ET/感情表 2.0 ET2
|
|
29
|
-
・兆候表 OT/兆候表ver2.0 OT2
|
|
29
|
+
・兆候表 OT/兆候表ver2.0 OT2/兆候表ver3.0 OT3
|
|
30
30
|
・歪み表 DT/歪み表ver2.0 DT2/歪み表(野外) DTO/歪み表(海) DTS/歪み表(館・城) DTM
|
|
31
31
|
・世界歪曲表 WDT/世界歪曲表2.0 WDT2
|
|
32
32
|
・永劫消失表 EDT
|
|
@@ -59,7 +59,7 @@ module BCDice
|
|
|
59
59
|
private
|
|
60
60
|
|
|
61
61
|
def check_roll(command)
|
|
62
|
-
m = /^(\d+)D6([
|
|
62
|
+
m = /^(\d+)D6([+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i.match(command)
|
|
63
63
|
unless m
|
|
64
64
|
return nil
|
|
65
65
|
end
|
|
@@ -141,6 +141,7 @@ module BCDice
|
|
|
141
141
|
"DTS" => MMTable.from_i18n("MonotoneMuseum.table.DTS", locale),
|
|
142
142
|
"EDT" => DiceTable::Table.from_i18n("MonotoneMuseum.table.EDT", locale),
|
|
143
143
|
"DTM" => MMTable.from_i18n("MonotoneMuseum.table.DTM", locale),
|
|
144
|
+
"OT3" => DiceTable::Table.from_i18n("MonotoneMuseum.table.OT3", locale),
|
|
144
145
|
}
|
|
145
146
|
end
|
|
146
147
|
end
|
|
@@ -40,7 +40,7 @@ module BCDice
|
|
|
40
40
|
|
|
41
41
|
# 判定
|
|
42
42
|
def roll_sq(command)
|
|
43
|
-
m = /(\d+)SQ([
|
|
43
|
+
m = /(\d+)SQ([+\-\d]+)?/i.match(command)
|
|
44
44
|
return nil unless m
|
|
45
45
|
|
|
46
46
|
dice_count = m[1].to_i
|
|
@@ -116,7 +116,7 @@ module BCDice
|
|
|
116
116
|
|
|
117
117
|
# 採取ロール
|
|
118
118
|
def collecting_roll(command)
|
|
119
|
-
m = /([TSG])C([
|
|
119
|
+
m = /([TSG])C([+\-\d]+)?/i.match(command)
|
|
120
120
|
return nil unless m
|
|
121
121
|
|
|
122
122
|
type = m[1]
|