250
edits
(エーテル病処理を消す(エーテル病のページはあるのでそこに移したいが追跡対象の解析ページが増えるのは主にモチベ的にきつい)) |
m (→攻撃による状態異常付与) |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 16: | Line 16: | ||
また、「朦朧->混濁」や「切り傷->出血->大出血」<ref>これらは名称・挙動こそ異なるものの、内部上では同一の状態異常として扱われている。</ref>のように一部の状態異常には深度がありますが、これは残りターン数によって段階が決定されています。 | また、「朦朧->混濁」や「切り傷->出血->大出血」<ref>これらは名称・挙動こそ異なるものの、内部上では同一の状態異常として扱われている。</ref>のように一部の状態異常には深度がありますが、これは残りターン数によって段階が決定されています。 | ||
例えば朦朧は蓄積可能な状態異常なので、連続して付与することでターン数が伸び、一定の残りターン数になると深度が混濁になる、ということが起こっています。 | 例えば朦朧は蓄積可能な状態異常なので、連続して付与することでターン数が伸び、一定の残りターン数になると深度が混濁になる、ということが起こっています。<ref>病気などターン経過によって残りターン数が減少しないものもありますが、それらは「ターン経過による減少処理」を無効化して実現しています。</ref> | ||
=== 状態異常の強制付与 === | === 状態異常の強制付与 === | ||
| Line 23: | Line 23: | ||
特定の方法(電撃属性による麻痺や危ない本による恐怖など)で付与される状態異常は上記3つを無視することができます。 | 特定の方法(電撃属性による麻痺や危ない本による恐怖など)で付与される状態異常は上記3つを無視することができます。 | ||
特に電撃属性による麻痺付与は便宜上「スタン」と呼ばれることがありますが、強制付与される以外に違いは無く内部上は1ターンの麻痺と全く同一のものです。<ref> | 特に電撃属性による麻痺付与は便宜上「スタン」と呼ばれることがありますが、強制付与される以外に違いは無く内部上は1ターンの麻痺と全く同一のものです。<ref>既に2ターン以上の麻痺が付与されている状態で1ターンの麻痺に上書きされるのもこのため。</ref> | ||
=== 状態異常の一時的耐性 === | === 状態異常の一時的耐性 === | ||
| Line 36: | Line 36: | ||
== 一般的な状態異常付与 == | == 一般的な状態異常付与 == | ||
魔法・アビリティによる付与やポーション・巻物・魔法杖の効果による付与、その他特殊処理による付与は状態異常の強度を直接指定することで付与しています。 | |||
魔法・アビリティによる付与はそのパワーを状態異常の強度に、ポーション・巻物・魔法杖の効果による付与はそのパワーが状態異常の強度として扱われていることが殆どです。 | |||
=== 一時的耐性による軽減・無効化 === | |||
<syntaxhighlight lang="c#"> | |||
if (c.GainResistFactor > 0 && CanGainConResist) | |||
{ | |||
if (c.GainResistFactor >= 400) | |||
{ | |||
c.power /= 2; | |||
} | |||
ResistCon(c); | |||
if (c.power <= 0) | |||
{ | |||
return null; | |||
} | |||
} | |||
... | |||
public void ResistCon(Condition con) | |||
{ | |||
if (con.power > 0 && resistCon != null) | |||
{ | |||
int a = ClassExtension.TryGetValue<int, int>((IDictionary<int, int>)resistCon, con.id, 0); | |||
if (1000 < EClass.rnd(a)) | |||
{ | |||
con.power = 0; | |||
} | |||
else if (500 < EClass.rnd(a)) | |||
{ | |||
con.power /= 5; | |||
} | |||
else if (200 < EClass.rnd(a)) | |||
{ | |||
con.power /= 3; | |||
} | |||
else if (100 < EClass.rnd(a)) | |||
{ | |||
con.power /= 2; | |||
} | |||
} | |||
} | |||
</syntaxhighlight>付与される状態異常に一時的耐性を持っている場合、一時的耐性の値に応じた確率で状態異常強度を軽減もしくは付与の無効化をします。 | |||
以下4つの処理を、状態異常の付与が無効になるか状態異常強度を減少するかするまで順番に行います。どの条件も満たさない場合は軽減や無効化は行われません。 | |||
1: 0 ~ (一時的耐性 - 1)の範囲のランダムな値が1000より大きいなら、状態異常の付与を無効 | |||
2: 0 ~ (一時的耐性 - 1)の範囲のランダムな値が500より大きいなら、状態異常強度を'''「0.2倍」'''に軽減 | |||
3: 0 ~ (一時的耐性 - 1)の範囲のランダムな値が300より大きいなら、状態異常強度を'''「0.333倍」'''に軽減 | |||
4: 0 ~ (一時的耐性 - 1)の範囲のランダムな値が100より大きいなら、状態異常強度を'''「0.5倍」'''に軽減 | |||
また、'''一時的耐性が400以上'''の場合、上記の'''軽減・無効化と重複して'''状態異常強度を'''「0.5」'''倍にします。 | |||
=== 主能力による軽減 === | |||
<syntaxhighlight lang="c#"> | |||
if (defenseAttribute != null) | |||
{ | |||
c.power = 100 * c.power / Mathf.Max(100 + defenseAttribute.Value, 1); | |||
} | |||
</syntaxhighlight>付与される状態異常に対応する主能力がある場合、付与するキャラクターの主能力に応じて状態異常強度は軽減されます。 | |||
軽減率は以下の式で算出されます。 | |||
状態異常強度 = 状態異常強度 / (1 + 対応主能力 × 0.01) | |||
=== 属性耐性による軽減・無効化 === | |||
<syntaxhighlight lang="c#"> | |||
if (c.source.resistance.Length != 0) | |||
{ | |||
int num = ResistLv(EClass.sources.elements.alias[c.source.resistance[0]].id); | |||
if (num > 0) | |||
{ | |||
c.power /= num * num + 1; | |||
if (c.power <= 40) | |||
{ | |||
return null; | |||
} | |||
} | |||
} | |||
</syntaxhighlight>付与される状態異常に対応する属性耐性が5以上ある場合、状態異常強度は軽減されます。(弱点の場合は何も行われません。) | |||
軽減率は以下の式で算出されます。 | |||
状態異常強度 = 状態異常強度 / CLAMP(属性耐性 / 5, 1, 4) ^ 2 + 1 | |||
表に直すと軽減率は以下のようになります。<ref>免疫でも状態異常強度が残るため、古代種フィートやメタルフィートなどで免疫属性のダメージを受けた場合はその属性の状態異常も付与される。 | |||
免疫≠状態な事に注意。</ref> | |||
{| class="wikitable" | |||
|+ | |||
!1 (耐性) | |||
!2 (強い耐性) | |||
!3 (素晴らしい耐性) | |||
!4 (免疫) | |||
|- | |||
|×0.5 | |||
|×0.2 | |||
|×0.1 | |||
|×0.06 | |||
|} | |||
さらに、この軽減によって状態異常強度が40以下になった場合、付与は無効化されます。 | |||
また、'''状態異常が炎上で、付与するキャラクターの火炎属性耐性が15以上'''だった場合、状態異常強度に関わらず付与は無効化されます。 | |||
'''状態異常が出血で、付与するキャラクターの出血属性耐性が15以上'''だった場合、状態異常強度に関わらず付与は無効化されます。 | |||
=== ターン数算出・付与 === | |||
<syntaxhighlight lang="c#"> | |||
int num2 = c.EvaluateTurn(c.power); | |||
if (num2 == 0) | |||
{ | |||
return null; | |||
} | |||
c.value = num2; | |||
conditions.Add(c); | |||
... | |||
public virtual int EvaluateTurn(int p) | |||
{ | |||
return Mathf.Max(1, base.source.duration.Calc(p, 0, P2)); | |||
} | |||
</syntaxhighlight>これまでの処理で無効化されておらず、状態異常強度が1未満になっていないなら付与する状態異常のターン数を算出します。(計算式については状態異常表を参照) | |||
算出した結果1ターン未満になった場合、最低でも1ターンが保障されます。 | |||
その後、算出したターン数分の状態異常を付与します。 | |||
=== 一時的耐性の獲得 === | |||
<syntaxhighlight lang="c#"> | |||
if (CanGainConResist) | |||
{ | |||
AddResistCon(c); | |||
} | |||
... | |||
public void AddResistCon(Condition con) | |||
{ | |||
if (con.power > 0 && con.GainResistFactor > 0) | |||
{ | |||
int key = con.id; | |||
if (resistCon == null) | |||
{ | |||
resistCon = new Dictionary<int, int>(); | |||
} | |||
if (resistCon.ContainsKey(key)) | |||
{ | |||
resistCon[key] += con.power * con.GainResistFactor / 100; | |||
} | |||
else | |||
{ | |||
resistCon[key] = con.power * con.GainResistFactor / 100; | |||
} | |||
} | |||
} | |||
</syntaxhighlight>状態異常が付与されると、『』か《》付きのキャラクターは'''付与された際の強度に応じて'''一時的耐性が蓄積されます。 | |||
蓄積する一時耐性の値は以下の式で算出されます。(計算式については状態異常表を参照) | |||
獲得一時耐性値 = 状態異常強度 × (一時的耐性係数 / 100) | |||
==攻撃による状態異常付与== | ==攻撃による状態異常付与== | ||
| Line 45: | Line 197: | ||
[[Elin:解析/物理戦闘|物理攻撃]]や[[Elin:解析/魔法|魔法攻撃]]で属性ダメージを受ける際には、属性強度に基づいて状態異常の付与確率と状態異常の強度が決定されます。 | [[Elin:解析/物理戦闘|物理攻撃]]や[[Elin:解析/魔法|魔法攻撃]]で属性ダメージを受ける際には、属性強度に基づいて状態異常の付与確率と状態異常の強度が決定されます。 | ||
実際に付与される状態異常のターン数や軽減・無効化については一般的な付与と同じです。 | |||
属性強度の実際の値と計算式については、各ページを参照してください。 | 属性強度の実際の値と計算式については、各ページを参照してください。 | ||
| Line 360: | Line 512: | ||
付与される混乱の強度は'''「1 ~ 3の範囲内のランダムな値」'''で、耐性や無効化を無視します。 | 付与される混乱の強度は'''「1 ~ 3の範囲内のランダムな値」'''で、耐性や無効化を無視します。 | ||
== 状態異常表 == | |||
== | ゲーム内の状態異常は全部で81種ありますが、ここではよく参照されるであろうもののみ掲載します。 | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
!名前 | |||
!種別 | |||
!ターン数 | |||
!無効化 | |||
!軽減主能力 | |||
!軽減属性耐性 | |||
!一時的耐性係数 | |||
!備考 | |||
|- | |||
|毒 | |||
|悪性状態異常 | |||
|強度 / 4 | |||
|毒無効 | |||
|耐久 | |||
|毒属性耐性 | |||
|100 | |||
|ターン数30~: 猛毒 | |||
|- | |||
|呼吸困難 | |||
|悪性状態異常 | |||
|強度 | |||
|水中呼吸 | |||
|耐久 | |||
|なし | |||
|200 | |||
|ターン数0~9: 表記なし, ターン数10~19: 呼吸困難, ターン数20~: 窒息 | |||
|- | |||
|炎上 | |||
|悪性状態異常 | |||
|強度 / 30 | |||
|火炎属性耐性(15) | |||
|なし | |||
|なし | |||
|100 | |||
| | |||
|- | |||
|恐怖 | |||
|悪性状態異常 | |||
|強度 / 10 | |||
|恐怖無効 | |||
|意志 | |||
|幻惑属性耐性 | |||
|200 | |||
| | |||
|- | |||
|睡眠 | |||
|悪性状態異常 | |||
|強度 / 10 | |||
|睡眠無効 | |||
|意志 | |||
|神経属性耐性 | |||
|500 | |||
| | |||
|- | |||
|気絶 | |||
|悪性状態異常 | |||
|強度 / 10 | |||
|なし | |||
|感覚 | |||
|なし | |||
|600 | |||
| | |||
|- | |- | ||
|拘束 | |||
|悪性状態異常 | |||
|強度 / 20 | |||
|なし | |||
|器用 | |||
|なし | |||
|200 | |||
| | |||
|- | |- | ||
| | |麻痺 | ||
|悪性状態異常 | |||
|強度 / 20 | |||
|麻痺無効 | |||
|感覚 | |||
|神経属性耐性 | |||
|800 | |||
| | |||
|- | |- | ||
| | |混乱 | ||
|悪性状態異常 | |||
|強度 / 7 | |||
|混乱無効 | |||
|意志 | |||
|幻惑属性耐性 | |||
|200 | |||
| | |||
|- | |- | ||
| | |盲目 | ||
|悪性状態異常 | |||
|強度 / 8 | |||
|盲目無効 | |||
|感覚 | |||
|暗黒属性耐性 | |||
|100 | |||
| | |||
|- | |||
|狂気 | |||
|悪性状態異常 | |||
|強度 / 10 | |||
|なし | |||
|学習 | |||
|なし | |||
|100 | |||
|ターン数0~49: 不安定, ターン数50~89: 狂気, ターン数90~: 崩壊 | |||
|- | |||
|出血 | |||
|悪性状態異常 | |||
|強度 / 10 | |||
|魔導生命体,出血属性耐性(15) | |||
|耐久 | |||
|なし | |||
|200 | |||
|ターン数0~49: 切り傷, ターン数50~89: 出血, ターン数90~: 大出血 | |||
|- | |||
|朦朧 | |||
|悪性状態異常 | |||
|強度 / 10 | |||
|魔導生命体 | |||
|意志 | |||
|轟音属性耐性 | |||
|500 | |||
|ターン数0~49: 朦朧, ターン数50~: 混濁 | |||
|- | |||
|幻覚 | |||
|悪性状態異常 | |||
|強度 | |||
|なし | |||
|なし | |||
|なし | |||
|100 | |||
| | |||
|- | |||
|結露 | |||
|悪性状態異常 | |||
|強度 / 10 | |||
|なし | |||
|なし | |||
|冷気属性耐性 | |||
|100 | |||
|ターン数0~49: 結露, ターン数50~: 凍結 | |||
|- | |||
|狂戦士化 | |||
|悪性状態異常 | |||
|5 | |||
|なし | |||
|なし | |||
|なし | |||
|0 | |||
| | |||
|- | |||
|瘴気 | |||
|呪い | |||
|強度 / 100 + 5 | |||
|なし | |||
|なし | |||
|なし | |||
|0 | |||
| | |||
|- | |||
|重力 | |||
|呪い | |||
|強度 / 20 + 10 | |||
|なし | |||
|なし | |||
|なし | |||
|0 | |||
| | |||
|- | |||
|沈黙 | |||
|呪い | |||
|強度 / 80 + 5 | |||
|なし | |||
|意志 | |||
|なし | |||
|500 | |||
| | |||
|- | |||
|脆弱 | |||
|呪い | |||
|強度 / 50 + 10 | |||
|なし | |||
|意志 | |||
|なし | |||
|20 | |||
| | |||
|- | |- | ||
| | |災い | ||
|呪い | |||
|強度 / 50 + 10 | |||
|なし | |||
|学習 | |||
|なし | |||
|20 | |||
| | |||
|- | |- | ||
| | |破門 | ||
|呪い | |||
|強度 / 50 + 20 | |||
|なし | |||
|学習 | |||
|なし | |||
|20 | |||
| | |||
|- | |- | ||
| | |元素の傷跡 | ||
|呪い | |||
|強度 / 40 + 8 | |||
|なし | |||
|耐久 | |||
|なし | |||
|20 | |||
| | |||
|- | |- | ||
| | |ナイトメア | ||
|呪い | |||
|強度 / 60 + 6 | |||
|なし | |||
|学習 | |||
|なし | |||
|50 | |||
| | |||
|- | |- | ||
| | |妨害 | ||
|能力変化 | |||
|強度 / 20 | |||
|なし | |||
|なし | |||
|なし | |||
|100 | |||
| | |||
|} | |} | ||
<references /> | <references /> | ||
edits