mgmg 1.5.2 → 1.5.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/lib/mgmg/cuisine.rb +49 -49
- data/lib/mgmg/equip.rb +182 -171
- data/lib/mgmg/ir.rb +114 -108
- data/lib/mgmg/option.rb +28 -4
- data/lib/mgmg/poly.rb +68 -61
- data/lib/mgmg/recipe.rb +1 -1
- data/lib/mgmg/reinforce.rb +34 -35
- data/lib/mgmg/search.rb +2 -2
- data/lib/mgmg/utils.rb +3 -4
- data/lib/mgmg/version.rb +1 -1
- data/lib/mgmg.rb +11 -4
- data/reference.md +27 -25
- metadata +3 -3
data/reference.md
CHANGED
@@ -19,23 +19,23 @@
|
|
19
19
|
|
20
20
|
`self`が解釈不能な場合,例外が発生します.また,製作Lvや完成品の☆制限のチェックを行っていないほか,本ライブラリでは`武器+防具`や`防具+武器`の合成も可能になっています.街の鍛冶・防具製作・道具製作屋に任せた場合をシミュレートする場合は製作Lvを負の値(`-1`など,負であれば何でもよい)にします(製作Lv0相当の性能を計算し,消費エレメント量は委託仕様となります).
|
21
21
|
|
22
|
-
`opt`は,`left_associative`のみ使用します.
|
22
|
+
`opt`は,`left_associative`と`include_system_equips`のみ使用します.
|
23
23
|
|
24
24
|
## `Enumerable#build(smith=-1, armor=smith, comp=armor.tap{armor=smith}, opt: Mgmg.option())`
|
25
25
|
複数のレシピ文字列からなる`self`の各要素を製作し,そのすべてを装備したときの`Mgmg::Equip`を返します.製作では`鍛冶Lv=smith`, `防具製作Lv=armor`, `道具製作Lv=comp`とします.1つしか指定しなければすべてそのLv,2つなら1つ目を`smith=armor`,2つ目を`comp`に,3つならそれぞれの値とします.製作Lvが負の場合,製作Lv0として計算した上で,消費エレメント量は街の製作屋に頼んだ場合の値を計算します.武器複数など,同時装備が不可能な場合でも,特にチェックはされません.
|
26
26
|
|
27
|
-
`opt`は,`left_associative`のみ使用します.
|
27
|
+
`opt`は,`left_associative`と`include_system_equips`のみ使用します.
|
28
28
|
|
29
29
|
## `String#min_weight(opt: Mgmg.option())`
|
30
30
|
製作可能な最小重量を返します.基本的には合成回数+1ですが,既製品を含む場合はその限りではありません.
|
31
31
|
|
32
|
-
|
32
|
+
`opt`は,`include_system_equips`のみ使用します.
|
33
33
|
|
34
34
|
## `String#max_weight(include_outsourcing=false, opt: Mgmg.option())`
|
35
35
|
製作可能な最大重量を返します.`include_outsourcing`が真の場合,委託製作時の重量を返します.
|
36
36
|
委託製作では,製作Lv0相当となるため,素材の☆による最低製作Lvで作るよりも重くなる場合があります.
|
37
37
|
|
38
|
-
|
38
|
+
`opt`は,`include_system_equips`のみ使用します.
|
39
39
|
|
40
40
|
## `String#min_level(w=0, include_outsourcing=false, opt: Mgmg.option())`
|
41
41
|
`self`を重量`w`以下で作るための最低製作Lvを返します.
|
@@ -60,12 +60,12 @@
|
|
60
60
|
## `Enumerable#min_levels(weight=1, opt: Mgmg.option())`
|
61
61
|
すべての要素`str`に対する`str.min_levels`をマージした`Hash`を返します.
|
62
62
|
|
63
|
-
|
63
|
+
`opt`は,`include_system_equips`のみ使用します.
|
64
64
|
|
65
65
|
## `Enumerable#min_levels_max(weight=1, opt: Mgmg.option())`
|
66
66
|
`self.min_levels`から武器,防具それぞれに対する最大値を求め,`[必要最小鍛冶Lv, 必要最小防具製作Lv]`を返します.武器,防具の一方のみが含まれる場合,もう一方は`-1`になります.
|
67
67
|
|
68
|
-
|
68
|
+
`opt`は,`include_system_equips`のみ使用します.
|
69
69
|
|
70
70
|
## `String#min_comp(opt: Mgmg.option())`,`Enumerable#min_comp(opt: Mgmg.option())`
|
71
71
|
レシピ通りに合成するのに必要な道具製作Lvを返します.ただし,全体が「[]」で囲われているか,非合成レシピの場合,代わりに`-1`を返します.
|
@@ -79,7 +79,7 @@
|
|
79
79
|
|
80
80
|
`Enumerable`の場合,すべての要素に対し,武器,防具それぞれの最大値を求め,`[必要最小鍛冶Lv, 必要最小防具製作Lv]`を返します.武器,防具の一方のみが含まれる場合,もう一方は`-1`になります.
|
81
81
|
|
82
|
-
|
82
|
+
`opt`は,`include_system_equips`のみ使用します.
|
83
83
|
|
84
84
|
## `String#poly(para=:cost, opt: Mgmg.option())`
|
85
85
|
レシピ文字列である`self`を解釈し,`para`で指定した9パラ値について,丸めを無視した鍛冶・防具製作Lvと道具製作Lvの2変数からなる多項式関数を示す`Mgmg::TPolynomial`クラスのインスタンスを生成し,返します.`para`は次のシンボルのいずれかを指定します.
|
@@ -96,17 +96,17 @@
|
|
96
96
|
|
97
97
|
また,`:cost`を渡すことで,消費エレメント量に関する近似多項式を得られます.`self`に`"+"`が含まれていれば合成品とみなし,最後の合成に必要な地エレメント量を,それ以外では,武器なら消費火エレメント量を,防具なら消費水エレメント量を返します.ただし,`self`が既成品そのものの場合,零多項式を返します.
|
98
98
|
|
99
|
-
`opt`は,`left_associative`のみ使用します.
|
99
|
+
`opt`は,`left_associative`と`include_system_equips`のみ使用します.
|
100
100
|
|
101
101
|
## `String#ir(opt: Mgmg.option())`
|
102
102
|
レシピ文字列である`self`を解釈し,9パラ値について,丸めを考慮した鍛冶・防具製作Lvと道具製作Lvの2変数からなる関数オブジェクトを保持する`Mgmg::IR`クラスのインスタンスを生成し,返します.詳しくは,[後述](#mgmgir)の`Mgmg::IR`クラスの説明を参照ください.
|
103
103
|
|
104
|
-
`opt`は,`left_associative`と`reinforcement`を使用します.
|
104
|
+
`opt`は,`left_associative`と`include_system_equips`,`reinforcement`を使用します.
|
105
105
|
|
106
106
|
## `Enumerable#ir(opt: Mgmg.option())`
|
107
107
|
複数のレシピ文字列からなる`self`の各要素を製作し,そのすべてを装備したときの`Mgmg::IR`を返します.この場合,鍛冶Lv,防具製作Lv,道具製作Lvの3変数からなる関数オブジェクトを保持するものとして扱われます.各装備の種別に応じ,鍛冶Lvまたは防具製作Lvを適用し,9パラ値を計算します.
|
108
108
|
|
109
|
-
`opt`は,`left_associative`と`reinforcement`を使用します.
|
109
|
+
`opt`は,`left_associative`と`include_system_equips`,`reinforcement`を使用します.
|
110
110
|
|
111
111
|
## `String#smith_seach(para, target, comp, opt: Mgmg.option())`
|
112
112
|
`para`の値が`target`以上となるのに必要な最小の鍛冶・防具製作Lvを二分探索で探索して返します.
|
@@ -441,21 +441,23 @@ alias として`*`があるほか`scalar(1.quo(value))`として`quo`,`/`,`s
|
|
441
441
|
## `Mgmg.#option(recipe=nil, **kw)`
|
442
442
|
`kw`はキーワード引数本体です.定義されているキーワードと意味,使用される主なメソッドは下表の通りです.デフォルト値は簡易的な表示であり,細かい点では不正確です.
|
443
443
|
`recipe`にレシピ`String`または`Enumerable`を渡すと,そのレシピを使ってデフォルト値を具体化しますが,各メソッドで自動的に具体化されるため,通常は必要ありません.
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
444
|
+
`Defaults`対応が「対応」となっているキーワード引数については,`Mgmg::Option::Defaults[:include_system_equips]=false`などとすることで,デフォルト値をグローバルに変更することができます.デフォルト値にかかわらず,メソッド呼び出し時に個別に指定すればその値が優先されます.
|
445
|
+
|
446
|
+
|キーワード|デフォルト値|`Defaults`対応|意味|主なメソッド,備考|
|
447
|
+
|:-|:-|:-|:-|:-|
|
448
|
+
|left_associative|`true`|対応|レシピ文字列を左結合で解釈する|`Mgmg::Option`を使用するすべてのメソッド|
|
449
|
+
|smith_min|`recipe.min_level(target_weight)`|非対応|鍛冶Lvに関する探索範囲の最小値|`String#search`など|
|
450
|
+
|armor_min|`recipe.min_level(*target_weight)[1]`|非対応|防具製作Lvに関する探索範囲の最小値|`Enumerable#search`など.`String`系では代わりに`smith_min`を使う|
|
451
|
+
|comp_min|`recipe.min_comp`|非対応|道具製作Lvに関する探索範囲の最小値|`String#search`など|
|
452
|
+
|smith_max, armor_max, comp_max|`10000`|対応|各製作Lvの探索範囲の最大値|`String#search`など|
|
453
|
+
|target_weight|`0`|非対応|`smith_min`のデフォルト値計算に使う目標重量|`String#search`など|
|
454
|
+
|step|`1`|非対応|探索時において道具製作Lvを動かす幅|`String#search`など|
|
455
|
+
|magdef_maximize|`true`|非対応|目標を魔防最大(真)かコスト最小(偽)にするためのスイッチ|`String#phydef_optimize`|
|
456
|
+
|reinforcement|`[]`|非対応|[前述](#mgmgequipreinforcearg)の`Mgmg::Equip#reinforce`による強化リスト|一部を除くすべてのメソッド|
|
457
|
+
|buff|`[]`|非対応|`reinforcement`のエイリアス|どちらか一方のみを指定する|
|
458
|
+
|irep|`recipe.ir()`|非対応|`Mgmg::IR`の使い回しによる高速化|`String#search`など,内部的に使用|
|
459
|
+
|cut_exp|`Float::INFINITY`|非対応|探索時の総経験値の打ち切り値|`String#search`など,内部的に使用|
|
460
|
+
|include_system_equips|`true`|対応|レシピ解釈時に,既製品を受け付ける|`Mgmg::Option`を使用するすべてのメソッド|
|
459
461
|
|
460
462
|
## `Mgmg::Recipe`
|
461
463
|
レシピ文字列,注目パラメータ,オプションをセットにして扱うためのクラスです.
|
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.5.
|
4
|
+
version: 1.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KAZOON
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: '0'
|
106
106
|
requirements: []
|
107
|
-
rubygems_version: 3.3.
|
107
|
+
rubygems_version: 3.3.17
|
108
108
|
signing_key:
|
109
109
|
specification_version: 4
|
110
110
|
summary: Calculate specs of equipments of Megurimeguru, a game produced by Kou.
|