User:びゃっこ/すたぶ/解析状態異常: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 137: Line 137:
|resImpact
|resImpact
|衝撃耐性
|衝撃耐性
|-
|412
|slowCorruption
|エーテル鈍化
|}
|}


Line 312: Line 316:
         }
         }
         return c;
         return c;
    }
==Chara.cs==
===エーテル病進行度===
    public void ModCorruption(int a)
    {
        if (a > 0)
        {
            if (ResistLv(962) > 0 && EClass.rnd(ResistLv(962) + 1) != 0)
            {
                return;
            }
            int num = Evalue(412);
            if (num != 0)
            {
                float num2 = (float)a * 100f / (float)Mathf.Max(100 + num * 2, 10);
                a = (int)num2 + ((EClass.rndf(1f) > num2 % 1f) ? 1 : 0);
            }
        }
エーテル病が進行する攻撃に被弾したときに呼び出される処理です。
エーテル耐性があるならば、
*蓄積が発生する確率が1/(エーテル耐性評価値+1)にまで下がります。
*次にエーテル鈍化による減衰を計算します。
**蓄積量aが、100/(100 + 鈍化*2)倍になります。 ただし、(100 + 鈍化*2)には下限10があります。
**最後に計算後の蓄積量aを整数にするための処理をします。
     
        if (a == 0)
        {
            return;
        }
        int num3 = (corruption + a) / 100 - corruption / 100;
        for (int i = 0; i < Mathf.Abs(num3); i++)
        {
            if (!MutateRandom((num3 > 0) ? 1 : (-1), 100, ether: true))
            {
                break;
            }
        }
        corruption += a;
        int num4 = 0;
aが0なら計算を終えます。
 
        foreach (Element value in elements.dict.Values)
        {
            if (value.source.category == "ether")
            {
                num4 += value.Value;
            }
        }
        if (num4 > 0 && IsPC)
        {
            Tutorial.Reserve("ether");
        }
        corruption = num4 * 100 + corruption % 100;
     }
     }