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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +56 -0
  3. data/i18n/Arianrhod/ja_jp.yml +3 -0
  4. data/i18n/Emoklore/ja_jp.yml +7 -0
  5. data/i18n/FutariSousa/ja_jp.yml +431 -0
  6. data/i18n/LogHorizon/ja_jp.yml +1 -1
  7. data/i18n/SwordWorld/ja_jp.yml +1 -0
  8. data/i18n/SwordWorld/zh_hans.yml +7 -0
  9. data/i18n/SwordWorld2_0/zh_hans.yml +37 -0
  10. data/i18n/SwordWorld2_5/ja_jp.yml +1 -1
  11. data/i18n/SwordWorld2_5/zh_hans.yml +57 -0
  12. data/lib/bcdice/arithmetic/parser.rb +1 -1
  13. data/lib/bcdice/command/parser.rb +1 -1
  14. data/lib/bcdice/common_command/add_dice/parser.rb +106 -74
  15. data/lib/bcdice/common_command/add_dice.rb +1 -1
  16. data/lib/bcdice/common_command/barabara_dice/parser.rb +1 -1
  17. data/lib/bcdice/common_command/calc/parser.rb +1 -1
  18. data/lib/bcdice/common_command/d66_dice.rb +1 -1
  19. data/lib/bcdice/common_command/reroll_dice/parser.rb +1 -1
  20. data/lib/bcdice/common_command/tally_dice/parser.rb +1 -1
  21. data/lib/bcdice/common_command/upper_dice/parser.rb +1 -1
  22. data/lib/bcdice/game_system/AngelGear.rb +1 -1
  23. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  24. data/lib/bcdice/game_system/Arianrhod.rb +4 -4
  25. data/lib/bcdice/game_system/AssaultEngine.rb +3 -3
  26. data/lib/bcdice/game_system/Ayabito.rb +170 -4
  27. data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -1
  28. data/lib/bcdice/game_system/BeginningIdol.rb +4 -2
  29. data/lib/bcdice/game_system/BeginningIdol2022.rb +184 -0
  30. data/lib/bcdice/game_system/BladeOfArcana.rb +3 -3
  31. data/lib/bcdice/game_system/Bloodorium.rb +68 -0
  32. data/lib/bcdice/game_system/ConvictorDrive.rb +117 -0
  33. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  34. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  35. data/lib/bcdice/game_system/CyberpunkRed.rb +2 -6
  36. data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
  37. data/lib/bcdice/game_system/DungeonsAndDragons5.rb +196 -0
  38. data/lib/bcdice/game_system/EmbryoMachine.rb +4 -4
  39. data/lib/bcdice/game_system/Emoklore.rb +8 -8
  40. data/lib/bcdice/game_system/FutariSousa.rb +31 -5
  41. data/lib/bcdice/game_system/GURPS.rb +1 -1
  42. data/lib/bcdice/game_system/GehennaAn.rb +2 -2
  43. data/lib/bcdice/game_system/GhostLive.rb +144 -0
  44. data/lib/bcdice/game_system/GoblinSlayer.rb +30 -8
  45. data/lib/bcdice/game_system/HunterTheReckoning5th.rb +152 -0
  46. data/lib/bcdice/game_system/IfIfIf.rb +648 -0
  47. data/lib/bcdice/game_system/Kutulu.rb +95 -0
  48. data/lib/bcdice/game_system/LostRoyal.rb +1 -1
  49. data/lib/bcdice/game_system/NobunagasBlackCastle.rb +237 -0
  50. data/lib/bcdice/game_system/OracleEngine.rb +1 -1
  51. data/lib/bcdice/game_system/Raisondetre.rb +1 -1
  52. data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
  53. data/lib/bcdice/game_system/SajinsenkiAGuS.rb +154 -0
  54. data/lib/bcdice/game_system/Sengensyou.rb +59 -0
  55. data/lib/bcdice/game_system/ShinkuuGakuen.rb +1 -1
  56. data/lib/bcdice/game_system/ShinobiGami.rb +14 -1
  57. data/lib/bcdice/game_system/SkynautsBouken.rb +93 -2
  58. data/lib/bcdice/game_system/StellarLife.rb +1 -1
  59. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
  60. data/lib/bcdice/game_system/SwordWorld.rb +2 -2
  61. data/lib/bcdice/game_system/SwordWorld2_0_SimplifiedChinese.rb +84 -0
  62. data/lib/bcdice/game_system/SwordWorld2_5_SimplifiedChinese.rb +95 -0
  63. data/lib/bcdice/game_system/SwordWorld_SimplifiedChinese.rb +29 -0
  64. data/lib/bcdice/game_system/TherapieSein.rb +2 -2
  65. data/lib/bcdice/game_system/Torg.rb +1 -1
  66. data/lib/bcdice/game_system/TorgEternity.rb +54 -18
  67. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +26 -12
  68. data/lib/bcdice/game_system/VisionConnect.rb +135 -0
  69. data/lib/bcdice/game_system/Warhammer4.rb +4 -0
  70. data/lib/bcdice/game_system/WorldOfDarkness.rb +54 -50
  71. data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +1 -1
  72. data/lib/bcdice/game_system/filled_with/tresure_tables.rb +1 -1
  73. data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
  74. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  75. data/lib/bcdice/game_system.rb +15 -0
  76. data/lib/bcdice/version.rb +1 -1
  77. 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