250
edits
(→ダメージ計算) |
|||
| Line 376: | Line 376: | ||
==物理攻撃エンチャント== | ==物理攻撃エンチャント== | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ 武器専用エンチャントの名前(Evalue小さい順) | |+ 武器専用エンチャントの名前(Evalue小さい順) | ||
|- | |- | ||
! 内部名 !! 日本語名 !! 簡易説明 | ! 内部名 !! 日本語名 | ||
!近接 | |||
!遠隔 | |||
!投擲!! 簡易説明 | |||
|- | |- | ||
|drill | |drill | ||
|突貫 | |突貫 | ||
|○ | |||
|○ | |||
|× | |||
|当たった相手を突き抜けて後方にも当たる。 | |当たった相手を突き抜けて後方にも当たる。 | ||
|- | |- | ||
|scatter | |scatter | ||
|拡散 | |拡散 | ||
| | |○ | ||
|○ | |||
|× | |||
|減衰のある範囲攻撃 | |||
|- | |- | ||
|splash | |splash | ||
|衝撃波 | |衝撃波 | ||
|○ | |||
|× | |||
|× | |||
|最初の攻撃対象の周りにも当たる衝撃波を発する | |最初の攻撃対象の周りにも当たる衝撃波を発する | ||
|- | |- | ||
|chaser | |chaser | ||
|追尾 | |追尾 | ||
|○ | |||
|○ | |||
|× | |||
|回避された際に追撃する | |回避された際に追撃する | ||
|- | |- | ||
|flurry | |flurry | ||
|連撃 | |連撃 | ||
|○ | |||
|× | |||
|× | |||
|複数回攻撃する | |複数回攻撃する | ||
|- | |- | ||
| | |cleave | ||
|旋風 | |旋風 | ||
|○ | |||
|× | |||
|× | |||
|攻撃が最初の相手から伝播する | |攻撃が最初の相手から伝播する | ||
|- | |- | ||
|feint | |feint | ||
|牽制 | |牽制 | ||
|○ | |||
|× | |||
|× | |||
|制圧の状態異常を付与する | |制圧の状態異常を付与する | ||
|- | |- | ||
|frustration | |frustration | ||
|逆襲 | |逆襲 | ||
|○ | |||
|× | |||
|× | |||
|回避された際に確率で確定命中クリティカル攻撃をする | |回避された際に確率で確定命中クリティカル攻撃をする | ||
|} | |} | ||
=== 突貫 === | === 突貫 === | ||
<syntaxhighlight lang="c#"> | |||
int num2 = GetWeaponEnc(606, addSelfEnc: false); | |||
... | |||
List<Point> list2 = EClass._map.ListPointsInLine(Act.CC.pos, Act.TC.pos, num2 / 10 + ((num2 % 10 > EClass.rnd(10)) ? 1 : 0) + 1); | |||
... | |||
if (num2 > 0) | |||
{ | |||
foreach (Point item in list2) | |||
{ | |||
if (!item.Equals(orgPos)) | |||
{ | |||
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マス以内に存在する敵を攻撃します。突貫エンチャントと共存できず、両方存在する場合は突貫が優先されます。 | |||
拡散の効果による攻撃はダメージ減衰補正がかかり、 | |||
近接攻撃の倍率は「0.5 + 0.05 × √(拡散エンチャント強度)」か「1 + 0.01 × √(拡散エンチャント強度)」のどちらか小さい方です。 | |||
遠隔攻撃の倍率は「1.2 - 0.2 × (攻撃者と拡散の攻撃対象との距離) - (0.4、攻撃対象と同じマスにいる敵は0)」で、最小0.2倍です。 | |||
=== 衝撃波 === | === 衝撃波 === | ||
edits