テツポンドのブログ

テツポンドのブログ

テツポンド(Twitter : https://twitter.com/tetspond)のブログです。

【ポケモン】オーバーフローを考慮した場合の最大ダメージ65535を1ターンで実現する方法 # 最大ダメージ学会

ダメージが65536以上だとオーバーフローで値が小さくなるのなら、65535が最大ダメージなので、これを実現したい

 

(2020/12/10 ビッパが第八世代にいないことに気がつき、防御役・実現手順の項を大幅に書き換えました。)

 

はじめに

 

 下記の記事で、ダメージの16bitオーバーフローを証明する動画について解説しました。

tetspond.hatenablog.com

 ダメージ計算では、他の全ての補正計算後の値を65536で割った余りが対象に対して与えるダメージになります。これによって0ダメージを実現していました。

 

 さて、65536で割った余りがダメージになるので、最終的なダメージは0~65535の範囲の整数になります。

 よって、オーバーフローを考慮した場合のダメージの最大値は65535です。今回はこのダメージを与える方法について扱います。

 

 

 掛け算の記号として、「*」の半角である * を用います。また、割り算の記号として、/ を使います。どちらも、キーボード入力ではよく使われる表現です(プログラミングなど)。

 

 

第七世代での先行研究 

 

  DaWoblefet氏のダメージ計算のコンプリートガイドという資料があります。これは、ダメージ計算に関わる全て、ステータスの計算や特殊な威力計算まで含めて本当に全てが載った、まさに完全版と言える資料です(ジャイロボールの計算式のミスは除く)。

www.trainertower.com

 

 この記事の最後のあたりで、A One-Turn Setup for Maximum Damageという項目があります。 ここでは、1ターンで最大ダメージを実現する方法について書かれています。

 概要は以下のようになっています。

 

攻撃役 ブラックキュレム レベル100 攻撃424

味方のいばるで攻撃ランク2段階上昇(2倍で攻撃848)・ラムの実で混乱は回復。

 

防御役 コロモリ レベル1 防御4or5

味方からいやなおとを受ける。特性「たんじゅん」によりランク変化が2倍になるので防御4段階下降(1/3で小数点以下切り捨てで防御1)。

 

攻撃技 おんがえし ノーマルタイプ 物理技

ブラックキュレムのなつき度は230なので威力92

 

 以上のようにして、ブラックキュレムコロモリにおんがえしで攻撃することで、急所がなく乱数が最大のときにオーバーフローが起きて0ダメージが発生します。

 

 

第八世代での実現

 

 第七世代での実現については既に書かれていましたが、技「おんがえし」が廃止されたこともあるので、現在の第八世代での実現について考えてみることにします。同じように、1ターンで65535ダメージを与えることを目指します。

 先行研究で使われていた数値を参考にしつつ、その値にたどり着く方法の解説も含めて、実現方法をまとめます。

 

 

値の設定

 

Xの範囲 3276650 <= X < 3276700

 

 基礎ダメージに他の補正をかけないようにして、基礎ダメージを65535にすることで計算後ダメージを65535にすることを検討します。乱数補正と急所補正の影響もなくしたいので、乱数補正は1・急所には当たらないと仮定します。これは、急所なし最大乱数をひくことを前提としていることを意味します。

 

  基礎ダメージ

=( ( (攻撃側のレベル*2/5 +2 )*威力*攻撃側のこうげき / 防御側のぼうぎょ ) /50 +2)

という式があります。()内の計算ごとに小数点以下切り捨てです。

 

 下線部を整数Xとしたとき、X/50+2が65535以上65536未満なら、小数点以下切り捨てで基礎ダメージが65535になります。

 式に表すと、

65535 <= X/50 +2 < 65536 です。

これをといて

3276650 <= X < 3276700

 となります。

 

 

Xの値 3276672

 

 今回、攻撃側をレベル100にするために、Xは3276672を採用します。なぜこの数にするのかについて説明します。

 

 下線部を整数Xとおいたので、

X = ( (攻撃側のレベル*2/5 +2 )*威力*攻撃側のこうげき / 防御側のぼうぎょ )

です。()内小数点以下切り捨て。

 攻撃側がレベル100のとき、( (攻撃側のレベル*2/5 +2 )の値は42になります。防御側のぼうぎょが1のとき、Xは整数の掛け算で表されます。式で表すと次のようになります。

X = 42 * 威力 * 攻撃側のこうげき

 このとき、整数Xは42の倍数である必要があります。言い換えると、42が約数である必要があります。よって、3276650 <= X < 3276700の範囲で唯一42の倍数である3276672を採用します。

 

 

威力×攻撃 78016

 

 X=42*威力*攻撃側のこうげき と X=3276672から、

威力*攻撃側のこうげき = 3276672/42 = 78016 

となります。

 威力と攻撃の掛け算の結果が78016になるようにすれば、65535ダメージを実現できることになります。

 

  

威力 106

 

 78016は整数同士の積です。威力と攻撃の値を設定するため、78016を素因数分解してみます。

 下記サイトを使いました。

素因数分解 - 高精度計算サイト

 このサイトには、【ポケモン】他のどのポケモンより最初に行動するすばやさ8191ちょうどは実現可能か 8191は素数 - テツポンドのブログを書いたときにもお世話になりました。

 

 素因数分解の結果、

78016 = 2^6 * 23 * 53 (^は累乗記号)

となりました。

 

 攻撃の値は自由に設定しやすいのに対して、威力はそうではないので、先に威力の方を決めていきたいと思います。

 先行研究では、78016 = (23*2*2) * (53*2*2*2*2) = 92 * 848として、威力を92に設定していました。今回は、別の分解として、78016 = (53*2) * (23*2*2*2*2*2) = 106 * 736として、威力106 (53*2)を採用します。

 

 

基礎威力 85

 

 威力106の実現方法についてです。わざ「おんがえし」が廃止されたため、威力を自由に操作する方法は減りました。残りHP割合によって威力が変化する技「にぎりつぶす」や「ふんか」などは残っていますが、1ターンで実現することを目指す場合、HP調整の手間があるので難しいです。

 

 ここでは、威力補正を使います。威力に直接かかる補正があります。いろいろありますが、約1.1倍の道具「ちからのハチマキ」、約1.2倍の特定タイプ強化道具、1.25倍の特性「とうそうしん」(強化)、約1.3倍の特性「かたいツメ」、1.5倍の特性「どくぼうそう」などがあります。

 普通の技が持っている威力(5の倍数)にこれらの値をかけて、小数点以下を五捨五超入して106になるような値を探すと、85に1.25をかけると106.25になることが見つかりました。

 

 正式な計算をすると、

85 * 5120 / 4096 = 106.25

威力のこの計算では、小数点以下は五捨五超入します。

0.25は0.5以下なので、小数点以下五捨五超入して106になります。

 

 

元のこうげき実数値 368

 

 前述のとおり、こうげきは最終的に736にします。

 1ターンで65535ダメージを実現することを考えるとき、味方からの補助で上げるこうげきランクが2段階で良ければ楽です。

 元のこうげき実数値が368であれば、ランク2段階上昇で4/2倍で736になります。

 場合によっては、こだわりハチマキの採用も考えられますが、今回は後述のとおりちょうどいいポケモンがいたので採用しません。

 

 

攻撃役 レントラー

 

下記の条件を満たすポケモンを探します。

・特性「とうそうしん」

・タイプ不一致で威力85の技を覚える

・こうげき368 (その他補正で736を実現できれば可)

 

 とうそうしんを持つポケモンを検索して、唯一旅パで2回使ったことがあるレントラーから調べてみました。

 都合のいいことに、威力85でタイプ不一致のわざ「サイコファング」(エスパータイプ)を覚えるようです。今回はタイプ一致補正(基礎ダメージに補正がかかる)はかけたくないので、タイプ不一致である必要がありました。

 また、都合のいいことに、レントラーはこうげき種族値が120と高く、こうげき368が実現可能でした。レベル100のとき、性格いじっぱり個体値31努力値236で、こうげき368になります。わりとギリギリでした。

 補助役よりも後に行動するために、こうこうのしっぽを持たせます。

 

防御役 バニプッチ

 

 参考文献と同じように特性「たんじゅん」を持つポケモンを防御役にしたかったのですが、今回は攻撃技がエスパータイプのため、エスパー・ひこうタイプのコロモリではタイプ相性補正(基礎ダメージに補正がかかる)がかかってしまいます。他のたんじゅん持ち(ビッパドンメル)は現在いないため、他の方法を模索します。

 

 特性「くだけるよろい」に目をつけました。これは、物理技を受けるたびに防御が1段階下がりすばやさが2段階上がる特性です。【ポケモン】対トリックルーム最終兵器 〜すばやさ1808を超えれば先制〜 #1809現象実戦編 - テツポンドのブログではすばやさ上昇に注目して連続攻撃技を当てましたが、今回は防御下降に注目して連続攻撃技を当てます。特性「スキルリンク」によりつららばりなどの2~5回攻撃する技は確定で5回攻撃するようになります。この攻撃をくだけるよろいに当てることで、ぼうぎょを5段階下降させます。ぼうぎょが6なら、5段階下降で1になります。

 特性スキルリンクポケモンが使うタイプ不一致連続攻撃技として、シェルダーつららばり(こおりタイプ)があります。つららばりで倒されないようにこおりタイプの技を半減できて、エスパータイプサイコファングは等倍で通るような、特性くだけるよろいのポケモンを探すと、バニプッチ(こおりタイプ)がいました。こおりタイプの不遇耐性がここで役に立ちます。

 

 とうそうしんで威力を強化させるため、レントラーと同じ性別にします。

 

 

補助役 マホイップ・シェルダー

 

 レントラーのこうげきランクを2段階上げる手段として、デメリットなしに味方のこうげき・とくこうランクを2段階上げられる技「デコレーション」を使います。この技を使えるマホイップを補助役として採用します。

 

 シェルダーは、特性スキルリンク・タイプ不一致の連続攻撃技を使える・レベル1の3つの条件を満たせるポケモンです。シェルダーはみず単タイプなので、こおりタイプのつららばりはタイプ不一致になります。シェルダーはレベルアップでこの技を覚えることはないですが、わざマシンで覚えることができます。バニプッチを倒してしまわないようにレベルは1で、こうげきは下降補正がかかるような性格にして最低の5にします。

 

 

 実現手順

 

ポケモンと技 

 

攻撃役 レントラー

でんきタイプ, レベル100, 特性とうそうしん, こうげき368, オス, 持ち物こうこうのしっぽ

 

補助役1 マホイップ

 

防御役 バニプッチ

こおりタイプ, レベル1, 特性くだけるよろい, HP11~12, ぼうぎょ6,  オス

 

補助役2 シェルダー

みずタイプ, レベル1, 特性スキルリンク, こうげき5, 

 

攻撃技 サイコファング

エスパータイプ, 物理技, 威力85

 

 

動き

 

攻撃側の場にレントラー、マホイップを出す

防御側の場にバニプッチシェルダーを出す

 

1ターン目

 

・マホイップはレントラーにわざ「デコレーション」

レントラーのこうげきが2段階上昇

 

シェルダーバニプッチにわざ「つららばり

シェルダーの特性スキルリンクバニプッチの特性くだけるよろいにより、バニプッチのぼうぎょが5段階下降

バニプッチはこの前後で何か暇潰し技を使う

 

レントラーバニプッチにわざ「サイコファング

バニプッチに65535ダメージ

バニプッチは倒れる

 

 

ダメージ計算

 

レントラーのこうげき

368 * (4/2) = 736

 

バニプッチのぼうぎょ

6 * (2/7) = 1.7...  小数点以下切り捨てで、1

 

威力

85 * (5120/4096) = 106.25  小数点以下切り捨てで106

 

基礎ダメージ  ()内計算後小数点以下切り捨て

  ( (100*2/5 +2) * 106 * 736 / 1 ) /50 +2 )

=  ( ( (40+2) * 78016 ) /50 +2 )

= ( ( 42 * 78016 ) /50 +2 )

= ( 3276672 / 50 +2 )

=  ( 65533.44 +2 )

= (65535.44)

小数点以下切り捨てで65535

 

 乱数補正が最大の1で急所にも当たっていないとき、他のダメージ補正がないので、基礎ダメージがそのまま計算後ダメージです。

 計算後のダメージ65535を65536で割った余りは65535のままです。よって、バニプッチに与えられるダメージは65535になります。

 

 

補足のダメージ計算

 バニプッチシェルダーつららばりで倒されないかについて

 

 5回の攻撃が全て急所にあたり、乱数も最大であるときを考えます。

 シェルダーのこうげきが5でレベルが1、つららばりの威力が25なので、バニプッチのぼうぎょをBとすると、
基礎ダメージ 
= ( ( (1*2/5 +2) *25 *5 /B ) /50 +2)
= ( ( 2 *25 *5 /B ) /50 +2)
= ( (250/B) /50 ) +2 
()内計算後小数点以下切り捨て

 以下これをもとに計算します。急所補正は1.5倍して小数点以下五捨五超入、相性補正は1/2して小数点以下切り捨てです。バニプッチがn回目のつららばりのダメージを受けるとき、ぼうぎょランクはn-1だけ下がっています。

 

つららばり1回目 バニプッチぼうぎょ6
((250/6) /50)+2 = (41/50) +2 = 0+2 = 2
急所補正で3、相性補正で1

つららばり2回目 バニプッチぼうぎょ6*2/3 =4
((250/4) /50)+2 = (62/50) +2 = 1+2 = 3
急所補正で4、相性補正で2

つららばり3回目 バニプッチぼうぎょ6*2/4 =3
((250/3) /50)+2 = (83/50) +2 = 1+2 = 3
急所補正で4、相性補正で2

つららばり4回目 バニプッチぼうぎょ6*2/5 =2.4 →2
((250/2) /50)+2 = (125/50) +2 = 2+2 = 4
急所補正で6、相性補正で3

つららばり5回目 バニプッチぼうぎょ6*2/6 =2
((250/2) /50)+2 = (125/50) +2 = 2+2 = 4
急所補正で6、相性補正で3

 

 乱数が最大で全て急所に当たった場合でも、合計ダメージが11なのでHPが12あれば耐えることができます。また、それ以外の全ての場合はHPが11でも耐えることができます。

 バニプッチはわざ「こらえる」を覚えるので、それを使えばこんな計算をしなくてもつららばりを耐えることはわかりますが、こらえるを使うとレントラーの攻撃も耐えてしまい、最大ダメージを出した感じがしないので、あえて使いませんでした。

 

 

参考文献

 

 それぞれについては前回の記事(【ポケモン】今も存在するダメージオーバーフロー 16bit編 〜最小ダメージである"0ダメージ"を与える〜 - テツポンドのブログ)で解説しています。

Trainer Tower

ダメージ計算式 - ポケモン対戦考察まとめWiki|最新世代(ソード・シールド)

 

 

おわりに 

 

 威力*攻撃=78016のところが難しかったです。威力85*1.25=106.25を見つけた後は都合よくハマってよかったです。レントラーありがとう。

 

 特性「たんじゅん」はもっといるイメージでした。別特性でビッパ系統とコロモリ系統が持っているてんねんのせいかなと思い調べたところ、こちらは6系統でした。

 

 今回の記事は最大ダメージについて扱っているので、最大最小カテゴリに属させています。他にもステータスの実現可能な最大最小について記事を書いているので、どうぞご覧ください。

tetspond.hatenablog.com

 

 お読みいただきありがとうございました。

 

 追記 2020/12/10

 朝起きたときにふとビッパが第八世代でまだ内定していない可能性に気がつき、調べたら実際にそうでした。補助役でいやなおとをするマルマインも内定していませんでした。第八世代での実現方法を考えているのにそれではいけないと、修正しました。浮かんだ別の案として、あまのじゃくてっぺき+かたやぶりいやなおとで防御4段階下降というのがありましたが、ツボツボのぼうぎょが高すぎたり、ズガイドスがいなかったりでダメでした。

 数日間大きなミスをしたまま公開してしまいました。第八世代限定の話をするときはそのポケモンが今いるのかについて気をつけたいと思います。

 

Twitterアカウント

テツポンド (@tetspond) | Twitter

 

【ポケモン】今も存在するダメージオーバーフロー 16bit編 〜最小ダメージである"0ダメージ"を与える〜

ダメージのオーバーフローが存在するらしい。仕組みを知りたい!

 

はじめに

 

 ポケモンのバトルで発生するダメージについて、このようなツイートがあります。

 

・英語のもとのツイート

 

 

・日本語の関連ツイート

 

 このように、ポケモンでは現在でもダメージオーバーフローがあります。ダメージを与えるアニメーションが起きて0ダメージになっているのがとても興味深いです。

 今回は、このダメージオーバーフローに面白さを感じたので、このツイートについて詳しく解説することにしました。現在のポケモンのオーバーフローについて解説した日本語の文章は検索してもポケモンwikiを除いて他になかったので、これが初の日本語ブログ記事になると思います。

 

 掛け算の記号として、「*」の半角である * を用います。割り算の記号として、/ を使います。どちらも、キーボード入力ではよく使われる表現です(プログラミングなど)。

 参考文献は後ろのほうにまとめて配置します。

 

 

 

概要

 

 計算後のダメージが65536以上だった場合、オーバーフローによって数が小さくなります。ダメージ計算では、他の全ての補正計算後の値を65536でわった余りがダメージになります。65536は2の16乗です。ダメージは16bitの枠の中で表されるようなのですが、16bitで表現できる数は0~65535なので、65536以上でオーバーフローが起きます。この現象は、少なくとも第五世代以降から存在し、現在の第八世代でも確認されています。

 このオーバーフローは1より小さいダメージ(0ダメージ)を1ダメージにする処理(どんなに弱い攻撃でも1ダメージは入るという現象を可能にするための処理)よりも後に起きるので、攻撃が無効化されていないにもかかわらず与えるダメージが0であるという現象が起きます。

 普通の状況ではダメージは65536未満なので、値を65536で割った余りは値それ自体と等しくなります(X÷65536 が 0余りXになる)。よって、普通の対戦には基本的には影響がありません。

 

 

動画内の現象を説明

 

使用ポケモンとその状態 / 使用技

 

攻撃役 エースバーン

・レベル99

・特攻実数値222

・特攻ランク3段階上昇

・ほのおタイプ

・特性「てきおうりょく

・持ち物「ピントレンズ」

・きゅうしょアップ状態

 

防御役 ゴース

・むしはがねタイプ(タイプを変更している)

・もりののろい状態(上記のタイプにくさタイプを追加している)

・タールショット状態

・レベル1

・特防実数値4

・特防ランク6段階下降

 

使用技 ブラストバーン

・特殊技

・ほのおタイプ

・威力150

 

 

計算1 ステータス

 

エースバーンのとくこう

ランクが3段階上昇のとき、5/2をかけます。

222 * (5/2) = 555

 

ゴースのとくぼう

ランクが6段階下降のとき、2/8をかけます。

4 * (1/4) = 1

 

 

計算2 基礎ダメージ

 

 ダメージ計算式の基本はこのようになっています。特殊技の場合は、こうげき・ぼうぎょがとくこう・とくぼうに変わります。

 

  基礎ダメージ

=( ( (攻撃側のレベル*2/5 +2 )*威力*攻撃側のこうげき / 防御側のぼうぎょ ) /50 +2 )

 ()内の計算ごとに小数点以下切り捨て

 

 まず、(レベル*2/5 + 2 )については、攻撃側のレベルが99なので、

99 * 2 / 5 + 2 = 39.6 + 2 = 41.6 → 41

となります。

 

 この計算結果を含めて、いろいろな値を基礎ダメージの式全体に代入すると、

基礎ダメージ

= ( 41 * 150 * 555 / 1 ) /50 +2

= 3413250/50 + 2

= 68265 + 2

= 68267

となります。

 

 

計算3 急所補正

 

 エースバーンはきゅうしょアップ状態の効果で急所ランクが+2されています、さらに、持ち物ピントレンズの効果で急所ランクが+1されています。合わせると急所ランクは+3で、このとき、攻撃は100%急所に当たります。

 

 急所補正では、6144をかけて4096でわります。基本的に1.5倍すると考えてよいです。

 先ほどの68267にこの計算をすると、

68267 * 6144 / 4096 =  102400.5 

となります。

 急所補正の計算後の小数点は五捨五超入(0.5以下は切り捨て・それより上は切り上げ)するので、102400となります。

 

 

計算4 乱数補正

 

 乱数補正では、0.85, 0.86, ..., 0.98, 0.99, 1 という16の数字からランダムに一つが選ばれ、それがかけられます。

 

 102400にこれらの値をかけたときの結果は、それぞれ87040, 88064, 89088, 90112, 91136, 92160, 93184, 94208, 95232, 96256, 97280, 98304, 99328, 100352, 101376, 102400 です。

 大きな数が16個もありますが、ここではもともと102400だったことだけ覚えていれば大丈夫です。

 

計算5 タイプ一致補正

 

 普段は威力にかけがちなタイプ一致ボーナスは実はダメージに補正がかかります。

 

 今回、攻撃側の持っているタイプと攻撃する技のタイプが一致しています(ほのおタイプ)。

 普通は1.5倍(6144/4096倍)ですが、今回は攻撃側の特性が「てきおうりょく」なので、その効果により2倍(8192/4096)になります。

 

 計算すると、それぞれ、174080, 176128, 178176, 180224, 182272, 184320, 186368, 188416, 190464, 192512, 194560, 196608, 198656, 200704, 202752, 204800

になります。

 

 

計算6 相性補正

 

 ゴースはタイプ変更によって、むし・はがねタイプになっています。これはおそらく、アイアントなどのそのタイプを持つポケモンにわざ「ミラータイプ」を使ってタイプをコピーしたのでしょう。ゴースはタマゴ技でミラータイプを覚えます。

 そして、わざ「もりののろい」によってくさタイプが追加されています。 さらに、わざ「タールショット」によるタールショット状態によってほのおタイプで2倍のダメージを受けるようになっています(これは相性扱い)。

 むし・はがね・くさタイプに対して、ほのおタイプは効果抜群(ダメージ2倍)です。2倍が3回なので、8倍。さらに、タールショット状態はここまでの相性判定と重複しないので、さらに2倍で16倍になります。

 つまり、ゴースはほのおタイプが16倍弱点です。

 

 先ほどまでの計算結果に16をかけて、

2785280, 2818048, 2850816, 2883584, 2916352, 2949120, 2981888, 3014656, 3047424, 3080192, 3112960, 3145728, 3178496, 3211264, 3244032, 3276800

となります。

 

 

計算7 16bitダメージオーバーフロー

 

 本記事のテーマです。

 計算6までで普通のダメージ計算は終了しました。今回関係しなかった補正(天候補正など)は載せていませんが、それらの処理も過ぎています。

 

 ダメージが計算された後、その値を65536で割った余りが与えるダメージになります。他のダメージ計算の補正の処理と同じように、この仕様が調査によって明らかになったそうです。

 

 先ほどの値

2785280, 2818048, 2850816, 2883584, 2916352, 2949120, 2981888, 3014656, 3047424, 3080192, 3112960, 3145728, 3178496, 3211264, 3244032, 3276800

について、65536でわった余りを求めると

32768, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 

となります。半分が0で半分が32768です。

 

 これは、乱数の結果16パターンのうち8パターンではダメージが0になることを意味しています。もう片方の8パターンでは、ダメージは少なくなるものの大ダメージです。

 

 

動画での値の設定について

 

感動ポイント 

 

 乱数補正の前までの段階で、値は102400でした。

 これは、2の10乗に100をかけた数です。この値が本当に素晴らしいです。

 

 まず、100という約数があることで、乱数の0.85や0.93のような数(nを整数として n / 100 と表します)をかけたとき、

(1024*100) * (n/100) = 1024 * n

となります。nは整数なので計算結果は整数です。よって、小数点処理もおきません。

 このようにして、1024を約数に持った状態を保つことができます。

 

 さらに、その後の計算では2倍または16倍しか登場しないので、「2の累乗 * n」の形も保ったままにできます。

 2の10乗である1024に、2の1乗である2と2の4乗である16をかけると、2の15乗になります。よって、最終的にダメージは 「2の15乗 * n」となるのです。

 nは85から100までの整数です。85から100までの整数は全部で16個ありますが、このうち8個は偶数です。

 もしnが偶数(2が約数である数)なら、それも合わせることでダメージは2の16乗を約数に持つことになります。2の16乗 = 65536 を約数に持つということは、65536でわり切れるということです。わり切れるなら、わった余りは0になります。

 

 以上のようにして、乱数のうち半分で0ダメージを実現させることができています。素晴らしいです。

 

 

改善ポイント

 

 もとのツイートを投稿したDaWoblefetさんも言及している内容です。

 

  ゴースの特性をわざ「スキルスワップ」などを使うことでもふもふにします。もふもふにはほのおタイプの技のダメージを2倍にする効果があります。

 計算位置は、ほとんど最後のほうです。今回でいうと、相性補正より後です。

 

 これを利用することで、計算後のダメージをさらに2倍させることができます。これにより、ダメージは確定で65536を約数に持つようになるので、ダメージは常に0になります。

 

2023/05/06追記

実戦した方がいました。

 

 

  この計算での「2倍」は実際には8192をかけて4096でわる処理であり、その関係でここでひっそりと32bitのオーバーフローが起きている可能性があります。この32bitオーバーフローは3DS時代に確認されたもので、Switch時代でも存在しているかについて、確定的な情報は見つかりませんでした。32bitオーバーフローが起きていてもいなくてもダメージはどちらにしても全て0になるので、今回の結果には関係ありません。

 この32bitオーバーフローについてはまた別の記事で解説したいと思います。

2023/05/06追記

書きました。 

tetspond.hatenablog.com

 

 

 

参考文献

 

DaWoblefetさんのダメージ計算コンプリートガイド

www.trainertower.com

 

 ダメージ計算の計算の全て、そしてすばやさやおもさを含めたステータスの計算やおんがえしなどの特殊な技の威力の計算まで網羅している、まさに"コンプリート"ガイドと言えるものです。

 ただし、ジャイロボールの計算式は間違っています。日本では、(25*相手のすばやさ/自分のすばやさ) +1 という式が先人の検証によって求められています。最近は海外のポケモンサイト(Smogon,bulbapediaなど)でも+1の式が載っているので、こちらが正しそうです。

 このガイドは第七世代末期のものなので、現在の第八世代バージョンがまたれるところです。

 

ポケモンwiki

ダメージ - ポケモンWiki

 ダメージオーバーフローについて説明されている日本で唯一の文章でした。編集者の皆さんいつもありがとうございます。

 

日本語のダメージ計算式解説

ダメージ計算式 - ポケモン対戦考察まとめWiki|最新世代(ソード・シールド)

 今回の日本語ツイートを投稿していたOZYさんの検証結果をまとめたものです。OZYさんは、日本のポケモンダメージ計算検証をリードする方です。すばやく計算できるダメージ計算アプリの開発も行っています。

 

 

おわりに

 

 1つのツイートの解説で約7000字の記事が出来上がりました。

 102400にすることで乱数が適用されても2の累乗の形を保てるようにするのが本当にうまくて感動しました。

 

 今回の0ダメージがポケモンでの最小ダメージなので、最大最小カテゴリにも入れました。

最大最小 カテゴリーの記事一覧 - テツポンドのブログ

 今までこのカテゴリでは、ポケモンのステータスの最大最小についての記事を書いていて、3本目のぼうぎょ編まで公開していました。ステータス最大最小シリーズが終わってからこの記事を公開したほうがカテゴリの中での並び順がいいかなとも思っていました。しかし、以前【ポケモン】最速デオキシスがトリックルーム中に最初に行動 知られていないすばやさと行動順の仕様 #1809現象理論編 - テツポンドのブログという記事を公開した際の出来事が頭をよぎりました。レジエレキの登場でこの記事で書いた仕様が話題になったのですが、冠の雪原解禁の半月前にはだいたい執筆済みだったにもかかわらず記事の公開が冠の雪原解禁(=レジエレキ登場)数日前だったせいで、この記事が検索結果に表示されない状態でした(この記事がブログの実質初記事だったこともあり)。せっかく既存のブログになかった内容を書いたのに多くの人に見てもらうチャンスを逃してしまい、公開の遅さを後悔しました。そんなことがあったので、既存の記事になく話題になりうるテーマで記事を書いたときは早めに公開することにしました。

 

 ダメージオーバーフローに関してはまたいろいろ書けそうなので、すばやさ・トリックルーム仕様のとき(すばやさ カテゴリーの記事一覧 - テツポンドのブログ)のように、複数記事を書きたいと思っています。

 今後のダメージオーバーフローの記事もよろしくお願いします。

 

 追記(公開1時間半後)

 記事をTwitterに投稿したところ、過去最速の拡散をしていただいています。テンションが上がり、完成していた続編を即公開しました。興味があればこちらもどうぞ。

tetspond.hatenablog.com

 

 ご覧いただきありがとうございました。

 

Twitterアカウント

テツポンド (@tetspond) | Twitter

 

【ポケモン】バインド状態の解除までのターンの数え方 〜バインド技使用ターンを含めて5ターン経ってもまだ解除されないかも〜

うずしおを受けたときっていつまで交代できないの?

 

はじめに

 

 バインド - ポケモンWiki

 バインド状態は、「まとわりつく」「うずしお」などの技で発生し、交代を妨げて拘束ダメージを数ターン与える状態変化です。

 

 「バインド状態は4~5ターン持続する」

 これは、ゲーム内の技「うずしお」などの説明からも分かります。しかし、このターンの数え方はどのようになっているのでしょうか。

 

 ポケモンのターンの数え方にはいろいろあります。同じ4ターンでも、おいかぜとかなしばりでは数え方が異なります。かなしばりのターンの数え方については、記事を書いています。先攻かなしばりか後攻かなしばりかで、何ターン後に終わるかが変わります。

tetspond.hatenablog.com

 

 バインド状態も、「4~5ターン」と書かれただけではわかりません。調べていきます。

 

 

 

検証

 ポケモンブラック(第五世代)で実験しました。以降の世代でターンに関わる仕様が変わっていれば、どこかでそれについての情報を探せそうですが、それがなかったので、今も第五世代と同じ仕様と見て良いのではないかと思います。全体的に見て、第五世代以降は仕様は比較的安定しています。

 

検証1

 

1ターン目

ホエルオー うずしお

カブルモ こわいかお

拘束ダメージが入る

 

2~5ターン目

終了時 拘束ダメージが入る

 

6ターン目

終了時 バインド状態解除(拘束ダメージなし)

 

 こちらが先制してバインド状態にしたときに、5回ダメージが入って5ターン後のターン終了時までバインド状態が続いた。5ターン後というのは、バインド技を使ったターンを1ターン目とした場合の6ターン目にあたる。

 

検証2

  

1ターン目

敵 攻撃

ホエルオー うずしお

拘束ダメージ

 

2~4ターン目

拘束ダメージ

 

5ターン目

終了時 バインド解除(拘束ダメージなし)

 

 バインド技の対象ポケモンの行動の後にバインド状態にしたときに、4回ダメージが入って4ターン後のターン終了時までバインド状態が続いた。4ターン後というのは、バインド技を使ったターンを1ターン目とした場合の5ターン目にあたる。

 

検証3

 

1ターン目

ホエルオー 味方にうずしお

味方 何か

拘束ダメージ

 

2~4ターン目

終了時 味方に拘束ダメージ 味方は交換できない状態

 

5ターン目

このターンの行動選択でも交換できない

終了時 バインド解除(拘束ダメージなし)

 

 先制してバインド状態にしたときに、4回ダメージが入って4ターン後のターン終了時までバインド状態が続いた。4ターン後というのは、バインド技を使ったターンを1ターン目とした場合の5ターン目にあたる。

 

6ターン目

味方交換

ホエルオー うずしお はずれる

 

7ターン目

味方何か

ホエルオー うずしお

拘束ダメージ

 

8~11ターン目

拘束ダメージ

 

12ターン目

バインド解除(拘束ダメージなし)

 

 バインド技の対象ポケモンの行動の後にバインド状態にしたときに、5回ダメージが入って5ターン後のターン終了時までバインド状態が続いた。5ターン後というのは、バインド技を使ったターンを1ターン目とした場合の6ターン目にあたる。

 

13ターン目

味方 何か

ホエルオー うずしお

拘束ダメージ

 

14~16ターン目

拘束ダメージ

 

17ターン目

バインド解除(拘束ダメージなし)

 

 バインド技の対象ポケモンの行動の後にバインド状態にしたときに、4回ダメージが入って4ターン後のターン終了時までバインド状態が続いた。4ターン後というのは、バインド技を使ったターンを1ターン目とした場合の5ターン目にあたる。

 

 

検証結果から

 

 先攻だったときも後攻だったときも、ダメージを与える回数は4回と5回があった。解除は4ターン後か5ターン後。

 

  先制かどうかで分けたのは、かなしばりについては実際に先制かどうかで終了ターンが変わるからです。

tetspond.hatenablog.com

 バインド状態のターンの数え方は、かなしばりなどと違い、その状態になったターンの行動が前か後ろかは関係ないことが分かりました。

 

 トリックルームなどの技は効果が「5ターン」と書かれていますが、技を使ったターンを含んで5ターンであり、4ターン後のターン終了時に消えます。

 しかし、バインド技はターンが技の説明文でいう「5ターン(ターン数が長いほう)」になったときは、技を使ったターンを含めると6ターンの間続いて、5ターン後のターン終了時に消えます。別の言い方をすると、技を使ったターンを含めずに5ターンの間続きます。

 バインド状態はトリックルーム式ターンカウントでいうと5~6ターン続くことが分かりました。

 

 

まとめ

 

  バインド状態になった場合、4ターン後または5ターン後のターン終了時までバインド状態が続く。バインド状態が終わるターンはダメージを受けないが、それ以外のターンはターン終了時にダメージを受ける。

 つまり、行動選択画面で交代を制限される回数は4回か5回、ダメージを受ける回数は4回か5回である。

 

 

おまけ 

 

 今回の作業中に発見したことです。

 第五世代にて、左側のポケモンの行動で右側に道具を使い、右側のポケモンを交代すると、交代の後に道具が使われ、交代先のポケモンに道具が使われます。

 

 

おわりに

 

 まとめを見ると、ゲーム内の説明の通りじゃん!ってなりそうですが、かなしばりやトリックルームなどのターンの数え方と比較すると、これは自明ではありません。トリックルーム式カウントなら5~6ターンであると書けばそれだけでこのややこしさが分かります。

 ここの仕様について実験結果をまとめている文章が他に見つけられなかったので、こういう記事を作れてよかったと思っています。のめりこまないように最新ゲームを買うのを控えているため、第五世代での検証になったのは良くないですが…。

 そのうち、ポケモンwikiの記述をここの内容をもとに分かりやすくしたいと思います。

 

 お読みいただきありがとうございました。

 

他のターンカウント関係の記事

【ポケモン】かなしばり状態のターンの数え方 〜同じ4ターンでもおいかぜ状態とは違う〜 - テツポンドのブログ

 

Twitterアカウント

テツポンド (@tetspond) | Twitter

 

【ポケモン】実現可能なぼうぎょの最大値・最小値はいくつ?

最強の盾と最弱の盾が見たい

 

はじめに

 

 ステータス最大値最小値第三弾です。

 第一弾はすばやさの最大値最小値について、第二弾はこうげきの最大値最小値について扱いました。

 

tetspond.hatenablog.com

tetspond.hatenablog.com

 

 今回は、ぼうぎょについて考えます。防御最大値と防御最小値はいくつになるのでしょうか。

 

 

 

ツボツボで最大値実現? 

 

 防御種族値が一番高いのはツボツボです(メガシンカ含めればメガハガネールも同率1位)。すばやさ最小値とこうげき最大値のときにも登場したツボツボ。レベル100で防御特化した場合、実数値はなんと614になります。

 

 しかし、前回・前々回同様、より大きな補正をかけられる専用道具がやはり強いので、ぼうぎょ最大値を実現するのは別のポケモンです。ツボツボはサポートに回ります。

 

 

ガードシェア 

 

 鍵を握るのは今回もツボツボです。注目するのは、ツボツボがレベルアップで覚える技「ガードシェア」。これは、相手と自分のぼうぎょ・とくぼうをそれぞれ両者の平均値にする技です。例えば、ぼうぎょ200の相手に対してぼうぎょ50の自分がこの技を使うと、相手と自分のぼうぎょは125になります。

 

  レベル100で防御特化のツボツボはぼうぎょの実数値が614。ツボツボがガードシェアを特定のポケモンにうつ→交換して能力をリセットしてからまた登場 の動きを繰り返せば、任意のポケモンのぼうぎょ実数値を613まで上げることができます。多くても10回行えばMAXの613になります(前回の記事【ポケモン】実現可能なこうげきの最大値・最小値はいくつ? - テツポンドのブログ参照)。

 

 

ぼうぎょ補正

 

 実数値の方は準備ができたので、補正を考えていきます。上昇する補正は以下のものなどがあります。今までと比べると、ランク補正・特性・持ち物以外の補正がないのが特徴です。

 

ランク補正:最大4倍(6段階上昇)

特性:2倍「ファーコート」

   1.5倍「ふしぎなうろこ」(状態異常で)「くさのけがわ」(グラスフィールドで)

持ち物:2倍 「メタルパウダー」(メタモン専用)

    1.5倍 「しんかのきせき」(進化前専用)

 

 特性は倍率が高いファーコートを使います。第六世代から登場したトリミアンアローラペルシアンの特性です。

 持ち物は2倍のメタルパウダーを採用します。なぜか専用道具を2つも持っているメタモン、すばやさ最大値編に続いて登場です。

 

 

ぼうぎょ最大値

 

メタモンはメタルパウダーを持つ

・「コットンガード」を2回してからメタモンにバトンタッチ(バイウールーなど)。

スキルスワップトリミアンの特性「ファーコート」をメタモンに移す(フーディンなど)。

 ・ツボツボが「ガードシェア 」→ 交換 の動きを10回ほど繰り返す。

 

 これにより、ぼうぎょ実数値613で、ランク6段階上昇で4倍、ファーコートで2倍、メタルパウダーで2倍、

 613 x 4 x 2 x 2  = 9808

 ぼうぎょ最大値は9808

 惜しくも5桁に届かず......

 

 

最大値の実現方法

 

 メタモンの「へんしん」が成功するとメタルパウダーの効果が消えてしまうため、「へんしん」は成功させてはいけません。また、へんしんが使えない場合は「わるあがき」をしてしまい、HPの1/4(小数点四捨五入)のダメージを受けてしまいます。かなり面倒です。

 

 相手の場のポケモンにも協力してもらう場合は、バリヤード@ヒメリのみ(みがわり、リサイクル、なげつける)を相手の場に出して、みがわりでメタモンのへんしんを不発にしつつヒメリのみをリサイクルして投げつけてへんしんのPPを維持するという方法が取れます。これが楽な方法ですが、味方だけで実現することを目指しました。

 

 「へんしん」のPPを0にしてから、回復させながら「わるあがき」を連打させます。回復はアクアリング(バトンタッチで引き継がれる)のHP1/16回復とたべのこしのHP1/16回復を合わせます。それだけだと回復が間に合わないので、いやしのはどうで回復させるのを挟みます。

 HP11~13のメタモンがいればわるあがきの反動ダメージが3で1ターンの回復が2なので回復の効率が良かったのですが、メタモンのタマゴは存在せず野生でもレベル10(ハートゴールド・ウルシルバーにて捕獲)が最低なので無理でした。

 味方5体で57ターンかけて実現します。

 

使用ポケモン

ハピナススキルスワップ、いやしのはどう、みがわり) シャワーズより遅くメタモンより速い みがわりはPP16

メタモン@たべのこし(へんしん) HP80

アローラペルシアン@メタルパウダー(すりかえ)

シャワーズ(アクアリング、とける、バトンタッチ)

ツボツボ(ガードシェア)

 

動き

1~10ターン目 ハピナスはみがわり。メタモンハピナスにへんしん(失敗)。

11ターン目 メタモンアローラペルシアンに交換。ハピナスアローラペルシアンスキルスワップ

12ターン目 アローラペルシアンシャワーズに交換。以降5ターンハピナスはみがわり連打。

13~16ターン目 シャワーズはアクアリング1回ととける3回をする。

17ターン目 シャワーズメタモンにバトンタッチ。ハピナスメタモンスキルスワップ

18ターン目 ハピナスをツボツボに交換。メタモンはわるあがきで残りHP60。アクアリング+たべのこし(以下回復と表現)でHP70。

19ターン目 ツボツボはメタモンにガードシェア。メタモンはわるあがきで残りHP50。回復でHP60。

20ターン目 ツボツボをハピナスに交換。メタモンはわるあがきで残りHP40。回復でHP50。

21~56ターン目

以下4ターンで1セットの行動を9回くり返し。56ターン目はハピナスではなくアローラペルシアンに交換する。

 ハピナスはツボツボにいやしのはどう。残りHP80。メタモンはわるあがきで残りHP60。回復でHP70。

 ハピナスをツボツボに交換。メタモンはわるあがきで残りHP50。回復でHP60。

 ツボツボはメタモンにガードシェア。メタモンはわるあがきで残りHP40。回復でHP50。

 ツボツボをハピナスに交換。メタモンはわるあがきで残りHP30。回復でHP40。

57ターン目 アローラペルシアンのすりかえでメタモンの道具をメタルパウダーにする。最大値実現!

 

 メタモンは18ターン目から56ターン目まで39回わるあがきをしました。生き地獄で作られた最強の盾。

 

 追記:いやしのはどうの回復は1/2回復のときは小数点切り上げだったので、メタモンのHPを80に変更しました。

 

ぼうぎょ最小値

 

 ぼうぎょ種族値最下位はラッキーです。ラッキーをはじめとして、種族値49以下・個体値0・努力値0・レベル1・ぼうぎょが下がる性格なら、実数値は4です。

 ランク補正以外に下げる補正はありません。ランク6段階下降1/4をかけて、1。 

 ぼうぎょ最小値は1

 

 すべての種族値が48であるメタモンは、ぼうぎょ実数値を4にできるので、ぼうぎょ最小値も実現できます。

 

 

関連記事を探す

 

 日本語では見つけられず、「pokemon defense max」で検索すると2014年の英語圏ポケモンサイトの質問コーナーがヒットしました。

What's the maximum amount of the defense stat that you can have? - PokéBase Pokémon Answers

 ランク最大のメガハガネールの2456が一番なのか?いや、実はイワーク(onix)にしんかのきせきを持たせてランク最大にした2760が最大だ。といった内容です。

 メタルパウダーとガードシェアの存在が忘れられています。第六世代XYの発売は2013年10月12日なので、2014年には特性「ファーコート」はありますが、その補正も忘れられています。

 

 

おわりに

 

 最強の盾は9808、最弱の盾は1でした。

  特性ファーコートの登場時にそれが固有特性であったポケモントリミアンの姿が全く浮かびませんでした。

 

 お読みいただきありがとうございました。他の最大最小シリーズもどうぞ。次回はとくこうをやる予定ですが、他のステータスと違ってとても面倒なことが起きそうです。

 

最大最小シリーズ

【ポケモン】実現可能なすばやさの最大値・最小値はいくつ? - テツポンドのブログ

【ポケモン】実現可能なこうげきの最大値・最小値はいくつ? - テツポンドのブログ

 

 

Twitterアカウント

テツポンド (@tetspond) | Twitter

 

【ポケモン】かなしばり状態のターンの数え方 〜同じ4ターンでもおいかぜ状態とは違う〜

先攻かなしばりか後攻かなしばりかでかなしばり状態の終了ターンが違うの!?

 

はじめに

 

 かなしばり状態は、技「かなしばり」か特性「のろわれボディ」で発生する状態変化です。この状態のとき、その状態になるときに直前に使っていた技を使用できなくなります。

 この状態は4ターン続くとされているのですが、このターンのカウントの仕方について今回記事を書きます。

 

 

 

検証

 検証はポケモンブラックで行っています。第五世代以降の各種仕様は比較的安定しているため、変化したという情報がなければそれ以降の世代も同じ仕様である可能性が高いです。

 少し調べましたが、かなしばり状態の仕様が変更されたという情報は見つかりませんでした。

 

検証1 先攻かなしばり

 

0ターン目

自分 何か

相手 技A

 

1ターン目

自分 かなしばり

相手 攻撃(技Aなら、「かなしばりで出せなかった」となって失敗する)

 

2~4ターン目

相手は技A(かなしばりの対象となった技)を選択も使用もできない。

4ターン目終了時にかなしばり状態解除

 

5ターン目

相手は技Aを選択・使用できる。

 

 かなしばり状態になったターンの3ターン後にかなしばり状態が終了した。

 かなしばりの影響を受ける行動の回数は4回だった。

 

検証2 後攻かなしばり

 

1ターン目

相手 技A

自分 かなしばり

 

2~5ターン目

相手は技A(かなしばりの対象になった技)を選択も使用もできない。

5ターン目終了時にかなしばり状態解除

 

6ターン目

相手は技Aを選択・使用できる。

 

 かなしばり状態になったターンの4ターン後にかなしばり状態が終了した。

 かなしばりの影響を受ける行動の回数は4回だった。

 

検証3 のろわれボディ

 

1ターン目

相手の技Aによりのろわれボディが発動し、相手はかなしばり状態になる。

 

2~4ターン目

相手は技Aを選択も使用もできない。

4ターン目終了時にかなしばり状態が解除される。

 

5ターン目

相手は技Aを選択・使用できる。

 

 かなしばり状態になったターンの3ターン後にかなしばり状態が終了した。

 かなしばりの影響を受ける行動の回数は3回だった。

 

 

検証結果から

 

 状態が終了するのは、先攻かなしばり・のろわれボディだと3ターン後で、後攻かなしばりだと4ターン後。

 かなしばりの影響を受ける行動の回数は、先攻かなしばり・後攻かなしばりだと4回で、呪われボディだと3回だった。

 

 技「かなしばり」については、相手の行動4回分に干渉する技と解釈すると説明できます。 

 それをもとにして、特性「のろわれボディ」について考えます。のろわれボディが発動する瞬間は相手の攻撃の処理の途中です。この相手の攻撃もカウントすると解釈すれば、その1回分+のろわれボディの影響を受ける3回分で合わせて4回分になります。

 

 

まとめ

 

 かなしばり状態のターンは行動順が来るたびにカウントされる。カウントが4になったターンのターン終了時にかなしばり状態は解除される。

 のろわれボディが発動してかなしばり状態になるとき、その瞬間の行動も行動順のカウントとして含まれる(つまり、かなしばり状態の影響を受ける行動は3回だけである)。

 

 

その他

 

 バッグからのアイテムの使用でも行動順がきたときのカウントはされることを確認しました。

 ギガインパクトなどの技の反動で動けないときも行動順がきたときのカウントはされることを確認しました。

 

 

追記:厳密な解釈

 

 2020/12/20追記

 今回の記事を、ポケモンwiki編集者のZaggyoさんが見てくださり、関連する仕様について詳しく調べてくださいました。

 第七世代以降の状態確認画面によると、先行かなしばりをされた次のターンの行動選択時には3/4、後攻かなしばりをされた次のターンの行動選択時には4/5という表示がされるようです。

 これをもとにZaggyoさんは、行動順によってかなしばり状態が続くターンが変わるだけでターンカウントのタイミングはターン終了時であると判断し、ポケモンwikiの記述はこのようになりました。

 

かなしばり (状態変化) - ポケモンWiki

  • 第五世代以降では、かなしばり状態になった状況により、効果が続くターンが変わる。そのターン行動を終えたポケモンかなしばりを受けた場合、かなしばり状態になったターンを含めて5ターンの間かなしばり状態になる。そのターン行動していないポケモンがかなしばりを受けた場合や、かなしばりをマジックコートで跳ね返された場合、のろわれボディが発動した場合は、かなしばり状態になったターンを含めて4ターンの間かなしばり状態になる。
    • 技かなしばりによりかなしばり状態になった場合、行動順に関わらず4ターンの間技が出せなくなる効果がある。
    • かなしばりをマジックコートで跳ね返されたときや、のろわれボディでかなしばり状態になった場合は、3ターンの間しか技が出せなくなる効果がない。ただし、さいはいやおどりこによる追加行動で技が出せなくなるターンを含むときは、このときも4ターンの間技が出せなくなる効果があるといえる。

 

 本記事ではターンカウントのタイミングを行動順がきたときとして解釈していたため、記述の仕方が違いました。実際の行動を把握するだけなら本記事のまとめでの解釈でも問題はないと思いますが、ゲームの内部処理としてはこちらが近そうです。

 

 

おわりに

 

 同じ4ターンでもおいかぜ状態とは処理が違うというのがよく分かります。おいかぜ状態はどの場合も使用したターンを含めて4ターンがたつとなくなります。

 現在ポケモンwikiにて、かなしばり状態のターンの数え方はおいかぜ状態と同じような書き方がされているので、そのうち修正しようと思います。(追記:修正されました)

 

 かなしばりのターンについて気になったのは、かなしばりが関連するテーマについて、数本セットのシリーズ記事を書こうと思っていたからです。そちらもそのうち書きます。

 

 お読みいただきありがとうございました。

 

Twitterアカウント

テツポンド (@tetspond) | Twitter