250
edits
(→格闘: 計算式修正、および用語の表記ゆれをなくしました) |
(敵軽減率について小数点以下切り捨てなことを明記、物理攻撃の計算式諸々についての記述の書き直し。) |
||
| Line 50: | Line 50: | ||
==敵のレベルに応じたダメージ軽減== | ==敵のレベルに応じたダメージ軽減== | ||
{{バージョン|23. | {{バージョン|23.79}} | ||
レベル50を超えた敵が受けるダメージ軽減量は以下の通りです: | |||
まず、レベル50以下の敵の軽減率は0% | まず、レベル50以下の敵の軽減率は0%、レベル1074以上の敵は軽減率80%となります。 | ||
if (!this.IsPCFaction && this.LV > 50) | if (!this.IsPCFaction && this.LV > 50) | ||
{ | { | ||
| Line 66: | Line 66: | ||
与えるダメージに、* (100 - [ 2.5 * √(敵のレベル - 50) か 80 かのうち小さいほう ]<ref>正確には小さい方を四捨五入したもの</ref>) / 100が掛けられます。 | 与えるダメージに、* (100 - [ 2.5 * √(敵のレベル - 50) か 80 かのうち小さいほう ]<ref>正確には小さい方を四捨五入したもの</ref>) / 100が掛けられます。 | ||
つまり、Lv1024以上の敵に対してはダメージが80% | つまり、Lv1024以上の敵に対してはダメージが80%減少し、Lv51~Lv1073の敵に対しては[sqrt(敵Lv-50) * 2.5]%減少します。 | ||
{| class="wikitable" | {| class="wikitable" | ||
|+レベル毎のダメージ軽減 | |+レベル毎のダメージ軽減 | ||
| Line 73: | Line 73: | ||
|- | |- | ||
|51 | |51 | ||
|2 | |2 | ||
|- | |- | ||
|100 | |100 | ||
|17 | |17 | ||
|- | |- | ||
|150 | |150 | ||
|25 | |25 | ||
|- | |- | ||
|200 | |200 | ||
|30 | |30 | ||
|- | |- | ||
|250 | |250 | ||
| | |35 | ||
|- | |- | ||
|300 | |300 | ||
|39 | |39 | ||
|- | |- | ||
|350 | |350 | ||
|43 | |43 | ||
|- | |- | ||
|400 | |400 | ||
|46 | |46 | ||
|- | |- | ||
|450 | |450 | ||
|50 | |50 | ||
|- | |- | ||
|500 | |500 | ||
|53 | |53 | ||
|- | |- | ||
|550 | |550 | ||
|55 | |55 | ||
|- | |- | ||
|600 | |600 | ||
|58 | |58 | ||
|- | |- | ||
|650 | |650 | ||
|61 | |61 | ||
|- | |- | ||
|700 | |700 | ||
|63 | |63 | ||
|- | |- | ||
|750 | |750 | ||
|66 | |66 | ||
|- | |- | ||
|800 | |800 | ||
|68 | |68 | ||
|- | |- | ||
|850 | |850 | ||
|70 | |70 | ||
|- | |- | ||
|900 | |900 | ||
|72 | |72 | ||
|- | |- | ||
|950 | |950 | ||
| Line 130: | Line 130: | ||
|- | |- | ||
|1000 | |1000 | ||
|77 | |77 | ||
|- | |||
|1050 | |||
|79 | |||
|- | |||
|1074 | |||
|80 | |||
|- | |||
|1100 | |||
|80 | |||
|} | |} | ||
| Line 137: | Line 146: | ||
{{バージョン|23.46}} | {{バージョン|23.46}} | ||
[[File:Function curve as of EA23.46.png|thumb|upright=3.0|バージョン EA23.46 のCURVE 関数の入力(オレンジ色)と出力(藍)です。Output = Curve(Input, 50, 25, 75) ]] | [[File:Function curve as of EA23.46.png|thumb|upright=3.0|バージョン EA23.46 のCURVE 関数の入力(オレンジ色)と出力(藍)です。Output = Curve(Input, 50, 25, 75) ]] | ||
「CURVE」とはElinにてどのようににスキル値の有効性を段階的に抑制する処理です。 | |||
CURVE( input, start, step, rate) | CURVE( input, start, step, rate) | ||
if input <= start | if input <= start | ||
| Line 151: | Line 160: | ||
} | } | ||
return input | return input | ||
まず、システムは攻撃者の「命中力」とターゲットの「回避力」を評価します。 | |||
命中力の値は、使用する武器の種類(投擲、遠距離、近接、格闘)とスタイルによって異なる計算式で算出されます | |||
{| class="wikitable wikitable」" | {| class="wikitable wikitable」" | ||
| Line 164: | Line 173: | ||
|- | |- | ||
|格闘 (盾なし) | |格闘 (盾なし) | ||
|CURVE([攻撃者の器用]/3 + [ | |CURVE([攻撃者の器用]/3 + [攻撃者の武器の主能力]/3 + [攻撃者の武器スキル], 50, 25, 75) + 50 | ||
|- | |- | ||
|格闘 (盾あり) | |格闘 (盾あり) | ||
|CURVE([攻撃者の器用]/3 + [ | |CURVE([攻撃者の器用]/3 + [攻撃者の武器の主能力]/3 + [攻撃者の武器スキル], 50, 25, 75) + 50 に0.75をかけたもの | ||
|- | |- | ||
|ワンド | |ワンド | ||
|CURVE([攻撃者の意志]/4 + [攻撃者の武器の主能力]/3 + | |CURVE([攻撃者の意志]/4 + [攻撃者の武器の主能力]/3 + [攻撃者の武器スキル], 50, 25, 75) + 100 | ||
|- | |- | ||
|その他すべての武器 | |その他すべての武器 | ||
|CURVE([ | |CURVE([攻撃者の器用or意志]/4 + [攻撃者の武器の主能力]/3 + [攻撃者の武器スキル], 50, 25, 75) + 50 | ||
|} | |} | ||
上記の式で算出した値に装備と武器による命中修正が足し算され、その後遠距離武器には距離による修正が適用されたものが「命中力」となります。 | |||
「回避力」はこちらの式で計算されます。:CURVE ([対象の感覚] / 3 + [対象の回避スキル], 50, 10, 75) + [対象のDV] + 25 | |||
命中力・回避力に影響を与える以下の要素は、複合して作用しながら次の表の上から順で適用されます。<ref>プログラムでは、X=X+1のように、同じ文字が一つの式に複数回登場して右辺にあるものが調整前の数字、左辺にあるものが調整後の数字になる記法があります。</ref> | |||
{| class="wikitable" | {| class="wikitable" | ||
| Line 189: | Line 199: | ||
|- | |- | ||
|攻撃者が災い状態 | |攻撃者が災い状態 | ||
| | |命中力 = 命中力 * 0.75 | ||
|- | |- | ||
|攻撃者が高所にいる | |攻撃者が高所にいる | ||
| | |命中力 = 命中力 * 1.2 | ||
|- | |- | ||
|攻撃者が乗馬している | |攻撃者が乗馬している | ||
| | |命中力 = 命中力 * 100 / (100 + 500 / ('''5''' or '''10 + [攻撃者の乗馬スキル]''' の高い方)) (同じく補正値を掛け算) | ||
|- | |- | ||
|攻撃者がペットを寄生させている | |攻撃者がペットを寄生させている | ||
| | |命中力 = 命中力 * 100 / (100 + 1000 /('''5''' or '''10 + [攻撃者の共存スキル]''' の高い方)) (同じく補正値を掛け算) | ||
|- | |- | ||
|騎乗されているペットによる攻撃 | |騎乗されているペットによる攻撃 | ||
| | |命中力 = 命中力 * 100 / (100 + 1000 / ('''5''' or '''10 + [攻撃者の筋力]''' の高い方)) (同じく補正値を掛け算) | ||
|- | |- | ||
|寄生しているペットによる攻撃 | |寄生しているペットによる攻撃 | ||
| | |命中力 = 命中力 * 100 / (100 + 1000 / ('''5''' または '''10 + [攻撃者の器用]''' の高い方)) (同じく補正値を掛け算) | ||
|- | |- | ||
| 攻撃者が両手持ち | | 攻撃者が両手持ち | ||
| | |命中力 = 命中力 + 25 + sqrt([攻撃者の両手持ちスキル] * 2) | ||
|- | |- | ||
|攻撃者が二刀流 | |攻撃者が二刀流 | ||
| | |命中力 = 命中力 * 100 / (115 + 手の番号 * 15 + 手の番号 *(2000 / (20 + [攻撃者の二刀流スキル])[0-100でクランプ<ref>クランプとは値に上限と下限を適用するという意味です。この場合、確率なので0から100%に設定されています</ref>]) | ||
|- | |- | ||
| 攻撃者が盲目 | | 攻撃者が盲目 | ||
| | |命中力 = 命中力 * 0.333 (または、遠距離/投擲の場合は0.1) | ||
|- | |- | ||
|対象が盲目 | |対象が盲目 | ||
| | |回避力 = 回避力 * 0.5 | ||
|- | |- | ||
| | |対象が混乱もしくは朦朧 | ||
| | |回避力 = 回避力 * 0.5 | ||
|- | |- | ||
|対象が高所にいる | |対象が高所にいる | ||
| | |回避力 = 回避力 * 1.2 | ||
|} | |} | ||
| Line 232: | Line 242: | ||
ここまでで最終的な命中力と回避力を計算しました。以下では攻撃が命中するか、外れるか、クリティカルになるかするまで、上から順に判定します。 | |||
苛立エンチャントの効果による攻撃の場合、確定クリティカル | |||
対象が朦朧状態の場合、4分の1の確率でクリティカル | 対象が朦朧状態の場合、4分の1の確率でクリティカル | ||
対象が死亡または睡眠状態の場合、確定でクリティカル | 対象が死亡または睡眠状態の場合、確定でクリティカル | ||
[対象の見切りスキル] | [対象の見切りスキル] * 10 > 命中の場合、見切り成否判定を行う。 | ||
見切り力 = 回避 * 100 / 命中 とし、以下3つの式を上から順に処理する。<ref>見切り力が301以上であれば、見切りによる回避判定は3回行われる</ref> | |||
見切り力 > 300 かつ、 random 0 - ([対象の見切りスキル] + 250) > 100 のとき、攻撃は外れる | |||
見切り力 > 200 かつ、 random 0 - ([対象の見切りスキル] + 250) > 150 のとき、攻撃は外れる | |||
見切り力 > 150 かつ、 random 0 - ([対象の見切りスキル] + 250) > 200 のとき、攻撃は外れる | |||
[対象の完全回避] > random 0 - 99 のとき、攻撃は外れる (0から99までの値が等確率で選ばれて、それより完全回避が大きいか小さいかを判定に使う) | [対象の完全回避] > random 0 - 99 のとき、攻撃は外れる (0から99までの値が等確率で選ばれて、それより完全回避が大きいか小さいかを判定に使う) | ||
random 0 - 19 が 0 のとき、攻撃は命中 (5%で対象の回避を無視して命中する)<ref name=":0">この場合、クリティカルにはならない。</ref> | |||
random 0 - 19 が 0 のとき、攻撃は外れる (5%で攻撃者の命中を無視して外れる) | |||
命中 < 1 のとき、攻撃は外れる | 命中 < 1 のとき、攻撃は外れる | ||
回避 < 1 のとき、攻撃は命中 | 回避 < 1 のとき、攻撃は命中<ref name=":0" /> | ||
random 0 - 命中 < random 0 - (回避 * 125 (遠距離攻撃なら150) / 100) のとき、攻撃は外れる (random X-Yは等確率でXからYまでの乱数を生成する関数) | random 0 - 命中 < random 0 - (回避 * 125 (遠距離攻撃なら150) / 100) のとき、攻撃は外れる (random X-Yは等確率でXからYまでの乱数を生成する関数) | ||
random 0 - 5000 < [攻撃者の感覚]のとき、攻撃はクリティカル | random 0 - 5000 < [攻撃者の感覚] + 50 のとき、攻撃はクリティカル | ||
[ | [攻撃者のクリティカルエンチャント合計] + sqrt([攻撃者の心眼スキル]) > random 0 - 200のとき、攻撃はクリティカル | ||
攻撃者が[死の真髄]フィートを所持している場合、以下の判定を行う | 攻撃者が[死の真髄]フィートを所持している場合、以下の判定を行う | ||
HP減少率 = 100 - [攻撃者の現在HP] * 100 / [攻撃者の最大HP] | |||
HP減少率 >= 50 & (HP減少率 ^ 4 / 3) > random 0 - 100000000 のとき、攻撃はクリティカル (HPが5割以上減っている状態で、減少率に応じて最小2%~最大33%の確率でクリティカル) | |||
攻撃は命中 | 攻撃は命中 | ||
| Line 267: | Line 280: | ||
==格闘== | ==格闘== | ||
<syntaxhighlight lang="c#" line="1"> | <syntaxhighlight lang="c#" line="1"> | ||
else if ( | else if (IsMartial || IsMartialWeapon) | ||
{ | { | ||
weaponSkill = CC.elements.GetOrCreateElement(100); | |||
bool flag2 = weapon != null && weapon.Evalue(482) > 0; | |||
if (flag2) | |||
{ | |||
weaponSkill = CC.elements.GetOrCreateElement(305); | |||
} | |||
attackType = ((!CC.race.meleeStyle.IsEmpty()) ? CC.race.meleeStyle.ToEnum<AttackType>() : ((EClass.rnd(2) == 0) ? AttackType.Kick : AttackType.Punch)); | |||
dBonus = CC.DMG + CC.encLV + (int)Mathf.Sqrt(Mathf.Max(0, weaponSkill.GetParent(CC).Value / 5 + weaponSkill.Value / 4)); | |||
dNum = 2 + Mathf.Min(weaponSkill.Value / 10, 4); | |||
dDim = 5 + (int)Mathf.Sqrt(Mathf.Max(0, weaponSkill.Value / 3)); | |||
dMulti = 0.6f + (float)(weaponSkill.GetParent(CC).Value / 2 + weaponSkill.Value / 2 + CC.Evalue(flag2 ? 304 : 132) / 2) / 50f; | |||
dMulti += 0.05f * (float)CC.Evalue(1400); | |||
toHitBase = EClass.curve(CC.DEX / 3 + weaponSkill.GetParent(CC).Value / 3 + weaponSkill.Value, 50, 25) + 50; | |||
toHitFix = CC.HIT; | |||
if (attackStyle == AttackStyle.Shield) | |||
{ | |||
toHitBase = toHitBase * 75 / 100; | |||
} | |||
penetration = Mathf.Clamp(weaponSkill.Value / 10 + 5, 5, 20) + CC.Evalue(92); | |||
if (IsMartialWeapon) | |||
{ | |||
dBonus += weapon.DMG; | |||
dNum += weapon.source.offense[0]; | |||
dDim = Mathf.Max(dDim / 2 + weapon.c_diceDim, 1); | |||
toHitFix += weapon.HIT; | |||
penetration += weapon.Penetration; | |||
if (!weapon.source.attackType.IsEmpty()) | |||
{ | |||
attackType = weapon.source.attackType.ToEnum<AttackType>(); | |||
} | |||
} | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
キャラクターは格闘スキルを使用して格闘攻撃を繰り出します。通常はパンチないしキックですが、武器の近接戦闘スタイルやキャラクターの特性に基づいて攻撃エフェクトは変わります。 | |||
武器に'''理力武器'''のエンチャントが付いている場合、格闘スキルの代わりに'''魔道具'''スキルを、戦術スキルの代わりに'''詠唱'''スキルを使用します。 | |||
素手及び通常の格闘武器の場合: | |||
ダメージの基礎ダイス数は「'''2 + (格闘 / 10)'''」で、最大で6です。 | |||
ダメージの基礎ダイス面は「'''5 + √(格闘 / 3)'''」です。 | |||
基礎ダメージ修正は「'''√((筋力 / 5) + (格闘 / 4)) + 防具のダメージ修正合計 + キャラ固有のダメージ修正'''<ref name=":1">エーテル病の殺戮への飢えが該当する。</ref>」です。 | |||
ダメージ倍率は「'''0.6 + ((筋力 / 2 + 格闘 / 2 + 戦術 / 2) / 50.0)'''」です'''。''' | |||
基礎貫通率は「'''(格闘 / 10) + 5'''」で、最低5%、最高で20%です。<ref name=":2">固有の貫通率を持っているキャラクターであればその値も加算される。</ref> | |||
基礎命中力は「'''(器用 / 3 + 筋力 / 3 + 格闘)'''」を、スタート50、ステップ25、レート75%のCURVE関数で計算した後、50を足したものです。 | |||
理力武器のエンチャントが付いた格闘武器の場合: | |||
ダメージの基礎ダイス数は「'''2 + (魔道具 / 10)'''」で、最大で6です。 | |||
ダメージの基礎ダイス面は「'''5 + √(魔道具 / 3)'''」です。 | |||
基礎ダメージ修正は「'''√((魔力 / 5) + (魔道具 / 4)) + 防具のダメージ修正合計 + キャラ固有のダメージ修正<ref name=":1" />'''」です。 | |||
ダメージ倍率は「'''0.6 + ((魔力 / 2 + 魔道具 / 2 + 詠唱 / 2) / 50.0)'''」です'''。''' | |||
基礎貫通率は「'''(魔道具 / 10) + 5'''」で、最低5%、最高で20%です。<ref name=":2" /> | |||
基礎命中力は「'''(器用'''<ref>格闘以外の理力武器と違い、意志を使用しない</ref> '''/ 3) + (魔力 / 3) + 魔道具'''」を、スタート50、ステップ25、レート75%のCURVE関数で計算した後、'''50'''を足したものです。 | |||
プレイヤーが武器の知識フィートを持っている場合、ダメージ倍率に『0.05×(''武器の知識フィートのランク)』だけ加算されます。''<small>(事実上、+0.05または+0.10)</small> | |||
プレイヤーが盾を装備している場合、基礎命中力は0.75倍に修正されます。 | |||
さらに、格闘武器を装備している場合は以下の修正を受けます。 | |||
最終的なダイス数は「'''基礎ダイス数 + 武器の基礎ダイス数'''」です。 | |||
最終的なダイス面は「('''基礎ダイス面 / 2) + 武器の基礎ダイス数'''」です。 | |||
最終的なダメージ修正は「'''基礎ダメージ修正 + 武器のダメージ修正'''」です。 | |||
最終的な命中力は「'''基礎命中力 + 武器の命中修正'''」です。 | |||
最終的な貫通率は「'''基礎貫通率 + 武器の貫通率'''」です。 | |||
==投擲== | ==投擲== | ||
<syntaxhighlight lang="c#" line="1"> | <syntaxhighlight lang="c#" line="1"> | ||
if ( | if (isThrow) | ||
{ | { | ||
bool flag = weapon.HasTag(CTAG.throwWeapon) || weapon.HasTag(CTAG.throwWeaponEnemy); | |||
int num2 = (int)Mathf.Clamp(Mathf.Sqrt(weapon.SelfWeight + weapon.ChildrenWeight) * 3f + 25f + (float)(flag ? 75 : 0), 10f, 400f + Mathf.Sqrt(CC.STR) * 50f); | |||
int num3 = Mathf.Clamp(weapon.material.hardness, flag ? 40 : 20, 200); | |||
weaponSkill = CC.elements.GetOrCreateElement(108); | |||
attackType = AttackType.Blunt; | |||
dBonus = CC.DMG + (CC.IsPCParty ? 3 : 7); | |||
dNum = 2; | |||
dDim = (((!CC.IsPCParty) ? CC.LV : 0) + CC.STR + CC.Evalue(108)) * num2 * num3 / 10000 / 2; | |||
dMulti = 1f; | |||
toHitBase = EClass.curve(CC.DEX / 4 + CC.STR / 2 + weaponSkill.Value, 50, 25) + (CC.IsPCFaction ? 75 : 250); | |||
toHitFix = CC.HIT + weapon.HIT; | |||
penetration = 25; | |||
} | } | ||
</syntaxhighlight>プレイヤーの投げたアイテムは投擲武器であってもそうでなくても投擲スキルを参照します。 | </syntaxhighlight>プレイヤーの投げたアイテムは投擲武器であってもそうでなくても投擲スキルを参照します。 | ||
| Line 347: | Line 390: | ||
重量値は 25 + '''投擲武器限定75<ref>投擲武器でないときは0</ref>''' + 3*'''√ [アイテムの重量]''' ですが、下限10、上限400+ 50*√(筋力)があります。 | 重量値は 25 + '''投擲武器限定75<ref>投擲武器でないときは0</ref>''' + 3*'''√ [アイテムの重量]''' ですが、下限10、上限400+ 50*√(筋力)があります。 | ||
ここでいうアイテムの重量はゲーム中の〇.〇sに1000をかけたものです。 | |||
武器の材質値は'''素材の硬度'''です。上限は200で、これはダークマターの硬度と等しく、下限は'''投擲武器を投げている場合'''で'''40'''、それ以外では'''20'''として設定されています。 | |||
ダイスの数は常に''' | ダイスの数は常に'''「2」'''です。 | ||
ダイスの面は「'''('''(プレイヤーパーティー外のキャラのみLv) + '''筋力''' + '''投擲''' ) x '''重量値''' x '''武器の材質値 / 10000 / 2」'''です。 | |||
ダメージボーナスは「(プレイヤーパーティー内のキャラの場合''':3'''、それ以外の場合:7) '''+''' '''武器のダメージ修正 + 防具のダメージ修正合計 + キャラ固有のダメージ修正<ref name=":1" />'''」です。 | |||
ダメージ倍率は常に「'''1'''」です。 | |||
貫通力は常に'''25%'''です。 | |||
基礎命中力は「'''器用 / 4 +''' '''筋力 / 2 +''' '''投擲'''」を、スタート50、ステップ25、レート75%のCURVE関数で計算した後、プレイヤーキャラクターの場合''':75'''、それ以外の場合:'''250''' を足したもので、 | |||
最終的な命中力は「'''基礎命中力 +''' '''武器の命中修正 + 防具の命中修正合計」'''です。 | |||
==近接&遠隔武器 == | ==近接&遠隔武器 == | ||
| Line 369: | Line 413: | ||
else | else | ||
{ | { | ||
if (IsRanged) | |||
{ | |||
weaponSkill = CC.elements.GetOrCreateElement(toolRange.WeaponSkill); | |||
} | |||
else | |||
{ | |||
weaponSkill = CC.elements.GetOrCreateElement(weapon.category.skill); | |||
} | |||
if (!weapon.source.attackType.IsEmpty()) | |||
{ | |||
attackType = weapon.source.attackType.ToEnum<AttackType>(); | |||
} | |||
bool flag3 = IsCane || weapon.Evalue(482) > 0; | |||
if (flag3) | |||
{ | |||
weaponSkill = CC.elements.GetOrCreateElement(305); | |||
} | |||
dBonus = CC.DMG + CC.encLV + weapon.DMG; | |||
dNum = weapon.source.offense[0]; | |||
dDim = weapon.c_diceDim; | |||
dMulti = 0.6f + (float)(weaponSkill.GetParent(CC).Value + weaponSkill.Value / 2 + CC.Evalue(flag3 ? 304 : (IsRanged ? 133 : 132))) / 50f; | |||
dMulti += 0.05f * (float)CC.Evalue(IsRanged ? 1404 : 1400); | |||
toHitBase = EClass.curve((IsCane ? CC.WIL : CC.DEX) / 4 + weaponSkill.GetParent(CC).Value / 3 + weaponSkill.Value, 50, 25) + 50; | |||
toHitFix = CC.HIT + weapon.HIT; | |||
penetration = weapon.Penetration + CC.Evalue(92); | |||
if (IsCane) | |||
{ | |||
toHitBase += 50; | |||
} | |||
} | } | ||
if ( | if (ammo != null && !(ammo.trait is TraitAmmoTalisman)) | ||
{ | { | ||
dNumAmmo = ((ammo.source.offense.Length != 0) ? ammo.source.offense[0] : 0); | |||
dDimAmmo = ammo.c_diceDim; | |||
dBonusAmmo = ammo.DMG + ammo.encLV; | |||
if (dNumAmmo < 1) | |||
{ | |||
dNumAmmo = 1; | |||
} | |||
if (dDimAmmo < 1) | |||
{ | |||
dDimAmmo = 1; | |||
} | |||
toHitFix += ammo.HIT; | |||
} | } | ||
else | else | ||
{ | { | ||
dNumAmmo = 0; | |||
dDimAmmo = 0; | |||
} | } | ||
</syntaxhighlight>プレイヤーは、戦術スキルを使用して近接武器を振るうか、または射撃スキルを使用して遠距離武器を撃ちます。 | </syntaxhighlight>プレイヤーは、戦術スキルを使用して近接武器を振るうか、または射撃スキルを使用して遠距離武器を撃ちます。 | ||
武器が'''ワンド'''、または'''理力武器'''のエンチャントが付いている場合、戦術スキルまたは射撃スキルの代わりに'''詠唱'''スキルを、武器スキル(長剣、短剣、斧など)の代わりに'''魔道具''' | 武器が'''ワンド'''、または'''理力武器'''のエンチャントが付いている場合、戦術スキルまたは射撃スキルの代わりに'''詠唱'''スキルを、武器スキル(長剣、短剣、斧など)の代わりに'''魔道具'''スキルを使用します。 | ||
ダメージのダイス数及びダイス面は武器に表記されているものを使用します。 | |||
基礎ダメージ修正は「'''攻撃中の武器のダメージ修正 + 防具のダメージ修正合計 + キャラ固有のダメージ修正<ref name=":1" />'''」です。 | |||
ダメージ倍率は「'''0.6 + (武器スキルに対応する主能力 + 武器スキル / 2 + ('''近接武器は'''戦術'''、遠距離武器は'''射撃'''、ワンドまたは理力武器の場合'''魔道具)) / 50.0)'''」です'''。''' | |||
プレイヤーが武器の知識フィートを持っている場合、ダメージ倍率に『0.05×(''武器の知識フィートのランク)』だけ加算されます。''<small>(事実上、+0.05または+0.10)</small> | |||
貫通率は武器に表記されているものを使用します。<ref name=":2" /> | |||
基礎命中力は「'''(器用'''、ワンドか理力武器なら'''意志) / 4 + 武器スキルに対応する主能力 / 3 + 武器スキル''' 」を、スタート50、ステップ25、レート75%のCURVE関数で計算した後、'''50'''を足したものです。 | |||
命中力は「'''基礎命中力 +''' '''攻撃中の武器の命中修正 + 防具の命中修正合計 +''' (ワンドのみ:'''50'''、それ以外は'''0''')'''」'''です。 | |||
さらに、弾薬を消費して攻撃した場合: | |||
ダメージ修正に「'''弾薬のダメージダイスを振った結果 + 弾薬のダメージ修正'''」を加算します。 | |||
命中力に「'''弾薬の命中修正'''」を加算します。 | |||
==遠隔武器の命中率&ダメージと距離== | ==遠隔武器の命中率&ダメージと距離== | ||
| Line 445: | Line 495: | ||
… | … | ||
if (!isThrow) | if (!isThrow) | ||
{ | |||
if (!IsRanged) | |||
{ | |||
attackStyle = CC.body.GetAttackStyle(); | |||
} | |||
else if (TP != null) | |||
{ | |||
int num = CC.pos.Distance(TP); | |||
distMod = Mathf.Max(115 - 10 * Mathf.Abs(num - toolRange.BestDist) * 100 / (100 + weapon.Evalue(605) * 10), 80); | |||
} | |||
} | |||
… | … | ||
dMulti = dMulti * (float)distMod / 100f; | |||
toHit = toHitBase + toHitFix; | |||
toHit = toHit * distMod / 100; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
遠隔武器には、適正の攻撃距離があり、それによって命中力とダメージ倍率が増減します。 | |||
Evalue(605)はmod_precisionであり、遠隔武器の改造道具の精密射撃レベルにあたります。 | Evalue(605)はmod_precisionであり、遠隔武器の改造道具の精密射撃レベルにあたります。 | ||
適正攻撃距離から離れているほど、ペナルティも増えます。 | |||
精密射撃の改造道具のない場合、0(適正攻撃距離)の時は命中力、ダメージ共に115%になります、±1は105%、±2は95%、±3は85%、それ以降は80%になります。 | |||
精密射撃MODは更に攻撃距離の影響を減少します。例えば精密射撃MODレベル10の場合、±1は110%、±2は105%…になります。 | |||
==魔法:魔法のパワー== | ==魔法:魔法のパワー== | ||
edits