2021/02/28

【ポケモン×Arduino_05】冠の雪原レジエレキ・レジドラゴ色違い厳選自動化

※本記事は、ポケモン剣盾:冠の雪原の巨人伝説の遺跡に出現するレジエレキ、レジドラゴについて、色違いが出現するまでのリセマラ(逃げマラ?)を自動化するプログラムについて解説した記事です。ポケモン剣盾の操作をArduino Leonardoで自動化しております。「Arduinoって何?」って方は00回目の記事を、Arduinoの環境構築(ライブラリ含む)は01回目の記事をご覧ください。また、本記事は前回の記事(04回目)のプログラムを応用したものとなりますので、合わせてご覧ください

 

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


 

きっかけ、動機

前回の記事(04回目)にて、レジロック、レジアイス、レジスチルの色違い厳選の自動化が実現できました。同じ原理でレジエレキ、レジドラゴの色違い厳選も可能となるため、同様に作ってみました。

 

これで何ができるの?

主な動作は前回の記事(04回目)と同様ですので、そちらをご覧ください。今回は床の踏み方をレジエレキ、レジドラゴ用に作成したことで、床を踏む作業~色違いが出現するまでを同様に自動化しました。


原理、おおまかな流れ

概要

主な動作は前回の記事(04回目)と同様に、床の丸をすべて踏む>シンボルエンカウント>逃げるを繰り返すことにしました。レジ3種と異なる点は移動パート(非戦闘時)のみとなります。

移動パート

レジエレキ、レジドラゴは共通の遺跡から出現し、光らせる床の形はレジエレキ、レジドラゴで異なります。1度正しい形に光らせると、電気or龍で固定してもいいか聞かれ、戦闘が始まります。1度固定した後は、選んだ方のレジ系の形に使用しない床は光らなくなります。そのため、1度手動で光らせて戦闘した後は、関係ない床を踏んでも光らないため自動化が簡単となります。必ず1度手動で光らせて戦闘してください。

 

移動パートでは、以下の図のように動きます。図の四角は遺跡の部屋を表しています。黄色の丸はエレキ、ドラゴの出現に使用する床、黒色の丸は光らない床です。

 


レジエレキは、レジ3種のプログラムをほとんどそのまま流用できます(横移動の位置のみ調節)。対してレジドラゴは縦中央列を光らせるために、遺跡に入ってすぐのところで石像に向かって直進し、その後横移動を繰り返しています。

床の丸をすべて踏んだ場合、ニブニブニブと 揺れてテキストが表示されます。その後、壁づたいに石像(上中央の赤丸)に話しかけると、戦闘が開始します。

先頭から逃げた後は、部屋を一度出ることで床の光をリセットします。その後再び入り、壁づたいに進むことで初期位置に戻ります。あとは最初から順に動作を繰り返します。

 

誤動作への対策

レジ3種と同様のため省略。

 

準備、必要なもの

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

(レジ3種と共通)

・自爆技(自分が瀕死になる技)を1番上の技に持つポケモン、先頭に置き、けむり玉をもたせる。また、なつき度を下げる

(自爆技のうち、置き土産はクリアボディに効かないため不可。)

(なつき度が歩くとともに増えるため、レジ3種に使い続けると上がっている可能性あり。なつき度が上がるとモーションが増え、「たたかう」が表示されるまでの時間が増える。なつき度は漢方薬を与えることで減少。) 

・その他に捕獲用のポケモンやボールを用意

・ゲームを起動してからマイコンを挿して開始する前に、遺跡の入り口を出入りして外のフィールドを見ておく。

(ゲーム起動から最初のマップの切り替わりでロード時間が長くなり、ずれる可能性があるため) 

レジエレキ・ドラゴで新たに必要なこと(重要)

・レジエレキあるいはレジドラゴの形になるように手動で床を光らせ、1度戦闘を行いエレキ、ドラゴの出現を固定する。

 

作成したスケッチ

作成したスケッチ(レジエレキ・ドラゴで2種類)はそれぞれ以下のようになります。また、スケッチのファイルは以下からDLできます。

エレキ用はこちら

ドラゴ用はこちら

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

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

・手持ち最初のポケモンはイエッサン♀(二つ名無し)、1番上の技はいやしのねがい

捕獲するレジ系の種類や、使用する言語やポケモン、あるいは本体などによって話しかけてから戦闘が始まるまでの時間が前後する可能性があります。その場合はレジ3種と同様に調節してください。


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

 レジエレキ用

 
/**
*
* 初期条件は以下の通り
* 1. 先頭を、自爆技を1番上の技に持つポケモン(癒しの願い推奨)、確実に逃げるためにけむり玉を持たせる
*    また、なつき度は下げておく(歩いているうちに上がり、余計なモーションが増えるため)
* 2. その他、捕獲要因やボールを用意
* 3. フィールドの切り替わり初回のみロードが長いことがあるので、ソフト起動してから1回は遺跡入り口を出入り
*   (遺跡外でセーブ推奨、その場合は遺跡に入るだけでOK)
*
* 4. ※重要※.レジエレキ・ドラゴの遺跡で1度レジエレキorドラゴの形に床を光らせ、1度戦闘する(逃げる)。これにより、以降の床の光がエレキorドラゴ用に固定される。
*
* 5. 床が光っていない状態で部屋左角からマイコンを挿して周回スタート、ソフトリセットした場合は3からやり直し
*/

// エレキ用
#include <auto_command_util.h>

void regiBattle(){

     // レジ3種と同様のため省略
}

void regiElekiWalk(){
    // 左上角に進み続けてぶつかる
    tiltJoystick(-100, -100, 0, 0, 4500);
    // 下移動、光る床上段へ
    tiltJoystick(0, 100, 0, 0, 955);
    // 右移動、光る床上段を光らせる
    tiltJoystick(100, 0, 0, 0, 4000);
    // 下移動、光る床中段へ
    tiltJoystick(0, 100, 0, 0, 440);
    // 左移動、光る床上段を光らせる
    tiltJoystick(-100, 0, 0, 0, 4000);
    // 下移動、光る床中段へ
    tiltJoystick(0, 100, 0, 0, 430);
    // 右移動、光る床下段を光らせる
    tiltJoystick(100, 0, 0, 0, 4000);
    // 石像光る、テキスト進める
    pushButton(Button::B, 1000,4);
    // 右壁に進み続けてぶつかる
    tiltJoystick(100, 0, 0, 0, 2000);
    // 右上角に進み続けてぶつかる
    tiltJoystick(100, -100, 0, 0, 4500);
    // 左上に進み続けて石像まで移動
    tiltJoystick(-100, -100, 0, 0, 2000);
    
}

void regiReset(){
    // 石像前から、一度外に出ることで床をリセットする
    tiltJoystick(0, 100, 0, 0, 7000);
    // 左上移動、光る床を踏まずに左上角へ
    tiltJoystick(-100, -30, 0, 0, 2000);
    
}


void setup(){

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

void loop(){
    regiElekiWalk();
    regiBattle();
    regiReset();
}

 

 レジドラゴ用

 
// ドラゴ用
#include <auto_command_util.h>

void regiBattle(){

     // レジ3種と同様のため省略
}

// 遺跡に入ったところからスタート
void regiDragoWalk(){
    // 上移動、光る床中央列を光らせる
    tiltJoystick(0, -100, 0, 0, 4500);
    // 左上角に進み続けてぶつかる
    tiltJoystick(-100, -100, 0, 0, 4500);
    // 下移動、光る床上段へ
    tiltJoystick(0, 100, 0, 0, 955);
    // 右移動、光る床上段(左右のみ)を光らせる
    tiltJoystick(100, 0, 0, 0, 4000);
    // 下移動、光る床中段へ
    tiltJoystick(0, 100, 0, 0, 460);
    // 左移動、光る床上段を光らせる
    tiltJoystick(-100, 0, 0, 0, 4000);
    // 石像光る、テキスト進める
    pushButton(Button::B, 1000,4);
    // 左壁に進み続けてぶつかる
    tiltJoystick(-100, 0, 0, 0, 2000);
    // 左上角に進み続けてぶつかる
    tiltJoystick(-100, -100, 0, 0, 4500);
    // 右上に進み続けて石像まで移動
    tiltJoystick(100, -100, 0, 0, 2000);
    
}

// 遺跡の出入りのみ、左上角へは行かない
void regiReset(){
    // 石像前から、一度外に出ることで床をリセットする
    tiltJoystick(0, 100, 0, 0, 7000);
    
}



void setup(){

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

void loop(){
    regiDragoWalk();
    regiBattle();
    regiReset();
}

 

最後に

本スケッチを使用することで、レジ系3種と同様、レジエレキ、レジドラゴの色違いを出現させるまでの作業を寝てる間などに可能となります。床を踏んで光らせるといった作業も必要なくなります。色違いが出た場合、マイコンを外してプレイヤーが操作するまで待機し続けるため、好きなボールでの捕獲が可能です。

レジエレキ、ドラゴは冠の雪原での新規ポケモンであり、過去作では手に入らないことからレジ3種以上に需要はあるかと思います。ぜひ色違い厳選にお役立てください。

また、レジギガスについても色違い厳選が可能であり、プログラム自体はほぼ完成しております。 近いうちに記事を作成するかと思います。

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

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



 

0 件のコメント:

コメントを投稿

【ポケモンSV×pokecon01】テラレイドローカルゲスト周回自動化【arduino04と連携】

 ※本記事は、ポケモンSVにて固定した テラレイドのローカル通信のゲスト側のレイド周回によるアイテム・ポケモン入手 を自動化するプログラムについて解説した記事です。 今回は Poke-Controller を利用しつつ、前回公開した ホスト側 の自動化プログラム( SV×Ardu...