2016年6月14日火曜日

ダメージ暗算を目指して

 トレーナーのはしくれとして,何か書いてみようと思い,作成しました。よろしくお願いします。
 
 さて記事第一号は,トレーナーとして長らく持ってきた疑問,「ダメージ計算は暗算で出来ないものか」 について考えてみたいと思います。

 某対戦考察ページに「物理(特殊)火力」「物理(特殊)耐久」なるページがあります。前者は(特殊)攻撃力と威力の積,後者はHPと(特殊)防御力の積によって定義されていますが,これらの値は等価ではなく,火力10000の攻撃を耐久10000で余裕で耐えられます。これらの値を平等に扱うことができれば(火力の10000と耐久の10000が等価になれば),素早いダメージ計算に役立つのでは,と考えるところからが第一歩となります。
 …と考える方々は全国に多数いらっしゃるようで,攻撃側に0.44を乗じればあっさり解決しますし,例のページにもこのような記述があります。最初からそうやって定義しておけば…

 今回は,この手の議論を第一世代(Lv.50-55戦)に持ち込むことを目指します。この世代では個体値・努力値を全能力で最大値まで上げられるという前提が(ほぼ)成立する代わり,レベルが一定ではないため,上記の係数(0.44)がレベルによって変化するという特徴があります。


 さてまず,耐久の値は本当にHPと防御の積で定義してよいのか考えてみることにします。思えばダメージ算出時に踏んだ手順が,大雑把に言って

技の威力×0.44×攻撃力÷防御力を計算する
2を足す
タイプ一致,弱点,耐性の倍率を乗じる
乱数を乗じる

なので,防御力がどんなに高くても低くても関係なく2ダメージを受け,この2ダメージはタイプ一致・弱点・抵抗力の影響を受けることになります。ならば,最初からHPから引き算してしまえばいいという考えに至るわけですが,いくつ引き算するか意見の割れるところです。あくまで個人的な意見ですが,一致弱点を2回耐える耐久の持ち主はそうそう居らず,一致等倍も3回耐えられる者がそういない(影分身のない素眠りでの受けがまず成立しない)と考え,「一致弱点1回≒一致等倍2回≒6ダメージ」を防御力に関係ない部分とみなし,HP実数値から6を引き算して計算しようと思います。大して変わらないけど。一応,種族値+106.5で出すHP最大値の1の位をちょうど0にでき,計算が楽になるメリットはありますが。
 
 ところで,レベルの値が6通りもあるので,筆者はいちいち火力や耐久の値を6通りも覚えるのが面倒と感じ始めました。そこで,レベル50の時の火力・耐久を基準に,レベル51から55の時はレベル50の何倍になるか,を出してみることにします。ここでは,ミュウとミュウツーを除く149匹の平均を取りました。

レベル 火力 耐久
50 1.000 1.000
51 1.020 1.040
52 1.038 1.078
53 1.106 1.120
54 1.126 1.162
55 1.197 1.205

 耐久がレベル1ごとに4%ずつ伸びる,というのはなんとなくお分かりと思います。というのも,HPと防御がレベル1つあたり約2%ずつ増えるので,その積はおよそ4%ずつ増えるためです。一方火力はというと,レベル51・52・54あたりで何となく損をした気分になると思います。それもそのはず,上記の係数0.44というのは正確に書くと

(レベル×0.4+2)の小数第一位を切り捨てる
50で割り算する

 で決まるため,レベル50から52で0.44,53から54で0.46,55で0.48となります。火力も耐久力もレベル2乗に比例するように思われがちですが,火力はというと数値を丸める都合,そうとも限らないらしいと分かります。
  
 今度は急所について。しばしば急所は2倍と言われますが,この世代にあって2倍されるのはダメージではなくレベルのようです。勘のいい皆様は,厳密には2倍でないことにお気づきかもしれませんが,2倍ではなく何倍になるのか,レベル別に異なるので調べてみると,

レベル 急所倍率
50 1.909
51 1.909
52 1.955
53 1.913
54 1.957
55 1.917

となります。普段損している52・54の主張が目立ちますが(笑),約1.9倍と考えることができます。同じ攻撃を二発当てるのと比べると,防御力に関係なく与えているダメージを一発分(HPに換算して3くらい)損していることになります。というわけで,小数第二位を切り捨てて急所はダメージ1.9倍と考えると,比較的誤差が少ないのでは,という気がしてきます。 第3世代では普段の2.5倍くらい食らっていた気がしますが,筆者の気のせいでしょうか…?

 タイプ一致,弱点,抵抗力は最後に乗除の計算を行うため,特に気にせず倍化半減してよいと思われます。

 ここまでして何がしたかったかというと,残り体力や攻撃1回1回の点数化です。例えば

55ケンタロスの破壊光線急所
151*0.44*225*1.20*1.9≒34000(最大値) 

に対し,50パルシェンの物理耐久が約35000なので,ほぼボーダーライン上にいることが分かります。実際計算するとギリギリ耐えます。通常の火力が最大18000なので,ごく稀に2発で落ちる可能性がありますが,これも実際計算するとそうなるようです。
 他にも50ラプラスの物理耐久が約30000なので,急所を確定で耐えるには数値が足りておらず,確定で耐えるためのレベルは34000÷30000≒1.13よりレベル53から54にかけてと予想できます。実際はレベル53がギリギリで確定耐えするようですが,この式は概算用(よく見ると有効数字が2桁しかない)なのでそこまで期待していません。
 また,耐久の最大値さえ計算してしまえば,HPゲージとにらめっこしながら残り耐久値を推測し,的確に攻撃を指示することもできる…かもしれません。

 有効数字2桁まで精度を落とすことにより,少しは計算しやすくなった気は…しませんね。どうせ似たような種族しか出ないのなら,ある程度暗記した方が早いかもしれません。55ケンタロスで言うと,破壊光線が18000,捨て身タックルが12000,地震が8000,吹雪が7700…といった調子で。弱点を突くと2倍。拘りアイテムを持つと1.5倍。なんだこのどっかで見た数字。
 といろいろ書いてきましたが,ここからはいくつか例題,もとい具体例を用意してみようと思います。

 問題1:ラプラスはサンダースの10万ボルト急所を耐えられるか。
 概算1:レベル50を基準として,ラプラスの特殊耐久は(130+106-6)×(95+51)≒34000,サンダースの10万ボルトは等倍で(110+51)×0.44×(95×1.5)≒10000。弱点で急所に当たるため1.9×2倍し最大38000,最小38000×0.85≒32000。レベルが同じなら,4回に1回程度耐えることが出来る。最大ダメージを耐えるためには38000÷32000≒1.12(※有効数字の水増し…)で,ラプラスのレベル53あたりがボーダーラインになると予想される。逆に急所の最小ダメージで倒したければ34000÷32000≒1.06(これも有効数字の水増し…)からサンダースのレベル53あたりがボーダーラインになると予想される。
 検算1:①どちらもレベル50の場合は,最大HP236に対し急所ダメージが226~266なので,4回に1回耐えるというのはほぼ合っている。②53ラプラスは50サンダースの急所を確実には耐えられない。ただし54ラプラスは確定で耐えるので,予想は大きくは外れていない。③52サンダースは50ラプラスを急所一撃で倒せるため予想は外れている。急所の倍率「1.9」はレベル52に適用すると割とずれる模様。

 問題2:地面タイプの中で一番特殊耐久が高いのは誰で,どの程度の攻撃なら耐えられるか。
種族名(S種族値) 50特殊耐久
ダグトリオ(120) 16000
ニドキング(85) 23000
ニドクイン(76) 24000
イワーク(70) 11000
サンドパン(65) 19000
ゴローニャ(45) 19000
ガラガラ(45) 16000
サイドン(40) 20000

 概算2:各種族の特殊耐久はおおよそ上の表のようになる。不一致吹雪として頻繁に飛んでくる55スターミーの吹雪が約9600なので,この倍の値を耐えるかどうかは着目したいところだが,急所と凍結の判定で半分負けたようなものである。一致吹雪となると,50ルージュラですら等倍で11500程度あるのでまず耐えられないだろう。得意苦手が丸見えの地面タイプにとって貴重な等倍ダメージであるサイコキネシスで比べると,50ナッシーが約10500,52フーディンが約11500なので,ニド夫妻はフーディンの出現割合によって人気がかなり変動するものと思われる。等倍の技すら怪しいイワークと,実はダグトリオと特殊耐久が同程度のガラガラの姿が目立ってしまう。
 話は変わるが,物理耐久は50マルマインで約19000なので,50マルマインをレベル50のタイプ一致地震一撃で倒すのに必要な種族値は,最大ダメージで19000÷(150×0.44×2)-51≒93,最小ダメージで19000÷(150×0.44×2×0.85)-51≒118と,余裕で倒せるのはサイドンだけ,ゴローニャすら乱数が絡むらしいと推測できる。まあマルマインはゴローニャに手も足も出ない(そもそも手足が無いとか言わない)ので似たようなものだが。
 検算2:①50ゴローニャは55スターミーの吹雪をギリギリで耐えるため,この結果は微妙に正しくない。②50ニドクインは52フーディンのサイコキネシス及び50ルージュラの吹雪を確定で耐えるため,大体合っている(ニドキングは低確率で倒される)。ただしフーディンがやたらと頻繁に急所を引き,ルージュラに至っては凍結判定まで持っているので,ニドキングに対して優位性があるか何とも言えない。③50マルマインは50ニドキングの地震を確定で耐える。なんという種族値不足。余談だがマルマインの大爆発が急所に当たるとニドキングは確定で倒される。電気対策とは…

 上記の問いで,ゴローニャの特殊耐久に若干のずれが生じました。不一致吹雪を一発だけ耐えることだけ考えると,HPから6ではなく4を引き算すべきだったことになるので,ここでずれてしまった可能性があると思われます。有効数字2桁ではそこまで再現できないはずと言われると苦しいですが,ずれる要素としては一番大きいと思われます。

 というわけで,ダメージ計算を暗算で行うことを目指し,見事に失敗した際の副産物として,各々の攻撃手段に対して「火力」の点数を付け,「物理耐久」「特殊耐久」の点数と等価に比べることが出来るようになったと言えます。有効数字2桁の割にはそこそこ精度よく。 以下簡略にまとめると,

火力の点数
(種族値+50)×威力×0.44(レベル50~52)
 (種族値+50)×威力×0.44×1.1(レベル53~54)
 (種族値+50)×威力×0.44×1.2(レベル55)
(急所はこの1.9倍)

耐久力の点数
(HP種族値+100)×(防御種族値+50)×(1.00~1.20)(レベル50で1.00,55で1.20)

ここまで来るのに夢中すぎて気づかずにいましたが,ダメージの計算式がほとんど変わっていない都合上,一部を改良すれば現代(第6世代)でも使用できる指標になっているはずです。

 最後になりますが,参考にさせていただいたサイト様を紹介し,御礼と代えさせていただきます。ありがとうございました。


ゴールド様(主にhttp://pokemon.s20.xrea.com/1st/moves.htmlより)
クラブハンマー様(主にhttp://island.geocities.jp/majinjima/calc/damageZ97.htmlより)