1.はじめに
この記事は Pokémon Past Generation Advent Calendar 2025 の 23日目の記事です。
ポケモンXD に出現するダークポケモンはコロシアムとは異なり、色違いを狙えませんが、過去作の対戦において、価値の高いポケモンが多いです。
目標のポケモンを乱数調整するには初期Seed厳選という苦行を強いられ、「いますぐバトル」でパーティを何度も生成することになります。厳選するのが嫌だから乱数しているハズが、なぜか厳選から始まります。
初期Seed厳選も大変ですが、XD はポケモンの瞬きを利用した乱数もなかなか曲者です。瞬き判定のカウンタが加算されない停滞という現象のせいで、瞬きがタイマーと少しずつズレてくる上に、瞬きが抜けて見失う可能性もあるため、ゲーム画面を監視し続ける必要があります。
そこで、今回は XD乱数を快適に行うために、「初期Seed厳選・消費」、「瞬きでSeed特定・消費」、「不定消費のフレーム合わせ」、「ポケスポット乱数準備」の 4つを自動化するプログラムを作成しました。

2.XDSeedSorter+のダウンロード
プログラムは下記リンクからダウンロードできます。海外版への対応予定はありません。タダでディスクくれるならやってあげてもいいです (ニッコリ)
※ GC(GBA)自動化の導入はこちらの記事を参考にしてください。
NX Macro Controller で「XDSeedSorter+.nxc」を開くと、XDSeedSorter+フォルダが生成されます。フォルダ内に「設定.exe」というファイルがありますので、こちらから実行したいオプションを入力します。
3.XDSeedSorter+でできること
「初期Seed厳選・消費」、「瞬きでSeed特定・消費」、「不定消費のフレーム合わせ」、「ポケスポット乱数準備」の4つのモードがあります。ここでは、それぞれの設定や使い方を紹介します。
初期Seed厳選・消費
「いますぐバトル」のパーティ生成結果から初期Seed を特定し、「2人でバトル」による高速消費、「いますぐバトル」遷移や「設定変更」による端数消費まで完全自動化します。タイトル画面で端数消費がすべて完了します。
XD の初期Seed厳選&消費の自動化については、2つの既存自動化プログラムがありますが、XDSeedSorter+にも当然導入しています。

本プログラムの差別化としては、端数消費時の経路に「いますぐバトル」と「つないでバトル」の画面遷移時に発生する消費を含めることで、設定変更回数を大幅に減らしている点です。
既存のプログラムでは「いますぐバトルで最強生成」と「設定変更」の 2つのみで端数消費を行っているため、目標のSeed に到達するための消費経路が乏しく、設定するSeed によっては 1000回を超える設定変更を行う必要があり、消費に多大な時間を要するケースがありました。
消費方法が 2つ増えるため、目標Seed に到達するまでの消費経路の自由度が格段に上がり、設定変更回数が増えすぎることはないので、適当なSeed を選択しても、平均 20~30回程度まで抑えることができます。また、高速消費には「いますぐバトル」の戦闘画面での消費を利用しますが、「ファイヤー」だけではなく、「フリーザー」も場に出すことで、消費速度を 3849消費/s から 4192消費/s 程度にまで上げています。

目標Seed の設定には「設定.exe」を使用します。親切ポイントとして、目標Seed に対して、ロード消費や強制消費を差し引く機能をつけています。
例えば、臆病めざ氷理想のサンダーを狙う場合は戦闘突入時のSeed から 48消費 = 22消費(タイトルからのロード消費)+ 22消費(ドーム2階のロード消費)+ 4消費(強制消費1)を差し引けばOKです。

戦闘突入時のSeed は xdpokemon を使って出力します。間違っても xdcheck で出力した開始時Seed をそのまま打ち込まないようにしましょう。xdcheck で出力した開始時Seed はダミーPID や 敵TSV生成、カメラアングル決定時の消費などが見込まれていないため、そのまま使うとSeed が超過します。
xdcheck で検索した開始時Seed から Co/XD LCG で大まかに消費を差し引き、そこから xdpokemon とさらに Co/XD LCG を使って、任意消費数が 0 になるSeed を検索するのが正しいです。
ロード消費はマップを選択すれば自動で差し引いてくれる仕様になっています。なので、大半のポケモンはタイトルで消費してから、そのまま戦闘に突入するだけで乱数調整が成立します。タイトルで「いますぐバトル」を挟むので、n固定もやってくれるのが嬉しい要素です。
「許容する消費の上限」は目標Seed に対して、効率の良い数値を自動計算します。「TSV」は関係ないように見えて、「いますぐバトル」と「つないでバトル」の画面遷移時に発生する消費数に影響してきますので、必ず設定して下さい。
また、瞬きでSeed特定の動作確認などを目的として、「初期Seed特定のみ」を行うモードも実装しています。動作確認以外ではバトルDEビンゴの乱数調整にも使えます。
初期Seed だけではなく、目標Seed から差し引く消費で設定した値だけ進めたSeed もログで表示するので、バトルDEビンゴに使う場合はマップ名で「バトルDEビンゴルーム」を選択して下さい。この場合はロード消費12 を進めたSeed もログ表示されます。

また、NX のオプションで webhook の URL を設定している場合は、初期Seed厳選終了時、端数消費開始時、端数消費完了時に通知が来ます。とても便利なので、設定しておくと良いです。

瞬きでSeed特定・消費
XD乱数のほとんどのポケモンはタイトルから始めて、そのまま戦闘に突入するだけで乱数調整が成立しますが、乱数調整に瞬きによる消費が必要なポケモンもいます。連続戦闘の XDファイヤー、XDサイドン、バトルやま御三家に加え、ロード消費が安定せず展開もない XDトゲピーが主な対象です。
「設定.exe」で「瞬きでSeed特定のみ」を選択するとSeed特定のみを行い、「瞬きでSeed特定後、目標Seedまで消費」を選択すると、特定から消費まで行います。
瞬きでのSeed特定に使われているツールである OpenBlink は「エーフィ」や「シェルダー」といった瞬き間隔 8Fのポケモンにしか対応していませんが、こちらのプログラムは瞬き間隔 6~14F までのポケモンに全対応しています。つまり、瞬き間隔 14F で画像認識がしやすく、瞬きが発生するSeed でステータス画面を閉じやすい「ルナトーン」や「ソルロック」を使うこともできます。ちなみに瞬きでSeed を特定するだけであれば、自動化環境がなくても、映像さえ取り込めれば実行することができます。

XDトゲピーを乱数する場合は目標の瞬きSeed を トゲピーツール で検索し、「プログラム終了時のSeed」に入力すればよいです。使用するポケモンは瞬き間隔 8F の「エーフィ」または「シェルダー」にしましょう。デフォルトで入力してある制動時間 24 は瞬きSeed でステータス画面を抜ける場合の想定値となります。
進化瞬きの場合は、瞬きを利用するポケモンで「サマヨール」を選択し、進化瞬きのチェックボックスを選択してから実行します。制動時間はステータス画面を閉じる場合と変わってくるので要注意です。

設定が終わったら、進化画面でプログラムを実行します。瞬きを画像認識で追跡し、目標Seed に到達できるように進化画面を自動で抜けてくれます。
また、XD瞬き最大のストレス要素である「停滞」の対策も導入しています。こちらは今後発生する瞬きの間隔を事前に計算し、想定される間隔から逸脱した場合は瞬きを同期させるという処理を行っています。

実機ではサマヨールを使う方しかいないと思いますが、XDSeedSorter+ではマルノームの瞬きも観測できます。需要の高いヨマワルに経験値を与えずにファイヤーやサイドンを乱数できるのは嬉しい要素です。
Lv.26 で進化させると「のしかかり」を習得して、技覚えのメッセージが出ますので、プログラムを実行するタイミングは注意して下さい。なお、進化瞬きではなく、通常の瞬きではマルノームに対応していません。見上げるモーションのせいで、目が潰れるため、テンプレートマッチングだと難しかったです。

私も XDファイヤーの乱数に使用しましたが、±2F 程度のズレに収まりましたので、カメラアングルも考慮すればかなり成功率は高められると思います。進化瞬きの場合、制動時間は 67F 程度になります。目標Seed の検索は DusclopsBlinkReader を使用しましょう。

注意点として、基本的に瞬き画像の差し替えをしなければ、瞬きによるSeed特定は行うことができません。差し替え手順としては、まず NX Macro Controller のキャプチャ画面を右クリックし、目の画像を切り取ります。

その後、"C:\NX Macro Controller\Captures" に保存された画像を XDSeedSorter+フォルダ内の Source → Blink フォルダ内の画像と差し替えます。大きめにキャプチャした後にトリミングするのが楽です。

差し替えても瞬きを認識できないという方は C#スクリプト内の閾値を直接調整するとうまくいくかもしれません。アナログのキャプチャーボードの場合、ポケモンによっては認識が厳しいと思います。

もしマッチ率のログを出したい場合はこの辺を調整すればよいです。

不定消費フレーム合わせ
XD では多くのポケモンに展開があるため、進化瞬き以外でフレームを合わせる機会は少ないですが、一部のポケモンは不定消費を 1F単位で合わせて、乱数調整するポケモンがいます。不定消費があるマップに存在し、かつ展開がないトゲピーと、カメラアングル決定による展開しかないオオスバメが対象です。この 2匹については、フレーム合わせ用のモードも実装しています。

XDトゲピーは「瞬きでSeed特定後、目標Seedまで消費」を実行した流れで、実行する想定をしています。要は「つよさをみる」にカーソルを合わせた状態です。一度、受け取り拒否をしている場合は「トゲピー受け取り拒否済み」にチェックを入れてください。

XDオオスバメはデスハゲ島のドーム外から右側のエレベーターで降りた直後の位置でプログラムを実行します。主人公の待機モーションで消費されても困るので、メニューを開いている状態での実行を想定しています。

XDトゲピーも XDオオスバメも空白時間はこちらで特定したものを内部的に加算していますので、大きくはズレないと思います。
ポケスポット乱数準備
需要はお察しですが、ポケスポット乱数の準備も自動化できるようにしています。性格値乱数、個体値乱数は初期Seed厳選・消費で十分ですので、性格値乱数をする直前の準備までを自動化します。
ポケスポットに「ポケまんま」をいくつ置くか選択した状態でプログラムを実行し、シャドーのラボ ガレージ内で歩数調整を行います。

ミラーボレーダー破壊済み、またはミラーボのダークポケモンをすべて捕獲した場合はレーダー通知が飛んできませんので、「ミラーボレーダー破壊 or ダークポケモン捕獲済み」をチェックすると、歩数調整が少しだけ早く終わります。大きくは変わらないので、あまり気にする必要はないです。
ついでに実際の性格値・個体値乱数までの XDSeedSorter+を使った乱数調整の流れも解説しておきます。地味にややこしいので。
はじめに xdseed の「ポケスポット」タブを使って目標Seed を計算します。このSeed でポケスポット判定を踏めば性格値が決定すると思いきや、表示されたSeed には「手持ちのポケモンの数」×3消費が差し引かれています。これはなつき消費を加味した調整ですが、実際はポケスポット判定前にレポートを書くため、考慮しなくていい消費となります。
なので、実際に調整するSeed は手持ちのポケモンの数が 1で計算した場合、3消費分加算する必要があります。

では、XDSeedSorter+の設定ではどうするのかというと、マップ名は「シャドーのラボ ガレージ 1F」を選択し、ロード消費を差し引きつつ、そこに 3消費を加算します。加算なので、強制消費が「-3」という表記になります。

この設定でプログラムを実行し、ゲーム開始後すみやかにポケスポット判定を踏めば、性格値が固定されます。放置していると主人公のモーションによる消費が入りますので、注意しましょう。

個体値乱数は xdcheck で目標の個体のSeed を検索し、そこから xdpokemon を駆使して、目標Seed を設定します。マップ移動時のカメラアングルやポケスポット、スクーターのアップグレード状況によって強制消費は変わってくるので注意です。その辺は 夜綱さんの記事 が参考になるかと思います。アングルは seed.GetRand(2) で決定されますが、この辺の消費を計算する簡単なツールをいつか作ろうとは思っています。
レポート場所はロード消費が安定していて、不定消費もないシャドーのラボにしましょう。

岩場でアングル1 の場合はアニメーションの 7447消費+戦闘開始アニメーション 4消費で強制消費が 7451消費になります。また、消費はタイトルで済ませるので、ロード消費の 24消費も見込む必要があります。
再度プログラムを実行し、そのままポケスポットに移動することで個体値乱数も完了となります。

4.その他汎用プログラムの紹介
乱数処理は XDSeedSorter+にお任せすれば良いですが、他にも汎用的なプログラムを用意しました。コンセプトとしては XDSeedSorter+と XDストーリー自動化の補助です。
ミラーボレーダーくん
XDストーリー自動化を使って、ストーリークリアまで進めると大量のダークポケモンがミラーボに捕獲されます。固定したポケモンを GBA から輸送したオシャボで捕獲する場合や、XD特性にこだわりがある場合は目的のポケモンをミラーボに繰り出してもらう必要がありますが、なかなか大変です。そこで、ポケスポットでミラーボが現れるまで、シャドーのラボを往復し続けるプログラムを用意しました。手持ちにダークポケモンを入れておけば同時にリライブ作業も行うことができます。
処理としては、ミラーボレーダーの反応が「ちょっと」になった際にレポートを書き、その後、ポケスポットにミラーボが出現すれば終了。出現しなかった場合はリセットしてやり直します。

コロシアム周回自動化
以前 Coでも作成しましたが、XD でもコロシアムを周回してレベリングやポケドル稼ぎを行う自動化プログラムを用意しました。S判定ポケモンの育成や大量にボールを買い込む場合にご活用下さい。
また、ストーリー自動化中に任意のダークポケモンを捕獲する場合、ポケドルが不足しがちなので、ストーリー自動化に悪影響を与えずにレベリング、稼ぎを行うことができます。ただし、ラルガタワーコロシアムはストーリー自動化でも利用するので、もし使う場合は、4セットサイクルで周回を行い、ポケモンの順番に影響を与えないようにしましょう。
エーフィ / リングマ / ビリリダマ / キノココ / ゴクリンの 5匹は技覚えの「最適モード」に対応しています。詳しくは Readme を参照して下さい。

5.おわりに
XD乱数はこちらのプログラムと、以前に作成した ID調整自動化 があればほとんどの作業を自動化できます。色々とこだわってみましたので、お役に立てれば嬉しいです。
今年は拡張ディスク や ボーナスディスク、Co の汎用的な乱数の自動化も作成できたので、3世代の主要な乱数自動化は全て組めたと思います。
明日の記事はジュナリさんによる「XDストーリー自動化」です。お前の苦労をずっと見ていたぞ。本当によく頑張ったな。7か月も更新が止まってたのも見ていたぞ。