mgmg 1.2.4 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f37ed34dce9abf54d8e4866ddcf4370ff18d56051c3e90146b7d48eebbed467c
4
- data.tar.gz: e558b1f0157ce13802253cd5f523b994b2736553d751654121c1d38e683ba0f4
3
+ metadata.gz: 26c10a350028b972409920fe3aa4f57cfe8154a2b4dca70cc94342275e9fbe73
4
+ data.tar.gz: b2dc70384ffa9aca8b475ce30505f091375b7d68a7cf43e925cfb9a00b0b18b8
5
5
  SHA512:
6
- metadata.gz: 82034c96b8b76b75cd30442c2a85ed863999964ee6a6bca445aec3cfcee56c58f0674e33085cee5f5a528f067c2a6a0b35c8f804a7f3b933e31683b570df42aa
7
- data.tar.gz: 57d4e069040076bf37526ca1e12d9faacea7691faa178f5654344cc44c578805411dd44888f27cc0a49d477a189b35dbbd64307e2d8e0b30f2137a40fe440eb4
6
+ metadata.gz: 3895e9496d5aba7be3431e1268c4bf7cb8eaa48b628fe19c6179531925e5809478d827e101cd4c6e68031c2296607818c99dd905ea33cecc9bdd51486c2c69a5
7
+ data.tar.gz: 548d89140bcdf08c3d00cd7b8573c43e5de721e25a59771af9cb492a9c3dc6a26b93618d6a431ab86951ed1666ca9c6000506622105b4fb5a61716458ea02730
@@ -75,3 +75,8 @@
75
75
 
76
76
  ## 1.2.4 2020/03/01
77
77
  - 開発用のgemのバージョンを更新(ライブラリ本体は更新なし).
78
+
79
+ ## 1.2.5 2020/08/22
80
+ - `Mgmg::TPolynomial#leading(fmt=nil)`, `Mgmg::TPolynomial#[](i, j)`を追加.
81
+ - `Mgmg::Equip#history`, `Mgmg::Equip#min_levels`, `Mgmg::Equip#min_level`を追加.
82
+ - ソースコードのファイル配置を整理.
data/README.md CHANGED
@@ -135,6 +135,10 @@ puts '小竜咆哮'.build(-1)
135
135
  ### `Mgmg::Equip#weight, star`
136
136
  それぞれ重量,☆数を整数値で返します.「複数装備」の場合,`weight`は総重量,`star`は装備数に関する値が返ります.
137
137
 
138
+ ### `Mgmg::Equip#total_cost`
139
+ 製作に必要な総エレメント量を,火,地,水の順のベクトルとして返します.ケージの十分性の確認には,下記の`comp_cost`を用います.
140
+ ver2.00β12以降では,合成時の消費エレメントが,武器なら火,防具なら水エレメントと半々の消費に変更されていますが,現在,この変更には対応していません.
141
+
138
142
  ### `Mgmg::Equip#attack, phydef, magdef, hp, mp, str, dex, speed, magic, fire, earth, water`
139
143
  それぞれ
140
144
  ```
@@ -142,17 +146,6 @@ puts '小竜咆哮'.build(-1)
142
146
  ```
143
147
  の値を`Integer`で返します.
144
148
 
145
- ### `Mgmg::Equip#atkstr, atk_sd, dex_as, mag_das`
146
- それぞれ
147
- ```
148
- 攻撃+腕力,攻撃x2+腕力+器用,器用x2+攻撃+腕力,魔力x4+器用x2+攻撃+腕力
149
- ```
150
- の値を返します.これらはそれぞれ
151
- ```
152
- (剣,斧,杖,本),(短剣,双短剣),(弓,弩),(バスターアロー)
153
- ```
154
- の威力の定数倍の値です.トリックプレーやディバイドには対応していません.
155
-
156
149
  ### `Mgmg::Equip#power`
157
150
  武器種別ごとに適した威力計算値の4倍の値を返します.具体的には以下の値です.
158
151
 
@@ -175,14 +168,23 @@ puts '小竜咆哮'.build(-1)
175
168
  ### `Mgmg::Equip#fpower`
176
169
  武器または複数装備の場合,`Mgmg::Equip#power.fdiv(4)`を返します.防具の場合,`Mgmg::Equip#power.fdiv(2)`を返します.
177
170
 
171
+ ### `Mgmg::Equip#atkstr, atk_sd, dex_as, mag_das`
172
+ それぞれ
173
+ ```
174
+ 攻撃+腕力,攻撃x2+腕力+器用,器用x2+攻撃+腕力,魔力x4+器用x2+攻撃+腕力
175
+ ```
176
+ の値を返します.これらはそれぞれ
177
+ ```
178
+ (剣,斧,杖,本),(短剣,双短剣),(弓,弩),(バスターアロー)
179
+ ```
180
+ の威力の定数倍の値です.トリックプレーやディバイドには対応していません.
181
+
178
182
  ### `Mgmg::Equip#magmag`
179
183
  「魔防x2+魔力」の値を返します.魔力の半分が魔防に加算されることから,実際の魔防性能に比例した値となります.
180
184
 
181
- ### `Mgmg::Equip#total_cost`
182
- 製作に必要な総エレメント量を,火,地,水の順のベクトルとして返します.ケージの十分性の確認には,下記の`comp_cost`を用います.
183
-
184
185
  ### `Mgmg::Equip#comp_cost(outsourcing=false)`
185
186
  `self`が合成によって作られたものだとした場合の消費地エレメント量を返します.地ケージ確保のための確認用途が多いと思うので短い`cost`をエイリアスとしています.`outsourcing`が真の場合,街の道具製作屋に頼んだ場合のコストを返します.
187
+ ver2.00β12以降では武器なら火,防具なら水エレメントと半々の消費に変更されていますが,現在,この変更には対応していません.
186
188
 
187
189
  ### `Mgmg::Equip#smith_cost(outsourcing=false)`
188
190
  `self`が鍛冶・防具製作によって作られたものだったものだとした場合の消費火・水エレメント量を返します.`outscourcing`が真の場合,街の鍛冶屋・防具製作屋に頼んだ場合のコストを返します.
@@ -190,6 +192,17 @@ puts '小竜咆哮'.build(-1)
190
192
  ### `Mgmg::Equip#+(other)`
191
193
  `self`と`other`を装備した「複数装備」の`Mgmg::Equip`を返します.`self`と`other`はいずれも単品でも「複数装備」でも構いません.武器複数などの装備可否チェックはされません.
192
194
 
195
+ ### `Mgmg::Equip#history`
196
+ 多段階の合成におけるすべての中間生成物からなる配列を返します.
197
+ 「複数装備」の場合,各装備の`history`を連結した配列を返します.
198
+
199
+ ### `Mgmg::Equip#min_levels`
200
+ レシピ中の,鍛冶・防具製作物の文字列をキー,重量1で生成するのに必要な最小レベルを値とした`Hash`を返します.
201
+ 「複数装備」の場合,各装備の`min_levels`をマージした`Hash`を返します.
202
+
203
+ ### `Mgmg::Equip#min_level`
204
+ `min_levels`の値の最大値を返します.「複数装備」の場合,`[鍛冶の必要レベル,防具製作の必要レベル]`を返します.
205
+
193
206
  ### `Mgmg::TPolynomial`
194
207
  前述の`String#poly`によって生成される二変数多項式のクラスです.最初のTはtwo-variableのTです.以下のようなメソッドが定義されています.
195
208
 
@@ -208,6 +221,12 @@ puts '小竜咆哮'.build(-1)
208
221
  ### `Mgmg::TPolynomial#inspect(fmt=->(r){"Rational(#{r.numerator}, #{r.denominator})"})`
209
222
  `Mgmg::TPolynomial#to_s`と同様ですが,鍛冶・防具製作Lvを`s`,道具製作Lvを`c`としたRubyの式として解釈可能な文字列を返します.つまり,係数をリテラル,掛け算を`*`で表現しています.`fmt`は`Mgmg::TPolynomial#to_s`と同様で,適当な値を指定することでRuby以外の言語でも解釈可能になります.例えば,精度が問題でないならば,`'%e'`とすると,大抵の言語で解釈可能な文字列を生成できます.
210
223
 
224
+ ### `Mgmg::TPolynomial#leading(fmt=nil)`
225
+ 最高次係数を返します.`fmt`が`nil`なら数値(`Rational`)をそのまま,それ以外なら`Mgmg::TPolynomial#to_s`と同様の方式で文字列に変換して返します.
226
+
227
+ ### `Mgmg::TPolynomial#[](i, j)`
228
+ 鍛冶・防具製作LvをS,道具製作LvをCとして,S<sup>i</sup>C<sup>j</sup> の係数を返します.負の値を指定すると,最高次から降順に数えた次数の項の係数を返します.例えば`i, j = -1, -1`なら,最高次の係数となります.引数が正で範囲外なら`0`を返し,負で範囲外なら`IndexError`を上げます.
229
+
211
230
  ### `Mgmg::TPolynomial#evaluate(smith, comp=smith)`
212
231
  鍛冶・防具製作Lvを`smith`,道具製作Lvを`comp`として値を計算します.丸めを無視しているため,実際の合成結果以上の値が返ります.
213
232
 
@@ -1,135 +1,9 @@
1
- require "mgmg/version"
2
- require 'mgmg/const'
3
-
4
- module Mgmg
5
- class << Equip
6
- def build(str, s_level, c_level, left_associative: true)
7
- str = Mgmg.check_string(str)
8
- stack, str = build_sub0([], str)
9
- build_sub(stack, str, s_level, c_level, left_associative)
10
- end
11
- private def build_sub0(stack, str)
12
- SystemEquip.each do |k, v|
13
- if Regexp.compile(k).match(str)
14
- stack << v
15
- str = str.gsub(k, "<#{stack.length-1}>")
16
- end
17
- end
18
- [stack, str]
19
- end
20
- private def build_sub(stack, str, s_level, c_level, lassoc)
21
- if m = /\A(.*\+?)\[([^\[\]]+)\](\+?[^\[]*)\Z/.match(str)
22
- stack << build_sub(stack, m[2], s_level, c_level, lassoc)
23
- build_sub(stack, "#{m[1]}<#{stack.length-1}>#{m[3]}", s_level, c_level, lassoc)
24
- elsif m = ( lassoc ? /\A(.+)\+(.+?)\Z/ : /\A(.+?)\+(.+)\Z/ ).match(str)
25
- if c_level < 0
26
- compose(build_sub(stack, m[1], s_level, c_level, lassoc), build_sub(stack, m[2], s_level, c_level, lassoc), 0, true)
27
- else
28
- compose(build_sub(stack, m[1], s_level, c_level, lassoc), build_sub(stack, m[2], s_level, c_level, lassoc), c_level, false)
29
- end
30
- elsif m = /\A\<(\d+)\>\Z/.match(str)
31
- stack[m[1].to_i]
32
- else
33
- if s_level < 0
34
- smith(str, 0, true)
35
- else
36
- smith(str, s_level, false)
37
- end
38
- end
39
- end
40
-
41
- def compose(main, sub, level, outsourcing)
42
- main_k, sub_k = main.kind, sub.kind
43
- main_s, sub_s = main.star, sub.star
44
- main_main, sub_main = main.main, sub.main
45
- main_sub, sub_sub = main.sub, sub.sub
46
- para = Vec.new(9, 0)
47
- ele = Vec.new(3, 0)
48
-
49
- # 9パラメータ
50
- coef = Equip9[main_k].dup
51
- para[] = coef
52
- para.add!(level).e_div!(2)
53
- para.e_mul!(sub.para).e_div!(100)
54
- coef.sub!(Equip9[sub_k])
55
- coef.add!( 100 + (main_s-sub_s)*5 - ( ( main_main==sub_main && main_main != 9 ) ? 30 : 0 ) )
56
- coef.add!(Material9[main_main]).sub!(Material9[sub_main])
57
- coef.e_mul!(EquipFilter[main_k])
58
- para.e_mul!(coef).e_div!( main_k==sub_k ? 200 : 100 )
59
- para.add!(main.para)
60
-
61
- # エレメント
62
- ele[] = sub.element
63
- ele.e_mul!([75, level].min).e_div!( main_k==sub_k ? 200 : 100 )
64
- ele.add!(main.element)
65
-
66
- ret = new(main_k, main.weight+sub.weight, main_s+sub_s, main_sub, sub_main, para, ele)
67
- ret.total_cost.add!(main.total_cost).add!(sub.total_cost)
68
- ret.total_cost[1] += ret.comp_cost(outsourcing)
69
- ret
70
- end
71
-
72
- def smith(str, level, outsourcing)
73
- str = Mgmg.check_string(str)
74
- unless m = /\A(.+)\((.+\d+),?(.+\d+)\)\Z/.match(str)
75
- raise InvalidSmithError.new(str)
76
- end
77
- kind = EquipIndex[m[1].to_sym]
78
- unless kind
79
- raise InvalidEquipClassError.new(m[1])
80
- end
81
- main_m, main_s, main_mc = parse_material(m[2])
82
- sub_m, sub_s, sub_mc = parse_material(m[3])
83
- para = Vec.new(9, 0)
84
- ele = Vec.new(3, 0)
85
-
86
- # 9パラメータ
87
- para[] = Equip9[kind]
88
- para.e_mul!(Main9[main_m]).e_div!(100)
89
- coef = Sub9[sub_m].dup
90
- coef.add!(level)
91
- para.e_mul!(coef).e_div!( main_mc==sub_mc ? 200 : 100 )
92
-
93
- # エレメント
94
- ele[] = MainEL[main_m]
95
- ele.e_mul!(SubEL[sub_m]).e_div!(6)
96
-
97
- # 重量
98
- weight = ( ( EquipWeight[kind] + SubWeight[sub_m] - level.div(2) ) * ( MainWeight[main_m] ) ).div(10000)
99
-
100
- ret = new(kind, ( weight<1 ? 1 : weight ), (main_s+sub_s).div(2), main_mc, sub_mc, para, ele)
101
- if kind < 8
102
- ret.total_cost[0] = ret.smith_cost(outsourcing)
103
- else
104
- ret.total_cost[2] = ret.smith_cost(outsourcing)
105
- end
106
- ret
107
- end
108
-
109
- def min_level(str, weight=1)
110
- str = Mgmg.check_string(str)
111
- unless m = /\A(.+)\((.+\d+),?(.+\d+)\)\Z/.match(str)
112
- raise InvalidSmithError.new(str)
113
- end
114
- kind = EquipIndex[m[1].to_sym]
115
- main_m, main_s, = parse_material(m[2])
116
- sub_m, sub_s, = parse_material(m[3])
117
-
118
- q, r = ((weight+1)*10000).divmod(MainWeight[main_m])
119
- l = ( EquipWeight[kind] + SubWeight[sub_m] - q + ( r==0 ? 1 : 0 ) )*2
120
- [(main_s-1)*3, (sub_s-1)*3, l].max
121
- end
122
-
123
- private def parse_material(str)
124
- m = /\A.+?(\d+)\Z/.match(str)
125
- mat = MaterialIndex[str.to_sym]
126
- if m.nil? || mat.nil?
127
- raise InvalidMaterialError.new(str)
128
- end
129
- [mat, m[1].to_i, mat<90 ? mat.div(10): 9]
130
- end
131
- end
132
- end
1
+ require_relative './mgmg/version'
2
+ require_relative './mgmg/utils'
3
+ require_relative './mgmg/const'
4
+ require_relative './mgmg/equip'
5
+ require_relative './mgmg/poly'
6
+ require_relative './mgmg/system_equip'
133
7
 
134
8
  class String
135
9
  def min_level(w=1)
@@ -1,675 +1,4 @@
1
1
  module Mgmg
2
- using(Module.new do
3
- refine Integer do
4
- def comma3
5
- self.to_s.gsub(/(\d)(?=(\d{3})+(?!\d))/, '\1,')
6
- end
7
-
8
- # 0への丸めを行う整数除
9
- def cdiv(other)
10
- if self < 0
11
- -(-self).div(other)
12
- else
13
- self.div(other)
14
- end
15
- end
16
- end
17
- end)
18
- class Vec < Array
19
- def add!(other)
20
- case other
21
- when Array
22
- self.map!.with_index do |e, i|
23
- e + other[i]
24
- end
25
- else
26
- self.map! do |e|
27
- e + other
28
- end
29
- end
30
- self
31
- end
32
- def sub!(other)
33
- case other
34
- when Array
35
- self.map!.with_index do |e, i|
36
- e - other[i]
37
- end
38
- else
39
- self.map! do |e|
40
- e - other
41
- end
42
- end
43
- self
44
- end
45
- def e_mul!(other)
46
- case other
47
- when Array
48
- self.map!.with_index do |e, i|
49
- e * other[i]
50
- end
51
- else
52
- self.map! do |e|
53
- e * other
54
- end
55
- end
56
- self
57
- end
58
- def e_div!(other)
59
- case other
60
- when Array
61
- self.map!.with_index do |e, i|
62
- e.cdiv(other[i])
63
- end
64
- else
65
- self.map! do |e|
66
- e.cdiv(other)
67
- end
68
- end
69
- self
70
- end
71
- def self.irange(size)
72
- Vec.new(size, &:itself)
73
- end
74
- def []=(*arg)
75
- case arg.size
76
- when 1
77
- self.replace(arg[0])
78
- arg[0]
79
- else
80
- super
81
- end
82
- end
83
- end
84
- class Equip
85
- ParamList = %w|攻撃 物防 魔防 HP MP 腕力 器用 素早 魔力|
86
- ElementList = %w|火 地 水|
87
- EqPosList = %w|武 頭 胴 腕 足 飾|
88
- def initialize(kind, weight, star, main_m, sub_m, para, element)
89
- @kind, @weight, @star, @main, @sub, @para, @element = kind, weight, star, main_m, sub_m, para, element
90
- @total_cost = Vec[0, 0, 0]
91
- end
92
- attr_accessor :kind, :weight, :star, :main, :sub, :para, :element, :total_cost
93
- def initialize_copy(other)
94
- @kind = other.kind
95
- @weight = other.weight
96
- @star = other.star
97
- @main = other.main
98
- @sub = other.sub
99
- @para = other.para.dup
100
- @element = other.element.dup
101
- @total_cost = other.total_cost.dup
102
- end
103
-
104
- def compose(other, level, outsourcing=false)
105
- self.class.compose(self, other, level, outsourcing)
106
- end
107
-
108
- def to_s
109
- par = @para.map.with_index{|e, i| e==0 ? nil : "#{ParamList[i]}:#{e.comma3}"}.compact
110
- elm = @element.map.with_index{|e, i| e==0 ? nil : "#{ElementList[i]}#{e}"}.compact
111
- unless elm.empty?
112
- par << "EL:#{elm.join('')}"
113
- end
114
- if @kind == 28
115
- ep = @star.map.with_index{|e, i| e==0 ? nil : "#{EqPosList[i]}:#{e}"}.compact
116
- "複数装備#{@weight}(#{ep.join(', ')})[#{par.join(', ')}]"
117
- else
118
- "#{EquipName[@kind]}#{@weight}☆#{@star}(#{MaterialClass[@main]}#{MaterialClass[@sub]})[#{par.join(', ')}]"
119
- end
120
- end
121
- def inspect
122
- par = @para.map.with_index{|e, i| "#{ParamList[i]}:#{e}"}
123
- par << ( "EL:" + @element.map.with_index{|e, i| "#{ElementList[i]}#{e}"}.join('') )
124
- tc = "<コスト:" + @total_cost.map.with_index{|e, i| "#{ElementList[i]}#{e}"}.join('') + '>'
125
- if @kind == 28
126
- ep = @star.map.with_index{|e, i| "#{EqPosList[i]}:#{e}"}
127
- "複数装備#{@weight}(#{ep.join(', ')})[#{par.join(', ')}]#{tc}"
128
- else
129
- "#{EquipName[@kind]}#{@weight}☆#{@star}(#{MaterialClass[@main]}#{MaterialClass[@sub]})[#{par.join(', ')}]#{tc}"
130
- end
131
- end
132
-
133
- %i|attack phydef magdef hp mp str dex speed magic|.each.with_index do |s, i|
134
- define_method(s){ @para[i] }
135
- end
136
- def atkstr
137
- attack()+str()
138
- end
139
- def atk_sd
140
- attack()*2+str()+dex()
141
- end
142
- def dex_as
143
- attack()+str()+dex()*2
144
- end
145
- def mag_das
146
- magic()*4+dex_as()
147
- end
148
- [:fire, :earth, :water].each.with_index do |s, i|
149
- define_method(s){ @element[i] }
150
- end
151
-
152
- def power
153
- case @kind
154
- when 0, 1
155
- atk_sd()*2
156
- when 2, 3
157
- atkstr()*4
158
- when 4
159
- [dex_as()*2, mag_das()].max
160
- when 5
161
- dex_as()*2
162
- when 6, 7
163
- [magic()*8, atkstr()*4].max
164
- when 28
165
- (@para.sum*4)-((hp()+mp())*3)
166
- else
167
- ret = @para.max
168
- if ret == magdef()
169
- ret*2+magic()
170
- else
171
- ret*2
172
- end
173
- end
174
- end
175
- def magmag
176
- magdef()*2+magic()
177
- end
178
- def fpower
179
- if @kind < 8 || @kind == 28
180
- power().fdiv(4)
181
- else
182
- power().fdiv(2)
183
- end
184
- end
185
-
186
- def smith_cost(outsourcing=false)
187
- if outsourcing
188
- if @kind < 8
189
- (@star**2)*2+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp()
190
- else
191
- (@star**2)+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp()
192
- end
193
- else
194
- if @kind < 8
195
- ((@star**2)*2+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp()).div(2)
196
- else
197
- ((@star**2)+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp()).div(2)
198
- end
199
- end
200
- end
201
- def comp_cost(outsourcing=false)
202
- if outsourcing
203
- [(@star**2)*5+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp(), 0].max
204
- else
205
- [((@star**2)*5+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp()).div(2), 0].max
206
- end
207
- end
208
- alias :cost :comp_cost
209
-
210
- def add!(other)
211
- if @kind == 28
212
- if other.kind == 28
213
- @star.add(other.star)
214
- else
215
- @star[EquipPosition[other.kind]] += 1
216
- end
217
- else
218
- @star = Vec.new(6, 0)
219
- @star[EquipPosition[@kind]] = 1
220
- @kind = 28
221
- if other.kind == 28
222
- @star.add!(other.star)
223
- else
224
- @star[EquipPosition[other.kind]] += 1
225
- end
226
- end
227
- @weight += other.weight
228
- @main = 12
229
- @sub = 12
230
- @para.add!(other.para)
231
- @element.add!(other.element)
232
- @total_cost.add!(other.total_cost)
233
- self
234
- end
235
- def +(other)
236
- self.dup.add!(other)
237
- end
238
- def coerce(other)
239
- if other == 0
240
- [self.class.new(28, 0, Vec.new(6, 0), 12, 12, Vec.new(9, 0), Vec.new(3, 0)), self]
241
- else
242
- raise TypeError, "Mgmg::Equip can't be coerced into other than 0"
243
- end
244
- end
245
- end
246
- class Mat
247
- def initialize(m, n, value=nil)
248
- if block_given?
249
- @body = Array.new(m) do |i|
250
- Array.new(n) do |j|
251
- yield(i, j)
252
- end
253
- end
254
- else
255
- @body = Array.new(m) do
256
- Array.new(n, value)
257
- end
258
- end
259
- end
260
- attr_accessor :body
261
- def initialize_copy(obj)
262
- @body = obj.body.map(&:dup)
263
- end
264
- def row_size
265
- @body.length
266
- end
267
- def col_size
268
- @body[0].length
269
- end
270
- def each_with_index
271
- @body.each.with_index do |row, i|
272
- row.each.with_index do |e, j|
273
- yield(e, i, j)
274
- end
275
- end
276
- self
277
- end
278
- def map_with_index!
279
- @body.each.with_index do |row, i|
280
- row.map!.with_index do |e, j|
281
- yield(e, i, j)
282
- end
283
- end
284
- self
285
- end
286
- def map_with_index(&block)
287
- dup.map_with_index!(&block)
288
- end
289
- def submat_add!(is, js, other)
290
- i_s, i_e = index_treatment(is, row_size)
291
- j_s, j_e = index_treatment(js, col_size)
292
- i_s.upto(i_e).with_index do |i, io|
293
- row = @body[i]
294
- o_row = other.body[io]
295
- j_s.upto(j_e).with_index do |j, jo|
296
- row[j] += o_row[jo]
297
- end
298
- end
299
- self
300
- end
301
- private def index_treatment(idx, max)
302
- case idx
303
- when Integer
304
- [idx, idx]
305
- when Range
306
- if idx.exclude_end?
307
- [idx.first, idx.last-1]
308
- else
309
- [idx.first, idx.last]
310
- end
311
- when Array
312
- [idx[0], idx[0]+idx[1]-1]
313
- when nil
314
- [0, max]
315
- else
316
- raise ArgumentError, "#{idx.class} is not available for Mat index"
317
- end.map! do |i|
318
- i < 0 ? max-i : i
319
- end
320
- end
321
- def scalar!(value)
322
- self.map_with_index! do |e, i, j|
323
- e * value
324
- end
325
- end
326
- def scalar(value)
327
- self.dup.scalar!(value)
328
- end
329
- def sum
330
- @body.map(&:sum).sum
331
- end
332
- def pprod(other)
333
- r, c = row_size, col_size
334
- ret = self.class.new(r+other.row_size-1, c+other.col_size-1, 0)
335
- other.each_with_index do |o, i, j|
336
- ret.submat_add!(i...(i+r), j...(j+c), scalar(o))
337
- end
338
- ret
339
- end
340
- def padd(other)
341
- ret = self.class.new([row_size, other.row_size].max, [col_size, other.col_size].max, 0)
342
- ret.submat_add!(0...row_size, 0...col_size, self)
343
- ret.submat_add!(0...(other.row_size), 0...(other.col_size), other)
344
- end
345
- end
346
- class << Mat
347
- def v_array(*ary)
348
- new(ary.length, 1) do |i, j|
349
- ary[i]
350
- end
351
- end
352
- def h_array(*ary)
353
- new(1, ary.length) do |i, j|
354
- ary[j]
355
- end
356
- end
357
- end
358
- class TPolynomial
359
- def initialize(mat, kind, star, main_m, sub_m)
360
- @mat, @kind, @star, @main, @sub = mat, kind, star, main_m, sub_m
361
- end
362
- attr_accessor :mat, :kind, :star, :main, :sub
363
- def initialize_copy(obj)
364
- @mat, @kind, @star, @main, @sub = obj.mat.dup, obj.kind, obj.star, obj.main, obj.sub
365
- end
366
- def evaluate(smith, comp=smith)
367
- @mat.map_with_index do |e, i, j|
368
- e * (smith**i) * (comp**j)
369
- end.sum
370
- end
371
- def to_s(fmt=nil)
372
- foo = []
373
- (@mat.col_size-1).downto(0) do |c|
374
- bar = []
375
- (@mat.row_size-1).downto(0) do |s|
376
- value = @mat.body[s][c]
377
- baz = str(value, fmt)
378
- case s
379
- when 0
380
- # nothing to do
381
- when 1
382
- baz << 'S'
383
- else
384
- baz << "S^#{s}"
385
- end
386
- bar << baz if value != 0
387
- end
388
- case bar.length
389
- when 0
390
- next
391
- when 1
392
- bar = bar[0]
393
- else
394
- bar = "(#{bar.join('+')})"
395
- end
396
- case c
397
- when 0
398
- # nothing to do
399
- when 1
400
- bar << 'C'
401
- else
402
- bar << "C^#{c}"
403
- end
404
- foo << bar
405
- end
406
- foo.join('+').tap{|r| break str(0.quo(1), fmt) if r==''}
407
- end
408
- private def str(value, fmt)
409
- ret = case fmt
410
- when NilClass
411
- value.to_s
412
- when String
413
- fmt % value
414
- when Symbol
415
- value.__send__(fmt)
416
- when Proc
417
- fmt.call(value)
418
- else
419
- raise
420
- end
421
- if ret[0] == '-' || ( /\//.match(ret) && ret[0] != '(' )
422
- "(#{ret})"
423
- else
424
- ret
425
- end
426
- end
427
- def inspect(fmt=->(r){"Rational(#{r.numerator}, #{r.denominator})"})
428
- foo = []
429
- (@mat.col_size-1).downto(0) do |c|
430
- bar = []
431
- (@mat.row_size-1).downto(0) do |s|
432
- value = @mat.body[s][c]
433
- bar << str(value, fmt)
434
- end
435
- buff = bar[0]
436
- buff = "#{buff}*s+#{bar[1]}" if 1 < bar.length
437
- 2.upto(bar.length-1) do |i|
438
- buff = "(#{buff})*s+#{bar[i]}"
439
- end
440
- foo << buff
441
- end
442
- ret = foo[0]
443
- 1.upto(foo.length-1) do |i|
444
- ret = "(#{ret})*c+#{foo[i]}"
445
- end
446
- ret
447
- end
448
- def smith_balance(other, order=-1)
449
- o_org = order
450
- order += @mat.col_size if order < 0
451
- if order < 0 || @mat.col_size <= order || other.mat.col_size <= order then
452
- raise ArgumentError, "given order #{o_org} is out of range [-max(#{@mat.col_size}, #{other.mat.col_size}), max(#{@mat.col_size}, #{other.mat.col_size})-1]"
453
- end
454
- a, b, c, d = @mat.body[1][order], @mat.body[0][order], other.mat.body[1][order], other.mat.body[0][order]
455
- if a == c
456
- return( b == d )
457
- else
458
- return( (d-b).quo(a-c) )
459
- end
460
- end
461
- def smith_fix(smith, fmt=nil)
462
- foo = []
463
- (@mat.col_size-1).downto(0) do |c|
464
- bar = 0
465
- (@mat.row_size-1).downto(0) do |s|
466
- bar += ( @mat.body[s][c] * (smith**s) )
467
- end
468
- bar = str(bar, fmt)
469
- case c
470
- when 0
471
- # nothing to do
472
- when 1
473
- bar << 'C'
474
- else
475
- bar << "C^#{c}"
476
- end
477
- foo << bar
478
- end
479
- foo.join('+')
480
- end
481
-
482
- alias :+@ :dup
483
- def -@
484
- ret = self.dup
485
- ret.mat.scalar!(-1)
486
- ret
487
- end
488
- def +(other)
489
- mat = @mat.padd(other.mat)
490
- self.class.new(mat, 28, 0, 12, 12)
491
- end
492
- def -(other)
493
- mat = @mat.padd(other.mat.scalar(-1))
494
- self.class.new(mat, 28, 0, 12, 12)
495
- end
496
- def scalar(val)
497
- ret = self.dup
498
- ret.mat.scalar!(val)
499
- ret
500
- end
501
- alias :* :scalar
502
- def quo(val)
503
- ret = self.dup
504
- ret.mat.scalar!(1.quo(val))
505
- ret
506
- end
507
- alias :/ :quo
508
-
509
- def partial_derivative(variable)
510
- case variable.to_s
511
- when /\Ac/i
512
- if @mat.col_size <= 1
513
- self.class.new(Mat.new(1, 1, 0), 28, 0, 12, 12)
514
- else
515
- mat = Mat.new(@mat.row_size, @mat.col_size-1) do |i, j|
516
- @mat.body[i][j+1] * (j+1)
517
- end
518
- self.class.new(mat, 28, 0, 12, 12)
519
- end
520
- when /\As/i
521
- if @mat.row_size <= 1
522
- self.class.new(Mat.new(1, 1, 0), 28, 0, 12, 12)
523
- else
524
- mat = Mat.new(@mat.row_size-1, @mat.col_size) do |i, j|
525
- @mat.body[i+1][j] * (i+1)
526
- end
527
- self.class.new(mat, 28, 0, 12, 12)
528
- end
529
- else
530
- raise ArgumentError, "the argument must be `s' or `c', not `#{variable}'"
531
- end
532
- end
533
- end
534
- class << TPolynomial
535
- ParamIndex = Hash.new
536
- %i|attack phydef magdef hp mp str dex speed magic|.each.with_index do |s, i|
537
- ParamIndex.store(s, i)
538
- ParamIndex.store(i, i)
539
- ParamIndex.store(Equip::ParamList[i], i)
540
- end
541
- def from_equip(equip, para)
542
- new(Mat.new(1, 1, equip.para[ParamIndex[para]]), equip.kind, equip.star, equip.main, equip.sub)
543
- end
544
- def smith(str, para)
545
- unless m = /\A(.+)\((.+\d+),?(.+\d+)\)\Z/.match(str)
546
- raise ArgumentError.new("given string `#{str}' is unparsable as a smithing recipe")
547
- end
548
- kind = EquipIndex[m[1].to_sym]
549
- main_m, main_s, main_mc = Equip.__send__(:parse_material, m[2])
550
- sub_m, sub_s, sub_mc = Equip.__send__(:parse_material, m[3])
551
- para = ParamIndex[para]
552
-
553
- c = ( Equip9[kind][para] * Main9[main_m][para] ).cdiv(100).quo( main_mc==sub_mc ? 200 : 100 )
554
- new(Mat.v_array(c*Sub9[sub_m][para], c), kind, (main_s+sub_s).div(2), main_mc, sub_mc)
555
- end
556
- def compose(main, sub, para)
557
- main_k, sub_k = main.kind, sub.kind
558
- main_s, sub_s = main.star, sub.star
559
- main_main, sub_main = main.main, sub.main
560
- main_sub, sub_sub = main.sub, sub.sub
561
- para = ParamIndex[para]
562
-
563
- if Equip9[main_k][para] == 0
564
- c = 0.quo(1)
565
- else
566
- c = ( 100 + Equip9[main_k][para] - Equip9[sub_k][para] + Material9[main_main][para] - Material9[sub_main][para] +
567
- (main_s-sub_s)*5 - ( ( main_main==sub_main && main_main != 9 ) ? 30 : 0 ) ).quo( main_k==sub_k ? 40000 : 20000 )
568
- end
569
- mat = main.mat.padd(sub.mat.pprod(Mat.h_array(c*Equip9[main_k][para], c)))
570
- new(mat, main_k, main_s+sub_s, main_sub, sub_main)
571
- end
572
- def build(str, para, left_associative: true)
573
- str = Mgmg.check_string(str)
574
- _para = ParamIndex[para]
575
- if _para.nil?
576
- raise ArgumentError, "unknown parameter symbol `#{para.inspect}' given"
577
- end
578
- stack, str = build_sub0([], str, _para)
579
- build_sub(stack, str, _para, left_associative)
580
- end
581
- private def build_sub0(stack, str, para)
582
- SystemEquip.each do |k, v|
583
- stack << from_equip(v, para)
584
- str = str.gsub(k, "<#{stack.length-1}>")
585
- end
586
- [stack, str]
587
- end
588
- private def build_sub(stack, str, para, lassoc)
589
- if m = /\A(.*\+?)\[([^\[\]]+)\](\+?[^\[]*)\Z/.match(str)
590
- stack << build_sub(stack, m[2], para, lassoc)
591
- build_sub(stack, "#{m[1]}<#{stack.length-1}>#{m[3]}", para, lassoc)
592
- elsif m = ( lassoc ? /\A(.+)\+(.+?)\Z/ : /\A(.+?)\+(.+)\Z/ ).match(str)
593
- compose(build_sub(stack, m[1], para, lassoc), build_sub(stack, m[2], para, lassoc), para)
594
- elsif m = /\A\<(\d+)\>\Z/.match(str)
595
- stack[m[1].to_i]
596
- else
597
- smith(str, para)
598
- end
599
- end
600
- end
601
- class InvalidCharacterError < StandardError
602
- def initialize(match)
603
- @wchar = match[0]
604
- super("`#{@wchar}' is not a valid character for recipes")
605
- end
606
- attr_accessor :wchar
607
- end
608
- class InvalidBracketError < StandardError; end
609
- class InvalidSmithError < StandardError
610
- def initialize(str)
611
- @recipe = str
612
- super("`#{@recipe}' is not a valid recipe for smithing")
613
- end
614
- attr_accessor :recipe
615
- end
616
- class InvalidMaterialError < StandardError
617
- def initialize(str)
618
- @material = str
619
- super("`#{@material}' is not a valid material name")
620
- end
621
- attr_accessor :material
622
- end
623
- class InvalidEquipClassError < StandardError
624
- def initialize(str)
625
- @equip = str
626
- super("`#{@equip}' is not a valid equip class name")
627
- end
628
- attr_accessor :equip
629
- end
630
- CharacterList = /[^\(\)\+0123456789\[\]あきくしすたてなねのびりるイウガクグサジスタダチツデトドニノフブペボムラリルロンヴー一万二光兜典刀剣劣匠双古名吹咆品哮地大天太子安宝小帽弓弩当息悪戦手指斧書服木本杖業樹歴殺水氷法火炎牙物玉王産用界異的皮盾短石砕竜紫綿耳聖脛腕腿般良色衣袋覇質軍軽輝輪重量金鉄鎧闇陽靴額飾首骨鬼龍]/
631
- module_function def check_string(str)
632
- str = str.gsub(/[\s \\]/, '')
633
- if m = CharacterList.match(str)
634
- raise InvalidCharacterError.new(m)
635
- end
636
- levels = [0, 0]
637
- str.each_char do |c|
638
- if c == '('
639
- if levels[0] == 0
640
- levels[0] = 1
641
- else
642
- raise InvalidBracketError.new("parentheses cannot be nested")
643
- end
644
- elsif c == ')'
645
- if levels[0] == 0
646
- raise InvalidBracketError.new("parentheses must be opened before closing")
647
- else
648
- levels[0] -= 1
649
- end
650
- elsif c == '['
651
- if levels[0] != 0
652
- raise InvalidBracketError.new("brackets cannot be nested in parentheses")
653
- else
654
- levels[1] += 1
655
- end
656
- elsif c == ']'
657
- if levels[0] != 0
658
- raise InvalidBracketError.new("parentheses must be closed before closing brackets")
659
- elsif levels[1] == 0
660
- raise InvalidBracketError.new("brackets must be opened before closing")
661
- else
662
- levels[1] -= 1
663
- end
664
- end
665
- end
666
- if levels[0] != 0
667
- raise InvalidBracketError.new("parentheses must be closed")
668
- elsif levels[1] != 0
669
- raise InvalidBracketError.new("brackets must be closed")
670
- end
671
- str
672
- end
673
2
  MaterialIndex = {
674
3
  '鉄1': 0, '鉄2': 1, '鉄3': 2, '鉄4': 3, '鉄5': 4, '鉄6': 5, '鉄7': 6, '鉄8': 7, '鉄9': 8, '鉄10': 9,
675
4
  '木1': 10, '木2': 11, '木3': 12, '木4': 13, '木5': 14, '木6': 15, '木7': 16, '木8': 17, '木9': 18, '木10': 19,
@@ -1072,328 +401,4 @@ module Mgmg
1072
401
  Vec[3, 3, 3], Vec[4, 4, 4], Vec[6, 6, 6], Vec[3, 0, 4], Vec[4, 0, 6], # 貴
1073
402
  Vec[4, 3, 0], Vec[6, 4, 0], Vec[0, 4, 3], Vec[0, 6, 4], Vec[4, 4, 4], Vec[6, 6, 6] # 貴
1074
403
  ]
1075
- SystemEquip = {
1076
- '安物の短剣' => Equip.new( 0, 1, 1, 0, 10, Vec[ 10, 0, 0, 0, 0, 0, 4, 5, 0], Vec[0, 0, 0]),
1077
- '量産品の短剣' => Equip.new( 0, 1, 2, 0, 10, Vec[ 15, 0, 0, 0, 0, 0, 6, 7, 0], Vec[0, 0, 0]),
1078
- '一般的な短剣' => Equip.new( 0, 1, 3, 0, 10, Vec[ 21, 0, 0, 0, 0, 0, 8, 10, 0], Vec[0, 0, 0]),
1079
- '良質な短剣' => Equip.new( 0, 1, 4, 0, 10, Vec[ 30, 0, 0, 0, 0, 0, 12, 15, 0], Vec[0, 0, 0]),
1080
- '業物の短剣' => Equip.new( 0, 1, 5, 0, 10, Vec[ 41, 0, 0, 0, 0, 0, 16, 20, 0], Vec[0, 0, 0]),
1081
- '名のある短剣' => Equip.new( 0, 1, 6, 0, 10, Vec[ 55, 0, 0, 0, 0, 0, 22, 27, 0], Vec[0, 0, 0]),
1082
- '匠の短剣' => Equip.new( 0, 1, 7, 0, 10, Vec[ 71, 0, 0, 0, 0, 0, 28, 35, 0], Vec[0, 0, 0]),
1083
- '竜殺しの短剣' => Equip.new( 0, 1, 8, 0, 10, Vec[ 90, 0, 0, 0, 0, 0, 36, 45, 0], Vec[0, 0, 0]),
1084
- '光り輝く短剣' => Equip.new( 0, 1, 9, 0, 10, Vec[ 111, 0, 0, 0, 0, 0, 44, 55, 0], Vec[0, 0, 0]),
1085
- '安物の双短剣' => Equip.new( 1, 2, 1, 0, 10, Vec[ 13, 0, 0, 0, 0, 0, 3, 4, 0], Vec[0, 0, 0]),
1086
- '量産品の双短剣' => Equip.new( 1, 2, 2, 0, 10, Vec[ 19, 0, 0, 0, 0, 0, 4, 6, 0], Vec[0, 0, 0]),
1087
- '一般的な双短剣' => Equip.new( 1, 2, 3, 0, 10, Vec[ 27, 0, 0, 0, 0, 0, 6, 8, 0], Vec[0, 0, 0]),
1088
- '良質な双短剣' => Equip.new( 1, 2, 4, 0, 10, Vec[ 39, 0, 0, 0, 0, 0, 9, 12, 0], Vec[0, 0, 0]),
1089
- '業物の双短剣' => Equip.new( 1, 2, 5, 0, 10, Vec[ 53, 0, 0, 0, 0, 0, 12, 16, 0], Vec[0, 0, 0]),
1090
- '名のある双短剣' => Equip.new( 1, 2, 6, 0, 10, Vec[ 71, 0, 0, 0, 0, 0, 16, 22, 0], Vec[0, 0, 0]),
1091
- '匠の双短剣' => Equip.new( 1, 2, 7, 0, 10, Vec[ 92, 0, 0, 0, 0, 0, 21, 28, 0], Vec[0, 0, 0]),
1092
- '竜殺しの双短剣' => Equip.new( 1, 2, 8, 0, 10, Vec[ 117, 0, 0, 0, 0, 0, 27, 36, 0], Vec[0, 0, 0]),
1093
- '光り輝く双短剣' => Equip.new( 1, 2, 9, 0, 10, Vec[ 144, 0, 0, 0, 0, 0, 33, 44, 0], Vec[0, 0, 0]),
1094
- '安物の剣' => Equip.new( 2, 2, 1, 0, 10, Vec[ 13, 2, 0, 4, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1095
- '量産品の剣' => Equip.new( 2, 2, 2, 0, 10, Vec[ 19, 3, 0, 6, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1096
- '一般的な剣' => Equip.new( 2, 2, 3, 0, 10, Vec[ 27, 4, 0, 8, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1097
- '良質な剣' => Equip.new( 2, 2, 4, 0, 10, Vec[ 39, 6, 0, 12, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1098
- '業物の剣' => Equip.new( 2, 2, 5, 0, 10, Vec[ 53, 8, 0, 16, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1099
- '名のある剣' => Equip.new( 2, 2, 6, 0, 10, Vec[ 71, 11, 0, 22, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1100
- '匠の剣' => Equip.new( 2, 2, 7, 0, 10, Vec[ 92, 14, 0, 28, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1101
- '竜殺しの剣' => Equip.new( 2, 2, 8, 0, 10, Vec[ 117, 18, 0, 36, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1102
- '光り輝く剣' => Equip.new( 2, 2, 9, 0, 10, Vec[ 144, 22, 0, 44, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1103
- '安物の斧' => Equip.new( 3, 3, 1, 0, 10, Vec[ 19, 0, 0, 0, 0, 2, 0, 0, 0], Vec[0, 0, 0]),
1104
- '量産品の斧' => Equip.new( 3, 3, 2, 0, 10, Vec[ 23, 0, 0, 0, 0, 3, 0, 0, 0], Vec[0, 0, 0]),
1105
- '一般的な斧' => Equip.new( 3, 3, 3, 0, 10, Vec[ 40, 0, 0, 0, 0, 4, 0, 0, 0], Vec[0, 0, 0]),
1106
- '良質な斧' => Equip.new( 3, 3, 4, 0, 10, Vec[ 57, 0, 0, 0, 0, 6, 0, 0, 0], Vec[0, 0, 0]),
1107
- '業物の斧' => Equip.new( 3, 3, 5, 0, 10, Vec[ 78, 0, 0, 0, 0, 8, 0, 0, 0], Vec[0, 0, 0]),
1108
- '名のある斧' => Equip.new( 3, 3, 6, 0, 10, Vec[ 104, 0, 0, 0, 0, 11, 0, 0, 0], Vec[0, 0, 0]),
1109
- '匠の斧' => Equip.new( 3, 3, 7, 0, 10, Vec[ 135, 0, 0, 0, 0, 14, 0, 0, 0], Vec[0, 0, 0]),
1110
- '竜殺しの斧' => Equip.new( 3, 3, 8, 0, 10, Vec[ 171, 0, 0, 0, 0, 18, 0, 0, 0], Vec[0, 0, 0]),
1111
- '光り輝く斧' => Equip.new( 3, 3, 9, 0, 10, Vec[ 211, 0, 0, 0, 0, 22, 0, 0, 0], Vec[0, 0, 0]),
1112
- '安物の弓' => Equip.new( 4, 2, 1, 0, 10, Vec[ 8, 0, 0, 0, 0, 0, 10, 1, 1], Vec[0, 0, 0]),
1113
- '量産品の弓' => Equip.new( 4, 2, 2, 0, 10, Vec[ 12, 0, 0, 0, 0, 0, 15, 1, 1], Vec[0, 0, 0]),
1114
- '一般的な弓' => Equip.new( 4, 2, 3, 0, 10, Vec[ 17, 0, 0, 0, 0, 0, 21, 2, 2], Vec[0, 0, 0]),
1115
- '良質な弓' => Equip.new( 4, 2, 4, 0, 10, Vec[ 24, 0, 0, 0, 0, 0, 30, 3, 3], Vec[0, 0, 0]),
1116
- '業物の弓' => Equip.new( 4, 2, 5, 0, 10, Vec[ 33, 0, 0, 0, 0, 0, 41, 4, 4], Vec[0, 0, 0]),
1117
- '名のある弓' => Equip.new( 4, 2, 6, 0, 10, Vec[ 44, 0, 0, 0, 0, 0, 55, 5, 5], Vec[0, 0, 0]),
1118
- '匠の弓' => Equip.new( 4, 2, 7, 0, 10, Vec[ 57, 0, 0, 0, 0, 0, 71, 7, 7], Vec[0, 0, 0]),
1119
- '竜殺しの弓' => Equip.new( 4, 2, 8, 0, 10, Vec[ 72, 0, 0, 0, 0, 0, 90, 9, 9], Vec[0, 0, 0]),
1120
- '光り輝く弓' => Equip.new( 4, 2, 9, 0, 10, Vec[ 89, 0, 0, 0, 0, 0, 111, 11, 11], Vec[0, 0, 0]),
1121
- '安物の弩' => Equip.new( 5, 2, 1, 0, 10, Vec[ 7, 0, 0, 0, 1, 0, 9, 2, 0], Vec[0, 0, 0]),
1122
- '量産品の弩' => Equip.new( 5, 2, 2, 0, 10, Vec[ 10, 0, 0, 0, 1, 0, 13, 3, 0], Vec[0, 0, 0]),
1123
- '一般的な弩' => Equip.new( 5, 2, 3, 0, 10, Vec[ 14, 0, 0, 0, 2, 0, 19, 4, 0], Vec[0, 0, 0]),
1124
- '良質な弩' => Equip.new( 5, 2, 4, 0, 10, Vec[ 21, 0, 0, 0, 3, 0, 27, 6, 0], Vec[0, 0, 0]),
1125
- '業物の弩' => Equip.new( 5, 2, 5, 0, 10, Vec[ 28, 0, 0, 0, 4, 0, 37, 8, 0], Vec[0, 0, 0]),
1126
- '名のある弩' => Equip.new( 5, 2, 6, 0, 10, Vec[ 38, 0, 0, 0, 5, 0, 49, 11, 0], Vec[0, 0, 0]),
1127
- '匠の弩' => Equip.new( 5, 2, 7, 0, 10, Vec[ 49, 0, 0, 0, 7, 0, 64, 14, 0], Vec[0, 0, 0]),
1128
- '竜殺しの弩' => Equip.new( 5, 2, 8, 0, 10, Vec[ 63, 0, 0, 0, 9, 0, 81, 18, 0], Vec[0, 0, 0]),
1129
- '光り輝く弩' => Equip.new( 5, 2, 9, 0, 10, Vec[ 77, 0, 0, 0, 11, 0, 100, 22, 0], Vec[0, 0, 0]),
1130
- '安物の杖' => Equip.new( 6, 2, 1, 0, 10, Vec[ 5, 0, 0, 0, 3, 0, 0, 0, 11], Vec[0, 0, 0]),
1131
- '量産品の杖' => Equip.new( 6, 2, 2, 0, 10, Vec[ 7, 0, 0, 0, 4, 0, 0, 0, 16], Vec[0, 0, 0]),
1132
- '一般的な杖' => Equip.new( 6, 2, 3, 0, 10, Vec[ 10, 0, 0, 0, 6, 0, 0, 0, 23], Vec[0, 0, 0]),
1133
- '良質な杖' => Equip.new( 6, 2, 4, 0, 10, Vec[ 15, 0, 0, 0, 9, 0, 0, 0, 33], Vec[0, 0, 0]),
1134
- '業物の杖' => Equip.new( 6, 2, 5, 0, 10, Vec[ 20, 0, 0, 0, 12, 0, 0, 0, 45], Vec[0, 0, 0]),
1135
- '名のある杖' => Equip.new( 6, 2, 6, 0, 10, Vec[ 27, 0, 0, 0, 16, 0, 0, 0, 60], Vec[0, 0, 0]),
1136
- '匠の杖' => Equip.new( 6, 2, 7, 0, 10, Vec[ 35, 0, 0, 0, 21, 0, 0, 0, 78], Vec[0, 0, 0]),
1137
- '竜殺しの杖' => Equip.new( 6, 2, 8, 0, 10, Vec[ 45, 0, 0, 0, 27, 0, 0, 0, 99], Vec[0, 0, 0]),
1138
- '光り輝く杖' => Equip.new( 6, 2, 9, 0, 10, Vec[ 55, 0, 0, 0, 33, 0, 0, 0, 122], Vec[0, 0, 0]),
1139
- '安物の本' => Equip.new( 7, 2, 1, 0, 10, Vec[ 8, 0, 2, 0, 2, 0, 0, 0, 8], Vec[0, 0, 0]),
1140
- '量産品の本' => Equip.new( 7, 2, 2, 0, 10, Vec[ 12, 0, 3, 0, 3, 0, 0, 0, 12], Vec[0, 0, 0]),
1141
- '一般的な本' => Equip.new( 7, 2, 3, 0, 10, Vec[ 17, 0, 4, 0, 4, 0, 0, 0, 17], Vec[0, 0, 0]),
1142
- '良質な本' => Equip.new( 7, 2, 4, 0, 10, Vec[ 24, 0, 6, 0, 6, 0, 0, 0, 24], Vec[0, 0, 0]),
1143
- '業物の本' => Equip.new( 7, 2, 5, 0, 10, Vec[ 33, 0, 8, 0, 8, 0, 0, 0, 33], Vec[0, 0, 0]),
1144
- '名のある本' => Equip.new( 7, 2, 6, 0, 10, Vec[ 44, 0, 11, 0, 11, 0, 0, 0, 44], Vec[0, 0, 0]),
1145
- '匠の本' => Equip.new( 7, 2, 7, 0, 10, Vec[ 57, 0, 14, 0, 14, 0, 0, 0, 57], Vec[0, 0, 0]),
1146
- '竜殺しの本' => Equip.new( 7, 2, 8, 0, 10, Vec[ 72, 0, 18, 0, 18, 0, 0, 0, 72], Vec[0, 0, 0]),
1147
- '光り輝く本' => Equip.new( 7, 2, 9, 0, 10, Vec[ 89, 0, 22, 0, 22, 0, 0, 0, 89], Vec[0, 0, 0]),
1148
- '安物の兜' => Equip.new( 8, 2, 1, 0, 10, Vec[ 0, 5, 0, 15, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1149
- '量産品の兜' => Equip.new( 8, 2, 2, 0, 10, Vec[ 0, 8, 0, 25, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1150
- '一般的な兜' => Equip.new( 8, 2, 3, 0, 10, Vec[ 0, 12, 0, 37, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1151
- '良質な兜' => Equip.new( 8, 2, 4, 0, 10, Vec[ 0, 18, 0, 55, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1152
- '業物の兜' => Equip.new( 8, 2, 5, 0, 10, Vec[ 0, 25, 0, 77, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1153
- '名のある兜' => Equip.new( 8, 2, 6, 0, 10, Vec[ 0, 35, 0, 105, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1154
- '匠の兜' => Equip.new( 8, 2, 7, 0, 10, Vec[ 0, 45, 0, 137, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1155
- '竜殺しの兜' => Equip.new( 8, 2, 8, 0, 10, Vec[ 0, 58, 0, 175, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1156
- '光り輝く兜' => Equip.new( 8, 2, 9, 0, 10, Vec[ 0, 72, 0, 217, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1157
- '歴戦の兜' => Equip.new( 8, 2, 10, 0, 10, Vec[ 0, 88, 0, 265, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1158
- '安物の額当て' => Equip.new( 9, 1, 1, 0, 10, Vec[ 0, 3, 1, 10, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1159
- '量産品の額当て' => Equip.new( 9, 1, 2, 0, 10, Vec[ 0, 5, 1, 16, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1160
- '一般的な額当て' => Equip.new( 9, 1, 3, 0, 10, Vec[ 0, 7, 2, 25, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1161
- '良質な額当て' => Equip.new( 9, 1, 4, 0, 10, Vec[ 0, 11, 3, 36, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1162
- '業物の額当て' => Equip.new( 9, 1, 5, 0, 10, Vec[ 0, 15, 5, 51, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1163
- '名のある額当て' => Equip.new( 9, 1, 6, 0, 10, Vec[ 0, 21, 7, 70, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1164
- '匠の額当て' => Equip.new( 9, 1, 7, 0, 10, Vec[ 0, 27, 9, 91, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1165
- '竜殺しの額当て' => Equip.new( 9, 1, 8, 0, 10, Vec[ 0, 35, 11, 116, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1166
- '光り輝く額当て' => Equip.new( 9, 1, 9, 0, 10, Vec[ 0, 43, 14, 145, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1167
- '歴戦の額当て' => Equip.new( 9, 1, 10, 0, 10, Vec[ 0, 53, 17, 176, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1168
- '安物の帽子' => Equip.new(10, 1, 1, 0, 10, Vec[ 0, 2, 2, 7, 2, 0, 0, 0, 0], Vec[0, 0, 0]),
1169
- '量産品の帽子' => Equip.new(10, 1, 2, 0, 10, Vec[ 0, 3, 3, 11, 3, 0, 0, 0, 0], Vec[0, 0, 0]),
1170
- '一般的な帽子' => Equip.new(10, 1, 3, 0, 10, Vec[ 0, 5, 5, 17, 5, 0, 0, 0, 0], Vec[0, 0, 0]),
1171
- '良質な帽子' => Equip.new(10, 1, 4, 0, 10, Vec[ 0, 7, 7, 25, 7, 0, 0, 0, 0], Vec[0, 0, 0]),
1172
- '業物の帽子' => Equip.new(10, 1, 5, 0, 10, Vec[ 0, 10, 10, 36, 10, 0, 0, 0, 0], Vec[0, 0, 0]),
1173
- '名のある帽子' => Equip.new(10, 1, 6, 0, 10, Vec[ 0, 14, 14, 49, 14, 0, 0, 0, 0], Vec[0, 0, 0]),
1174
- '匠の帽子' => Equip.new(10, 1, 7, 0, 10, Vec[ 0, 18, 18, 64, 18, 0, 0, 0, 0], Vec[0, 0, 0]),
1175
- '竜殺しの帽子' => Equip.new(10, 1, 8, 0, 10, Vec[ 0, 23, 23, 81, 23, 0, 0, 0, 0], Vec[0, 0, 0]),
1176
- '光り輝く帽子' => Equip.new(10, 1, 9, 0, 10, Vec[ 0, 29, 29, 101, 29, 0, 0, 0, 0], Vec[0, 0, 0]),
1177
- '歴戦の帽子' => Equip.new(10, 1, 10, 0, 10, Vec[ 0, 35, 35, 123, 35, 0, 0, 0, 0], Vec[0, 0, 0]),
1178
- '安物のフード' => Equip.new(11, 1, 1, 0, 10, Vec[ 0, 2, 4, 4, 3, 0, 0, 0, 0], Vec[0, 0, 0]),
1179
- '量産品のフード' => Equip.new(11, 1, 2, 0, 10, Vec[ 0, 3, 6, 6, 5, 0, 0, 0, 0], Vec[0, 0, 0]),
1180
- '一般的なフード' => Equip.new(11, 1, 3, 0, 10, Vec[ 0, 5, 10, 10, 7, 0, 0, 0, 0], Vec[0, 0, 0]),
1181
- '良質なフード' => Equip.new(11, 1, 4, 0, 10, Vec[ 0, 7, 14, 14, 11, 0, 0, 0, 0], Vec[0, 0, 0]),
1182
- '業物のフード' => Equip.new(11, 1, 5, 0, 10, Vec[ 0, 10, 20, 20, 15, 0, 0, 0, 0], Vec[0, 0, 0]),
1183
- '名のあるフード' => Equip.new(11, 1, 6, 0, 10, Vec[ 0, 14, 28, 28, 21, 0, 0, 0, 0], Vec[0, 0, 0]),
1184
- '匠のフード' => Equip.new(11, 1, 7, 0, 10, Vec[ 0, 18, 36, 36, 27, 0, 0, 0, 0], Vec[0, 0, 0]),
1185
- '竜殺しのフード' => Equip.new(11, 1, 8, 0, 10, Vec[ 0, 23, 46, 46, 35, 0, 0, 0, 0], Vec[0, 0, 0]),
1186
- '光り輝くフード' => Equip.new(11, 1, 9, 0, 10, Vec[ 0, 29, 58, 58, 43, 0, 0, 0, 0], Vec[0, 0, 0]),
1187
- '歴戦のフード' => Equip.new(11, 1, 10, 0, 10, Vec[ 0, 35, 70, 70, 53, 0, 0, 0, 0], Vec[0, 0, 0]),
1188
- '安物の重鎧' => Equip.new(12, 3, 1, 0, 10, Vec[ 0, 12, 2, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1189
- '量産品の重鎧' => Equip.new(12, 3, 2, 0, 10, Vec[ 0, 20, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1190
- '一般的な重鎧' => Equip.new(12, 3, 3, 0, 10, Vec[ 0, 30, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1191
- '良質な重鎧' => Equip.new(12, 3, 4, 0, 10, Vec[ 0, 44, 7, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1192
- '業物の重鎧' => Equip.new(12, 3, 5, 0, 10, Vec[ 0, 62, 10, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1193
- '名のある重鎧' => Equip.new(12, 3, 6, 0, 10, Vec[ 0, 84, 14, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1194
- '匠の重鎧' => Equip.new(12, 3, 7, 0, 10, Vec[ 0, 110, 18, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1195
- '竜殺しの重鎧' => Equip.new(12, 3, 8, 0, 10, Vec[ 0, 140, 23, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1196
- '光り輝く重鎧' => Equip.new(12, 3, 9, 0, 10, Vec[ 0, 174, 29, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1197
- '歴戦の重鎧' => Equip.new(12, 3, 10, 0, 10, Vec[ 0, 212, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1198
- '安物の軽鎧' => Equip.new(13, 2, 1, 0, 10, Vec[ 0, 8, 4, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1199
- '量産品の軽鎧' => Equip.new(13, 2, 2, 0, 10, Vec[ 0, 13, 6, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1200
- '一般的な軽鎧' => Equip.new(13, 2, 3, 0, 10, Vec[ 0, 20, 10, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1201
- '良質な軽鎧' => Equip.new(13, 2, 4, 0, 10, Vec[ 0, 29, 14, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1202
- '業物の軽鎧' => Equip.new(13, 2, 5, 0, 10, Vec[ 0, 41, 20, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1203
- '名のある軽鎧' => Equip.new(13, 2, 6, 0, 10, Vec[ 0, 41, 20, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1204
- '匠の軽鎧' => Equip.new(13, 2, 7, 0, 10, Vec[ 0, 56, 28, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1205
- '竜殺しの軽鎧' => Equip.new(13, 2, 8, 0, 10, Vec[ 0, 73, 36, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1206
- '光り輝く軽鎧' => Equip.new(13, 2, 9, 0, 10, Vec[ 0, 93, 46, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1207
- '歴戦の軽鎧' => Equip.new(13, 2, 10, 0, 10, Vec[ 0, 116, 58, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1208
- '安物の服' => Equip.new(14, 1, 1, 0, 10, Vec[ 0, 6, 6, 0, 0, 0, 3, 0, 0], Vec[0, 0, 0]),
1209
- '量産品の服' => Equip.new(14, 1, 2, 0, 10, Vec[ 0, 10, 10, 0, 0, 0, 5, 0, 0], Vec[0, 0, 0]),
1210
- '一般的な服' => Equip.new(14, 1, 3, 0, 10, Vec[ 0, 15, 15, 0, 0, 0, 7, 0, 0], Vec[0, 0, 0]),
1211
- '良質な服' => Equip.new(14, 1, 4, 0, 10, Vec[ 0, 22, 22, 0, 0, 0, 11, 0, 0], Vec[0, 0, 0]),
1212
- '業物の服' => Equip.new(14, 1, 5, 0, 10, Vec[ 0, 31, 31, 0, 0, 0, 15, 0, 0], Vec[0, 0, 0]),
1213
- '名のある服' => Equip.new(14, 1, 6, 0, 10, Vec[ 0, 42, 42, 0, 0, 0, 21, 0, 0], Vec[0, 0, 0]),
1214
- '匠の服' => Equip.new(14, 1, 7, 0, 10, Vec[ 0, 55, 55, 0, 0, 0, 27, 0, 0], Vec[0, 0, 0]),
1215
- '竜殺しの服' => Equip.new(14, 1, 8, 0, 10, Vec[ 0, 70, 70, 0, 0, 0, 35, 0, 0], Vec[0, 0, 0]),
1216
- '光り輝く服' => Equip.new(14, 1, 9, 0, 10, Vec[ 0, 87, 87, 0, 0, 0, 43, 0, 0], Vec[0, 0, 0]),
1217
- '歴戦の服' => Equip.new(14, 1, 10, 0, 10, Vec[ 0, 106, 106, 0, 0, 0, 53, 0, 0], Vec[0, 0, 0]),
1218
- '安物の法衣' => Equip.new(15, 1, 1, 0, 10, Vec[ 0, 5, 9, 0, 0, 0, 0, 0, 3], Vec[0, 0, 0]),
1219
- '量産品の法衣' => Equip.new(15, 1, 2, 0, 10, Vec[ 0, 8, 15, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
1220
- '一般的な法衣' => Equip.new(15, 1, 3, 0, 10, Vec[ 0, 12, 22, 0, 0, 0, 0, 0, 7], Vec[0, 0, 0]),
1221
- '良質な法衣' => Equip.new(15, 1, 4, 0, 10, Vec[ 0, 18, 33, 0, 0, 0, 0, 0, 11], Vec[0, 0, 0]),
1222
- '業物の法衣' => Equip.new(15, 1, 5, 0, 10, Vec[ 0, 25, 46, 0, 0, 0, 0, 0, 15], Vec[0, 0, 0]),
1223
- '名のある法衣' => Equip.new(15, 1, 6, 0, 10, Vec[ 0, 35, 63, 0, 0, 0, 0, 0, 21], Vec[0, 0, 0]),
1224
- '匠の法衣' => Equip.new(15, 1, 7, 0, 10, Vec[ 0, 45, 82, 0, 0, 0, 0, 0, 27], Vec[0, 0, 0]),
1225
- '竜殺しの法衣' => Equip.new(15, 1, 8, 0, 10, Vec[ 0, 58, 105, 0, 0, 0, 0, 0, 35], Vec[0, 0, 0]),
1226
- '光り輝く法衣' => Equip.new(15, 1, 9, 0, 10, Vec[ 0, 72, 130, 0, 0, 0, 0, 0, 43], Vec[0, 0, 0]),
1227
- '歴戦の法衣' => Equip.new(15, 1, 10, 0, 10, Vec[ 0, 88, 159, 0, 0, 0, 0, 0, 53], Vec[0, 0, 0]),
1228
- '安物の盾' => Equip.new(16, 2, 1, 0, 10, Vec[ 0, 7, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1229
- '量産品の盾' => Equip.new(16, 2, 2, 0, 10, Vec[ 0, 11, 8, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1230
- '一般的な盾' => Equip.new(16, 2, 3, 0, 10, Vec[ 0, 17, 12, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1231
- '良質な盾' => Equip.new(16, 2, 4, 0, 10, Vec[ 0, 25, 18, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1232
- '業物の盾' => Equip.new(16, 2, 5, 0, 10, Vec[ 0, 36, 25, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1233
- '名のある盾' => Equip.new(16, 2, 6, 0, 10, Vec[ 0, 49, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1234
- '匠の盾' => Equip.new(16, 2, 7, 0, 10, Vec[ 0, 64, 45, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1235
- '竜殺しの盾' => Equip.new(16, 2, 8, 0, 10, Vec[ 0, 81, 58, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1236
- '光り輝く盾' => Equip.new(16, 2, 9, 0, 10, Vec[ 0, 101, 72, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1237
- '歴戦の盾' => Equip.new(16, 2, 10, 0, 10, Vec[ 0, 123, 88, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1238
- '安物の小手' => Equip.new(17, 1, 1, 0, 10, Vec[ 3, 4, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1239
- '量産品の小手' => Equip.new(17, 1, 2, 0, 10, Vec[ 5, 6, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1240
- '一般的な小手' => Equip.new(17, 1, 3, 0, 10, Vec[ 7, 10, 7, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1241
- '良質な小手' => Equip.new(17, 1, 4, 0, 10, Vec[ 11, 14, 11, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1242
- '業物の小手' => Equip.new(17, 1, 5, 0, 10, Vec[ 15, 20, 15, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1243
- '名のある小手' => Equip.new(17, 1, 6, 0, 10, Vec[ 21, 28, 21, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1244
- '匠の小手' => Equip.new(17, 1, 7, 0, 10, Vec[ 27, 36, 27, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1245
- '竜殺しの小手' => Equip.new(17, 1, 8, 0, 10, Vec[ 35, 46, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1246
- '光り輝く小手' => Equip.new(17, 1, 9, 0, 10, Vec[ 43, 58, 43, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1247
- '歴戦の小手' => Equip.new(17, 1, 10, 0, 10, Vec[ 53, 70, 53, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1248
- '安物の手袋' => Equip.new(18, 1, 1, 0, 10, Vec[ 0, 4, 5, 0, 0, 0, 3, 0, 0], Vec[0, 0, 0]),
1249
- '量産品の手袋' => Equip.new(18, 1, 2, 0, 10, Vec[ 0, 6, 8, 0, 0, 0, 5, 0, 0], Vec[0, 0, 0]),
1250
- '一般的な手袋' => Equip.new(18, 1, 3, 0, 10, Vec[ 0, 10, 12, 0, 0, 0, 7, 0, 0], Vec[0, 0, 0]),
1251
- '良質な手袋' => Equip.new(18, 1, 4, 0, 10, Vec[ 0, 14, 18, 0, 0, 0, 11, 0, 0], Vec[0, 0, 0]),
1252
- '業物の手袋' => Equip.new(18, 1, 5, 0, 10, Vec[ 0, 20, 25, 0, 0, 0, 15, 0, 0], Vec[0, 0, 0]),
1253
- '名のある手袋' => Equip.new(18, 1, 6, 0, 10, Vec[ 0, 28, 35, 0, 0, 0, 21, 0, 0], Vec[0, 0, 0]),
1254
- '匠の手袋' => Equip.new(18, 1, 7, 0, 10, Vec[ 0, 36, 45, 0, 0, 0, 27, 0, 0], Vec[0, 0, 0]),
1255
- '竜殺しの手袋' => Equip.new(18, 1, 8, 0, 10, Vec[ 0, 46, 58, 0, 0, 0, 35, 0, 0], Vec[0, 0, 0]),
1256
- '光り輝く手袋' => Equip.new(18, 1, 9, 0, 10, Vec[ 0, 58, 72, 0, 0, 0, 43, 0, 0], Vec[0, 0, 0]),
1257
- '歴戦の手袋' => Equip.new(18, 1, 10, 0, 10, Vec[ 0, 70, 88, 0, 0, 0, 53, 0, 0], Vec[0, 0, 0]),
1258
- '安物の腕輪' => Equip.new(19, 1, 1, 0, 10, Vec[ 0, 3, 6, 0, 0, 0, 0, 0, 3], Vec[0, 0, 0]),
1259
- '量産品の腕輪' => Equip.new(19, 1, 2, 0, 10, Vec[ 0, 5, 10, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
1260
- '一般的な腕輪' => Equip.new(19, 1, 3, 0, 10, Vec[ 0, 7, 15, 0, 0, 0, 0, 0, 7], Vec[0, 0, 0]),
1261
- '良質な腕輪' => Equip.new(19, 1, 4, 0, 10, Vec[ 0, 11, 22, 0, 0, 0, 0, 0, 11], Vec[0, 0, 0]),
1262
- '業物の腕輪' => Equip.new(19, 1, 5, 0, 10, Vec[ 0, 15, 31, 0, 0, 0, 0, 0, 15], Vec[0, 0, 0]),
1263
- '名のある腕輪' => Equip.new(19, 1, 6, 0, 10, Vec[ 0, 21, 42, 0, 0, 0, 0, 0, 21], Vec[0, 0, 0]),
1264
- '匠の腕輪' => Equip.new(19, 1, 7, 0, 10, Vec[ 0, 27, 44, 0, 0, 0, 0, 0, 27], Vec[0, 0, 0]),
1265
- '竜殺しの腕輪' => Equip.new(19, 1, 8, 0, 10, Vec[ 0, 35, 70, 0, 0, 0, 0, 0, 35], Vec[0, 0, 0]),
1266
- '光り輝く腕輪' => Equip.new(19, 1, 9, 0, 10, Vec[ 0, 43, 87, 0, 0, 0, 0, 0, 43], Vec[0, 0, 0]),
1267
- '歴戦の腕輪' => Equip.new(19, 1, 10, 0, 10, Vec[ 0, 53, 106, 0, 0, 0, 0, 0, 53], Vec[0, 0, 0]),
1268
- '安物の脛当て' => Equip.new(20, 2, 1, 0, 10, Vec[ 0, 7, 2, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1269
- '量産品の脛当て' => Equip.new(20, 2, 2, 0, 10, Vec[ 0, 11, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1270
- '一般的な脛当て' => Equip.new(20, 2, 3, 0, 10, Vec[ 0, 17, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1271
- '良質な脛当て' => Equip.new(20, 2, 4, 0, 10, Vec[ 0, 25, 7, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1272
- '業物の脛当て' => Equip.new(20, 2, 5, 0, 10, Vec[ 0, 36, 10, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1273
- '名のある脛当て' => Equip.new(20, 2, 6, 0, 10, Vec[ 0, 49, 14, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1274
- '匠の脛当て' => Equip.new(20, 2, 7, 0, 10, Vec[ 0, 64, 18, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1275
- '竜殺しの脛当て' => Equip.new(20, 2, 8, 0, 10, Vec[ 0, 81, 23, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1276
- '光り輝く脛当て' => Equip.new(20, 2, 9, 0, 10, Vec[ 0, 101, 29, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1277
- '歴戦の脛当て' => Equip.new(20, 2, 10, 0, 10, Vec[ 0, 123, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1278
- '安物のブーツ' => Equip.new(21, 1, 1, 0, 10, Vec[ 0, 4, 4, 0, 0, 0, 0, 2, 0], Vec[0, 0, 0]),
1279
- '量産品のブーツ' => Equip.new(21, 1, 2, 0, 10, Vec[ 0, 6, 6, 0, 0, 0, 0, 3, 0], Vec[0, 0, 0]),
1280
- '一般的なブーツ' => Equip.new(21, 1, 3, 0, 10, Vec[ 0, 10, 10, 0, 0, 0, 0, 5, 0], Vec[0, 0, 0]),
1281
- '良質なブーツ' => Equip.new(21, 1, 4, 0, 10, Vec[ 0, 14, 14, 0, 0, 0, 0, 7, 0], Vec[0, 0, 0]),
1282
- '業物のブーツ' => Equip.new(21, 1, 5, 0, 10, Vec[ 0, 20, 20, 0, 0, 0, 0, 10, 0], Vec[0, 0, 0]),
1283
- '名のあるブーツ' => Equip.new(21, 1, 6, 0, 10, Vec[ 0, 28, 28, 0, 0, 0, 0, 14, 0], Vec[0, 0, 0]),
1284
- '匠のブーツ' => Equip.new(21, 1, 7, 0, 10, Vec[ 0, 36, 36, 0, 0, 0, 0, 18, 0], Vec[0, 0, 0]),
1285
- '竜殺しのブーツ' => Equip.new(21, 1, 8, 0, 10, Vec[ 0, 46, 46, 0, 0, 0, 0, 23, 0], Vec[0, 0, 0]),
1286
- '光り輝くブーツ' => Equip.new(21, 1, 9, 0, 10, Vec[ 0, 58, 58, 0, 0, 0, 0, 29, 0], Vec[0, 0, 0]),
1287
- '歴戦のブーツ' => Equip.new(21, 1, 10, 0, 10, Vec[ 0, 70, 70, 0, 0, 0, 0, 35, 0], Vec[0, 0, 0]),
1288
- '安物の靴' => Equip.new(22, 1, 1, 0, 10, Vec[ 0, 3, 3, 0, 0, 0, 0, 4, 0], Vec[0, 0, 0]),
1289
- '量産品の靴' => Equip.new(22, 1, 2, 0, 10, Vec[ 0, 5, 5, 0, 0, 0, 0, 6, 0], Vec[0, 0, 0]),
1290
- '一般的な靴' => Equip.new(22, 1, 3, 0, 10, Vec[ 0, 7, 7, 0, 0, 0, 0, 10, 0], Vec[0, 0, 0]),
1291
- '良質な靴' => Equip.new(22, 1, 4, 0, 10, Vec[ 0, 11, 11, 0, 0, 0, 0, 14, 0], Vec[0, 0, 0]),
1292
- '業物の靴' => Equip.new(22, 1, 5, 0, 10, Vec[ 0, 15, 15, 0, 0, 0, 0, 20, 0], Vec[0, 0, 0]),
1293
- '名のある靴' => Equip.new(22, 1, 6, 0, 10, Vec[ 0, 21, 21, 0, 0, 0, 0, 28, 0], Vec[0, 0, 0]),
1294
- '匠の靴' => Equip.new(22, 1, 7, 0, 10, Vec[ 0, 27, 27, 0, 0, 0, 0, 36, 0], Vec[0, 0, 0]),
1295
- '竜殺しの靴' => Equip.new(22, 1, 8, 0, 10, Vec[ 0, 35, 35, 0, 0, 0, 0, 46, 0], Vec[0, 0, 0]),
1296
- '光り輝く靴' => Equip.new(22, 1, 9, 0, 10, Vec[ 0, 43, 43, 0, 0, 0, 0, 58, 0], Vec[0, 0, 0]),
1297
- '歴戦の靴' => Equip.new(22, 1, 10, 0, 10, Vec[ 0, 53, 53, 0, 0, 0, 0, 70, 0], Vec[0, 0, 0]),
1298
- '安物のサンダル' => Equip.new(23, 1, 1, 0, 10, Vec[ 0, 2, 5, 0, 0, 0, 0, 3, 0], Vec[0, 0, 0]),
1299
- '量産品のサンダル' => Equip.new(23, 1, 2, 0, 10, Vec[ 0, 3, 8, 0, 0, 0, 0, 5, 0], Vec[0, 0, 0]),
1300
- '一般的なサンダル' => Equip.new(23, 1, 3, 0, 10, Vec[ 0, 5, 12, 0, 0, 0, 0, 7, 0], Vec[0, 0, 0]),
1301
- '良質なサンダル' => Equip.new(23, 1, 4, 0, 10, Vec[ 0, 7, 18, 0, 0, 0, 0, 11, 0], Vec[0, 0, 0]),
1302
- '業物のサンダル' => Equip.new(23, 1, 5, 0, 10, Vec[ 0, 10, 25, 0, 0, 0, 0, 15, 0], Vec[0, 0, 0]),
1303
- '名のあるサンダル' => Equip.new(23, 1, 6, 0, 10, Vec[ 0, 14, 35, 0, 0, 0, 0, 21, 0], Vec[0, 0, 0]),
1304
- '匠のサンダル' => Equip.new(23, 1, 7, 0, 10, Vec[ 0, 18, 45, 0, 0, 0, 0, 27, 0], Vec[0, 0, 0]),
1305
- '竜殺しのサンダル' => Equip.new(23, 1, 8, 0, 10, Vec[ 0, 23, 58, 0, 0, 0, 0, 35, 0], Vec[0, 0, 0]),
1306
- '光り輝くサンダル' => Equip.new(23, 1, 9, 0, 10, Vec[ 0, 29, 72, 0, 0, 0, 0, 43, 0], Vec[0, 0, 0]),
1307
- '歴戦のサンダル' => Equip.new(23, 1, 10, 0, 10, Vec[ 0, 35, 88, 0, 0, 0, 0, 53, 0], Vec[0, 0, 0]),
1308
- '安物のブローチ' => Equip.new(24, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 5, 0, 0, 0], Vec[0, 0, 0]),
1309
- '量産品のブローチ' => Equip.new(24, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 8, 0, 0, 0], Vec[0, 0, 0]),
1310
- '一般的なブローチ' => Equip.new(24, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 12, 0, 0, 0], Vec[0, 0, 0]),
1311
- '良質なブローチ' => Equip.new(24, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 18, 0, 0, 0], Vec[0, 0, 0]),
1312
- '業物のブローチ' => Equip.new(24, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 25, 0, 0, 0], Vec[0, 0, 0]),
1313
- '名のあるブローチ' => Equip.new(24, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 35, 0, 0, 0], Vec[0, 0, 0]),
1314
- '匠のブローチ' => Equip.new(24, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 45, 0, 0, 0], Vec[0, 0, 0]),
1315
- '竜殺しのブローチ' => Equip.new(24, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 58, 0, 0, 0], Vec[0, 0, 0]),
1316
- '光り輝くブローチ' => Equip.new(24, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 72, 0, 0, 0], Vec[0, 0, 0]),
1317
- '歴戦のブローチ' => Equip.new(24, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 88, 0, 0, 0], Vec[0, 0, 0]),
1318
- '安物の指輪' => Equip.new(25, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 5, 0, 0], Vec[0, 0, 0]),
1319
- '量産品の指輪' => Equip.new(25, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 8, 0, 0], Vec[0, 0, 0]),
1320
- '一般的な指輪' => Equip.new(25, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 12, 0, 0], Vec[0, 0, 0]),
1321
- '良質な指輪' => Equip.new(25, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 18, 0, 0], Vec[0, 0, 0]),
1322
- '業物の指輪' => Equip.new(25, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 25, 0, 0], Vec[0, 0, 0]),
1323
- '名のある指輪' => Equip.new(25, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 35, 0, 0], Vec[0, 0, 0]),
1324
- '匠の指輪' => Equip.new(25, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 45, 0, 0], Vec[0, 0, 0]),
1325
- '竜殺しの指輪' => Equip.new(25, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 58, 0, 0], Vec[0, 0, 0]),
1326
- '光り輝く指輪' => Equip.new(25, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 72, 0, 0], Vec[0, 0, 0]),
1327
- '歴戦の指輪' => Equip.new(25, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 88, 0, 0], Vec[0, 0, 0]),
1328
- '安物の首飾り' => Equip.new(26, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 5, 0], Vec[0, 0, 0]),
1329
- '量産品の首飾り' => Equip.new(26, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 8, 0], Vec[0, 0, 0]),
1330
- '一般的な首飾り' => Equip.new(26, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 12, 0], Vec[0, 0, 0]),
1331
- '良質な首飾り' => Equip.new(26, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 18, 0], Vec[0, 0, 0]),
1332
- '業物の首飾り' => Equip.new(26, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 25, 0], Vec[0, 0, 0]),
1333
- '名のある首飾り' => Equip.new(26, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 35, 0], Vec[0, 0, 0]),
1334
- '匠の首飾り' => Equip.new(26, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 45, 0], Vec[0, 0, 0]),
1335
- '竜殺しの首飾り' => Equip.new(26, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 58, 0], Vec[0, 0, 0]),
1336
- '光り輝く首飾り' => Equip.new(26, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 72, 0], Vec[0, 0, 0]),
1337
- '歴戦の首飾り' => Equip.new(26, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 88, 0], Vec[0, 0, 0]),
1338
- '安物の耳飾り' => Equip.new(27, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
1339
- '量産品の耳飾り' => Equip.new(27, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 8], Vec[0, 0, 0]),
1340
- '一般的な耳飾り' => Equip.new(27, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 12], Vec[0, 0, 0]),
1341
- '良質な耳飾り' => Equip.new(27, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 18], Vec[0, 0, 0]),
1342
- '業物の耳飾り' => Equip.new(27, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 25], Vec[0, 0, 0]),
1343
- '名のある耳飾り' => Equip.new(27, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 35], Vec[0, 0, 0]),
1344
- '匠の耳飾り' => Equip.new(27, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 45], Vec[0, 0, 0]),
1345
- '竜殺しの耳飾り' => Equip.new(27, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 58], Vec[0, 0, 0]),
1346
- '光り輝く耳飾り' => Equip.new(27, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 72], Vec[0, 0, 0]),
1347
- '歴戦の耳飾り' => Equip.new(27, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 88], Vec[0, 0, 0]),
1348
- '紫色小太刀' => Equip.new( 0, 1, 10, 0, 5, Vec[ 200, 0, 0, 0, 0, 0, 0, 80, 0], Vec[0, 0, 0]),
1349
- '氷炎二刀' => Equip.new( 1, 2, 10, 0, 5, Vec[ 170, 0, 0, 0, 0, 0, 0, 0, 100], Vec[1, 0, 1]),
1350
- 'ムーンライト' => Equip.new( 2, 2, 10, 0, 4, Vec[ 270, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1351
- '大腿骨砕き' => Equip.new( 3, 3, 10, 0, 8, Vec[ 250, 0, 0, 0, 0, 20, 0, 0, 0], Vec[0, 0, 0]),
1352
- '小竜咆哮' => Equip.new( 4, 1, 10, 1, 4, Vec[ 50, 0, 0, 0, 0, 0, 120, 50, 0], Vec[0, 0, 0]),
1353
- '軍用弩' => Equip.new( 5, 2, 10, 3, 0, Vec[ 300, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1354
- '大樹の杖' => Equip.new( 6, 1, 10, 1, 6, Vec[ 0, 0, 50, 0, 20, 0, 0, 0, 170], Vec[0, 0, 0]),
1355
- '闇の書' => Equip.new( 7, 1, 10, 11, 4, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 200], Vec[0, 0, 0]),
1356
- 'グランクニーヴ' => Equip.new( 0, 2, 10, 0, 5, Vec[ 150, 0, 50, 0, 0, 0, 100, 80, 0], Vec[1, 1, 1]),
1357
- 'デグルガウス' => Equip.new( 1, 3, 10, 0, 5, Vec[ 220, 0, 0, 0, 0, 10, 20, 75, 60], Vec[0, 0, 0]),
1358
- '竜剣ラウ' => Equip.new( 2, 3, 10, 0, 4, Vec[ 240, 50, 0, 100, 0, 0, 50, 0, 100], Vec[0, 0, 0]),
1359
- '覇王戦斧' => Equip.new( 3, 4, 10, 0, 8, Vec[ 350, 0, 0, 100, 0, 50, 0, 20, 0], Vec[0, 0, 0]),
1360
- 'サジタリウス' => Equip.new( 4, 3, 10, 1, 4, Vec[ 100, 0, 0, 50, 0, 30, 200, 30, 30], Vec[1, 1, 1]),
1361
- '炎龍の息吹' => Equip.new( 5, 3, 10, 3, 0, Vec[ 100, 0, 0, 0, 10, 0, 140, 30, 0], Vec[5, 0, 0]),
1362
- '万物の杖' => Equip.new( 6, 2, 10, 1, 6, Vec[ 50, 0, 0, 20, 20, 0, 50, 0, 250], Vec[0, 0, 0]),
1363
- '聖典' => Equip.new( 7, 2, 10, 11, 4, Vec[ 100, 0, 100, 50, 0, 0, 0, 0, 200], Vec[0, 0, 0]),
1364
- '陽炎の兜' => Equip.new( 8, 3, 10, 2, 8, Vec[ 0, 150, 100, 1000, 0, 0, 0, 0, 0], Vec[3, 0, 0]),
1365
- 'ボロボロな服' => Equip.new(14, 1, 1, 2, 10, Vec[ 0, 2, 1, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1366
- '異界の法衣' => Equip.new(15, 2, 10, 2, 10, Vec[ 0, 100, 400, 100, 10, 0, 0, 0, 50], Vec[1, 1, 1]),
1367
- '竜盾デグノル' => Equip.new(16, 3, 10, 2, 10, Vec[ 0, 300, 250, 300, 0, 0, 150, 0, 0], Vec[0, 0, 3]),
1368
- '天鬼の靴' => Equip.new(22, 2, 10, 2, 10, Vec[ 0, 100, 200, 0, 50, 0, 0, 200, 0], Vec[0, 3, 0]),
1369
- '古びたペンダント' => Equip.new(27, 1, 10, 0, 6, Vec[ 0, 0, 0, 50, 5, 0, 0, 0, 0], Vec[1, 1, 1]),
1370
- '劣悪な短剣' => Equip.new( 0, 1, 1, 0, 10, Vec[ 5, 0, 0, 0, 0, 0, 1, 1, 0], Vec[0, 0, 0]),
1371
- '劣悪な双短剣' => Equip.new( 1, 2, 1, 0, 10, Vec[ 7, 0, 0, 0, 0, 0, 0, 1, 0], Vec[0, 0, 0]),
1372
- '劣悪な剣' => Equip.new( 2, 2, 1, 0, 10, Vec[ 6, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1373
- '劣悪な斧' => Equip.new( 3, 3, 1, 0, 10, Vec[ 9, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1374
- '劣悪な弓' => Equip.new( 4, 1, 1, 1, 10, Vec[ 3, 0, 0, 0, 0, 0, 4, 0, 0], Vec[0, 0, 0]),
1375
- '劣悪な弩' => Equip.new( 5, 2, 1, 1, 10, Vec[ 4, 0, 0, 0, 0, 0, 2, 0, 0], Vec[0, 0, 0]),
1376
- '劣悪な杖' => Equip.new( 6, 2, 1, 4, 10, Vec[ 1, 0, 0, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
1377
- '劣悪な本' => Equip.new( 7, 2, 1, 11, 10, Vec[ 5, 0, 0, 0, 0, 0, 0, 0, 3], Vec[0, 0, 0]),
1378
- '劣悪な重鎧' => Equip.new(12, 3, 1, 0, 10, Vec[ 0, 7, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1379
- '劣悪な軽鎧' => Equip.new(13, 2, 1, 3, 10, Vec[ 0, 4, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1380
- '劣悪な服' => Equip.new(14, 1, 1, 2, 10, Vec[ 0, 2, 1, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1381
- '劣悪なローブ' => Equip.new(15, 1, 1, 2, 10, Vec[ 0, 1, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1382
- '劣悪な盾' => Equip.new(16, 1, 1, 0, 10, Vec[ 0, 4, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
1383
- '劣悪な小手' => Equip.new(17, 1, 1, 0, 10, Vec[ 0, 2, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0])
1384
- }
1385
- SystemEquip.keys.each do |k|
1386
- if /弩\Z/.match(k)
1387
- SystemEquip.store(k.sub(/弩\Z/, 'ボウガン'), SystemEquip[k])
1388
- SystemEquip.store(k.sub(/弩\Z/, 'ボーガン'), SystemEquip[k])
1389
- elsif /法衣\Z/.match(k)
1390
- SystemEquip.store(k.sub(/法衣\Z/, 'ローブ'), SystemEquip[k])
1391
- elsif /ローブ\Z/.match(k)
1392
- SystemEquip.store(k.sub(/ローブ\Z/, '法衣'), SystemEquip[k])
1393
- elsif /手袋\Z/.match(k)
1394
- SystemEquip.store(k.sub(/手袋\Z/, 'グローブ'), SystemEquip[k])
1395
- elsif /脛当て\Z/.match(k)
1396
- SystemEquip.store(k.sub(/脛当て\Z/, 'すね当て'), SystemEquip[k])
1397
- end
1398
- end
1399
404
  end