コードをよこせ!

神は人を作り 人はプログラムを作る

ステ忍自動化 ブルエーレ

uragiyu.hateblo.jp

仕組みはウエストエンド版と同じです

[12/30 11:50 追記]
放置していたらいつの間にかジャングルにいて全員のLPが1になっていました
原因究明の後、修正できれば修正します
妖精の森関連かと踏んでいます

非営利のみでご利用ください

/*
使用ライブラリ

NintendoSwitchControlLibrary
https://github.com/lefmarna/NintendoSwitchControlLibrary

MIT License

Copyright (c) 2021 lefmarna

Copyright (c) 2019 celclow

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

/*
ロマンシング サガ -ミンストレルソング- リマスター
Romancing SaGa -Minstrel Song- Remastered

ステルス忍び足によるジュエル稼ぎ ver.2 (Arduino Leonardo 用)

このコードによって何らかの損害を被ったとしても、作者は一切責任を負えません。
どうかご了承下さい。
ブルエーレ-ベイル高原間で往復。
環境や隠密スキルレベルによって、各処理にかかる時間が異なるため、
効率が良くなるよう設定してください。

前提条件
1.  フィールド倍速設定を3倍にする。
2.  Menu の MapAbility から、アビリティをセットする。左端を 場所1、右端を 場所5 とする。
    場所1:ステルス (隠密スキルのレベルが低いほど効率が良くなる)
    場所2:忍び足   (隠密スキルのレベルが低いほど効率が良くなる)
    場所3:「外す」の右にあるアビリティ(使用回数が多いほど効率が良くなる)
    場所4:自由(使用回数が多いほど効率が良くなる)
    場所5:自由(使用回数が多いほど効率が良くなる)
3.  マップアビリティ最大使用回数をこのコードの #define MA_NUM の右に書き込む。
4.  MapAbility を閉じる。
5.  Menu を閉じる。
6.  ワールドマップを開き、ベイル高原がブルエーレの何個下にあるかを確認し、
    このコードの #define BR_NUM の右に書き込む。
7.  ブルエーレからワールドマップを開き、ベイル高原に移動する。
8.  フィールドでのマップアビリティのカーソルを 場所1 に合わせる。
9.  使用中のコントローラを切断する。
10. このコードを書き込んだ Arduino Leonardo を接続する。
*/

#include <NintendoSwitchControlLibrary.h>
#define MA_NUM     87 // マップアビリティ最大使用回数
#define BR_NUM      3 // ベイル高原がブルエーレの何個下にあるか
#define TILT_MS  1000 // 主人公移動時間[ms]
#define PUSH_MS   100 // ボタン単押時間[ms]
#define HOLD_MS  2000 // ボタン長押時間[ms]
#define MAP_MS   4000 // マップ切替待機時間[ms]
#define CT_MS    8000 // クールタイム[ms]
#define INIT_MS   500 // 初期化用ボタン単押時間[ms]
#define INIT_NUM    5 // 初期化用ボタン単押回数

int first_flag = 0;

void stealth(){
    // ブルエーレへ
    tiltLeftStick(Stick::NEUTRAL, Stick::MAX, TILT_MS);
    delay(MAP_MS);

    // 使用回数リセット
    pushButton(Button::Y, PUSH_MS);
    if(first_flag == 0){
        holdHat(Hat::DOWN, HOLD_MS);
        pushHat(Hat::UP, PUSH_MS, 3);
    }
    pushButton(Button::A, PUSH_MS);
    if(first_flag == 0){
        holdHat(Hat::LEFT, HOLD_MS);
        pushHat(Hat::RIGHT, PUSH_MS, 2);
        first_flag++;
    }
    pushButton(Button::A, PUSH_MS, 3);
    pushHat(Hat::RIGHT, PUSH_MS);
    pushButton(Button::A, PUSH_MS);
    pushButton(Button::B, PUSH_MS, 2);

    // ベイル高原へ
    tiltLeftStick(Stick::NEUTRAL, Stick::MAX, 1000);
    delay(MAP_MS);
    pushButton(Button::X, PUSH_MS, 2);
    pushHat(Hat::DOWN, PUSH_MS, BR_NUM);
    pushButton(Button::A, PUSH_MS);
    holdButton(Button::B, HOLD_MS);
    delay(MAP_MS);

    // ステルス忍び足
    for(int i=0; i<(MA_NUM/2); i++){
        pushButton(Button::B, PUSH_MS);
        pushButton(Button::R, PUSH_MS);
        pushButton(Button::B, PUSH_MS);
        pushButton(Button::L, PUSH_MS);
        delay(CT_MS);
    }
}

void setup(){
    pushButton(Button::A, INIT_MS, INIT_NUM);
}

void loop(){
    stealth();
}