bcdice 3.6.0 → 3.8.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 +56 -0
- data/i18n/Arianrhod/ja_jp.yml +3 -0
- data/i18n/Emoklore/ja_jp.yml +7 -0
- data/i18n/FutariSousa/ja_jp.yml +431 -0
- data/i18n/LogHorizon/ja_jp.yml +1 -1
- data/i18n/SwordWorld/ja_jp.yml +1 -0
- data/i18n/SwordWorld/zh_hans.yml +7 -0
- data/i18n/SwordWorld2_0/zh_hans.yml +37 -0
- data/i18n/SwordWorld2_5/ja_jp.yml +1 -1
- data/i18n/SwordWorld2_5/zh_hans.yml +57 -0
- data/lib/bcdice/arithmetic/parser.rb +1 -1
- data/lib/bcdice/command/parser.rb +1 -1
- data/lib/bcdice/common_command/add_dice/parser.rb +106 -74
- data/lib/bcdice/common_command/add_dice.rb +1 -1
- data/lib/bcdice/common_command/barabara_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/calc/parser.rb +1 -1
- data/lib/bcdice/common_command/d66_dice.rb +1 -1
- data/lib/bcdice/common_command/reroll_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/tally_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/upper_dice/parser.rb +1 -1
- data/lib/bcdice/game_system/AngelGear.rb +1 -1
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
- data/lib/bcdice/game_system/Arianrhod.rb +4 -4
- data/lib/bcdice/game_system/AssaultEngine.rb +3 -3
- data/lib/bcdice/game_system/Ayabito.rb +170 -4
- data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -1
- data/lib/bcdice/game_system/BeginningIdol.rb +4 -2
- data/lib/bcdice/game_system/BeginningIdol2022.rb +184 -0
- data/lib/bcdice/game_system/BladeOfArcana.rb +3 -3
- data/lib/bcdice/game_system/Bloodorium.rb +68 -0
- data/lib/bcdice/game_system/ConvictorDrive.rb +117 -0
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
- data/lib/bcdice/game_system/CyberpunkRed.rb +2 -6
- data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
- data/lib/bcdice/game_system/DungeonsAndDragons5.rb +196 -0
- data/lib/bcdice/game_system/EmbryoMachine.rb +4 -4
- data/lib/bcdice/game_system/Emoklore.rb +8 -8
- data/lib/bcdice/game_system/FutariSousa.rb +31 -5
- data/lib/bcdice/game_system/GURPS.rb +1 -1
- data/lib/bcdice/game_system/GehennaAn.rb +2 -2
- data/lib/bcdice/game_system/GhostLive.rb +144 -0
- data/lib/bcdice/game_system/GoblinSlayer.rb +30 -8
- data/lib/bcdice/game_system/HunterTheReckoning5th.rb +152 -0
- data/lib/bcdice/game_system/IfIfIf.rb +648 -0
- data/lib/bcdice/game_system/Kutulu.rb +95 -0
- data/lib/bcdice/game_system/LostRoyal.rb +1 -1
- data/lib/bcdice/game_system/NobunagasBlackCastle.rb +237 -0
- data/lib/bcdice/game_system/OracleEngine.rb +1 -1
- data/lib/bcdice/game_system/Raisondetre.rb +1 -1
- data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
- data/lib/bcdice/game_system/SajinsenkiAGuS.rb +154 -0
- data/lib/bcdice/game_system/Sengensyou.rb +59 -0
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +1 -1
- data/lib/bcdice/game_system/ShinobiGami.rb +14 -1
- data/lib/bcdice/game_system/SkynautsBouken.rb +93 -2
- data/lib/bcdice/game_system/StellarLife.rb +1 -1
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
- data/lib/bcdice/game_system/SwordWorld.rb +2 -2
- data/lib/bcdice/game_system/SwordWorld2_0_SimplifiedChinese.rb +84 -0
- data/lib/bcdice/game_system/SwordWorld2_5_SimplifiedChinese.rb +95 -0
- data/lib/bcdice/game_system/SwordWorld_SimplifiedChinese.rb +29 -0
- data/lib/bcdice/game_system/TherapieSein.rb +2 -2
- data/lib/bcdice/game_system/Torg.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +54 -18
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +26 -12
- data/lib/bcdice/game_system/VisionConnect.rb +135 -0
- data/lib/bcdice/game_system/Warhammer4.rb +4 -0
- data/lib/bcdice/game_system/WorldOfDarkness.rb +54 -50
- data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +1 -1
- data/lib/bcdice/game_system/filled_with/tresure_tables.rb +1 -1
- data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
- data/lib/bcdice/game_system.rb +15 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +26 -6
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BCDice
|
|
4
|
+
module GameSystem
|
|
5
|
+
class HunterTheReckoning5th < Base
|
|
6
|
+
# ゲームシステムの識別子
|
|
7
|
+
ID = 'HunterTheReckoning5th'
|
|
8
|
+
|
|
9
|
+
# ゲームシステム名
|
|
10
|
+
NAME = 'Hunter: The Reckoning 5th Edition'
|
|
11
|
+
|
|
12
|
+
# ゲームシステム名の読みがな
|
|
13
|
+
SORT_KEY = 'はんあたされこにんく5'
|
|
14
|
+
|
|
15
|
+
# ダイスボットの使い方
|
|
16
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
|
17
|
+
・判定コマンド(nHRFx+x)
|
|
18
|
+
注意:難易度は必要成功数を表す
|
|
19
|
+
|
|
20
|
+
難易度指定:成功数のカウント、判定成功と失敗、Critical処理、Critical Winのチェックを行う
|
|
21
|
+
(Desperationダイスがある場合)OverreachとDespairの発生チェックを行う
|
|
22
|
+
例) (難易度)HRF(通常ダイス)+(Desperationダイス)
|
|
23
|
+
(難易度)HRF(通常ダイス)
|
|
24
|
+
|
|
25
|
+
難易度省略:成功数のカウント、判定失敗、Critical処理、(Desperationダイスがある場合)Despairチェックを行う
|
|
26
|
+
判定成功、Overreachのチェックを行わない
|
|
27
|
+
Critical Win、(Desperationダイスがある場合)Despair、Overreachのヒントを出力
|
|
28
|
+
例) HRF(通常ダイス)+(Desperationダイス)
|
|
29
|
+
HRF(通常ダイス)
|
|
30
|
+
|
|
31
|
+
難易度0指定:全てのチェックを行わない
|
|
32
|
+
例) 0HRF(通常ダイス)+(Desperationダイス)
|
|
33
|
+
0HRF(通常ダイス)
|
|
34
|
+
|
|
35
|
+
MESSAGETEXT
|
|
36
|
+
|
|
37
|
+
DIFFICULTY_INDEX = 1
|
|
38
|
+
DICE_POOL_INDEX = 3
|
|
39
|
+
DESPERATION_DICE_INDEX = 5
|
|
40
|
+
|
|
41
|
+
# 難易度に指定可能な特殊値
|
|
42
|
+
NOT_CHECK_SUCCESS = -1 # 判定成功にかかわるチェックを行わない(判定失敗に関わるチェックは行う)
|
|
43
|
+
|
|
44
|
+
# ダイスボットで使用するコマンドを配列で列挙する
|
|
45
|
+
register_prefix('\d*HRF')
|
|
46
|
+
|
|
47
|
+
def eval_game_system_specific_command(command)
|
|
48
|
+
m = /\A(\d+)?(HRF)(\d+)(\+(\d+))?$/.match(command)
|
|
49
|
+
unless m
|
|
50
|
+
return ''
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
dice_pool = m[DICE_POOL_INDEX].to_i
|
|
54
|
+
dice_text, success_dice, ten_dice, = make_dice_roll(dice_pool)
|
|
55
|
+
result_text = "(#{dice_pool}D10"
|
|
56
|
+
|
|
57
|
+
desperaton_dice_pool = m[DESPERATION_DICE_INDEX]&.to_i
|
|
58
|
+
if desperaton_dice_pool
|
|
59
|
+
desperaton_dice_text, desperaton_success_dice, desperaton_ten_dice, desperaton_botch_dice = make_dice_roll(desperaton_dice_pool)
|
|
60
|
+
|
|
61
|
+
ten_dice += desperaton_ten_dice
|
|
62
|
+
success_dice += desperaton_success_dice
|
|
63
|
+
|
|
64
|
+
result_text = "#{result_text}+#{desperaton_dice_pool}D10) > [#{dice_text}]+[#{desperaton_dice_text}] "
|
|
65
|
+
else
|
|
66
|
+
desperaton_ten_dice = 0
|
|
67
|
+
desperaton_botch_dice = 0
|
|
68
|
+
result_text = "#{result_text}) > [#{dice_text}] "
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
success_dice += get_critical_success(ten_dice)
|
|
72
|
+
|
|
73
|
+
difficulty = m[DIFFICULTY_INDEX] ? m[DIFFICULTY_INDEX].to_i : NOT_CHECK_SUCCESS
|
|
74
|
+
|
|
75
|
+
return get_roll_result(result_text, success_dice, ten_dice, desperaton_ten_dice, desperaton_botch_dice, difficulty)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
private
|
|
79
|
+
|
|
80
|
+
def get_roll_result(result_text, success_dice, ten_dice, _desperaton_ten_dice, desperaton_botch_dice, difficulty)
|
|
81
|
+
result_text = "#{result_text} 成功数=#{success_dice}"
|
|
82
|
+
is_critical = ten_dice >= 2
|
|
83
|
+
desperation_result = ""
|
|
84
|
+
|
|
85
|
+
if difficulty > 0
|
|
86
|
+
result_text = "#{result_text} 難易度=#{difficulty}"
|
|
87
|
+
|
|
88
|
+
if success_dice >= difficulty
|
|
89
|
+
result_text = "#{result_text} 差分=#{success_dice - difficulty}"
|
|
90
|
+
|
|
91
|
+
if desperaton_botch_dice > 0
|
|
92
|
+
desperation_result = " [Overreach or Despair?]"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
if is_critical
|
|
96
|
+
return Result.critical("#{result_text}:判定成功! [Critical Win]#{desperation_result}")
|
|
97
|
+
else
|
|
98
|
+
return Result.success("#{result_text}:判定成功!#{desperation_result}")
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
else
|
|
102
|
+
if desperaton_botch_dice > 0
|
|
103
|
+
return Result.fumble("#{result_text}:判定失敗! [Despair]")
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
return Result.failure("#{result_text}:判定失敗!")
|
|
107
|
+
end
|
|
108
|
+
elsif difficulty < 0
|
|
109
|
+
if success_dice == 0
|
|
110
|
+
if desperaton_botch_dice > 0
|
|
111
|
+
return Result.fumble("#{result_text}:判定失敗! [Despair]")
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
return Result.failure("#{result_text}:判定失敗!")
|
|
115
|
+
else
|
|
116
|
+
if desperaton_botch_dice > 0
|
|
117
|
+
result_text = "#{result_text}\n 判定失敗なら [Despair]"
|
|
118
|
+
desperation_result = " [Overreach or Despair?]"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
if is_critical
|
|
122
|
+
result_text = "#{result_text}\n 判定成功なら [Critical Win]"
|
|
123
|
+
elsif desperaton_botch_dice > 0
|
|
124
|
+
result_text = "#{result_text}\n 判定成功なら"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
return "#{result_text}#{desperation_result}"
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# 難易度0指定(=全ての判定チェックを行わない)
|
|
132
|
+
return result_text.to_s
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def get_critical_success(ten_dice)
|
|
136
|
+
# 10の目が2個毎に追加2成功
|
|
137
|
+
return ((ten_dice / 2) * 2)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def make_dice_roll(dice_pool)
|
|
141
|
+
dice_list = @randomizer.roll_barabara(dice_pool, 10)
|
|
142
|
+
|
|
143
|
+
dice_text = dice_list.join(',')
|
|
144
|
+
success_dice = dice_list.count { |x| x >= 6 }
|
|
145
|
+
ten_dice = dice_list.count(10)
|
|
146
|
+
botch_dice = dice_list.count(1)
|
|
147
|
+
|
|
148
|
+
return dice_text, success_dice, ten_dice, botch_dice
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|