bcdice 3.3.0 → 3.6.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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +158 -74
  3. data/README.md +2 -1
  4. data/i18n/BeginningIdol/ja_jp.yml +2806 -0
  5. data/i18n/BeginningIdol/ko_kr.yml +1400 -0
  6. data/i18n/Cthulhu/zh_hans.yml +11 -0
  7. data/i18n/FutariSousa/ja_jp.yml +705 -9
  8. data/i18n/KillDeathBusiness/ja_jp.yml +2 -2
  9. data/i18n/MagicaLogia/ja_jp.yml +1 -1
  10. data/i18n/MonotoneMuseum/ko_kr.yml +526 -53
  11. data/i18n/SwordWorld/ja_jp.yml +6 -0
  12. data/i18n/SwordWorld2_0/ja_jp.yml +37 -0
  13. data/i18n/SwordWorld2_5/ja_jp.yml +57 -0
  14. data/lib/bcdice/common_command/add_dice/node.rb +28 -4
  15. data/lib/bcdice/common_command/add_dice/parser.rb +149 -85
  16. data/lib/bcdice/common_command/choice.rb +82 -7
  17. data/lib/bcdice/common_command/tally_dice/node.rb +135 -0
  18. data/lib/bcdice/common_command/tally_dice/parser.rb +302 -0
  19. data/lib/bcdice/common_command/tally_dice.rb +19 -0
  20. data/lib/bcdice/common_command.rb +2 -0
  21. data/lib/bcdice/dice_table/d66_left_range_table.rb +29 -0
  22. data/lib/bcdice/dice_table/d66_parity_table.rb +8 -0
  23. data/lib/bcdice/dice_table/d66_table.rb +5 -1
  24. data/lib/bcdice/dice_table.rb +1 -0
  25. data/lib/bcdice/game_system/AngelGear.rb +9 -4
  26. data/lib/bcdice/game_system/Aoharubaan.rb +91 -0
  27. data/lib/bcdice/game_system/AssaultEngine.rb +91 -0
  28. data/lib/bcdice/game_system/Avandner.rb +1 -2
  29. data/lib/bcdice/game_system/Ayabito.rb +229 -0
  30. data/lib/bcdice/game_system/BadLife.rb +264 -289
  31. data/lib/bcdice/game_system/Bakenokawa.rb +244 -0
  32. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  33. data/lib/bcdice/game_system/BeginningIdol.rb +116 -2390
  34. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +10 -2312
  35. data/lib/bcdice/game_system/CastleInGray.rb +133 -0
  36. data/lib/bcdice/game_system/Cthulhu.rb +2 -2
  37. data/lib/bcdice/game_system/Cthulhu7th.rb +10 -10
  38. data/lib/bcdice/game_system/Cthulhu_SimplifiedChinese.rb +60 -0
  39. data/lib/bcdice/game_system/CyberpunkRed.rb +135 -0
  40. data/lib/bcdice/game_system/DarkDaysDrive.rb +76 -41
  41. data/lib/bcdice/game_system/DoubleCross.rb +5 -0
  42. data/lib/bcdice/game_system/Dracurouge.rb +2 -1
  43. data/lib/bcdice/game_system/Elysion.rb +36 -20
  44. data/lib/bcdice/game_system/Emoklore.rb +1 -1
  45. data/lib/bcdice/game_system/FateCoreSystem.rb +117 -0
  46. data/lib/bcdice/game_system/FutariSousa.rb +48 -4
  47. data/lib/bcdice/game_system/GranCrest.rb +171 -406
  48. data/lib/bcdice/game_system/Irisbane.rb +154 -0
  49. data/lib/bcdice/game_system/Karukami.rb +84 -0
  50. data/lib/bcdice/game_system/KemonoNoMori.rb +17 -17
  51. data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
  52. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  53. data/lib/bcdice/game_system/NeverCloud.rb +19 -8
  54. data/lib/bcdice/game_system/PersonaO.rb +86 -0
  55. data/lib/bcdice/game_system/Revulture.rb +2 -2
  56. data/lib/bcdice/game_system/Shiranui.rb +145 -0
  57. data/lib/bcdice/game_system/ShuumatsuKikou.rb +298 -0
  58. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  59. data/lib/bcdice/game_system/SteamPunkers.rb +14 -1
  60. data/lib/bcdice/game_system/StellarKnights.rb +1 -1
  61. data/lib/bcdice/game_system/{SterileLife.rb → StellarLife.rb} +162 -226
  62. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +18 -5
  63. data/lib/bcdice/game_system/SwordWorld.rb +11 -7
  64. data/lib/bcdice/game_system/SwordWorld2_0.rb +30 -38
  65. data/lib/bcdice/game_system/SwordWorld2_5.rb +9 -63
  66. data/lib/bcdice/game_system/TalesFromTheLoop.rb +83 -0
  67. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  68. data/lib/bcdice/game_system/ToshiakiHolyGrailWar.rb +92 -0
  69. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +29 -28
  70. data/lib/bcdice/game_system/YearZeroEngine.rb +40 -19
  71. data/lib/bcdice/game_system/beginning_idol/accessories_table.rb +31 -0
  72. data/lib/bcdice/game_system/beginning_idol/bad_status_table.rb +43 -0
  73. data/lib/bcdice/game_system/beginning_idol/chain_d66_table.rb +29 -0
  74. data/lib/bcdice/game_system/beginning_idol/chain_table.rb +37 -0
  75. data/lib/bcdice/game_system/beginning_idol/costume_table.rb +37 -0
  76. data/lib/bcdice/game_system/beginning_idol/d6_twice_table.rb +36 -0
  77. data/lib/bcdice/game_system/beginning_idol/item_table.rb +51 -0
  78. data/lib/bcdice/game_system/beginning_idol/my_skill_name_table.rb +44 -0
  79. data/lib/bcdice/game_system/beginning_idol/random_event_table.rb +31 -0
  80. data/lib/bcdice/game_system/beginning_idol/skill_table.rb +63 -0
  81. data/lib/bcdice/game_system/beginning_idol/table.rb +193 -0
  82. data/lib/bcdice/game_system/beginning_idol/with_abnormality.rb +74 -0
  83. data/lib/bcdice/game_system/beginning_idol/work_table.rb +57 -0
  84. data/lib/bcdice/game_system/cyberpunk_red/tables.rb +530 -0
  85. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +1 -1
  86. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +1 -1
  87. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +4 -4
  88. data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
  89. data/lib/bcdice/game_system/sword_world/rating_options.rb +47 -0
  90. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +40 -45
  91. data/lib/bcdice/game_system/sword_world/rating_parser.rb +172 -141
  92. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +14 -10
  93. data/lib/bcdice/game_system.rb +16 -1
  94. data/lib/bcdice/randomizer.rb +1 -1
  95. data/lib/bcdice/version.rb +1 -1
  96. metadata +45 -5
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class SwordWorld < Base
6
+ class RatingOptions
7
+ # @return [Integer, nil]
8
+ attr_accessor :critical
9
+
10
+ # @return [Integer, nil]
11
+ attr_accessor :kept_modify
12
+
13
+ # @return [Integer, nil]
14
+ attr_accessor :first_to
15
+
16
+ # @return [Integer, nil]
17
+ attr_accessor :first_modify
18
+
19
+ # @return [Integer, nil]
20
+ attr_accessor :rateup
21
+
22
+ # @return [Boolean, nil]
23
+ attr_accessor :greatest_fortune
24
+
25
+ # @return [Integer, nil]
26
+ attr_accessor :semi_fixed_val
27
+
28
+ # @return [Integer, nil]
29
+ attr_accessor :tmp_fixed_val
30
+
31
+ # @return [Integer, nil]
32
+ attr_accessor :modifier
33
+
34
+ # @return [Integer, nil]
35
+ attr_accessor :modifier_after_half
36
+
37
+ def settable_first_roll_adjust_option?
38
+ return first_modify.nil? && first_to.nil?
39
+ end
40
+
41
+ def settable_non_2d_roll_option?
42
+ return greatest_fortune.nil? && semi_fixed_val.nil? && tmp_fixed_val.nil?
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -7,37 +7,48 @@ module BCDice
7
7
  # @return [Integer]
8
8
  attr_accessor :rate
9
9
 
10
- # @return [Integer, nil]
11
- attr_writer :critical
10
+ # @return [Integer]
11
+ attr_accessor :critical
12
12
 
13
- # @return [Integer, nil]
14
- attr_writer :kept_modify
13
+ # @return [Integer]
14
+ attr_accessor :kept_modify
15
15
 
16
- # @return [Integer, nil]
17
- attr_writer :first_to
16
+ # @return [Integer]
17
+ attr_accessor :first_to
18
18
 
19
- # @return [Integer, nil]
20
- attr_writer :first_modify
19
+ # @return [Integer]
20
+ attr_accessor :first_modify
21
21
 
22
- # @return [Integer, nil]
23
- attr_writer :rateup
22
+ # @return [Integer]
23
+ attr_accessor :rateup
24
24
 
25
25
  # @return [Boolean]
26
26
  attr_accessor :greatest_fortune
27
27
 
28
+ # @return [Integer]
29
+ attr_accessor :semi_fixed_val
30
+
31
+ # @return [Integer]
32
+ attr_accessor :tmp_fixed_val
33
+
28
34
  # @return [Integer]
29
35
  attr_accessor :modifier
30
36
 
31
37
  # @return [Integer, nil]
32
- attr_writer :modifier_after_half
33
-
34
- def initialize
35
- @critical = nil
36
- @kept_modify = nil
37
- @first_to = nil
38
- @first_modify = nil
38
+ attr_accessor :modifier_after_half
39
+
40
+ def initialize(rate, modifier)
41
+ @rate = rate
42
+ @modifier = modifier
43
+ @critical = 13
44
+ @kept_modify = 0
45
+ @first_to = 0
46
+ @first_modify = 0
39
47
  @greatest_fortune = false
40
- @rateup = nil
48
+ @rateup = 0
49
+ @semi_fixed_val = 0
50
+ @tmp_fixed_val = 0
51
+ @modifier_after_half = nil
41
52
  end
42
53
 
43
54
  # @return [Boolean]
@@ -46,35 +57,17 @@ module BCDice
46
57
  end
47
58
 
48
59
  # @return [Integer]
49
- def critical
50
- crit = @critical || (half ? 13 : 10)
51
- crit = 3 if crit < 3
52
- return crit
53
- end
54
-
55
- # @return [Integer]
56
- def first_modify
57
- return @first_modify || 0
58
- end
59
-
60
- # @return [Integer]
61
- def first_to
62
- return @first_to || 0
63
- end
64
-
65
- # @return [Integer]
66
- def rateup
67
- return @rateup || 0
68
- end
69
-
70
- # @return [Integer]
71
- def kept_modify
72
- return @kept_modify || 0
60
+ def min_critical
61
+ if @semi_fixed_val <= 1
62
+ return 3
63
+ else
64
+ return (@semi_fixed_val + @kept_modify + 2).clamp(3, 13)
65
+ end
73
66
  end
74
67
 
75
- # @return [Integer]
76
- def modifier_after_half
77
- return @modifier_after_half || 0
68
+ # @return [Boolean]
69
+ def infinite_roll?
70
+ return critical < min_critical
78
71
  end
79
72
 
80
73
  # @return [String]
@@ -86,6 +79,8 @@ module BCDice
86
79
  output += "m[#{first_to}]" if first_to != 0
87
80
  output += "r[#{rateup}]" if rateup != 0
88
81
  output += "gf" if @greatest_fortune
82
+ output += "sf[#{semi_fixed_val}]" if semi_fixed_val != 0
83
+ output += "tf[#{tmp_fixed_val}]" if tmp_fixed_val != 0
89
84
  output += "a[#{Format.modifier(kept_modify)}]" if kept_modify != 0
90
85
 
91
86
  if @modifier != 0