2021/03/07

【ポケモン×Arduino_06】冠の雪原レジギガス色違い厳選(捕獲)自動化

※本記事は、ポケモン剣盾:冠の雪原の巨人伝説の遺跡に出現するレジギガスについて、色違いを捕獲するまでのマラソン作業を自動化するプログラムについて解説した記事です。ポケモン剣盾の操作をArduino Leonardoで自動化しております。「Arduinoって何?」って方は00回目の記事を、Arduinoの環境構築(ライブラリ含む)は01回目の記事をご覧ください。また、他のレジ系の色違い厳選は前々回の記事(04回目)前々回の記事(05回目)にまとめましたので、合わせてご覧ください。

本記事では、このプログラム(スケッチ)でできることや原理を解説したうえで、スケッチを配布しています。とにかくスケッチが欲しいという方は下へと読み飛ばしてください。


 

きっかけ、動機

前々回の記事(04回目)前々回の記事(05回目)にて、レジ系の色違い厳選の自動化が実現できました。レジギガスについては捕獲方法が大きく異なりますが、基本的に同様の原理によって色違い厳選も可能となるため、同様に作ってみました。

今回の自動化プログラムは他のレジ系のプログラムよりも先に作成したものとなります。遺跡の床を踏む作業がない分、簡単なプログラムとなります。また、確定で捕獲することができるため、色違いに遭遇してからボールを投げて捕獲するまでの動作もすべて自動化で完結します。

 


これで何ができるの?

冠の雪原にて、レジ系4種を捕まえた後に戦うことのできるレジギガスの色違い厳選を自動化できます。あらかじめ好きなボールを並び替えておくことで、任意のボールで色違いを捕獲するまでの動作をすべて自動化できます。ピーピーマックスなどのPP回復アイテムを使用することでソフトリセットをする必要がなく、自動化している間は画面を見ておく必要もありません。


原理、おおまかな流れ

概要

レジギガスはレジロック、レジアイス、レジスチルとレジエレキorレジドラゴの4種類を捕まえた後、冠の雪原の巨人の寝床にある意味深な巣穴に出現します。

出現の条件として、「伝説のメモ2:巨人伝説」を終わらせ、レジエレキ、ドラゴの捕まえていない方を含むレジ5匹を手持ちに入れる必要があります。(持っていないレジ電or龍は交換等で入手してください)

レジ5匹を手持ちに入れた状態で巣穴に話しかけるとレイドバトル(1人)が始まります。Lv.100のダイマックスレジギガスと戦います。

 

本プログラムでは、

「レジギガスを一撃で倒す」動作をPPが切れるまで繰り返し、PPマックスなどのアイテムで回復する

という動作を繰り返します。


戦闘について

本プログラムでは戦闘を簡潔にするため、レジギガスに先制して一撃で倒すことを目標にしております。とはいえ、レジギガスはLv.100のダイマックス状態のため、簡単には一撃で倒すことができませんので、あらかじめ準備が必要です。

今回使用したポケモンは、

起死回生(威力200)を使えるウーラオスです。 

あらかじめ身代わりなどでHPを1に近づけ、A無補正極振り、こだわりハチマキを持たせることで、ダイマ(HP2倍)レジギガスを確定1発で倒せるようになります。

ウーラオス以外でも確定1発にできればOKです(リベロエースバーンなど、特性が表示される場合は時間がずれるのでプログラム要調整)。

周回の効率化、PPマックス節約などのため、起死回生のPPを最大まで増やします。

 

戦闘時の操作は、レジギガスを「捕まえる/捕まえない」の選択肢以外ではAボタンとBボタンのみを使用します。 色違いが出現しない場合は起死回生を選択して一撃で倒し、「捕まえる/捕まえない」の選択肢で十字ボタン下を入力して「捕まえない」を選択することで捕獲せずにフィールド画面に戻り、次の戦闘を行います。

色違いが出現した場合は色違いの光るエフェクトが約2秒生じるため、「たたかう」などのコマンドが表示されるまでにかかる時間も2秒ほど長くなります。この時間差を利用することで、色違いが出現した場合のみ操作が分岐するようにしています(他のレジ系と概ね同様です)。

色違い出現時は、起死回生を選択するAボタンの入力が認識されないため、しばらく戦闘は始まりません。しばらくしてから戦闘を始めるため、「捕まえる/捕まえない」の選択肢での十字ボタン下入力も間に合いません。そのため、「捕まえる」からボールを投げて捕獲し、ループが途切れます。確定で捕獲できます。

ここで、レイドバトルで投げるボールについて、

・バッグ内に「モンスターボール」が存在する場合は必ず最初に表示される
「モンスターボール」が存在しない場合は、リストの一番上のボールが最初に表示される

という仕様となっています。投げるボールの準備については後述します。


戦闘前後の動作について

本プログラムでは、起死回生のPPが続く限り連続して戦闘を行います。レジギガスは捕獲しない限りは巣穴に話しかけるだけで何回でも復活するので、フィールドの移動などは一切必要ありません。

PPが切れた時は、PPマックスなどのPP回復アイテムを使うことで回復します。ソフトをリセットする必要がないため、睡眠中などに長時間放置しても、色違いを捕まえた後にリセットされる等の事故は起こりません。 

2021.05.19追記 PPマックスの代わりにヒメリの実などを使用することが可能ですが、技の1つを回復するアイテムの場合は「4つの技のうちどれを回復させるか」を選ぶためにAボタンの入力が多く必要となります。適宜「PPrecovery()」のAボタンの回数を増やしてください(+1回?)

なお、PPマックスは過去に紹介したワットショップ自動化を行うことで副産物として入手できます。

 

準備、必要なもの

本スケッチでは、特に以下の準備が必要となります。

・先頭をHP1程度にしたウーラオスLV100(技1きしかいせい,PPMaxでPP24推奨)、他はレジ5体にする。

・バッグ内のモンスターボールをすべて売り、バッグ内からなくす(スーパー等はそのままでOK)(捕獲するボールをモンボ以外に指定するため)

・バッグ内のPP回復アイテム(回復or木の実ポケット)と捕獲用の好きなボール(ボールポケット)をお気に入りソートでポケット内1番上へ

(リストを整理することで、回復アイテムをすぐに使えるようにし、またレイドバトル後に使用するボールの初期位置を変更する)

・Xボタンメニューのバッグを左上へ移動(事故防止のため)

・レジ巣穴前でセーブ

・ソフトリセット、起動してからメニュー、バッグ開き、カーソルをPP回復アイテムに合わせてBボタン連打でフィールド画面へ戻る

(これをすることで、十字ボタン等を使用せずA,BボタンのみでPP回復ができる)

 

作成したスケッチ

作成したスケッチは以下のようになります。スケッチのファイルはこちら

 なお、執筆者がスケッチを作成するにあたり使用した環境は以下のようになります。

・データは中国語(繫体字)のソード

・手持ち最初のポケモンは起死回生のPPを最大(24)にした陽気AS鉢巻ウーラオスLv.100(王冠使用済み)

使用する起死回生ポケモンを変更した場合、戦闘時の時間が前後する可能性があります。その場合は適宜調節してください。

2021.05.19追記 PPマックスの代わりにヒメリの実などを使用することが可能ですが、技の1つを回復するアイテムの場合は「4つの技のうちどれを回復させるか」を選ぶためにAボタンの入力が多く必要となります。適宜「PPrecovery()」のAボタンの回数を増やしてください(+1回?)

本スケッチを実際に使用した動画はこちら↓


 
/**
* レジギガス色違い厳選のための周回、色違いが出たらそのまま捕まえる
* ソフトリセットせず、PP回復アイテム(PPマックスやヒメリの実)を使用することで長時間戦闘(1人レイド)を繰り返す
*
* 初期条件は以下の通り
* 1. 先頭をHP1程度にしたウーラオスLV100(技1きしかいせい,PPMaxでPP24推奨)、他はレジ5体
* 2. バッグ内のモンスターボールをすべて売り、バッグ内からなくす(スーパー等はそのままでOK)
* 3. バッグ内のPP回復アイテム(回復or木の実ポケット)と捕獲用の好きなボール(ボールポケット)をお気に入りソートでポケット内1番上へ
* 4. Xボタンメニューのバッグを左上へ移動
* 5. レジ巣穴前でセーブ
* 6. ソフトリセット、起動してからメニュー、バッグ開き、カーソルをPP回復アイテムに合わせてBボタン連打でフィールド画面へ戻る
* 7. 周回スタート、しばらくでないようならソフトリセットで6からやり直し
*/


#include <auto_command_util.h>


// PP回復により使用できる起死回生の回数を以下に入力(PPマックスの場合は24、ヒメリの実の場合は10)
#define MaxPP 24


void regiBreak(){
    // 巣穴話しかけ~戦闘
    pushButton(Button::A, 4000);
    pushButton(Button::A, 1000);
    pushButton(Button::A, 28500);
    // 戦闘開始、色違い光モーションなければ起死回生選択
    // 色違いならば、1つめのA入力間に合わないためBボタンで1度キャンセル、その後遅れて起死回生選択

    pushButton(Button::A, 1000,3);
    pushButton(Button::B, 1000,4);
    pushButton(Button::A, 1000,2);
    pushButton(Button::A, 6000);
    // 色違いでなければ捕まえない、フィールドへ戻る
    // 色違いであれば下入力が行われないので、「捕まえる」選択>一番上のボールを投げる

    pushHatButton(Hat::DOWN, 500);
    pushButton(Button::A, 7500);
}

void PPrecovery(){
    // フィールド上でバッグ開き、開いてすぐのPP回復アイテム使用、PP回復
    pushButton(Button::X, 1000);
    pushButton(Button::A, 2000);
    pushButton(Button::A, 1000, 3);
    pushButton(Button::B, 1000, 8);
}



void setup(){
    pushButton(Button::B, 500, 13);  // 最初の数回の入力はswitchが認識しない場合があるので、無駄打ちをしておく
}

void loop(){
  // 定義した「MaxPP」の回数だけ戦闘した後、PP回復
  for(int i=0; i< MaxPP; i++){
        // PP無くなるまで戦闘、逃げる繰り返し
            regiBreak();
        }
   
    PPrecovery();
}
 

 

最後に

本スケッチを使用することで、レジギガスの色違いを出現~捕獲までのすべての作業を寝てる間などに可能となります。他のレジ系と異なり、確定で捕獲できるため、準備さえすれば放置するだけですべて完結します。

レジギガスは冠の雪原のストーリーに影響しないため放置している方も多いかと思います。ぜひ色違い厳選にお役立てください。

プログラムの不備、改善点などありましたらコメントやお問い合わせからお願いいたします。

Arduino Arduino Leonardo (ピンソケット・ピンヘッダ実装済) 【A000057】
by カエレバ



 

4 件のコメント:

  1. PPマックス全然足りないんですがどうやったらそんなに増やせるんですか?

    返信削除
    返信
    1. 記事内にもちらっと書いてありますが、02回目のワットショップ自動化にて入手しております。ドリームボールやポイントアップなどの有用アイテムと同時に副産物として貯まるため、ここでは使用しております。

      削除
  2. はじめまして、コメント失礼します。
    こちらのスケッチを使用してみたのですが、戦闘開始後Aボタンを2回入力、攻撃相手を選ぶ箇所でBボタンが押下されてしまいうまくいきません。
    スケッチ内のどの箇所を調整すれば良いでしょうか?

    返信削除
    返信
    1. regiBreak の3行目、pushButton(Button::A, 28500);の28500を調整してください。おそらく、次のpushButton(Button::A, 1000,3);でAを3回押すうちの1回目が「たたかう」表示よりも早く動作しているため、29000のように増やすと改善するかと思います。

      削除

【ポケモンSV×arduino06】道具プリンター乱数自動化(藍の円盤)

 ※本記事は、ポケモンSVの藍の円盤(DLC)にて、 道具プリンター を決まった日時に起動することで 特定のアイテム、ボールを狙って量産する操作を自動化 するプログラムについて解説した記事です。ポケモンSVの操作をArduino Leonardoで自動化しております。 本記事の内...