bcdice 3.1.0 → 3.3.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 (160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +78 -1
  3. data/README.md +1 -1
  4. data/i18n/MagicaLogia/zh_hans.yml +564 -0
  5. data/i18n/StellarKnights/ja_jp.yml +498 -0
  6. data/i18n/StellarKnights/ko_kr.yml +498 -0
  7. data/i18n/zh_hans.yml +7 -0
  8. data/lib/bcdice/command/parsed.rb +11 -3
  9. data/lib/bcdice/command/parser.rb +179 -100
  10. data/lib/bcdice/common_command/add_dice.rb +1 -1
  11. data/lib/bcdice/common_command/barabara_dice/node.rb +2 -2
  12. data/lib/bcdice/common_command/barabara_dice/result.rb +6 -0
  13. data/lib/bcdice/common_command/calc.rb +1 -1
  14. data/lib/bcdice/dice_table.rb +2 -0
  15. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  16. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  17. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +1 -1
  18. data/lib/bcdice/game_system.rb +6 -0
  19. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  20. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  21. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  22. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  23. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  24. data/lib/bcdice/game_system/Amadeus.rb +110 -93
  25. data/lib/bcdice/game_system/AngelGear.rb +2 -2
  26. data/lib/bcdice/game_system/AnimaAnimus.rb +16 -9
  27. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  28. data/lib/bcdice/game_system/Avandner.rb +1 -1
  29. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  30. data/lib/bcdice/game_system/BattleTech.rb +109 -28
  31. data/lib/bcdice/game_system/BeastBindTrinity.rb +28 -12
  32. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  33. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  34. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  35. data/lib/bcdice/game_system/BlindMythos.rb +39 -38
  36. data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
  37. data/lib/bcdice/game_system/BloodMoon.rb +9 -8
  38. data/lib/bcdice/game_system/CardRanker.rb +8 -7
  39. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  40. data/lib/bcdice/game_system/Chill.rb +10 -10
  41. data/lib/bcdice/game_system/Chill3.rb +9 -9
  42. data/lib/bcdice/game_system/CodeLayerd.rb +39 -39
  43. data/lib/bcdice/game_system/ColossalHunter.rb +34 -47
  44. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  45. data/lib/bcdice/game_system/Cthulhu.rb +1 -1
  46. data/lib/bcdice/game_system/Cthulhu7th.rb +48 -10
  47. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +2 -2
  48. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +2 -2
  49. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +1 -1
  50. data/lib/bcdice/game_system/Cthulhu_Korean.rb +1 -1
  51. data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
  52. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  53. data/lib/bcdice/game_system/DeadlineHeroes.rb +11 -10
  54. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  55. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  56. data/lib/bcdice/game_system/DoubleCross.rb +3 -1
  57. data/lib/bcdice/game_system/Dracurouge.rb +1 -1
  58. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  59. data/lib/bcdice/game_system/Elric.rb +18 -14
  60. data/lib/bcdice/game_system/Elysion.rb +1 -1
  61. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  62. data/lib/bcdice/game_system/Emoklore.rb +25 -20
  63. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  64. data/lib/bcdice/game_system/FilledWith.rb +205 -1272
  65. data/lib/bcdice/game_system/FutariSousa.rb +12 -10
  66. data/lib/bcdice/game_system/GURPS.rb +17 -28
  67. data/lib/bcdice/game_system/Garako.rb +1 -1
  68. data/lib/bcdice/game_system/GardenOrder.rb +12 -7
  69. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  70. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  71. data/lib/bcdice/game_system/Gorilla.rb +2 -8
  72. data/lib/bcdice/game_system/GranCrest.rb +18 -11
  73. data/lib/bcdice/game_system/Gundog.rb +9 -8
  74. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  75. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  76. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  77. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  78. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  79. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  80. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  81. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  82. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  83. data/lib/bcdice/game_system/Insane.rb +13 -20
  84. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  85. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  86. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  87. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  88. data/lib/bcdice/game_system/KanColle.rb +4 -9
  89. data/lib/bcdice/game_system/KemonoNoMori.rb +26 -39
  90. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  91. data/lib/bcdice/game_system/KurayamiCrying.rb +141 -2
  92. data/lib/bcdice/game_system/LiveraDoll.rb +254 -304
  93. data/lib/bcdice/game_system/LogHorizon.rb +13 -10
  94. data/lib/bcdice/game_system/MagicaLogia_SimplifiedChinese.rb +66 -0
  95. data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
  96. data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
  97. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +5 -4
  98. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  99. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  100. data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
  101. data/lib/bcdice/game_system/Nechronica.rb +63 -90
  102. data/lib/bcdice/game_system/NinjaSlayer.rb +6 -7
  103. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  104. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  105. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  106. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  107. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  108. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  109. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  110. data/lib/bcdice/game_system/Postman.rb +1 -1
  111. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  112. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  113. data/lib/bcdice/game_system/Revulture.rb +123 -0
  114. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  115. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  116. data/lib/bcdice/game_system/SRS.rb +17 -16
  117. data/lib/bcdice/game_system/SamsaraBallad.rb +38 -11
  118. data/lib/bcdice/game_system/Satasupe.rb +32 -32
  119. data/lib/bcdice/game_system/ScreamHighSchool.rb +5 -5
  120. data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
  121. data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
  122. data/lib/bcdice/game_system/Skynauts.rb +103 -142
  123. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  124. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  125. data/lib/bcdice/game_system/SteamPunkers.rb +11 -6
  126. data/lib/bcdice/game_system/StellarKnights.rb +85 -706
  127. data/lib/bcdice/game_system/StellarKnights_Korean.rb +79 -0
  128. data/lib/bcdice/game_system/SterileLife.rb +2 -3
  129. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
  130. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  131. data/lib/bcdice/game_system/Strave.rb +1 -1
  132. data/lib/bcdice/game_system/SwordWorld.rb +16 -7
  133. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -2
  134. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -2
  135. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  136. data/lib/bcdice/game_system/TokumeiTenkousei.rb +4 -3
  137. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  138. data/lib/bcdice/game_system/TrinitySeven.rb +279 -280
  139. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  140. data/lib/bcdice/game_system/Utakaze.rb +53 -48
  141. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  142. data/lib/bcdice/game_system/WARPS.rb +11 -9
  143. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  144. data/lib/bcdice/game_system/Warhammer.rb +15 -6
  145. data/lib/bcdice/game_system/Warhammer4.rb +15 -11
  146. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  147. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  148. data/lib/bcdice/game_system/Yggdrasill.rb +1 -1
  149. data/lib/bcdice/game_system/ZettaiReido.rb +20 -25
  150. data/lib/bcdice/game_system/filled_with/enemy_data_tables.rb +322 -0
  151. data/lib/bcdice/game_system/filled_with/event_tables.rb +392 -0
  152. data/lib/bcdice/game_system/filled_with/tresure_tables.rb +179 -0
  153. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  154. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +4 -4
  155. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  156. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
  157. data/lib/bcdice/repl.rb +1 -1
  158. data/lib/bcdice/result.rb +26 -0
  159. data/lib/bcdice/version.rb +1 -1
  160. metadata +18 -4
@@ -0,0 +1,179 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class FilledWith < Base
6
+ # 夢幻の迷宮財宝表
7
+ def getTresureResult(command)
8
+ m = /^TRS(\d+)([+\-]\d)?$/.match(command)
9
+ unless m
10
+ return nil
11
+ end
12
+
13
+ rank = m[1].to_i + m[2].to_i
14
+ rank = rank.clamp(0, 12)
15
+
16
+ return TRESURE_TABLES[rank].roll(@randomizer)
17
+ end
18
+
19
+ TRESURE_TABLES = {
20
+ 0 => DiceTable::Table.new(
21
+ "財宝表",
22
+ "1D6",
23
+ [
24
+ "HPポーション(消耗品)",
25
+ "FPポーション(消耗品)",
26
+ "マジックパウダー:火(消耗品)",
27
+ "マジックパウダー:氷(消耗品)",
28
+ "マジックパウダー:雷(消耗品)",
29
+ "500GP",
30
+ ]
31
+ ),
32
+ 1 => DiceTable::Table.new(
33
+ "財宝表",
34
+ "1D6",
35
+ [
36
+ "高級HPポーション(消耗品)",
37
+ "高級FPポーション(消耗品)",
38
+ "高級抵抗ポーション(消耗品)",
39
+ "高級鉄壁ポーション(消耗品)",
40
+ "マジックパウダー:火、氷、雷の3点セット(消耗品)",
41
+ "1000GP",
42
+ ]
43
+ ),
44
+ 2 => DiceTable::Table.new(
45
+ "財宝表",
46
+ "1D6",
47
+ [
48
+ "鈴のお守り(装飾品)",
49
+ "盗賊の小手(装飾品)",
50
+ "狩人の羽帽子(装飾品)",
51
+ "狙撃手の指貫(装飾品)",
52
+ "「スタミナバンド」「健康お守り」「レザーマント」3点セット",
53
+ "2000GP",
54
+ ]
55
+ ),
56
+ 3 => DiceTable::Table.new(
57
+ "財宝表",
58
+ "1D6",
59
+ [
60
+ "最高級HPポーション×2(消耗品)",
61
+ "最高級FPポーション×2(消耗品)",
62
+ "最高級抵抗ポーション×2(消耗品)",
63
+ "任意の装飾品1つ(4000GPまでのもの)",
64
+ "アタッチメント割引券(全員に1枚)",
65
+ "3000GP",
66
+ ]
67
+ ),
68
+ 4 => DiceTable::Table.new(
69
+ "財宝表",
70
+ "1D6",
71
+ [
72
+ "任意の「ミスリル」武器1つ",
73
+ "ミスリルシールド(盾)",
74
+ "ミスリルスケイル(鎧)",
75
+ "任意の装飾品1つ(5000GPまでのもの)",
76
+ "アタッチメント割引券(全員に2枚)",
77
+ "5000GP",
78
+ ]
79
+ ),
80
+ 5 => DiceTable::Table.new(
81
+ "財宝表",
82
+ "1D6",
83
+ [
84
+ "任意の武器1つ(10000GPまでのもの)",
85
+ "任意の盾1つ(10000GPまでのもの)",
86
+ "任意の鎧1つ(10000GPまでのもの)",
87
+ "最高級HPポーション(人数分)",
88
+ "任意の装飾品1つ(10000GPまでのもの)",
89
+ "7500GP",
90
+ ]
91
+ ),
92
+ 6 => DiceTable::Table.new(
93
+ "財宝表",
94
+ "1D6",
95
+ [
96
+ "任意の武器1つ(15000GPまでのもの)",
97
+ "任意の盾1つ(15000GPまでのもの)",
98
+ "任意の鎧1つ(15000GPまでのもの)",
99
+ "任意の装飾品1つ(15000GPまでのもの)",
100
+ "最高級FPポーション(人数分)",
101
+ "10000GP",
102
+ ]
103
+ ),
104
+ 7 => DiceTable::Table.new(
105
+ "財宝表",
106
+ "1D6",
107
+ [
108
+ "任意の武器1つ(30000GPまでのもの)",
109
+ "任意の盾1つ(30000GPまでのもの)",
110
+ "任意の鎧1つ(30000GPまでのもの)",
111
+ "任意の装飾品1つ(30000GPまでのもの)",
112
+ "蘇生ポーション(消耗品)",
113
+ "20000GP",
114
+ ]
115
+ ),
116
+ 8 => DiceTable::Table.new(
117
+ "財宝表",
118
+ "1D6",
119
+ [
120
+ "任意の武器1つ(60000GPまでのもの)",
121
+ "任意の盾1つ(60000GPまでのもの)",
122
+ "任意の鎧1つ(60000GPまでのもの)",
123
+ "任意の装飾品1つ(60000GPまでのもの)",
124
+ "蘇生ポーション(装飾品)+アタッチメント割引券10枚(割引券は人数分)",
125
+ "40000GP",
126
+ ]
127
+ ),
128
+ 9 => DiceTable::Table.new(
129
+ "財宝表",
130
+ "1D6",
131
+ [
132
+ "任意の武器1つ(100000GPまでのもの)",
133
+ "任意の盾1つ(100000GPまでのもの)",
134
+ "任意の鎧1つ(100000GPまでのもの)",
135
+ "任意の装飾品1つ(100000GPまでのもの)",
136
+ "蘇生ポーション(装飾品)+アタッチメント割引券20枚(割引券は人数分)",
137
+ "60000GP",
138
+ ]
139
+ ),
140
+ 10 => DiceTable::Table.new(
141
+ "財宝表",
142
+ "1D6",
143
+ [
144
+ "任意の武器1つ(150000GPまでのもの)",
145
+ "任意の盾1つ(150000GPまでのもの)",
146
+ "任意の鎧1つ(150000GPまでのもの)",
147
+ "任意の装飾品1つ(200000GPまでのもの)",
148
+ "蘇生ポーション(装飾品)+アタッチメント割引券30枚(割引券は人数分)",
149
+ "黄金の守護者の証(装飾品)(【ハッキング】があれば黄金の電子暗号キー(装飾品)も追加)",
150
+ ]
151
+ ),
152
+ 11 => DiceTable::Table.new(
153
+ "財宝表",
154
+ "1D6",
155
+ [
156
+ "体力の欠片(大事なもの)(全員に10個)",
157
+ "敏捷の欠片(大事なもの)(全員に10個)",
158
+ "感覚の欠片(大事なもの)(全員に10個)",
159
+ "知力の欠片(大事なもの)(全員に10個)",
160
+ "意志の欠片(大事なもの)(全員に10個)",
161
+ "お好きな副能力の欠片(大事なもの)(1人ずつ好きなものを選択して全員に50個)",
162
+ ]
163
+ ),
164
+ 12 => DiceTable::Table.new(
165
+ "財宝表",
166
+ "1D6",
167
+ [
168
+ "体力の欠片(大事なもの)(全員に20個)",
169
+ "敏捷の欠片(大事なもの)(全員に20個)",
170
+ "感覚の欠片(大事なもの)(全員に20個)",
171
+ "知力の欠片(大事なもの)(全員に20個)",
172
+ "意志の欠片(大事なもの)(全員に20個)",
173
+ "お好きな副能力の欠片(大事なもの)(1人ずつ好きなものを選択して全員に100個)",
174
+ ]
175
+ )
176
+ }.freeze
177
+ end
178
+ end
179
+ end
@@ -112,7 +112,7 @@ module BCDice
112
112
  [3, "あなたの国は、英雄が用いた武具の伝説が残っている。レア武具アイテムの中からランダムに1種を選ぶ。そのレアアイテムのレシピを持っている。【王宮】のある部屋に、そのレア武具アイテムの名前を記入すること。"],
113
113
  [4, "あなたの国は、有名な職人たちが揃う工業国家である。コモンアイテムを作成するとき、それらのアイテムを作成するための必要国力が1点高いものとして扱う。"],
114
114
  [5, "あなたの国は、質実剛健な兵士たちが揃っている。その国のキャラクターは、《配下》最大値が1人上昇する(最大2人まで上昇する。3回目以降は振り直すこと)。"],
115
- [6, "あなたの国は、過去に列強に臣従し、いまでも友好的な関係を築いている。(1D6)を振ること。1ならダイナマイト帝国、2なら千年王朝、3ならメトロ汗国、4ならハグルマ資本主義人民共和国との関係が「友好」になる。5や6なら振り直すこと。また、その列強の列強系施設1軒を獲得する。"],
115
+ [6, "あなたの国は、過去に列強に臣従し、いまでも友好的な関係を築いている。(1D6)を振ること。1ならダイナマイト帝国、2なら千年王朝、3ならメトロ汗国、4ならハグルマ資本主義神聖共和国との関係が「友好」になる。5や6なら振り直すこと。また、その列強の列強系施設1軒を獲得する。"],
116
116
  ]
117
117
  return get_table_by_number(num, table)
118
118
  end
@@ -57,22 +57,22 @@ module BCDice
57
57
  return @first_modify || 0
58
58
  end
59
59
 
60
- # @return @[Integer]
60
+ # @return [Integer]
61
61
  def first_to
62
62
  return @first_to || 0
63
63
  end
64
64
 
65
- # @return @[Integer]
65
+ # @return [Integer]
66
66
  def rateup
67
67
  return @rateup || 0
68
68
  end
69
69
 
70
- # @return @[Integer]
70
+ # @return [Integer]
71
71
  def kept_modify
72
72
  return @kept_modify || 0
73
73
  end
74
74
 
75
- # @return @[Integer]
75
+ # @return [Integer]
76
76
  def modifier_after_half
77
77
  return @modifier_after_half || 0
78
78
  end
@@ -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.0"
4
+ VERSION = "3.3.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.0
4
+ version: 3.3.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-03-20 00:00:00.000000000 Z
11
+ date: 2021-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -59,14 +59,18 @@ files:
59
59
  - i18n/LogHorizon/ko_kr.yml
60
60
  - i18n/MagicaLogia/ja_jp.yml
61
61
  - i18n/MagicaLogia/ko_kr.yml
62
+ - i18n/MagicaLogia/zh_hans.yml
62
63
  - i18n/MonotoneMuseum/ja_jp.yml
63
64
  - i18n/MonotoneMuseum/ko_kr.yml
64
65
  - i18n/Nechronica/ja_jp.yml
65
66
  - i18n/Nechronica/ko_kr.yml
67
+ - i18n/StellarKnights/ja_jp.yml
68
+ - i18n/StellarKnights/ko_kr.yml
66
69
  - i18n/StratoShout/ja_jp.yml
67
70
  - i18n/StratoShout/ko_kr.yml
68
71
  - i18n/ja_jp.yml
69
72
  - i18n/ko_kr.yml
73
+ - i18n/zh_hans.yml
70
74
  - i18n/zh_hant.yml
71
75
  - lib/bcdice.rb
72
76
  - lib/bcdice/arithmetic.rb
@@ -104,6 +108,8 @@ files:
104
108
  - lib/bcdice/dice_table.rb
105
109
  - lib/bcdice/dice_table/chain_table.rb
106
110
  - lib/bcdice/dice_table/d66_grid_table.rb
111
+ - lib/bcdice/dice_table/d66_half_grid_table.rb
112
+ - lib/bcdice/dice_table/d66_one_third_table.rb
107
113
  - lib/bcdice/dice_table/d66_parity_table.rb
108
114
  - lib/bcdice/dice_table/d66_range_table.rb
109
115
  - lib/bcdice/dice_table/d66_table.rb
@@ -118,6 +124,7 @@ files:
118
124
  - lib/bcdice/game_system.rb
119
125
  - lib/bcdice/game_system/AFF2e.rb
120
126
  - lib/bcdice/game_system/AceKillerGene.rb
127
+ - lib/bcdice/game_system/Ainecadette.rb
121
128
  - lib/bcdice/game_system/Airgetlamh.rb
122
129
  - lib/bcdice/game_system/AlchemiaStruggle.rb
123
130
  - lib/bcdice/game_system/Alsetto.rb
@@ -228,6 +235,7 @@ files:
228
235
  - lib/bcdice/game_system/LostRoyal.rb
229
236
  - lib/bcdice/game_system/MagicaLogia.rb
230
237
  - lib/bcdice/game_system/MagicaLogia_Korean.rb
238
+ - lib/bcdice/game_system/MagicaLogia_SimplifiedChinese.rb
231
239
  - lib/bcdice/game_system/MeikyuDays.rb
232
240
  - lib/bcdice/game_system/MeikyuKingdom.rb
233
241
  - lib/bcdice/game_system/MeikyuKingdomBasic.rb
@@ -263,6 +271,7 @@ files:
263
271
  - lib/bcdice/game_system/Raisondetre.rb
264
272
  - lib/bcdice/game_system/RecordOfLodossWar.rb
265
273
  - lib/bcdice/game_system/RecordOfSteam.rb
274
+ - lib/bcdice/game_system/Revulture.rb
266
275
  - lib/bcdice/game_system/RokumonSekai2.rb
267
276
  - lib/bcdice/game_system/RoleMaster.rb
268
277
  - lib/bcdice/game_system/RuinBreakers.rb
@@ -283,8 +292,11 @@ files:
283
292
  - lib/bcdice/game_system/ShinobiGami.rb
284
293
  - lib/bcdice/game_system/ShoujoTenrankai.rb
285
294
  - lib/bcdice/game_system/Skynauts.rb
295
+ - lib/bcdice/game_system/SkynautsBouken.rb
296
+ - lib/bcdice/game_system/StarryDolls.rb
286
297
  - lib/bcdice/game_system/SteamPunkers.rb
287
298
  - lib/bcdice/game_system/StellarKnights.rb
299
+ - lib/bcdice/game_system/StellarKnights_Korean.rb
288
300
  - lib/bcdice/game_system/SterileLife.rb
289
301
  - lib/bcdice/game_system/StrangerOfSwordCity.rb
290
302
  - lib/bcdice/game_system/StratoShout.rb
@@ -320,7 +332,10 @@ files:
320
332
  - lib/bcdice/game_system/cthulhu7th/full_auto.rb
321
333
  - lib/bcdice/game_system/cthulhu7th/rollable.rb
322
334
  - lib/bcdice/game_system/filled_with/cook_tables.rb
335
+ - lib/bcdice/game_system/filled_with/enemy_data_tables.rb
336
+ - lib/bcdice/game_system/filled_with/event_tables.rb
323
337
  - lib/bcdice/game_system/filled_with/lot_tables.rb
338
+ - lib/bcdice/game_system/filled_with/tresure_tables.rb
324
339
  - lib/bcdice/game_system/meikyu_kingdom/item_table.rb
325
340
  - lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb
326
341
  - lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb
@@ -373,8 +388,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
373
388
  - !ruby/object:Gem::Version
374
389
  version: '0'
375
390
  requirements: []
376
- rubyforge_project:
377
- rubygems_version: 2.7.6.2
391
+ rubygems_version: 3.1.2
378
392
  signing_key:
379
393
  specification_version: 4
380
394
  summary: BCDice is a rolling dice engine for TRPG