bcdice 3.1.3 → 3.2.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 +33 -2
- data/i18n/StellarKnights/ja_jp.yml +496 -0
- data/lib/bcdice/common_command/add_dice.rb +1 -1
- data/lib/bcdice/common_command/calc.rb +1 -1
- data/lib/bcdice/dice_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
- data/lib/bcdice/dice_table/d66_one_third_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/Ainecadette.rb +68 -0
- data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
- data/lib/bcdice/game_system/Alsetto.rb +1 -1
- data/lib/bcdice/game_system/AlterRaise.rb +2 -2
- data/lib/bcdice/game_system/AngelGear.rb +1 -1
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
- data/lib/bcdice/game_system/Arianrhod.rb +6 -8
- data/lib/bcdice/game_system/Avandner.rb +1 -1
- data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
- data/lib/bcdice/game_system/BattleTech.rb +1 -1
- data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
- data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
- data/lib/bcdice/game_system/BlindMythos.rb +1 -1
- data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
- data/lib/bcdice/game_system/BloodMoon.rb +9 -8
- data/lib/bcdice/game_system/CardRanker.rb +8 -7
- data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
- data/lib/bcdice/game_system/Chill.rb +10 -10
- data/lib/bcdice/game_system/Chill3.rb +9 -9
- data/lib/bcdice/game_system/CrashWorld.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu7th.rb +48 -10
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
- data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
- data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
- data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
- data/lib/bcdice/game_system/DemonParasite.rb +5 -13
- data/lib/bcdice/game_system/DesperateRun.rb +1 -1
- data/lib/bcdice/game_system/DoubleCross.rb +1 -1
- data/lib/bcdice/game_system/Dracurouge.rb +1 -1
- data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
- data/lib/bcdice/game_system/Elric.rb +18 -14
- data/lib/bcdice/game_system/Elysion.rb +1 -1
- data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
- data/lib/bcdice/game_system/Emoklore.rb +3 -3
- data/lib/bcdice/game_system/Fiasco.rb +1 -1
- data/lib/bcdice/game_system/FilledWith.rb +4 -0
- data/lib/bcdice/game_system/GURPS.rb +17 -28
- data/lib/bcdice/game_system/Garako.rb +1 -1
- data/lib/bcdice/game_system/GardenOrder.rb +1 -1
- data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
- data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
- data/lib/bcdice/game_system/Gorilla.rb +2 -8
- data/lib/bcdice/game_system/GranCrest.rb +18 -11
- data/lib/bcdice/game_system/Gundog.rb +9 -8
- data/lib/bcdice/game_system/GundogRevised.rb +10 -9
- data/lib/bcdice/game_system/GundogZero.rb +1 -1
- data/lib/bcdice/game_system/GurpsFW.rb +16 -16
- data/lib/bcdice/game_system/HarnMaster.rb +19 -26
- data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
- data/lib/bcdice/game_system/Hieizan.rb +12 -21
- data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
- data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
- data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
- data/lib/bcdice/game_system/Insane.rb +13 -20
- data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
- data/lib/bcdice/game_system/JamesBond.rb +10 -10
- data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
- data/lib/bcdice/game_system/Kamigakari.rb +1 -1
- data/lib/bcdice/game_system/KanColle.rb +4 -9
- data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
- data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
- data/lib/bcdice/game_system/KurayamiCrying.rb +55 -2
- data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
- data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +3 -3
- data/lib/bcdice/game_system/MetalHead.rb +12 -22
- data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
- data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
- data/lib/bcdice/game_system/Nechronica.rb +28 -21
- data/lib/bcdice/game_system/NinjaSlayer.rb +4 -4
- data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
- data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
- data/lib/bcdice/game_system/Paradiso.rb +1 -1
- data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
- data/lib/bcdice/game_system/Peekaboo.rb +4 -9
- data/lib/bcdice/game_system/Pendragon.rb +7 -7
- data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
- data/lib/bcdice/game_system/Postman.rb +1 -1
- data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
- data/lib/bcdice/game_system/Raisondetre.rb +2 -2
- data/lib/bcdice/game_system/Revulture.rb +123 -0
- data/lib/bcdice/game_system/RuneQuest.rb +8 -8
- data/lib/bcdice/game_system/Ryutama.rb +1 -1
- data/lib/bcdice/game_system/Satasupe.rb +1 -1
- data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
- data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
- data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
- data/lib/bcdice/game_system/Skynauts.rb +2 -2
- data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
- data/lib/bcdice/game_system/StellarKnights.rb +59 -696
- data/lib/bcdice/game_system/SterileLife.rb +1 -1
- data/lib/bcdice/game_system/StratoShout.rb +8 -16
- data/lib/bcdice/game_system/Strave.rb +1 -1
- data/lib/bcdice/game_system/SwordWorld.rb +16 -7
- data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -2
- data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -2
- data/lib/bcdice/game_system/TherapieSein.rb +1 -1
- data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
- data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
- data/lib/bcdice/game_system/Utakaze.rb +1 -1
- data/lib/bcdice/game_system/Villaciel.rb +1 -1
- data/lib/bcdice/game_system/WARPS.rb +11 -9
- data/lib/bcdice/game_system/WaresBlade.rb +4 -9
- data/lib/bcdice/game_system/Warhammer.rb +15 -6
- data/lib/bcdice/game_system/Warhammer4.rb +15 -11
- data/lib/bcdice/game_system/WitchQuest.rb +1 -1
- data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
- data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
- data/lib/bcdice/game_system/sword_world/rating_parsed.rb +4 -4
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
- data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
- data/lib/bcdice/repl.rb +1 -1
- data/lib/bcdice/result.rb +26 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +9 -4
|
@@ -37,7 +37,7 @@ module BCDice
|
|
|
37
37
|
・超未来の宇宙船内 INT
|
|
38
38
|
MESSAGETEXT
|
|
39
39
|
|
|
40
|
-
register_prefix('\d*DA
|
|
40
|
+
register_prefix('\d*DA', 'VPFT', 'VNFT', 'VNRT', 'AAFT', 'AST', 'RNST', 'RET', 'TRST', 'TRAT', 'TRMT', 'TROT', 'TET', 'ENT', 'CUT', 'NAT', 'INT')
|
|
41
41
|
def eval_game_system_specific_command(command) # ダイスロールコマンド
|
|
42
42
|
# 通常判定部分をgetJudgeResultコマンドに切り分け
|
|
43
43
|
output = getJudgeResult(command)
|
|
@@ -32,22 +32,14 @@ module BCDice
|
|
|
32
32
|
@d66_sort_type = D66SortType::ASC
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def
|
|
36
|
-
return
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
translate("StratoShout.critical")
|
|
44
|
-
elsif total >= target
|
|
45
|
-
translate("success")
|
|
46
|
-
else
|
|
47
|
-
translate("failure")
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
return " > #{result}"
|
|
35
|
+
def result_2d6(_total, dice_total, _dice_list, cmp_op, _target)
|
|
36
|
+
return nil unless cmp_op == :>=
|
|
37
|
+
|
|
38
|
+
if dice_total <= 2
|
|
39
|
+
Result.fumble(translate("StratoShout.fumble"))
|
|
40
|
+
elsif dice_total >= 12
|
|
41
|
+
Result.critical(translate("StratoShout.critical"))
|
|
42
|
+
end
|
|
51
43
|
end
|
|
52
44
|
|
|
53
45
|
def eval_game_system_specific_command(command)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "bcdice/base"
|
|
3
4
|
require "bcdice/game_system/sword_world/rating_parser"
|
|
4
5
|
|
|
5
6
|
module BCDice
|
|
@@ -9,7 +10,7 @@ module BCDice
|
|
|
9
10
|
ID = 'SwordWorld'
|
|
10
11
|
|
|
11
12
|
# ゲームシステム名
|
|
12
|
-
NAME = '
|
|
13
|
+
NAME = 'ソード・ワールドRPG'
|
|
13
14
|
|
|
14
15
|
# ゲームシステム名の読みがな
|
|
15
16
|
SORT_KEY = 'そおとわあると'
|
|
@@ -17,7 +18,7 @@ module BCDice
|
|
|
17
18
|
# ダイスボットの使い方
|
|
18
19
|
HELP_MESSAGE = "・SW レーティング表 (Kx[c]+m$f) (x:キー, c:クリティカル値, m:ボーナス, f:出目修正)\n"
|
|
19
20
|
|
|
20
|
-
register_prefix('H?K
|
|
21
|
+
register_prefix('H?K')
|
|
21
22
|
|
|
22
23
|
def initialize(command)
|
|
23
24
|
super(command)
|
|
@@ -125,10 +126,17 @@ module BCDice
|
|
|
125
126
|
break unless dice >= command.critical
|
|
126
127
|
end
|
|
127
128
|
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
result_text, critical, fumble = getResultText(
|
|
130
|
+
totalValue, command, diceResults, diceResultTotals,
|
|
131
|
+
rateResults, diceOnlyTotal, round
|
|
132
|
+
)
|
|
133
|
+
output += result_text
|
|
130
134
|
|
|
131
|
-
return
|
|
135
|
+
return Result.new.tap do |r|
|
|
136
|
+
r.text = output
|
|
137
|
+
r.critical = critical
|
|
138
|
+
r.fumble = fumble
|
|
139
|
+
end
|
|
132
140
|
end
|
|
133
141
|
|
|
134
142
|
def getSW2_0_RatingTable
|
|
@@ -301,6 +309,7 @@ module BCDice
|
|
|
301
309
|
# @param rateResults [Array<String>]
|
|
302
310
|
# @param dice_total [Integer]
|
|
303
311
|
# @param round [Integer]
|
|
312
|
+
# @return [Array(String, Boolean, Boolean)] output, critical, fumble
|
|
304
313
|
def getResultText(rating_total, command, diceResults, diceResultTotals,
|
|
305
314
|
rateResults, dice_total, round)
|
|
306
315
|
sequence = []
|
|
@@ -310,7 +319,7 @@ module BCDice
|
|
|
310
319
|
if dice_total <= 2
|
|
311
320
|
sequence.push(rateResults.join(','))
|
|
312
321
|
sequence.push("自動的失敗")
|
|
313
|
-
return sequence.join(" > ")
|
|
322
|
+
return sequence.join(" > "), false, true
|
|
314
323
|
end
|
|
315
324
|
|
|
316
325
|
# rate回数が1回で、修正値がない時には途中式と最終結果が一致するので、途中式を省略する
|
|
@@ -347,7 +356,7 @@ module BCDice
|
|
|
347
356
|
total_text = total.to_s
|
|
348
357
|
sequence.push(total_text)
|
|
349
358
|
|
|
350
|
-
return sequence.join(" > ")
|
|
359
|
+
return sequence.join(" > "), round > 1, false
|
|
351
360
|
end
|
|
352
361
|
end
|
|
353
362
|
end
|
|
@@ -12,7 +12,7 @@ module BCDice
|
|
|
12
12
|
ID = 'SwordWorld2.0'
|
|
13
13
|
|
|
14
14
|
# ゲームシステム名
|
|
15
|
-
NAME = '
|
|
15
|
+
NAME = 'ソード・ワールド2.0'
|
|
16
16
|
|
|
17
17
|
# ゲームシステム名の読みがな
|
|
18
18
|
SORT_KEY = 'そおとわあると2.0'
|
|
@@ -68,7 +68,7 @@ module BCDice
|
|
|
68
68
|
絡み効果表を出すことができます。
|
|
69
69
|
INFO_MESSAGE_TEXT
|
|
70
70
|
|
|
71
|
-
register_prefix('H?K
|
|
71
|
+
register_prefix('H?K', 'Gr', '2D6?@\d+', 'FT', 'TT')
|
|
72
72
|
|
|
73
73
|
def initialize(command)
|
|
74
74
|
super(command)
|
|
@@ -9,7 +9,7 @@ module BCDice
|
|
|
9
9
|
ID = 'SwordWorld2.5'
|
|
10
10
|
|
|
11
11
|
# ゲームシステム名
|
|
12
|
-
NAME = '
|
|
12
|
+
NAME = 'ソード・ワールド2.5'
|
|
13
13
|
|
|
14
14
|
# ゲームシステム名の読みがな
|
|
15
15
|
SORT_KEY = 'そおとわあると2.5'
|
|
@@ -76,7 +76,7 @@ module BCDice
|
|
|
76
76
|
アビスカース表を出すことができます。
|
|
77
77
|
INFO_MESSAGE_TEXT
|
|
78
78
|
|
|
79
|
-
register_prefix('H?K
|
|
79
|
+
register_prefix('H?K', 'Gr', '2D6?@\d+', 'FT', 'TT', 'Dru', 'ABT')
|
|
80
80
|
|
|
81
81
|
ABYSS_CURSE_TABLE = DiceTable::D66GridTable.new(
|
|
82
82
|
'アビスカース表', [
|
|
@@ -33,7 +33,7 @@ module BCDice
|
|
|
33
33
|
|
|
34
34
|
MESSAGETEXT
|
|
35
35
|
|
|
36
|
-
register_prefix('
|
|
36
|
+
register_prefix('\d+DM', 'TR', 'TRNAME')
|
|
37
37
|
|
|
38
38
|
def eval_game_system_specific_command(command) # スパゲッティなコードだけど許して!!! → 絶対に許さない。全力でリファクタリングした。
|
|
39
39
|
debug("eval_game_system_specific_command command", command)
|
|
@@ -133,11 +133,11 @@ module BCDice
|
|
|
133
133
|
return total, diceList
|
|
134
134
|
end
|
|
135
135
|
|
|
136
|
-
def
|
|
136
|
+
def result_1d100(_total, dice_total, _cmp_op, _target)
|
|
137
137
|
if dice_total >= 96
|
|
138
|
-
"
|
|
138
|
+
Result.fumble("ファンブル")
|
|
139
139
|
elsif dice_total <= 7
|
|
140
|
-
"
|
|
140
|
+
Result.critical("クリティカル")
|
|
141
141
|
end
|
|
142
142
|
end
|
|
143
143
|
|
|
@@ -47,7 +47,7 @@ module BCDice
|
|
|
47
47
|
・改良種表 IS
|
|
48
48
|
MESSAGETEXT
|
|
49
49
|
|
|
50
|
-
register_prefix('
|
|
50
|
+
register_prefix('\d+VBS(>=\d+)?', '\d+VF', '\d+VM', '\d+VG', 'PJ[VA]?', 'PQ[VA]?', 'AC', 'MM([IAD]|V[VA]?)', 'F[LRWGBCS]', 'IP[VA]?', 'EP[VA]?', 'MP', 'IS')
|
|
51
51
|
|
|
52
52
|
def initialize(command)
|
|
53
53
|
super(command)
|
|
@@ -15,17 +15,19 @@ module BCDice
|
|
|
15
15
|
# ダイスボットの使い方
|
|
16
16
|
HELP_MESSAGE = "失敗、成功度の自動判定を行います。\n"
|
|
17
17
|
|
|
18
|
-
def
|
|
18
|
+
def result_2d6(total, dice_total, _dice_list, cmp_op, target)
|
|
19
|
+
return nil unless cmp_op == :<=
|
|
20
|
+
|
|
19
21
|
if dice_total <= 2
|
|
20
|
-
"
|
|
22
|
+
Result.critical("クリティカル")
|
|
21
23
|
elsif dice_total >= 12
|
|
22
|
-
"
|
|
23
|
-
elsif
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
Result.fumble("ファンブル")
|
|
25
|
+
elsif target == "?"
|
|
26
|
+
Result.nothing
|
|
27
|
+
elsif total <= target
|
|
28
|
+
Result.success("#{target - total}成功")
|
|
29
|
+
else
|
|
30
|
+
Result.failure("失敗")
|
|
29
31
|
end
|
|
30
32
|
end
|
|
31
33
|
end
|
|
@@ -15,18 +15,13 @@ module BCDice
|
|
|
15
15
|
# ダイスボットの使い方
|
|
16
16
|
HELP_MESSAGE = "nD10>=m 方式の判定で成否、完全成功、完全失敗を自動判定します。\n"
|
|
17
17
|
|
|
18
|
-
def
|
|
19
|
-
return
|
|
20
|
-
return '' unless cmp_op == :>=
|
|
18
|
+
def result_nd10(_total, _dice_total, dice_list, cmp_op, _target)
|
|
19
|
+
return nil unless cmp_op == :>=
|
|
21
20
|
|
|
22
21
|
if dice_list.count(10) == dice_list.size
|
|
23
|
-
|
|
22
|
+
Result.critical("完全成功")
|
|
24
23
|
elsif dice_list.count(1) == dice_list.size
|
|
25
|
-
|
|
26
|
-
elsif total >= target
|
|
27
|
-
' > 成功'
|
|
28
|
-
else
|
|
29
|
-
' > 失敗'
|
|
24
|
+
Result.fumble("絶対失敗")
|
|
30
25
|
end
|
|
31
26
|
end
|
|
32
27
|
end
|
|
@@ -51,14 +51,23 @@ module BCDice
|
|
|
51
51
|
return output_msg
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
def
|
|
55
|
-
return
|
|
56
|
-
return
|
|
54
|
+
def result_1d100(total, _dice_total, cmp_op, target)
|
|
55
|
+
return Result.nothing if target == '?'
|
|
56
|
+
return nil unless cmp_op == :<=
|
|
57
57
|
|
|
58
58
|
if total <= target
|
|
59
|
-
"
|
|
59
|
+
Result.success("成功(成功度#{(target - total) / 10})")
|
|
60
60
|
else
|
|
61
|
-
"
|
|
61
|
+
Result.failure("失敗(失敗度#{(total - target) / 10})")
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def result_1d100_text(total, dice_total, cmp_op, target)
|
|
66
|
+
result = result_1d100(total, dice_total, cmp_op, target)&.text
|
|
67
|
+
if result.nil?
|
|
68
|
+
""
|
|
69
|
+
else
|
|
70
|
+
" > #{result}"
|
|
62
71
|
end
|
|
63
72
|
end
|
|
64
73
|
|
|
@@ -322,7 +331,7 @@ module BCDice
|
|
|
322
331
|
total_n = @randomizer.roll_once(100)
|
|
323
332
|
|
|
324
333
|
output = "(#{string}) > #{total_n}"
|
|
325
|
-
output +=
|
|
334
|
+
output += result_1d100_text(total_n, total_n, :<=, diff)
|
|
326
335
|
|
|
327
336
|
pos_num = (total_n % 10) * 10 + (total_n / 10).to_i
|
|
328
337
|
pos_num = 100 if total_n >= 100
|
|
@@ -28,7 +28,7 @@ module BCDice
|
|
|
28
28
|
|
|
29
29
|
■ 命中判定 (WHx)
|
|
30
30
|
"WH(命中値)"の形で指定します。
|
|
31
|
-
|
|
31
|
+
命中判定を行って、クリティカルかファンブルでなければ部位も表示します。
|
|
32
32
|
例)wh60 wh(43-20)
|
|
33
33
|
INFO_MESSAGE_TEXT
|
|
34
34
|
|
|
@@ -44,9 +44,9 @@ module BCDice
|
|
|
44
44
|
roll_critical_table(command) || roll_attack(command) || roll_tables(command, TABLES)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
def
|
|
48
|
-
return
|
|
49
|
-
return
|
|
47
|
+
def result_1d100(total, _dice_total, cmp_op, target)
|
|
48
|
+
return Result.nothing if target == '?'
|
|
49
|
+
return nil unless cmp_op == :<=
|
|
50
50
|
|
|
51
51
|
t10 = total / 10
|
|
52
52
|
d10 = target / 10
|
|
@@ -62,18 +62,19 @@ module BCDice
|
|
|
62
62
|
|
|
63
63
|
result =
|
|
64
64
|
if total <= 5
|
|
65
|
-
"自動成功"
|
|
65
|
+
Result.success("自動成功")
|
|
66
66
|
elsif total >= 96
|
|
67
|
-
"自動失敗"
|
|
67
|
+
Result.failure("自動失敗")
|
|
68
68
|
elsif total <= target
|
|
69
|
-
"成功"
|
|
69
|
+
Result.success("成功")
|
|
70
70
|
else
|
|
71
|
-
"失敗"
|
|
71
|
+
Result.failure("失敗")
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
sl_text = format("(SL%+d)", sl)
|
|
75
|
+
result.text += "#{sl_text} > #{result_detail(sl, total, target)}"
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
return result
|
|
77
78
|
end
|
|
78
79
|
|
|
79
80
|
private
|
|
@@ -249,7 +250,7 @@ module BCDice
|
|
|
249
250
|
|
|
250
251
|
target_number = m[1].to_i
|
|
251
252
|
total = @randomizer.roll_once(100)
|
|
252
|
-
result =
|
|
253
|
+
result = result_1d100(total, total, :<=, target_number)&.text
|
|
253
254
|
|
|
254
255
|
sequence = [
|
|
255
256
|
"(#{command})",
|
|
@@ -266,6 +267,9 @@ module BCDice
|
|
|
266
267
|
if (total > target_number) || (total > 95) # 自動失敗時のファンブル処理も
|
|
267
268
|
if ones == tens
|
|
268
269
|
"ファンブル"
|
|
270
|
+
else
|
|
271
|
+
# 一の位と十の位を入れ替えて参照する
|
|
272
|
+
"(#{HIT_PARTS_TABLE.fetch(merge_d100(ones, tens)).content})"
|
|
269
273
|
end
|
|
270
274
|
elsif ones == tens
|
|
271
275
|
"クリティカル"
|
|
@@ -317,7 +321,7 @@ module BCDice
|
|
|
317
321
|
[61..70, '君はひどく躓きバランスを回復するのに手間取る。次の「移動」を失う。'],
|
|
318
322
|
[71..80, '君は武器を取り回しを誤る。次の「アクション」を失う。'],
|
|
319
323
|
[81..90, '君は筋を違えるか、足首をひねってしまう。「筋断裂(軽度)」の負傷を得る。「致命的負傷」としてカウントされる。'],
|
|
320
|
-
[91..100, '君は射程内のランダムな味方を攻撃してしまう。命中判定の出目の1の位をSL
|
|
324
|
+
[91..100, '君は射程内のランダムな味方を攻撃してしまう。命中判定の出目の1の位をSLとして用いること。攻撃可能な味方が居ない場合は、自己を攻撃してしまい「朦朧状態」1つを得る。'],
|
|
321
325
|
]
|
|
322
326
|
)
|
|
323
327
|
}.freeze
|
|
@@ -49,18 +49,13 @@ module BCDice
|
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
# ゲーム別成功度判定(2D6)
|
|
52
|
-
def
|
|
53
|
-
return
|
|
54
|
-
return '' unless cmp_op == :>=
|
|
52
|
+
def result_2d6(_total, dice_total, _dice_list, cmp_op, _target)
|
|
53
|
+
return nil unless cmp_op == :>=
|
|
55
54
|
|
|
56
55
|
if dice_total <= 2
|
|
57
|
-
"
|
|
56
|
+
Result.fumble("ファンブル(判定失敗。ファンブル表(FT)を振ること)")
|
|
58
57
|
elsif dice_total >= 12
|
|
59
|
-
"
|
|
60
|
-
elsif total >= target
|
|
61
|
-
" > 成功"
|
|
62
|
-
else
|
|
63
|
-
" > 失敗"
|
|
58
|
+
Result.critical("スペシャル(判定成功。【テンション】が1段階上昇)")
|
|
64
59
|
end
|
|
65
60
|
end
|
|
66
61
|
|
|
@@ -112,7 +112,7 @@ module BCDice
|
|
|
112
112
|
[3, "あなたの国は、英雄が用いた武具の伝説が残っている。レア武具アイテムの中からランダムに1種を選ぶ。そのレアアイテムのレシピを持っている。【王宮】のある部屋に、そのレア武具アイテムの名前を記入すること。"],
|
|
113
113
|
[4, "あなたの国は、有名な職人たちが揃う工業国家である。コモンアイテムを作成するとき、それらのアイテムを作成するための必要国力が1点高いものとして扱う。"],
|
|
114
114
|
[5, "あなたの国は、質実剛健な兵士たちが揃っている。その国のキャラクターは、《配下》最大値が1人上昇する(最大2人まで上昇する。3回目以降は振り直すこと)。"],
|
|
115
|
-
[6, "あなたの国は、過去に列強に臣従し、いまでも友好的な関係を築いている。(1D6)を振ること。1ならダイナマイト帝国、2なら千年王朝、3ならメトロ汗国、4
|
|
115
|
+
[6, "あなたの国は、過去に列強に臣従し、いまでも友好的な関係を築いている。(1D6)を振ること。1ならダイナマイト帝国、2なら千年王朝、3ならメトロ汗国、4ならハグルマ資本主義神聖共和国との関係が「友好」になる。5や6なら振り直すこと。また、その列強の列強系施設1軒を獲得する。"],
|
|
116
116
|
]
|
|
117
117
|
return get_table_by_number(num, table)
|
|
118
118
|
end
|
|
@@ -57,22 +57,22 @@ module BCDice
|
|
|
57
57
|
return @first_modify || 0
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
# @return
|
|
60
|
+
# @return [Integer]
|
|
61
61
|
def first_to
|
|
62
62
|
return @first_to || 0
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
# @return
|
|
65
|
+
# @return [Integer]
|
|
66
66
|
def rateup
|
|
67
67
|
return @rateup || 0
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
# @return
|
|
70
|
+
# @return [Integer]
|
|
71
71
|
def kept_modify
|
|
72
72
|
return @kept_modify || 0
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
# @return
|
|
75
|
+
# @return [Integer]
|
|
76
76
|
def modifier_after_half
|
|
77
77
|
return @modifier_after_half || 0
|
|
78
78
|
end
|