mgmg 1.2.4 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -1
- data/README.md +160 -45
- data/lib/mgmg.rb +95 -146
- data/lib/mgmg/const.rb +2 -996
- data/lib/mgmg/equip.rb +392 -0
- data/lib/mgmg/optimize.rb +213 -0
- data/lib/mgmg/poly.rb +356 -0
- data/lib/mgmg/search.rb +254 -0
- data/lib/mgmg/system_equip.rb +326 -0
- data/lib/mgmg/utils.rb +315 -0
- data/lib/mgmg/version.rb +1 -1
- metadata +13 -7
@@ -0,0 +1,326 @@
|
|
1
|
+
module Mgmg
|
2
|
+
SystemEquip = {
|
3
|
+
'安物の短剣' => Equip.new( 0, 1, 1, 0, 10, Vec[ 10, 0, 0, 0, 0, 0, 4, 5, 0], Vec[0, 0, 0]),
|
4
|
+
'量産品の短剣' => Equip.new( 0, 1, 2, 0, 10, Vec[ 15, 0, 0, 0, 0, 0, 6, 7, 0], Vec[0, 0, 0]),
|
5
|
+
'一般的な短剣' => Equip.new( 0, 1, 3, 0, 10, Vec[ 21, 0, 0, 0, 0, 0, 8, 10, 0], Vec[0, 0, 0]),
|
6
|
+
'良質な短剣' => Equip.new( 0, 1, 4, 0, 10, Vec[ 30, 0, 0, 0, 0, 0, 12, 15, 0], Vec[0, 0, 0]),
|
7
|
+
'業物の短剣' => Equip.new( 0, 1, 5, 0, 10, Vec[ 41, 0, 0, 0, 0, 0, 16, 20, 0], Vec[0, 0, 0]),
|
8
|
+
'名のある短剣' => Equip.new( 0, 1, 6, 0, 10, Vec[ 55, 0, 0, 0, 0, 0, 22, 27, 0], Vec[0, 0, 0]),
|
9
|
+
'匠の短剣' => Equip.new( 0, 1, 7, 0, 10, Vec[ 71, 0, 0, 0, 0, 0, 28, 35, 0], Vec[0, 0, 0]),
|
10
|
+
'竜殺しの短剣' => Equip.new( 0, 1, 8, 0, 10, Vec[ 90, 0, 0, 0, 0, 0, 36, 45, 0], Vec[0, 0, 0]),
|
11
|
+
'光り輝く短剣' => Equip.new( 0, 1, 9, 0, 10, Vec[ 111, 0, 0, 0, 0, 0, 44, 55, 0], Vec[0, 0, 0]),
|
12
|
+
'安物の双短剣' => Equip.new( 1, 2, 1, 0, 10, Vec[ 13, 0, 0, 0, 0, 0, 3, 4, 0], Vec[0, 0, 0]),
|
13
|
+
'量産品の双短剣' => Equip.new( 1, 2, 2, 0, 10, Vec[ 19, 0, 0, 0, 0, 0, 4, 6, 0], Vec[0, 0, 0]),
|
14
|
+
'一般的な双短剣' => Equip.new( 1, 2, 3, 0, 10, Vec[ 27, 0, 0, 0, 0, 0, 6, 8, 0], Vec[0, 0, 0]),
|
15
|
+
'良質な双短剣' => Equip.new( 1, 2, 4, 0, 10, Vec[ 39, 0, 0, 0, 0, 0, 9, 12, 0], Vec[0, 0, 0]),
|
16
|
+
'業物の双短剣' => Equip.new( 1, 2, 5, 0, 10, Vec[ 53, 0, 0, 0, 0, 0, 12, 16, 0], Vec[0, 0, 0]),
|
17
|
+
'名のある双短剣' => Equip.new( 1, 2, 6, 0, 10, Vec[ 71, 0, 0, 0, 0, 0, 16, 22, 0], Vec[0, 0, 0]),
|
18
|
+
'匠の双短剣' => Equip.new( 1, 2, 7, 0, 10, Vec[ 92, 0, 0, 0, 0, 0, 21, 28, 0], Vec[0, 0, 0]),
|
19
|
+
'竜殺しの双短剣' => Equip.new( 1, 2, 8, 0, 10, Vec[ 117, 0, 0, 0, 0, 0, 27, 36, 0], Vec[0, 0, 0]),
|
20
|
+
'光り輝く双短剣' => Equip.new( 1, 2, 9, 0, 10, Vec[ 144, 0, 0, 0, 0, 0, 33, 44, 0], Vec[0, 0, 0]),
|
21
|
+
'安物の剣' => Equip.new( 2, 2, 1, 0, 10, Vec[ 13, 2, 0, 4, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
22
|
+
'量産品の剣' => Equip.new( 2, 2, 2, 0, 10, Vec[ 19, 3, 0, 6, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
23
|
+
'一般的な剣' => Equip.new( 2, 2, 3, 0, 10, Vec[ 27, 4, 0, 8, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
24
|
+
'良質な剣' => Equip.new( 2, 2, 4, 0, 10, Vec[ 39, 6, 0, 12, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
25
|
+
'業物の剣' => Equip.new( 2, 2, 5, 0, 10, Vec[ 53, 8, 0, 16, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
26
|
+
'名のある剣' => Equip.new( 2, 2, 6, 0, 10, Vec[ 71, 11, 0, 22, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
27
|
+
'匠の剣' => Equip.new( 2, 2, 7, 0, 10, Vec[ 92, 14, 0, 28, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
28
|
+
'竜殺しの剣' => Equip.new( 2, 2, 8, 0, 10, Vec[ 117, 18, 0, 36, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
29
|
+
'光り輝く剣' => Equip.new( 2, 2, 9, 0, 10, Vec[ 144, 22, 0, 44, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
30
|
+
'安物の斧' => Equip.new( 3, 3, 1, 0, 10, Vec[ 19, 0, 0, 0, 0, 2, 0, 0, 0], Vec[0, 0, 0]),
|
31
|
+
'量産品の斧' => Equip.new( 3, 3, 2, 0, 10, Vec[ 23, 0, 0, 0, 0, 3, 0, 0, 0], Vec[0, 0, 0]),
|
32
|
+
'一般的な斧' => Equip.new( 3, 3, 3, 0, 10, Vec[ 40, 0, 0, 0, 0, 4, 0, 0, 0], Vec[0, 0, 0]),
|
33
|
+
'良質な斧' => Equip.new( 3, 3, 4, 0, 10, Vec[ 57, 0, 0, 0, 0, 6, 0, 0, 0], Vec[0, 0, 0]),
|
34
|
+
'業物の斧' => Equip.new( 3, 3, 5, 0, 10, Vec[ 78, 0, 0, 0, 0, 8, 0, 0, 0], Vec[0, 0, 0]),
|
35
|
+
'名のある斧' => Equip.new( 3, 3, 6, 0, 10, Vec[ 104, 0, 0, 0, 0, 11, 0, 0, 0], Vec[0, 0, 0]),
|
36
|
+
'匠の斧' => Equip.new( 3, 3, 7, 0, 10, Vec[ 135, 0, 0, 0, 0, 14, 0, 0, 0], Vec[0, 0, 0]),
|
37
|
+
'竜殺しの斧' => Equip.new( 3, 3, 8, 0, 10, Vec[ 171, 0, 0, 0, 0, 18, 0, 0, 0], Vec[0, 0, 0]),
|
38
|
+
'光り輝く斧' => Equip.new( 3, 3, 9, 0, 10, Vec[ 211, 0, 0, 0, 0, 22, 0, 0, 0], Vec[0, 0, 0]),
|
39
|
+
'安物の弓' => Equip.new( 4, 2, 1, 0, 10, Vec[ 8, 0, 0, 0, 0, 0, 10, 1, 1], Vec[0, 0, 0]),
|
40
|
+
'量産品の弓' => Equip.new( 4, 2, 2, 0, 10, Vec[ 12, 0, 0, 0, 0, 0, 15, 1, 1], Vec[0, 0, 0]),
|
41
|
+
'一般的な弓' => Equip.new( 4, 2, 3, 0, 10, Vec[ 17, 0, 0, 0, 0, 0, 21, 2, 2], Vec[0, 0, 0]),
|
42
|
+
'良質な弓' => Equip.new( 4, 2, 4, 0, 10, Vec[ 24, 0, 0, 0, 0, 0, 30, 3, 3], Vec[0, 0, 0]),
|
43
|
+
'業物の弓' => Equip.new( 4, 2, 5, 0, 10, Vec[ 33, 0, 0, 0, 0, 0, 41, 4, 4], Vec[0, 0, 0]),
|
44
|
+
'名のある弓' => Equip.new( 4, 2, 6, 0, 10, Vec[ 44, 0, 0, 0, 0, 0, 55, 5, 5], Vec[0, 0, 0]),
|
45
|
+
'匠の弓' => Equip.new( 4, 2, 7, 0, 10, Vec[ 57, 0, 0, 0, 0, 0, 71, 7, 7], Vec[0, 0, 0]),
|
46
|
+
'竜殺しの弓' => Equip.new( 4, 2, 8, 0, 10, Vec[ 72, 0, 0, 0, 0, 0, 90, 9, 9], Vec[0, 0, 0]),
|
47
|
+
'光り輝く弓' => Equip.new( 4, 2, 9, 0, 10, Vec[ 89, 0, 0, 0, 0, 0, 111, 11, 11], Vec[0, 0, 0]),
|
48
|
+
'安物の弩' => Equip.new( 5, 2, 1, 0, 10, Vec[ 7, 0, 0, 0, 1, 0, 9, 2, 0], Vec[0, 0, 0]),
|
49
|
+
'量産品の弩' => Equip.new( 5, 2, 2, 0, 10, Vec[ 10, 0, 0, 0, 1, 0, 13, 3, 0], Vec[0, 0, 0]),
|
50
|
+
'一般的な弩' => Equip.new( 5, 2, 3, 0, 10, Vec[ 14, 0, 0, 0, 2, 0, 19, 4, 0], Vec[0, 0, 0]),
|
51
|
+
'良質な弩' => Equip.new( 5, 2, 4, 0, 10, Vec[ 21, 0, 0, 0, 3, 0, 27, 6, 0], Vec[0, 0, 0]),
|
52
|
+
'業物の弩' => Equip.new( 5, 2, 5, 0, 10, Vec[ 28, 0, 0, 0, 4, 0, 37, 8, 0], Vec[0, 0, 0]),
|
53
|
+
'名のある弩' => Equip.new( 5, 2, 6, 0, 10, Vec[ 38, 0, 0, 0, 5, 0, 49, 11, 0], Vec[0, 0, 0]),
|
54
|
+
'匠の弩' => Equip.new( 5, 2, 7, 0, 10, Vec[ 49, 0, 0, 0, 7, 0, 64, 14, 0], Vec[0, 0, 0]),
|
55
|
+
'竜殺しの弩' => Equip.new( 5, 2, 8, 0, 10, Vec[ 63, 0, 0, 0, 9, 0, 81, 18, 0], Vec[0, 0, 0]),
|
56
|
+
'光り輝く弩' => Equip.new( 5, 2, 9, 0, 10, Vec[ 77, 0, 0, 0, 11, 0, 100, 22, 0], Vec[0, 0, 0]),
|
57
|
+
'安物の杖' => Equip.new( 6, 2, 1, 0, 10, Vec[ 5, 0, 0, 0, 3, 0, 0, 0, 11], Vec[0, 0, 0]),
|
58
|
+
'量産品の杖' => Equip.new( 6, 2, 2, 0, 10, Vec[ 7, 0, 0, 0, 4, 0, 0, 0, 16], Vec[0, 0, 0]),
|
59
|
+
'一般的な杖' => Equip.new( 6, 2, 3, 0, 10, Vec[ 10, 0, 0, 0, 6, 0, 0, 0, 23], Vec[0, 0, 0]),
|
60
|
+
'良質な杖' => Equip.new( 6, 2, 4, 0, 10, Vec[ 15, 0, 0, 0, 9, 0, 0, 0, 33], Vec[0, 0, 0]),
|
61
|
+
'業物の杖' => Equip.new( 6, 2, 5, 0, 10, Vec[ 20, 0, 0, 0, 12, 0, 0, 0, 45], Vec[0, 0, 0]),
|
62
|
+
'名のある杖' => Equip.new( 6, 2, 6, 0, 10, Vec[ 27, 0, 0, 0, 16, 0, 0, 0, 60], Vec[0, 0, 0]),
|
63
|
+
'匠の杖' => Equip.new( 6, 2, 7, 0, 10, Vec[ 35, 0, 0, 0, 21, 0, 0, 0, 78], Vec[0, 0, 0]),
|
64
|
+
'竜殺しの杖' => Equip.new( 6, 2, 8, 0, 10, Vec[ 45, 0, 0, 0, 27, 0, 0, 0, 99], Vec[0, 0, 0]),
|
65
|
+
'光り輝く杖' => Equip.new( 6, 2, 9, 0, 10, Vec[ 55, 0, 0, 0, 33, 0, 0, 0, 122], Vec[0, 0, 0]),
|
66
|
+
'安物の本' => Equip.new( 7, 2, 1, 0, 10, Vec[ 8, 0, 2, 0, 2, 0, 0, 0, 8], Vec[0, 0, 0]),
|
67
|
+
'量産品の本' => Equip.new( 7, 2, 2, 0, 10, Vec[ 12, 0, 3, 0, 3, 0, 0, 0, 12], Vec[0, 0, 0]),
|
68
|
+
'一般的な本' => Equip.new( 7, 2, 3, 0, 10, Vec[ 17, 0, 4, 0, 4, 0, 0, 0, 17], Vec[0, 0, 0]),
|
69
|
+
'良質な本' => Equip.new( 7, 2, 4, 0, 10, Vec[ 24, 0, 6, 0, 6, 0, 0, 0, 24], Vec[0, 0, 0]),
|
70
|
+
'業物の本' => Equip.new( 7, 2, 5, 0, 10, Vec[ 33, 0, 8, 0, 8, 0, 0, 0, 33], Vec[0, 0, 0]),
|
71
|
+
'名のある本' => Equip.new( 7, 2, 6, 0, 10, Vec[ 44, 0, 11, 0, 11, 0, 0, 0, 44], Vec[0, 0, 0]),
|
72
|
+
'匠の本' => Equip.new( 7, 2, 7, 0, 10, Vec[ 57, 0, 14, 0, 14, 0, 0, 0, 57], Vec[0, 0, 0]),
|
73
|
+
'竜殺しの本' => Equip.new( 7, 2, 8, 0, 10, Vec[ 72, 0, 18, 0, 18, 0, 0, 0, 72], Vec[0, 0, 0]),
|
74
|
+
'光り輝く本' => Equip.new( 7, 2, 9, 0, 10, Vec[ 89, 0, 22, 0, 22, 0, 0, 0, 89], Vec[0, 0, 0]),
|
75
|
+
'安物の兜' => Equip.new( 8, 2, 1, 0, 10, Vec[ 0, 5, 0, 15, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
76
|
+
'量産品の兜' => Equip.new( 8, 2, 2, 0, 10, Vec[ 0, 8, 0, 25, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
77
|
+
'一般的な兜' => Equip.new( 8, 2, 3, 0, 10, Vec[ 0, 12, 0, 37, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
78
|
+
'良質な兜' => Equip.new( 8, 2, 4, 0, 10, Vec[ 0, 18, 0, 55, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
79
|
+
'業物の兜' => Equip.new( 8, 2, 5, 0, 10, Vec[ 0, 25, 0, 77, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
80
|
+
'名のある兜' => Equip.new( 8, 2, 6, 0, 10, Vec[ 0, 35, 0, 105, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
81
|
+
'匠の兜' => Equip.new( 8, 2, 7, 0, 10, Vec[ 0, 45, 0, 137, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
82
|
+
'竜殺しの兜' => Equip.new( 8, 2, 8, 0, 10, Vec[ 0, 58, 0, 175, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
83
|
+
'光り輝く兜' => Equip.new( 8, 2, 9, 0, 10, Vec[ 0, 72, 0, 217, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
84
|
+
'歴戦の兜' => Equip.new( 8, 2, 10, 0, 10, Vec[ 0, 88, 0, 265, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
85
|
+
'安物の額当て' => Equip.new( 9, 1, 1, 0, 10, Vec[ 0, 3, 1, 10, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
86
|
+
'量産品の額当て' => Equip.new( 9, 1, 2, 0, 10, Vec[ 0, 5, 1, 16, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
87
|
+
'一般的な額当て' => Equip.new( 9, 1, 3, 0, 10, Vec[ 0, 7, 2, 25, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
88
|
+
'良質な額当て' => Equip.new( 9, 1, 4, 0, 10, Vec[ 0, 11, 3, 36, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
89
|
+
'業物の額当て' => Equip.new( 9, 1, 5, 0, 10, Vec[ 0, 15, 5, 51, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
90
|
+
'名のある額当て' => Equip.new( 9, 1, 6, 0, 10, Vec[ 0, 21, 7, 70, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
91
|
+
'匠の額当て' => Equip.new( 9, 1, 7, 0, 10, Vec[ 0, 27, 9, 91, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
92
|
+
'竜殺しの額当て' => Equip.new( 9, 1, 8, 0, 10, Vec[ 0, 35, 11, 116, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
93
|
+
'光り輝く額当て' => Equip.new( 9, 1, 9, 0, 10, Vec[ 0, 43, 14, 145, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
94
|
+
'歴戦の額当て' => Equip.new( 9, 1, 10, 0, 10, Vec[ 0, 53, 17, 176, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
95
|
+
'安物の帽子' => Equip.new(10, 1, 1, 0, 10, Vec[ 0, 2, 2, 7, 2, 0, 0, 0, 0], Vec[0, 0, 0]),
|
96
|
+
'量産品の帽子' => Equip.new(10, 1, 2, 0, 10, Vec[ 0, 3, 3, 11, 3, 0, 0, 0, 0], Vec[0, 0, 0]),
|
97
|
+
'一般的な帽子' => Equip.new(10, 1, 3, 0, 10, Vec[ 0, 5, 5, 17, 5, 0, 0, 0, 0], Vec[0, 0, 0]),
|
98
|
+
'良質な帽子' => Equip.new(10, 1, 4, 0, 10, Vec[ 0, 7, 7, 25, 7, 0, 0, 0, 0], Vec[0, 0, 0]),
|
99
|
+
'業物の帽子' => Equip.new(10, 1, 5, 0, 10, Vec[ 0, 10, 10, 36, 10, 0, 0, 0, 0], Vec[0, 0, 0]),
|
100
|
+
'名のある帽子' => Equip.new(10, 1, 6, 0, 10, Vec[ 0, 14, 14, 49, 14, 0, 0, 0, 0], Vec[0, 0, 0]),
|
101
|
+
'匠の帽子' => Equip.new(10, 1, 7, 0, 10, Vec[ 0, 18, 18, 64, 18, 0, 0, 0, 0], Vec[0, 0, 0]),
|
102
|
+
'竜殺しの帽子' => Equip.new(10, 1, 8, 0, 10, Vec[ 0, 23, 23, 81, 23, 0, 0, 0, 0], Vec[0, 0, 0]),
|
103
|
+
'光り輝く帽子' => Equip.new(10, 1, 9, 0, 10, Vec[ 0, 29, 29, 101, 29, 0, 0, 0, 0], Vec[0, 0, 0]),
|
104
|
+
'歴戦の帽子' => Equip.new(10, 1, 10, 0, 10, Vec[ 0, 35, 35, 123, 35, 0, 0, 0, 0], Vec[0, 0, 0]),
|
105
|
+
'安物のフード' => Equip.new(11, 1, 1, 0, 10, Vec[ 0, 2, 4, 4, 3, 0, 0, 0, 0], Vec[0, 0, 0]),
|
106
|
+
'量産品のフード' => Equip.new(11, 1, 2, 0, 10, Vec[ 0, 3, 6, 6, 5, 0, 0, 0, 0], Vec[0, 0, 0]),
|
107
|
+
'一般的なフード' => Equip.new(11, 1, 3, 0, 10, Vec[ 0, 5, 10, 10, 7, 0, 0, 0, 0], Vec[0, 0, 0]),
|
108
|
+
'良質なフード' => Equip.new(11, 1, 4, 0, 10, Vec[ 0, 7, 14, 14, 11, 0, 0, 0, 0], Vec[0, 0, 0]),
|
109
|
+
'業物のフード' => Equip.new(11, 1, 5, 0, 10, Vec[ 0, 10, 20, 20, 15, 0, 0, 0, 0], Vec[0, 0, 0]),
|
110
|
+
'名のあるフード' => Equip.new(11, 1, 6, 0, 10, Vec[ 0, 14, 28, 28, 21, 0, 0, 0, 0], Vec[0, 0, 0]),
|
111
|
+
'匠のフード' => Equip.new(11, 1, 7, 0, 10, Vec[ 0, 18, 36, 36, 27, 0, 0, 0, 0], Vec[0, 0, 0]),
|
112
|
+
'竜殺しのフード' => Equip.new(11, 1, 8, 0, 10, Vec[ 0, 23, 46, 46, 35, 0, 0, 0, 0], Vec[0, 0, 0]),
|
113
|
+
'光り輝くフード' => Equip.new(11, 1, 9, 0, 10, Vec[ 0, 29, 58, 58, 43, 0, 0, 0, 0], Vec[0, 0, 0]),
|
114
|
+
'歴戦のフード' => Equip.new(11, 1, 10, 0, 10, Vec[ 0, 35, 70, 70, 53, 0, 0, 0, 0], Vec[0, 0, 0]),
|
115
|
+
'安物の重鎧' => Equip.new(12, 3, 1, 0, 10, Vec[ 0, 12, 2, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
116
|
+
'量産品の重鎧' => Equip.new(12, 3, 2, 0, 10, Vec[ 0, 20, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
117
|
+
'一般的な重鎧' => Equip.new(12, 3, 3, 0, 10, Vec[ 0, 30, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
118
|
+
'良質な重鎧' => Equip.new(12, 3, 4, 0, 10, Vec[ 0, 44, 7, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
119
|
+
'業物の重鎧' => Equip.new(12, 3, 5, 0, 10, Vec[ 0, 62, 10, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
120
|
+
'名のある重鎧' => Equip.new(12, 3, 6, 0, 10, Vec[ 0, 84, 14, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
121
|
+
'匠の重鎧' => Equip.new(12, 3, 7, 0, 10, Vec[ 0, 110, 18, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
122
|
+
'竜殺しの重鎧' => Equip.new(12, 3, 8, 0, 10, Vec[ 0, 140, 23, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
123
|
+
'光り輝く重鎧' => Equip.new(12, 3, 9, 0, 10, Vec[ 0, 174, 29, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
124
|
+
'歴戦の重鎧' => Equip.new(12, 3, 10, 0, 10, Vec[ 0, 212, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
125
|
+
'安物の軽鎧' => Equip.new(13, 2, 1, 0, 10, Vec[ 0, 8, 4, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
126
|
+
'量産品の軽鎧' => Equip.new(13, 2, 2, 0, 10, Vec[ 0, 13, 6, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
127
|
+
'一般的な軽鎧' => Equip.new(13, 2, 3, 0, 10, Vec[ 0, 20, 10, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
128
|
+
'良質な軽鎧' => Equip.new(13, 2, 4, 0, 10, Vec[ 0, 29, 14, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
129
|
+
'業物の軽鎧' => Equip.new(13, 2, 5, 0, 10, Vec[ 0, 41, 20, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
130
|
+
'名のある軽鎧' => Equip.new(13, 2, 6, 0, 10, Vec[ 0, 41, 20, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
131
|
+
'匠の軽鎧' => Equip.new(13, 2, 7, 0, 10, Vec[ 0, 56, 28, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
132
|
+
'竜殺しの軽鎧' => Equip.new(13, 2, 8, 0, 10, Vec[ 0, 73, 36, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
133
|
+
'光り輝く軽鎧' => Equip.new(13, 2, 9, 0, 10, Vec[ 0, 93, 46, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
134
|
+
'歴戦の軽鎧' => Equip.new(13, 2, 10, 0, 10, Vec[ 0, 116, 58, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
135
|
+
'安物の服' => Equip.new(14, 1, 1, 0, 10, Vec[ 0, 6, 6, 0, 0, 0, 3, 0, 0], Vec[0, 0, 0]),
|
136
|
+
'量産品の服' => Equip.new(14, 1, 2, 0, 10, Vec[ 0, 10, 10, 0, 0, 0, 5, 0, 0], Vec[0, 0, 0]),
|
137
|
+
'一般的な服' => Equip.new(14, 1, 3, 0, 10, Vec[ 0, 15, 15, 0, 0, 0, 7, 0, 0], Vec[0, 0, 0]),
|
138
|
+
'良質な服' => Equip.new(14, 1, 4, 0, 10, Vec[ 0, 22, 22, 0, 0, 0, 11, 0, 0], Vec[0, 0, 0]),
|
139
|
+
'業物の服' => Equip.new(14, 1, 5, 0, 10, Vec[ 0, 31, 31, 0, 0, 0, 15, 0, 0], Vec[0, 0, 0]),
|
140
|
+
'名のある服' => Equip.new(14, 1, 6, 0, 10, Vec[ 0, 42, 42, 0, 0, 0, 21, 0, 0], Vec[0, 0, 0]),
|
141
|
+
'匠の服' => Equip.new(14, 1, 7, 0, 10, Vec[ 0, 55, 55, 0, 0, 0, 27, 0, 0], Vec[0, 0, 0]),
|
142
|
+
'竜殺しの服' => Equip.new(14, 1, 8, 0, 10, Vec[ 0, 70, 70, 0, 0, 0, 35, 0, 0], Vec[0, 0, 0]),
|
143
|
+
'光り輝く服' => Equip.new(14, 1, 9, 0, 10, Vec[ 0, 87, 87, 0, 0, 0, 43, 0, 0], Vec[0, 0, 0]),
|
144
|
+
'歴戦の服' => Equip.new(14, 1, 10, 0, 10, Vec[ 0, 106, 106, 0, 0, 0, 53, 0, 0], Vec[0, 0, 0]),
|
145
|
+
'安物の法衣' => Equip.new(15, 1, 1, 0, 10, Vec[ 0, 5, 9, 0, 0, 0, 0, 0, 3], Vec[0, 0, 0]),
|
146
|
+
'量産品の法衣' => Equip.new(15, 1, 2, 0, 10, Vec[ 0, 8, 15, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
|
147
|
+
'一般的な法衣' => Equip.new(15, 1, 3, 0, 10, Vec[ 0, 12, 22, 0, 0, 0, 0, 0, 7], Vec[0, 0, 0]),
|
148
|
+
'良質な法衣' => Equip.new(15, 1, 4, 0, 10, Vec[ 0, 18, 33, 0, 0, 0, 0, 0, 11], Vec[0, 0, 0]),
|
149
|
+
'業物の法衣' => Equip.new(15, 1, 5, 0, 10, Vec[ 0, 25, 46, 0, 0, 0, 0, 0, 15], Vec[0, 0, 0]),
|
150
|
+
'名のある法衣' => Equip.new(15, 1, 6, 0, 10, Vec[ 0, 35, 63, 0, 0, 0, 0, 0, 21], Vec[0, 0, 0]),
|
151
|
+
'匠の法衣' => Equip.new(15, 1, 7, 0, 10, Vec[ 0, 45, 82, 0, 0, 0, 0, 0, 27], Vec[0, 0, 0]),
|
152
|
+
'竜殺しの法衣' => Equip.new(15, 1, 8, 0, 10, Vec[ 0, 58, 105, 0, 0, 0, 0, 0, 35], Vec[0, 0, 0]),
|
153
|
+
'光り輝く法衣' => Equip.new(15, 1, 9, 0, 10, Vec[ 0, 72, 130, 0, 0, 0, 0, 0, 43], Vec[0, 0, 0]),
|
154
|
+
'歴戦の法衣' => Equip.new(15, 1, 10, 0, 10, Vec[ 0, 88, 159, 0, 0, 0, 0, 0, 53], Vec[0, 0, 0]),
|
155
|
+
'安物の盾' => Equip.new(16, 2, 1, 0, 10, Vec[ 0, 7, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
156
|
+
'量産品の盾' => Equip.new(16, 2, 2, 0, 10, Vec[ 0, 11, 8, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
157
|
+
'一般的な盾' => Equip.new(16, 2, 3, 0, 10, Vec[ 0, 17, 12, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
158
|
+
'良質な盾' => Equip.new(16, 2, 4, 0, 10, Vec[ 0, 25, 18, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
159
|
+
'業物の盾' => Equip.new(16, 2, 5, 0, 10, Vec[ 0, 36, 25, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
160
|
+
'名のある盾' => Equip.new(16, 2, 6, 0, 10, Vec[ 0, 49, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
161
|
+
'匠の盾' => Equip.new(16, 2, 7, 0, 10, Vec[ 0, 64, 45, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
162
|
+
'竜殺しの盾' => Equip.new(16, 2, 8, 0, 10, Vec[ 0, 81, 58, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
163
|
+
'光り輝く盾' => Equip.new(16, 2, 9, 0, 10, Vec[ 0, 101, 72, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
164
|
+
'歴戦の盾' => Equip.new(16, 2, 10, 0, 10, Vec[ 0, 123, 88, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
165
|
+
'安物の小手' => Equip.new(17, 1, 1, 0, 10, Vec[ 3, 4, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
166
|
+
'量産品の小手' => Equip.new(17, 1, 2, 0, 10, Vec[ 5, 6, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
167
|
+
'一般的な小手' => Equip.new(17, 1, 3, 0, 10, Vec[ 7, 10, 7, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
168
|
+
'良質な小手' => Equip.new(17, 1, 4, 0, 10, Vec[ 11, 14, 11, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
169
|
+
'業物の小手' => Equip.new(17, 1, 5, 0, 10, Vec[ 15, 20, 15, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
170
|
+
'名のある小手' => Equip.new(17, 1, 6, 0, 10, Vec[ 21, 28, 21, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
171
|
+
'匠の小手' => Equip.new(17, 1, 7, 0, 10, Vec[ 27, 36, 27, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
172
|
+
'竜殺しの小手' => Equip.new(17, 1, 8, 0, 10, Vec[ 35, 46, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
173
|
+
'光り輝く小手' => Equip.new(17, 1, 9, 0, 10, Vec[ 43, 58, 43, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
174
|
+
'歴戦の小手' => Equip.new(17, 1, 10, 0, 10, Vec[ 53, 70, 53, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
175
|
+
'安物の手袋' => Equip.new(18, 1, 1, 0, 10, Vec[ 0, 4, 5, 0, 0, 0, 3, 0, 0], Vec[0, 0, 0]),
|
176
|
+
'量産品の手袋' => Equip.new(18, 1, 2, 0, 10, Vec[ 0, 6, 8, 0, 0, 0, 5, 0, 0], Vec[0, 0, 0]),
|
177
|
+
'一般的な手袋' => Equip.new(18, 1, 3, 0, 10, Vec[ 0, 10, 12, 0, 0, 0, 7, 0, 0], Vec[0, 0, 0]),
|
178
|
+
'良質な手袋' => Equip.new(18, 1, 4, 0, 10, Vec[ 0, 14, 18, 0, 0, 0, 11, 0, 0], Vec[0, 0, 0]),
|
179
|
+
'業物の手袋' => Equip.new(18, 1, 5, 0, 10, Vec[ 0, 20, 25, 0, 0, 0, 15, 0, 0], Vec[0, 0, 0]),
|
180
|
+
'名のある手袋' => Equip.new(18, 1, 6, 0, 10, Vec[ 0, 28, 35, 0, 0, 0, 21, 0, 0], Vec[0, 0, 0]),
|
181
|
+
'匠の手袋' => Equip.new(18, 1, 7, 0, 10, Vec[ 0, 36, 45, 0, 0, 0, 27, 0, 0], Vec[0, 0, 0]),
|
182
|
+
'竜殺しの手袋' => Equip.new(18, 1, 8, 0, 10, Vec[ 0, 46, 58, 0, 0, 0, 35, 0, 0], Vec[0, 0, 0]),
|
183
|
+
'光り輝く手袋' => Equip.new(18, 1, 9, 0, 10, Vec[ 0, 58, 72, 0, 0, 0, 43, 0, 0], Vec[0, 0, 0]),
|
184
|
+
'歴戦の手袋' => Equip.new(18, 1, 10, 0, 10, Vec[ 0, 70, 88, 0, 0, 0, 53, 0, 0], Vec[0, 0, 0]),
|
185
|
+
'安物の腕輪' => Equip.new(19, 1, 1, 0, 10, Vec[ 0, 3, 6, 0, 0, 0, 0, 0, 3], Vec[0, 0, 0]),
|
186
|
+
'量産品の腕輪' => Equip.new(19, 1, 2, 0, 10, Vec[ 0, 5, 10, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
|
187
|
+
'一般的な腕輪' => Equip.new(19, 1, 3, 0, 10, Vec[ 0, 7, 15, 0, 0, 0, 0, 0, 7], Vec[0, 0, 0]),
|
188
|
+
'良質な腕輪' => Equip.new(19, 1, 4, 0, 10, Vec[ 0, 11, 22, 0, 0, 0, 0, 0, 11], Vec[0, 0, 0]),
|
189
|
+
'業物の腕輪' => Equip.new(19, 1, 5, 0, 10, Vec[ 0, 15, 31, 0, 0, 0, 0, 0, 15], Vec[0, 0, 0]),
|
190
|
+
'名のある腕輪' => Equip.new(19, 1, 6, 0, 10, Vec[ 0, 21, 42, 0, 0, 0, 0, 0, 21], Vec[0, 0, 0]),
|
191
|
+
'匠の腕輪' => Equip.new(19, 1, 7, 0, 10, Vec[ 0, 27, 44, 0, 0, 0, 0, 0, 27], Vec[0, 0, 0]),
|
192
|
+
'竜殺しの腕輪' => Equip.new(19, 1, 8, 0, 10, Vec[ 0, 35, 70, 0, 0, 0, 0, 0, 35], Vec[0, 0, 0]),
|
193
|
+
'光り輝く腕輪' => Equip.new(19, 1, 9, 0, 10, Vec[ 0, 43, 87, 0, 0, 0, 0, 0, 43], Vec[0, 0, 0]),
|
194
|
+
'歴戦の腕輪' => Equip.new(19, 1, 10, 0, 10, Vec[ 0, 53, 106, 0, 0, 0, 0, 0, 53], Vec[0, 0, 0]),
|
195
|
+
'安物の脛当て' => Equip.new(20, 2, 1, 0, 10, Vec[ 0, 7, 2, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
196
|
+
'量産品の脛当て' => Equip.new(20, 2, 2, 0, 10, Vec[ 0, 11, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
197
|
+
'一般的な脛当て' => Equip.new(20, 2, 3, 0, 10, Vec[ 0, 17, 5, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
198
|
+
'良質な脛当て' => Equip.new(20, 2, 4, 0, 10, Vec[ 0, 25, 7, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
199
|
+
'業物の脛当て' => Equip.new(20, 2, 5, 0, 10, Vec[ 0, 36, 10, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
200
|
+
'名のある脛当て' => Equip.new(20, 2, 6, 0, 10, Vec[ 0, 49, 14, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
201
|
+
'匠の脛当て' => Equip.new(20, 2, 7, 0, 10, Vec[ 0, 64, 18, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
202
|
+
'竜殺しの脛当て' => Equip.new(20, 2, 8, 0, 10, Vec[ 0, 81, 23, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
203
|
+
'光り輝く脛当て' => Equip.new(20, 2, 9, 0, 10, Vec[ 0, 101, 29, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
204
|
+
'歴戦の脛当て' => Equip.new(20, 2, 10, 0, 10, Vec[ 0, 123, 35, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
205
|
+
'安物のブーツ' => Equip.new(21, 1, 1, 0, 10, Vec[ 0, 4, 4, 0, 0, 0, 0, 2, 0], Vec[0, 0, 0]),
|
206
|
+
'量産品のブーツ' => Equip.new(21, 1, 2, 0, 10, Vec[ 0, 6, 6, 0, 0, 0, 0, 3, 0], Vec[0, 0, 0]),
|
207
|
+
'一般的なブーツ' => Equip.new(21, 1, 3, 0, 10, Vec[ 0, 10, 10, 0, 0, 0, 0, 5, 0], Vec[0, 0, 0]),
|
208
|
+
'良質なブーツ' => Equip.new(21, 1, 4, 0, 10, Vec[ 0, 14, 14, 0, 0, 0, 0, 7, 0], Vec[0, 0, 0]),
|
209
|
+
'業物のブーツ' => Equip.new(21, 1, 5, 0, 10, Vec[ 0, 20, 20, 0, 0, 0, 0, 10, 0], Vec[0, 0, 0]),
|
210
|
+
'名のあるブーツ' => Equip.new(21, 1, 6, 0, 10, Vec[ 0, 28, 28, 0, 0, 0, 0, 14, 0], Vec[0, 0, 0]),
|
211
|
+
'匠のブーツ' => Equip.new(21, 1, 7, 0, 10, Vec[ 0, 36, 36, 0, 0, 0, 0, 18, 0], Vec[0, 0, 0]),
|
212
|
+
'竜殺しのブーツ' => Equip.new(21, 1, 8, 0, 10, Vec[ 0, 46, 46, 0, 0, 0, 0, 23, 0], Vec[0, 0, 0]),
|
213
|
+
'光り輝くブーツ' => Equip.new(21, 1, 9, 0, 10, Vec[ 0, 58, 58, 0, 0, 0, 0, 29, 0], Vec[0, 0, 0]),
|
214
|
+
'歴戦のブーツ' => Equip.new(21, 1, 10, 0, 10, Vec[ 0, 70, 70, 0, 0, 0, 0, 35, 0], Vec[0, 0, 0]),
|
215
|
+
'安物の靴' => Equip.new(22, 1, 1, 0, 10, Vec[ 0, 3, 3, 0, 0, 0, 0, 4, 0], Vec[0, 0, 0]),
|
216
|
+
'量産品の靴' => Equip.new(22, 1, 2, 0, 10, Vec[ 0, 5, 5, 0, 0, 0, 0, 6, 0], Vec[0, 0, 0]),
|
217
|
+
'一般的な靴' => Equip.new(22, 1, 3, 0, 10, Vec[ 0, 7, 7, 0, 0, 0, 0, 10, 0], Vec[0, 0, 0]),
|
218
|
+
'良質な靴' => Equip.new(22, 1, 4, 0, 10, Vec[ 0, 11, 11, 0, 0, 0, 0, 14, 0], Vec[0, 0, 0]),
|
219
|
+
'業物の靴' => Equip.new(22, 1, 5, 0, 10, Vec[ 0, 15, 15, 0, 0, 0, 0, 20, 0], Vec[0, 0, 0]),
|
220
|
+
'名のある靴' => Equip.new(22, 1, 6, 0, 10, Vec[ 0, 21, 21, 0, 0, 0, 0, 28, 0], Vec[0, 0, 0]),
|
221
|
+
'匠の靴' => Equip.new(22, 1, 7, 0, 10, Vec[ 0, 27, 27, 0, 0, 0, 0, 36, 0], Vec[0, 0, 0]),
|
222
|
+
'竜殺しの靴' => Equip.new(22, 1, 8, 0, 10, Vec[ 0, 35, 35, 0, 0, 0, 0, 46, 0], Vec[0, 0, 0]),
|
223
|
+
'光り輝く靴' => Equip.new(22, 1, 9, 0, 10, Vec[ 0, 43, 43, 0, 0, 0, 0, 58, 0], Vec[0, 0, 0]),
|
224
|
+
'歴戦の靴' => Equip.new(22, 1, 10, 0, 10, Vec[ 0, 53, 53, 0, 0, 0, 0, 70, 0], Vec[0, 0, 0]),
|
225
|
+
'安物のサンダル' => Equip.new(23, 1, 1, 0, 10, Vec[ 0, 2, 5, 0, 0, 0, 0, 3, 0], Vec[0, 0, 0]),
|
226
|
+
'量産品のサンダル' => Equip.new(23, 1, 2, 0, 10, Vec[ 0, 3, 8, 0, 0, 0, 0, 5, 0], Vec[0, 0, 0]),
|
227
|
+
'一般的なサンダル' => Equip.new(23, 1, 3, 0, 10, Vec[ 0, 5, 12, 0, 0, 0, 0, 7, 0], Vec[0, 0, 0]),
|
228
|
+
'良質なサンダル' => Equip.new(23, 1, 4, 0, 10, Vec[ 0, 7, 18, 0, 0, 0, 0, 11, 0], Vec[0, 0, 0]),
|
229
|
+
'業物のサンダル' => Equip.new(23, 1, 5, 0, 10, Vec[ 0, 10, 25, 0, 0, 0, 0, 15, 0], Vec[0, 0, 0]),
|
230
|
+
'名のあるサンダル' => Equip.new(23, 1, 6, 0, 10, Vec[ 0, 14, 35, 0, 0, 0, 0, 21, 0], Vec[0, 0, 0]),
|
231
|
+
'匠のサンダル' => Equip.new(23, 1, 7, 0, 10, Vec[ 0, 18, 45, 0, 0, 0, 0, 27, 0], Vec[0, 0, 0]),
|
232
|
+
'竜殺しのサンダル' => Equip.new(23, 1, 8, 0, 10, Vec[ 0, 23, 58, 0, 0, 0, 0, 35, 0], Vec[0, 0, 0]),
|
233
|
+
'光り輝くサンダル' => Equip.new(23, 1, 9, 0, 10, Vec[ 0, 29, 72, 0, 0, 0, 0, 43, 0], Vec[0, 0, 0]),
|
234
|
+
'歴戦のサンダル' => Equip.new(23, 1, 10, 0, 10, Vec[ 0, 35, 88, 0, 0, 0, 0, 53, 0], Vec[0, 0, 0]),
|
235
|
+
'安物のブローチ' => Equip.new(24, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 5, 0, 0, 0], Vec[0, 0, 0]),
|
236
|
+
'量産品のブローチ' => Equip.new(24, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 8, 0, 0, 0], Vec[0, 0, 0]),
|
237
|
+
'一般的なブローチ' => Equip.new(24, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 12, 0, 0, 0], Vec[0, 0, 0]),
|
238
|
+
'良質なブローチ' => Equip.new(24, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 18, 0, 0, 0], Vec[0, 0, 0]),
|
239
|
+
'業物のブローチ' => Equip.new(24, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 25, 0, 0, 0], Vec[0, 0, 0]),
|
240
|
+
'名のあるブローチ' => Equip.new(24, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 35, 0, 0, 0], Vec[0, 0, 0]),
|
241
|
+
'匠のブローチ' => Equip.new(24, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 45, 0, 0, 0], Vec[0, 0, 0]),
|
242
|
+
'竜殺しのブローチ' => Equip.new(24, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 58, 0, 0, 0], Vec[0, 0, 0]),
|
243
|
+
'光り輝くブローチ' => Equip.new(24, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 72, 0, 0, 0], Vec[0, 0, 0]),
|
244
|
+
'歴戦のブローチ' => Equip.new(24, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 88, 0, 0, 0], Vec[0, 0, 0]),
|
245
|
+
'安物の指輪' => Equip.new(25, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 5, 0, 0], Vec[0, 0, 0]),
|
246
|
+
'量産品の指輪' => Equip.new(25, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 8, 0, 0], Vec[0, 0, 0]),
|
247
|
+
'一般的な指輪' => Equip.new(25, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 12, 0, 0], Vec[0, 0, 0]),
|
248
|
+
'良質な指輪' => Equip.new(25, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 18, 0, 0], Vec[0, 0, 0]),
|
249
|
+
'業物の指輪' => Equip.new(25, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 25, 0, 0], Vec[0, 0, 0]),
|
250
|
+
'名のある指輪' => Equip.new(25, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 35, 0, 0], Vec[0, 0, 0]),
|
251
|
+
'匠の指輪' => Equip.new(25, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 45, 0, 0], Vec[0, 0, 0]),
|
252
|
+
'竜殺しの指輪' => Equip.new(25, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 58, 0, 0], Vec[0, 0, 0]),
|
253
|
+
'光り輝く指輪' => Equip.new(25, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 72, 0, 0], Vec[0, 0, 0]),
|
254
|
+
'歴戦の指輪' => Equip.new(25, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 88, 0, 0], Vec[0, 0, 0]),
|
255
|
+
'安物の首飾り' => Equip.new(26, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 5, 0], Vec[0, 0, 0]),
|
256
|
+
'量産品の首飾り' => Equip.new(26, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 8, 0], Vec[0, 0, 0]),
|
257
|
+
'一般的な首飾り' => Equip.new(26, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 12, 0], Vec[0, 0, 0]),
|
258
|
+
'良質な首飾り' => Equip.new(26, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 18, 0], Vec[0, 0, 0]),
|
259
|
+
'業物の首飾り' => Equip.new(26, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 25, 0], Vec[0, 0, 0]),
|
260
|
+
'名のある首飾り' => Equip.new(26, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 35, 0], Vec[0, 0, 0]),
|
261
|
+
'匠の首飾り' => Equip.new(26, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 45, 0], Vec[0, 0, 0]),
|
262
|
+
'竜殺しの首飾り' => Equip.new(26, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 58, 0], Vec[0, 0, 0]),
|
263
|
+
'光り輝く首飾り' => Equip.new(26, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 72, 0], Vec[0, 0, 0]),
|
264
|
+
'歴戦の首飾り' => Equip.new(26, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 88, 0], Vec[0, 0, 0]),
|
265
|
+
'安物の耳飾り' => Equip.new(27, 1, 1, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
|
266
|
+
'量産品の耳飾り' => Equip.new(27, 1, 2, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 8], Vec[0, 0, 0]),
|
267
|
+
'一般的な耳飾り' => Equip.new(27, 1, 3, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 12], Vec[0, 0, 0]),
|
268
|
+
'良質な耳飾り' => Equip.new(27, 1, 4, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 18], Vec[0, 0, 0]),
|
269
|
+
'業物の耳飾り' => Equip.new(27, 1, 5, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 25], Vec[0, 0, 0]),
|
270
|
+
'名のある耳飾り' => Equip.new(27, 1, 6, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 35], Vec[0, 0, 0]),
|
271
|
+
'匠の耳飾り' => Equip.new(27, 1, 7, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 45], Vec[0, 0, 0]),
|
272
|
+
'竜殺しの耳飾り' => Equip.new(27, 1, 8, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 58], Vec[0, 0, 0]),
|
273
|
+
'光り輝く耳飾り' => Equip.new(27, 1, 9, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 72], Vec[0, 0, 0]),
|
274
|
+
'歴戦の耳飾り' => Equip.new(27, 1, 10, 0, 10, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 88], Vec[0, 0, 0]),
|
275
|
+
'紫色小太刀' => Equip.new( 0, 1, 10, 0, 5, Vec[ 200, 0, 0, 0, 0, 0, 0, 80, 0], Vec[0, 0, 0]),
|
276
|
+
'氷炎二刀' => Equip.new( 1, 2, 10, 0, 5, Vec[ 170, 0, 0, 0, 0, 0, 0, 0, 100], Vec[1, 0, 1]),
|
277
|
+
'ムーンライト' => Equip.new( 2, 2, 10, 0, 4, Vec[ 270, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
278
|
+
'大腿骨砕き' => Equip.new( 3, 3, 10, 0, 8, Vec[ 250, 0, 0, 0, 0, 20, 0, 0, 0], Vec[0, 0, 0]),
|
279
|
+
'小竜咆哮' => Equip.new( 4, 1, 10, 1, 4, Vec[ 50, 0, 0, 0, 0, 0, 120, 50, 0], Vec[0, 0, 0]),
|
280
|
+
'軍用弩' => Equip.new( 5, 2, 10, 3, 0, Vec[ 300, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
281
|
+
'大樹の杖' => Equip.new( 6, 1, 10, 1, 6, Vec[ 0, 0, 50, 0, 20, 0, 0, 0, 170], Vec[0, 0, 0]),
|
282
|
+
'闇の書' => Equip.new( 7, 1, 10, 11, 4, Vec[ 0, 0, 0, 0, 0, 0, 0, 0, 200], Vec[0, 0, 0]),
|
283
|
+
'グランクニーヴ' => Equip.new( 0, 2, 10, 0, 5, Vec[ 150, 0, 50, 0, 0, 0, 100, 80, 0], Vec[1, 1, 1]),
|
284
|
+
'デグルガウス' => Equip.new( 1, 3, 10, 0, 5, Vec[ 220, 0, 0, 0, 0, 10, 20, 75, 60], Vec[0, 0, 0]),
|
285
|
+
'竜剣ラウ' => Equip.new( 2, 3, 10, 0, 4, Vec[ 240, 50, 0, 100, 0, 0, 50, 0, 100], Vec[0, 0, 0]),
|
286
|
+
'覇王戦斧' => Equip.new( 3, 4, 10, 0, 8, Vec[ 350, 0, 0, 100, 0, 50, 0, 20, 0], Vec[0, 0, 0]),
|
287
|
+
'サジタリウス' => Equip.new( 4, 3, 10, 1, 4, Vec[ 100, 0, 0, 50, 0, 30, 200, 30, 30], Vec[1, 1, 1]),
|
288
|
+
'炎龍の息吹' => Equip.new( 5, 3, 10, 3, 0, Vec[ 100, 0, 0, 0, 10, 0, 140, 30, 0], Vec[5, 0, 0]),
|
289
|
+
'万物の杖' => Equip.new( 6, 2, 10, 1, 6, Vec[ 50, 0, 0, 20, 20, 0, 50, 0, 250], Vec[0, 0, 0]),
|
290
|
+
'聖典' => Equip.new( 7, 2, 10, 11, 4, Vec[ 100, 0, 100, 50, 0, 0, 0, 0, 200], Vec[0, 0, 0]),
|
291
|
+
'陽炎の兜' => Equip.new( 8, 3, 10, 2, 8, Vec[ 0, 150, 100, 1000, 0, 0, 0, 0, 0], Vec[3, 0, 0]),
|
292
|
+
'ボロボロな服' => Equip.new(14, 1, 1, 2, 10, Vec[ 0, 2, 1, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
293
|
+
'異界の法衣' => Equip.new(15, 2, 10, 2, 10, Vec[ 0, 100, 400, 100, 10, 0, 0, 0, 50], Vec[1, 1, 1]),
|
294
|
+
'竜盾デグノル' => Equip.new(16, 3, 10, 2, 10, Vec[ 0, 300, 250, 300, 0, 0, 150, 0, 0], Vec[0, 0, 3]),
|
295
|
+
'天鬼の靴' => Equip.new(22, 2, 10, 2, 10, Vec[ 0, 100, 200, 0, 50, 0, 0, 200, 0], Vec[0, 3, 0]),
|
296
|
+
'古びたペンダント' => Equip.new(27, 1, 10, 0, 6, Vec[ 0, 0, 0, 50, 5, 0, 0, 0, 0], Vec[1, 1, 1]),
|
297
|
+
'劣悪な短剣' => Equip.new( 0, 1, 1, 0, 10, Vec[ 5, 0, 0, 0, 0, 0, 1, 1, 0], Vec[0, 0, 0]),
|
298
|
+
'劣悪な双短剣' => Equip.new( 1, 2, 1, 0, 10, Vec[ 7, 0, 0, 0, 0, 0, 0, 1, 0], Vec[0, 0, 0]),
|
299
|
+
'劣悪な剣' => Equip.new( 2, 2, 1, 0, 10, Vec[ 6, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
300
|
+
'劣悪な斧' => Equip.new( 3, 3, 1, 0, 10, Vec[ 9, 0, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
301
|
+
'劣悪な弓' => Equip.new( 4, 1, 1, 1, 10, Vec[ 3, 0, 0, 0, 0, 0, 4, 0, 0], Vec[0, 0, 0]),
|
302
|
+
'劣悪な弩' => Equip.new( 5, 2, 1, 1, 10, Vec[ 4, 0, 0, 0, 0, 0, 2, 0, 0], Vec[0, 0, 0]),
|
303
|
+
'劣悪な杖' => Equip.new( 6, 2, 1, 4, 10, Vec[ 1, 0, 0, 0, 0, 0, 0, 0, 5], Vec[0, 0, 0]),
|
304
|
+
'劣悪な本' => Equip.new( 7, 2, 1, 11, 10, Vec[ 5, 0, 0, 0, 0, 0, 0, 0, 3], Vec[0, 0, 0]),
|
305
|
+
'劣悪な重鎧' => Equip.new(12, 3, 1, 0, 10, Vec[ 0, 7, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
306
|
+
'劣悪な軽鎧' => Equip.new(13, 2, 1, 3, 10, Vec[ 0, 4, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
307
|
+
'劣悪な服' => Equip.new(14, 1, 1, 2, 10, Vec[ 0, 2, 1, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
308
|
+
'劣悪なローブ' => Equip.new(15, 1, 1, 2, 10, Vec[ 0, 1, 3, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
309
|
+
'劣悪な盾' => Equip.new(16, 1, 1, 0, 10, Vec[ 0, 4, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0]),
|
310
|
+
'劣悪な小手' => Equip.new(17, 1, 1, 0, 10, Vec[ 0, 2, 0, 0, 0, 0, 0, 0, 0], Vec[0, 0, 0])
|
311
|
+
}
|
312
|
+
SystemEquip.keys.each do |k|
|
313
|
+
if /弩\Z/.match(k)
|
314
|
+
SystemEquip.store(k.sub(/弩\Z/, 'ボウガン'), SystemEquip[k])
|
315
|
+
SystemEquip.store(k.sub(/弩\Z/, 'ボーガン'), SystemEquip[k])
|
316
|
+
elsif /法衣\Z/.match(k)
|
317
|
+
SystemEquip.store(k.sub(/法衣\Z/, 'ローブ'), SystemEquip[k])
|
318
|
+
elsif /ローブ\Z/.match(k)
|
319
|
+
SystemEquip.store(k.sub(/ローブ\Z/, '法衣'), SystemEquip[k])
|
320
|
+
elsif /手袋\Z/.match(k)
|
321
|
+
SystemEquip.store(k.sub(/手袋\Z/, 'グローブ'), SystemEquip[k])
|
322
|
+
elsif /脛当て\Z/.match(k)
|
323
|
+
SystemEquip.store(k.sub(/脛当て\Z/, 'すね当て'), SystemEquip[k])
|
324
|
+
end
|
325
|
+
end
|
326
|
+
end
|
data/lib/mgmg/utils.rb
ADDED
@@ -0,0 +1,315 @@
|
|
1
|
+
module Mgmg
|
2
|
+
module Refiner
|
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
|
+
using Refiner
|
19
|
+
|
20
|
+
class InvalidCharacterError < StandardError
|
21
|
+
def initialize(match)
|
22
|
+
@wchar = match[0]
|
23
|
+
super("`#{@wchar}' is not a valid character for recipes")
|
24
|
+
end
|
25
|
+
attr_accessor :wchar
|
26
|
+
end
|
27
|
+
class InvalidBracketError < StandardError; end
|
28
|
+
class InvalidSmithError < StandardError
|
29
|
+
def initialize(str)
|
30
|
+
@recipe = str
|
31
|
+
super("`#{@recipe}' is not a valid recipe for smithing")
|
32
|
+
end
|
33
|
+
attr_accessor :recipe
|
34
|
+
end
|
35
|
+
class InvalidMaterialError < StandardError
|
36
|
+
def initialize(str)
|
37
|
+
@material = str
|
38
|
+
super("`#{@material}' is not a valid material name")
|
39
|
+
end
|
40
|
+
attr_accessor :material
|
41
|
+
end
|
42
|
+
class InvalidEquipClassError < StandardError
|
43
|
+
def initialize(str)
|
44
|
+
@equip = str
|
45
|
+
super("`#{@equip}' is not a valid equip class name")
|
46
|
+
end
|
47
|
+
attr_accessor :equip
|
48
|
+
end
|
49
|
+
class SearchCutException < StandardError; end
|
50
|
+
|
51
|
+
module_function def exp(smith, armor, comp=armor.tap{armor=0})
|
52
|
+
if armor <= 0
|
53
|
+
if smith <= 0
|
54
|
+
if comp <= 0
|
55
|
+
0
|
56
|
+
else
|
57
|
+
(2*((comp-1)**2)) + 2
|
58
|
+
end
|
59
|
+
else
|
60
|
+
if comp <= 0
|
61
|
+
((smith-1)**2) + 1
|
62
|
+
else
|
63
|
+
((smith-1)**2) + (2*((comp-1)**2)) + 3
|
64
|
+
end
|
65
|
+
end
|
66
|
+
else
|
67
|
+
if smith <= 0
|
68
|
+
if comp <= 0
|
69
|
+
((armor-1)**2) + 1
|
70
|
+
else
|
71
|
+
((armor-1)**2) + (2*((comp-1)**2)) + 3
|
72
|
+
end
|
73
|
+
else
|
74
|
+
if comp <= 0
|
75
|
+
((smith-1)**2) + ((armor-1)**2) + 2
|
76
|
+
else
|
77
|
+
((smith-1)**2) + ((armor-1)**2) + (2*((comp-1)**2)) + 4
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
module_function def invexp2(exp, comp)
|
83
|
+
Math.sqrt(exp - (2*((comp-1)**2)) - 3).round + 1
|
84
|
+
end
|
85
|
+
module_function def invexp3(exp, sa, comp)
|
86
|
+
Math.sqrt(exp - ((sa-1)**2) - (2*((comp-1)**2)) - 4).round + 1
|
87
|
+
end
|
88
|
+
|
89
|
+
CharacterList = /[^\(\)\+0123456789\[\]あきくしすたてなねのびりるイウガクグサジスタダチツデトドニノフブペボムラリルロンヴー一万二光兜典刀剣劣匠双古名吹咆品哮地大天太子安宝小帽弓弩当息悪戦手指斧書服木本杖業樹歴殺水氷法火炎牙物玉王産用界異的皮盾短石砕竜紫綿耳聖脛腕腿般良色衣袋覇質軍軽輝輪重量金鉄鎧闇陽靴額飾首骨鬼龍]/
|
90
|
+
module_function def check_string(str)
|
91
|
+
str = str.gsub(/[\s \\]/, '')
|
92
|
+
if m = CharacterList.match(str)
|
93
|
+
raise InvalidCharacterError.new(m)
|
94
|
+
end
|
95
|
+
levels = [0, 0]
|
96
|
+
str.each_char do |c|
|
97
|
+
if c == '('
|
98
|
+
if levels[0] == 0
|
99
|
+
levels[0] = 1
|
100
|
+
else
|
101
|
+
raise InvalidBracketError.new("parentheses cannot be nested")
|
102
|
+
end
|
103
|
+
elsif c == ')'
|
104
|
+
if levels[0] == 0
|
105
|
+
raise InvalidBracketError.new("parentheses must be opened before closing")
|
106
|
+
else
|
107
|
+
levels[0] -= 1
|
108
|
+
end
|
109
|
+
elsif c == '['
|
110
|
+
if levels[0] != 0
|
111
|
+
raise InvalidBracketError.new("brackets cannot be nested in parentheses")
|
112
|
+
else
|
113
|
+
levels[1] += 1
|
114
|
+
end
|
115
|
+
elsif c == ']'
|
116
|
+
if levels[0] != 0
|
117
|
+
raise InvalidBracketError.new("parentheses must be closed before closing brackets")
|
118
|
+
elsif levels[1] == 0
|
119
|
+
raise InvalidBracketError.new("brackets must be opened before closing")
|
120
|
+
else
|
121
|
+
levels[1] -= 1
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
if levels[0] != 0
|
126
|
+
raise InvalidBracketError.new("parentheses must be closed")
|
127
|
+
elsif levels[1] != 0
|
128
|
+
raise InvalidBracketError.new("brackets must be closed")
|
129
|
+
end
|
130
|
+
str
|
131
|
+
end
|
132
|
+
|
133
|
+
class Vec < Array
|
134
|
+
def add!(other)
|
135
|
+
case other
|
136
|
+
when Array
|
137
|
+
self.map!.with_index do |e, i|
|
138
|
+
e + other[i]
|
139
|
+
end
|
140
|
+
else
|
141
|
+
self.map! do |e|
|
142
|
+
e + other
|
143
|
+
end
|
144
|
+
end
|
145
|
+
self
|
146
|
+
end
|
147
|
+
def sub!(other)
|
148
|
+
case other
|
149
|
+
when Array
|
150
|
+
self.map!.with_index do |e, i|
|
151
|
+
e - other[i]
|
152
|
+
end
|
153
|
+
else
|
154
|
+
self.map! do |e|
|
155
|
+
e - other
|
156
|
+
end
|
157
|
+
end
|
158
|
+
self
|
159
|
+
end
|
160
|
+
def e_mul!(other)
|
161
|
+
case other
|
162
|
+
when Array
|
163
|
+
self.map!.with_index do |e, i|
|
164
|
+
e * other[i]
|
165
|
+
end
|
166
|
+
else
|
167
|
+
self.map! do |e|
|
168
|
+
e * other
|
169
|
+
end
|
170
|
+
end
|
171
|
+
self
|
172
|
+
end
|
173
|
+
def e_div!(other)
|
174
|
+
case other
|
175
|
+
when Array
|
176
|
+
self.map!.with_index do |e, i|
|
177
|
+
e.cdiv(other[i])
|
178
|
+
end
|
179
|
+
else
|
180
|
+
self.map! do |e|
|
181
|
+
e.cdiv(other)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
self
|
185
|
+
end
|
186
|
+
def self.irange(size)
|
187
|
+
Vec.new(size, &:itself)
|
188
|
+
end
|
189
|
+
def []=(*arg)
|
190
|
+
case arg.size
|
191
|
+
when 1
|
192
|
+
self.replace(arg[0])
|
193
|
+
arg[0]
|
194
|
+
else
|
195
|
+
super
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
class Mat
|
201
|
+
def initialize(m, n, value=nil)
|
202
|
+
if block_given?
|
203
|
+
@body = Array.new(m) do |i|
|
204
|
+
Array.new(n) do |j|
|
205
|
+
yield(i, j)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
else
|
209
|
+
@body = Array.new(m) do
|
210
|
+
Array.new(n, value)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
attr_accessor :body
|
215
|
+
def initialize_copy(obj)
|
216
|
+
@body = obj.body.map(&:dup)
|
217
|
+
end
|
218
|
+
def row_size
|
219
|
+
@body.length
|
220
|
+
end
|
221
|
+
def col_size
|
222
|
+
@body[0].length
|
223
|
+
end
|
224
|
+
def shape
|
225
|
+
[row_size(), col_size()]
|
226
|
+
end
|
227
|
+
def each_with_index
|
228
|
+
@body.each.with_index do |row, i|
|
229
|
+
row.each.with_index do |e, j|
|
230
|
+
yield(e, i, j)
|
231
|
+
end
|
232
|
+
end
|
233
|
+
self
|
234
|
+
end
|
235
|
+
def map_with_index!
|
236
|
+
@body.each.with_index do |row, i|
|
237
|
+
row.map!.with_index do |e, j|
|
238
|
+
yield(e, i, j)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
self
|
242
|
+
end
|
243
|
+
def map_with_index(&block)
|
244
|
+
dup.map_with_index!(&block)
|
245
|
+
end
|
246
|
+
def submat_add!(is, js, other)
|
247
|
+
i_s, i_e = index_treatment(is, row_size)
|
248
|
+
j_s, j_e = index_treatment(js, col_size)
|
249
|
+
i_s.upto(i_e).with_index do |i, io|
|
250
|
+
row = @body[i]
|
251
|
+
o_row = other.body[io]
|
252
|
+
j_s.upto(j_e).with_index do |j, jo|
|
253
|
+
row[j] += o_row[jo]
|
254
|
+
end
|
255
|
+
end
|
256
|
+
self
|
257
|
+
end
|
258
|
+
private def index_treatment(idx, max)
|
259
|
+
case idx
|
260
|
+
when Integer
|
261
|
+
[idx, idx]
|
262
|
+
when Range
|
263
|
+
if idx.exclude_end?
|
264
|
+
[idx.first, idx.last-1]
|
265
|
+
else
|
266
|
+
[idx.first, idx.last]
|
267
|
+
end
|
268
|
+
when Array
|
269
|
+
[idx[0], idx[0]+idx[1]-1]
|
270
|
+
when nil
|
271
|
+
[0, max]
|
272
|
+
else
|
273
|
+
raise ArgumentError, "#{idx.class} is not available for Mat index"
|
274
|
+
end.map! do |i|
|
275
|
+
i < 0 ? max-i : i
|
276
|
+
end
|
277
|
+
end
|
278
|
+
def scalar!(value)
|
279
|
+
self.map_with_index! do |e, i, j|
|
280
|
+
e * value
|
281
|
+
end
|
282
|
+
end
|
283
|
+
def scalar(value)
|
284
|
+
self.dup.scalar!(value)
|
285
|
+
end
|
286
|
+
def sum
|
287
|
+
@body.map(&:sum).sum
|
288
|
+
end
|
289
|
+
def pprod(other)
|
290
|
+
r, c = row_size, col_size
|
291
|
+
ret = self.class.new(r+other.row_size-1, c+other.col_size-1, 0)
|
292
|
+
other.each_with_index do |o, i, j|
|
293
|
+
ret.submat_add!(i...(i+r), j...(j+c), scalar(o))
|
294
|
+
end
|
295
|
+
ret
|
296
|
+
end
|
297
|
+
def padd(other)
|
298
|
+
ret = self.class.new([row_size, other.row_size].max, [col_size, other.col_size].max, 0)
|
299
|
+
ret.submat_add!(0...row_size, 0...col_size, self)
|
300
|
+
ret.submat_add!(0...(other.row_size), 0...(other.col_size), other)
|
301
|
+
end
|
302
|
+
end
|
303
|
+
class << Mat
|
304
|
+
def v_array(*ary)
|
305
|
+
new(ary.length, 1) do |i, j|
|
306
|
+
ary[i]
|
307
|
+
end
|
308
|
+
end
|
309
|
+
def h_array(*ary)
|
310
|
+
new(1, ary.length) do |i, j|
|
311
|
+
ary[j]
|
312
|
+
end
|
313
|
+
end
|
314
|
+
end
|
315
|
+
end
|