bcdice 3.1.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
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