bcdice 3.1.3 → 3.2.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 (129) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -2
  3. data/i18n/StellarKnights/ja_jp.yml +496 -0
  4. data/lib/bcdice/common_command/add_dice.rb +1 -1
  5. data/lib/bcdice/common_command/calc.rb +1 -1
  6. data/lib/bcdice/dice_table.rb +2 -0
  7. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  8. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  9. data/lib/bcdice/game_system.rb +3 -0
  10. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  11. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  12. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  13. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  14. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  15. data/lib/bcdice/game_system/AngelGear.rb +1 -1
  16. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  17. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  18. data/lib/bcdice/game_system/Avandner.rb +1 -1
  19. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  20. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  21. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  22. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  23. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  24. data/lib/bcdice/game_system/BlindMythos.rb +1 -1
  25. data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
  26. data/lib/bcdice/game_system/BloodMoon.rb +9 -8
  27. data/lib/bcdice/game_system/CardRanker.rb +8 -7
  28. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  29. data/lib/bcdice/game_system/Chill.rb +10 -10
  30. data/lib/bcdice/game_system/Chill3.rb +9 -9
  31. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  32. data/lib/bcdice/game_system/Cthulhu.rb +1 -1
  33. data/lib/bcdice/game_system/Cthulhu7th.rb +48 -10
  34. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  35. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  36. data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
  37. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  38. data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
  39. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  40. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  41. data/lib/bcdice/game_system/DoubleCross.rb +1 -1
  42. data/lib/bcdice/game_system/Dracurouge.rb +1 -1
  43. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  44. data/lib/bcdice/game_system/Elric.rb +18 -14
  45. data/lib/bcdice/game_system/Elysion.rb +1 -1
  46. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  47. data/lib/bcdice/game_system/Emoklore.rb +3 -3
  48. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  49. data/lib/bcdice/game_system/FilledWith.rb +4 -0
  50. data/lib/bcdice/game_system/GURPS.rb +17 -28
  51. data/lib/bcdice/game_system/Garako.rb +1 -1
  52. data/lib/bcdice/game_system/GardenOrder.rb +1 -1
  53. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  54. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  55. data/lib/bcdice/game_system/Gorilla.rb +2 -8
  56. data/lib/bcdice/game_system/GranCrest.rb +18 -11
  57. data/lib/bcdice/game_system/Gundog.rb +9 -8
  58. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  59. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  60. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  61. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  62. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  63. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  64. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  65. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  66. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  67. data/lib/bcdice/game_system/Insane.rb +13 -20
  68. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  69. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  70. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  71. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  72. data/lib/bcdice/game_system/KanColle.rb +4 -9
  73. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  74. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  75. data/lib/bcdice/game_system/KurayamiCrying.rb +55 -2
  76. data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
  77. data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
  78. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +3 -3
  79. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  80. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  81. data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
  82. data/lib/bcdice/game_system/Nechronica.rb +28 -21
  83. data/lib/bcdice/game_system/NinjaSlayer.rb +4 -4
  84. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  85. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  86. data/lib/bcdice/game_system/Paradiso.rb +1 -1
  87. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  88. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  89. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  90. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  91. data/lib/bcdice/game_system/Postman.rb +1 -1
  92. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  93. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  94. data/lib/bcdice/game_system/Revulture.rb +123 -0
  95. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  96. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  97. data/lib/bcdice/game_system/Satasupe.rb +1 -1
  98. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  99. data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
  100. data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
  101. data/lib/bcdice/game_system/Skynauts.rb +2 -2
  102. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  103. data/lib/bcdice/game_system/StellarKnights.rb +59 -696
  104. data/lib/bcdice/game_system/SterileLife.rb +1 -1
  105. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  106. data/lib/bcdice/game_system/Strave.rb +1 -1
  107. data/lib/bcdice/game_system/SwordWorld.rb +16 -7
  108. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -2
  109. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -2
  110. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  111. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  112. data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
  113. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  114. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  115. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  116. data/lib/bcdice/game_system/WARPS.rb +11 -9
  117. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  118. data/lib/bcdice/game_system/Warhammer.rb +15 -6
  119. data/lib/bcdice/game_system/Warhammer4.rb +15 -11
  120. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  121. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  122. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  123. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +4 -4
  124. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  125. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
  126. data/lib/bcdice/repl.rb +1 -1
  127. data/lib/bcdice/result.rb +26 -0
  128. data/lib/bcdice/version.rb +1 -1
  129. metadata +9 -4
@@ -12,10 +12,10 @@ require "bcdice/enum"
12
12
  require "bcdice/game_system/sword_world/rating_lexer"
13
13
  require "bcdice/game_system/sword_world/rating_parsed"
14
14
 
15
- # SwordWorldの威力表コマンドをパースするクラス
16
15
  module BCDice
17
16
  module GameSystem
18
17
  class SwordWorld < Base
18
+ # SwordWorldの威力表コマンドをパースするクラス
19
19
 
20
20
  class RatingParser < Racc::Parser
21
21
 
@@ -1,8 +1,18 @@
1
+ require "bcdice/result"
2
+
1
3
  module BCDice
2
4
  module GameSystem
3
5
  class SwordWorld2_0 < SwordWorld
4
6
  # 超越判定のノード
5
7
  class TranscendentTest
8
+ RESULT_STR = {
9
+ success: "成功",
10
+ failure: "失敗",
11
+ super_success: "超成功",
12
+ critical: "自動的成功",
13
+ fumble: "自動的失敗",
14
+ }.freeze
15
+
6
16
  # @param [Integer] critical_value クリティカル値
7
17
  # @param [Integer] modifier 修正値
8
18
  # @param [String, nil] cmp_op 比較演算子(> または >=)
@@ -40,14 +50,21 @@ module BCDice
40
50
  sum = sum_of_dice(value_groups)
41
51
  total_sum = sum + @modifier
42
52
 
53
+ result = result_status(total_sum, value_groups.length, fumble, critical)
43
54
  parts = [
44
55
  "(#{@expression})",
45
56
  "#{dice_str(value_groups, sum)}#{@modifier_str}",
46
57
  total_sum,
47
- @target && result_str(total_sum, value_groups.length, fumble, critical)
58
+ RESULT_STR[result],
48
59
  ].compact
49
60
 
50
- return parts.join(" ")
61
+ return Result.new.tap do |r|
62
+ r.text = parts.join(" > ")
63
+ r.fumble = result == :fumble
64
+ r.critical = result == :critical
65
+ r.success = [:success, :super_success, :critical].include?(result)
66
+ r.failure = [:failure, :fumble].include?(result)
67
+ end
51
68
  end
52
69
 
53
70
  private
@@ -86,16 +103,17 @@ module BCDice
86
103
  # @param [Integer] n_value_groups 出目のグループの数
87
104
  # @param [Boolean] fumble ファンブルかどうか
88
105
  # @param [Boolean] critical クリティカルかどうか
89
- # @return [String]
90
- def result_str(total_sum, n_value_groups, fumble, critical)
91
- return "自動的失敗" if fumble
92
- return "自動的成功" if critical
106
+ # @return [Symbol]
107
+ def result_status(total_sum, n_value_groups, fumble, critical)
108
+ return :no_target unless @target
109
+ return :fumble if fumble
110
+ return :critical if critical
93
111
 
94
112
  if total_sum.send(@cmp_op, @target)
95
113
  # 振り足しが行われ、合計値が41以上ならば「超成功」
96
- n_value_groups >= 2 && total_sum >= 41 ? "超成功" : "成功"
114
+ n_value_groups >= 2 && total_sum >= 41 ? :super_success : :success
97
115
  else
98
- "失敗"
116
+ :failure
99
117
  end
100
118
  end
101
119
  end
data/lib/bcdice/repl.rb CHANGED
@@ -148,7 +148,7 @@ module BCDice
148
148
  def eval_game_system(command)
149
149
  gs = @game_system.new(command)
150
150
  gs.enable_debug if @debug
151
- puts gs.eval().text
151
+ puts gs.eval()&.text || "<nil>"
152
152
  rescue StandardError => e
153
153
  puts e
154
154
  puts e.backtrace
data/lib/bcdice/result.rb CHANGED
@@ -1,8 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BCDice
4
+ # ダイスロールの結果を表すクラス
5
+ #
6
+ # コマンドの結果の文字列や、成功/失敗/クリティカル/ファンブルの情報を保持する。
7
+ # 成功/失敗は同時に発生しないこととする。
8
+ # 成功/失敗のペアとクリティカル、ファンブルの三者は独立した要素とし、
9
+ # 「クリティカルだが失敗」や「ファンブルだが成功でも失敗でもない」を許容する。
4
10
  class Result
5
11
  class << self
12
+ # +success+ が設定された +Result+ を作成する
13
+ #
14
+ # @param text [String]
15
+ # @return [Result]
6
16
  def success(text)
7
17
  new.tap do |r|
8
18
  r.text = text
@@ -10,6 +20,10 @@ module BCDice
10
20
  end
11
21
  end
12
22
 
23
+ # +failure+ が設定された +Result+ を作成する
24
+ #
25
+ # @param text [String]
26
+ # @return [Result]
13
27
  def failure(text)
14
28
  new.tap do |r|
15
29
  r.text = text
@@ -17,6 +31,10 @@ module BCDice
17
31
  end
18
32
  end
19
33
 
34
+ # +success+ と +critical+ が設定された +Result+ を作成する
35
+ #
36
+ # @param text [String]
37
+ # @return [Result]
20
38
  def critical(text)
21
39
  new.tap do |r|
22
40
  r.text = text
@@ -25,6 +43,10 @@ module BCDice
25
43
  end
26
44
  end
27
45
 
46
+ # +failure+ と +fumble+ が設定された +Result+ を作成する
47
+ #
48
+ # @param text [String]
49
+ # @return [Result]
28
50
  def fumble(text)
29
51
  new.tap do |r|
30
52
  r.text = text
@@ -33,11 +55,15 @@ module BCDice
33
55
  end
34
56
  end
35
57
 
58
+ # その後の判定で何もすることがないことを示すために利用する
59
+ #
60
+ # @return [:nothing]
36
61
  def nothing
37
62
  :nothing
38
63
  end
39
64
  end
40
65
 
66
+ # @param text [String | nil]
41
67
  def initialize(text = nil)
42
68
  @text = text
43
69
  @rands = nil
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BCDice
4
- VERSION = "3.1.3"
4
+ VERSION = "3.2.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcdice
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SAKATA Sinji
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-12 00:00:00.000000000 Z
11
+ date: 2021-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -63,6 +63,7 @@ files:
63
63
  - i18n/MonotoneMuseum/ko_kr.yml
64
64
  - i18n/Nechronica/ja_jp.yml
65
65
  - i18n/Nechronica/ko_kr.yml
66
+ - i18n/StellarKnights/ja_jp.yml
66
67
  - i18n/StratoShout/ja_jp.yml
67
68
  - i18n/StratoShout/ko_kr.yml
68
69
  - i18n/ja_jp.yml
@@ -104,6 +105,8 @@ files:
104
105
  - lib/bcdice/dice_table.rb
105
106
  - lib/bcdice/dice_table/chain_table.rb
106
107
  - lib/bcdice/dice_table/d66_grid_table.rb
108
+ - lib/bcdice/dice_table/d66_half_grid_table.rb
109
+ - lib/bcdice/dice_table/d66_one_third_table.rb
107
110
  - lib/bcdice/dice_table/d66_parity_table.rb
108
111
  - lib/bcdice/dice_table/d66_range_table.rb
109
112
  - lib/bcdice/dice_table/d66_table.rb
@@ -118,6 +121,7 @@ files:
118
121
  - lib/bcdice/game_system.rb
119
122
  - lib/bcdice/game_system/AFF2e.rb
120
123
  - lib/bcdice/game_system/AceKillerGene.rb
124
+ - lib/bcdice/game_system/Ainecadette.rb
121
125
  - lib/bcdice/game_system/Airgetlamh.rb
122
126
  - lib/bcdice/game_system/AlchemiaStruggle.rb
123
127
  - lib/bcdice/game_system/Alsetto.rb
@@ -263,6 +267,7 @@ files:
263
267
  - lib/bcdice/game_system/Raisondetre.rb
264
268
  - lib/bcdice/game_system/RecordOfLodossWar.rb
265
269
  - lib/bcdice/game_system/RecordOfSteam.rb
270
+ - lib/bcdice/game_system/Revulture.rb
266
271
  - lib/bcdice/game_system/RokumonSekai2.rb
267
272
  - lib/bcdice/game_system/RoleMaster.rb
268
273
  - lib/bcdice/game_system/RuinBreakers.rb
@@ -283,6 +288,7 @@ files:
283
288
  - lib/bcdice/game_system/ShinobiGami.rb
284
289
  - lib/bcdice/game_system/ShoujoTenrankai.rb
285
290
  - lib/bcdice/game_system/Skynauts.rb
291
+ - lib/bcdice/game_system/SkynautsBouken.rb
286
292
  - lib/bcdice/game_system/SteamPunkers.rb
287
293
  - lib/bcdice/game_system/StellarKnights.rb
288
294
  - lib/bcdice/game_system/SterileLife.rb
@@ -376,8 +382,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
376
382
  - !ruby/object:Gem::Version
377
383
  version: '0'
378
384
  requirements: []
379
- rubyforge_project:
380
- rubygems_version: 2.7.6.2
385
+ rubygems_version: 3.1.2
381
386
  signing_key:
382
387
  specification_version: 4
383
388
  summary: BCDice is a rolling dice engine for TRPG