【解決済】アクターレベルによって、同一マップに登場するエネミーのグループを追加

yukineko
記事: 8
登録日時: 2023年7月18日(火) 17:08

【解決済】アクターレベルによって、同一マップに登場するエネミーのグループを追加

投稿記事by yukineko » 2023年7月23日(日) 20:44

こんにちは、yukinekoです。
今回「アクターレベルによって、同一マップに登場するエネミーのグループを追加」されるプラグインが欲しいと考えております。

例)
アクターレベルが20以下はエネミーグループA,Bが出現。
アクターレベルが20以降はエネミーグループA,Bに加え、エネミーグループCが追加される。

こちらについてMV質問板で質問した際、イベントのスクリプトで実装可能だとご回答を頂きましたが、どこでもセーブが出来る場合は不具合が生じる旨も合わせてご説明頂きました。

名無し蛙 さんが書きました:一つ欠点がありますが(理由は後述)イベントコマンド>スクリプトから
以下のコードを入力すれば実装出来ます。

コード: 全て選択

if (20 <= $gameParty.leader().level) {
    $dataMap.encounterList.push({
        regionSet: [],
        troopId: 2,
        weight: 1
    });
}

パーティ先頭アクターのレベルが20以上であれば
エンカウンターリストに要素を追加する、という単純なコードですね。
regionSetは出現リージョンの配列ですが、空配列の時にマップ全域となります。
これをマップ開始時に一度だけ実行するイベントに記載すれば、一応要望通りになるとは思います。
欠点はセーブデータに変更が記録されない事です。
つまりどこでもセーブ可能な場合等、指定のマップでセーブ可能だと不具合が生じます。
セーブデータにも正しく反映させようと思うと小型のプラグイン作成が必須になると思います。


上記の内容を踏まえ、セーブデータにも正しく反映されるプラグインを所望しております。
何卒、宜しくお願い致します。
最後に編集したユーザー yukineko on 2023年7月24日(月) 10:22 [ 編集 1 回目 ]

名無し蛙
記事: 304
登録日時: 2015年11月23日(月) 02:46

Re: アクターレベルによって、同一マップに登場するエネミーのグループを追加

投稿記事by 名無し蛙 » 2023年7月23日(日) 23:56

調べたついでなのでアップしておきます。
ライセンスはこの程度ならCC0(著作権放棄)で良いです。

コード: 全て選択

(() => {
    'use strict'

    const _Game_Map_encounterList = Game_Map.prototype.encounterList;
    Game_Map.prototype.encounterList = function() {
        const addList = [];
        Object.keys($dataMap.meta)
            .filter(key => key.includes('ENC_ADD'))
            .forEach(key => {
                const args = $dataMap.meta[key].split(' ').map(Number);
                if (args[0] <= $gameParty.leader().level) {
                    addList.push({
                        regionSet: args.slice(3),
                        troopId: args[1],
                        weight: args[2]
                    });
                }
            })
        return _Game_Map_encounterList.apply(this, arguments).concat(addList);
    };
})();

適当な空テキストファイルに上記のコードをコピペして〇〇.jsという名前で保存。
プラグインマネージャでONにすれば適用されると思います。
お好みで公式講座や他プラグイン素材を基にプラグインマネージャの説明欄を編集してください。

使い方は「マップの設定」のメモ欄に
<ENC_ADD_1:20 1 5>
<ENC_ADD_2:20 2 5 3 6 9>

等と書けば反映されます。
:の左側ENC_ADDは必要な文字列ですが
_1、_2は同一メモ内の他文字列と被らなければ何でも良いです。
:の右側は順に①先頭アクターのレベル②トループID③重み④以降出現リージョン番号(可変長・省略可)です。
出現リージョン番号を省略した場合、全域で出現します。
yukineko
記事: 8
登録日時: 2023年7月18日(火) 17:08

Re: アクターレベルによって、同一マップに登場するエネミーのグループを追加

投稿記事by yukineko » 2023年7月24日(月) 10:22

>名無し蛙様
こんにちは、yukinekoです。
別トピックの方ではお世話になりました。

こちらでもお答え頂き、更にはプラグインの作成を有難うございます…!
先程テストプレイにて実装の確認がとれました。
ゲーム制作を始めた当初から、個人的にとても欲しいプラグインだったので大変嬉しいです!
戦闘のやり込み要素がグッとあがった印象で大変ワクワクします。
ご制作頂いたプラグイン、大切に使わせて頂きます。
貴重なお時間を頂き、有難うございました!

“MV:プラグイン素材のリクエスト” へ戻る