【マイコン】アルセウスで早業・力業の図鑑タスク埋め、レベル上げを自動化するコード!

ポケモン レジェンズ アルセウス」の自動化コードです。

訓練場で早業・力業を切り替えながら、ひたすら警備隊のタキを倒し続けるコードになっています。

マイコンを使って面倒な図鑑のタスク埋め、レベル上げを自動化しましょう!

この記事をご覧になる前に

マイコンをまだ導入していない方は、以下の記事を参考に導入してみてください。このブログでは、Arduino Leonardoというマイコンを使っているため、異なる種類のものではうまく動かない可能性があります。

関連記事

マイコンと呼ばれるものをご存知でしょうか? Switchに接続するだけで様々な作業を "自動" で行ってくれるというものです。 導入すれば作業が楽になるだけでなく、寝てる間に色々稼ぐこともできちゃう便利なアイテムなわけですね! […]

マイコンを使って
ポケモン剣盾
自動化しよう!
【導入編】

今回のコードは「NintendoSwitchControlLibrary」を使用しています。まだダウンロードされていない方は、解凍したフォルダを『Arduino』フォルダの中にある『libraries』フォルダの中にコピーしておいてください。

ソースコード

実際に書いたコードはこちらになります。

/**
 * 訓練場で警備隊のタキとの連戦を行い、レベル上げと早業・力業のタスクを埋めていくスケッチ
 *
 * ※2匹のポケモンが倒される or PP切れで技が使えなくなるとループが止まってしまうので注意!
 *
 *
 * 初期条件は以下の通り
 * 1.ストーリークリア済であること(クリア前でも環境が揃っていれば可能かと思いますが、動作は未検証です)
 * 2.コトブキムラ訓練場前のノボリの前にいること
 * 3.手持ちの1匹目に強力なポケモンを配置し、初手のポケモンは別のポケモンであること
 * 4.2匹のポケモンそれぞれの一番上の技に使用する技を配置しておくこと
 * 5.無線のコントローラーが接続されていないこと
 * 6.「設定」から「話の速さ」を「速い」にしておくこと
 */

// ライブラリを読み込むためのコード
#include <NintendoSwitchControlLibrary.h>

// 早業・力業のパターンを決める(0: ランダム, 1: 早業のみ, 2: 力業のみ)
const int PATTERN = 0;

// ボタン入力の間隔(個人で調整してOK。早すぎると早業・力業の切り替えができないことがある)
const int INTERVAL = 400;

// PATTERNの値を元に打ちこむコマンドを決める
int hats[2];
void decideCommands() {
    switch (PATTERN) {
        // 早業のみ
        case 1:
            hats[0] = Hat::LEFT;
            hats[1] = Hat::LEFT;
            break;

        // 力業のみ
        case 2:
            hats[0] = Hat::RIGHT;
            hats[1] = Hat::LEFT; /* NOTE ポケモン交換時に右入力すると技を選択してしまうことがあるため、脱却するために力業のみの場合も左入力が必要 */
            break;

        // ランダム
        default:
            hats[0] = Hat::LEFT;
            hats[1] = Hat::RIGHT;
    }
}

// マイコンのセット時に1度だけ行われる処理
void setup() {
    // ループ内で打ち込むコマンドを反映する(Switchの操作に関わらないため、認識前でも問題なく動作する)
    decideCommands();

    // Switchがマイコンを認識するまでは信号を受け付けないため、適当な処理をさせておく
    pushHat(Hat::LEFT, 500, 5);
}

// ここに記述した内容がループされ続ける
void loop() {
    pushButton(Button::A, INTERVAL);
    pushHat(hats[0], INTERVAL);
    pushButton(Button::A, INTERVAL);
    pushHat(hats[1], INTERVAL);

    // 2番(力業のみ)を選択したときは、早業経由で力業を選択する
    if (PATTERN == 2) {
        pushHat(Hat::LEFT, INTERVAL);
    }
}

コードの使い方

コードを使うにあたって確認して欲しいことが3点ほどあります。

設定の確認

マイコンを繋げる前に、以下の状態になっていることを確認してください。

  1. ストーリークリア済であること
  2. コトブキムラ訓練場前のノボリの前にいること
  3. 手持ちの1匹目に強力なポケモンを配置し、初手のポケモンは別のポケモンであること
  4. 2匹のポケモンそれぞれの一番上の技に使用する技を配置しておくこと
  5. 無線のコントローラー(プロコンなど)が接続されていないこと
  6. 「設定」から「話の速さ」を「速い」にしておくこと

手持ちの1匹目に強力なポケモンを配置し、初手のポケモンは別のポケモンであることとは具体的には以下の画像のような状態を指します。

フタチマル

クレセリア

ZRで投げるポケモンが1匹目になり、手持ちの先頭にいるポケモンが2匹目となります。

画像でいうと、初手は「フタチマル」、フタチマルが倒されたあとは「クレセリア」がバトルに参加します。

初手のポケモンは3体抜きできないと経験値が入りません。レベル上げ目的であれば、経験値を入れたいポケモンは手持ちの先頭、もしくは手持ちに入れておくだけで戦闘には出さないようにしましょう。

早業・力業のパターンを決める

コードの19~20行目を確認してください。

// 早業・力業のパターンを決める(0: ランダム, 1: 早業のみ, 2: 力業のみ)
const int PATTERN = 0;

ここの値を「0」から「1」や「2」に書き換えることで早業のみを使うようにしたり、力業のみを使うようにできます。

デフォルトの設定では早業と力業がランダムで選ばれるようになっています。

ボタン入力の間隔を決める

コードの22~23行目を確認してください。

// ボタン入力の間隔(個人で調整してOK。早すぎると早業・力業の切り替えができないことがある)
const int INTERVAL = 400;

ここの「400」という値はボタンを押す間隔を表しています。

安定感を上げたい場合はこの数値をより大きな値(例: 500)、よりテンポよく進めたい場合はより小さな値(例: 300)を指定してください。この値が小さすぎると、早業・力業の切り替えができなくなります。

筆者の環境では300でも問題なく動作することを確認しています。ちなみに、200ではダメでした。。。

コード利用における注意点!

当コードは、以下の状態になるとループが止まってしまいますのでご注意ください!

  • 2匹のポケモンが倒される
  • PP切れで技が使えなくなる

早業・力業はPPを2倍消費するので、PPが5の技は3回しか打つことができません。

なるべく、PPが10以上の技を使うようにしましょう。また、命中不安技も避けるのが無難です。

最後に

動作が不安になってしまうようでしたら、ボタン入力の間隔を400からより大きな数値へと変更してみると良いでしょう。

万一ループから抜けてしまうようなことがありましたら、@lefmarnaまでお知らせください。

スポンサーリンク