chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

体力計算について

この動画
D
でウチのアデルくんの体力により相手がキレました。

でまぁなんで2405にしてあるかっていうのを解説しておこうかなと。

結論から言うと、一撃目 (MoveType=H以外の時) の根性値などの防御力補正実装です。
で、ウチのキャラの防御補正は基本的に、受けるはずだった体力差分をさらにLifeAddで減らす方法です。

なので、最大で補正がかかった所が防御力1.0になるようにしてあります。
アデルの場合は

  • 最大防御補正0.75倍
  • ボスモード時体力倍
  • 基本 (プレイヤー仕様) 体力902

を計算すると

902 * 2 / 0.75 = 2405.33333

となります。

ちなみにGルガは2667でした(;´∀`)。補正でプレイヤー仕様の場合は633、ボスモード時は1056相当に落ちるんですけどね*1

回復じゃダメな理由

回復方向だと、面白いことに死なない場合があります。ただし、一撃目の攻撃限定ですが*2
というのもダメージが入るのはステートの最終処理らしく、すべての動作後にHitDefなどのダメージ処理が行われます。
つまり、

  1. 補正による回復
  2. ダメージ処理

の順にライフが変動するため、1.の時点での相対力が2.のダメージ量を上回ると、死にません。
また、このときのダメージは食らった時のライフ量を超えることはありません。

なので、例えば残り体力50のときにダメージ100の攻撃を受け、さらに補正0.75で最終的に食らうダメージが75になる想定でも、

  1. 回復量 = GetHitVar(Damage)の値×(1.0 - 補正)
    1. この場合回復量は50×(1.0 - 0.75) = 12.5
      1. 最大ダメージはライフ量を超えないため、威力が100だろうが強制的に50になります
  2. 回復処理の結果、ライフが62に戻る
  3. ダメージ処理の結果、ライフが12残る
  4. 結果死なない

なんてことが起きます。コレの回避のためにウチのキャラでは足りない分を自前で補正するをしてます。

あと回復方向処理の問題としては、体力満タン時に一撃目に対して補正が発生させられないというのもありますね。回復できないので。

*1:2667は金カラー時最大補正の考慮。アデルは金カラー時は回復法方向補正になる (想定体力3000超えます)

*2:MoveType=H以外の場合はDefenceMulSetが効かないため。ガード時の削りは考慮しないくてもいいということです