bcdice 3.15.0 → 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 +140 -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/DoubleCross/ja_jp.yml +2 -2
- data/i18n/Dracurouge/ko_kr.yml +1284 -205
- data/i18n/Emoklore/ja_jp.yml +1 -0
- data/i18n/Emoklore/ko_kr.yml +8 -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/SkynautsBouken/ja_jp.yml +28 -28
- 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/EdgeFlippers.rb +315 -0
- data/lib/bcdice/game_system/Emoklore.rb +34 -9
- data/lib/bcdice/game_system/Emoklore_Korean.rb +50 -0
- 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/Garactier.rb +1 -1
- 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 +46 -0
- 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/MeikyuKingdomBasic.rb +122 -2
- 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 +51 -0
- 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 +41 -0
- 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/meikyu_kingdom_basic/atoz_table.rb +1184 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/randr236_table.rb +254 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +54 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/tk_table.rb +755 -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 +47 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +96 -2
|
@@ -33,8 +33,8 @@ module BCDice
|
|
|
33
33
|
|
|
34
34
|
def eval_game_system_specific_command(command)
|
|
35
35
|
m = /(\d+)AN<=(\d+([+-]\d+)*)/i.match(command)
|
|
36
|
-
if TABLES.key?(command)
|
|
37
|
-
return roll_tables(command, TABLES)
|
|
36
|
+
if self.class::TABLES.key?(command)
|
|
37
|
+
return roll_tables(command, self.class::TABLES)
|
|
38
38
|
elsif m
|
|
39
39
|
return check_action(m)
|
|
40
40
|
else
|
|
@@ -55,42 +55,25 @@ module BCDice
|
|
|
55
55
|
result = has_critical ? suc_cnt + 2 : suc_cnt
|
|
56
56
|
|
|
57
57
|
Result.new.tap do |r|
|
|
58
|
-
r.text = "(#{dice_cnt}B10<=#{target}) > #{dice_str} > #{result > 0 ? '
|
|
58
|
+
r.text = "(#{dice_cnt}B10<=#{target}) > #{dice_str} > #{result > 0 ? translate('success') : translate('failure')}(#{translate('AnimaAnimus.achievement_value')}:#{result})#{has_critical ? " (#{translate('AnimaAnimus.critical')})" : ''}"
|
|
59
59
|
r.critical = has_critical
|
|
60
60
|
r.success = result > 0
|
|
61
61
|
r.failure = !r.success?
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
'
|
|
71
|
-
'
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
'魔宴の情報屋/<調達>/魔宴の情報屋に接触して情報を聞き出すことにした。一筋縄ではいかない相手らしいが、はたして……?',
|
|
78
|
-
'違法調査/<犯罪>/法に触れるやり方で情報を集めることにした。ハッキング、窃盗、恐喝、どんな手段を選ぼうか。',
|
|
79
|
-
'聞き込み/<自我>/街ゆく人びとに聞き込みを行なう。地道な活動こそが目標にたどり着くための最短の方法だ。',
|
|
80
|
-
]
|
|
81
|
-
),
|
|
82
|
-
'LT' => DiceTable::RangeTable.new(
|
|
83
|
-
'喪失表',
|
|
84
|
-
'1d10',
|
|
85
|
-
[
|
|
86
|
-
[1..2, "存在/存在が希薄になり、知り合いや友人に自分の存在を忘れられてしまう。いずれ大切なパートナーの記憶からも消え、この世界でひとりぼっちになる。\nあなたの出自を消去すること。"],
|
|
87
|
-
[3..4, "記憶/自分の大切な記憶をひとつ失なう。これからは力を使うたびに記憶をひとつ失なうことになり、最後には大切なパートナーのことも思い出せなくなってしまう。\nあなたのメモリアをひとつ選択して消去すること。シナリオメモリアは選択できない。"],
|
|
88
|
-
[5..6, "容姿/だんだんと以前とはかけ離れた姿に変わっていく。いずれ誰も自分のことを自分だと気づかなくなるのだろう。\nあなたの特徴的な外見を失なう。内容をふさわしいものに書き換えること(特徴的な外見が美しい髪であれば醜い髪など)。"],
|
|
89
|
-
[7..8, "感情/喜怒哀楽の感情のうち、いずれかひとつを失なう。力を使うたびに他の感情も失っていき、最後にはただ生き残るために戦う機械となる。\nポジティブかネガティブのどちらかを選択する。選択した感情をすべてのメモリアから消去する。消去した結果、表出感情がなくなってしまった場合、残った感情を表出感情にすること。なお、新しくメモリアを取得した場合も、選んだ感情を得ることはできない。"],
|
|
90
|
-
[9..10, "五感/少しずつ五感が鈍くなる。今までできていたはずのことができなくなってしまう。\nあなたの特技をひとつ選択する。選択した特技に×をつけること。×が付いた技能で判定を行なうことはできず、判定を求められた場合は自動的に失敗となる。"],
|
|
91
|
-
]
|
|
92
|
-
),
|
|
93
|
-
}.freeze
|
|
65
|
+
class << self
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
def translate_tables(locale)
|
|
69
|
+
{
|
|
70
|
+
'IGT' => DiceTable::Table.from_i18n('AnimaAnimus.table.IGT', locale),
|
|
71
|
+
'LT' => DiceTable::RangeTable.from_i18n('AnimaAnimus.table.LT', locale),
|
|
72
|
+
}
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
TABLES = translate_tables(:ja_jp).freeze
|
|
94
77
|
|
|
95
78
|
# ダイスボットで使用するコマンドを配列で列挙する
|
|
96
79
|
register_prefix('\d+AN<=', TABLES.keys)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bcdice/game_system/AnimaAnimus'
|
|
4
|
+
|
|
5
|
+
module BCDice
|
|
6
|
+
module GameSystem
|
|
7
|
+
class AnimaAnimus_Korean < AnimaAnimus
|
|
8
|
+
# ゲームシステムの識別子
|
|
9
|
+
ID = 'AnimaAnimus:Korean'
|
|
10
|
+
|
|
11
|
+
# ゲームシステム名
|
|
12
|
+
NAME = '아니마 아니무스'
|
|
13
|
+
|
|
14
|
+
# ゲームシステム名の読みがな
|
|
15
|
+
SORT_KEY = '国際化:Korean:아니마 아니무스'
|
|
16
|
+
|
|
17
|
+
# ダイスボットの使い方
|
|
18
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
|
19
|
+
・행위 판정(xAN<=y±z)
|
|
20
|
+
십면체 주사위를 x개 굴려서 판정합니다. 달성치가 산출됩니다(크리티컬 발생 시 2 증가).
|
|
21
|
+
x:굴리는 주사위의 수. 혼백값이나 공격값.
|
|
22
|
+
y:성공값.
|
|
23
|
+
z:성공값에 대한 보정. 생략 가능.
|
|
24
|
+
(예) 2AN<=3+1 5AN<=7
|
|
25
|
+
・각종 표
|
|
26
|
+
정보 수집표 IGT/상실표 LT
|
|
27
|
+
MESSAGETEXT
|
|
28
|
+
|
|
29
|
+
TABLES = translate_tables(:ko_kr).freeze
|
|
30
|
+
|
|
31
|
+
def initialize(command)
|
|
32
|
+
super(command)
|
|
33
|
+
@locale = :ko_kr
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
register_prefix('\d+AN<=', TABLES.keys)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'bcdice/base'
|
|
3
4
|
require 'bcdice/dice_table/range_table'
|
|
5
|
+
require 'bcdice/dice_table/table'
|
|
6
|
+
require "bcdice/format"
|
|
4
7
|
|
|
5
8
|
module BCDice
|
|
6
9
|
module GameSystem
|
|
@@ -32,8 +35,15 @@ module BCDice
|
|
|
32
35
|
・サイドトラック・チャート(STC)
|
|
33
36
|
INFO_MESSAGE_TEXT
|
|
34
37
|
|
|
38
|
+
register_prefix(
|
|
39
|
+
'BJ',
|
|
40
|
+
'DC[LSC]',
|
|
41
|
+
'CPC',
|
|
42
|
+
'STC'
|
|
43
|
+
)
|
|
44
|
+
|
|
35
45
|
def eval_game_system_specific_command(command)
|
|
36
|
-
resolute_action(command) || roll_death_chart(command) || roll_tables(command, TABLES)
|
|
46
|
+
resolute_action(command) || roll_death_chart(command) || roll_tables(command, self.class::TABLES)
|
|
37
47
|
end
|
|
38
48
|
|
|
39
49
|
private
|
|
@@ -52,7 +62,7 @@ module BCDice
|
|
|
52
62
|
result = action_result(roll_result, dice10, dice01, success_rate)
|
|
53
63
|
|
|
54
64
|
sequence = [
|
|
55
|
-
"
|
|
65
|
+
translate("BlackJacket.action_judge", rate: success_rate),
|
|
56
66
|
"1D100[#{dice10},#{dice01}]=#{roll_result_text}",
|
|
57
67
|
roll_result_text.to_s,
|
|
58
68
|
result.text
|
|
@@ -62,29 +72,23 @@ module BCDice
|
|
|
62
72
|
result
|
|
63
73
|
end
|
|
64
74
|
|
|
65
|
-
SUCCESS_STR = "成功"
|
|
66
|
-
FAILURE_STR = "失敗"
|
|
67
|
-
CRITICAL_STR = (SUCCESS_STR + " > クリティカル! パワーの代償1/2").freeze
|
|
68
|
-
FUMBLE_STR = (FAILURE_STR + " > ファンブル! パワーの代償2倍&振り直し不可").freeze
|
|
69
|
-
MISERY_STR = (FAILURE_STR + " > ミザリー! パワーの代償2倍&振り直し不可").freeze
|
|
70
|
-
|
|
71
75
|
def action_result(total, tens, ones, success_rate)
|
|
72
76
|
if total == 100
|
|
73
|
-
Result.fumble(
|
|
77
|
+
Result.fumble(translate("BlackJacket.misery"))
|
|
74
78
|
elsif success_rate <= 0
|
|
75
|
-
Result.fumble(
|
|
79
|
+
Result.fumble(translate("BlackJacket.fumble"))
|
|
76
80
|
elsif total <= success_rate - 100
|
|
77
|
-
Result.critical(
|
|
81
|
+
Result.critical(translate("BlackJacket.critical"))
|
|
78
82
|
elsif tens == ones
|
|
79
83
|
if total <= success_rate
|
|
80
|
-
Result.critical(
|
|
84
|
+
Result.critical(translate("BlackJacket.critical"))
|
|
81
85
|
else
|
|
82
|
-
Result.fumble(
|
|
86
|
+
Result.fumble(translate("BlackJacket.fumble"))
|
|
83
87
|
end
|
|
84
88
|
elsif total <= success_rate
|
|
85
|
-
Result.success(
|
|
89
|
+
Result.success(translate("success"))
|
|
86
90
|
else
|
|
87
|
-
Result.failure(
|
|
91
|
+
Result.failure(translate("failure"))
|
|
88
92
|
end
|
|
89
93
|
end
|
|
90
94
|
|
|
@@ -112,24 +116,25 @@ module BCDice
|
|
|
112
116
|
|
|
113
117
|
# @param randomizer [Randomizer]
|
|
114
118
|
# @param minus_score [Integer]
|
|
119
|
+
# @param locale [Symbol]
|
|
115
120
|
# @return [String]
|
|
116
|
-
def roll(randomizer, minus_score)
|
|
121
|
+
def roll(randomizer, minus_score, locale)
|
|
117
122
|
dice = randomizer.roll_once(10)
|
|
118
123
|
key_number = dice + minus_score
|
|
119
124
|
|
|
120
|
-
key_text, chosen = at(key_number)
|
|
125
|
+
key_text, chosen = at(key_number, locale)
|
|
121
126
|
|
|
122
|
-
return "
|
|
127
|
+
return I18n.translate("BlackJacket.death_chart_result", locale: locale, name: @name, minus: minus_score, dice: dice, key: key_number, key_text: key_text, chosen: chosen)
|
|
123
128
|
end
|
|
124
129
|
|
|
125
130
|
private
|
|
126
131
|
|
|
127
132
|
# key_numberの10から20がindexの0から10に対応する
|
|
128
|
-
def at(key_number)
|
|
133
|
+
def at(key_number, locale)
|
|
129
134
|
if key_number < 10
|
|
130
|
-
["
|
|
135
|
+
[I18n.translate("BlackJacket.death_chart_under", locale: locale), @chart.first]
|
|
131
136
|
elsif key_number > 20
|
|
132
|
-
["
|
|
137
|
+
[I18n.translate("BlackJacket.death_chart_over", locale: locale), @chart.last]
|
|
133
138
|
else
|
|
134
139
|
[key_number.to_s, @chart[key_number - 10]]
|
|
135
140
|
end
|
|
@@ -142,103 +147,42 @@ module BCDice
|
|
|
142
147
|
return m
|
|
143
148
|
end
|
|
144
149
|
|
|
145
|
-
chart = DEATH_CHARTS[m[1]]
|
|
150
|
+
chart = self.class::DEATH_CHARTS[m[1]]
|
|
146
151
|
minus_score = m[2].to_i
|
|
147
152
|
|
|
148
|
-
return chart.roll(@randomizer, minus_score)
|
|
153
|
+
return chart.roll(@randomizer, minus_score, @locale)
|
|
149
154
|
end
|
|
150
155
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
'肉体',
|
|
154
|
-
[
|
|
155
|
-
"何も無し。キミは奇跡的に一命を取り留めた。闘いは続く。",
|
|
156
|
-
"激痛が走る。以後、イベント終了時まで、全ての判定の成功率-10%。",
|
|
157
|
-
"もう、体が動かない……。キミは[硬直2]を受ける。",
|
|
158
|
-
"渾身の一撃!! キミは〈生存〉判定を行なう。失敗した場合、[死亡]する。",
|
|
159
|
-
"突然、目の前が真っ暗になった。キミは[気絶2]を受ける。",
|
|
160
|
-
"以後、イベント終了時まで、全ての判定の成功率-20%。",
|
|
161
|
-
"記録的一撃!! キミは〈生存〉-20%の判定を行なう。失敗した場合、[死亡]する。",
|
|
162
|
-
"生きているのか死んでいるのか。キミは[瀕死2]を受ける。",
|
|
163
|
-
"叙事詩的一撃!! キミは〈生存〉-30%の判定を行なう。失敗した場合、[死亡]する。",
|
|
164
|
-
"以後、イベント終了時まで、全ての判定の成功率-30%。",
|
|
165
|
-
"神話的一撃!! キミは宙を舞って三回転ほどした後、地面に叩きつけられる。見るも無惨な姿。肉体は原型を留めていない(キミは[死亡]した)。",
|
|
166
|
-
]
|
|
167
|
-
),
|
|
168
|
-
'S' => DeathChart.new(
|
|
169
|
-
'精神',
|
|
170
|
-
[
|
|
171
|
-
"何も無し。キミは歯を食いしばってストレスに耐えた。",
|
|
172
|
-
"以後、イベント終了時まで、全ての判定の成功率-10%。",
|
|
173
|
-
"云い知れぬ恐怖がキミを襲う。キミは[恐怖2]を受ける。",
|
|
174
|
-
"とても傷ついた。キミは〈意思〉判定を行なう。失敗した場合、[絶望]してNPCとなる。",
|
|
175
|
-
"キミは意識を失った。キミは[気絶2]を受ける。",
|
|
176
|
-
"以後、イベント終了時まで、全ての判定の成功率-20%。",
|
|
177
|
-
"信じる者にだまされたような痛み。キミは〈意思〉-20%の判定を行なう。失敗した場合、[絶望]してNPCとなる。",
|
|
178
|
-
"仲間に裏切られたのかも知れない。キミは[混乱2]を受ける。",
|
|
179
|
-
"あまりに残酷な現実。キミは〈意思〉-30%の判定を行なう。失敗した場合、[絶望]してNPCとなる。",
|
|
180
|
-
"以後、イベント終了時まで、全ての判定の成功率-30%。",
|
|
181
|
-
"宇宙開闢の理に触れるも、それは人類の認識限界を超える何かであった。キミは[絶望]し、以後NPCとなる。",
|
|
182
|
-
]
|
|
183
|
-
),
|
|
184
|
-
'C' => DeathChart.new(
|
|
185
|
-
'環境',
|
|
186
|
-
[
|
|
187
|
-
"何も無し。キミは黒い噂を握りつぶした。",
|
|
188
|
-
"以後、イベント終了時まで、全ての判定の成功率-10%。",
|
|
189
|
-
"ピンチ! 以後、ラウンド終了時まで、キミはカルマを使用できない。",
|
|
190
|
-
"悪い噂が流れる。キミは〈交渉〉判定を行なう。失敗した場合、キミは仲間からの信頼を失って[無縁]され、NPCとなる。",
|
|
191
|
-
"以後、イベント終了時まで、代償にクレジットを消費するパワーを使用できない。",
|
|
192
|
-
"キミの悪評が世間に知れ渡る。協力者からの支援が打ち切られる。以後、シナリオ終了時まで、全ての判定の成功率-20%。",
|
|
193
|
-
"裏切り!! キミは〈経済〉-20%の判定を行なう。失敗した場合、キミは周囲からの信頼を失い、[無縁]され、NPCとなる。",
|
|
194
|
-
"以後、シナリオ終了時まで、【環境】系の技能のレベルがすべて0となる。",
|
|
195
|
-
"捏造報道? 身に覚えのない背信行為がスクープとして報道される。キミは〈心理〉-30%の判定を行なう。失敗した場合、キミは人としての尊厳を失い、[無縁]を受ける。",
|
|
196
|
-
"以後、イベント終了時まで、全ての判定の成功率-30%。",
|
|
197
|
-
"キミの名は史上最悪の汚点として歴史に刻まれる。もはらキミを信じる仲間はなく、キミを助ける社会もない。キミは[無縁]され、以後NPCとなる。",
|
|
198
|
-
]
|
|
199
|
-
)
|
|
200
|
-
}.freeze
|
|
201
|
-
|
|
202
|
-
TABLES = {
|
|
203
|
-
"CPC" => DiceTable::Table.new(
|
|
204
|
-
"チャレンジ・ペナルティ・チャート",
|
|
205
|
-
"1D10",
|
|
206
|
-
[
|
|
207
|
-
"逝去\n助けるべきNPC(ヒロインなど)が死亡する。",
|
|
208
|
-
"黒星\n敵が目的を成就し、事件はPCの敗北で終了する。そのまま余韻フェイズへ。",
|
|
209
|
-
"活性\n敵のボスのライフを2倍にしたうえで決戦フェイズを開始する。",
|
|
210
|
-
"攻勢\n敵ボスの与ダメージに+2D6の修正を与えたうえで決戦フェイズを開始する。",
|
|
211
|
-
"大挙\n敵の数(ボス以外)を2倍にしたうえで決戦フェイズを開始する。",
|
|
212
|
-
"暗黒\nすべてのエリアを[暗闇]にしたうえで決戦フェイズを開始する。",
|
|
213
|
-
"猛火\n2つの戦場エリアを[ダメージゾーン2]にして、決戦フェイズを開始する。",
|
|
214
|
-
"伏兵\n敵の半分をエリア1とエリア2に移動させた状態で決戦フェイズを開始する。",
|
|
215
|
-
"満腹\nボス以外の敵のライフをすべて2倍にしたうえで決戦フェイズを開始する。",
|
|
216
|
-
"封印\n決戦フェイズの間、PCはカルマを使用できない。決戦フェイズを開始する。"
|
|
217
|
-
]
|
|
218
|
-
),
|
|
219
|
-
"STC" => DiceTable::Table.new(
|
|
220
|
-
"サイドトラック・チャート",
|
|
221
|
-
"1D10",
|
|
222
|
-
[
|
|
223
|
-
"邂逅\n偶然、NPCと出会う。どのNPCが現れるかはGMが決定すること。",
|
|
224
|
-
"事故\n交通事故に出くわす。周囲ではパニックが起きているかも知れない。",
|
|
225
|
-
"午睡\n強烈な睡魔に襲われる。まさか、新手のヴィランの能力か?",
|
|
226
|
-
"告白\nNPCのひとりから、今まで秘めていた思いを吐露される。",
|
|
227
|
-
"設定\n新たな設定が明かされる。実はNPCの父だったとか、生来目が見えん、とか。",
|
|
228
|
-
"刺客\n何者かから攻撃を受ける。第3勢力か?",
|
|
229
|
-
"会敵\n偶然、仇敵のひとりと出くわす。追うべきか? 無視すべきか?",
|
|
230
|
-
"不審\n怪しい人物を見かける。追うべきか? 無視すべきか?",
|
|
231
|
-
"遭遇\nシナリオと関係のないヴィラン組織と遭遇する。",
|
|
232
|
-
"平和\n特に何も起きなかった。",
|
|
233
|
-
]
|
|
234
|
-
),
|
|
235
|
-
}.freeze
|
|
156
|
+
class << self
|
|
157
|
+
private
|
|
236
158
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
159
|
+
def translate_tables(locale)
|
|
160
|
+
{
|
|
161
|
+
"CPC" => DiceTable::Table.from_i18n("BlackJacket.table.CPC", locale),
|
|
162
|
+
"STC" => DiceTable::Table.from_i18n("BlackJacket.table.STC", locale),
|
|
163
|
+
}
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def translate_death_charts(locale)
|
|
167
|
+
{
|
|
168
|
+
'L' => DeathChart.new(
|
|
169
|
+
I18n.translate("BlackJacket.chart_name.physical", locale: locale),
|
|
170
|
+
I18n.translate("BlackJacket.death_charts.physical", locale: locale)
|
|
171
|
+
),
|
|
172
|
+
'S' => DeathChart.new(
|
|
173
|
+
I18n.translate("BlackJacket.chart_name.mental", locale: locale),
|
|
174
|
+
I18n.translate("BlackJacket.death_charts.mental", locale: locale)
|
|
175
|
+
),
|
|
176
|
+
'C' => DeathChart.new(
|
|
177
|
+
I18n.translate("BlackJacket.chart_name.social", locale: locale),
|
|
178
|
+
I18n.translate("BlackJacket.death_charts.social", locale: locale)
|
|
179
|
+
),
|
|
180
|
+
}
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
TABLES = translate_tables(:ja_jp).freeze
|
|
185
|
+
DEATH_CHARTS = translate_death_charts(:ja_jp).freeze
|
|
242
186
|
end
|
|
243
187
|
end
|
|
244
188
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'bcdice/
|
|
3
|
+
require 'bcdice/game_system/BlackJacket'
|
|
4
4
|
|
|
5
5
|
module BCDice
|
|
6
6
|
module GameSystem
|
|
@@ -21,7 +21,7 @@ module BCDice
|
|
|
21
21
|
예)BJ80
|
|
22
22
|
크리티컬,펌블 여부는 자동으로 판정합니다.
|
|
23
23
|
「BJ50+20-30」처럼 값을 가감하여 기재할 수 있습니다.
|
|
24
|
-
성공률의 상한은 100
|
|
24
|
+
성공률의 상한은 100%, 하한은 0% 입니다.
|
|
25
25
|
・데스 차트 (DCxY)
|
|
26
26
|
x:차트 종류. 육체:DCL, 정신:DCS, 환경:DCC
|
|
27
27
|
Y=마이너스 값
|
|
@@ -32,213 +32,15 @@ module BCDice
|
|
|
32
32
|
・사이드 트랙 차트(STC)
|
|
33
33
|
INFO_MESSAGE_TEXT
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
resolute_action(command) || roll_death_chart(command) || roll_tables(command, TABLES)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
private
|
|
40
|
-
|
|
41
|
-
def resolute_action(command)
|
|
42
|
-
m = /^BJ(\d+([+-]\d+)*)$/.match(command)
|
|
43
|
-
unless m
|
|
44
|
-
return nil
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
success_rate = ArithmeticEvaluator.eval(m[1])
|
|
48
|
-
|
|
49
|
-
roll_result, dice10, dice01 = roll_d100
|
|
50
|
-
roll_result_text = format('%02d', roll_result)
|
|
51
|
-
|
|
52
|
-
result = action_result(roll_result, dice10, dice01, success_rate)
|
|
53
|
-
|
|
54
|
-
sequence = [
|
|
55
|
-
"행위판정(성공률:#{success_rate}%)",
|
|
56
|
-
"1D100[#{dice10},#{dice01}]=#{roll_result_text}",
|
|
57
|
-
roll_result_text.to_s,
|
|
58
|
-
result.text
|
|
59
|
-
]
|
|
60
|
-
|
|
61
|
-
result.text = sequence.join(" > ")
|
|
62
|
-
result
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
SUCCESS_STR = "성공"
|
|
66
|
-
FAILURE_STR = "실패"
|
|
67
|
-
CRITICAL_STR = (SUCCESS_STR + " > 크리티컬! 파워의 대가(코스트) 절반으로 감소").freeze
|
|
68
|
-
FUMBLE_STR = (FAILURE_STR + " > 펌블! 파워의 대가(코스트) 2배 & 재굴림 불가").freeze
|
|
69
|
-
MISERY_STR = (FAILURE_STR + " > 미저리! 파워의 대가(코스트) 2배 & 재굴림 불가").freeze
|
|
70
|
-
|
|
71
|
-
def action_result(total, tens, ones, success_rate)
|
|
72
|
-
if total == 100
|
|
73
|
-
Result.fumble(MISERY_STR)
|
|
74
|
-
elsif success_rate <= 0
|
|
75
|
-
Result.fumble(FUMBLE_STR)
|
|
76
|
-
elsif total <= success_rate - 100
|
|
77
|
-
Result.critical(CRITICAL_STR)
|
|
78
|
-
elsif tens == ones
|
|
79
|
-
if total <= success_rate
|
|
80
|
-
Result.critical(CRITICAL_STR)
|
|
81
|
-
else
|
|
82
|
-
Result.fumble(FUMBLE_STR)
|
|
83
|
-
end
|
|
84
|
-
elsif total <= success_rate
|
|
85
|
-
Result.success(SUCCESS_STR)
|
|
86
|
-
else
|
|
87
|
-
Result.failure(FAILURE_STR)
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def roll_d100
|
|
92
|
-
dice10 = @randomizer.roll_once(10)
|
|
93
|
-
dice10 = 0 if dice10 == 10
|
|
94
|
-
dice01 = @randomizer.roll_once(10)
|
|
95
|
-
dice01 = 0 if dice01 == 10
|
|
96
|
-
|
|
97
|
-
roll_result = dice10 * 10 + dice01
|
|
98
|
-
roll_result = 100 if roll_result == 0
|
|
35
|
+
register_prefix_from_super_class()
|
|
99
36
|
|
|
100
|
-
|
|
37
|
+
def initialize(command)
|
|
38
|
+
super(command)
|
|
39
|
+
@locale = :ko_kr
|
|
101
40
|
end
|
|
102
41
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
@name = name
|
|
106
|
-
@chart = chart.freeze
|
|
107
|
-
|
|
108
|
-
if @chart.size != 11
|
|
109
|
-
raise ArgumentError, "unexpected chart size #{name.inspect} (given #{@chart.size}, expected 11)"
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# @param randomizer [Randomizer]
|
|
114
|
-
# @param minus_score [Integer]
|
|
115
|
-
# @return [String]
|
|
116
|
-
def roll(randomizer, minus_score)
|
|
117
|
-
dice = randomizer.roll_once(10)
|
|
118
|
-
key_number = dice + minus_score
|
|
119
|
-
|
|
120
|
-
key_text, chosen = at(key_number)
|
|
121
|
-
|
|
122
|
-
return "데스 차트(#{@name})[마이너스 값:#{minus_score} + 1D10(->#{dice}) = #{key_number}] > #{key_text} : #{chosen}"
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
private
|
|
126
|
-
|
|
127
|
-
# key_numberの10から20がindexの0から10に対応する
|
|
128
|
-
def at(key_number)
|
|
129
|
-
if key_number < 10
|
|
130
|
-
["10이하", @chart.first]
|
|
131
|
-
elsif key_number > 20
|
|
132
|
-
["20이상", @chart.last]
|
|
133
|
-
else
|
|
134
|
-
[key_number.to_s, @chart[key_number - 10]]
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
def roll_death_chart(command)
|
|
140
|
-
m = /^DC([LSC])(\d+)$/i.match(command)
|
|
141
|
-
unless m
|
|
142
|
-
return m
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
chart = DEATH_CHARTS[m[1]]
|
|
146
|
-
minus_score = m[2].to_i
|
|
147
|
-
|
|
148
|
-
return chart.roll(@randomizer, minus_score)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
DEATH_CHARTS = {
|
|
152
|
-
'L' => DeathChart.new(
|
|
153
|
-
'육체',
|
|
154
|
-
[
|
|
155
|
-
"효과 없음. 당신은 기적적으로 목숨을 건졌다. 싸움은 계속된다.",
|
|
156
|
-
"격한 통증을 느낀다. 이후 이벤트가 끝날 때까지 모든 판정의 성공률에 -10%.",
|
|
157
|
-
"더이상 몸이 움직이지 않는다…… 당신은 [경직 2]를 받는다.",
|
|
158
|
-
"혼신의 일격!! 당신은 〈생존〉 판정을 한다. 실패할 경우 [사망]한다.",
|
|
159
|
-
"갑자기 눈앞이 캄캄해진다. 당신은 [기절 2]를 받는다.",
|
|
160
|
-
"이후, 이벤트 종료까지 모든 판정의 성공률 -20%.",
|
|
161
|
-
"기록적인 일격!! 당신은 〈생존〉 -20% 으로 판정한다. 실패할 경우 [사망]한다.",
|
|
162
|
-
"사느냐 죽느냐. 당신은 [빈사 2]를 받는다.",
|
|
163
|
-
"역사에 한 획을 그을 일격!! 당신은 <생존> -30% 으로 판정한다. 실패할 경우 [사망]한다.",
|
|
164
|
-
"이후, 이벤트 종료 시까지 모든 판정의 성공률 -30%.",
|
|
165
|
-
"신화적 일격!! 공중에서 세 바퀴 정도 회전한 후 땅바닥에 내동댕이쳐진다. 보기에도 끔찍한 모습. 육체는 원형을 유지하지 못했다. 당신은 [사망]한다.",
|
|
166
|
-
]
|
|
167
|
-
),
|
|
168
|
-
'S' => DeathChart.new(
|
|
169
|
-
'정신',
|
|
170
|
-
[
|
|
171
|
-
"효과 없음. 당신은 이를 악물고 스트레스를 견뎌냈다.",
|
|
172
|
-
"이후, 이벤트 종료 시까지 모든 판정의 성공률 -10%.",
|
|
173
|
-
"말할 수 없는 공포가 당신을 엄습한다. 당신은 [공포 2]를 받는다.",
|
|
174
|
-
"상처를 많이 받았다. 당신은 〈의지〉 판정을 한다. 실패할 경우 [절망] 상태가 되어서 NPC가 된다.",
|
|
175
|
-
"의식을 잃었다. 당신은 [기절 2]를 받는다.",
|
|
176
|
-
"이후, 이벤트 종료 시까지 모든 판정의 성공률 -20%.",
|
|
177
|
-
"신뢰했던 자에게 속은 아픔. 당신은 〈의지〉 -20% 으로 판정한다. 실패할 경우, [절망] 상태가 되어서 NPC가 된다.",
|
|
178
|
-
"동료에게 배신 당한 것일지도 모른다. 당신은 [혼란 2]를 받는다.",
|
|
179
|
-
"너무나 참혹한 현실. 당신은 〈의지〉 -30% 으로 판정한다. 실패할 경우 [절망] 상태가 되어서 NPC가 된다.",
|
|
180
|
-
"이후, 이벤트 종료 시까지 모든 판정의 성공률 -30%.",
|
|
181
|
-
"천지개벽의 이치 그 이상. 그것은 인류의 인식한계를 뛰어넘는 무언가였다. 당신은 [절망] 상태가 된 후 NPC가 된다.",
|
|
182
|
-
]
|
|
183
|
-
),
|
|
184
|
-
'C' => DeathChart.new(
|
|
185
|
-
'환경',
|
|
186
|
-
[
|
|
187
|
-
"효과 없음. 당신은 뒤숭숭한 소문을 무시했다.",
|
|
188
|
-
"이후, 이벤트 종료 시까지 모든 판정의 성공률 -10%.",
|
|
189
|
-
"위험한 상태! 이후, 라운드 종료 시까지 당신은 카르마를 사용할 수 없다.",
|
|
190
|
-
"나쁜 소문이 돈다. 당신은 〈교섭〉 판정을 한다. 실패할 경우 당신은 동료들의 신뢰를 잃고 [무연고] 상태가 된 후 NPC가 된다.",
|
|
191
|
-
"이후, 시나리오 종료 시까지 대가(코스트)에 크레딧을 소비하는 파워를 사용할 수 없다.",
|
|
192
|
-
"당신의 악평이 세상에 널리 알려진다. 협력자로부터의 지원이 중단된다. 이후 시나리오 종료 시까지 모든 판정의 성공률 -20%.",
|
|
193
|
-
"배신!! 당신은 〈경제〉 -20% 으로 판정한다. 실패할 경우 당신은 주위로부터 신용을 잃고, [무연고] 상태가 되어 NPC가 된다.",
|
|
194
|
-
"이후, 시나리오 종료 시까지 【환경】 계열의 기능 레벨이 모두 0이 된다.",
|
|
195
|
-
"날조 보도? 기억나지 않는 배신 행위가 특종으로 보도된다. 당신은 〈심리〉 -30% 으로 판정한다. 실패할 경우 당신은 인간으로서의 존엄성을 잃고, [무연고]가 된다.",
|
|
196
|
-
"이후, 이벤트 종료 시까지 모든 판정 성공률 -30%.",
|
|
197
|
-
"당신의 이름은 사상 최악의 오점으로 영원히 역사에 새겨진다. 이제 당신을 믿는 동료는 없고 당신을 돕는 사회도 없다. 당신은 [무연고] 상태가 된 후 NPC가 된다.",
|
|
198
|
-
]
|
|
199
|
-
)
|
|
200
|
-
}.freeze
|
|
201
|
-
|
|
202
|
-
TABLES = {
|
|
203
|
-
"CPC" => DiceTable::Table.new(
|
|
204
|
-
"챌린지・패널티 차트",
|
|
205
|
-
"1D10",
|
|
206
|
-
[
|
|
207
|
-
"사망\n도와야 할 NPC (히로인 등)가 사망한다.",
|
|
208
|
-
"검은 별\n적이 목적을 성취하고, 사건은 PC의 패배로 끝난다. 그대로 여운 페이즈로 넘어갈 것.",
|
|
209
|
-
"활성\n적 보스의 라이프를 2배로 한 다음 결전 페이즈를 개시한다.",
|
|
210
|
-
"공세\n적 보스의 대미지에 +2D6의 수정을 준 후 결전 페이즈를 개시한다.",
|
|
211
|
-
"대거\n적의 수(보스 제외)를 2배로 한 후 결전 페이즈를 개시한다.",
|
|
212
|
-
"암흑\n모든 에리어(구역)을 [어둠]으로 만든 다음 결전 페이즈를 개시한다.",
|
|
213
|
-
"맹화\n전투 에리어(구역) 2개를 [대미지 존 2]로 취급한 후, 결전 페이즈를 개시한다.",
|
|
214
|
-
"복병\n적의 절반을 에리어(구역) 1과 에리어(구역) 2로 이동시킨 후, 결전 페이즈를 개시한다.",
|
|
215
|
-
"만복\n보스 이외의 적의 라이프를 모두 2배로 한 다음, 결전 페이즈를 개시한다.",
|
|
216
|
-
"봉인\nPC는 결전 페이즈 동안 카르마를 사용할 수 없다. 결전 페이즈를 개시한다."
|
|
217
|
-
]
|
|
218
|
-
),
|
|
219
|
-
"STC" => DiceTable::Table.new(
|
|
220
|
-
"사이드 트랙 차트",
|
|
221
|
-
"1D10",
|
|
222
|
-
[
|
|
223
|
-
"해후\n우연히 NPC와 만난다. 어떤 NPC가 나타날지는 GM이 결정한다.",
|
|
224
|
-
"사고\교통사고를 당한다. 주변에서 패닉이 일어나고 있을지도 모른다.",
|
|
225
|
-
"낮잠\n지독한 졸음이 몰려온다. 설마, 신참 빌런의 능력인가?",
|
|
226
|
-
"고백\nNPC 한 명이 지금까지 간직하고 있던 마음을 당신에게 고백한다.",
|
|
227
|
-
"설정\n새로운 설정이 밝혀진다. 사실은 NPC의 아버지였다든가, 선천적으로 눈이 보이지 않는다든가.",
|
|
228
|
-
"자객\n누군가로부터 공격을 받는다. 제3세력인가?",
|
|
229
|
-
"불청객\n우연히 원수 한 명과 마주친다. 상황에 따라서 바로 전투가 발생할지도 모른다.",
|
|
230
|
-
"의심\n수상한 사람을 눈치챘다. 따라가야 하나? 무시해야 하나?",
|
|
231
|
-
"조우\n시나리오와 관계없는 빌런 조직과 조우한다.",
|
|
232
|
-
"평화\n별일 없었다.",
|
|
233
|
-
]
|
|
234
|
-
),
|
|
235
|
-
}.freeze
|
|
236
|
-
|
|
237
|
-
register_prefix(
|
|
238
|
-
'BJ',
|
|
239
|
-
'DC[LSC]',
|
|
240
|
-
TABLES.keys
|
|
241
|
-
)
|
|
42
|
+
TABLES = translate_tables(:ko_kr).freeze
|
|
43
|
+
DEATH_CHARTS = translate_death_charts(:ko_kr).freeze
|
|
242
44
|
end
|
|
243
45
|
end
|
|
244
46
|
end
|
|
@@ -47,7 +47,7 @@ module BCDice
|
|
|
47
47
|
sequence = [
|
|
48
48
|
"(#{parsed})",
|
|
49
49
|
"[#{dice_list.join(',')}]#{Format.modifier(parsed.modify_number)}",
|
|
50
|
-
(
|
|
50
|
+
(translate('Bloodorium.triumph', triumph: triumph) if triumph > 1),
|
|
51
51
|
(total_expr(dice_value, triumph, parsed.modify_number) if total != dice_value),
|
|
52
52
|
total,
|
|
53
53
|
].compact
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bcdice/game_system/Bloodorium'
|
|
4
|
+
|
|
5
|
+
module BCDice
|
|
6
|
+
module GameSystem
|
|
7
|
+
class Bloodorium_Korean < Bloodorium
|
|
8
|
+
# ゲームシステムの識別子
|
|
9
|
+
ID = 'Bloodorium:Korean'
|
|
10
|
+
|
|
11
|
+
# ゲームシステム名
|
|
12
|
+
NAME = '블러도리움'
|
|
13
|
+
|
|
14
|
+
# ゲームシステム名の読みがな
|
|
15
|
+
SORT_KEY = '国際化:Korean:블러도리움'
|
|
16
|
+
|
|
17
|
+
# ダイスボットの使い方
|
|
18
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
|
19
|
+
・주사위 체크 xDC+y
|
|
20
|
+
【주사위 체크】를 실행한다.《트라이엄프》를 결과에 자동 반영한다.
|
|
21
|
+
x: 주사위 수
|
|
22
|
+
y: 결과에 대한 수정값 (생략 가능)
|
|
23
|
+
INFO_MESSAGE_TEXT
|
|
24
|
+
|
|
25
|
+
register_prefix_from_super_class()
|
|
26
|
+
|
|
27
|
+
def initialize(command)
|
|
28
|
+
super(command)
|
|
29
|
+
|
|
30
|
+
@locale = :ko_kr
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|