User:びゃっこ/すたぶ/解析物理戦闘: Difference between revisions

Line 376: Line 376:


==物理攻撃エンチャント==
==物理攻撃エンチャント==
Attackの定義を見ています。
{| class="wikitable"
{| class="wikitable"
|+ 武器専用エンチャントの名前(Evalue小さい順)
|+ 武器専用エンチャントの名前(Evalue小さい順)
|-
|-
! 内部名 !! 日本語名 !! 簡易説明
! 内部名 !! 日本語名  
!近接
!遠隔
!投擲!! 簡易説明
|-
|-
|drill
|drill
|突貫
|突貫
|○
|○
|当たった相手を突き抜けて後方にも当たる。
|当たった相手を突き抜けて後方にも当たる。
|-
|-
|scatter
|scatter
|拡散
|拡散
|範囲攻撃、ウィンチェスタープレミアムなどにしか付いていない 
|
|○
|減衰のある範囲攻撃
|-
|-
|splash
|splash
|衝撃波
|衝撃波
|○
|最初の攻撃対象の周りにも当たる衝撃波を発する
|最初の攻撃対象の周りにも当たる衝撃波を発する
|-
|-
|chaser
|chaser
|追尾
|追尾
|○
|○
|回避された際に追撃する
|回避された際に追撃する
|-
|-
|flurry
|flurry
|連撃
|連撃
|○
|複数回攻撃する
|複数回攻撃する
|-
|-
|
|cleave
|旋風
|旋風
|○
|攻撃が最初の相手から伝播する
|攻撃が最初の相手から伝播する
|-
|-
|feint
|feint
|牽制
|牽制
|○
|制圧の状態異常を付与する
|制圧の状態異常を付与する
|-
|-
|frustration
|frustration
|逆襲
|逆襲
|○
|回避された際に確率で確定命中クリティカル攻撃をする
|回避された際に確率で確定命中クリティカル攻撃をする
|-
|neckhunt
|首狩り
|条件を満たしたら即死させる。
|}
|}
=== 突貫 ===
=== 突貫 ===
int num2 = GetWeaponEnc(606, addSelfEnc: false);
<syntaxhighlight lang="c#">
List<Point> list2 = EClass._map.ListPointsInLine(Act.CC.pos, Act.TC.pos, num2 / 10 + ((num2 % 10 > EClass.rnd(10)) ? 1 : 0) + 1);
int num2 = GetWeaponEnc(606, addSelfEnc: false);
                    if (num2 > 0)
...
                    {
List<Point> list2 = EClass._map.ListPointsInLine(Act.CC.pos, Act.TC.pos, num2 / 10 + ((num2 % 10 > EClass.rnd(10)) ? 1 : 0) + 1);
                        foreach (Point item in list2)
...
                        {
if (num2 > 0)
                            if (!item.Equals(orgPos))
{
                            {
foreach (Point item in list2)
                                Chara firstChara = item.FirstChara;
{
                                if (firstChara != null && firstChara.IsHostile(Act.CC))
if (!item.Equals(orgPos))
                                {
{
                                    AttackWithFlurry(firstChara, item, 1f, subAttack: false);
Chara firstChara = item.FirstChara;
                                }
if (firstChara != null && firstChara.IsHostile(Act.CC))
                            }
{
                        }
AttackWithFlurry(firstChara, item, 1f, subAttack: false);
                    }
}
}
}
}
</syntaxhighlight>
攻撃者の半径「突貫エンチャント強度 / 10 + 1」マス以内かつ、攻撃者と攻撃対象を結ぶ直線上に存在する敵を攻撃します。


半径に小数点以下が存在する場合、小数点以下の数値の確率で半径に+1します。


1マス内に複数のキャラクターが存在する場合、一番上のキャラクターのみ攻撃されます。


===拡散===
===拡散===
ActMelee.cs<syntaxhighlight lang="c#">
int scatter = GetWeaponEnc(607, addSelfEnc: false);
else if (scatter > 0)
{
Act.TP.ForeachNeighbor(delegate(Point p)
{
if (!p.Equals(orgPos))
{
Chara firstChara2 = p.FirstChara;
if (firstChara2 != null && firstChara2.IsHostile(Act.CC))
{
AttackWithFlurry(firstChara2, p, Mathf.Min(0.5f + 0.05f * Mathf.Sqrt(scatter), 1f + 0.01f * Mathf.Sqrt(scatter)), subAttack: true);
}
}
});
}
</syntaxhighlight>
ActRanged.cs<syntaxhighlight lang="c#">
int scatter = GetWeaponEnc(607);
...
else if (scatter > 0)
{
Act.TP.ForeachNeighbor(delegate(Point _p)
{
points.Add(_p.Copy());
});
}
...
if (scatter > 0)
{
dmgMulti = Mathf.Clamp(1.2f - 0.2f * (float)Act.CC.Dist(Act.TP) - (Act.TP.Equals(orgTP) ? 0f : 0.4f), 0.2f, 1f);
}
</syntaxhighlight>
攻撃対象の半径1マス以内に存在する敵を攻撃します。突貫エンチャントと共存できず、両方存在する場合は突貫が優先されます。
拡散の効果による攻撃はダメージ減衰補正がかかり、


int num3 = GetWeaponEnc(622, addSelfEnc: true);
近接攻撃の倍率は「0.5 + 0.05 × √(拡散エンチャント強度)」か「1 + 0.01 × √(拡散エンチャント強度)」のどちらか小さい方です。
else if (num3 > 0)
{
    List<Point> list2 = new List<Point>();
    Act.TP.ForeachNeighbor(delegate(Point p)
    {
        list2.Add(p.Copy());
    });
    list2.Shuffle();
    int num4 = 0;
    for (int i = 0; i < 9 && num3 > EClass.rnd(10 + (int)Mathf.Pow(3f, i + 2)); i++)
    {
        num4++;
    }
    foreach (Point item2 in list2)
    {
        foreach (Card item3 in item2.ListCards().Copy())
        {
            if (num4 <= 0 | | !Act.CC.IsAliveInCurrentZone)
            {
                break;
            }
            if (item3.trait.CanBeAttacked | | (item3.isChara && item3.Chara.IsHostile(Act.CC)))
            {
                AttackWithFlurry(item3, item2, 1f, subAttack: true);
                num4--;
            }
        }
    }


遠隔攻撃の倍率は「1.2 - 0.2 × (攻撃者と拡散の攻撃対象との距離) - (0.4、攻撃対象と同じマスにいる敵は0)」で、最小0.2倍です。


=== 衝撃波 ===
=== 衝撃波 ===
250

edits