どうも、アサマです。
ダメージ計算について、以前記事でまとめました。
【システム】与ダメージの計算式 - まったりファイアーエムブレムヒーローズ【FEH】
このダメージ計算のうち、一番最後に計算される「ダメージ軽減」について、複数のダメージ軽減が重なった場合、どう計算されるのか?端数処理はどうなるのか?について、見てみたいと思います。
ちなみに、過程がどうでもいい場合、記事の最後の「結論」だけ見ればいいと思います(汗)
さて、用意したのは…
はい、サイリさんです。
ダメージ軽減を3種持たせています。
・盾奥義(聖兜)
・回避
・連撃防御
です。
それぞれのスキル効果はこんな感じ。
で、攻撃側として用意したのは…
はい、ご存知ラインハルトです。
攻撃の数値は、検証に合わせて調整しますが、今回は鬼神の一撃2込みで49ですね。相性有利なので、58になります。サイリの魔防が41なので、表示ダメージは17になりますね。
はい、17です。
ダメージ軽減は表示ダメージには現れて来ませんので、以降、ここまでの計算は割愛します。
で、聖兜(30%軽減)と連撃防御(80%軽減)が発動した時のダメージを見てみましょう。ちなみに、速さの差は圧倒的なので、回避による軽減は40%になります。
はい、聖兜が発動しました。
ダメージは…
「2」ですね。
これで、少なくとも確率の足し算でない事は分かりました。全ての軽減確率を足し上げると
30%+80%+40%=150%
になってしまいますが、軽減率100%を超えているので、これだとダメージを受けない事になるはずです。
逆に、確率の掛け算と想定すると、辻褄は合います。
盾奥義による軽減後ダメージ:70%
連撃防御による軽減後ダメージ:20%
回避による軽減後ダメージ:60%
全てを掛け合わせると、軽減後のダメージは…
70%×20%×60%=8.4%
となります。
ダメージ17に対する8.4%は…
17 × 0.084 = 1.428 = 2(端数切り上げ)
という事で合いますね。ちなみに、ダメージ軽減が、ダメージの端数を切り上げる事は、既に検証済みです。
端数処理はスキルごとに処理されるのか?
さて、とりあえず確率の掛け算ってことで良さそうなんですが、端数処理がスキルごとに計算されるのか?まとめて計算されるのか?という点を見てみたいと思います。
まず、上のダメージ17のケースで、以下の順番でのスキルごとの計算の可能性が消えました。
a. 回避→連撃防御→盾奥義
b. 連撃防御→回避→盾奥義
aのケースを例に取ると…
1. まず回避でダメージが60%になる
→17 × 0.6 = 10.2 = 11
2. 次に連撃防御でダメージが20%になる
→11 × 0.2 = 2.2 = 3
3. 最後に盾奥義でダメージが70%になる
→3 × 0.7 = 2.1 = 3
という事で、ダメージは「3」でないとおかしいはずなのに、実際には「2」です。
bのケースも同じように「3」になるので、こちらも消えています。
次に、表示ダメージ22でやってみます。
被ダメージは…
「2」ですね。
これで、以下が消えました。
c. 連撃防御→盾奥義→回避
d. 盾奥義→連撃防御→回避
表示ダメージ22の場合、c、dのケースでは被ダメージ「3」になるはずです。
で、さらに可能性を消すために、次に聖盾を持ち出しました。聖盾は、ダメージ軽減が50%ですね。
今回の表示ダメージは…
33ですね。
聖盾が発動して…
被ダメージは「2」ですね。
これで以下が消えました。
e. 奥義→回避→連撃防御
被ダメージは「3」なるはずです。
さて、残りの可能性も少なくなって来ましたが、検証も厳しくなって来ました。
ここで使ったのは…
再び聖兜に持ち替えたサイリと…
そして、ティルテュです。
速さの差は6なので、回避の軽減は40%では無く、24%になります。(6 × 4% = 24%)
で、表示ダメージは…
28です。かなり調整に苦労しました。
聖兜発動で…
被ダメージは「3」ですね。
これで消えたのは…
f. 回避→盾奥義→連撃防御
です。この順に計算すると、被ダメージは「4」じゃないとおかしいです。
ということで、単独で計算するa〜fのケースは全滅ですね。
加えて、ここで消えたのがもう5つ。
g. (回避×連撃防御)→盾奥義
h. (盾奥義×連撃防御)→回避
i. 盾奥義→(回避×連撃防御)
j. 回避→(盾奥義×連撃防御)
k. 連撃防御→(回避×盾奥義)
はい、これは何かというと、3つのうち2つを合体させ、実質2つにして計算するというもの。
これらg〜kはいずれも、被ダメージ「4」でないとおかしいです。
例:gのケース
(回避×連撃防御)による軽減後ダメージ:76% × 20% = 15.2%
28 × 15.2% = 4.256 = 5(切り上げ)
盾奥義による軽減後ダメージ:
70%
5 × 70% = 3.5 = 4(切り上げ)
ですね。
最後に残ったのは…
l.(回避×盾奥義)→連撃防御
m.(回避×盾奥義×連撃防御)
の2種類です。
で、残念ながら、連撃防御聖印を1や2にしてみたり、回避を1や2にしたり、奥義も変えたりしながらダメージ100までのほぼ全てのケースをシミュレーションしたのですが、この2つのケースで差が生まれることはありませんでした。
という事で、実用上はmのケースで理解しておけば良さそうです。
まぁ、実際には「聖剣ティルフィング」と「回避」を持ったセリスとか、「聖盾」を持った正月レテとか、武器にも軽減系スキルがあったりするので、全部まとめて確率だけ先に計算してしまう、という感じでいいんじゃないかと。
結論
・ダメージ軽減は、同時に発動する全てのスキルの確率を同時に計算する
・計算に用いるのは「ダメージ率」であり、これはスキルごとに(1 - ダメージ軽減率)で計算。
・全てのスキルの「ダメージ率」を掛け算して「最終ダメージ率」とし、これに表示ダメージを掛け合わせると被ダメージになる(端数切り上げ)
例:
回避40%と聖兜30%と連撃防御80%が同時に発動した場合、最終ダメージ率は…
(1-0.4)×(1-0.3)×(1-0.8)=0.084=8.4%
ということになる。
例えば、表示ダメージが30の場合…
30×0.084=2.52=3(小数点切り上げ)
と言うことで、与ダメージは3となる。
他に、思いもよらない要素があったりすると、間違えている可能性はありますが、私の中では今のところ、最も確からしい結論です。
とりあえず参考になればと…。