50歳からのポケモン日記

ポケモンのステータスが計算される仕組みを理解しよう

ステータスの増加分ステータス値
akibyonです。

またポケモンの話です。ポケモンの能力を表す、攻撃や防御、特攻といったステータス値について理解したことを、自分の頭の中を整理するために書いておこうと思います。

ストーリー内のバトルでポケモンを倒すと、それに応じた経験値が与えられて、戦闘に出たポケモンがレベルアップ、そして進化するときがあります。これがうれしくて、ポケモンをコツコツとプレイする楽しみにもなるのですが、レベルアップ時に表示される各ステータスの上昇値はどうやって決まるのか気になってきます。このポケモンは+4がよく出るけど、こっちのポケモンは+1とか0ばかりなのはどうしてなんだろうとか、やっぱりたくさん上がってくれるほうがうれしいわけです。

Wizardryでは運の要素があるため、レベルアップ時(宿屋に泊まったとき)にステータス値の上昇具合が気に入らなければ、リセットして宿屋に泊まり直し、いい値が出るまでやりなおすという方法があります。ポケモンの場合はレベルアップ時に持っているいくつかの数値によって完全に決まるため、何度リセットしてやり直しても同じ値にしかなりません。

ポケモンのステータス値を求めるための計算式は、ネットで検索するとすぐに見つかります。WordPressに数式を表示するプラグインがあったので、ここではそれを使って書いてみます(今回のエントリーは、これが使いたかったからって話)。
ちなみにこの式は、ポケモンをやっている人にはかなり以前から知られているものですが、公式の攻略本には載っていません。XYの攻略本では、育成に関して、今までマニアの間で常識だったことの多くが明文化されているのですが、まだいろいろなことがぼかして書いてあります。

a=種族値、b=個体値、c=性格補正、x=努力値、L=レベルとして、

HPは次の式、
y=\left( 2a + b + \frac{x}{4} \right) \times L \div 100 +10 +L

HP以外(攻撃、防御、特攻、特防、素早さ)は次の式、
y=\{ \left( 2a + b + \frac{x}{4} \right) \times L \div 100 +5 \} \times c

で求められます(小数点以下は割り算のたびに切り捨て)。

種族値、個体値、性格補正の3つの値は、ポケモンを捕獲したり孵化させたときに、そのポケモンが持っている値です。種族値はポケモンが進化すると変化します。個体値と性格補正はずっと変化しません。努力値は、戦闘で倒したポケモンに応じて獲得する値を累積したものです。それぞれの値の意味については、具体的にステータスを計算しながら順次説明します。

私のお気に入りポケモンの1つ、クチートがメガ進化してメガクチートになった状態で、レベルが73から74になった場合を例に計算してみます。

種族値も、攻略本では数値として扱っていない情報なのですが、ネットで検索するとみつかります。

<メガクチートの種族値>
HP=50
攻撃=105
防御=125
特攻=55
特防=95
素早さ=50

種族値は、ポケモンを特徴付ける数値で、同じ名前のポケモンであればすべて同じ数値になります。クチートが他のポケモンと比べて、技を出すのが遅れることが多いのは、素早さが50という低さゆえですし、技が決まったときに高いダメージを与えられるのは、攻撃の数値が高いからということになります。

これに対して個体値は、同じ名前のポケモンでも1匹ごとに異なる値を持ちます。同じ名前のポケモンでも、個体値が種族値に反映されることによって、能力に差が出ることになります。捕獲したポケモンの場合はランダムで決まり、タマゴから孵化したポケモンは親の個体値の遺伝とランダムが組み合わさって決まります。あとから変化することはありません。具体的には0〜31の値を取り、個体値の多いステータスほど大きく伸びることになります。
ここで例にするメガクチートの個体値は次の値であるとします。

<各ステータスの個体値>
HP=31
攻撃=31
防御=31
特攻=31
特防=31
素早さ=4

個体値がいくつであるかは、ゲーム内でははっきりわからないのですが、XYではキナンシティのポケモンセンターにいるジャッジマンに聞くと、31か0かは判別できます。判定する手法もあるので、また今度書きます。

努力値は、倒したポケモンに応じて与えられる値で、すべてのポケモンに定められています。例えば、ヤヤコマを1匹倒すと素早さの努力値が+1され、ビッパを倒すとHPの努力値が+1されます。

努力値は累積されていきますが、次の2つの決まりがあります。

  1. 各ステータスにためられる最大値は252
  2. 1匹のポケモンがためられる最大値は510

このため、XYよりも前のシリーズでは、伸ばしたいステータスに応じたポケモンだけを意図的に倒すという方法が一般的でした(伸ばす必要のないステータスに努力値が入るともったいないから)。XYでは、下画面でできるスパトレというミニゲームで、戦闘をしなくても伸ばしたいステータスの努力値だけを確実に貯めることができるようになりました。スパトレでの努力値の稼ぎ方についても、別の機会に書きます。
ここでは、次のように努力値が獲得されているとします。

<各ステータスの努力値>
HP=252
攻撃=252
防御=0
特攻=0
特防=6
素早さ=0

次に性格補正です。捕獲したポケモンの場合は、基本的にランダムで決まり、タマゴから孵化したポケモンは親の性格の遺伝とランダムが組み合わさって決まります。これもあとから変化しません。性格によって、ステータスのうちの1つが1.1倍になる代わりに、別のステータスが0.9倍になります。ちなみに性格が「ゆうかん」の場合は、攻撃が1.1倍になる代わりに、素早さが0.9倍になります。どのステータスにも補正がかからない性格もあります。ここで例にするメガクチートの性格は「ゆうかん」ということにします。

レベルは74と前述したので、計算式に代入する値はこれで出揃いました。
まずはHPの値を計算してみます。HPの式には性格補正の値を代入する項がありません。性格によって意図的に補正することはできないということになります。
\begin{aligned}  y&=\left( 2a + b + \frac{x}{4} \right) \times L \div 100 +10 +L\\ &=\left( 2 \times 50 + 31 + \frac{252}{4} \right) \times 74 \div 100 +10 +74\\ &=194 \times 74 \div 100 +10 +74\\ &=143 +10 +74\\ &=227  \end{aligned}

前述したとおり、割り算の小数点以下は切り捨てています。ここでもう一度、レベルアップ時の画像に表示されている値を見てみます。
HPの値
ほら、HPが227になっているでしょう?

次に攻撃のステータスを計算してみます。ここでは、1.1の性格補正がかかります。
\begin{aligned}  y&=\{ \left( 2a + b + \frac{x}{4} \right) \times L \div 100 +5 \} \times c\\ &=\{ \left( 2 \times 105 + 31 + \frac{252}{4} \right) \times 74 \div 100 +5 \} \times 1.1\\ &=\left( 304 \times 74 \div 100 +5 \right) \times 11 \div 10\\ &=229 \times 11 \div 10\\ &=251  \end{aligned}
攻撃の値
レベルアップ画面の攻撃の値も251になっていますね。ちなみに1.1倍や0.9倍は、11や9をかけてから10で割るという手順になります。上記の計算式でもそのように展開してから計算しました。

同様にして、すべてのステータスの値を計算できます。

ここで大事なのは、レベルアップ時の画面では、各ステータスの上昇値が表示されてから、ステータス値が表示されるので、上昇値が加算されてステータスになっているように思ってしまうのですが、実は違うということです。つまり、レベル74になる場合、その時点の種族値と持っている努力値を使ってレベル73と74のステータスを計算した上で、はじめの画面でその差を上昇値として表示し、次の画面でレベル74のステータスを表示しているのです。

攻撃のステータス値を例にすると、レベル73を当てはめると、次のようになります。

\begin{aligned}  y&=\{ \left( 2a + b + \frac{x}{4} \right) \times L \div 100 +5 \} \times c\\ &=\{ \left( 2 \times 105 + 31 + \frac{252}{4} \right) \times 73 \div 100 +5 \} \times 1.1\\ &=248  \end{aligned}

251と248の差をとって、+3と表示されます。+3が先に計算されて加算されるわけではないのです。
攻撃の加算分
例えば、レベル73から74にレベルアップする間に、ポケモンを倒して努力値を獲得しているとすると、レベル73時点で計算したステータス値よりもレベルアップ時点で計算したレベル73のステータス値が大きくなることもありえます。そのため、例えば+1と上昇値が表示されても実際の値で見るとそれ以上増加している場合もあるわけです(レベルアップ前の値をメモしておき、比較するとわかりやすい)。
ポケモンが進化すると、一般的に進化前よりも種族値が上がるので、進化したボケモンのほうがステータス値が大きくなります。しかし、何回か進化をキャンセルして進化した場合も、すぐに進化した場合も、同じように努力値を獲得しているとすれば、進化した時点で同じレベルならステータス値は同じになります。

また、公式のバトルでも採用されている「フラットルール」では、レベル50以上のポケモンはレベル50に補正されますが、レベル50のときのステータス値がどこかに記憶されているわけではなく、そのときの種族値、努力値を使ってレベル50のステータス値を計算しています。
例えば、ジヘッドからサザンドラへはレベル64にならないと進化しないので、レベル50の時点ではジヘッドなわけですけど、フラットルールで下がったレベル50はサザンドラの種族値で計算されているということになります。

以上をまとめると、レベルの低い時点で努力値を獲得していたほうが、レベルアップした時点ではステータス値は大きく伸びますが、フラットルールでのバトルを考えたら、レベル50を超えるまでに努力値を満タンにすればよく、いつ進化しても差がないということがわかりました。安心して進化キャンセルできますね(進化キャンセルすると経験値が通常の1.2倍もらえる)。

この理解で間違っていないと思うのですが、おかしな点があればご指摘いただけると幸いです。

ポケモンのステータスが計算される仕組みを理解しよう」への8件のフィードバック

  • ピンバック: 壁張りニャオニクスその2(3値と性格) | Quickcaman Strikes back !

  • すごく詳しくて分かりやすかったです!個人的にメールでいろいろ教えてもらいたいくらい(笑)
    質問なのですが、努力値を多く割り振っている項目は、レベルアップの時に上がる数値も大きいという事ですよね?
    xの値が大きい方が計算結果の数値は大きくなりますもんね?

    返信
    • コメントありがとうございます。
      努力値を多く振った項目は大きく伸びます。一匹のポケモンが貯められる努力値は最大510なので、バトルで強いポケモンを育成する場合などは、不要なステータスに努力値を振らないようにします。

      返信
      • ありがとうございます!
        それって、今、レベルアップした数値が、こうげきがプラス1、すばやさがプラス3だったとして、素早さより攻撃を上げたいのに・・と思った場合、努力値を、すばやさを削ってこうげきに割り振れば、次回はすばやさの上昇数が少なく、こうげきの上昇数を多くできるってことですよね?

        返信
        • そうなりますね。各ステータスにいくつか努力値を振るかははじめに考えておき、必要なステータスのみに入れるようにする方が効率的です。あとで努力値を下げるにはフェスサークルのなつきパーラーを使うか、特定のきのみを食べさせます。素早さの努力値を下げるのはマトマのみです。1つで10下がります。

          返信
  • 分かりました、ありがとうございます。
    逆に努力値の振り分けがもう終わっていてどこもいじらなかった場合、計算式に使う数値で計算で変化したのはレベルのLだけなので、上昇値は前の時と一緒の数字になる、ということですよね?

    返信
    • そうですね。式だけをみるとレベルに対して比例なのですが、割り算の余りを切り捨てている関係で変化します。
      例えば上のメガクチートの例だと71にレベルアップした時から80までのこうげきの上昇値は次のようになります。
      71 72 73 74 75 76 77 78 79 80
      +4 +3 +3 +3 +5 +3 +3 +4 +3 +3

      返信
      • 確かに75時の計算式の答えから74の計算式の答えを引くと5になりますね!小数点の切り捨てでけっこう違う物なのですね。ありがとうございました!

        返信

ポケモン初心者♀ へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です