bcdice 3.16.1 → 3.17.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 +111 -0
- data/i18n/Airgetlamh/ja_jp.yml +5 -0
- data/i18n/Airgetlamh/ko_kr.yml +5 -0
- data/i18n/Alsetto/ja_jp.yml +5 -0
- data/i18n/Alsetto/ko_kr.yml +5 -0
- data/i18n/AnimaAnimus/ja_jp.yml +28 -0
- data/i18n/AnimaAnimus/ko_kr.yml +28 -0
- data/i18n/BlackJacket/ja_jp.yml +79 -0
- data/i18n/BlackJacket/ko_kr.yml +79 -0
- data/i18n/Bloodorium/ja_jp.yml +3 -0
- data/i18n/Bloodorium/ko_kr.yml +3 -0
- data/i18n/Cthulhu/ko_kr.yml +1 -1
- data/i18n/Dracurouge/ko_kr.yml +1284 -205
- data/i18n/Emoklore/ja_jp.yml +1 -0
- data/i18n/Emoklore/ko_kr.yml +1 -0
- data/i18n/FutariSousa/ja_jp.yml +70 -0
- data/i18n/FutariSousa/ko_kr.yml +157 -0
- data/i18n/HatsuneMiku/ja_jp.yml +579 -0
- data/i18n/HatsuneMiku/ko_kr.yml +579 -0
- data/i18n/Irisbane/ja_jp.yml +27 -0
- data/i18n/Irisbane/ko_kr.yml +27 -0
- data/i18n/JuinKansen/ja_jp.yml +168 -0
- data/i18n/JuinKansen/ko_kr.yml +168 -0
- data/i18n/KemonoNoMori/ja_jp.yml +229 -0
- data/i18n/KemonoNoMori/ko_kr.yml +229 -0
- data/i18n/KizunaBullet/ko_kr.yml +653 -0
- data/i18n/MagicPunk/ja_jp.yml +5 -0
- data/i18n/MagicPunk/ko_kr.yml +5 -0
- data/i18n/MorkBorg/ja_jp.yml +34 -0
- data/i18n/MorkBorg/ko_kr.yml +34 -0
- data/i18n/Nechronica/ko_kr.yml +43 -0
- data/i18n/NegikureNegimaki/ja_jp.yml +6 -0
- data/i18n/NegikureNegimaki/ko_kr.yml +6 -0
- data/i18n/Nuekagami/ja_jp.yml +219 -0
- data/i18n/Nuekagami/ko_kr.yml +219 -0
- data/i18n/Revulture/ja_jp.yml +8 -0
- data/i18n/Revulture/ko_kr.yml +8 -0
- data/i18n/SRS/ja_jp.yml +4 -0
- data/i18n/SRS/ko_kr.yml +4 -0
- data/i18n/ShinobiGami/ja_jp.yml +879 -0
- data/i18n/ShinobiGami/ko_kr.yml +876 -0
- data/i18n/StarryDolls/ja_jp.yml +456 -0
- data/i18n/StarryDolls/ko_kr.yml +456 -0
- data/i18n/StratoShout/ja_jp.yml +8 -8
- data/i18n/SwordWorld2_5/ja_jp.yml +48 -0
- data/i18n/Ventangle/ja_jp.yml +4 -0
- data/i18n/Ventangle/ko_kr.yml +4 -0
- data/i18n/YearZeroEngine/ja_jp.yml +12 -0
- data/i18n/YearZeroEngine/ko_kr.yml +12 -0
- data/i18n/ZombiLine/ja_jp.yml +27 -0
- data/i18n/ZombiLine/ko_kr.yml +27 -0
- data/i18n/ko_kr.yml +2 -0
- data/i18n/zh_hant.yml +2 -2
- data/lib/bcdice/dice_table/d66_left_range_table.rb +21 -0
- data/lib/bcdice/game_system/Aionia.rb +68 -19
- data/lib/bcdice/game_system/Airgetlamh.rb +64 -41
- data/lib/bcdice/game_system/Airgetlamh_Korean.rb +53 -0
- data/lib/bcdice/game_system/Alsetto.rb +63 -50
- data/lib/bcdice/game_system/Alsetto_Korean.rb +51 -0
- data/lib/bcdice/game_system/AnimaAnimus.rb +15 -32
- data/lib/bcdice/game_system/AnimaAnimus_Korean.rb +39 -0
- data/lib/bcdice/game_system/BlackJacket.rb +57 -113
- data/lib/bcdice/game_system/BlackJacket_Korean.rb +8 -206
- data/lib/bcdice/game_system/Bloodorium.rb +1 -1
- data/lib/bcdice/game_system/Bloodorium_Korean.rb +34 -0
- data/lib/bcdice/game_system/ChroniclesOfDarkness2e.rb +163 -0
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +471 -300
- data/lib/bcdice/game_system/DeadlineHeroes_Korean.rb +273 -0
- data/lib/bcdice/game_system/Dracurouge_Korean.rb +25 -19
- data/lib/bcdice/game_system/DungeonsAndDragons5.rb +106 -73
- data/lib/bcdice/game_system/DungeonsAndDragons5_Korean.rb +53 -0
- data/lib/bcdice/game_system/DungeonsAndDragons_Korean.rb +61 -0
- data/lib/bcdice/game_system/Emoklore.rb +34 -9
- data/lib/bcdice/game_system/Emoklore_Korean.rb +10 -2
- data/lib/bcdice/game_system/FateCoreSystem.rb +10 -6
- data/lib/bcdice/game_system/FullMetalPanic_Korean.rb +28 -0
- data/lib/bcdice/game_system/FutariSousa.rb +37 -12
- data/lib/bcdice/game_system/FutariSousa_Korean.rb +25 -8
- data/lib/bcdice/game_system/GaiaCare.rb +40 -0
- data/lib/bcdice/game_system/GardenOrder.rb +2 -2
- data/lib/bcdice/game_system/GardenOrderReEdit.rb +849 -0
- data/lib/bcdice/game_system/GardenOrder_Korean.rb +839 -0
- data/lib/bcdice/game_system/HatsuneMiku.rb +51 -605
- data/lib/bcdice/game_system/HatsuneMiku_Korean.rb +56 -0
- data/lib/bcdice/game_system/HunterTheReckoning5th.rb +15 -11
- data/lib/bcdice/game_system/Irisbane.rb +17 -30
- data/lib/bcdice/game_system/Irisbane_Korean.rb +52 -0
- data/lib/bcdice/game_system/JuinKansen.rb +41 -208
- data/lib/bcdice/game_system/JuinKansen_Korean.rb +8 -213
- data/lib/bcdice/game_system/KemonoNoMori.rb +67 -276
- data/lib/bcdice/game_system/KemonoNoMori_Korean.rb +62 -0
- data/lib/bcdice/game_system/KinAriel.rb +117 -0
- data/lib/bcdice/game_system/KizunaBullet_Korean.rb +109 -0
- data/lib/bcdice/game_system/KutuluRevised.rb +94 -0
- data/lib/bcdice/game_system/LiverLabyrinth.rb +321 -0
- data/lib/bcdice/game_system/Lost.rb +89 -0
- data/lib/bcdice/game_system/MagicPunk.rb +85 -0
- data/lib/bcdice/game_system/MagicPunk_Korean.rb +39 -0
- data/lib/bcdice/game_system/MarvelHeroicRoleplaying.rb +144 -0
- data/lib/bcdice/game_system/MetallicGuardian_Korean.rb +28 -0
- data/lib/bcdice/game_system/MorkBorg.rb +170 -0
- data/lib/bcdice/game_system/MorkBorg_Korean.rb +49 -0
- data/lib/bcdice/game_system/NanimonaiMura.rb +112 -0
- data/lib/bcdice/game_system/Nechronica_Korean.rb +6 -6
- data/lib/bcdice/game_system/NegikureNegimaki.rb +140 -0
- data/lib/bcdice/game_system/NegikureNegimaki_Korean.rb +48 -0
- data/lib/bcdice/game_system/NeonUnderRealm.rb +122 -0
- data/lib/bcdice/game_system/NinjaSlayer2.rb +170 -49
- data/lib/bcdice/game_system/Nuekagami.rb +19 -261
- data/lib/bcdice/game_system/Nuekagami_Korean.rb +43 -0
- data/lib/bcdice/game_system/ParanoiaPerfect.rb +74 -0
- data/lib/bcdice/game_system/PastFutureParadox.rb +2245 -55
- data/lib/bcdice/game_system/PreciousDays.rb +170 -0
- data/lib/bcdice/game_system/Revulture.rb +8 -5
- data/lib/bcdice/game_system/Revulture_Korean.rb +7 -81
- data/lib/bcdice/game_system/Ryutama.rb +46 -46
- data/lib/bcdice/game_system/SRS.rb +4 -4
- data/lib/bcdice/game_system/SRS_Korean.rb +67 -0
- data/lib/bcdice/game_system/ShinobiGami.rb +154 -1047
- data/lib/bcdice/game_system/ShinobiGami_Korean.rb +102 -0
- data/lib/bcdice/game_system/StarryDolls.rb +70 -508
- data/lib/bcdice/game_system/StarryDolls_Korean.rb +80 -0
- data/lib/bcdice/game_system/StratoShout.rb +1 -1
- data/lib/bcdice/game_system/SwordWorld.rb +28 -2
- data/lib/bcdice/game_system/SwordWorld2_0.rb +1 -1
- data/lib/bcdice/game_system/SwordWorld2_5.rb +67 -3
- data/lib/bcdice/game_system/TacticalExorcist.rb +222 -0
- data/lib/bcdice/game_system/TenkaRyouran_Korean.rb +30 -0
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +38 -33
- data/lib/bcdice/game_system/Ventangle.rb +8 -7
- data/lib/bcdice/game_system/Ventangle_Korean.rb +6 -95
- data/lib/bcdice/game_system/Warhammer4.rb +202 -6
- data/lib/bcdice/game_system/WerewolfTheApocalypse5th.rb +20 -15
- data/lib/bcdice/game_system/WorldEndScrapyard.rb +333 -0
- data/lib/bcdice/game_system/WorldsEndFrontline_Korean.rb +26 -0
- data/lib/bcdice/game_system/YearZeroEngine.rb +7 -7
- data/lib/bcdice/game_system/YearZeroEngine_Korean.rb +46 -0
- data/lib/bcdice/game_system/ZombiLine.rb +29 -36
- data/lib/bcdice/game_system/ZombiLine_Korean.rb +37 -0
- data/lib/bcdice/game_system/cthulhu7th_Korean/full_auto.rb +294 -0
- data/lib/bcdice/game_system/cthulhu7th_Korean/rollable.rb +43 -0
- data/lib/bcdice/game_system/sword_world/rating_options.rb +9 -0
- data/lib/bcdice/game_system/sword_world/rating_parsed.rb +19 -0
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +229 -149
- data/lib/bcdice/game_system/sword_world/transcendent_test.rb +1 -0
- data/lib/bcdice/game_system.rb +42 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +87 -2
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bcdice/game_system/DungeonsAndDragons'
|
|
4
|
+
|
|
5
|
+
module BCDice
|
|
6
|
+
module GameSystem
|
|
7
|
+
class DungeonsAndDragons_Korean < DungeonsAndDragons
|
|
8
|
+
# ゲームシステムの識別子
|
|
9
|
+
ID = 'DungeonsAndDragons:Korean'
|
|
10
|
+
|
|
11
|
+
# ゲームシステム名
|
|
12
|
+
NAME = '던전 앤 드래곤'
|
|
13
|
+
|
|
14
|
+
# ゲームシステム名の読みがな
|
|
15
|
+
SORT_KEY = '国際化:Korean:던전 앤 드래곤'
|
|
16
|
+
|
|
17
|
+
# ダイスボットの使い方
|
|
18
|
+
HELP_MESSAGE = "※ 이 다이스봇은 방의 시스템 이름 표시용입니다.\n"
|
|
19
|
+
|
|
20
|
+
# 성공 결과 문자열
|
|
21
|
+
def success_text
|
|
22
|
+
"성공"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# 실패 결과 문자열
|
|
26
|
+
def failure_text
|
|
27
|
+
"실패"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# 크리티컬 결과 문자열
|
|
31
|
+
def critical_text
|
|
32
|
+
"크리티컬"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# 펌블 결과 문자열
|
|
36
|
+
def fumble_text
|
|
37
|
+
"펌블"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Base.check_result(total, rand_results, cmp_op, target)를 오버라이드
|
|
41
|
+
def check_result(total, rand_results, cmp_op, target)
|
|
42
|
+
# target이 '?' 같은 문자열일 경우 nil 반환
|
|
43
|
+
return nil if target.is_a?(String)
|
|
44
|
+
|
|
45
|
+
# 크리티컬/펌블 처리 (D&D 룰: 1 = 펌블, 20 = 크리티컬)
|
|
46
|
+
dice_total = rand_results.map(&:value).sum
|
|
47
|
+
if rand_results.map(&:sides) == [20]
|
|
48
|
+
return Result.critical(critical_text) if dice_total == 20
|
|
49
|
+
return Result.fumble(fumble_text) if dice_total == 1
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# 일반 성공/실패 판정
|
|
53
|
+
if total.send(cmp_op, target)
|
|
54
|
+
Result.success(success_text)
|
|
55
|
+
else
|
|
56
|
+
Result.failure(failure_text)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -17,10 +17,15 @@ module BCDice
|
|
|
17
17
|
|
|
18
18
|
# ダイスボットの使い方
|
|
19
19
|
HELP_MESSAGE = <<~MESSAGETEXT
|
|
20
|
-
・技能値判定(xDM<=y)
|
|
20
|
+
・技能値判定(xDM<=y / xDM<=yEz)
|
|
21
21
|
"(個数)DM<=(判定値)"で指定します。
|
|
22
22
|
ダイスの個数は省略可能で、省略した場合1個になります。
|
|
23
|
-
|
|
23
|
+
個数や判定値には四則演算(+-*/)を使用できます。
|
|
24
|
+
末尾にEzを付けるとダイス数にzを加算します。E-zで減算も可能です。
|
|
25
|
+
例)2DM<=5 DM<=8 2+2DM<=5 → 4個で判定値5
|
|
26
|
+
2DM<=5E2 → 4個で判定値5 / 3DM<=5E-1 → 2個で判定値5
|
|
27
|
+
※ダイス数が0以下になる場合は確定失敗
|
|
28
|
+
|
|
24
29
|
・技能値判定(sDAa+z)
|
|
25
30
|
"(技能レベル)DA(能力値)+(ダイスボーナス)"で指定します。
|
|
26
31
|
ダイスボーナスの個数は省略可能で、省略した場合0になります。
|
|
@@ -30,7 +35,7 @@ module BCDice
|
|
|
30
35
|
MESSAGETEXT
|
|
31
36
|
|
|
32
37
|
# ダイスボットで使用するコマンドを配列で列挙する
|
|
33
|
-
register_prefix('
|
|
38
|
+
register_prefix('[-+*/\d]*DM<=', '(B|\d*)DA')
|
|
34
39
|
|
|
35
40
|
CRITICAL_VALUE = 1
|
|
36
41
|
FUMBLE_VALUE = 10
|
|
@@ -41,7 +46,7 @@ module BCDice
|
|
|
41
46
|
# @return [nil] 無効なコマンドだった場合
|
|
42
47
|
def eval_game_system_specific_command(command)
|
|
43
48
|
case command
|
|
44
|
-
when
|
|
49
|
+
when %r{^[-+*/\d]*DM<=[-+*/\d]+}
|
|
45
50
|
roll_dm(command)
|
|
46
51
|
when /^(B|\d*)DA\d+(\+)?\d*/
|
|
47
52
|
roll_da(command)
|
|
@@ -93,21 +98,37 @@ module BCDice
|
|
|
93
98
|
# @param [String] command コマンド
|
|
94
99
|
# @return [Result, nil] コマンドの結果
|
|
95
100
|
def roll_dm(command)
|
|
96
|
-
m =
|
|
101
|
+
m = %r{^([-+*/\d]+)?DM<=([-+*/\d]+)(E(-?\d+))?$}.match(command)
|
|
97
102
|
unless m
|
|
98
103
|
return nil
|
|
99
104
|
end
|
|
100
105
|
|
|
101
|
-
|
|
102
|
-
|
|
106
|
+
base_dice_str = m[1]
|
|
107
|
+
threshold_str = m[2]
|
|
108
|
+
modifier = m[4]&.to_i
|
|
109
|
+
|
|
110
|
+
base_dice = base_dice_str ? Arithmetic.eval(base_dice_str, RoundType::FLOOR) : 1
|
|
111
|
+
success_threshold = Arithmetic.eval(threshold_str, RoundType::FLOOR)
|
|
112
|
+
return nil unless base_dice && success_threshold
|
|
113
|
+
|
|
114
|
+
num_dice = modifier ? base_dice + modifier : base_dice
|
|
115
|
+
|
|
116
|
+
# ダイス数が0以下の場合は確定失敗
|
|
103
117
|
if num_dice <= 0
|
|
104
|
-
return
|
|
118
|
+
return Result.fumble("(#{command}) > #{translate('Emoklore.dice_count_zero')}")
|
|
105
119
|
end
|
|
106
120
|
|
|
107
121
|
# ダイスロール本体
|
|
108
122
|
result = dice_roll(num_dice, success_threshold)
|
|
109
123
|
|
|
110
|
-
|
|
124
|
+
# 出力フォーマット:算術式やダイスボーナスがある場合は展開形を表示
|
|
125
|
+
has_arithmetic = base_dice_str&.match?(%r{[-+*/]}) || threshold_str.match?(%r{[-+*/]})
|
|
126
|
+
values_changed = (base_dice_str && base_dice_str != base_dice.to_s) || threshold_str != success_threshold.to_s
|
|
127
|
+
if modifier || (has_arithmetic && values_changed)
|
|
128
|
+
result.text = "(#{command}) > (#{num_dice}DM<=#{success_threshold}) > #{result.text}"
|
|
129
|
+
else
|
|
130
|
+
result.text = "(#{num_dice}DM<=#{success_threshold}) > #{result.text}"
|
|
131
|
+
end
|
|
111
132
|
return result
|
|
112
133
|
end
|
|
113
134
|
|
|
@@ -124,6 +145,10 @@ module BCDice
|
|
|
124
145
|
num_dice = (m[1] == "B" ? 1 : (m[1]&.to_i || 1)) + bonus
|
|
125
146
|
success_threshold = m[1].to_i + m[2].to_i
|
|
126
147
|
|
|
148
|
+
if num_dice <= 0
|
|
149
|
+
return Result.fumble("(#{command}) > #{translate('Emoklore.dice_count_zero')}")
|
|
150
|
+
end
|
|
151
|
+
|
|
127
152
|
result = dice_roll(num_dice, success_threshold)
|
|
128
153
|
|
|
129
154
|
result.text = "(#{command}) > (#{num_dice}DM<=#{success_threshold}) > #{result.text}"
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'bcdice/game_system/Emoklore'
|
|
4
|
+
|
|
3
5
|
module BCDice
|
|
4
6
|
module GameSystem
|
|
5
7
|
class Emoklore_Korean < Emoklore
|
|
@@ -17,10 +19,16 @@ module BCDice
|
|
|
17
19
|
|
|
18
20
|
# ダイスボットの使い方
|
|
19
21
|
HELP_MESSAGE = <<~MESSAGETEXT
|
|
20
|
-
・기능치 판정(xDM<=y)
|
|
22
|
+
・기능치 판정(xDM<=y / xDM<=yEz)
|
|
21
23
|
"(개수)DM<=(판정치)"로 판정합니다.
|
|
22
24
|
주사위의 개수는 생략 가능하며, 생략 시 1개로 설정됩니다.
|
|
23
|
-
|
|
25
|
+
주사위 개수와 판정치에는 사칙연산(+-*/)을 사용할 수 있습니다.
|
|
26
|
+
수식 끝에 Ez를 붙이면 주사위 수에 z를 더합니다. E-z로 빼기도 가능합니다.
|
|
27
|
+
ex)2DM<=5 DM<=8 2DM<=3+2
|
|
28
|
+
2+2DM<=5 → 주사위 4개로 판정치 5
|
|
29
|
+
2DM<=5E2 → 주사위 2+2 = 주사위 4개로 판정치 5
|
|
30
|
+
3DM<=5E-1 → 주사위 3-1 = 주사위 2개로 판정치 5
|
|
31
|
+
※주사위 수가 0 이하가 되는 경우 확정 실패
|
|
24
32
|
|
|
25
33
|
・기능치 판정(sDAa+z)
|
|
26
34
|
"(기능 레벨)DA(능력치)+(주사위 보너스)"로 판정합니다.
|
|
@@ -16,13 +16,13 @@ module BCDice
|
|
|
16
16
|
HELP_MESSAGE = <<~MESSAGETEXT
|
|
17
17
|
■ ファッジダイスによる判定 (xDF+y>=t)
|
|
18
18
|
ファッジダイスをx個ダイスロールし、結果を判定します。
|
|
19
|
-
x: ダイス数
|
|
19
|
+
x: ダイス数(省略時4)
|
|
20
20
|
y: 修正値(省略可)
|
|
21
|
-
t:
|
|
22
|
-
例)4DF, 4DF>=3, 4DF+1>=3
|
|
21
|
+
t: 目標値(省略可)
|
|
22
|
+
例)4DF, 4DF>=3, 4DF+1>=3, DF, DF>=3, DF+1>=3
|
|
23
23
|
MESSAGETEXT
|
|
24
24
|
|
|
25
|
-
register_prefix('\d
|
|
25
|
+
register_prefix('\d*DF')
|
|
26
26
|
|
|
27
27
|
def eval_game_system_specific_command(command)
|
|
28
28
|
roll_df(command)
|
|
@@ -40,7 +40,9 @@ module BCDice
|
|
|
40
40
|
return nil
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
dice_x = 4
|
|
44
|
+
dice_x = parsed.prefix_number if parsed.prefix_number
|
|
45
|
+
dice_list = roll_fate_dice(dice_x)
|
|
44
46
|
total = dice_list.sum() + parsed.modify_number
|
|
45
47
|
|
|
46
48
|
fate_dice_list = dice_list.map do |i|
|
|
@@ -103,7 +105,9 @@ module BCDice
|
|
|
103
105
|
if target.nil?
|
|
104
106
|
Result.new
|
|
105
107
|
elsif total == target
|
|
106
|
-
Result.success("Tie")
|
|
108
|
+
Result.success("Tie(+0)")
|
|
109
|
+
elsif total == target + 1
|
|
110
|
+
Result.success("Succeed(+1)")
|
|
107
111
|
elsif total >= target + 3
|
|
108
112
|
Result.critical("Succeed with Style")
|
|
109
113
|
elsif total >= target
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bcdice/game_system/FullMetalPanic'
|
|
4
|
+
|
|
5
|
+
module BCDice
|
|
6
|
+
module GameSystem
|
|
7
|
+
class FullMetalPanic_Korean < FullMetalPanic
|
|
8
|
+
# ゲームシステムの識別子
|
|
9
|
+
ID = 'FullMetalPanic:Korean'
|
|
10
|
+
|
|
11
|
+
# ゲームシステム名
|
|
12
|
+
NAME = '풀 메탈 패닉! RPG'
|
|
13
|
+
|
|
14
|
+
# ゲームシステム名の読みがな
|
|
15
|
+
SORT_KEY = '国際化:Korean:풀 메탈 패닉! RPG'
|
|
16
|
+
|
|
17
|
+
set_aliases_for_srs_roll('MG', 'FP')
|
|
18
|
+
|
|
19
|
+
register_prefix_from_super_class()
|
|
20
|
+
|
|
21
|
+
def initialize(command)
|
|
22
|
+
super(command)
|
|
23
|
+
|
|
24
|
+
@locale = :ko_kr
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -19,6 +19,18 @@ module BCDice
|
|
|
19
19
|
【DT6】…6面ダイスを2つ振って判定します。『有利』なら【3DT6】、『不利』なら【1DT6】を使います。
|
|
20
20
|
助手用:【AS】…6面ダイスを2つ振って判定します。『有利』なら【3AS】、『不利』なら【1AS】を使います。
|
|
21
21
|
【AS10】…10面ダイスを2つ振って判定します。『有利』なら【3AS10】、『不利』なら【1AS10】を使います。
|
|
22
|
+
|
|
23
|
+
・目標値の変更 (>=x)
|
|
24
|
+
">=目標値"をつけると、成功となる出目の基準を変更します。
|
|
25
|
+
>=2と指定すると、2以上で成功になります。
|
|
26
|
+
例)DT>=2 3AS10>=3
|
|
27
|
+
|
|
28
|
+
・スペシャル値の追加 ([x])
|
|
29
|
+
"[スペシャル値]"を付加することで、通常のスペシャル(出目6)に加えて、指定した数字でもスペシャルが発生するようになります。
|
|
30
|
+
カンマ(,)で区切って記入することで、複数の出目をスペシャルに指定することも可能です。
|
|
31
|
+
目標値の変更(>=)と併用する場合は、必ず目標値指定の直後に記述してください。
|
|
32
|
+
例)DT[5] AS[5,7] DT>=2[5,7]
|
|
33
|
+
|
|
22
34
|
・各種表
|
|
23
35
|
【セッション時】
|
|
24
36
|
異常な癖決定表 SHRD/新・異常な癖決定表 SHND
|
|
@@ -44,6 +56,7 @@ module BCDice
|
|
|
44
56
|
同僚たちと一緒に捜査する EVO/頻染みの店シチュエーション EVF/ハードBデカアクション EVB
|
|
45
57
|
探偵を大人しくさせる捜査 EVL/伝統的捜査 EVZ/原始的捜査 EVR
|
|
46
58
|
超探偵調査 EV6S/神速捜査 EV6F
|
|
59
|
+
変な助手 EV8A/代表的NPC捜査 EV8N
|
|
47
60
|
感情表
|
|
48
61
|
感情表A/B FLT66・FLT10
|
|
49
62
|
気に入っているところ FLTL66 /気に入らないところ FLTD66
|
|
@@ -72,12 +85,17 @@ module BCDice
|
|
|
72
85
|
register_prefix('(\d+)?DT(?:6)?', '(\d+)?AS(?:10)?')
|
|
73
86
|
|
|
74
87
|
def eval_game_system_specific_command(command)
|
|
75
|
-
if (m = /^(\d+)?DT(?:6)?$/i.match(command))
|
|
88
|
+
if (m = /^(\d+)?DT(?:6)?(?:>=(\d+))?(?:\[(\d+(?:,\d+)*)\])?$/i.match(command))
|
|
76
89
|
count = m[1]&.to_i || 2
|
|
77
|
-
|
|
78
|
-
|
|
90
|
+
target = m[2]&.to_i
|
|
91
|
+
specials = m[3] ? m[3].split(',').map(&:to_i) : []
|
|
92
|
+
return roll_dt(command, count, target, specials)
|
|
93
|
+
|
|
94
|
+
elsif (m = /^(\d+)?AS(?:10)?(?:>=(\d+))?(?:\[(\d+(?:,\d+)*)\])?$/i.match(command))
|
|
79
95
|
count = m[1]&.to_i || 2
|
|
80
|
-
|
|
96
|
+
target = m[2]&.to_i
|
|
97
|
+
specials = m[3] ? m[3].split(',').map(&:to_i) : []
|
|
98
|
+
return roll_as(command, count, target, specials)
|
|
81
99
|
end
|
|
82
100
|
|
|
83
101
|
return roll_tables(command, self.class::TABLES)
|
|
@@ -92,21 +110,24 @@ module BCDice
|
|
|
92
110
|
SPECIAL_DICE = 6
|
|
93
111
|
|
|
94
112
|
# 探偵用判定コマンド DT
|
|
95
|
-
def roll_dt(command, count)
|
|
113
|
+
def roll_dt(command, count, target = nil, specials = nil)
|
|
96
114
|
dice_list =
|
|
97
|
-
if command =~ /^(\d*)DT6
|
|
115
|
+
if command =~ /^(\d*)DT6/i
|
|
98
116
|
@randomizer.roll_barabara(count, 6)
|
|
99
117
|
else
|
|
100
118
|
@randomizer.roll_barabara(count, 10)
|
|
101
119
|
end
|
|
120
|
+
|
|
102
121
|
max = dice_list.max
|
|
122
|
+
threshold = target || SUCCESS_THRESHOLD
|
|
123
|
+
special_values = ([SPECIAL_DICE] + specials).uniq
|
|
103
124
|
|
|
104
125
|
result =
|
|
105
126
|
if max <= 1
|
|
106
127
|
Result.fumble(translate("FutariSousa.DT.fumble"))
|
|
107
|
-
elsif dice_list.
|
|
128
|
+
elsif (dice_list & special_values).any?
|
|
108
129
|
Result.critical(translate("FutariSousa.DT.special"))
|
|
109
|
-
elsif max >=
|
|
130
|
+
elsif max >= threshold
|
|
110
131
|
Result.success(translate("success"))
|
|
111
132
|
else
|
|
112
133
|
Result.failure(translate("failure"))
|
|
@@ -117,21 +138,23 @@ module BCDice
|
|
|
117
138
|
end
|
|
118
139
|
|
|
119
140
|
# 助手用判定コマンド AS
|
|
120
|
-
def roll_as(command, count)
|
|
141
|
+
def roll_as(command, count, target = nil, specials = nil)
|
|
121
142
|
dice_list =
|
|
122
|
-
if command =~ /^(\d*)AS10
|
|
143
|
+
if command =~ /^(\d*)AS10/i
|
|
123
144
|
@randomizer.roll_barabara(count, 10)
|
|
124
145
|
else
|
|
125
146
|
@randomizer.roll_barabara(count, 6)
|
|
126
147
|
end
|
|
127
148
|
max = dice_list.max
|
|
149
|
+
threshold = target || SUCCESS_THRESHOLD
|
|
150
|
+
special_values = ([SPECIAL_DICE] + specials).uniq
|
|
128
151
|
|
|
129
152
|
result =
|
|
130
153
|
if max <= 1
|
|
131
154
|
Result.fumble(translate("FutariSousa.AS.fumble"))
|
|
132
|
-
elsif dice_list.
|
|
155
|
+
elsif (dice_list & special_values).any?
|
|
133
156
|
Result.critical(translate("FutariSousa.AS.special"))
|
|
134
|
-
elsif max >=
|
|
157
|
+
elsif max >= threshold
|
|
135
158
|
Result.success(translate("FutariSousa.AS.success"))
|
|
136
159
|
else
|
|
137
160
|
Result.failure(translate("failure"))
|
|
@@ -262,6 +285,8 @@ module BCDice
|
|
|
262
285
|
"EVR" => DiceTable::Table.from_i18n("FutariSousa.table.EVR", locale),
|
|
263
286
|
"EV6S" => DiceTable::Table.from_i18n("FutariSousa.table.EV6S", locale),
|
|
264
287
|
"EV6F" => DiceTable::Table.from_i18n("FutariSousa.table.EV6F", locale),
|
|
288
|
+
"EV8A" => DiceTable::Table.from_i18n("FutariSousa.table.EV8A", locale),
|
|
289
|
+
"EV8N" => DiceTable::Table.from_i18n("FutariSousa.table.EV8N", locale),
|
|
265
290
|
"OBT" => DiceTable::D66Table.from_i18n("FutariSousa.table.OBT", locale),
|
|
266
291
|
"ACT" => DiceTable::Table.from_i18n("FutariSousa.table.ACT", locale),
|
|
267
292
|
"EWT" => DiceTable::Table.from_i18n("FutariSousa.table.EWT", locale),
|
|
@@ -18,20 +18,36 @@ module BCDice
|
|
|
18
18
|
HELP_MESSAGE = <<~MESSAGETEXT
|
|
19
19
|
・판정용 커맨드
|
|
20
20
|
탐정용:【DT】…10면체 주사위를 2개 굴려 판정합니다.『유리함』이라면【3DT】, 『불리함』이라면【1DT】를 사용합니다.
|
|
21
|
+
【DT6】…6면체 주사위를 2개 굴려 판정합니다.『유리함』이라면【3DT6】,『불리함』이라면【1DT6】를 사용합니다.
|
|
21
22
|
조수용:【AS】…6면체 주사위를 2개 굴려 판정합니다. 『유리함』이라면【3AS】, 『불리함』이라면【1AS】를 사용합니다.
|
|
23
|
+
【AS10】…10면체 주사위를 2개 굴려 판정합니다.『유리함』이라면【3AS10】,『불리함』이라면【1AS10】를 사용합니다.
|
|
22
24
|
|
|
25
|
+
・목표값 변경 (>=x)
|
|
26
|
+
명령어 뒤에 ">=목표값"를 붙이면, 성공으로 판정되는 주사위 눈의 기준을 변경할 수 있습니다.
|
|
27
|
+
>=2라고 지정하면, 주사위 눈이 2 이상일 때 성공으로 판정합니다.
|
|
28
|
+
예시)DT>=2 3AS10>=3
|
|
29
|
+
|
|
30
|
+
・스페셜 값 추가 ([x])
|
|
31
|
+
명령어 뒤에 "[스페셜 값]"을 붙이면, 일반적인 스페셜(주사위 눈 6)외에도 지정한 숫자가 나왔을 때 스페셜이 발생합니다.
|
|
32
|
+
쉼표(,)로 구분해서 입력하면 여러 개의 숫자를 스페셜 값으로 지정할 수 있습니다.
|
|
33
|
+
목표값 변경(>=)과 스페셜 값 추가를 동시에 사용할 때는, 반드시 목표값을 먼저 적고 그 뒤에 스페셜 값을 이어서 입력해 주세요.
|
|
34
|
+
예시)DT[5] AS[5,7] DT>=2[5,7]
|
|
35
|
+
|
|
23
36
|
・각종표
|
|
24
37
|
【세션 시】
|
|
25
|
-
기벽 결정 표 SHRD
|
|
38
|
+
기벽 결정 표 SHRD/신 기벽 결정 표 SHND
|
|
39
|
+
평범한? 기벽 결정 표 SHAD/형사 기벽 결정 표 SHKD
|
|
40
|
+
규격 외 탐정용 기벽 결정 표 SHLD
|
|
26
41
|
발언 표 SHFM/수사 강행 표 SHBT/시치미 표 SHPI
|
|
27
|
-
사건에 몰두 표 SHEG/파트너와…… 표 SHWP/뭔가 하고
|
|
42
|
+
사건에 몰두 표 SHEG/파트너와…… 표 SHWP/뭔가 하고 있다 표 SHDS
|
|
28
43
|
기상천외 표 SHFT/갑작스런 영감 표 SHIN/희노애락 표 SHEM
|
|
29
44
|
인간 모방 표 SHHE/인간 모방 실패 표 SHHF/파트너를 향한 장난 표 SHMP
|
|
30
|
-
|
|
31
|
-
억지
|
|
32
|
-
오만한 태도 표 SHAR/비교적 가벼운
|
|
33
|
-
수사 방식 표 SHIM/귀족 표
|
|
34
|
-
형사 특유의 습관 표 SHHD
|
|
45
|
+
의미 있어 보이는 언동 표 SHSB/애가 타다 표 SHFR/갑자기 왜그래 표 SHIS
|
|
46
|
+
억지 요구를 하다 표 SHSE/멀쩡해 보이는 언동 표 SHLM/질투의 화신 표 SHJS
|
|
47
|
+
오만한 태도 표 SHAR/비교적 가벼운 기벽 표 SHRM/즉각 행동 표 SHNT
|
|
48
|
+
수사 방식 표 SHIM/귀족 표 SHNO/설명하지 않는다 표 SHNE
|
|
49
|
+
형사 특유의 습관 표 SHHD/유명한 탐정 표 SHGD/엄청나게 굉장해 표 SHSA
|
|
50
|
+
규격 외 사건에 몰두 표 SHEP/규격 외 파트너와……표 SHXP
|
|
35
51
|
|
|
36
52
|
이벤트 표
|
|
37
53
|
현장에서 EVS/왜? EVW/협력자와 함께 EVN
|
|
@@ -42,6 +58,7 @@ module BCDice
|
|
|
42
58
|
형사 탐문 수사 EVQ/형사 대규모 수사 EVM/비밀스러운 정보 교환 EVP
|
|
43
59
|
동료들과 함께 수사 EVO/단골 가게 시추에이션 EVF/하드B 형사 액션 EVB
|
|
44
60
|
탐정을 얌전하게 만드는 수사 EVL/전통적 수사 EVZ/원시적 수사 EVR
|
|
61
|
+
규격 외 탐정 조사 EV6S/신속조사 EV6F
|
|
45
62
|
|
|
46
63
|
감정 표
|
|
47
64
|
감정 표A/B FLT66・FLT10
|
|
@@ -52,7 +69,7 @@ module BCDice
|
|
|
52
69
|
동료 FLTC66/부하 FLTU66/상사 FLTO66
|
|
53
70
|
수사 방식 FLTI66
|
|
54
71
|
조사 방해 요인 표 OBT 상태 이상 표 ACT 목격자 표 EWT 미제 사건 표 WMT
|
|
55
|
-
추억의 물품 결정 표 MIT
|
|
72
|
+
추억의 물품 결정 표 MIT 에피소드가 있는 추억의 물품 표 MITE
|
|
56
73
|
호칭 표A・B NCT66・NCT10
|
|
57
74
|
|
|
58
75
|
【설정】
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "bcdice/game_system/Emoklore"
|
|
4
|
+
|
|
5
|
+
module BCDice
|
|
6
|
+
module GameSystem
|
|
7
|
+
class GaiaCare < Emoklore
|
|
8
|
+
# ゲームシステムの識別子
|
|
9
|
+
ID = "GaiaCare"
|
|
10
|
+
|
|
11
|
+
# ゲームシステム名
|
|
12
|
+
NAME = "ガイアケアTRPG"
|
|
13
|
+
|
|
14
|
+
# ゲームシステム名の読みがな
|
|
15
|
+
SORT_KEY = "かいあけあTRPG"
|
|
16
|
+
|
|
17
|
+
# 親クラスのコマンドを継承
|
|
18
|
+
register_prefix_from_super_class()
|
|
19
|
+
|
|
20
|
+
# ダイスボットの使い方
|
|
21
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
|
22
|
+
・技能値判定(xDM<=y / xDM<=yEz)
|
|
23
|
+
"(個数)DM<=(判定値)"で指定します。
|
|
24
|
+
ダイスの個数は省略可能で、省略した場合1個になります。
|
|
25
|
+
個数や判定値には四則演算(+-*/)を使用できます。
|
|
26
|
+
末尾にEzを付けるとダイス数にzを加算します。E-zで減算も可能です。
|
|
27
|
+
例)2DM<=5 DM<=8 2+2DM<=5 → 4個で判定値5
|
|
28
|
+
2DM<=5E2 → 4個で判定値5 / 3DM<=5E-1 → 2個で判定値5
|
|
29
|
+
※ダイス数が0以下になる場合は確定失敗
|
|
30
|
+
|
|
31
|
+
・技能値判定(sDAa+z)
|
|
32
|
+
"(技能レベル)DA(能力値)+(ダイスボーナス)"で指定します。
|
|
33
|
+
ダイスボーナスの個数は省略可能で、省略した場合0になります。
|
|
34
|
+
技能レベルは1~3の数値、またはベース技能の場合"b"が入ります。
|
|
35
|
+
ダイスの個数は技能レベルとダイスボーナスの個数により決定し、s+z個のダイスを振ります。(s="b"の場合はs=1)
|
|
36
|
+
判定値はs+aとなります。(s="b"の場合はs=0)
|
|
37
|
+
MESSAGETEXT
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|