|
|
| Line 33: |
Line 33: |
| 一時的耐性を持っているキャラクターに対して状態異常を付与しようとする際には、一時的耐性の値に応じて強度の軽減、もしくは付与が無効化されます。 | | 一時的耐性を持っているキャラクターに対して状態異常を付与しようとする際には、一時的耐性の値に応じて強度の軽減、もしくは付与が無効化されます。 |
|
| |
|
| '''一時的耐性による軽減・無効化は強制付与の場合も無視することはできません。''' | | '''一時的耐性の獲得・軽減・無効化は強制付与の場合も無視することはできません。''' |
|
| |
|
| == 一般的な状態異常付与 == | | == 一般的な状態異常付与 == |
| | 魔法による付与やポーションの効果による付与、その他特殊処理による付与は状態異常の強度を直接指定することで付与しています。 |
| | |
| | |
|
| |
|
| ==攻撃による状態異常付与== | | ==攻撃による状態異常付与== |
| Line 557: |
Line 560: |
| } | | } |
| 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;
| |
| } | | } |
|
| |
|