まったりファイアーエムブレムヒーローズ【FEH】

FEヒーローズのプレイ記録や日々思ったことを、まったりと書いてます。

【検証】回避・盾奥義・連撃防御が重なった時の端数計算

どうも、アサマです。

ダメージ計算について、以前記事でまとめました。

【システム】与ダメージの計算式 - まったりファイアーエムブレムヒーローズ【FEH】

このダメージ計算のうち、一番最後に計算される「ダメージ軽減」について、複数のダメージ軽減が重なった場合、どう計算されるのか?端数処理はどうなるのか?について、見てみたいと思います。

 

ちなみに、過程がどうでもいい場合、記事の最後の「結論」だけ見ればいいと思います(汗)

 

さて、用意したのは…

f:id:feh_asama:20200621212623j:image

はい、サイリさんです。

ダメージ軽減を3種持たせています。

・盾奥義(聖兜)

・回避

・連撃防御

です。

それぞれのスキル効果はこんな感じ。

f:id:feh_asama:20200621212513j:image

 

で、攻撃側として用意したのは…

f:id:feh_asama:20200621212603j:image

はい、ご存知ラインハルトです。

攻撃の数値は、検証に合わせて調整しますが、今回は鬼神の一撃2込みで49ですね。相性有利なので、58になります。サイリの魔防が41なので、表示ダメージは17になりますね。

f:id:feh_asama:20200621212609j:image

はい、17です。

ダメージ軽減は表示ダメージには現れて来ませんので、以降、ここまでの計算は割愛します。

 

で、聖兜(30%軽減)と連撃防御(80%軽減)が発動した時のダメージを見てみましょう。ちなみに、速さの差は圧倒的なので、回避による軽減は40%になります。

 

f:id:feh_asama:20200621212620j:image

はい、聖兜が発動しました。

ダメージは…


f:id:feh_asama:20200621212613j:image

「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でやってみます。

f:id:feh_asama:20200621212947j:image

被ダメージは…


f:id:feh_asama:20200621212953j:image

「2」ですね。

これで、以下が消えました。

c. 連撃防御→盾奥義→回避

d. 盾奥義→連撃防御→回避

表示ダメージ22の場合、c、dのケースでは被ダメージ「3」になるはずです。

 

で、さらに可能性を消すために、次に聖盾を持ち出しました。聖盾は、ダメージ軽減が50%ですね。

今回の表示ダメージは…

f:id:feh_asama:20200622113128j:image

33ですね。


f:id:feh_asama:20200622113134j:image

聖盾が発動して…


f:id:feh_asama:20200622113124j:image

被ダメージは「2」ですね。

これで以下が消えました。

e. 奥義→回避→連撃防御

被ダメージは「3」なるはずです。

 

さて、残りの可能性も少なくなって来ましたが、検証も厳しくなって来ました。

ここで使ったのは…

f:id:feh_asama:20200621221512j:image

再び聖兜に持ち替えたサイリと…

 

f:id:feh_asama:20200621221428j:image

そして、ティルテュです。

速さの差は6なので、回避の軽減は40%では無く、24%になります。(6 × 4% = 24%)

で、表示ダメージは…

f:id:feh_asama:20200621221319j:image

28です。かなり調整に苦労しました。


f:id:feh_asama:20200621221302j:image

聖兜発動で…


f:id:feh_asama:20200621221307j:image

被ダメージは「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となる。

 

他に、思いもよらない要素があったりすると、間違えている可能性はありますが、私の中では今のところ、最も確からしい結論です。

とりあえず参考になればと…。