bcdice 3.12.0 → 3.14.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 +72 -0
- data/i18n/Arianrhod/ko_kr.yml +3 -0
- data/i18n/Cthulhu/en_us.yml +11 -0
- data/i18n/CyberpunkRed/ja_jp.yml +389 -0
- data/i18n/FinalFantasyXIV/en_us.yml +4 -0
- data/i18n/FinalFantasyXIV/ja_jp.yml +4 -0
- data/i18n/FutariSousa/ja_jp.yml +158 -1
- data/i18n/KizunaBullet/ja_jp.yml +653 -0
- data/i18n/MonotoneMuseum/ja_jp.yml +246 -14
- data/i18n/SkynautsBouken/ja_jp.yml +114 -0
- data/i18n/TensaiGunshiNiNaro/ja_jp.yml +126 -0
- data/i18n/UnsungDuet/ja_jp.yml +62 -0
- data/i18n/UnsungDuet/ko_kr.yml +62 -0
- data/i18n/en_us.yml +5 -0
- data/lib/bcdice/arithmetic/parser.rb +4 -2
- data/lib/bcdice/base.rb +1 -1
- data/lib/bcdice/command/parser.rb +4 -2
- data/lib/bcdice/common_command/add_dice/parser.rb +4 -2
- data/lib/bcdice/common_command/barabara_dice/parser.rb +4 -2
- data/lib/bcdice/common_command/calc/parser.rb +4 -2
- data/lib/bcdice/common_command/reroll_dice/parser.rb +4 -2
- data/lib/bcdice/common_command/tally_dice/parser.rb +4 -2
- data/lib/bcdice/common_command/upper_dice/parser.rb +4 -2
- data/lib/bcdice/dice_table/range_table.rb +24 -0
- data/lib/bcdice/game_system/Agnostos.rb +248 -0
- data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
- data/lib/bcdice/game_system/Alsetto.rb +2 -2
- data/lib/bcdice/game_system/AniMalus.rb +261 -0
- data/lib/bcdice/game_system/Arianrhod_Korean.rb +30 -0
- data/lib/bcdice/game_system/ArknightsFan.rb +182 -0
- 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 +3 -3
- data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
- data/lib/bcdice/game_system/BlackJacket.rb +244 -0
- data/lib/bcdice/game_system/Chill3.rb +6 -6
- data/lib/bcdice/game_system/ConvictorDrive.rb +5 -4
- data/lib/bcdice/game_system/Cthulhu_English.rb +59 -0
- data/lib/bcdice/game_system/CyberpunkRed.rb +14 -4
- data/lib/bcdice/game_system/DarkSouls.rb +1 -1
- data/lib/bcdice/game_system/DivineCharger.rb +841 -0
- data/lib/bcdice/game_system/Elric.rb +1 -1
- data/lib/bcdice/game_system/FinalFantasyXIV.rb +115 -0
- data/lib/bcdice/game_system/FinalFantasyXIV_English.rb +39 -0
- data/lib/bcdice/game_system/FullFace.rb +121 -0
- data/lib/bcdice/game_system/FutariSousa.rb +88 -8
- data/lib/bcdice/game_system/InfiniteFantasia.rb +4 -1
- data/lib/bcdice/game_system/Insane_Korean.rb +1 -1
- data/lib/bcdice/game_system/InvisibleLiar.rb +79 -0
- data/lib/bcdice/game_system/Irisbane.rb +1 -1
- data/lib/bcdice/game_system/KillDeathBusiness.rb +1 -1
- data/lib/bcdice/game_system/KizunaBullet.rb +240 -0
- data/lib/bcdice/game_system/KyokoShinshoku.rb +201 -0
- data/lib/bcdice/game_system/Liminal.rb +136 -0
- data/lib/bcdice/game_system/MetalHead.rb +1 -1
- data/lib/bcdice/game_system/MetalHeadExtream.rb +1 -1
- data/lib/bcdice/game_system/MonotoneMuseum.rb +14 -1
- data/lib/bcdice/game_system/NRR.rb +122 -0
- data/lib/bcdice/game_system/NSSQ.rb +1 -1
- data/lib/bcdice/game_system/NightWizard.rb +1 -1
- data/lib/bcdice/game_system/NightWizard3rd.rb +15 -2
- data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
- data/lib/bcdice/game_system/PastFutureParadox.rb +1238 -0
- data/lib/bcdice/game_system/Postman.rb +3 -3
- data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
- data/lib/bcdice/game_system/RuneQuestRoleplayingInGlorantha.rb +1 -1
- data/lib/bcdice/game_system/Ryutama.rb +4 -4
- data/lib/bcdice/game_system/ShuumatsuBargainWars.rb +203 -0
- data/lib/bcdice/game_system/Siren.rb +97 -0
- data/lib/bcdice/game_system/Skynauts.rb +1 -1
- data/lib/bcdice/game_system/SkynautsBouken.rb +45 -130
- data/lib/bcdice/game_system/Strave.rb +1 -1
- data/lib/bcdice/game_system/SwordWorld.rb +1 -1
- data/lib/bcdice/game_system/TensaiGunshiNiNaro.rb +228 -0
- data/lib/bcdice/game_system/TheOneRing2nd.rb +406 -0
- data/lib/bcdice/game_system/TheUnofficialHollowKnightRPG.rb +185 -0
- data/lib/bcdice/game_system/TherapieSein.rb +1 -1
- data/lib/bcdice/game_system/TrailOfCthulhu.rb +139 -0
- data/lib/bcdice/game_system/TrinitySeven.rb +1 -1
- data/lib/bcdice/game_system/UnsungDuet.rb +17 -75
- data/lib/bcdice/game_system/UnsungDuet_Korean.rb +41 -0
- data/lib/bcdice/game_system/Utakaze.rb +55 -2
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +12 -6
- data/lib/bcdice/game_system/Warhammer4.rb +124 -3
- data/lib/bcdice/game_system/WerewolfTheApocalypse5th.rb +12 -6
- data/lib/bcdice/game_system/Yotabana.rb +62 -0
- data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +1 -1
- data/lib/bcdice/game_system/cyberpunk_red/tables.rb +111 -473
- data/lib/bcdice/game_system/kizuna_bullet/tables.rb +171 -0
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +4 -2
- data/lib/bcdice/game_system.rb +24 -0
- data/lib/bcdice/loader.rb +1 -1
- data/lib/bcdice/version.rb +1 -1
- metadata +55 -5
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BCDice
|
|
4
|
+
module GameSystem
|
|
5
|
+
class NRR < Base
|
|
6
|
+
# ゲームシステムの識別子
|
|
7
|
+
ID = 'NRR'
|
|
8
|
+
|
|
9
|
+
# ゲームシステム名
|
|
10
|
+
NAME = 'nRR'
|
|
11
|
+
|
|
12
|
+
# ゲームシステム名の読みがな
|
|
13
|
+
SORT_KEY = 'えぬああるあある'
|
|
14
|
+
|
|
15
|
+
# ダイスボットの使い方
|
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGETEXT
|
|
17
|
+
▪️判定
|
|
18
|
+
・ノーマルダイス NR8
|
|
19
|
+
・有利ダイス NR10
|
|
20
|
+
・不利ダイス NR6
|
|
21
|
+
・Exダイス NR12
|
|
22
|
+
|
|
23
|
+
ダイスの個数を指定しての判定ができます。
|
|
24
|
+
例:有利ダイス2個で判定 2NR10
|
|
25
|
+
|
|
26
|
+
▪️判定結果とシンボル
|
|
27
|
+
⭕:成功
|
|
28
|
+
❌:失敗
|
|
29
|
+
✨:クリティカル(大成功)
|
|
30
|
+
💀:ファンブル(大失敗)
|
|
31
|
+
🌈:ミラクル(奇跡)
|
|
32
|
+
INFO_MESSAGETEXT
|
|
33
|
+
|
|
34
|
+
register_prefix('\d*NR(6|8|10|12)')
|
|
35
|
+
|
|
36
|
+
def initialize(command)
|
|
37
|
+
super(command)
|
|
38
|
+
|
|
39
|
+
@sort_barabara_dice = true # バラバラロール(Bコマンド)でソート有
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def eval_game_system_specific_command(command)
|
|
43
|
+
roll_nr(command)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def roll_nr(command)
|
|
49
|
+
m = /^(\d+)?NR(6|8|10|12)$/.match(command)
|
|
50
|
+
return nil unless m
|
|
51
|
+
|
|
52
|
+
times = m[1]&.to_i || 1
|
|
53
|
+
table = case m[2]
|
|
54
|
+
when "6"
|
|
55
|
+
DISADVANTAGE
|
|
56
|
+
when "8"
|
|
57
|
+
NORMAL
|
|
58
|
+
when "10"
|
|
59
|
+
ADVANTAGE
|
|
60
|
+
else
|
|
61
|
+
EXTRA
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
values = @randomizer.roll_barabara(times, table.size)
|
|
65
|
+
result = Result.new
|
|
66
|
+
text =
|
|
67
|
+
if times == 1
|
|
68
|
+
level = table[values[0] - 1]
|
|
69
|
+
result.condition = SUCCESSES.include?(level)
|
|
70
|
+
result.fumble = level == :fumble
|
|
71
|
+
result.critical = CRITICALS.include?(level)
|
|
72
|
+
|
|
73
|
+
"#{ICON[level]} #{RESULT_LABEL[level]}"
|
|
74
|
+
else
|
|
75
|
+
levels = values.map { |v| table[v - 1] }
|
|
76
|
+
values_count = levels
|
|
77
|
+
.group_by(&:itself)
|
|
78
|
+
.transform_values(&:length)
|
|
79
|
+
|
|
80
|
+
values_count_strs = LEVELS.map do |l|
|
|
81
|
+
count = values_count.fetch(l, 0)
|
|
82
|
+
next nil if count == 0
|
|
83
|
+
|
|
84
|
+
"#{ICON[l]} #{count}"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
values_count_strs.compact.join(", ")
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
times_str = times == 1 ? nil : times
|
|
91
|
+
result.text = "(#{times_str}NR#{m[2]}) > #{values.join(',')} > #{text}"
|
|
92
|
+
|
|
93
|
+
result
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
LEVELS = [:fumble, :failure, :success, :critical, :miracle].freeze
|
|
97
|
+
SUCCESSES = [:success, :critical, :miracle].freeze
|
|
98
|
+
CRITICALS = [:critical, :miracle].freeze
|
|
99
|
+
|
|
100
|
+
DISADVANTAGE = [:fumble, :failure, :failure, :failure, :success, :success].freeze
|
|
101
|
+
NORMAL = [:fumble, :failure, :failure, :failure, :success, :success, :success, :critical].freeze
|
|
102
|
+
ADVANTAGE = [:fumble, :failure, :failure, :success, :success, :success, :success, :success, :critical, :critical].freeze
|
|
103
|
+
EXTRA = [:fumble, :fumble, :failure, :failure, :success, :success, :critical, :critical, :critical, :critical, :miracle, :miracle].freeze
|
|
104
|
+
|
|
105
|
+
ICON = {
|
|
106
|
+
fumble: "💀",
|
|
107
|
+
failure: "❌",
|
|
108
|
+
success: "⭕️",
|
|
109
|
+
critical: "✨",
|
|
110
|
+
miracle: "🌈",
|
|
111
|
+
}.freeze
|
|
112
|
+
|
|
113
|
+
RESULT_LABEL = {
|
|
114
|
+
fumble: "ファンブル(大失敗)",
|
|
115
|
+
failure: "失敗",
|
|
116
|
+
success: "成功",
|
|
117
|
+
critical: "クリティカル(大成功)",
|
|
118
|
+
miracle: "ミラクル(奇跡)",
|
|
119
|
+
}.freeze
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
@@ -123,7 +123,7 @@ module BCDice
|
|
|
123
123
|
|
|
124
124
|
# @return [ParsedNW, nil]
|
|
125
125
|
def parse_nw(string)
|
|
126
|
-
m = /^([-+]?\d+)?#{@nw_command}((?:[-+]\d+)+)?(?:@(\d+(?:,\d+)*))?(?:#(\d+(?:,\d+)*))?(?:\$(\d+
|
|
126
|
+
m = /^([-+]?\d+)?#{@nw_command}((?:[-+]\d+)+)?(?:@(\d+(?:,\d+)*))?(?:#(\d+(?:,\d+)*))?(?:\$(\d+))?((?:[-+]\d+)+)?(?:([>=]+)(\d+))?$/.match(string)
|
|
127
127
|
unless m
|
|
128
128
|
return nil
|
|
129
129
|
end
|
|
@@ -5,14 +5,27 @@ require 'bcdice/game_system/NightWizard'
|
|
|
5
5
|
module BCDice
|
|
6
6
|
module GameSystem
|
|
7
7
|
class NightWizard3rd < NightWizard
|
|
8
|
+
# ゲームシステムの識別子
|
|
9
|
+
ID = 'NightWizard3rd'
|
|
10
|
+
|
|
8
11
|
# ゲームシステム名
|
|
9
12
|
NAME = 'ナイトウィザード The 3rd Edition'
|
|
10
13
|
|
|
11
14
|
# ゲームシステム名の読みがな
|
|
12
15
|
SORT_KEY = 'ないとういさあと3'
|
|
13
16
|
|
|
14
|
-
#
|
|
15
|
-
|
|
17
|
+
# ダイスボットの使い方
|
|
18
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
|
19
|
+
・判定用コマンド (aNW+b@x#y$z+c)
|
|
20
|
+
a : 基本値
|
|
21
|
+
b : 常時に準じる特技による補正
|
|
22
|
+
c : 常時以外の特技、および支援効果による補正
|
|
23
|
+
x : クリティカル値のカンマ区切り(省略時 10)
|
|
24
|
+
y : ファンブル値のカンマ区切り(省略時 5)
|
|
25
|
+
z : プラーナによる達成値補正のプラーナ消費数(ファンブル時には適用されない)
|
|
26
|
+
クリティカル値、ファンブル値が無い場合は1や13などのあり得ない数値を入れてください。
|
|
27
|
+
例)12NW-5@7#2$3 1NW 50nw+5@7,10#2,5 50nw-5+10@7,10#2,5+15+25
|
|
28
|
+
INFO_MESSAGE_TEXT
|
|
16
29
|
|
|
17
30
|
register_prefix('([-+]?\d+)?NW', '2R6')
|
|
18
31
|
|