mgmg 1.3.2 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +53 -32
- data/lib/mgmg.rb +19 -6
- data/lib/mgmg/const.rb +2 -1
- data/lib/mgmg/equip.rb +24 -28
- data/lib/mgmg/poly.rb +9 -0
- data/lib/mgmg/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d4bcd6c24784e7e3935e56141851a1581dc7027b998e8ddf05197e647a57bbe
|
4
|
+
data.tar.gz: d7d03752ecfb2478aee13ff6d7376e8db979f7df7202c58cf809763c0b548c0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7558ce118474996b673ea56a04f28d5e36950a272c19d3ad14da2367599c725a58988c215e9c666df7ec9e954ae4106885afa639ccb2477f29e75990957375cb
|
7
|
+
data.tar.gz: da3be7de946113103e0d05631a536d7b9ac0022cdd76b4e42a228b3a603a4d737b93bbc1a3cfc685125e9bd4bc3cd27e0d2d4940a72d327975876b9a3c99b9b7
|
data/CHANGELOG.md
CHANGED
@@ -99,3 +99,10 @@
|
|
99
99
|
- `String#phydef_optimize`,`String#buster_optimize`を追加.
|
100
100
|
- (`Enumerable#search`から呼び出される)`Enumerable#comp_search`における最大道具製作レベルチェックが間違っていたバグを修正.
|
101
101
|
- `String#search`および`Enumerable#search`において,総経験値量が等しい組み合わせの場合,目標パラメータが大きくなる製作Lvの組み合わせを返すように修正.
|
102
|
+
|
103
|
+
## 1.4.0 2021/06/03
|
104
|
+
- `Mgmg::Equip#atk_sd`,`Mgmg::Equip#dex_as`,`Mgmg::Equip#mag_das`,`Mgmg::Equip#magmag`を,威力値の定数倍(常に`Integer`)から威力値そのもの(`Rational`)に変更.これに伴い,`Mgmg::Equip#power`の返り値も威力値とした.互換性のため,`Mgmg::Equip#fpower`はそのまま残した.
|
105
|
+
- ver2.00β12で導入された,合成の消費エレメントが地と火または水で折半される仕様に対応した.`Mgmg::Equip#comp_cost`は従来の値の半分となり,`Mgmg::Equip#total_cost`はver2.00β12以降の総消費エレメントとなった.
|
106
|
+
- `Mgmg::TPolynomial#<=>`を追加.
|
107
|
+
- `Enumerable#show`を追加.
|
108
|
+
- `Mgmg::Equip#pmdef`で,`Mgmg::Equip#phydef`と`Mgmg::Equip#magmag`のうち,小さい方を返すようにし,`String#poly`の引数に`:pmdef`を受け付けるようにした.
|
data/README.md
CHANGED
@@ -25,29 +25,42 @@ Excel版に比べ,入力のチェックがなされておらず,☆制限の
|
|
25
25
|
あるいは,http://cycloawaodorin.sakura.ne.jp/sonota/mgmg/mgmg.html にてAjax版を利用することもできます.Ajax版は一部の機能しか実装されていませんが,Ruby環境がない場合にも利用できます.
|
26
26
|
|
27
27
|
## 使い方
|
28
|
-
|
28
|
+
並列型多段合成杖を製作し,標準出力に出力する.
|
29
29
|
|
30
30
|
```ruby
|
31
31
|
puts '[杖(水玉10火玉5)+本(骨10鉄1)]+[本(水玉5綿2)+杖(骨10鉄1)]'.build(112, 176)
|
32
32
|
#=> 杖4☆20(骨綿)[攻撃:119, MP:104, 魔力:1,859, EL:水2]
|
33
33
|
```
|
34
34
|
|
35
|
-
|
35
|
+
中間製作品の性能を確認する.
|
36
36
|
|
37
37
|
```ruby
|
38
|
-
|
39
|
-
|
38
|
+
puts '[杖(水玉10火玉5)+本(骨10鉄1)]+[本(水玉5綿2)+杖(骨10鉄1)]'.build(112, 176).history
|
39
|
+
#=> 杖1☆7(貴貴)[MP:15, 魔力:50, EL:水2]
|
40
|
+
#=> 本1☆5(骨鉄)[攻撃:44, 魔防:19, MP:20, 魔力:256]
|
41
|
+
#=> 杖2☆12(貴骨)[攻撃:56, MP:41, 魔力:650, EL:水2]
|
42
|
+
#=> 本1☆3(貴綿)[MP:8, 魔力:36]
|
43
|
+
#=> 杖1☆5(骨鉄)[攻撃:24, MP:32, 魔力:321]
|
44
|
+
#=> 本2☆8(綿骨)[攻撃:46, MP:35, 魔力:487]
|
45
|
+
#=> 杖4☆20(骨綿)[攻撃:119, MP:104, 魔力:1,859, EL:水2]
|
46
|
+
```
|
47
|
+
|
48
|
+
複数装備を製作し,そのすべてを装備した場合の合計値を標準出力に出力する.
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
r = %w|本(金3骨1)+[弓(骨1綿1)+[杖(金3金3)+[弓(綿1綿1)+[杖(宝10金6)+本(骨9鉄2)]]]] フード(石10骨9) 首飾り(宝10水10) 指輪(木10金10)|
|
52
|
+
puts r.build(122, 139, 232)
|
40
53
|
#=> 複数装備9(武:1, 頭:1, 飾:2)[攻撃:15, 物防:34, 魔防:28, HP:241, MP:71, 器用:223, 素早:222, 魔力:6,604]
|
41
54
|
```
|
42
55
|
|
43
|
-
重量1または2で作るのに必要な防具製作Lv
|
56
|
+
重量1または2で作るのに必要な防具製作Lvを確認する.
|
44
57
|
|
45
58
|
```ruby
|
46
59
|
p ['重鎧(皮10金10)'.min_level, '重鎧(皮10金10)'.min_level(2)]
|
47
60
|
#=> [162, 42]
|
48
61
|
```
|
49
62
|
|
50
|
-
合成レシピから必要製作Lv
|
63
|
+
合成レシピから必要製作Lvを確認する.
|
51
64
|
```ruby
|
52
65
|
p '[杖(水玉10火玉5)+本(骨10鉄1)]+[本(水玉5綿2)+杖(骨10鉄1)]'.min_levels
|
53
66
|
#=> {"杖(水玉10火玉5)"=>92, "本(骨10鉄1)"=>48, "本(水玉5綿2)"=>12, "杖(骨10鉄1)"=>28}
|
@@ -62,13 +75,22 @@ puts '[斧(牙10金10)+剣(鉄10皮1)]+剣(鉄10皮1)'.poly(:attack).to_s('%.4g'
|
|
62
75
|
#=> (0.02588S+3.364)C+(4.677S+699.9)
|
63
76
|
```
|
64
77
|
|
65
|
-
|
78
|
+
既成品の性能を確認する.
|
66
79
|
|
67
80
|
```ruby
|
68
81
|
puts '小竜咆哮'.build
|
69
82
|
#=> 弓1☆10(木骨)[攻撃:50, 器用:120, 素早:50]
|
70
83
|
```
|
71
84
|
|
85
|
+
目標威力を最小のスキル経験値で達成する鍛冶Lvと道具製作Lvの組み合わせを探索し,必要な総経験値を確認する.
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
r = '双短剣(金3皮1)+[杖(鉄2綿1)+[斧(玉5鉄1)+[杖(綿1綿1)+[斧(玉5金3)+[剣(金3牙1)+[斧(木2牙1)+[剣(木2牙1)+双短剣(鉄10木1)]]]]]]]'
|
89
|
+
sc = r.search(:atk_sd, 1_000_000)
|
90
|
+
p [sc, Mgmg.exp(*sc)]
|
91
|
+
#=> [[155, 376], 304969]
|
92
|
+
```
|
93
|
+
|
72
94
|
### 表記ゆれについて
|
73
95
|
本ゲームでは,装備種別の名称に,下記の表のような表記ゆれが存在します.
|
74
96
|
|
@@ -136,9 +158,9 @@ puts '小竜咆哮'.build
|
|
136
158
|
|
137
159
|
`para`として,複数の9パラ値を組み合わせた以下のシンボルを指定することもできます.
|
138
160
|
```ruby
|
139
|
-
:atkstr, :atk_sd, :dex_as, :mag_das, :magmag
|
161
|
+
:atkstr, :atk_sd, :dex_as, :mag_das, :magmag, :pmdef
|
140
162
|
```
|
141
|
-
|
163
|
+
ただし,自動選択の`:power`は指定できません.
|
142
164
|
|
143
165
|
また,`:cost`を渡すことで,消費エレメント量に関する近似多項式を得られます.`self`に`"+"`が含まれていれば合成品とみなし,最後の合成に必要な地エレメント量を,それ以外では,武器なら消費火エレメント量を,防具なら消費水エレメント量を返します.ただし,`self`が既成品そのものの場合,零多項式を返します.
|
144
166
|
|
@@ -199,7 +221,7 @@ puts '小竜咆哮'.build
|
|
199
221
|
### `Mgmg::Equip#inspect`
|
200
222
|
`Mgmg::Equip#to_s`の出力に加え,0となる9パラ値を省略せず,総消費エレメント量を連結した文字列を出力します.すなわち,
|
201
223
|
```ruby
|
202
|
-
"杖4☆20(骨綿)[攻撃:119, 物防:0, 魔防:0, HP:0, MP:104, 腕力:0, 器用:0, 素早:0, 魔力:1859, EL:火0地0水2]<コスト:火
|
224
|
+
"杖4☆20(骨綿)[攻撃:119, 物防:0, 魔防:0, HP:0, MP:104, 腕力:0, 器用:0, 素早:0, 魔力:1859, EL:火0地0水2]<コスト:火2066地1575水0>"
|
203
225
|
```
|
204
226
|
のような文字列を返します.
|
205
227
|
|
@@ -208,7 +230,13 @@ puts '小竜咆哮'.build
|
|
208
230
|
|
209
231
|
### `Mgmg::Equip#total_cost`
|
210
232
|
製作に必要な総エレメント量を,火,地,水の順のベクトルとして返します.ケージの十分性の確認には,下記の`comp_cost`を用います.
|
211
|
-
|
233
|
+
|
234
|
+
### `Mgmg::Equip#comp_cost(outsourcing=false)`
|
235
|
+
`self`が合成によって作られたものだとした場合の消費地エレメント量を返します.地ケージ確保のための確認用途が多いと思うので短い`cost`をエイリアスとしています.`outsourcing`が真の場合,街の道具製作屋に頼んだ場合のコストを返します.
|
236
|
+
武器なら火エレメント,防具なら水エレメントを,地エレメントと同値分だけ消費するため,火または水ケージも同量必要となります.
|
237
|
+
|
238
|
+
### `Mgmg::Equip#smith_cost(outsourcing=false)`
|
239
|
+
`self`が鍛冶・防具製作によって作られたものだったものだとした場合の消費火・水エレメント量を返します.`outscourcing`が真の場合,街の鍛冶屋・防具製作屋に頼んだ場合のコストを返します.
|
212
240
|
|
213
241
|
### `Mgmg::Equip#attack, phydef, magdef, hp, mp, str, dex, speed, magic, fire, earth, water`
|
214
242
|
それぞれ
|
@@ -218,47 +246,40 @@ ver2.00β12以降では,合成時の消費エレメントが,武器なら火
|
|
218
246
|
の値を`Integer`で返します.
|
219
247
|
|
220
248
|
### `Mgmg::Equip#power`
|
221
|
-
|
249
|
+
武器種別ごとに適した威力計算値を返します.具体的には以下の値です.
|
222
250
|
|
223
|
-
|
251
|
+
|武器種別|威力計算値|
|
224
252
|
|:-|:-|
|
225
|
-
|
226
|
-
|
227
|
-
|弓|max(
|
228
|
-
|
229
|
-
|杖,本|max(魔力
|
253
|
+
|短剣,双短剣|攻撃+腕力/2+器用/2|
|
254
|
+
|剣,斧|攻撃+腕力|
|
255
|
+
|弓|max(器用+攻撃/2+腕力/2, 魔力+器用/2+攻撃/4+腕力/4)|
|
256
|
+
|弩|器用+攻撃/2+腕力/2|
|
257
|
+
|杖,本|max(魔力x2,攻撃+腕力)|
|
230
258
|
|
231
259
|
弓,杖,本では`self`の性能から用途を判別し,高威力となるものの値を返します.防具に対してこのメソッドを呼び出すと,9パラメータのうち最も高い値を返します.
|
232
260
|
|
233
|
-
防具の場合,9
|
261
|
+
防具の場合,9パラメータのうち,最大のものを返します.ただし,最大の値に魔防が含まれている場合,代わりに「魔防+魔力/2」を返します.
|
234
262
|
|
235
|
-
複数装備の場合,9
|
263
|
+
複数装備の場合,9パラメータの合計値を返します.ただし,HPとMPは1/4倍します.HPとMPの特例は,消費エレメント量の計算と同様とするものです.
|
236
264
|
|
237
265
|
いずれの場合も,EL値,重量,☆は無視されます.
|
238
266
|
|
239
|
-
### `Mgmg::Equip#fpower`
|
240
|
-
武器または複数装備の場合,`Mgmg::Equip#power.fdiv(4)`を返します.防具の場合,`Mgmg::Equip#power.fdiv(2)`を返します.
|
241
|
-
|
242
267
|
### `Mgmg::Equip#atkstr, atk_sd, dex_as, mag_das`
|
243
268
|
それぞれ
|
244
269
|
```
|
245
|
-
|
270
|
+
攻撃+腕力,攻撃+腕力/2+器用/2,器用+攻撃/2+腕力/2,魔力+器用/2+攻撃/4+腕力/4
|
246
271
|
```
|
247
272
|
の値を返します.これらはそれぞれ
|
248
273
|
```
|
249
274
|
(剣,斧,杖,本),(短剣,双短剣),(弓,弩),(バスターアロー)
|
250
275
|
```
|
251
|
-
|
276
|
+
の威力です.トリックプレーやディバイドには対応していません.
|
252
277
|
|
253
278
|
### `Mgmg::Equip#magmag`
|
254
|
-
|
279
|
+
「魔防+魔力/2」の値を返します.魔力の半分が魔防に加算されることから,実際の魔防性能となります.
|
255
280
|
|
256
|
-
### `Mgmg::Equip#
|
257
|
-
|
258
|
-
ver2.00β12以降では武器なら火,防具なら水エレメントと半々の消費に変更されていますが,現在,この変更には対応していません.
|
259
|
-
|
260
|
-
### `Mgmg::Equip#smith_cost(outsourcing=false)`
|
261
|
-
`self`が鍛冶・防具製作によって作られたものだったものだとした場合の消費火・水エレメント量を返します.`outscourcing`が真の場合,街の鍛冶屋・防具製作屋に頼んだ場合のコストを返します.
|
281
|
+
### `Mgmg::Equip#pmdef`
|
282
|
+
物防と実効魔防のうち,小さい方を返します.
|
262
283
|
|
263
284
|
### `Mgmg::Equip#+(other)`
|
264
285
|
`self`と`other`を装備した「複数装備」の`Mgmg::Equip`を返します.`self`と`other`はいずれも単品でも「複数装備」でも構いません.武器複数などの装備可否チェックはされません.
|
data/lib/mgmg.rb
CHANGED
@@ -29,13 +29,17 @@ class String
|
|
29
29
|
when :atkstr
|
30
30
|
self.poly(:attack, left_associative: la) + self.poly(:str, left_associative: la)
|
31
31
|
when :atk_sd
|
32
|
-
self.poly(:attack) + self.poly(:str, left_associative: la).quo(2) + self.poly(:dex, left_associative: la).quo(2)
|
32
|
+
self.poly(:attack, left_associative: la) + self.poly(:str, left_associative: la).quo(2) + self.poly(:dex, left_associative: la).quo(2)
|
33
33
|
when :dex_as
|
34
|
-
self.poly(:dex) + self.poly(:attack, left_associative: la).quo(2) + self.poly(:str, left_associative: la).quo(2)
|
34
|
+
self.poly(:dex, left_associative: la) + self.poly(:attack, left_associative: la).quo(2) + self.poly(:str, left_associative: la).quo(2)
|
35
35
|
when :mag_das
|
36
|
-
self.poly(:magic) + self.poly(:dex_as, left_associative: la).quo(2)
|
36
|
+
self.poly(:magic, left_associative: la) + self.poly(:dex_as, left_associative: la).quo(2)
|
37
37
|
when :magmag
|
38
|
-
self.poly(:magdef) + self.poly(:magic, left_associative: la).quo(2)
|
38
|
+
self.poly(:magdef, left_associative: la) + self.poly(:magic, left_associative: la).quo(2)
|
39
|
+
when :pmdef
|
40
|
+
pd = self.poly(:phydef, left_associative: la)
|
41
|
+
md = self.poly(:magmag, left_associative: la)
|
42
|
+
pd <= md ? pd : md
|
39
43
|
when :cost
|
40
44
|
if Mgmg::SystemEquip.keys.include?(self)
|
41
45
|
return Mgmg::TPolynomial.new(Mgmg::Mat.new(1, 1, 0.quo(1)), 28, 0, 12, 12)
|
@@ -62,9 +66,9 @@ class String
|
|
62
66
|
def peff(para, smith, comp=smith, left_associative: true)
|
63
67
|
poly(para, left_associative: left_associative).eff(smith, comp)
|
64
68
|
end
|
65
|
-
def show(smith=-1, comp=smith, left_associative: true)
|
69
|
+
def show(smith=-1, comp=smith, left_associative: true, para: :power)
|
66
70
|
built = self.build(smith, comp, left_associative: left_associative)
|
67
|
-
pstr = '%.3f' % built.
|
71
|
+
pstr = '%.3f' % built.para_call(para)
|
68
72
|
pstr.sub!(/\.?0+\Z/, '')
|
69
73
|
puts "Building"
|
70
74
|
puts " #{self}"
|
@@ -89,6 +93,15 @@ module Enumerable
|
|
89
93
|
end
|
90
94
|
end.sum
|
91
95
|
end
|
96
|
+
def show(smith=-1, armor=smith, comp=armor.tap{armor=smith}, left_associative: true, para: :power)
|
97
|
+
built = self.build(smith, armor, comp, left_associative: left_associative)
|
98
|
+
pstr = '%.3f' % built.para_call(para)
|
99
|
+
pstr.sub!(/\.?0+\Z/, '')
|
100
|
+
puts "Building"
|
101
|
+
puts " #{self.join(', ')}"
|
102
|
+
puts "with levels (#{smith}, #{armor}, #{comp}) yields (#{pstr}, #{built.total_cost})"
|
103
|
+
puts " #{built}"
|
104
|
+
end
|
92
105
|
def min_levels(left_associative: true)
|
93
106
|
build(-1, -1, -1, left_associative: left_associative).min_levels
|
94
107
|
end
|
data/lib/mgmg/const.rb
CHANGED
@@ -20,7 +20,8 @@ module Mgmg
|
|
20
20
|
'兜': 8, '額当て': 9, '帽子': 10, 'フード': 11, '重鎧': 12, '軽鎧': 13, '服': 14, '法衣': 15,
|
21
21
|
'盾': 16, '小手': 17, '手袋': 18, '腕輪': 19, 'すね当て': 20, 'ブーツ': 21, '靴': 22, 'サンダル': 23,
|
22
22
|
'ブローチ': 24, '指輪': 25, '首飾り': 26, '耳飾り': 27,
|
23
|
-
'額': 9, '帽': 10, 'フ': 11, '重': 12, '軽': 13, 'ローブ':15, '法':15, 'ロ': 15,
|
23
|
+
'額': 9, '帽': 10, 'フ': 11, '重': 12, '軽': 13, 'ローブ':15, '法':15, 'ロ': 15,
|
24
|
+
'小': 17, '袋': 18, 'グ': 18, 'グローブ': 18, '腕': 19,
|
24
25
|
'脛当て': 20, '脛': 20, 'す': 20, 'サ': 23, '指': 25, '耳': 26, '首': 27
|
25
26
|
}
|
26
27
|
EquipName = [
|
data/lib/mgmg/equip.rb
CHANGED
@@ -83,13 +83,13 @@ module Mgmg
|
|
83
83
|
attack()+str()
|
84
84
|
end
|
85
85
|
def atk_sd
|
86
|
-
attack()
|
86
|
+
attack()+str().quo(2)+dex().quo(2)
|
87
87
|
end
|
88
88
|
def dex_as
|
89
|
-
attack()+str()+dex()
|
89
|
+
attack().quo(2)+str().quo(2)+dex()
|
90
90
|
end
|
91
91
|
def mag_das
|
92
|
-
magic()
|
92
|
+
magic()+dex_as().quo(2)
|
93
93
|
end
|
94
94
|
[:fire, :earth, :water].each.with_index do |s, i|
|
95
95
|
define_method(s){ @element[i] }
|
@@ -98,35 +98,34 @@ module Mgmg
|
|
98
98
|
def power
|
99
99
|
case @kind
|
100
100
|
when 0, 1
|
101
|
-
atk_sd()
|
101
|
+
atk_sd()
|
102
102
|
when 2, 3
|
103
|
-
atkstr()
|
103
|
+
atkstr()
|
104
104
|
when 4
|
105
|
-
[dex_as()
|
105
|
+
[dex_as(), mag_das()].max
|
106
106
|
when 5
|
107
|
-
dex_as()
|
107
|
+
dex_as()
|
108
108
|
when 6, 7
|
109
|
-
[magic()*
|
109
|
+
[magic()*2, atkstr()].max
|
110
110
|
when 28
|
111
|
-
|
111
|
+
@para.sum-((hp()+mp())*3.quo(4))
|
112
112
|
else
|
113
113
|
ret = @para.max
|
114
114
|
if ret == magdef()
|
115
|
-
ret
|
115
|
+
ret+magic().quo(2)
|
116
116
|
else
|
117
|
-
ret
|
117
|
+
ret
|
118
118
|
end
|
119
119
|
end
|
120
120
|
end
|
121
121
|
def magmag
|
122
|
-
magdef()
|
122
|
+
magdef()+magic().quo(2)
|
123
123
|
end
|
124
124
|
def fpower
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
end
|
125
|
+
power().to_f
|
126
|
+
end
|
127
|
+
def pmdef
|
128
|
+
[phydef(), magmag()].min
|
130
129
|
end
|
131
130
|
|
132
131
|
def smith_cost(outsourcing=false)
|
@@ -146,9 +145,9 @@ module Mgmg
|
|
146
145
|
end
|
147
146
|
def comp_cost(outsourcing=false)
|
148
147
|
if outsourcing
|
149
|
-
[(@star**2)*5+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp(), 0].max
|
148
|
+
[(@star**2)*5+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp(), 0].max.div(2)
|
150
149
|
else
|
151
|
-
[((@star**2)*5+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp()).div(2), 0].max
|
150
|
+
[((@star**2)*5+@para.sum+hp().cdiv(4)-hp()+mp().cdiv(4)-mp()).div(2), 0].max.div(2)
|
152
151
|
end
|
153
152
|
end
|
154
153
|
alias :cost :comp_cost
|
@@ -171,8 +170,7 @@ module Mgmg
|
|
171
170
|
end
|
172
171
|
end
|
173
172
|
@weight += other.weight
|
174
|
-
@main = 12
|
175
|
-
@sub = 12
|
173
|
+
@main, @sub = 12, 12
|
176
174
|
@para.add!(other.para)
|
177
175
|
@element.add!(other.element)
|
178
176
|
@total_cost.add!(other.total_cost)
|
@@ -257,7 +255,9 @@ module Mgmg
|
|
257
255
|
|
258
256
|
ret = new(main_k, main.weight+sub.weight, main_s+sub_s, main_sub, sub_main, para, ele)
|
259
257
|
ret.total_cost.add!(main.total_cost).add!(sub.total_cost)
|
260
|
-
|
258
|
+
cc = ret.comp_cost(outsourcing)
|
259
|
+
ret.total_cost[1] += cc
|
260
|
+
ret.total_cost[main_k < 8 ? 0 : 2] += cc
|
261
261
|
ret.min_levels.merge!(main.min_levels, sub.min_levels)
|
262
262
|
ret.history = [*main.history, *sub.history, ret]
|
263
263
|
ret
|
@@ -292,11 +292,7 @@ module Mgmg
|
|
292
292
|
weight = ( ( EquipWeight[kind] + SubWeight[sub_m] - level.div(2) ) * ( MainWeight[main_m] ) ).div(10000)
|
293
293
|
|
294
294
|
ret = new(kind, ( weight<1 ? 1 : weight ), (main_s+sub_s).div(2), main_mc, sub_mc, para, ele)
|
295
|
-
|
296
|
-
ret.total_cost[0] = ret.smith_cost(outsourcing)
|
297
|
-
else
|
298
|
-
ret.total_cost[2] = ret.smith_cost(outsourcing)
|
299
|
-
end
|
295
|
+
ret.total_cost[kind < 8 ? 0 : 2] += ret.smith_cost(outsourcing)
|
300
296
|
ret.min_levels.store(str, str.min_level)
|
301
297
|
ret
|
302
298
|
end
|
@@ -321,7 +317,7 @@ module Mgmg
|
|
321
317
|
if m.nil? || mat.nil?
|
322
318
|
raise InvalidMaterialError.new(str)
|
323
319
|
end
|
324
|
-
[mat, m[1].to_i, mat<90 ? mat.div(10): 9]
|
320
|
+
[mat, m[1].to_i, mat<90 ? mat.div(10) : 9]
|
325
321
|
end
|
326
322
|
|
327
323
|
def min_comp(str, left_associative: true)
|
data/lib/mgmg/poly.rb
CHANGED
data/lib/mgmg/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mgmg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KAZOON
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: '0'
|
100
100
|
requirements: []
|
101
|
-
rubygems_version: 3.2.
|
101
|
+
rubygems_version: 3.2.19
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: Calculate specs of equipments of Megurimeguru, a game produced by Kou.
|