Jump to content

Elin:解析/戦闘: Difference between revisions

→‎魔法:魔法のパワー: 最新版に更新。解説を修正
(誤記や表記揺れの修正。)
(→‎魔法:魔法のパワー: 最新版に更新。解説を修正)
Line 526: Line 526:


==魔法:魔法のパワー==
==魔法:魔法のパワー==
EA 23.79 Nightly Patch 1
これはAbility.csの44行目です
これはAbility.csの44行目です


ここに、NPCの魔法のパワーを決定するためにどの式を使用するかを記述したコードが書かれています
ここに、魔法のパワーを決定するためにどの式を使用するかを記述したコードが書かれています


<syntaxhighlight lang="「c#」" line="「1」">
<syntaxhighlight lang="「c#」" line="「1」">
public override int GetPower(Card c)
public override int GetPower(Card c)
{
    {
int num = base. Value * 8 + 50;
        int a = base.Value * 8 + 50;
if (!c.IsPC)
        if (!c.IsPC)
{
        {
num = Mathf.Max(num, c.LV * 6 + 30);
            a = Mathf.Max(a, c.LV * 6 + 30);
if (c.IsPCFactionOrMinion && !base.source.aliasParent.IsEmpty())
            if (c.IsPCFactionOrMinion && !base.source.aliasParent.IsEmpty())
{
            {
num = Mathf.Max(num, c.Evalue(base.source.aliasParent) * 4 + 30);
                a = Mathf.Max(a, c.Evalue(base.source.aliasParent) * 4 + 30);
} }.
            }
}
        }
num = EClass.curve(num, 400, 100, 75);
        a = EClass.curve(a, 400, 100);
if (this is Spell)
        if (this is Spell)
{
        {
num = num * (100 + c.Evalue(411)) / 100;
            a = a * Mathf.Max(100 + c.Evalue(411) - c.Evalue(93), 1) / 100;
}
        }
return num;
        return a;
}.
    }
</syntaxhighlight>ここではカーブ関数を使用します:<syntaxhighlight lang="「c#」" line="「1」">
</syntaxhighlight>ここではカーブ関数を使用します:<syntaxhighlight lang="「c#」" line="「1」">
public static int curve(int a, int start, int step, int rate = 75)
public static int curve(int a, int start, int step, int rate = 75)
Line 567: Line 569:
return a;
return a;
} }.
} }.
</syntaxhighlight>プレイヤーの場合、魔法のパワーはcurve( ('''魔法レベル''' x 8 + 50), 400, 100, 75 ) x (100 + '''魔法強化エンチャント''') / 100 です
</syntaxhighlight>プレイヤーの魔法のパワーはcurve[ ('''魔法レベル''' x 8 + 50), 400, 100, 75 ] x (100 + '''魔法強化エンチャント''' - '''反魔法エンチャント''') / 100 です


プレイヤー以外の場合、魔法のパワーは'''魔法レベル''' x 8 + 50 か、'''キャラレベル''' x 6 + 30 か、主能力×4 + 30の中の最も大きいものです
ペットや味方ミニオンの場合、魔法のパワーは('''魔法レベル''' x 8 + 50)の部分が、[キャラレベル * 6 + 30] か [関連主能力 * 4 + 30] のうち大きい方で置き換えられます。
 
敵などの場合、魔法のパワーは('''魔法レベル''' x 8 + 50)の部分が、[キャラレベル * 6 + 30]で置き換えられます。




'''curve 関数について: ''' '''<code>curve(a, start, step, rate)</code>'''
'''curve 関数について: ''' '''<code>curve(a, start, step, rate)</code>'''


簡単に言うと、この関数は数値を圧縮するために使われます。
簡単に言うと、この関数は数値の伸びを抑えるために使われます。


<code>i = 0</code> をセットします。計算 <code>num = start + i * step</code>. <code>a</code> が <code>num</code> を超えたら、超えた部分に <code>rate / 100</code> を掛けます。その後、<code>i</code> を 1 ずつ増やします。上記のステップを 10 回繰り返します。
<code>i = 0</code> をセットします。計算 <code>num = start + i * step</code>. <code>a</code> が <code>num</code> を超えたら、超えた部分に <code>rate / 100</code> を掛けます。その後、<code>i</code> を 1 ずつ増やします。上記のステップを 10 回繰り返します。


関数の曲線の傾きは徐々に小さくなり、<code>(rate / 100)^10</code> となります。
関数の曲線の傾きは徐々に小さくなり、最終的には<code>(rate / 100)^10</code> となります。
 
==魔法:攻撃魔法==
==魔法:攻撃魔法==
ダイス数、ダイス面、ダメージボーナスは切り捨て。
ダイス数、ダイス面、ダメージボーナスは切り捨て。