bcdice 3.1.3 → 3.5.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 +186 -76
- data/README.md +3 -2
- data/i18n/BeginningIdol/ja_jp.yml +2806 -0
- data/i18n/BeginningIdol/ko_kr.yml +1400 -0
- data/i18n/Cthulhu/zh_hans.yml +11 -0
- data/i18n/KillDeathBusiness/ja_jp.yml +1 -1
- data/i18n/MagicaLogia/ja_jp.yml +1 -1
- data/i18n/MagicaLogia/zh_hans.yml +564 -0
- data/i18n/MonotoneMuseum/ko_kr.yml +526 -53
- data/i18n/StellarKnights/ja_jp.yml +498 -0
- data/i18n/StellarKnights/ko_kr.yml +498 -0
- data/i18n/zh_hans.yml +7 -0
- data/lib/bcdice/command/parsed.rb +11 -3
- data/lib/bcdice/command/parser.rb +179 -100
- data/lib/bcdice/common_command/add_dice.rb +1 -1
- data/lib/bcdice/common_command/barabara_dice/node.rb +2 -2
- data/lib/bcdice/common_command/barabara_dice/result.rb +6 -0
- data/lib/bcdice/common_command/calc.rb +1 -1
- data/lib/bcdice/common_command/choice.rb +82 -7
- data/lib/bcdice/common_command/tally_dice/node.rb +135 -0
- data/lib/bcdice/common_command/tally_dice/parser.rb +302 -0
- data/lib/bcdice/common_command/tally_dice.rb +19 -0
- data/lib/bcdice/common_command.rb +2 -0
- data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
- data/lib/bcdice/dice_table/d66_left_range_table.rb +29 -0
- data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
- data/lib/bcdice/dice_table/d66_table.rb +5 -1
- data/lib/bcdice/dice_table.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/Amadeus.rb +110 -93
- data/lib/bcdice/game_system/AngelGear.rb +10 -5
- data/lib/bcdice/game_system/AnimaAnimus.rb +16 -9
- data/lib/bcdice/game_system/Aoharubaan.rb +91 -0
- data/lib/bcdice/game_system/Arianrhod.rb +6 -8
- data/lib/bcdice/game_system/AssaultEngine.rb +91 -0
- data/lib/bcdice/game_system/Avandner.rb +1 -1
- data/lib/bcdice/game_system/BadLife.rb +264 -289
- data/lib/bcdice/game_system/Bakenokawa.rb +244 -0
- data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
- data/lib/bcdice/game_system/BattleTech.rb +109 -28
- data/lib/bcdice/game_system/BeastBindTrinity.rb +28 -12
- data/lib/bcdice/game_system/BeginningIdol.rb +118 -2392
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +10 -2312
- data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
- data/lib/bcdice/game_system/BlindMythos.rb +39 -38
- 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/CastleInGray.rb +133 -0
- 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/CodeLayerd.rb +39 -39
- data/lib/bcdice/game_system/ColossalHunter.rb +34 -47
- data/lib/bcdice/game_system/CrashWorld.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu.rb +3 -3
- data/lib/bcdice/game_system/Cthulhu7th.rb +56 -18
- 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/Cthulhu_SimplifiedChinese.rb +60 -0
- 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 +11 -10
- 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 +8 -1
- data/lib/bcdice/game_system/Dracurouge.rb +3 -2
- 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 +25 -20
- data/lib/bcdice/game_system/FateCoreSystem.rb +117 -0
- data/lib/bcdice/game_system/Fiasco.rb +1 -1
- data/lib/bcdice/game_system/FilledWith.rb +4 -0
- data/lib/bcdice/game_system/FutariSousa.rb +12 -10
- 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 +12 -7
- 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 +189 -417
- 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/Irisbane.rb +154 -0
- 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/Karukami.rb +84 -0
- data/lib/bcdice/game_system/KemonoNoMori.rb +26 -39
- data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
- data/lib/bcdice/game_system/KurayamiCrying.rb +142 -3
- data/lib/bcdice/game_system/LiveraDoll.rb +254 -304
- data/lib/bcdice/game_system/LogHorizon.rb +10 -7
- data/lib/bcdice/game_system/MagicaLogia_SimplifiedChinese.rb +66 -0
- 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 +4 -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/MonotoneMuseum_Korean.rb +4 -4
- data/lib/bcdice/game_system/Nechronica.rb +63 -90
- data/lib/bcdice/game_system/NinjaSlayer.rb +6 -7
- 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/PersonaO.rb +86 -0
- 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/SRS.rb +17 -16
- data/lib/bcdice/game_system/SamsaraBallad.rb +38 -11
- data/lib/bcdice/game_system/Satasupe.rb +32 -32
- data/lib/bcdice/game_system/ScreamHighSchool.rb +5 -5
- 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 +103 -142
- data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
- data/lib/bcdice/game_system/StarryDolls.rb +318 -0
- data/lib/bcdice/game_system/SteamPunkers.rb +25 -7
- data/lib/bcdice/game_system/StellarKnights.rb +85 -706
- data/lib/bcdice/game_system/StellarKnights_Korean.rb +79 -0
- data/lib/bcdice/game_system/{SterileLife.rb → StellarLife.rb} +162 -226
- 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 +22 -9
- data/lib/bcdice/game_system/SwordWorld2_0.rb +22 -7
- data/lib/bcdice/game_system/SwordWorld2_5.rb +8 -2
- data/lib/bcdice/game_system/TalesFromTheLoop.rb +83 -0
- data/lib/bcdice/game_system/TherapieSein.rb +1 -1
- data/lib/bcdice/game_system/TokumeiTenkousei.rb +4 -3
- data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +2 -2
- data/lib/bcdice/game_system/ToshiakiHolyGrailWar.rb +92 -0
- data/lib/bcdice/game_system/TrinitySeven.rb +279 -280
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
- data/lib/bcdice/game_system/Utakaze.rb +53 -48
- 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/YearZeroEngine.rb +40 -19
- data/lib/bcdice/game_system/Yggdrasill.rb +1 -1
- data/lib/bcdice/game_system/ZettaiReido.rb +20 -25
- data/lib/bcdice/game_system/beginning_idol/accessories_table.rb +31 -0
- data/lib/bcdice/game_system/beginning_idol/bad_status_table.rb +43 -0
- data/lib/bcdice/game_system/beginning_idol/chain_d66_table.rb +29 -0
- data/lib/bcdice/game_system/beginning_idol/chain_table.rb +37 -0
- data/lib/bcdice/game_system/beginning_idol/costume_table.rb +37 -0
- data/lib/bcdice/game_system/beginning_idol/d6_twice_table.rb +36 -0
- data/lib/bcdice/game_system/beginning_idol/item_table.rb +51 -0
- data/lib/bcdice/game_system/beginning_idol/my_skill_name_table.rb +44 -0
- data/lib/bcdice/game_system/beginning_idol/random_event_table.rb +31 -0
- data/lib/bcdice/game_system/beginning_idol/skill_table.rb +63 -0
- data/lib/bcdice/game_system/beginning_idol/table.rb +193 -0
- data/lib/bcdice/game_system/beginning_idol/with_abnormality.rb +74 -0
- data/lib/bcdice/game_system/beginning_idol/work_table.rb +57 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
- data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +4 -4
- data/lib/bcdice/game_system/sword_world/rating_parsed.rb +50 -7
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +148 -107
- data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
- data/lib/bcdice/game_system.rb +18 -1
- data/lib/bcdice/repl.rb +1 -1
- data/lib/bcdice/result.rb +26 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +48 -6
|
@@ -49,7 +49,7 @@ module BCDice
|
|
|
49
49
|
・D66ダイスあり
|
|
50
50
|
INFO_MESSAGE_TEXT
|
|
51
51
|
|
|
52
|
-
register_prefix('\d+R', 'SR
|
|
52
|
+
register_prefix('\d+R', 'SR', 'TAGT', 'GETSST', 'NPCT', TABLES.keys, ALIASES.keys)
|
|
53
53
|
|
|
54
54
|
CREATE_ARMS_STRUCT = Struct.new(:base_parts, :accessory_parts, :parts_effect, :hit, :damage, :life, :kutibeni, :kiba, :abilities)
|
|
55
55
|
|
|
@@ -64,7 +64,7 @@ module BCDice
|
|
|
64
64
|
debug("eval_game_system_specific_command begin string", command)
|
|
65
65
|
|
|
66
66
|
result = checkRoll(command)
|
|
67
|
-
return result unless result.
|
|
67
|
+
return result unless result.nil?
|
|
68
68
|
|
|
69
69
|
debug("判定ロールではなかった")
|
|
70
70
|
|
|
@@ -81,13 +81,13 @@ module BCDice
|
|
|
81
81
|
debug("checkRoll begin string", string)
|
|
82
82
|
|
|
83
83
|
m = /^(\d+)R>=(\d+)(\[(\d+)?(,|,\d+)?(,\d+(S)?)?\])?$/i.match(string)
|
|
84
|
-
return
|
|
84
|
+
return nil unless m
|
|
85
85
|
|
|
86
86
|
roll_times = m[1].to_i
|
|
87
87
|
target = m[2].to_i
|
|
88
88
|
params = m[3]
|
|
89
89
|
|
|
90
|
-
min_suc, fumble, critical,
|
|
90
|
+
min_suc, fumble, critical, is_critical_stop = get_roll_params(params)
|
|
91
91
|
|
|
92
92
|
result = ""
|
|
93
93
|
|
|
@@ -104,8 +104,8 @@ module BCDice
|
|
|
104
104
|
end
|
|
105
105
|
|
|
106
106
|
if fumble >= 6
|
|
107
|
-
result += "#{
|
|
108
|
-
return result
|
|
107
|
+
result += "#{get_judge_info(target, fumble, critical)} > ファンブル率が6を超えたため自動失敗!"
|
|
108
|
+
return Result.failure(result)
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
if target < 5
|
|
@@ -113,23 +113,30 @@ module BCDice
|
|
|
113
113
|
target = 5
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
-
dice_str, total_suc,
|
|
116
|
+
dice_str, total_suc, is_critical, is_fumble = check_roll_loop(roll_times, min_suc, target, critical, fumble, is_critical_stop)
|
|
117
117
|
|
|
118
|
-
result += "#{
|
|
118
|
+
result += "#{get_judge_info(target, fumble, critical)} > #{dice_str} > 成功度#{total_suc}"
|
|
119
119
|
|
|
120
|
-
if
|
|
120
|
+
if is_fumble
|
|
121
121
|
result += " > ファンブル"
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
if
|
|
124
|
+
if is_critical && (total_suc > 0)
|
|
125
125
|
result += " > 必殺発動可能!"
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
debug('checkRoll result result', result)
|
|
129
|
-
|
|
129
|
+
|
|
130
|
+
return Result.new.tap do |r|
|
|
131
|
+
r.text = result
|
|
132
|
+
r.success = !is_fumble && min_suc > 0 && total_suc >= min_suc
|
|
133
|
+
r.failure = is_fumble
|
|
134
|
+
r.critical = is_critical
|
|
135
|
+
r.fumble = is_fumble
|
|
136
|
+
end
|
|
130
137
|
end
|
|
131
138
|
|
|
132
|
-
def
|
|
139
|
+
def get_roll_params(params)
|
|
133
140
|
min_suc = 0
|
|
134
141
|
fumble = 1
|
|
135
142
|
critical = 13
|
|
@@ -154,19 +161,14 @@ module BCDice
|
|
|
154
161
|
return min_suc, fumble, critical, isCriticalStop
|
|
155
162
|
end
|
|
156
163
|
|
|
157
|
-
def
|
|
158
|
-
"【難易度#{target}、ファンブル率#{fumble}
|
|
164
|
+
def get_judge_info(target, fumble, critical)
|
|
165
|
+
return "【難易度#{target}、ファンブル率#{fumble}、必殺#{critical == 13 ? 'なし' : critical.to_s}】"
|
|
159
166
|
end
|
|
160
167
|
|
|
161
|
-
def
|
|
162
|
-
criticalString = (critical == 13 ? "なし" : critical.to_s)
|
|
163
|
-
return "、必殺#{criticalString}"
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def checkRollLoop(roll_times, min_suc, target, critical, fumble, isCriticalStop)
|
|
168
|
+
def check_roll_loop(roll_times, min_suc, target, critical, fumble, is_critical_stop)
|
|
167
169
|
dice_str = ''
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
is_fumble = false
|
|
171
|
+
is_critical = false
|
|
170
172
|
total_suc = 0
|
|
171
173
|
|
|
172
174
|
roll_times.times do |_i|
|
|
@@ -193,38 +195,36 @@ module BCDice
|
|
|
193
195
|
total_suc += dice_suc
|
|
194
196
|
|
|
195
197
|
if critical <= d1 + d2
|
|
196
|
-
|
|
198
|
+
is_critical = true
|
|
197
199
|
dice_str += "『必殺!』"
|
|
198
200
|
end
|
|
199
201
|
|
|
200
202
|
if (d1 == d2) && (d1 <= fumble) # ファンブルの確認
|
|
201
|
-
|
|
202
|
-
|
|
203
|
+
is_fumble = true
|
|
204
|
+
is_critical = false
|
|
203
205
|
break
|
|
204
206
|
end
|
|
205
207
|
|
|
206
|
-
if
|
|
208
|
+
if is_critical && is_critical_stop # 必殺止めの確認
|
|
207
209
|
break
|
|
208
210
|
end
|
|
209
211
|
end
|
|
210
212
|
|
|
211
|
-
return dice_str, total_suc,
|
|
213
|
+
return dice_str, total_suc, is_critical, is_fumble
|
|
212
214
|
end
|
|
213
215
|
|
|
214
216
|
def check_seigou(string)
|
|
215
217
|
debug("check_seigou begin string", string)
|
|
216
218
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
target = m[1].to_i
|
|
221
|
-
sr_parser = Command::Parser.new(/SR\d+/i, round_type: round_type)
|
|
219
|
+
sr_parser = Command::Parser.new("SR", round_type: round_type)
|
|
220
|
+
.has_suffix_number
|
|
222
221
|
.restrict_cmp_op_to(nil)
|
|
223
222
|
cmd = sr_parser.parse(string)
|
|
224
223
|
return '' unless cmd
|
|
225
224
|
|
|
226
225
|
dice = @randomizer.roll_sum(2, 6)
|
|
227
226
|
diceTotal = dice + cmd.modify_number
|
|
227
|
+
target = cmd.suffix_number
|
|
228
228
|
|
|
229
229
|
seigou = if target < diceTotal
|
|
230
230
|
"「激」"
|
|
@@ -37,8 +37,8 @@ module BCDice
|
|
|
37
37
|
INFO_MESSAGE_TEXT
|
|
38
38
|
|
|
39
39
|
register_prefix(
|
|
40
|
-
'(SH|SHS)
|
|
41
|
-
'(EM|TR|FE)
|
|
40
|
+
'(SH|SHS)',
|
|
41
|
+
'(EM|TR|FE)',
|
|
42
42
|
'DC(SL|BL|IM|BR|RF|EL).+'
|
|
43
43
|
)
|
|
44
44
|
|
|
@@ -73,13 +73,13 @@ module BCDice
|
|
|
73
73
|
|
|
74
74
|
dice_value = @randomizer.roll_once(100)
|
|
75
75
|
result = get_check_result(dice_value, success_rate, critical_border, fumble_border)
|
|
76
|
-
title, supplementary = get_supplementary(command_type, result)
|
|
76
|
+
title, supplementary = get_supplementary(command_type, result.text)
|
|
77
77
|
unless supplementary.empty?
|
|
78
78
|
supplementary = "(#{supplementary})"
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
text = "#{title}判定 D100<=#{success_rate}@#{critical_border} > #{dice_value} > #{result}#{supplementary}"
|
|
82
|
-
return
|
|
81
|
+
result.text = "#{title}判定 D100<=#{success_rate}@#{critical_border} > #{dice_value} > #{result.text}#{supplementary}"
|
|
82
|
+
return result
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
def get_supplementary(command_type, result)
|
|
@@ -24,11 +24,12 @@ module BCDice
|
|
|
24
24
|
register_prefix('SF', 'ST')
|
|
25
25
|
|
|
26
26
|
def change_text(string)
|
|
27
|
-
string.gsub(/
|
|
27
|
+
string.gsub(/S[FT]/i, "2D6")
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
def
|
|
31
|
-
return
|
|
30
|
+
def result_2d6(total, dice_total, _dice_list, cmp_op, target)
|
|
31
|
+
return Result.nothing if target == '?'
|
|
32
|
+
return nil unless [:>=, :>].include?(cmp_op)
|
|
32
33
|
|
|
33
34
|
critical = false
|
|
34
35
|
fumble = false
|
|
@@ -39,28 +40,23 @@ module BCDice
|
|
|
39
40
|
fumble = true
|
|
40
41
|
end
|
|
41
42
|
|
|
42
|
-
totalValueBonus = 0
|
|
43
|
-
if cmp_op == :>=
|
|
44
|
-
totalValueBonus = 1
|
|
45
|
-
end
|
|
43
|
+
totalValueBonus = (cmp_op == :>= ? 1 : 0)
|
|
46
44
|
|
|
47
|
-
if
|
|
48
|
-
if
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
45
|
+
if (total + totalValueBonus) > target
|
|
46
|
+
if critical
|
|
47
|
+
Result.critical("自動成功(劇的成功)")
|
|
48
|
+
elsif fumble
|
|
49
|
+
Result.failure("自動失敗")
|
|
50
|
+
else
|
|
51
|
+
Result.success("成功")
|
|
52
|
+
end
|
|
53
|
+
else
|
|
54
|
+
if critical
|
|
55
|
+
Result.success("自動成功")
|
|
56
|
+
elsif fumble
|
|
57
|
+
Result.fumble("自動失敗(致命的失敗)")
|
|
56
58
|
else
|
|
57
|
-
|
|
58
|
-
return " > 自動成功"
|
|
59
|
-
elsif fumble
|
|
60
|
-
return " > 自動失敗(致命的失敗)"
|
|
61
|
-
else
|
|
62
|
-
return " > 失敗"
|
|
63
|
-
end
|
|
59
|
+
Result.failure("失敗")
|
|
64
60
|
end
|
|
65
61
|
end
|
|
66
62
|
end
|
|
@@ -16,12 +16,13 @@ module BCDice
|
|
|
16
16
|
|
|
17
17
|
# ダイスボットの使い方
|
|
18
18
|
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
|
19
|
-
・行為判定
|
|
20
|
-
2D6
|
|
19
|
+
・行為判定 nSG@s#f>=x
|
|
20
|
+
2D6の行為判定を行う。ダイス数が指定された場合、大きい出目2個を採用する。
|
|
21
|
+
n: ダイス数 (省略時 2)
|
|
21
22
|
s: スペシャル値 (省略時 12)
|
|
22
23
|
f: ファンブル値 (省略時 2)
|
|
23
24
|
x: 目標値 (省略可)
|
|
24
|
-
例)SG, SG@11, SG@11#3, SG#3>=7
|
|
25
|
+
例)SG, SG@11, SG@11#3, SG#3>=7, 3SG>=7
|
|
25
26
|
・各種表
|
|
26
27
|
・(無印)シーン表 ST/ファンブル表 FT/感情表 ET
|
|
27
28
|
/変調表 WT/戦場表 BT/異形表 MT
|
|
@@ -68,7 +69,7 @@ module BCDice
|
|
|
68
69
|
end
|
|
69
70
|
end
|
|
70
71
|
|
|
71
|
-
register_prefix(
|
|
72
|
+
register_prefix('\d*SG')
|
|
72
73
|
|
|
73
74
|
def eval_game_system_specific_command(command)
|
|
74
75
|
result = action_roll(command) || roll_tables(command, TABLES) || RTT.roll_command(@randomizer, command)
|
|
@@ -94,17 +95,23 @@ module BCDice
|
|
|
94
95
|
private
|
|
95
96
|
|
|
96
97
|
def action_roll(command)
|
|
97
|
-
parser = Command::Parser.new(
|
|
98
|
+
parser = Command::Parser.new(/\d*SG/, round_type: round_type)
|
|
98
99
|
.restrict_cmp_op_to(:>=, nil)
|
|
99
100
|
.enable_critical
|
|
100
101
|
.enable_fumble
|
|
101
102
|
cmd = parser.parse(command)
|
|
102
103
|
return nil unless cmd
|
|
103
104
|
|
|
105
|
+
times = cmd.command.start_with?(/\d/) ? cmd.command.to_i : 2
|
|
106
|
+
return nil if times <= 1
|
|
107
|
+
|
|
104
108
|
cmd.critical ||= 12
|
|
105
109
|
cmd.fumble ||= 2
|
|
106
110
|
|
|
107
|
-
|
|
111
|
+
dice_list_full = @randomizer.roll_barabara(times, 6).sort
|
|
112
|
+
dice_list_full_str = "[#{dice_list_full.join(',')}]" if times > 2
|
|
113
|
+
|
|
114
|
+
dice_list = dice_list_full[-2, 2]
|
|
108
115
|
dice_total = dice_list.sum()
|
|
109
116
|
total = dice_total + cmd.modify_number
|
|
110
117
|
|
|
@@ -123,6 +130,7 @@ module BCDice
|
|
|
123
130
|
|
|
124
131
|
sequence = [
|
|
125
132
|
"(#{cmd.to_s(:after_modify_number)})",
|
|
133
|
+
dice_list_full_str,
|
|
126
134
|
"#{dice_total}[#{dice_list.join(',')}]#{Format.modifier(cmd.modify_number)}",
|
|
127
135
|
total,
|
|
128
136
|
result.text
|