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,163 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BCDice
|
|
4
|
+
module GameSystem
|
|
5
|
+
class ChroniclesOfDarkness2e < Base
|
|
6
|
+
# ゲームシステムの識別子
|
|
7
|
+
ID = 'ChroniclesOfDarkness2e'
|
|
8
|
+
|
|
9
|
+
# ゲームシステム名
|
|
10
|
+
NAME = 'Chronicles of Darkness 2nd Edtion'
|
|
11
|
+
|
|
12
|
+
# ゲームシステム名の読みがな
|
|
13
|
+
SORT_KEY = 'くろにくるすおふたあくねす2'
|
|
14
|
+
|
|
15
|
+
# ダイスボットの使い方
|
|
16
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
|
17
|
+
・判定コマンド(CDx@cWdAs)
|
|
18
|
+
x:ダイスプール(0以下でChance Roll)
|
|
19
|
+
c:振り足し値(省略可、省略時は10)。8-10の値を取る。Chance Rollには適用されない。
|
|
20
|
+
d:武器ダメージ修正(省略可)。判定による成功数が1以上のときにダメージとして修正値を加算。
|
|
21
|
+
s:自動成功数(省略可)。成功数に加算される。
|
|
22
|
+
|
|
23
|
+
例1:6ダイスプール、10 again
|
|
24
|
+
CD6
|
|
25
|
+
CD6@10
|
|
26
|
+
|
|
27
|
+
例2:9ダイスプール、9の振り足し(9 again)、自動成功1
|
|
28
|
+
CD9@9A1
|
|
29
|
+
|
|
30
|
+
例3:0ダイスプール(Chance Roll)、8の振り足し(8 again, 適用されない)、自動成功1、武器修正+2
|
|
31
|
+
CD0@8W2A1
|
|
32
|
+
|
|
33
|
+
例4:-1ダイスプール(Chance Roll)
|
|
34
|
+
CD(4-5)
|
|
35
|
+
|
|
36
|
+
MESSAGETEXT
|
|
37
|
+
|
|
38
|
+
DICE_POOL_INDEX = 2
|
|
39
|
+
AGAIN_NUMBER_INDEX = 4
|
|
40
|
+
WEAPON_MODIFIER_INDEX = 6
|
|
41
|
+
AUTO_SUCCESS_INDEX = 8
|
|
42
|
+
|
|
43
|
+
EXCEPTIONAL_SUCCESS_THRESHOLD = 5 # Exceptional Successの閾値
|
|
44
|
+
|
|
45
|
+
register_prefix('(CD\d*)')
|
|
46
|
+
|
|
47
|
+
def eval_game_system_specific_command(command)
|
|
48
|
+
m = /\A(CD)(-?\d+)(@([8-9]|10))?(W(\d+))?(A(\d+))?$/.match(command)
|
|
49
|
+
unless m
|
|
50
|
+
return ''
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# 引数分解
|
|
54
|
+
dice_pool, again_number, weapon_modifier, auto_success = get_arguments(m)
|
|
55
|
+
|
|
56
|
+
# ダイスロール
|
|
57
|
+
success_number, dice_text, dramatic_failure = make_dice_roll(dice_pool, again_number)
|
|
58
|
+
|
|
59
|
+
# 結果判定
|
|
60
|
+
get_roll_result(dice_pool, dice_text, success_number, weapon_modifier, auto_success, dramatic_failure)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
def get_roll_result(dice_pool, dice_text, success_number, weapon_modifier, auto_success, dramatic_failure)
|
|
66
|
+
if dice_pool <= 0
|
|
67
|
+
result_text = "Chance Roll(1D10) > "
|
|
68
|
+
else
|
|
69
|
+
result_text = "(#{dice_pool}D10) > "
|
|
70
|
+
end
|
|
71
|
+
result_text = "#{result_text}#{dice_text}success=#{success_number} "
|
|
72
|
+
|
|
73
|
+
total_success = success_number + auto_success
|
|
74
|
+
|
|
75
|
+
# CofD2e rulebook p21:
|
|
76
|
+
# "A result of 1 on a chance roll causes a dramatic failure, a catastrophe worse than a normal failure."
|
|
77
|
+
# なので、チャンスダイスで"1"が出ていたら自動成功の有無に関わらず Dramatic Failure 発生。
|
|
78
|
+
if dramatic_failure
|
|
79
|
+
Result.fumble("#{result_text}Dramatic Failure!")
|
|
80
|
+
elsif total_success > 0
|
|
81
|
+
if auto_success > 0
|
|
82
|
+
# 成功数の合算が発生するときだけトータル成功数を表示
|
|
83
|
+
result_text = "#{result_text}auto_success=#{auto_success} total_success=#{total_success} "
|
|
84
|
+
end
|
|
85
|
+
if weapon_modifier != 0
|
|
86
|
+
# 成功数が1でもあれば、武器修正とダメージを表示
|
|
87
|
+
result_text = "#{result_text}weapon_modifier=#{weapon_modifier} damage=#{total_success + weapon_modifier} "
|
|
88
|
+
end
|
|
89
|
+
# M:tAw2e rulebook p213:
|
|
90
|
+
# "Several powers and Merits allow exceptional success with three or more successes instead of five."
|
|
91
|
+
# とあり、判定の基本は同じであるM:tAw2eで長所等で Exceptional Success に修正が入るため、CofDの自動成功でも同様と判断した。
|
|
92
|
+
# また、p214に下記のような文言があり、
|
|
93
|
+
# "Note that you count the total number of successes rolled when working out if you scored an exceptional success
|
|
94
|
+
# — don’t subtract the other party’s successes from yours."
|
|
95
|
+
# 合計数で Exceptional Success を判定すること、相手の成功数を差し引いた値で判定するわけではないことが記されている。
|
|
96
|
+
# 将来、Contested Action の実装として、相手の成功数と自分の成功数の差分で判定を行うなら留意されたし。
|
|
97
|
+
if total_success >= EXCEPTIONAL_SUCCESS_THRESHOLD
|
|
98
|
+
# 5成功以上は Exceptional Success
|
|
99
|
+
Result.critical("#{result_text}Exceptional Success!")
|
|
100
|
+
else
|
|
101
|
+
Result.success("#{result_text}Success!")
|
|
102
|
+
end
|
|
103
|
+
else
|
|
104
|
+
Result.failure("#{result_text}Failure!")
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def get_arguments(m)
|
|
109
|
+
dice_pool = m[DICE_POOL_INDEX].to_i # 0以下のダイスプールはチャンスダイス対応
|
|
110
|
+
again_number = m[AGAIN_NUMBER_INDEX].nil? ? 10 : m[AGAIN_NUMBER_INDEX].to_i # 未指定は10
|
|
111
|
+
weapon_modifier = m[WEAPON_MODIFIER_INDEX].nil? ? 0 : m[WEAPON_MODIFIER_INDEX].to_i
|
|
112
|
+
auto_success = m[AUTO_SUCCESS_INDEX].nil? ? 0 : m[AUTO_SUCCESS_INDEX].to_i
|
|
113
|
+
|
|
114
|
+
return dice_pool, again_number, weapon_modifier, auto_success
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def make_dice_roll(dice_pool, again_number)
|
|
118
|
+
if dice_pool <= 0
|
|
119
|
+
# ダイスプールが0以下になるなら、チャンスロール判定
|
|
120
|
+
roll_dice_pool(1, again_number, true)
|
|
121
|
+
else
|
|
122
|
+
roll_dice_pool(dice_pool, again_number, false)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# make_dice_rollの内部処理
|
|
127
|
+
def roll_dice_pool(dice_pool, again_number, chance_roll)
|
|
128
|
+
success_number = 0
|
|
129
|
+
again_dice = 0
|
|
130
|
+
dice_text = ""
|
|
131
|
+
|
|
132
|
+
loop do
|
|
133
|
+
dice_list = @randomizer.roll_barabara(dice_pool, 10)
|
|
134
|
+
dice_text = "#{dice_text}[#{dice_list.join(',')}] "
|
|
135
|
+
|
|
136
|
+
if chance_roll # チャンスロール
|
|
137
|
+
if dice_list.count(1) > 0
|
|
138
|
+
return 0, dice_text, true # Dramatic Failure発生
|
|
139
|
+
elsif dice_list.count(10) > 0 # チャンスダイスは10のみ成功
|
|
140
|
+
success_number = 1
|
|
141
|
+
else
|
|
142
|
+
success_number = 0
|
|
143
|
+
end
|
|
144
|
+
else
|
|
145
|
+
success_number += dice_list.count { |x| x >= 8 }
|
|
146
|
+
again_dice = dice_list.count { |x| x >= again_number }
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# CofD2e rulebook p69:
|
|
150
|
+
# "The chance die only counts as a success if you roll a 10, which you do not reroll."
|
|
151
|
+
# のため、chance dieではagain処理を行わない
|
|
152
|
+
if again_dice > 0
|
|
153
|
+
dice_pool = again_dice # 振り足しが存在するなら再判定
|
|
154
|
+
else
|
|
155
|
+
break # 振り足しが存在しないなら抜ける
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
return success_number, dice_text, false
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|