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

No edit summary
Line 5: Line 5:
==攻撃能力の算出==
==攻撃能力の算出==


==格闘==
=== 格闘 ===
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
else if (IsMartial || IsMartialWeapon)
else if (IsMartial || IsMartialWeapon)
Line 96: Line 96:
最終的な貫通率は「'''基礎貫通率 + 武器の貫通率'''」です。
最終的な貫通率は「'''基礎貫通率 + 武器の貫通率'''」です。


==投擲==
=== 投擲 ===
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
if (isThrow)
if (isThrow)
Line 138: Line 138:
最終的な命中力は「'''基礎命中力 +''' '''武器の命中修正 + 防具の命中修正合計」'''です。
最終的な命中力は「'''基礎命中力 +''' '''武器の命中修正 + 防具の命中修正合計」'''です。


==近接&遠隔武器==
=== 近接&遠隔武器 ===
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
else
else
Line 220: Line 220:
命中力に「'''弾薬の命中修正'''」を加算します。
命中力に「'''弾薬の命中修正'''」を加算します。


==遠隔武器の距離修正・連射数修正==
=== 遠隔武器の距離修正 ===
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
distMod = 100;
distMod = 100;
Line 337: Line 337:
|112
|112
|}
|}
=== 遠隔武器の連射数修正 ===
<syntaxhighlight lang="c#" line="1">
GameSetting.EffectData effectData = EClass.setting.effect.guns.TryGetValue(weapon.id) ?? EClass.setting.effect.guns[flag2 ? "cane" : (flag ? "gun" : "bow")];
bool hasHit = false;
int numFire = effectData.num;
int numFireWithoutDamageLoss = numFire;
...
if (IsRanged && count >= numFireWithoutDamageLoss)
{
num = num * 100 / (100 + (count - numFireWithoutDamageLoss + 1) * 30);
}
</syntaxhighlight>
速射modや連続射撃により遠隔武器に追加の射撃が発生している場合、追加の射撃には回数に応じたダメージ減衰が発生します。
ここでの「numFireWithoutDamageLoss」とは遠隔武器の元々の発射数で、「count」は現在何発目の射撃かの変数です。「count」は0スタートで、1発目の射撃では0が代入されています。
追加の射撃のダメージ倍率は以下の式で算出されます。
ダメージ倍率 = 1 / 1 + 0.3 × (現在の発射回数 - 遠隔武器の元々の発射数)
※ここでの「現在の発射回数」とはコード上での「count + 1」です


==物理攻撃エンチャント==
==物理攻撃エンチャント==
250

edits