mgmg 1.5.2 → 1.5.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 +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.
|