bcdice 3.0.0.pre.alpha.2 → 3.0.0.pre.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- 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]
|