mgmg 1.2.4 → 1.2.5
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +33 -14
- data/lib/mgmg.rb +6 -132
- data/lib/mgmg/const.rb +0 -995
- data/lib/mgmg/equip.rb +323 -0
- data/lib/mgmg/poly.rb +266 -0
- data/lib/mgmg/system_equip.rb +326 -0
- data/lib/mgmg/utils.rb +273 -0
- data/lib/mgmg/version.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26c10a350028b972409920fe3aa4f57cfe8154a2b4dca70cc94342275e9fbe73
|
4
|
+
data.tar.gz: b2dc70384ffa9aca8b475ce30505f091375b7d68a7cf43e925cfb9a00b0b18b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3895e9496d5aba7be3431e1268c4bf7cb8eaa48b628fe19c6179531925e5809478d827e101cd4c6e68031c2296607818c99dd905ea33cecc9bdd51486c2c69a5
|
7
|
+
data.tar.gz: 548d89140bcdf08c3d00cd7b8573c43e5de721e25a59771af9cb492a9c3dc6a26b93618d6a431ab86951ed1666ca9c6000506622105b4fb5a61716458ea02730
|
data/CHANGELOG.md
CHANGED
@@ -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
|
|
data/lib/mgmg.rb
CHANGED
@@ -1,135 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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)
|
data/lib/mgmg/const.rb
CHANGED
@@ -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
|