Elin:解析/物理戦闘: Difference between revisions

エネルギー反射の追加の攻撃倍率が抜けていたので追加。エネルギー反射の特殊処理を一部だけ記述。(詳細を全て書ききるのは諦めました)
(古き狐の血統フィートの長剣命中補正を追加。)
(エネルギー反射の追加の攻撃倍率が抜けていたので追加。エネルギー反射の特殊処理を一部だけ記述。(詳細を全て書ききるのは諦めました))
Line 1,103: Line 1,103:


確率で攻撃対象の視界内に存在する攻撃対象にとっての敵を一時的に攻撃対象として移し替えます。
確率で攻撃対象の視界内に存在する攻撃対象にとっての敵を一時的に攻撃対象として移し替えます。
また、PC勢力に反射される場合は攻撃力を「0.5」倍に、それ以外に反射される場合は攻撃力を「2.5」倍にします。


反射確率は以下の式で算出されます。
反射確率は以下の式で算出されます。
Line 1,112: Line 1,114:
'''攻撃者が『』や《》付きのキャラクターの場合'''、反射確率は半分になります。
'''攻撃者が『』や《》付きのキャラクターの場合'''、反射確率は半分になります。


== パリィ ==
 
<span style="color:#ff4500"><big>'''レーザー反射による攻撃は非常に特殊な処理が行われる事に注意してください。'''</big></span>
 
「'''<u>攻撃者の攻撃能力・攻撃者の装備している武器・命中力・回避力を流用した上で</u>'''攻撃者と攻撃対象を変更する」処理のため、
・反射するキャラクターの回避力が低い程反射した攻撃が当たりやすい
・反射するキャラクターが海嘯なら反射が必中
・反射するキャラクターの唄魔法が有効なら唄魔法を適用し、残り回数も消費する
・発動エンチャント・属性追加ダメージは反射元の武器を参照するが、反射するキャラクターのファクションエンチャントに属性追加ダメージがある場合はそれを反射に追加する
などの現象が発生します。詳細は文章での解説が非常に困難なため割愛します。
 
==パリィ==
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
if (AllowParry && !Act.TC.IsDisabled && !Act.TC.IsRestrainedResident)
if (AllowParry && !Act.TC.IsDisabled && !Act.TC.IsRestrainedResident)
Line 1,143: Line 1,155:
</syntaxhighlight>攻撃者が影抜きエンチャントを持たない場合、攻撃1回ごとに命中判定に入る前にパリィ判定を行います。
</syntaxhighlight>攻撃者が影抜きエンチャントを持たない場合、攻撃1回ごとに命中判定に入る前にパリィ判定を行います。


=== パリィ判定 ===
===パリィ判定===
パリィ判定は以下のように行われます。
パリィ判定は以下のように行われます。
  1.パリィエンチャント強度から「パリィ基礎成功率」を求める。
  1.パリィエンチャント強度から「パリィ基礎成功率」を求める。
Line 1,163: Line 1,175:


==命中判定==
==命中判定==
===命中力の算出===
===命中力の算出 ===
基礎の命中力は以下の表の式で算出されます。
基礎の命中力は以下の表の式で算出されます。
{| class="wikitable wikitable」"
{| class="wikitable wikitable」"
Line 1,196: Line 1,208:
{| class="wikitable"
{| class="wikitable"
|+命中修正
|+命中修正
!条件
!条件  
!効果
! 効果
|-
|-
|攻撃者の慧眼のエンチャント
|攻撃者の慧眼のエンチャント
Line 1,214: Line 1,226:
|命中力 = 命中力 * 100 / (100 + 1000 / ('''5''' or '''10 + [攻撃者の共存スキル]''' の高い方))
|命中力 = 命中力 * 100 / (100 + 1000 / ('''5''' or '''10 + [攻撃者の共存スキル]''' の高い方))
|-
|-
|騎乗されているペットによる攻撃
| 騎乗されているペットによる攻撃
|命中力 = 命中力 * 100 / (100 + 1000 / ('''5''' or '''10 + [攻撃者の筋力]''' の高い方))
|命中力 = 命中力 * 100 / (100 + 1000 / ('''5''' or '''10 + [攻撃者の筋力]''' の高い方))  
|-
|-
|寄生しているペットによる攻撃
|寄生しているペットによる攻撃
Line 1,299: Line 1,311:
※Elonaと違い、武器の重量によるダメージ倍率は存在しません。
※Elonaと違い、武器の重量によるダメージ倍率は存在しません。


==== 最大ロール化 ====
====最大ロール化====
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
public class ActRush : ActMelee
public class ActRush : ActMelee
Line 1,336: Line 1,348:
クリティカルとの違いは「クリティカルの演出がない」、「心眼に経験値が入らない」ことのみです。
クリティカルとの違いは「クリティカルの演出がない」、「心眼に経験値が入らない」ことのみです。


==== 行動による攻撃倍率 ====
====行動による攻撃倍率 ====
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
public class ActRush : ActMelee
public class ActRush : ActMelee
Line 1,359: Line 1,371:
public override float BaseDmgMTP => 1f + bonus;
public override float BaseDmgMTP => 1f + bonus;
}
}
...
public class ActMeleeParry : ActMelee
public class ActMeleeParry : ActMelee
{
{
public override float BaseDmgMTP => 1.5f;
public override float BaseDmgMTP => 1.5f;
}
}
</syntaxhighlight>突進・斬撃無双・カウンター・パリィから発生した近接攻撃はそれぞれ追加の攻撃倍率を持ち、それを攻撃力に乗算します。
...
if (weapon.trait is TraitToolRangeGunEnergy && Act.TC != null && Act.TC.isChara && Act.TC.HasElement(383))
{
    AttackProcess.Current.Perform(j, hasHit, chara.IsPCFactionOrMinion ? 0.5f : 2.5f);
 
</syntaxhighlight>突進・斬撃無双・カウンター・パリィ・レーザー反射から発生した攻撃はそれぞれ追加の攻撃倍率を持ち、それを攻撃力に乗算します。


攻撃力は以下のようになります。
攻撃力は以下のようになります。
  物理攻撃力 = 物理攻撃力 × 追加の攻撃倍率
  物理攻撃力 = 物理攻撃力 × 追加の攻撃倍率
斬撃無双の攻撃倍率は'''「0.2」'''倍、カウンターの攻撃倍率は'''「1」'''<ref>変動するような仕組みは用意されているものの、bonusが初期値以外の値を取らないため現状は1倍で固定。</ref>倍、パリィの攻撃倍率は'''「1.5」'''倍です。
斬撃無双の攻撃倍率は'''「0.2」'''倍、カウンターの攻撃倍率は'''「1」'''<ref>変動するような仕組みは用意されているものの、bonusが初期値以外の値を取らないため現状は1倍で固定。</ref>倍、パリィの攻撃倍率は'''「1.5」'''倍、PC勢力へのレーザー反射は'''「0.5」'''倍、PC勢力以外へのレーザー反射は'''「2.5」'''倍です。


突進の攻撃倍率は以下の式で算出されます。
突進の攻撃倍率は以下の式で算出されます。
  突進攻撃倍率 = (1 + 攻撃対象との距離 × 0.1) × (1 + [[Elin:解析/共通処理|CURVE]](突撃者エンチャント強度, 50, 25, 65) × 0.01)
  突進攻撃倍率 = (1 + 攻撃対象との距離 × 0.1) × (1 + [[Elin:解析/共通処理|CURVE]](突撃者エンチャント強度, 50, 25, 65) × 0.01)


==== 物理攻撃力の上限 ====
==== 物理攻撃力の上限====
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
long num = Dice.Roll(dNum, dDim, dBonus, CC);
long num = Dice.Roll(dNum, dDim, dBonus, CC);
...
...
num = Mathf.Clamp(num, 0, 9999999);
num = (long)(dMulti * (float)num * dmgMulti);
num = (long)(dMulti * (float)num * dmgMulti);
return (long)Mathf.Clamp(num, 0, 9999999);
return (long)Mathf.Clamp(num, 0f, 9999999);
</syntaxhighlight>上記までの物理攻撃力の算出の際、「9999999」を超えた場合は'''「9999999」'''に補正されます。
</syntaxhighlight>上記までの物理攻撃力の算出の際、「9999999」を超えた場合は'''「9999999」'''に補正されます。


後述する連射数修正と種族特攻エンチャントは、この上限の適用後に計算されます。
後述する連射数修正と種族特攻エンチャントは、この上限の適用後に計算されます。


==== 連射数修正 ====
====連射数修正====
遠隔武器の連射数によるダメージ減衰は、物理攻撃力の上限の補正後に計算されます。
遠隔武器の連射数によるダメージ減衰は、物理攻撃力の上限の補正後に計算されます。


Line 1,433: Line 1,450:
  防御割合 = 1 / (1 + 0.01 × (PV + 軽装or重装スキル + 器用 / 10))
  防御割合 = 1 / (1 + 0.01 × (PV + 軽装or重装スキル + 器用 / 10))


===属性強度・属性変換率===
=== 属性強度・属性変換率===
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
if (weapon != null)
if (weapon != null)
Line 1,500: Line 1,517:
ワンドの属性強度は'''混沌属性は「30」、幻惑と神経属性は「50」、それ以外は「100」'''で固定です。
ワンドの属性強度は'''混沌属性は「30」、幻惑と神経属性は「50」、それ以外は「100」'''で固定です。


====属性変換率====
====属性変換率 ====
属性変換率とは、攻撃対象の防御力を無視する割合です。
属性変換率とは、攻撃対象の防御力を無視する割合です。


250

edits