bcdice 3.13.0 → 3.15.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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -0
  3. data/i18n/Arianrhod/ko_kr.yml +3 -0
  4. data/i18n/Cthulhu/en_us.yml +11 -0
  5. data/i18n/Cthulhu/zh_hant.yml +1 -1
  6. data/i18n/CyberpunkRed/ja_jp.yml +389 -0
  7. data/i18n/CyberpunkRed/ko_kr.yml +389 -0
  8. data/i18n/DoubleCross/ja_jp.yml +53 -0
  9. data/i18n/DoubleCross/ko_kr.yml +52 -0
  10. data/i18n/FinalFantasyXIV/en_us.yml +4 -0
  11. data/i18n/FinalFantasyXIV/ja_jp.yml +4 -0
  12. data/i18n/FutariSousa/ja_jp.yml +284 -127
  13. data/i18n/KillDeathBusiness/ja_jp.yml +198 -0
  14. data/i18n/KizunaBullet/ja_jp.yml +653 -0
  15. data/i18n/MagicaLogia/ko_kr.yml +2 -2
  16. data/i18n/MonotoneMuseum/ja_jp.yml +246 -14
  17. data/i18n/MonotoneMuseum/ko_kr.yml +227 -0
  18. data/i18n/SkynautsBouken/ja_jp.yml +114 -0
  19. data/i18n/SkynautsBouken/ko_kr.yml +114 -0
  20. data/i18n/StratoShout/ko_kr.yml +102 -102
  21. data/i18n/TensaiGunshiNiNaro/ja_jp.yml +126 -0
  22. data/i18n/UnsungDuet/ja_jp.yml +62 -0
  23. data/i18n/UnsungDuet/ko_kr.yml +62 -0
  24. data/i18n/en_us.yml +5 -0
  25. data/i18n/zh_hant.yml +5 -0
  26. data/lib/bcdice/dice_table/range_table.rb +24 -0
  27. data/lib/bcdice/game_system/Agnostos.rb +248 -0
  28. data/lib/bcdice/game_system/Aionia.rb +131 -0
  29. data/lib/bcdice/game_system/AniMalus.rb +99 -59
  30. data/lib/bcdice/game_system/Arianrhod_Korean.rb +32 -0
  31. data/lib/bcdice/game_system/ArknightsFan.rb +245 -87
  32. data/lib/bcdice/game_system/BlackJacket.rb +244 -0
  33. data/lib/bcdice/game_system/BlackJacket_Korean.rb +244 -0
  34. data/lib/bcdice/game_system/CharonSanctions.rb +112 -0
  35. data/lib/bcdice/game_system/ConvictorDrive.rb +5 -4
  36. data/lib/bcdice/game_system/Cthulhu7th.rb +1 -1
  37. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/full_auto.rb +293 -0
  38. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/rollable.rb +43 -0
  39. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +470 -306
  40. data/lib/bcdice/game_system/Cthulhu_English.rb +59 -0
  41. data/lib/bcdice/game_system/CyberpunkRed.rb +15 -6
  42. data/lib/bcdice/game_system/CyberpunkRed_Korean.rb +66 -0
  43. data/lib/bcdice/game_system/DivineCharger.rb +841 -0
  44. data/lib/bcdice/game_system/DoubleCross.rb +18 -1
  45. data/lib/bcdice/game_system/DoubleCross_Korean.rb +5 -1
  46. data/lib/bcdice/game_system/FinalFantasyXIV.rb +115 -0
  47. data/lib/bcdice/game_system/FinalFantasyXIV_English.rb +39 -0
  48. data/lib/bcdice/game_system/FullFace.rb +63 -12
  49. data/lib/bcdice/game_system/FutariSousa.rb +105 -13
  50. data/lib/bcdice/game_system/Garactier.rb +479 -0
  51. data/lib/bcdice/game_system/GardenOrder.rb +390 -9
  52. data/lib/bcdice/game_system/GundogRevised.rb +8 -8
  53. data/lib/bcdice/game_system/Insane_Korean.rb +1 -1
  54. data/lib/bcdice/game_system/InvisibleLiar.rb +79 -0
  55. data/lib/bcdice/game_system/KillDeathBusiness.rb +155 -3
  56. data/lib/bcdice/game_system/KimitoYell.rb +568 -0
  57. data/lib/bcdice/game_system/KizunaBullet.rb +240 -0
  58. data/lib/bcdice/game_system/KyokoShinshoku.rb +51 -8
  59. data/lib/bcdice/game_system/Magius.rb +125 -0
  60. data/lib/bcdice/game_system/Magius_3rdNewTokyoCity.rb +62 -0
  61. data/lib/bcdice/game_system/MonotoneMuseum.rb +14 -1
  62. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  63. data/lib/bcdice/game_system/NRR.rb +2 -2
  64. data/lib/bcdice/game_system/NSSQ.rb +17 -9
  65. data/lib/bcdice/game_system/NervWhitePaper.rb +129 -0
  66. data/lib/bcdice/game_system/RogueLikeHalf.rb +198 -0
  67. data/lib/bcdice/game_system/RuneQuestRoleplayingInGlorantha.rb +16 -13
  68. data/lib/bcdice/game_system/ShinobiGami.rb +73 -43
  69. data/lib/bcdice/game_system/ShuumatsuBargainWars.rb +203 -0
  70. data/lib/bcdice/game_system/SkynautsBouken.rb +49 -134
  71. data/lib/bcdice/game_system/SkynautsBouken_Korean.rb +57 -0
  72. data/lib/bcdice/game_system/StratoShout_Korean.rb +1 -1
  73. data/lib/bcdice/game_system/SwordWorld.rb +5 -1
  74. data/lib/bcdice/game_system/SwordWorld2_5.rb +3 -2
  75. data/lib/bcdice/game_system/TensaiGunshiNiNaro.rb +262 -0
  76. data/lib/bcdice/game_system/TheIndieHack.rb +82 -0
  77. data/lib/bcdice/game_system/TheOneRing2nd.rb +406 -0
  78. data/lib/bcdice/game_system/TheUnofficialHollowKnightRPG.rb +185 -0
  79. data/lib/bcdice/game_system/TorgEternity.rb +35 -6
  80. data/lib/bcdice/game_system/TrailOfCthulhu.rb +139 -0
  81. data/lib/bcdice/game_system/UnsungDuet.rb +17 -75
  82. data/lib/bcdice/game_system/UnsungDuet_Korean.rb +41 -0
  83. data/lib/bcdice/game_system/Utakaze.rb +55 -2
  84. data/lib/bcdice/game_system/Warhammer4.rb +124 -3
  85. data/lib/bcdice/game_system/WoW.rb +161 -0
  86. data/lib/bcdice/game_system/YankeeMustDie.rb +192 -0
  87. data/lib/bcdice/game_system/YearZeroEngine.rb +225 -28
  88. data/lib/bcdice/game_system/Yotabana.rb +62 -0
  89. data/lib/bcdice/game_system/YuMyoKishi.rb +141 -0
  90. data/lib/bcdice/game_system/cyberpunk_red/tables.rb +111 -473
  91. data/lib/bcdice/game_system/kizuna_bullet/tables.rb +171 -0
  92. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +1 -0
  93. data/lib/bcdice/game_system/sword_world/rating_options.rb +4 -1
  94. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +5 -0
  95. data/lib/bcdice/game_system/sword_world/rating_parser.rb +129 -115
  96. data/lib/bcdice/game_system.rb +31 -0
  97. data/lib/bcdice/version.rb +1 -1
  98. metadata +50 -6
@@ -0,0 +1,171 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class KizunaBullet < Base
6
+ class RollTwiceRandomizerTable
7
+ def initialize(locale:, a_table:, b_table:)
8
+ @locale = locale
9
+ @a_table = a_table
10
+ @b_table = b_table
11
+ end
12
+
13
+ def roll(randomizer)
14
+ results = []
15
+
16
+ result_a = @a_table.roll(randomizer).to_s
17
+ results.push(result_a)
18
+
19
+ result_b = @b_table.roll(randomizer).to_s
20
+ results.push(result_b)
21
+
22
+ return results.join("\n")
23
+ end
24
+ end
25
+
26
+ class Roll4TimesRandomizerTable
27
+ def initialize(locale:, a_table:, b_table:, c_table:, d_table:)
28
+ @locale = locale
29
+ @a_table = a_table
30
+ @b_table = b_table
31
+ @c_table = c_table
32
+ @d_table = d_table
33
+ end
34
+
35
+ def roll(randomizer)
36
+ results = []
37
+
38
+ result_a = @a_table.roll(randomizer).to_s
39
+ results.push(result_a)
40
+
41
+ result_b = @b_table.roll(randomizer).to_s
42
+ results.push(result_b)
43
+
44
+ result_c = @c_table.roll(randomizer).to_s
45
+ results.push(result_c)
46
+
47
+ result_d = @d_table.roll(randomizer).to_s
48
+ results.push(result_d)
49
+
50
+ return results.join("\n")
51
+ end
52
+ end
53
+
54
+ class << self
55
+ private
56
+
57
+ def translate_tables(locale)
58
+ ordinary_days_place_table = DiceTable::Table.from_i18n("KizunaBullet.table.OP", locale)
59
+ ordinary_days_content_table = DiceTable::Table.from_i18n("KizunaBullet.table.OC", locale)
60
+ ordinary_days_work_place_table = DiceTable::Table.from_i18n("KizunaBullet.table.OWP", locale)
61
+ ordinary_days_work_content_table = DiceTable::Table.from_i18n("KizunaBullet.table.OWC", locale)
62
+ ordinary_days_holiday_place_table = DiceTable::Table.from_i18n("KizunaBullet.table.OHP", locale)
63
+ ordinary_days_holiday_content_table = DiceTable::Table.from_i18n("KizunaBullet.table.OHC", locale)
64
+ ordinary_days_trip_place_table = DiceTable::Table.from_i18n("KizunaBullet.table.OTP", locale)
65
+ ordinary_days_trip_content_table = DiceTable::Table.from_i18n("KizunaBullet.table.OTC", locale)
66
+ encounter_place_table = DiceTable::Table.from_i18n("KizunaBullet.table.EP", locale)
67
+ encounter_order_table = DiceTable::Table.from_i18n("KizunaBullet.table.EO", locale)
68
+ encounter_first_table = DiceTable::Table.from_i18n("KizunaBullet.table.EF", locale)
69
+ encounter_acquaintance_table = DiceTable::Table.from_i18n("KizunaBullet.table.EA", locale)
70
+ encounter_end_table = DiceTable::Table.from_i18n("KizunaBullet.table.EE", locale)
71
+ communication_place_table = DiceTable::Table.from_i18n("KizunaBullet.table.CP", locale)
72
+ communication_content_table = DiceTable::Table.from_i18n("KizunaBullet.table.CC", locale)
73
+ investigation_basic_table = DiceTable::D66Table.from_i18n("KizunaBullet.table.IB", locale)
74
+ investigation_dynamic_table = DiceTable::D66Table.from_i18n("KizunaBullet.table.ID", locale)
75
+ return {
76
+ "OP" => ordinary_days_place_table,
77
+ "OC" => ordinary_days_content_table,
78
+ "OPC" => RollTwiceRandomizerTable.new(
79
+ locale: locale,
80
+ a_table: ordinary_days_place_table,
81
+ b_table: ordinary_days_content_table
82
+ ).freeze,
83
+ "OWP" => ordinary_days_work_place_table,
84
+ "OWC" => ordinary_days_work_content_table,
85
+ "OWPC" => RollTwiceRandomizerTable.new(
86
+ locale: locale,
87
+ a_table: ordinary_days_work_place_table,
88
+ b_table: ordinary_days_work_content_table
89
+ ).freeze,
90
+ "OHP" => ordinary_days_holiday_place_table,
91
+ "OHC" => ordinary_days_holiday_content_table,
92
+ "OHPC" => RollTwiceRandomizerTable.new(
93
+ locale: locale,
94
+ a_table: ordinary_days_holiday_place_table,
95
+ b_table: ordinary_days_holiday_content_table
96
+ ).freeze,
97
+ "OTP" => ordinary_days_trip_place_table,
98
+ "OTC" => ordinary_days_trip_content_table,
99
+ "OTPC" => RollTwiceRandomizerTable.new(
100
+ locale: locale,
101
+ a_table: ordinary_days_trip_place_table,
102
+ b_table: ordinary_days_trip_content_table
103
+ ).freeze,
104
+ "TT" => DiceTable::D66Table.from_i18n("KizunaBullet.table.TT", locale),
105
+ "TTI" => DiceTable::D66Table.from_i18n("KizunaBullet.table.TTI", locale),
106
+ "TTC" => DiceTable::D66Table.from_i18n("KizunaBullet.table.TTC", locale),
107
+ "TTH" => DiceTable::D66Table.from_i18n("KizunaBullet.table.TTH", locale),
108
+ "EP" => encounter_place_table,
109
+ "EO" => encounter_order_table,
110
+ "EF" => encounter_first_table,
111
+ "EA" => encounter_acquaintance_table,
112
+ "EE" => encounter_end_table,
113
+ "EFA" => Roll4TimesRandomizerTable.new(
114
+ locale: locale,
115
+ a_table: encounter_place_table,
116
+ b_table: encounter_order_table,
117
+ c_table: encounter_first_table,
118
+ d_table: encounter_end_table
119
+ ).freeze,
120
+ "EAA" => Roll4TimesRandomizerTable.new(
121
+ locale: locale,
122
+ a_table: encounter_place_table,
123
+ b_table: encounter_order_table,
124
+ c_table: encounter_acquaintance_table,
125
+ d_table: encounter_end_table
126
+ ).freeze,
127
+ "CP" => communication_place_table,
128
+ "CC" => communication_content_table,
129
+ "CPC" => RollTwiceRandomizerTable.new(
130
+ locale: locale,
131
+ a_table: communication_place_table,
132
+ b_table: communication_content_table
133
+ ).freeze,
134
+ "IB" => investigation_basic_table,
135
+ "ID" => investigation_dynamic_table,
136
+ "IBD" => RollTwiceRandomizerTable.new(
137
+ locale: locale,
138
+ a_table: investigation_basic_table,
139
+ b_table: investigation_dynamic_table
140
+ ).freeze,
141
+ "HA" => DiceTable::Table.from_i18n("KizunaBullet.table.HA", locale),
142
+ "NI1" => DiceTable::Table.from_i18n("KizunaBullet.table.NI1", locale),
143
+ "NI2" => DiceTable::Table.from_i18n("KizunaBullet.table.NI2", locale),
144
+ "NI3" => DiceTable::Table.from_i18n("KizunaBullet.table.NI3", locale),
145
+ "NI4" => DiceTable::Table.from_i18n("KizunaBullet.table.NI4", locale),
146
+ "NI5" => DiceTable::Table.from_i18n("KizunaBullet.table.NI5", locale),
147
+ "NI6" => DiceTable::Table.from_i18n("KizunaBullet.table.NI6", locale),
148
+ "NT1" => DiceTable::Table.from_i18n("KizunaBullet.table.NT1", locale),
149
+ "NT2" => DiceTable::Table.from_i18n("KizunaBullet.table.NT2", locale),
150
+ "NT3" => DiceTable::Table.from_i18n("KizunaBullet.table.NT3", locale),
151
+ "NT4" => DiceTable::Table.from_i18n("KizunaBullet.table.NT4", locale),
152
+ "NT5" => DiceTable::Table.from_i18n("KizunaBullet.table.NT5", locale),
153
+ "NT6" => DiceTable::Table.from_i18n("KizunaBullet.table.NT6", locale),
154
+ "HH1" => DiceTable::Table.from_i18n("KizunaBullet.table.HH1", locale),
155
+ "HH2" => DiceTable::Table.from_i18n("KizunaBullet.table.HH2", locale),
156
+ "HH3" => DiceTable::Table.from_i18n("KizunaBullet.table.HH3", locale),
157
+ "HH4" => DiceTable::Table.from_i18n("KizunaBullet.table.HH4", locale),
158
+ "HH5" => DiceTable::Table.from_i18n("KizunaBullet.table.HH5", locale),
159
+ "HH6" => DiceTable::Table.from_i18n("KizunaBullet.table.HH6", locale),
160
+ "HC1" => DiceTable::Table.from_i18n("KizunaBullet.table.HC1", locale),
161
+ "HC2" => DiceTable::Table.from_i18n("KizunaBullet.table.HC2", locale),
162
+ "HC3" => DiceTable::Table.from_i18n("KizunaBullet.table.HC3", locale),
163
+ "HC4" => DiceTable::Table.from_i18n("KizunaBullet.table.HC4", locale),
164
+ "HC5" => DiceTable::Table.from_i18n("KizunaBullet.table.HC5", locale),
165
+ "HC6" => DiceTable::Table.from_i18n("KizunaBullet.table.HC6", locale),
166
+ }.freeze
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
@@ -18,6 +18,7 @@ module BCDice
18
18
  "@" => :AT,
19
19
  "#" => :SHARP,
20
20
  "$" => :DOLLAR,
21
+ "~" => :TILDE,
21
22
  }.freeze
22
23
 
23
24
  def initialize(source)
@@ -16,6 +16,9 @@ module BCDice
16
16
  # @return [Integer, nil]
17
17
  attr_accessor :first_modify
18
18
 
19
+ # @return [Integer, nil]
20
+ attr_accessor :first_modify_ssp
21
+
19
22
  # @return [Integer, nil]
20
23
  attr_accessor :rateup
21
24
 
@@ -38,7 +41,7 @@ module BCDice
38
41
  attr_accessor :modifier_after_one_and_a_half
39
42
 
40
43
  def settable_first_roll_adjust_option?
41
- return first_modify.nil? && first_to.nil?
44
+ return first_modify.nil? && first_to.nil? && first_modify_ssp.nil?
42
45
  end
43
46
 
44
47
  def settable_non_2d_roll_option?
@@ -19,6 +19,9 @@ module BCDice
19
19
  # @return [Integer]
20
20
  attr_accessor :first_modify
21
21
 
22
+ # @return [Integer]
23
+ attr_accessor :first_modify_ssp
24
+
22
25
  # @return [Integer]
23
26
  attr_accessor :rateup
24
27
 
@@ -47,6 +50,7 @@ module BCDice
47
50
  @kept_modify = 0
48
51
  @first_to = 0
49
52
  @first_modify = 0
53
+ @first_modify_ssp = 0
50
54
  @greatest_fortune = false
51
55
  @rateup = 0
52
56
  @semi_fixed_val = 0
@@ -85,6 +89,7 @@ module BCDice
85
89
 
86
90
  output += "c[#{critical}]" if critical < 13
87
91
  output += "m[#{Format.modifier(first_modify)}]" if first_modify != 0
92
+ output += "m[~#{Format.modifier(first_modify_ssp)}]" if first_modify_ssp != 0
88
93
  output += "m[#{first_to}]" if first_to != 0
89
94
  output += "r[#{rateup}]" if rateup != 0
90
95
  output += "gf" if @greatest_fortune
@@ -49,6 +49,7 @@ def parsed(rate, modifier, option)
49
49
  p.kept_modify = option.kept_modify&.eval(@round_type) || 0
50
50
  p.first_to = option.first_to || 0
51
51
  p.first_modify = option.first_modify || 0
52
+ p.first_modify_ssp = option.first_modify_ssp || 0
52
53
  p.rateup = option.rateup&.eval(@round_type) || 0
53
54
  p.greatest_fortune = option.greatest_fortune if !option.greatest_fortune.nil?
54
55
  p.semi_fixed_val = option.semi_fixed_val&.clamp(1, 6) || 0
@@ -66,122 +67,123 @@ end
66
67
  ##### State transition tables begin ###
67
68
 
68
69
  racc_action_table = [
69
- 18, 16, 17, 19, 6, 20, 21, 23, 24, 64,
70
- 65, 27, 28, 13, 66, 14, 22, 15, 18, 16,
71
- 17, 19, 5, 20, 21, 23, 24, 5, 9, 3,
72
- 4, 13, 10, 14, 22, 15, 18, 16, 17, 19,
73
- 11, 20, 21, 23, 24, 34, 5, 34, 40, 13,
74
- 42, 14, 22, 15, 30, 31, 30, 31, 33, 34,
75
- 33, 34, 62, 63, 62, 63, 34, 43, 30, 31,
76
- 30, 31, 33, 34, 33, 30, 31, 44, 34, 33,
77
- 34, 52, 30, 31, 57, 34, 33, 30, 31, 30,
78
- 31, 33, 34, 33, 30, 31, 58, 34, 33, 34,
79
- 60, 30, 31, 61, 34, 33, 30, 31, 30, 31,
80
- 33, 34, 33, 30, 31, nil, 34, 33, 34, nil,
81
- 30, 31, nil, 34, 33, 30, 31, 30, 31, 33,
82
- 36, 33, 30, 31, 62, 63, 33, 62, 63, 37,
83
- 38, 62, 63, 62, 63, 62, 63 ]
70
+ 36, 66, 67, 27, 28, 5, 68, 3, 4, 37,
71
+ 38, 18, 16, 17, 19, 6, 20, 21, 23, 24,
72
+ 39, 64, 65, 5, 13, 9, 14, 22, 15, 18,
73
+ 16, 17, 19, 10, 20, 21, 23, 24, 64, 65,
74
+ 64, 65, 13, 11, 14, 22, 15, 18, 16, 17,
75
+ 19, 5, 20, 21, 23, 24, 34, 41, 34, 43,
76
+ 13, 44, 14, 22, 15, 30, 31, 30, 31, 33,
77
+ 34, 33, 34, 64, 65, 64, 65, 34, 45, 30,
78
+ 31, 30, 31, 33, 34, 33, 30, 31, 53, 34,
79
+ 33, 34, 58, 30, 31, 59, 34, 33, 30, 31,
80
+ 30, 31, 33, 34, 33, 30, 31, 60, 34, 33,
81
+ 34, 62, 30, 31, 63, 34, 33, 30, 31, 30,
82
+ 31, 33, 34, 33, 30, 31, 69, 34, 33, 34,
83
+ nil, 30, 31, nil, 34, 33, 30, 31, 30, 31,
84
+ 33, nil, 33, 30, 31, 64, 65, 33, 64, 65 ]
84
85
 
85
86
  racc_action_check = [
86
- 7, 7, 7, 7, 1, 7, 7, 7, 7, 55,
87
- 55, 12, 12, 7, 55, 7, 7, 7, 25, 25,
88
- 25, 25, 3, 25, 25, 25, 25, 0, 4, 0,
89
- 0, 25, 5, 25, 25, 25, 49, 49, 49, 49,
90
- 6, 49, 49, 49, 49, 13, 9, 14, 17, 49,
91
- 19, 49, 49, 49, 13, 13, 14, 14, 13, 16,
92
- 14, 18, 46, 46, 48, 48, 22, 20, 16, 16,
93
- 18, 18, 16, 23, 18, 22, 22, 21, 24, 22,
94
- 27, 29, 23, 23, 37, 28, 23, 24, 24, 27,
95
- 27, 24, 30, 27, 28, 28, 38, 31, 28, 33,
96
- 43, 30, 30, 44, 40, 30, 31, 31, 33, 33,
97
- 31, 62, 33, 40, 40, nil, 63, 40, 64, nil,
98
- 62, 62, nil, 65, 62, 63, 63, 64, 64, 63,
99
- 15, 64, 65, 65, 50, 50, 65, 51, 51, 15,
100
- 15, 56, 56, 69, 69, 70, 70 ]
87
+ 15, 56, 56, 12, 12, 0, 56, 0, 0, 15,
88
+ 15, 7, 7, 7, 7, 1, 7, 7, 7, 7,
89
+ 15, 47, 47, 3, 7, 4, 7, 7, 7, 25,
90
+ 25, 25, 25, 5, 25, 25, 25, 25, 49, 49,
91
+ 51, 51, 25, 6, 25, 25, 25, 50, 50, 50,
92
+ 50, 9, 50, 50, 50, 50, 13, 17, 14, 19,
93
+ 50, 20, 50, 50, 50, 13, 13, 14, 14, 13,
94
+ 16, 14, 18, 52, 52, 57, 57, 22, 21, 16,
95
+ 16, 18, 18, 16, 23, 18, 22, 22, 29, 24,
96
+ 22, 27, 37, 23, 23, 38, 28, 23, 24, 24,
97
+ 27, 27, 24, 30, 27, 28, 28, 39, 31, 28,
98
+ 33, 44, 30, 30, 45, 41, 30, 31, 31, 33,
99
+ 33, 31, 64, 33, 41, 41, 60, 65, 41, 66,
100
+ nil, 64, 64, nil, 67, 64, 65, 65, 66, 66,
101
+ 65, nil, 66, 67, 67, 72, 72, 67, 73, 73 ]
101
102
 
102
103
  racc_action_pointer = [
103
- 24, 4, nil, 19, 23, 30, 40, -4, nil, 43,
104
- nil, nil, 0, 43, 45, 128, 57, 43, 59, 42,
105
- 59, 69, 64, 71, 76, 14, nil, 78, 83, 63,
106
- 90, 95, nil, 97, nil, nil, nil, 82, 94, nil,
107
- 102, nil, nil, 98, 101, nil, 49, nil, 51, 32,
108
- 121, 124, nil, nil, nil, -2, 128, nil, nil, nil,
109
- nil, nil, 109, 114, 116, 121, nil, nil, nil, 130,
110
- 132 ]
104
+ 2, 15, nil, 20, 20, 31, 43, 7, nil, 48,
105
+ nil, nil, -8, 54, 56, -2, 68, 52, 70, 51,
106
+ 53, 70, 75, 82, 87, 25, nil, 89, 94, 70,
107
+ 101, 106, nil, 108, nil, nil, nil, 90, 93, 96,
108
+ nil, 113, nil, nil, 109, 112, nil, 8, nil, 25,
109
+ 43, 27, 60, nil, nil, nil, -10, 62, nil, nil,
110
+ 124, nil, nil, nil, 120, 125, 127, 132, nil, nil,
111
+ nil, nil, 132, 135 ]
111
112
 
112
113
  racc_action_default = [
113
- -36, -36, -5, -36, -36, -36, -36, -1, -5, -36,
114
- -4, 71, -6, -36, -36, -36, -12, -36, -36, -36,
115
- -36, -36, -36, -36, -36, -2, -5, -36, -36, -36,
116
- -36, -36, -33, -36, -35, -8, -9, -36, -36, -13,
117
- -14, -16, -17, -36, -36, -20, -21, -30, -22, -3,
118
- -23, -24, -7, -31, -32, -36, -27, -10, -11, -15,
119
- -18, -19, -36, -36, -36, -36, -34, -28, -29, -25,
120
- -26 ]
114
+ -37, -37, -5, -37, -37, -37, -37, -1, -5, -37,
115
+ -4, 74, -6, -37, -37, -37, -13, -37, -37, -37,
116
+ -37, -37, -37, -37, -37, -2, -5, -37, -37, -37,
117
+ -37, -37, -34, -37, -36, -8, -9, -37, -37, -37,
118
+ -14, -15, -17, -18, -37, -37, -21, -22, -31, -23,
119
+ -3, -24, -25, -7, -32, -33, -37, -28, -10, -11,
120
+ -37, -16, -19, -20, -37, -37, -37, -37, -35, -12,
121
+ -29, -30, -26, -27 ]
121
122
 
122
123
  racc_goto_table = [
123
- 29, 35, 7, 39, 1, 41, 46, 48, 25, 45,
124
- 50, 51, 2, 55, nil, 8, 56, 53, 54, nil,
125
- nil, 26, nil, nil, nil, nil, 49, 59, nil, nil,
124
+ 29, 35, 7, 40, 1, 42, 47, 49, 25, 46,
125
+ 51, 52, 2, 56, nil, 8, 57, 54, 55, nil,
126
+ nil, 26, nil, nil, nil, nil, 50, nil, 61, nil,
126
127
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
127
- nil, nil, nil, nil, nil, nil, nil, 69, 70, 67,
128
- 68 ]
128
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 72,
129
+ 73, 70, 71 ]
129
130
 
130
131
  racc_goto_check = [
131
132
  5, 5, 3, 5, 1, 5, 6, 6, 3, 5,
132
133
  6, 6, 2, 7, nil, 2, 6, 5, 5, nil,
133
- nil, 2, nil, nil, nil, nil, 3, 5, nil, nil,
134
+ nil, 2, nil, nil, nil, nil, 3, nil, 5, nil,
134
135
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
135
- nil, nil, nil, nil, nil, nil, nil, 6, 6, 5,
136
- 5 ]
136
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 6,
137
+ 6, 5, 5 ]
137
138
 
138
139
  racc_goto_pointer = [
139
140
  nil, 4, 12, 0, nil, -13, -17, -20, nil ]
140
141
 
141
142
  racc_goto_default = [
142
- nil, nil, nil, nil, 12, 47, nil, nil, 32 ]
143
+ nil, nil, nil, nil, 12, 48, nil, nil, 32 ]
143
144
 
144
145
  racc_reduce_table = [
145
146
  0, 0, :racc_error,
146
- 2, 23, :_reduce_1,
147
- 3, 23, :_reduce_2,
148
- 4, 23, :_reduce_3,
149
- 2, 24, :_reduce_4,
150
- 0, 25, :_reduce_5,
151
- 2, 25, :_reduce_6,
152
- 4, 25, :_reduce_7,
153
- 3, 25, :_reduce_8,
154
- 3, 25, :_reduce_9,
155
- 4, 25, :_reduce_10,
156
- 4, 25, :_reduce_11,
157
- 2, 25, :_reduce_12,
158
- 3, 25, :_reduce_13,
159
- 3, 25, :_reduce_14,
160
- 4, 25, :_reduce_15,
161
- 3, 25, :_reduce_16,
162
- 3, 25, :_reduce_17,
163
- 4, 25, :_reduce_18,
164
- 4, 25, :_reduce_19,
165
- 3, 25, :_reduce_20,
166
- 2, 26, :_reduce_21,
167
- 2, 26, :_reduce_22,
168
- 3, 26, :_reduce_23,
169
- 3, 26, :_reduce_24,
170
- 3, 29, :_reduce_25,
171
- 3, 29, :_reduce_26,
147
+ 2, 24, :_reduce_1,
148
+ 3, 24, :_reduce_2,
149
+ 4, 24, :_reduce_3,
150
+ 2, 25, :_reduce_4,
151
+ 0, 26, :_reduce_5,
152
+ 2, 26, :_reduce_6,
153
+ 4, 26, :_reduce_7,
154
+ 3, 26, :_reduce_8,
155
+ 3, 26, :_reduce_9,
156
+ 4, 26, :_reduce_10,
157
+ 4, 26, :_reduce_11,
158
+ 5, 26, :_reduce_12,
159
+ 2, 26, :_reduce_13,
160
+ 3, 26, :_reduce_14,
161
+ 3, 26, :_reduce_15,
162
+ 4, 26, :_reduce_16,
163
+ 3, 26, :_reduce_17,
164
+ 3, 26, :_reduce_18,
165
+ 4, 26, :_reduce_19,
166
+ 4, 26, :_reduce_20,
167
+ 3, 26, :_reduce_21,
168
+ 2, 27, :_reduce_22,
169
+ 2, 27, :_reduce_23,
170
+ 3, 27, :_reduce_24,
171
+ 3, 27, :_reduce_25,
172
+ 3, 30, :_reduce_26,
173
+ 3, 30, :_reduce_27,
174
+ 1, 30, :_reduce_none,
175
+ 3, 29, :_reduce_29,
176
+ 3, 29, :_reduce_30,
172
177
  1, 29, :_reduce_none,
173
- 3, 28, :_reduce_28,
174
- 3, 28, :_reduce_29,
178
+ 2, 28, :_reduce_32,
179
+ 2, 28, :_reduce_33,
175
180
  1, 28, :_reduce_none,
176
- 2, 27, :_reduce_31,
177
- 2, 27, :_reduce_32,
178
- 1, 27, :_reduce_none,
179
- 3, 30, :_reduce_34,
180
- 1, 30, :_reduce_35 ]
181
+ 3, 31, :_reduce_35,
182
+ 1, 31, :_reduce_36 ]
181
183
 
182
- racc_reduce_n = 36
184
+ racc_reduce_n = 37
183
185
 
184
- racc_shift_n = 71
186
+ racc_shift_n = 74
185
187
 
186
188
  racc_token_table = {
187
189
  false => 0,
@@ -205,9 +207,10 @@ racc_token_table = {
205
207
  :BRACKETR => 18,
206
208
  :AT => 19,
207
209
  :SHARP => 20,
208
- :DOLLAR => 21 }
210
+ :DOLLAR => 21,
211
+ :TILDE => 22 }
209
212
 
210
- racc_nt_base = 22
213
+ racc_nt_base = 23
211
214
 
212
215
  racc_use_result_var = true
213
216
 
@@ -251,6 +254,7 @@ Racc_token_to_s_table = [
251
254
  "AT",
252
255
  "SHARP",
253
256
  "DOLLAR",
257
+ "TILDE",
254
258
  "$start",
255
259
  "expr",
256
260
  "rate",
@@ -368,6 +372,16 @@ def _reduce_11(val, _values, result)
368
372
  end
369
373
 
370
374
  def _reduce_12(val, _values, result)
375
+ option, _, _, _, term = val
376
+ raise ParseError unless @version == :v2_5 && option.settable_first_roll_adjust_option?
377
+
378
+ option.first_modify_ssp = term.to_i
379
+ result = option
380
+
381
+ result
382
+ end
383
+
384
+ def _reduce_13(val, _values, result)
371
385
  option, _ = val
372
386
  raise ParseError unless option.modifier_after_half.nil?
373
387
 
@@ -377,7 +391,7 @@ def _reduce_12(val, _values, result)
377
391
  result
378
392
  end
379
393
 
380
- def _reduce_13(val, _values, result)
394
+ def _reduce_14(val, _values, result)
381
395
  option, _, term = val
382
396
  raise ParseError unless option.modifier_after_half.nil?
383
397
 
@@ -387,7 +401,7 @@ def _reduce_13(val, _values, result)
387
401
  result
388
402
  end
389
403
 
390
- def _reduce_14(val, _values, result)
404
+ def _reduce_15(val, _values, result)
391
405
  option, _, _ = val
392
406
  raise ParseError if option.modifier_after_one_and_a_half
393
407
 
@@ -397,7 +411,7 @@ def _reduce_14(val, _values, result)
397
411
  result
398
412
  end
399
413
 
400
- def _reduce_15(val, _values, result)
414
+ def _reduce_16(val, _values, result)
401
415
  option, _, _, term = val
402
416
  raise ParseError if option.modifier_after_one_and_a_half
403
417
 
@@ -407,7 +421,7 @@ def _reduce_15(val, _values, result)
407
421
  result
408
422
  end
409
423
 
410
- def _reduce_16(val, _values, result)
424
+ def _reduce_17(val, _values, result)
411
425
  option, _, term = val
412
426
  raise ParseError unless [:v2_5, :v2_0].include?(@version) && option.rateup.nil?
413
427
 
@@ -417,7 +431,7 @@ def _reduce_16(val, _values, result)
417
431
  result
418
432
  end
419
433
 
420
- def _reduce_17(val, _values, result)
434
+ def _reduce_18(val, _values, result)
421
435
  option, _, _ = val
422
436
  raise ParseError unless [:v2_5, :v2_0].include?(@version) && option.settable_non_2d_roll_option?
423
437
 
@@ -427,7 +441,7 @@ def _reduce_17(val, _values, result)
427
441
  result
428
442
  end
429
443
 
430
- def _reduce_18(val, _values, result)
444
+ def _reduce_19(val, _values, result)
431
445
  option, _, _, term = val
432
446
  raise ParseError unless [:v2_5, :v2_0].include?(@version) && option.settable_non_2d_roll_option?
433
447
 
@@ -437,7 +451,7 @@ def _reduce_18(val, _values, result)
437
451
  result
438
452
  end
439
453
 
440
- def _reduce_19(val, _values, result)
454
+ def _reduce_20(val, _values, result)
441
455
  option, _, _, term = val
442
456
  raise ParseError unless [:v2_5, :v2_0].include?(@version) && option.settable_non_2d_roll_option?
443
457
 
@@ -447,7 +461,7 @@ def _reduce_19(val, _values, result)
447
461
  result
448
462
  end
449
463
 
450
- def _reduce_20(val, _values, result)
464
+ def _reduce_21(val, _values, result)
451
465
  option, _, term = val
452
466
  raise ParseError unless @version == :v2_5 && option.kept_modify.nil?
453
467
 
@@ -457,69 +471,69 @@ def _reduce_20(val, _values, result)
457
471
  result
458
472
  end
459
473
 
460
- def _reduce_21(val, _values, result)
474
+ def _reduce_22(val, _values, result)
461
475
  result = val[1]
462
476
  result
463
477
  end
464
478
 
465
- def _reduce_22(val, _values, result)
479
+ def _reduce_23(val, _values, result)
466
480
  result = Arithmetic::Node::Negative.new(val[1])
467
481
  result
468
482
  end
469
483
 
470
- def _reduce_23(val, _values, result)
484
+ def _reduce_24(val, _values, result)
471
485
  result = Arithmetic::Node::BinaryOp.new(val[0], :+, val[2])
472
486
  result
473
487
  end
474
488
 
475
- def _reduce_24(val, _values, result)
489
+ def _reduce_25(val, _values, result)
476
490
  result = Arithmetic::Node::BinaryOp.new(val[0], :-, val[2])
477
491
  result
478
492
  end
479
493
 
480
- def _reduce_25(val, _values, result)
494
+ def _reduce_26(val, _values, result)
481
495
  result = Arithmetic::Node::BinaryOp.new(val[0], :+, val[2])
482
496
  result
483
497
  end
484
498
 
485
- def _reduce_26(val, _values, result)
499
+ def _reduce_27(val, _values, result)
486
500
  result = Arithmetic::Node::BinaryOp.new(val[0], :-, val[2])
487
501
  result
488
502
  end
489
503
 
490
- # reduce 27 omitted
504
+ # reduce 28 omitted
491
505
 
492
- def _reduce_28(val, _values, result)
506
+ def _reduce_29(val, _values, result)
493
507
  result = Arithmetic::Node::BinaryOp.new(val[0], :*, val[2])
494
508
  result
495
509
  end
496
510
 
497
- def _reduce_29(val, _values, result)
511
+ def _reduce_30(val, _values, result)
498
512
  result = Arithmetic::Node::DivideWithGameSystemDefault.new(val[0], val[2])
499
513
 
500
514
  result
501
515
  end
502
516
 
503
- # reduce 30 omitted
517
+ # reduce 31 omitted
504
518
 
505
- def _reduce_31(val, _values, result)
519
+ def _reduce_32(val, _values, result)
506
520
  result = val[1]
507
521
  result
508
522
  end
509
523
 
510
- def _reduce_32(val, _values, result)
524
+ def _reduce_33(val, _values, result)
511
525
  result = Arithmetic::Node::Negative.new(val[1])
512
526
  result
513
527
  end
514
528
 
515
- # reduce 33 omitted
529
+ # reduce 34 omitted
516
530
 
517
- def _reduce_34(val, _values, result)
531
+ def _reduce_35(val, _values, result)
518
532
  result = val[1]
519
533
  result
520
534
  end
521
535
 
522
- def _reduce_35(val, _values, result)
536
+ def _reduce_36(val, _values, result)
523
537
  result = Arithmetic::Node::Number.new(val[0])
524
538
  result
525
539
  end