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

エネルギー反射を追加。
m (物理攻撃力計算式がlong化したのでコード部分を修正。)
(エネルギー反射を追加。)
Line 61: Line 61:
  ↓
  ↓
  FOR 0 TO 連射数
  FOR 0 TO 連射数
     FOR 0 TO 追尾エンチャ回数
    
         命中判定
    エネルギー反射判定
       
    ↓
         IF 命中判定に成功
    IF エネルギー反射に成功
             攻撃能力の算出
         エネルギー反射処理
   
    IF エネルギーでない OR エネルギー反射に失敗
         FOR 0 TO 追尾エンチャ回数
             命中判定
             ↓
             ↓
             補正前ダメージ算出
             IF 命中判定に成功
                攻撃能力の算出
                ↓
                補正前ダメージ算出
                ↓
                属性追加ダメージエンチャ処理
                ↓
                発動エンチャ処理
                ↓
                武器のノックバック処理
                ↓
                EXIT FOR
             ↓
             ↓
            属性追加ダメージエンチャ処理
            ↓
            発動エンチャ処理
            ↓
            武器のノックバック処理
            ↓
            EXIT FOR
         ↓
         ↓
         発動エンチャント
         発動エンチャント
Line 1,083: Line 1,091:


詳細は[[Elin:解析/物理戦闘#パリィ判定|「パリィ」の節]]を参照してください。
詳細は[[Elin:解析/物理戦闘#パリィ判定|「パリィ」の節]]を参照してください。
=== エネルギー反射 ===
<syntaxhighlight lang="c#">
if (weapon.trait is TraitToolRangeGunEnergy && Act.TC != null && Act.TC.isChara && Act.TC.HasElement(383))
{
if (weapon.id == "gun_laser")
{
num5 = 50;
}
num5 += Mathf.Max(25 * Act.TC.PER / Mathf.Max(1, Act.CC.PER), 50);
if (Act.CC.IsPowerful)
{
num5 /= 2;
}
}
if (num5 > EClass.rnd(100))
{
Card tC = Act.TC;
Chara cC = Act.CC;
Point point = Act.TP.Copy();
List<Chara> list = Act.TC.pos.ListCharasInRadius(Act.TC.Chara, Act.TC.GetSightRadius(), (Chara c) => c.IsHostile(Act.TC.Chara));
Chara chara = ((list.Count > 0) ? list.RandomItem() : Act.CC?.Chara);
Act.TC.Say((Act.TC.isChara && Act.TC.Chara.IsHostile()) ? "attack_reflect_enemy" : "attack_reflect");
Act.TC.PlaySound("attack_gun_laser_parry");
AttackProcess.Current.PlayRangedAnime(numFire, 0.1f);
AttackProcess.Current.CC = Act.TC?.Chara;
AttackProcess.Current.TC = chara;
AttackProcess.Current.TP.Set(chara.pos);
AttackProcess.Current.posRangedAnime = chara.pos;
AttackProcess.Current.Perform(j, hasHit, chara.IsPCFactionOrMinion ? 0.5f : 2.5f);
Act.TC = tC;
Act.CC = cC;
Act.TP.Set(point);
}
</syntaxhighlight>攻撃対象がエネルギー反射エンチャントを持ち、エネルギー銃の遠隔武器<ref>レーザーガン、レールガンが該当。</ref>による攻撃の場合、
確率で攻撃対象の視界内に存在する攻撃対象にとっての敵を一時的に攻撃対象として移し替えます。
反射確率は以下の式で算出されます。
エネルギー反射確率(%) = MAX(25 × (攻撃対象の感覚 / MAX(攻撃者の感覚, 1)), 50) + (0、レーザーガンによる攻撃の場合50)
'''攻撃対象の感覚が攻撃者の感覚の2倍以上の時、'''反射確率は最大の'''「50」'''%となります。
レーザーガンによる攻撃であれば、反射確率にさらに50%が加算されるため、「100」%になります。
'''攻撃者が『』や《》付きのキャラクターの場合'''、反射確率は半分になります。


== パリィ ==
== パリィ ==
250

edits