この記事は Pokémon Past Generation Advent Calendar 2025 の 16日目の記事です。
カチヌキシミュレーター
pit-true.github.ioポケモン第3世代の正しいダメージ計算・正しい乱数発生・命中率や急所率を考慮した瀕死率や、複数ターンの瀕死率計算を実現したWebアプリです。
複数ターン瀕死率計算では、オボンなどの回復や定数ダメージを考慮しています。
こだわりポイントは複数ターン瀕死率計算もですが、入力時のUI/UXが気を配ったポイントです。
対戦勢でもある自分が使いやすいよう、
- 実数値から個体値・努力値を自動算出する機能
- 個体値の30ボタンや0ボタン、努力値の252ボタンや0ボタン、性格の入力しやすさ
- 個体値によるめざパのタイプと威力の表示
- みがわりを壊せるかのチェック
- 連続技を考慮した瀕死率
- 覚える技のみリスト表示
- 技名やポケモン名の一部入力で候補がすぐ表示される
- 攻守交替機能
- 実際のゲームに沿った48分割されたHPバーの表示
など、使いやすいアプリを目指しました。
20年前のゲームでありつつも令和の時代にも遊ばれ環境が動くゲームなので、正しい計算、使いやすいものを目指しました。エメラルド最高!
下記文章はClaudeに要約してもらいつつ手修正を行いました。
主な特徴
- 複数ターン瀕死率計算
- 最大5ターンまでの技を指定可能
- 各ターンごとの命中率・急所率を考慮した確率計算
- 連続技(ボーンラッシュ等)にも対応
- みがわり仮定モードによりみがわりを壊せるか?をわざわざHPを1/4して算出せずとも計算が容易に
- 回復・定数ダメージの完全対応
- オボンのみ(30回復)を考慮
- たべのこし(毎ターン最大HPの1/16回復)
- やどりぎのタネ(ダメージと回復の両面)
- 状態異常ダメージ(やけど、どく、もうどく)のターン指定
- まきびし、のろい、あくむの複合ダメージ
- 直感的なステータス入力
- モバイル完全対応
- 画面下部にスライダー型のコントロールバーを配置
- 数値フィールドをタップするとスライダーで直感的に調整可能
- ±ボタンによる微調整も可能
- 検索型入力システム
- 攻守交代機能
- 攻撃側と防御側のステータスをワンクリックで入れ替え
- 性格補正の管理
詳細設定
「詳細設定を開く」をクリックすると、すべてのステータス(HABCDS)の個体値・努力値・性格補正を設定できます。
ダメージ表示
- ダメージ範囲:最小ダメージ~最大ダメージを表示
- 割合表示:最大HPに対する%表示
- 確定数:確定○発、乱数○発(○○%)の形式で表示
- HPバー:48分割のHPゲージで視覚的に確認(FRLG/Em準拠)
複数ターン瀕死率計算機能
複数ターンにわたる瀕死率の計算機能を実装しています。
基本的な瀕死率計算
- 複数技の設定
- 1ターン目の技:メイン技選択欄に入力
- 2~5ターン目の技:追加技選択欄に入力(最大4つ)
- 命中率の考慮
- 外れた場合のダメージは0として計算
- 命中率ランク補正(-6~+6)も反映可能
- 急所率の考慮
- 通常:1/16の確率で急所
- ピントレンズ考慮
連続技の対応
連続技(ロックブラスト、ボーンラッシュ等)は下記処理をしています。
- ヒット回数の確率分布
- 2回ヒット:37.5%
- 3回ヒット:37.5%
- 4回ヒット:12.5%
- 5回ヒット:12.5%
- 計算方法
- 各ヒット回数ごとに全ダメージパターンを計算
- ヒット回数の確率を掛け合わせて総合確率を算出
- 連続技の各ヒットでも急所判定が発生
瀕死率の計算アルゴリズム
複数ターンにわたる瀕死率は、すべてのダメージパターンの組み合わせを網羅的に計算して算出されます。
- 命中率と急所率を考慮した計算式:各ターンの瀕死率 = Σ(命中率 × 各ダメージパターンでの瀕死確率)。ここで各ダメージパターンは、通常ダメージ16パターン × (1 - 急所率) + 急所ダメージ16パターン × 急所率 で計算されます。まあつまり、各乱数のダメージを全部出して、a/16で瀕死率算出、次に各乱数の急所ダメージを算出、b/16で急所瀕死率算出、(a/16+b/16)と足し算したあとに命中率を掛け算しています。(1ターン目だと処理が分かりやすいですね)
オボンのみの発動処理
オボンのみの処理は、各ダメージパターンごとに個別に判定されます。
- ダメージパターンの列挙:通常ダメージ16パターン(乱数補正0.85~1.00)と急所ダメージ16パターンの計32パターンを全て列挙します。
- 残HP分布の計算:各ダメージパターンについて「現在HP - ダメージ」を計算し、残HP分布を作成します。このとき、通常ダメージパターンには (1/16) × (15/16) の確率、急所ダメージパターンには (1/16) × (1/16) の確率が割り当てられます。
- オボン発動判定:各残HPに対して、HP ≤ 最大HP/2 の場合にオボンのみが発動し、30回復します。この判定は残HPごとに独立して行われます。
- 定数ダメージの適用:オボン回復後のHPに対して、やけど・どく等の定数ダメージを適用します。
- 次ターンへの遷移:最終的な残HPと確率の組み合わせを次のターンに引き継ぎます。
このように、ダメージの乱数分布と急所の発生により、同じ技でも残HPが異なるパターンが多数発生し、それぞれに対してオボンのみの発動判定が行われるため、正確な瀕死率計算を目指しています。
みがわり仮定モード
「みがわり仮定」にチェックを入れると、防御側がみがわりを使用していると仮定して計算します。わざわざ1/4して計算しなくてよいのが好みです。
モバイル対応機能
スマホの使用を考慮した専用UIを実装しています。
スライダーコントロールバー
- 配置:画面下部に固定表示
- 操作方法
- 数値入力欄をタップするとコントロールバーが表示される
- スライダーをドラッグして数値を調整
- +/-ボタンで1ずつ増減
- フィールド名と現在値をリアルタイム表示
- 対応項目:実数値、個体値(0~31)、努力値(0~252、4刻み)、レベル(1~100)、現在HP
モバイル専用ボタン
- 攻守交代ボタン:画面上部に配置
- ダメージ計算ボタン:画面上部に配置、タップしやすいサイズ
- ナビゲーションメニュー:攻撃側・防御側・結果の各セクションへジャンプ
使用例
例1:命中率と急所率を考慮した計算
C193サンダー(めざ草C30個体のC248振り)の雷を、H187(252)-D133(180)のメタグロス(サンダーの10万2耐え調整)に当てて、複数ターン瀕死率を確認したいと思います。
ちなみにこの調整のメタグロスは先日のアドカレにあった2025年の3世代個体選記事から持ってきています。
gba-pinsir-is-weak.hatenadiary.jp
つまるところ、サンダーの10万なら2耐えすると思って出したら確定2発の雷を打たれて調整を崩されるパターンですね。ダメージは確2でも、実際の瀕死率はどうでしょうか。

そうですね。
命中70なので確2なのであれば、0.7*0.7=0.49の49%……と思いきや、
1/16で発生する急所もあるため、2ターン目までに倒せる確率=瀕死率は51.6%ほどになりました。
実際には雷には3割麻痺の追加効果があり、麻痺になる確率、麻痺で動けなくなる確率、相手のメタグロスのA調整、いわなだれがあればその急所、ラムのみの所持……を考えると厳密な結果とは言えませんが、このように考えの補助になるかと思います。
なので、勝率でなく複数ターン瀕死率と言っています。
ちなみにこのシチュエーション自体はstoicさんが詳細に考察しています。
例2:やどりぎのタネを考慮した計算
C193サンダーの10万を2耐えする、食べ残しを持ったH183(H252)-D120(0)のルンパッパを考えてみます。
この調整はゆみひこさんの過去のルンパッパです。
やどりぎやたべのこしを考慮する際は、最大HPの1/8や1/16の回復量を手計算したうえで、一発のダメージ量を考えて、脳内でこねくり回さないといけません。
ではカチヌキシミュでの表示を見てみましょう。
下記のように、やどりぎを入力しないと、黄色ゲージ~緑ゲージの範囲になり、高乱数2発になることがわかります。

高乱数2発(82.4%)ですが、急所も考慮した場合、2ターン目に10万ボルトを入力すると2ターン目の瀕死率は84.6%となりました。
ここでやどりぎの回復も設定してみましょう。

HPバーが緑の範囲になり、2ターン目瀕死率は84.6%から12.5%に下がりました!
このように、瀕死率が下がることが確認でき、ポケモンの調整が捗ります。
また、HPバーは1ターン目終了後の状態を示すため、HPバー表示から黄色が消えて緑の範囲になったということは、2耐えするということになります。
というデモンストレーションでした。いかがでしたか?
ほかにもたべのこし、オボン、フィラのみなどがありますが、割愛します。
実際入力して調整してみるのがよいかと思います。
おわりに
というわけで、カチヌキシミュレーターという3世代ダメージ計算ツールを作成しました。
ダメージ計算順が正しい既存アプリは少ないのと、ダメージの乱数幅(0.85~1.00)の発生確率が等間隔でないと思われていた時代の瀕死率計算があったり、結果が正しいアプリケーションはあっても古いので使いづらいといった課題がありました。
こちらの名前の由来ですが、3世代の後期シングルというルールを強くなりたいという思いから、RSEのカチヌキファミリーから取って、カチヌキシミュレーターと名付けました。
正式略称はカチヌキシミュとしていますが、巷ではヌキシミュやチヌキシタなどと好き勝手呼ばれているようです。他にあるのはヌキミュで、これはテミニュみたいで面白いなと思います。ただ、ヌキが最初に来るといやらしい雰囲気になりますね。
今後としてはバグ修正がメインになりますが、追加したい機能は追加し終わって、直近のバグ修正も完了しているので、faviconとかそういうのを設定するくらいなのかな。何か案があればください。
次は全対応デスゴルド君=オーラーサーチャー君の説明です。
オーラーサーチャー君
サンダー厳選のために作られたデスゴルドの手持ち個体値を特定するWebアプリケーション「デスゴルド君」の3世代全対応版に加え、与ダメ計算機能を設けています。
このデスゴルド君、非常に使いやすいのですが、名前の通りデスゴルドの手持ちポケモンにしか対応していません。
そのため、3世代のすべてのダークポケモン・通常入手できる固定シンボルに対応したアプリケーションを乱数後の個体値推定Webアプリとして作成しました。
つまり、対象範囲は、コロシアムの全てのダークポケモン、XDの全てのダークポケモン、FRLG/RSEの準伝・禁伝となります。
名前の由来は、すべてのダークポケモンチェックということで、XD主人公(リュウト)がつけているオーラーサーチャーから来ています。まあオーラーサーチャーのない5年前のオーレやホウエンやカントーも対応しちゃってますが。
下記文章はClaudeに要約してもらいつつ手修正を行いました。
主な特徴
- XDのダークポケモンのレベル補正に対応
- コロシアムのポケモンはタイプ強化アイテム(1.1倍アイテム)を持っていたり、XDガラガラもふといホネを持っていたりするので、ダメージ計算にこれらのアイテムの倍率も反映するようにしています。

- FRLG/RSEでは、バッジ入手をすると1.1倍補正がかかるため、FRLG/RSEに出てくるポケモンをリストから選択した場合に、「バッジ補正」というチェックボックス(チェック済)が出現、このままダメ計をすることで1.1倍補正を考慮できるようになっています。
- また、与ダメ計算ボタンの下に、素早さ計算用に、素早さ実数値を入力することで1.1倍後の数値を表示するようにしています。下記画像のように、事前に捕獲したいポケモンの実数値を確認しつつバッジ補正前のS実数値を調整したりなどがユースケースとしてあると思います。特に3世代のポケモンは捕まえづらく、オシャボに入れたい場合は時間がかかるため、乱数調整の成功の確認ができると時間を無駄にせず済むでしょう。

- デスゴルド君ではダメージからの実数値推定のみで、そのポケモンが取りえない実数値下限を表示していましたが、正しい実数値範囲を計算する処理を入れることで、実際にありうるステータス範囲のみ表示するようにしました。
各セクションの役割
- 与ダメ計算:よくあるダメージ計算。相手のH/B/D個体値が理想であるときの目安として利用する。防御側情報も入力必要。
- 被ダメ計算:受けたダメージで個体値推定。ステータス表示機能付き。XDの場合は自分ポケモン入力は不要。個体範囲絞り込み機能付き。
- 計算結果:このセクションに計算結果が表示される。
その他
下記シチュエーションも対応しています。
与ダメ計算機能はFRLG/Emに忠実な48分割されたHPバーを表示するため、次の技で、Co/XDにも簡易確認が可能です。このHPバー仕様は先述したカチヌキシミュにも受け継がれています。(こちらのアプリのが先に作られたのです)
この場合、被ダメ計算の「相手ポケモン」、与ダメ計算の「自分ポケモン」の両方に対象のダークポケモンの情報を入力します。
ダメージ固定技
ダークハーフ(いかりのまえば)、ちきゅうなげ(ナイトヘッド)、ソニックブーム、りゅうのいかり
HPゲージの減少幅を確認可能。
いたみわけ
いたみわけを選択するとA/C実数値入力欄がHP入力欄に変わるので現在HPを入力すること。計算結果のHPバーの下にHPが出力される。
コロシアム乱数ではムウマのいたみわけでHP実数値の確認が行われるため、その補助機能になります。
下記画像は、いたみわけを技欄に入力することで、レベル下の「A/C実数値」が「HP」に変わり、HPと相手ポケモン情報を入力して与ダメ計算すると、計算結果に(若干わかりづらいですが)赤枠で囲った箇所にHPが表示されるので、いたみわけをしたらムウマもこのHPになることが分かります。

ダークラッシュ(自傷)
コロシアムのダークラッシュとXDでのダークラッシュは仕様が違い、コロシアムのダークラッシュは、打った側の反動として、最大HPの1/16±1を削ってしまうようです。
HP確認前にダークラッシュで先に自傷された場合でも、自傷ダメ計算→(結果を保持するにチェック)→いたみわけで大まかなHPバーの状態を把握できます。
ダークエンド(自傷)
XDのダークエンドという技は現在HPの1/2を削る技です。
処理はダークハーフと同じですが、結果を保持にチェックを入れておくことで個体値推定中の混乱を減らすことができます。
これはとびひざげりを外した時の話で、皆さんご存じですが最大HPの1/2のダメージを与える仕様です。
ダークハーフと微妙に違いますね。
Coのダークアサナンが持っています。
すてみタックル(反動)
貰ったダメージの1/3を与える。
Emのカイオーガが持っています。
こんらん
自傷技導入ついでに実装しました。
与ダメ計算機能
基本ダメージ計算
- 攻撃側情報入力
- ポケモン名検索
- レベル入力
- 攻撃/特攻実数値入力
- 技選択
- 持ち物選択
- 防御側情報入力(このあたりのUI/UXはかなりこだわりポイント)
天候
通常の天候に加え、ダークウェザー使用時の「くらやみ」を追加しました。くらやみ状態ではダーク技が1.5倍になります。
特性対応
各ダークポケモンは固有の特性のためダメージが増えることがあるため、下記特性にも対応しています。
- ヨガパワー:物理攻撃2倍
- はりきり:物理攻撃1.5倍
- しんりょく:草技1.5倍(発動時)
- もうか:炎技1.5倍(発動時)
- げきりゅう:水技1.5倍(発動時)
- むしのしらせ:虫技1.5倍(発動時)
ダメージ表示機能
- 最小~最大ダメージ表示
- HPゲージ表示
ダメージ履歴管理
- 結果保持機能
- 「ダメージ結果を保持する」チェックボックス
- 複数回の攻撃を累積表示
被ダメ計算(個体値推定)機能
基本機能
入力項目
戦闘条件(被ダメ側)
個体値推定結果
個体値絞り込み機能
条件別UI表示制御
- 条件に応じた入力欄の表示/非表示
おわりに(真)
ということで、解説は以上です。
どちらも使ってみてください!
17日目の記事は、奈都さんによる「ポケモンコロシアム汎用乱数自動化プログラム(全ポケモン対応)※一般公開しません」です。
そう、17日目の記事がコロシアム乱数自動化の話だったので、個体チェックのためにこの記事を公開したかったんです。
なので、カチヌキシミュの方がユーザー影響度は大きいと思うのですが、実のところメインはオーラーサーチャー君なのでした。
