レジェンズアルセウス自動化 コンゴウ団 [かちぬき道1周5分]

<実際のプレイ動画>
https://youtu.be/0R55d0vTkIc


0.はじめに
ポケモンレジェンズアルセウスのエンドコンテンツ「かちぬき道」。
ボタンを押すだけでクリアできる単純な作業を、自動化してみました。
とは言え私はプログラムのことを全く知らないので色々な方の文献を参考にさせていただきました。
学習用で何か自動化してみようと思いたって作成しているので、事前準備や前提条件の敷居が高いです。
そもそもよくわかっていないので、意味のないコマンドもあると思いますのでご了承ください。

<実際のプレイ動画>
https://youtu.be/0R55d0vTkIc

<ギンガ団 自動周回>

<シンジュ団 自動周回>
https://note.com/tender_tulip728/n/nc6ddcf143e78


1.マイコン導入
導入までは私自身が完璧に理解していないので、他の著者が紹介している導入方法を調べて実施してください。

・開発ボード 
著者使用: 他の著者がオススメされていたものを購入して使っています。


・Arduino IDEインストール


<参考にさせていただいた文献>
https://pokemonit.com/nintendo-switch-control-library/

<使わせていただいたライブラリ>
NintendoSwitchControlLibrary

ライブラリが初心者でも扱えるように作ってありオススメです。
一般的によく使われる入力パターンが用意されていることもあって、私のような知識がない者でも簡単に作成することができました。

レフマーナさん:
サイトへのリンクを許可いただき、ありがとうございます(*^-^*)


2.できること
・「かちぬき道」コンゴウ団1周5分で周回。

報酬:(コンゴウ団)
・「けいけんアメXL」×3

1時間程度でレベル1のポケモンをレベル100まで育てることができます。
※けいけんアメXLを1時間で36個ほど手に入れることができます。
※ヒノアラシのレベル5 ⇒ レベル100まで36個で到達できます。

・「ポケモン進化アイテム」×1

かみなりのいし
つきのいし
たいようのいし
みずのいし
リーフのいし
エレキブースター
マグマブースター
プロテクター

使い道:
・剣盾やBDSPから対応しているポケモンを輸送してレベルを一気に上げる。

それぞれの組織で報酬が違いますので、目的の報酬を確認して周回してください。

<ギンガ団>
<シンジュ団>https://note.com/tender_tulip728/n/nc6ddcf143e78


3.事前準備
・アルセウスをゲットする。(任務27:神と呼ばれるポケモン)
・かちぬき道のコンゴウ団を5回目まで解放しておく。
・アルセウスをレベル100にしておく。
・アルセウスを素早さ上昇補正、攻撃と特攻に下降補正がかかっていない性格に変えておく。
・アルセウスの攻撃、特攻、素早さのがんばレベルを10にしておく。
・アルセウスにレジェンドプレートを使用しておく。


画像1

・覚えている技を下記のようにセットする。
①でんこうせっか(皆伝必須)
②だいちのちから
③サイコキネシス
④さばきのつぶて

画像3

・手持ちをアルセウス1匹にしておく。
(しなくても大丈夫かも?※要検証)
・ノボリの前で待機。

画像3

以上です。


4.ソースコード

/**
* かちぬき道を1周5分でクリア。
*
* <事前準備>
* 1.アルセウスをゲットする。(任務27:神と呼ばれるポケモン)
* 2.かちぬき道のコンゴウ団を5回目まで解放しておく。
* 3.アルセウスをレベル100にしておく。
* 4.アルセウスを素早さ上昇補正、攻撃と特攻に下降補正がかかっていない性格に変えておく。
* 5.アルセウスの攻撃、特攻、素早さのがんばレベルを10にしておく。
* 6.アルセウスにレジェンドプレートを使用しておく。
* 7.覚えている技を下記のようにセットする。
* でんこうせっか(皆伝必須)
* だいちのちから
* サイコキネシス
* さばきのつぶて
* 8.手持ちをアルセウス1匹にしておく。
* 9.ノボリの前で待機。
*/

// ライブラリ読み込みコード
#include <NintendoSwitchControlLibrary.h>

// セットアップ
void setup() {
// 待機時間
   pushButton(Button::B, 500, 5);
}

// 下記ループ
void loop() {
   pushButton(Button::A, 1500);
   pushButton(Button::A, 1500);
   
// かちぬき道を選択
   pushHat(Hat::DOWN, 1000);
   pushButton(Button::A, 1500);
   pushButton(Button::A, 1500);
   
// コンゴウ団を選択
   pushHat(Hat::DOWN, 2000);
   pushButton(Button::A, 1500); 
   pushButton(Button::A, 1500);

// ヒナツ会話   
   pushButton(Button::A, 6000);
   pushButton(Button::A, 5500);
   pushButton(Button::A, 14000);
// ヒナツ(1戦目)    
   pushButton(Button::A, 700);
   pushButton(Button::L, 500);
   pushButton(Button::A, 8000); 
   pushButton(Button::ZL, 500);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 13000);
   pushButton(Button::ZL, 500);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 8500);
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushHat(Hat::UP);
   pushButton(Button::A, 500, 20);
   pushButton(Button::A, 13000);
   
// ツバキ会話
   pushButton(Button::A, 1000);
   pushButton(Button::A, 1000);
   pushButton(Button::A, 14500);
// ツバキ(2戦目)
   pushButton(Button::A, 700);
   pushButton(Button::L, 500);
   pushButton(Button::A, 8000);
   pushButton(Button::ZL, 800);
   pushButton(Button::ZL, 800);
   pushButton(Button::A, 700);
   pushHat(Hat::DOWN);
   pushHat(Hat::DOWN);
   pushButton(Button::A, 700);
   pushButton(Button::A, 13000);
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushButton(Button::A, 700);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 9000);
   pushButton(Button::A, 16000);
   
   
// セキ会話
   pushButton(Button::A, 1500);
   pushButton(Button::A, 14500);
// セキ(3戦目)    
   pushButton(Button::A, 700);
   pushHat(Hat::UP);
   pushButton(Button::A, 21000);
   pushButton(Button::ZL, 500);
   pushButton(Button::A, 700);
   pushButton(Button::A, 19000);
   pushButton(Button::A, 700);
   pushButton(Button::A, 25000);
 // メッセージ進行のための動作     
   pushButton(Button::B, 500, 20);

}

5.マイコンをswitchに差し込む
マイコンを接続すると自動でスタートします。
あとはループするので放置で大丈夫です。
※動作環境にあわせて押下後のデュレイを変更してください。


6.工夫したところ
全体:
被弾しないだけならマニューラを使う方法はありますが、周回速度が落ちてしまうので、あえて被弾することで回転率を上げています。
そのため催眠術や火炎放射など、周回する上で不確定な要素を持つポケモンを先に倒しています。
急所などで確定数が変わらないよう、最後のポケモン以外は確1or 電光石火+確1で倒すようにしています。
被弾覚悟なので、急所+技の追加効果分のデュレイを多めに設定しております。

ヒナツ戦:
ブニャットからの被弾を受け入れる。
ブニャットは「切り裂く」しか使ってこないので、被弾しても問題ありません。

ツバキ戦:
ドラピオンからの被弾を受け入れる。
ドラピオンは「ベノムショック」しか使ってこないので、被弾しても問題ありません。

セキ戦:
ブラッキーからの被弾を受け入れる。
ブラッキーは「あくのはどう」と「サイコキネシス」しか使ってこないので、被弾しても問題ありません。


7.最後に
繰り返しになりますが、プログラムのことをよくわかっていないので意味のないコマンドもあると思いますので、気づいた方はそっと教えてもらえるととても喜びます(;・∀・)

拙い文章ですが、
ここまで読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?