Skip to content
 

FRAXY プレイヤー弾と敵弾の計算

ダメージ計算式と敵弾のパラメータです。
うん、全部英訳するような気力は無かったんだ、すまない。
・敵弾 vs プレイヤー

1フレーム中に接触した敵弾全ての値を合計して計算されます。
この計算方法の都合上、1フレーム中に同時に複数の弾に当たると別フレームに分けて当たった場合よりもダメージが大きくなります。
ヒート値やEMPも合計した値が単純に加算されます。
プレイヤー防御力はプレイヤータイプ依存の固定値で、ヒート値によって低下します。
単純に、ヒート値が0%なら防御力100%、完全にオーバーヒートした状態だと防御力0%になります。
最小ダメージ値はプレイヤータイプ依存の固定値で、ダメージを受ける場合の最低保証値です。

プレイヤーが受けるダメージは以下の計算式が使用されます。

合計したダメージ:TDam
プレイヤー防御力:PDef
最小ダメージ値:MinDam
ヒート値補正:PHeat (0~100%)
1.
2.
3.
4.
Damage = (TDam - (PDef * PHeat))
if Damage < MinDam {
    Damage = MinDam
}
例えば、全快の Standard がダメージ180とヒート値200を受けた場合は次のようになります。
Standard: PDef=70, MinDam=10, HeatMax=10000
    180 - (70 * ((10000-200)/10000))
    180 - (70 * 0.98)
    180 - (68)
    Damage = 112
同じダメージを BulletHell が受けると次のようになります。
BulletHell: PDef=200, MinDam=15, HeatMax=8000
    180 - (200 * ((8000-200)/8000))
    180 - (200 * 0.975)
    180 - (195)
    Damage = 15 (MinDam)
バレットヘルは防御値が高いため、貫通系の低威力なものは少しの間ならほぼ無効化します。
また全快ならバルカン1発、ニードルガン2発まで耐える事ができます。
バレット以上の弾は即死です。

この計算で使われるプレイヤーの値は次のように設定されています。
Type: PDef, MinDam, HeatMax, CoolDown
    Standard: 7010100000.3%
    Attacker: 901080000.3%
    Tanker: 12010140000.3%
    Quicker: 01050000.3%
    BulletHell: 2001580000.3%
    Deadlocker: 7010100000.3%
敵弾のダメージなどは次のような値に設定されています。
Type : Damage, Heat, EMP
    Vulcan: 7002500
    Bullet: 12004000
    Laser: 1802000 // (Attenuation by distance, threshold 60%, linear)
    PowerBall: 250010000
    HomingLaser: 2001600
    Booster: 2303500
    PlasmaRing: 1257016
    Burner: 606500
    Blade: 90~28803200 // (Damage multiply by moved distance, BaseDam*(MoveDist/2.0))
    SlowRay: 2601500
    Explosion: 500020000 // (RemoteBlast, Grenade etc) (Attenuation by distance, threshold 0%, cosine)
    Needle: 4401000
    Ripple: 48000
    Egg: 450450250
    Missile: 10001000 // (Direct damage, adds Explosion damage)
    ReflectRay: 2801800
    IonRing: 16003000
    Wall: 1512020
    PowerLaser: 3201700 // (No attenuation)
減衰は距離がしきい値まではダメージ100%、それ以降は各方式で減衰されます。
減衰が適用されるのはダメージのみで、ヒート値やEMPには影響しません。

ブレードは基点と先端それぞれの移動量合計でダメージが増加します。
この移動量はドット単位で最大32倍です。
これもヒート値やEMPには影響しません。
・プレイヤー弾 vs 敵パーツ

1フレーム中に接触したプレイヤー弾は個別に計算されます。
そのパーツが属するコアパーツのエネルギー値によってダメージが軽減されます。
単純にコアのエネルギーが100%ならばダメージを100%軽減、0%なら全く軽減できない事になります。
ダメージ転送先が設定されている場合、計算自体は接触対象の値を使用し結果のダメージが転送されます。
ダメージ転送はEMPを転送しません。
敵パーツのエネルギーは被弾しても自然回復の低下がありません。

コアのエネルギーはプレイヤー弾の威力をそのまま減算します。
このエネルギー減算処理は接触したパーツが破壊不能であっても行われます。
パーツが受けるダメージは以下の計算式が使用されます。

プレイヤー弾の威力:PDam
コアエネルギー割合:CoreEN (0~100%)
パーツダメージ修正値:EMDamMod (n%)
1.
Damage = (PDam * CoreEN * EMDamMod)
例えば、ダメージ200を受けた場合は次のようになります。
Core: EN=1000
Parts: EMDamMod=100%
    (200 * ((1000-(1000-200))/1000* 1.0)
    (200 * (0.2* 1.0)
    Damage = 40
ダメージ100を受けた場合は次のようになります。
Core: EN=1000
Parts: EMDamMod=100%
    (100 * ((1000-(1000-100))/1000* 1.0)
    (100 * (0.1* 1.0)
    Damage = 10
・プレイヤー弾 vs 敵弾

特別な補正や計算はありません。
単純にプレイヤー弾の威力がダメージになります。

コメント

  1. Garo より:

    That's quite informative. Would it be possible to get the values for the Standard, Quicker, Attacker and Tanker; in terms of player and weapon values?

    Also, would it be possible to define a custom ship type to read from a text file or a FED?

コメントをどうぞ