bcdice 3.0.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +79 -2
- data/README.md +32 -0
- data/i18n/MonotoneMuseum/ja_jp.yml +3 -3
- 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/dice_table/sai_fic_skill_table.rb +1 -1
- data/lib/bcdice/game_system.rb +4 -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/AlchemiaStruggle.rb +1 -1
- data/lib/bcdice/game_system/Alsetto.rb +1 -1
- data/lib/bcdice/game_system/Alshard.rb +1 -1
- data/lib/bcdice/game_system/AlterRaise.rb +2 -2
- data/lib/bcdice/game_system/AngelGear.rb +123 -0
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
- data/lib/bcdice/game_system/Arianrhod.rb +6 -8
- data/lib/bcdice/game_system/ArsMagica.rb +1 -1
- data/lib/bcdice/game_system/Avandner.rb +1 -1
- data/lib/bcdice/game_system/BBN.rb +1 -1
- data/lib/bcdice/game_system/BadLife.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/BeastBindTrinity.rb +2 -2
- 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 +48 -49
- data/lib/bcdice/game_system/BloodMoon.rb +50 -8
- data/lib/bcdice/game_system/CardRanker.rb +10 -9
- 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 +1 -1
- data/lib/bcdice/game_system/CrashWorld.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu.rb +8 -4
- data/lib/bcdice/game_system/Cthulhu7th.rb +86 -342
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +2 -2
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +2 -2
- data/lib/bcdice/game_system/CthulhuTech.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu_Korean.rb +1 -1
- data/lib/bcdice/game_system/DarkBlaze.rb +1 -12
- 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/DiceOfTheDead.rb +1 -1
- data/lib/bcdice/game_system/DoubleCross.rb +2 -2
- data/lib/bcdice/game_system/Dracurouge.rb +1 -1
- data/lib/bcdice/game_system/EarthDawn.rb +1 -1
- data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
- data/lib/bcdice/game_system/EarthDawn4.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 +3 -3
- data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
- data/lib/bcdice/game_system/Emoklore.rb +3 -3
- data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
- data/lib/bcdice/game_system/Fiasco.rb +1 -1
- data/lib/bcdice/game_system/FilledWith.rb +205 -1272
- data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
- data/lib/bcdice/game_system/GURPS.rb +17 -28
- data/lib/bcdice/game_system/Garako.rb +12 -4
- data/lib/bcdice/game_system/GardenOrder.rb +1 -1
- data/lib/bcdice/game_system/GehennaAn.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 +3 -9
- 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/Illusio.rb +25 -34
- 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/LogHorizon.rb +3 -3
- data/lib/bcdice/game_system/LostRoyal.rb +1 -1
- data/lib/bcdice/game_system/MeikyuDays.rb +11 -9
- data/lib/bcdice/game_system/MeikyuKingdom.rb +28 -28
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +5 -5
- data/lib/bcdice/game_system/MetalHead.rb +12 -22
- data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
- data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
- data/lib/bcdice/game_system/MonotoneMuseum.rb +9 -7
- data/lib/bcdice/game_system/Nechronica.rb +28 -21
- data/lib/bcdice/game_system/NeverCloud.rb +540 -5
- data/lib/bcdice/game_system/NightWizard.rb +1 -1
- data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
- data/lib/bcdice/game_system/NinjaSlayer.rb +4 -13
- data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
- data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
- data/lib/bcdice/game_system/OracleEngine.rb +1 -1
- data/lib/bcdice/game_system/OrgaRain.rb +17 -25
- data/lib/bcdice/game_system/Paradiso.rb +3 -3
- data/lib/bcdice/game_system/ParanoiaRebooted.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 +2 -2
- data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
- data/lib/bcdice/game_system/Raisondetre.rb +2 -2
- data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
- data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
- data/lib/bcdice/game_system/Revulture.rb +123 -0
- data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
- 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 +1 -1
- data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
- data/lib/bcdice/game_system/Satasupe.rb +79 -860
- data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
- data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
- data/lib/bcdice/game_system/SharedFantasia.rb +20 -24
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
- data/lib/bcdice/game_system/ShinobiGami.rb +17 -9
- data/lib/bcdice/game_system/Skynauts.rb +4 -4
- data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
- data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
- data/lib/bcdice/game_system/StellarKnights.rb +59 -696
- data/lib/bcdice/game_system/SterileLife.rb +2 -3
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -2
- 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 +58 -185
- data/lib/bcdice/game_system/SwordWorld2_0.rb +22 -150
- data/lib/bcdice/game_system/SwordWorld2_5.rb +127 -41
- data/lib/bcdice/game_system/TherapieSein.rb +1 -1
- data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
- data/lib/bcdice/game_system/Torg.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +2 -2
- data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
- data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -1
- data/lib/bcdice/game_system/UnsungDuet.rb +1 -1
- data/lib/bcdice/game_system/Utakaze.rb +1 -1
- data/lib/bcdice/game_system/VampireTheMasquerade5th.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 +16 -7
- data/lib/bcdice/game_system/Warhammer4.rb +16 -12
- data/lib/bcdice/game_system/WitchQuest.rb +1 -1
- data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
- data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
- data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
- data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
- data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +294 -0
- data/lib/bcdice/game_system/cthulhu7th/rollable.rb +41 -0
- data/lib/bcdice/game_system/filled_with/enemy_data_tables.rb +322 -0
- data/lib/bcdice/game_system/filled_with/event_tables.rb +392 -0
- data/lib/bcdice/game_system/filled_with/tresure_tables.rb +179 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
- data/lib/bcdice/game_system/satasupe/tables.rb +723 -0
- data/lib/bcdice/game_system/sword_world/rating_lexer.rb +47 -0
- data/lib/bcdice/game_system/sword_world/rating_parsed.rb +99 -0
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +457 -0
- data/lib/bcdice/game_system/sword_world/transcendent_test.rb +122 -0
- data/lib/bcdice/repl.rb +1 -1
- data/lib/bcdice/result.rb +26 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +20 -4
@@ -16,31 +16,22 @@ module BCDice
|
|
16
16
|
HELP_MESSAGE = "大成功、自動成功、失敗、自動失敗、大失敗の自動判定を行います。\n"
|
17
17
|
|
18
18
|
# ゲーム別成功度判定(1d100)
|
19
|
-
def
|
20
|
-
return
|
19
|
+
def result_1d100(total, _dice_total, cmp_op, target)
|
20
|
+
return Result.nothing if target == '?'
|
21
|
+
return nil unless cmp_op == :<=
|
21
22
|
|
22
|
-
if total
|
23
|
-
|
24
|
-
if total <= (target / 5)
|
25
|
-
" > 大成功"
|
26
|
-
else
|
27
|
-
" > 自動成功"
|
28
|
-
end
|
29
|
-
elsif total >= 100
|
30
|
-
# 00は大失敗(大失敗は自動失敗でもある)
|
31
|
-
" > 大失敗"
|
23
|
+
if total >= 100
|
24
|
+
Result.fumble("大失敗")
|
32
25
|
elsif total >= 96
|
33
|
-
|
34
|
-
|
26
|
+
Result.failure("自動失敗")
|
27
|
+
elsif total <= (target / 5)
|
28
|
+
Result.critical("大成功")
|
29
|
+
elsif total <= 1
|
30
|
+
Result.success("自動成功")
|
35
31
|
elsif total <= target
|
36
|
-
|
37
|
-
# 目標値の1/5以下は大成功
|
38
|
-
" > 大成功"
|
39
|
-
else
|
40
|
-
" > 成功"
|
41
|
-
end
|
32
|
+
Result.success("成功")
|
42
33
|
else
|
43
|
-
"
|
34
|
+
Result.failure("失敗")
|
44
35
|
end
|
45
36
|
end
|
46
37
|
end
|
@@ -47,18 +47,13 @@ module BCDice
|
|
47
47
|
end
|
48
48
|
|
49
49
|
# ゲーム別成功度判定(2D6)
|
50
|
-
def
|
51
|
-
return
|
52
|
-
return '' unless cmp_op == :>=
|
50
|
+
def result_2d6(_total, dice_total, _dice_list, cmp_op, _target)
|
51
|
+
return nil unless cmp_op == :>=
|
53
52
|
|
54
53
|
if dice_total <= 2
|
55
|
-
"
|
54
|
+
Result.fumble("ファンブル(モノビースト追加行動+1)")
|
56
55
|
elsif dice_total >= 12
|
57
|
-
"
|
58
|
-
elsif total >= target
|
59
|
-
" > 成功"
|
60
|
-
else
|
61
|
-
" > 失敗"
|
56
|
+
Result.critical("スペシャル(変調1つ回復orダメージ+1D6)")
|
62
57
|
end
|
63
58
|
end
|
64
59
|
|
@@ -403,7 +398,7 @@ module BCDice
|
|
403
398
|
),
|
404
399
|
}.freeze
|
405
400
|
|
406
|
-
register_prefix(RTT.prefixes, '
|
401
|
+
register_prefix(RTT.prefixes, 'SA', TABLES.keys)
|
407
402
|
end
|
408
403
|
end
|
409
404
|
end
|
@@ -33,56 +33,47 @@ module BCDice
|
|
33
33
|
end
|
34
34
|
|
35
35
|
register_prefix(
|
36
|
-
'(\d+)?IL([1-6]
|
36
|
+
'(\d+)?IL([1-6]{0,6})(P)?'
|
37
37
|
)
|
38
38
|
|
39
39
|
def eval_game_system_specific_command(command)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
isParry = !Regexp.last_match(8).nil?
|
47
|
-
|
48
|
-
return checkRoll(diceCount, blockNo, isParry)
|
49
|
-
end
|
40
|
+
m = command.match(/(\d+)?IL([1-6]{0,6})(P)?$/i)
|
41
|
+
return nil unless m
|
42
|
+
|
43
|
+
dice_count = (m[1] || 1).to_i
|
44
|
+
block_no = (m[2] || "").each_char.map(&:to_i).uniq.sort
|
45
|
+
is_parry = !m[3].nil?
|
50
46
|
|
51
|
-
return
|
47
|
+
return check_roll(dice_count, block_no, is_parry)
|
52
48
|
end
|
53
49
|
|
54
|
-
def
|
55
|
-
|
56
|
-
|
50
|
+
def check_roll(dice_count, block_no, is_parry)
|
51
|
+
dice_array = @randomizer.roll_barabara(dice_count, 6).sort
|
52
|
+
dice_text = dice_array.join(',')
|
57
53
|
|
58
|
-
|
54
|
+
result_array = []
|
59
55
|
success = 0
|
60
|
-
|
61
|
-
if
|
62
|
-
|
56
|
+
dice_array.each do |i|
|
57
|
+
if block_no.count(i) > 0
|
58
|
+
result_array.push("×")
|
63
59
|
else
|
64
|
-
|
60
|
+
result_array.push(i)
|
65
61
|
success += 1
|
66
62
|
end
|
67
63
|
end
|
68
64
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
resultText = resultArray.join(',')
|
65
|
+
block_text = block_no.join(',')
|
66
|
+
block_text2 = is_parry ? "Parry" : "Block"
|
67
|
+
result_text = result_array.join(',')
|
73
68
|
|
74
|
-
result = "#{
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
result += "成功数:#{success} パリィ失敗"
|
80
|
-
end
|
69
|
+
result = "#{dice_count}D6(#{block_text2}:#{block_text}) > #{dice_text} > #{result_text} > "
|
70
|
+
return "#{result}成功数:#{success}" unless is_parry
|
71
|
+
|
72
|
+
if success < dice_count
|
73
|
+
"#{result}パリィ成立! 次の非ダメージ2倍。"
|
81
74
|
else
|
82
|
-
result
|
75
|
+
"#{result}成功数:#{success} パリィ失敗"
|
83
76
|
end
|
84
|
-
|
85
|
-
return result
|
86
77
|
end
|
87
78
|
end
|
88
79
|
end
|
@@ -13,38 +13,40 @@ module BCDice
|
|
13
13
|
SORT_KEY = 'むけんのふあんたしあ'
|
14
14
|
|
15
15
|
# ダイスボットの使い方
|
16
|
-
HELP_MESSAGE = "
|
16
|
+
HELP_MESSAGE = "失敗、成功レベルの自動判定を行います。"
|
17
17
|
|
18
18
|
# ゲーム別成功度判定(1d20)
|
19
|
-
def
|
20
|
-
return
|
19
|
+
def result_1d20(total, _dice_total, cmp_op, target)
|
20
|
+
return Result.nothing if target == '?'
|
21
|
+
return nil unless cmp_op == :<=
|
21
22
|
|
22
|
-
if
|
23
|
-
return
|
24
|
-
elsif total > target
|
25
|
-
return " > 失敗"
|
23
|
+
if total > target
|
24
|
+
return Result.failure("失敗")
|
26
25
|
end
|
27
26
|
|
28
27
|
output =
|
29
28
|
if total <= (target / 32)
|
30
|
-
"
|
29
|
+
"32レベル成功(32Lv+)"
|
31
30
|
elsif total <= (target / 16)
|
32
|
-
"
|
31
|
+
"16レベル成功(16Lv+)"
|
33
32
|
elsif total <= (target / 8)
|
34
|
-
"
|
33
|
+
"8レベル成功"
|
35
34
|
elsif total <= (target / 4)
|
36
|
-
"
|
35
|
+
"4レベル成功"
|
37
36
|
elsif total <= (target / 2)
|
38
|
-
"
|
37
|
+
"2レベル成功"
|
39
38
|
else
|
40
|
-
"
|
39
|
+
"1レベル成功"
|
41
40
|
end
|
42
41
|
|
43
|
-
|
44
|
-
|
42
|
+
Result.new.tap do |r|
|
43
|
+
r.text = output
|
44
|
+
r.success = true
|
45
|
+
if total <= 1
|
46
|
+
r.critical = true
|
47
|
+
r.text += "/クリティカル"
|
48
|
+
end
|
45
49
|
end
|
46
|
-
|
47
|
-
output
|
48
50
|
end
|
49
51
|
end
|
50
52
|
end
|
@@ -46,27 +46,20 @@ module BCDice
|
|
46
46
|
end
|
47
47
|
|
48
48
|
# ゲーム別成功度判定(2D6)
|
49
|
-
def
|
50
|
-
return
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
translate("failure")
|
63
|
-
end
|
64
|
-
|
65
|
-
if result.empty?
|
66
|
-
return ""
|
49
|
+
def result_2d6(total, dice_total, _dice_list, cmp_op, target)
|
50
|
+
return nil unless cmp_op == :>=
|
51
|
+
|
52
|
+
if dice_total <= 2
|
53
|
+
Result.fumble(translate("Insane.fumble"))
|
54
|
+
elsif dice_total >= 12
|
55
|
+
Result.critical(translate("Insane.special"))
|
56
|
+
elsif target == "?"
|
57
|
+
Result.nothing
|
58
|
+
elsif total >= target
|
59
|
+
Result.success(translate("success"))
|
60
|
+
else
|
61
|
+
Result.failure(translate("failure"))
|
67
62
|
end
|
68
|
-
|
69
|
-
return " > #{result}"
|
70
63
|
end
|
71
64
|
|
72
65
|
def eval_game_system_specific_command(command)
|
@@ -15,22 +15,15 @@ module BCDice
|
|
15
15
|
# ダイスボットの使い方
|
16
16
|
HELP_MESSAGE = "1D100<=m 方式の判定で成否、クリティカル(01)・ファンブル(00)を自動判定します。\n"
|
17
17
|
|
18
|
-
def
|
19
|
-
return
|
20
|
-
return '' unless cmp_op == :<=
|
18
|
+
def result_1d100(total, _dice_total, cmp_op, target)
|
19
|
+
return nil unless cmp_op == :<=
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
elsif (dice0 == 0) && (dice1 == 0)
|
29
|
-
' > 00 > ファンブル'
|
30
|
-
elsif total <= target
|
31
|
-
' > 成功'
|
32
|
-
else
|
33
|
-
' > 失敗'
|
21
|
+
if total % 100 == 1
|
22
|
+
Result.critical("01 > クリティカル")
|
23
|
+
elsif total % 100 == 0
|
24
|
+
Result.fumble("00 > ファンブル")
|
25
|
+
elsif target == "?"
|
26
|
+
Result.nothing
|
34
27
|
end
|
35
28
|
end
|
36
29
|
end
|
@@ -16,28 +16,28 @@ module BCDice
|
|
16
16
|
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
17
|
・1D100の目標値判定で、効果レーティングを1~4で自動判定。
|
18
18
|
例)1D100<=50
|
19
|
-
JamesBond : (1D100<=50)
|
19
|
+
JamesBond : (1D100<=50) > 20 > 効果3(良)
|
20
20
|
INFO_MESSAGE_TEXT
|
21
21
|
|
22
|
-
def
|
23
|
-
return
|
24
|
-
return
|
22
|
+
def result_1d100(total, _dice_total, cmp_op, target) # ゲーム別成功度判定(1d100)
|
23
|
+
return Result.nothing if target == '?'
|
24
|
+
return nil unless cmp_op == :<=
|
25
25
|
|
26
26
|
base = ((target + 9) / 10).floor
|
27
27
|
|
28
28
|
if total >= 100
|
29
29
|
# 100は常に失敗
|
30
|
-
"
|
30
|
+
Result.failure("失敗")
|
31
31
|
elsif total <= base
|
32
|
-
"
|
32
|
+
Result.success("効果1(完璧)")
|
33
33
|
elsif total <= base * 2
|
34
|
-
"
|
34
|
+
Result.success("効果2(かなり良い)")
|
35
35
|
elsif total <= base * 5
|
36
|
-
"
|
36
|
+
Result.success("効果3(良)")
|
37
37
|
elsif total <= target
|
38
|
-
"
|
38
|
+
Result.success("効果4(まあまあ)")
|
39
39
|
else
|
40
|
-
"
|
40
|
+
Result.failure("失敗")
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -53,18 +53,13 @@ module BCDice
|
|
53
53
|
@d66_sort_type = D66SortType::ASC
|
54
54
|
end
|
55
55
|
|
56
|
-
def
|
57
|
-
return
|
58
|
-
return '' unless cmp_op == :>=
|
56
|
+
def result_2d6(_total, dice_total, _dice_list, cmp_op, _target)
|
57
|
+
return nil unless cmp_op == :>=
|
59
58
|
|
60
59
|
if dice_total <= 2
|
61
|
-
"
|
60
|
+
Result.fumble("ファンブル(判定失敗。アクシデント表を自分のPCに適用)")
|
62
61
|
elsif dice_total >= 12
|
63
|
-
"
|
64
|
-
elsif total >= target
|
65
|
-
" > 成功"
|
66
|
-
else
|
67
|
-
" > 失敗"
|
62
|
+
Result.critical("スペシャル(判定成功。【行動力】が1D6点回復)")
|
68
63
|
end
|
69
64
|
end
|
70
65
|
|
@@ -49,22 +49,14 @@ module BCDice
|
|
49
49
|
end
|
50
50
|
|
51
51
|
# ゲーム別成功度判定(2D6)
|
52
|
-
def
|
53
|
-
return
|
54
|
-
return '' unless cmp_op == :>=
|
55
|
-
|
56
|
-
result =
|
57
|
-
if dice_total <= 2
|
58
|
-
translate("KillDeathBusiness.fumble")
|
59
|
-
elsif dice_total >= 12
|
60
|
-
translate("KillDeathBusiness.special")
|
61
|
-
elsif total >= target
|
62
|
-
translate("success")
|
63
|
-
else
|
64
|
-
translate("failure")
|
65
|
-
end
|
52
|
+
def result_2d6(_total, dice_total, _dice_list, cmp_op, _target)
|
53
|
+
return nil unless cmp_op == :>=
|
66
54
|
|
67
|
-
|
55
|
+
if dice_total <= 2
|
56
|
+
Result.fumble(translate("KillDeathBusiness.fumble"))
|
57
|
+
elsif dice_total >= 12
|
58
|
+
Result.critical(translate("KillDeathBusiness.special"))
|
59
|
+
end
|
68
60
|
end
|
69
61
|
|
70
62
|
def eval_game_system_specific_command(command)
|
@@ -13,7 +13,12 @@ module BCDice
|
|
13
13
|
SORT_KEY = 'くらやみくらいん'
|
14
14
|
|
15
15
|
# ダイスボットの使い方
|
16
|
-
HELP_MESSAGE =
|
16
|
+
HELP_MESSAGE = <<~TEXT
|
17
|
+
・アクシデント表(ACT)
|
18
|
+
・感情表(EMO)
|
19
|
+
・幕間シーン表(情景)(SST)
|
20
|
+
・幕間シーン表(関係)(SRT)
|
21
|
+
TEXT
|
17
22
|
|
18
23
|
def eval_game_system_specific_command(command)
|
19
24
|
if (m = /^ACT(\d+)$/i.match(command))
|
@@ -41,9 +46,57 @@ module BCDice
|
|
41
46
|
"まるで自分を支える何かが失われたように、あなたはその場に立ち尽くす。諦めと絶望が心を支配する。ああ、そうか。これが、「心が折れる」ということか……。あなたは「理性」を4点失う。"
|
42
47
|
]
|
43
48
|
),
|
49
|
+
"EMO" => DiceTable::Table.new(
|
50
|
+
"感情表",
|
51
|
+
"1D10",
|
52
|
+
[
|
53
|
+
"(正)信頼/(負)依存",
|
54
|
+
"(正)安心/(負)不安",
|
55
|
+
"(正)友情/(負)憤怒",
|
56
|
+
"(正)尊敬/(負)恐怖",
|
57
|
+
"(正)愛情/(負)嫉妬",
|
58
|
+
"(正)共感/(負)否定",
|
59
|
+
"(正)忠誠/(負)侮蔑",
|
60
|
+
"(正)憧憬/(負)劣等感",
|
61
|
+
"(正)性愛/(負)拒絶",
|
62
|
+
"(正)狂信/(負)殺意",
|
63
|
+
]
|
64
|
+
),
|
65
|
+
"SST" => DiceTable::Table.new(
|
66
|
+
"幕間シーン表(情景)",
|
67
|
+
"1D10",
|
68
|
+
[
|
69
|
+
"先が見えない闇の中を、あなたは手探りに進んでいる。暗がりに入り込んでしまったのか、それとも辺りの光が消えたのか———その時、あなたの眼前に、闇から溶け出すように何者かの姿が現れた。",
|
70
|
+
"夢を見ていた。かつてあった出来事が、目の前で繰り返される……ハッと気が付き、現実に戻る。心配そうにあなたを覗き込む顔を見て、再び夢の光景がフラッシュバックする。この人、あの時の……!",
|
71
|
+
"気が付くと見知らぬ場所を1人歩いている。迷ってしまったのだろうか。辺りを見回していた、その時———あなたは背後に気配を感じた。いつの間にか誰か立っている……!",
|
72
|
+
"「危ない!」突然上がった声と同時に、あなたは突き飛ばされ、床を転がった。次の瞬間、不気味で巨大な何かがあなたの頭をかすめてゆく……。あなたは身を起こし、あなたと一緒に倒れ込んだ人物に声をかけた。",
|
73
|
+
"不気味な声を上げながら、何かがゆっくりと近づいてくる。あなたが咄嗟に身を隠した場所には、すでに誰かいた。このまま息を殺し、一緒に危険が過ぎ去るのを待つしかない。",
|
74
|
+
"むせかえるような臭いが辺りに満ちている。これは血の臭いだろうか。いや、それにしては……。すると、あなたの近くで、誰かが小さく咳き込んだ……",
|
75
|
+
"一息つけそうな場所を見つけ、あなたは座りこんだ。不気味なことに巻き込まれているとは思えない、穏やかな時間が流れる。ふと、あなたは隣りに座っている人物に話しかけた。",
|
76
|
+
"静寂の中、あなたを呼ぶ声が響く。声の主に対し、あなたは思う。望むところだ。自分の方こそ、確認しなければならないことがある———!あなたは足早に、声のする方へと進んだ。",
|
77
|
+
"高い場所に立ち、あなたは異常な世界を見下ろしている。その時、後ろで誰かが地面を踏む音がした。来たか……予想通り、ここでなら会うことができた。あなたは振り返り、相手を見た。",
|
78
|
+
"周囲を確認し、あなたは相手に合図を送る。足音静かに、相手があなたの元へと駆け寄る。———他の気配はない。慎重に、密やかに、あなたは相手と話し始めた。",
|
79
|
+
]
|
80
|
+
),
|
81
|
+
"SRT" => DiceTable::Table.new(
|
82
|
+
"幕間シーン表(関係)",
|
83
|
+
"1D10",
|
84
|
+
[
|
85
|
+
"微かな香り。ちょっとした仕事。横顔。あの人のすべてが、あなたの胸を高鳴らせる———こんな気持ちは、初めてだ。",
|
86
|
+
"頭の中にノイズが走る。あなたは、たしかに、あの人とあったことがある。けれど、詳しく思い出そうとするたびに頭痛が走る……この記憶、確かめなければ。",
|
87
|
+
"異常な事態だというのに……いや、異常な事態だからこそ、あの人はあなたに安心感を与えてくれる、とにかく話がしたい。今はまず、あの人を探そう。",
|
88
|
+
"今あなたに必要なのは「捨て駒」だ。そう、ピッタリの奴がいるじゃないか!誰を犠牲にしても生き残ってやる。そのためには……。あなたは、あの人の方へと歩み寄った。",
|
89
|
+
"こんな時でも、どこか気の合う相手というのは見つかるものだ———安堵するような、弾むような気持ちで、あなたはその人に声をかけた。さぁ、共闘といこうじゃないか。",
|
90
|
+
"なんでよりによってこんなヤツと……!?図らずも二人きりになってしまった相手に、あなたは眉をひそめた。会話はない。そもそもこいつが安全かわからない……誰か助けて!",
|
91
|
+
"特に理由はない。けれど、一緒に行動すること自体は大事でしょう?仕方ないじゃないか、怖いんだから……!あなたは、いそいそと手近な人間へと寄って行った。",
|
92
|
+
"不意に昔のこと———二度と取り戻せない過ちが頭をよぎる。そんなことを思い出したのも、あの人の面影を、あの顔に感じてしまうせいだ。別人とはわかっている。けれど、今度こそ———。",
|
93
|
+
"あなたは影に隠れ、その人物を見張っている。怪しい……この人こそが、事件の元凶じゃないか?とはいえ、このままではじり貧だ。あなたは意を決し、影から飛び出して話をかけた。",
|
94
|
+
"間違いない……!あなたはその人物をにらみつけた。何という幸運だろう。追い求めた相手が、すぐそこにいるなんて!あなたは荒れ狂う胸の内を気取られぬよう、ゆっくりと近づいた。",
|
95
|
+
]
|
96
|
+
),
|
44
97
|
}.freeze
|
45
98
|
|
46
|
-
register_prefix(
|
99
|
+
register_prefix(TABLES.keys)
|
47
100
|
end
|
48
101
|
end
|
49
102
|
end
|