code:
//=============================================================================
// MessageWindowHidden.js
// ----------------------------------------------------------------------------
// (C)2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 2.6.1 2020/05/21 トリガースイッチと連動無効スイッチの状態によってエラーが起きうる記述を修正
// 2.6.0 2020/05/20 ピクチャの連動を無効にできるスイッチを追加
// 2.5.1 2020/05/19 2.3.0の仕様変更で連動表示ピクチャの透明度が復元できない問題を修正
// 2.5.0 2020/05/17 指定したスイッチに連動させてウィンドウの表示/非表示を切り替える機能を追加
// 2.4.0 2020/05/08 選択肢表示中でもウィンドウを隠せるよう設定を追加
// 2.3.0 2019/10/22 ウィンドウを表示状態にもどしたとき、連動ピクチャは、もともと表示していた不透明度を復元するよう仕様変更
// 2.2.0 2019/06/09 メッセージウィンドウと逆に連動して指定したピクチャの表示/非表示が自動で切り替わる機能を追加
// 2.1.0 2018/10/10 戦闘中にプラグインを無効化できる機能を追加。
// 2.0.0 2018/03/31 消去するトリガーを複数指定できる機能を追加。パラメータの指定方法を見直し。
// 1.4.0 2018/03/10 指定したスイッチがONの間はウィンドウ消去を無効化できる機能を追加
// 1.3.2 2017/08/02 ponidog_BackLog_utf8.jsとの競合を解消
// 1.3.1 2017/07/03 古いYEP_MessageCore.jsのネーム表示ウィンドウが再表示できない不具合の修正(by DarkPlasmaさま)
// 1.3.0 2017/03/16 連動して非表示にできるピクチャを複数指定できる機能を追加
// 1.2.1 2017/02/07 端末依存の記述を削除
// 1.2.0 2016/01/02 メッセージウィンドウと連動して指定したピクチャの表示/非表示が自動で切り替わる機能を追加
// 1.1.0 2016/08/25 選択肢の表示中はウィンドウを非表示にできないよう仕様変更
// 1.0.4 2016/07/22 YEP_MessageCore.jsのネーム表示ウィンドウと連携する機能を追加
// 1.0.3 2016/01/24 メッセージウィンドウが表示されていないときも非表示にできてしまう現象の修正
// 1.0.2 2016/01/02 競合対策
// 1.0.1 2015/12/31 コメント追加＋英語対応（仕様に変化なし）
// 1.0.0 2015/12/30 初版
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc Erase message window
 * @author triacontane
 *
 * @param triggerButton
 * @desc Trigger buttons
 * (light_click or shift or control)
 * @default ["light_click"]
 * @type combo[]
 * @option light_click
 * @option shift
 * @option control
 * @option tab
 * @option pageup
 * @option pagedown
 * @option debug
 *
 * @param triggerSwitch
 * @desc The window will be erased in conjunction with the specified switch.
 * @default 0
 * @type switch
 *
 * @param linkPictureNumbers
 * @desc Picture number of window show/hide
 * @default []
 * @type number[]
 *
 * @param linkShowPictureNumbers
 * @desc Picture number of window show/hide
 * @default []
 * @type number[]
 *
 * @param disableLinkSwitchId
 * @desc 指定した番号のスイッチがONのとき、ピクチャの連動が無効になります。
 * @default 0
 * @type switch
 *
 * @param disableSwitchId
 * @desc 指定した番号のスイッチがONのとき、プラグインの機能が無効になります。
 * @default 0
 * @type switch
 *
 * @param disableInBattle
 * @desc trueのとき、戦闘中にプラグインの機能を無効にします。
 * @default false
 * @type boolean
 *
 * @param disableInChoice
 * @desc 選択肢の表示中はウィンドウを非表示にできなくなります。
 * @default true
 * @type boolean
 *
 * @help Erase message window (and restore) when triggered
 *
 * This plugin is released under the MIT License.
 */
/*:ja
 * @plugindesc メッセージウィンドウ一時消去プラグイン
 * @author トリアコンタン
 *
 * @param triggerButton
 * @text ボタン名称
 * @desc ウィンドウを消去するボタンです。(複数登録可能) プラグイン等で入力可能なボタンを追加した場合は直接入力
 * @default ["右クリック"]
 * @type combo[]
 * @option 右クリック
 * @option shift
 * @option control
 * @option tab
 * @option pageup
 * @option pagedown
 * @option debug
 *
 * @param triggerSwitch
 * @text トリガースイッチ
 * @desc 指定したスイッチに連動させてウィンドウを消去します。並列処理などを使ってON/OFFを適切に管理してください。
 * @default 0
 * @type switch
 *
 * @param linkPictureNumbers
 * @text 連動ピクチャ番号
 * @desc ウィンドウ消去時に連動して不透明度を[0]にするピクチャの番号です。
 * @default []
 * @type number[]
 *
 * @param linkShowPictureNumbers
 * @text 連動表示ピクチャ番号
 * @desc ウィンドウ消去時に連動して不透明度を[255]にするピクチャの番号です。
 * @default []
 * @type number[]
 *
 * @param disableLinkSwitchId
 * @text 連動ピクチャ無効スイッチ
 * @desc 指定した番号のスイッチがONのとき、ピクチャの連動が無効になります。
 * @default 0
 * @type switch
 *
 * @param disableSwitchId
 * @text 無効スイッチ
 * @desc 指定した番号のスイッチがONのとき、プラグイン全体の機能が無効になります。
 * @default 0
 * @type switch
 *
 * @param disableInBattle
 * @text 戦闘中無効化
 * @desc trueのとき、戦闘中にプラグインの機能を無効にします。
 * @default false
 * @type boolean
 *
 * @param disableInChoice
 * @text 選択肢表示中は無効
 * @desc 選択肢の表示中はウィンドウを非表示にできなくなります。
 * @default true
 * @type boolean
 *
 * @help メッセージウィンドウを表示中に指定したボタンを押下することで
 * メッセージウィンドウを消去します。もう一度押すと戻ります。
 *
 * ウィンドウ消去時に連動して不透明度を[0]にするピクチャを指定することができます。
 * 背景に特定のピクチャを使用している場合などに指定してください。
 * 再表示すると不透明度は、ウィンドウ非表示まえの不透明度で復元されます。
 *
 * ver2.0.0よりパラメータの指定方法が一部変更になりました。
 * 以前のバージョンを使っていた方は再設定をお願いします。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */
(function() {
    'use strict';

    /**
     * Create plugin parameter. param[paramName] ex. param.commandPrefix
     * @param pluginName plugin name(EncounterSwitchConditions)
     * @returns {Object} Created parameter
     */
    var createPluginParameter = function(pluginName) {
        var paramReplacer = function(key, value) {
            if (value === 'null') {
                return value;
            }
            if (value[0] === '"' && value[value.length - 1] === '"') {
                return value;
            }
            try {
                return JSON.parse(value);
            } catch (e) {
                return value;
            }
        };
        var parameter     = JSON.parse(JSON.stringify(PluginManager.parameters(pluginName), paramReplacer));
        PluginManager.setParameters(pluginName, parameter);
        return parameter;
    };
    var param = createPluginParameter('MessageWindowHidden');

    //=============================================================================
    // Game_Picture
    //  メッセージウィンドウの表示可否と連動します。
    //=============================================================================
    Game_Picture.prototype.linkWithMessageWindow = function(opacity) {
        this._opacity       = opacity;
        this._targetOpacity = opacity;
    };

    //=============================================================================
    // Window_Message
    //  指定されたボタン押下時にウィンドウとサブウィンドウを非表示にします。
    //=============================================================================
    var _Window_Message_updateWait      = Window_Message.prototype.updateWait;
    Window_Message.prototype.updateWait = function() {
        if (!this.isClosed() && this.isTriggeredHidden() && this.isEnableInChoice()) {
            if (!this.isHidden()) {
                this.hideAllWindow();
            } else {
                this.showAllWindow();
            }
        }
        var wait = _Window_Message_updateWait.apply(this, arguments);
        if (this.isHidden() && this.visible) {
            this.hideAllWindow();
        }
        return wait;
    };

    Window_Message.prototype.isEnableInChoice = function() {
        return !(param.disableInChoice && $gameMessage.isChoice());
    };

    Window_Message.prototype.hideAllWindow = function() {
        this.hide();
        this.subWindows().forEach(function(subWindow) {
            this.hideSubWindow(subWindow);
        }.bind(this));
        if (this.hasNameWindow() && !this.nameWindowIsSubWindow()) this.hideSubWindow(this._nameWindow);
        this._originalPictureOpacities = {};
        this.linkPictures(0, param.linkPictureNumbers);
        this.linkPictures(255, param.linkShowPictureNumbers);
        this._hideByMessageWindowHidden = true;
    };

    Window_Message.prototype.showAllWindow = function() {
        this.show();
        this.subWindows().forEach(function(subWindow) {
            this.showSubWindow(subWindow);
        }.bind(this));
        if (this.hasNameWindow() && !this.nameWindowIsSubWindow()) this.showSubWindow(this._nameWindow);
        this.linkPictures(null, param.linkShowPictureNumbers);
        this.linkPictures(null, param.linkPictureNumbers);
        this._hideByMessageWindowHidden = false;
    };

    Window_Message.prototype.isHidden = function() {
        return this._hideByMessageWindowHidden;
    };

    Window_Message.prototype.linkPictures = function(opacity, pictureNumbers) {
        if (!pictureNumbers || $gameSwitches.value(param.disableLinkSwitchId)) {
            return;
        }
        pictureNumbers.forEach(function(pictureId) {
            this.linkPicture(opacity, pictureId);
        }, this);
    };

    Window_Message.prototype.linkPicture = function(opacity, pictureId) {
        var picture = $gameScreen.picture(pictureId);
        if (!picture) {
            return;
        }
        if (opacity === null) {
            if (!this._originalPictureOpacities.hasOwnProperty(pictureId)) {
                return;
            }
            opacity = this._originalPictureOpacities[pictureId];
        } else {
            this._originalPictureOpacities[pictureId] = picture.opacity();
        }
        picture.linkWithMessageWindow(opacity);
    };

    Window_Message.prototype.hideSubWindow = function(subWindow) {
        subWindow.prevVisible = subWindow.visible;
        subWindow.hide();
    };

    Window_Message.prototype.showSubWindow = function(subWindow) {
        if (subWindow.prevVisible) subWindow.show();
        subWindow.prevVisible = undefined;
    };

    Window_Message.prototype.hasNameWindow = function() {
        return this._nameWindow && typeof Window_NameBox !== 'undefined';
    };

    // 古いYEP_MessageCore.jsでは、ネーム表示ウィンドウはsubWindowsに含まれる
    Window_Message.prototype.nameWindowIsSubWindow = function() {
        return this.subWindows().filter(function(subWindow) {
            return subWindow === this._nameWindow;
        }, this).length > 0;
    };

    Window_Message.prototype.disableWindowHidden = function () {
        return (param.disableSwitchId > 0 && $gameSwitches.value(param.disableSwitchId)) ||
            (param.disableInBattle && $gameParty.inBattle());
    };

    Window_Message.prototype.isTriggeredHidden = function() {
        if (this.disableWindowHidden()) {
            return false;
        }
        if (param.triggerSwitch > 0 && this.isTriggeredHiddenSwitch()) {
            return true;
        }
        return param.triggerButton.some(function(button) {
            switch (button) {
                case '':
                case '右クリック':
                case 'light_click':
                    return TouchInput.isCancelled();
                case 'ok':
                    return false;
                default:
                    return Input.isTriggered(button);
            }
        });
    };

    Window_Message.prototype.isTriggeredHiddenSwitch = function() {
        var triggerSwitch = $gameSwitches.value(param.triggerSwitch);
        if (triggerSwitch && !this.isHidden()) {
            return true;
        }
        if (!triggerSwitch && this.isHidden()) {
            return true;
        }
        return false;
    };

    var _Window_Message_updateInput      = Window_Message.prototype.updateInput;
    Window_Message.prototype.updateInput = function() {
        if (this.isHidden()) return true;
        return _Window_Message_updateInput.apply(this, arguments);
    };

    //=============================================================================
    // Window_ChoiceList、Window_NumberInput、Window_EventItem
    //  非表示の間は更新を停止します。
    //=============================================================================
    var _Window_ChoiceList_update      = Window_ChoiceList.prototype.update;
    Window_ChoiceList.prototype.update = function() {
        if (!this.visible) return;
        _Window_ChoiceList_update.apply(this, arguments);
    };

    var _Window_NumberInput_update      = Window_NumberInput.prototype.update;
    Window_NumberInput.prototype.update = function() {
        if (!this.visible) return;
        _Window_NumberInput_update.apply(this, arguments);
    };

    var _Window_EventItem_update      = Window_EventItem.prototype.update;
    Window_EventItem.prototype.update = function() {
        if (!this.visible) return;
        _Window_EventItem_update.apply(this, arguments);
    };
})();


code:
//==============================================================================
// MpiGetMapImage.js
//==============================================================================

/*:
 * @plugindesc マップ全体を画像として出力します。
 * @author 奏ねこま（おとぶき ねこま）
 *
 * @param GetImageTrigger1
 * @desc マップを画像出力するトリガーを指定してください。
 * @default Input.isPressed('control') && Input.isTriggered('pageup')
 *
 * @param GetImageTrigger2
 * @desc マップを画像出力するトリガーを指定してください。（キャラクター表示OFF）
 * @default Input.isPressed('control') && Input.isTriggered('pagedown')
 *
 * @param Vertical Split
 * @desc 画像出力時の縦方向の分割数を指定してください。
 * @default 1
 *
 * @param Horizontal Split
 * @desc 画像出力時の横方向の分割数を指定してください。
 * @default 1
 *
 * @param OutputFolder
 * @desc 画像を出力するフォルダを指定してください。
 * @default output
 *
 * @param TestModeOnly
 * @desc テスト時のみ有効にする場合は true を指定してください。
 * @default true
 *
 * @help
 * [説明]
 * マップ全体をPNG画像として出力します。
 *
 * [使用方法]
 * プラグイン設定のGetImageTrigger1またはGetImageTrigger2で指定した条件が成立し
 * た瞬間のマップ全体の画像を、PNG画像に出力します。
 * GetImageTrigger1とGetImageTrigger2のデフォルト設定は、以下のような意味です。
 *
 * GetImageTrigger1
 *  Input.isPressed('control') && Input.isTriggered('pageup')
 *  Ctrlキー（またはAltキー）を押しながら、PageUpキーが押された瞬間。
 *
 * GetImageTrigger2
 *  Input.isPressed('control') && Input.isTriggered('pagedown')
 *  Ctrlキー（またはAltキー）を押しながら、PageDownキーが押された瞬間。
 *
 * [大きなマップを出力する際の注意]
 * 160×160以上の大きなマップを1枚の画像として出力するとエラーになることがありま
 * す。その場合はプラグイン設定のVertical SplitとHorizontal Splitに2以上の値を設
 * 定して分割出力してください。例えばVertical SplitとHorizontal Splitの値がとも
 * に2の場合、縦横それぞれ2分割され4枚の画像として出力されます。
 *
 * [利用規約] ..................................................................
 *  - 本プラグインの利用は、RPGツクールMV/RPGMakerMVの正規ユーザーに限られます。
 *  - 商用、非商用、有償、無償、一般向け、成人向けを問わず、利用可能です。
 *  - 利用の際、連絡や報告は必要ありません。また、製作者名の記載等も不要です。
 *  - プラグインを導入した作品に同梱する形以外での再配布、転載はご遠慮ください。
 *  - 本プラグインにより生じたいかなる問題についても、一切の責任を負いかねます。
 * [改訂履歴] ..................................................................
 *   Version 1.02  2019/06/03  分割出力機能を追加。
 *   Version 1.01  2018/03/09  遠景、および一部の近・遠景関連プラグインに暫定対応。
 *                             Foreground.js（公式プラグイン・神無月サスケ様）
 *                             視差ゼロ遠景のぼかし除去プラグイン（トリアコンタン様）
 *   Version 1.00  2018/12/27  初版
 * -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
 *  Web Site: http://makonet.sakura.ne.jp/rpg_tkool/
 *  Twitter : https://twitter.com/koma_neko
 *  Copylight (c) 2016-2019 Nekoma Otobuki
 */

var Imported = Imported || {};
var Makonet = Makonet || {};

(function(){
    'use strict';

    const plugin_name = 'MpiGetMapImage';

    Imported[plugin_name] = true;
    Makonet[plugin_name] = {};

    let _plugin = Makonet[plugin_name];
    let _parameters = PluginManager.parameters(plugin_name);

    _plugin.trigger1   = _parameters['GetImageTrigger1'];
    _plugin.trigger2   = _parameters['GetImageTrigger2'];
    _plugin.vertical   = Number(_parameters['Vertical Split']) || 1;
    _plugin.horizontal = Number(_parameters['Horizontal Split']) || 1;
    _plugin.folder     = _parameters['OutputFolder'];
    _plugin.testOnly   = _parameters['TestModeOnly'].toLowerCase() === 'true';

    //==============================================================================
    // Local Function
    //==============================================================================

    function createMapImage() {
        // 現在のマップ表示情報を退避
        let displayX = $gameMap._displayX;
        let displayY = $gameMap._displayY;
        let parallaxOx = $gameMap.parallaxOx();
        let parallaxOy = $gameMap.parallaxOy();
        let foregroundOx, foregroundOy;
        if ($gameMap.foregroundOx) {
            foregroundOx = $gameMap.foregroundOx();
            foregroundOy = $gameMap.foregroundOy();
        }
        // コピー情報作成
        let copyInfo = [];
        let splitWidth = Math.ceil($gameMap.width() / _plugin.horizontal);
        let splitHeight = Math.ceil($gameMap.height() / _plugin.vertical);
        let screenWidth = Math.floor(Graphics.width / $gameMap.tileWidth());
        let screenHeight = Math.floor(Graphics.height / $gameMap.tileHeight());
        for (let i = 0; i < _plugin.vertical; i++) {
            for (let j = 0; j < _plugin.horizontal; j++) {
                let x1 = j * splitHeight;
                let y1 = i * splitWidth;
                let width1 = Math.min(splitWidth, $gameMap.width() - j * splitWidth);
                let height1 = Math.min(splitHeight, $gameMap.height() - i * splitHeight);
                for (let m = 0; m < Math.ceil(height1 / screenHeight); m++) {
                    for (let n = 0; n < Math.ceil(width1 / screenWidth); n++) {
                        let x2 = x1 + n * screenWidth;
                        let y2 = y1 + m * screenHeight;
                        let width2 = Math.min(screenWidth, width1 - n * screenWidth);
                        let height2 = Math.min(screenHeight, height1 - m * screenHeight);
                        copyInfo.push(new Map([
                            ['imageId', i * _plugin.vertical + j],
                            ['imageWidth', width1 * $gameMap.tileWidth()],
                            ['imageHeight', height1 * $gameMap.tileHeight()],
                            ['srcMapX', x2],
                            ['srcMapY', y2],
                            ['copyWidth', width2 * $gameMap.tileWidth()],
                            ['copyHeight', height2 * $gameMap.tileHeight()],
                            ['dstX', (x2 - x1) * $gameMap.tileWidth()],
                            ['dstY', (y2 - y1) * $gameMap.tileHeight()]
                        ]));
                    }
                }
            }
        }
        // Bitmap作成
        let bitmap = [];
        copyInfo.forEach(info => {
            bitmap[info.get('imageId')] = bitmap[info.get('imageId')] || new Bitmap(info.get('imageWidth'), info.get('imageHeight'));
            $gameMap._displayX = info.get('srcMapX');
            $gameMap._displayY = info.get('srcMapY');
            let spriteset = SceneManager._scene._spriteset;
            spriteset.update();
            if (spriteset._parallax.bitmap) {
                spriteset._parallax.origin.x = parallaxOx + ($gameMap._displayX - displayX) * $gameMap.tileWidth();
                spriteset._parallax.origin.y = parallaxOy + ($gameMap._displayY - displayY) * $gameMap.tileHeight();
            }
            if (spriteset._foreground && spriteset._foreground.bitmap) {
                spriteset._foreground.origin.x = foregroundOx + ($gameMap._displayX - displayX) * $gameMap.tileWidth();
                spriteset._foreground.origin.y = foregroundOy + ($gameMap._displayY - displayY) * $gameMap.tileHeight();
            }
            if (spriteset._parallaxNonBlur && spriteset._parallaxNonBlur.bitmap) {
                spriteset._parallaxNonBlur.setFrame(
                    parallaxOx + ($gameMap._displayX - displayX) * $gameMap.tileWidth(),
                    parallaxOy + ($gameMap._displayY - displayY) * $gameMap.tileHeight(),
                    Graphics.width, Graphics.height
                );
            }
            Graphics._renderer.render(SceneManager._scene);
            let snap = Bitmap.snap(SceneManager._scene);
            bitmap[info.get('imageId')].blt(snap, 0, 0, info.get('copyWidth'), info.get('copyHeight'), info.get('dstX'), info.get('dstY'));
        });
        // ファイル出力
        bitmap.forEach((bitmap, index, array) => {
            let fs = require('fs');
            let path = StorageManager.localFileDirectoryPath().replace(/save[\\/]$/, '');
            let folder = path + _plugin.folder;
            if (!fs.existsSync(folder)) {
                fs.mkdirSync(folder);
            }
            let strIndex = (array.length > 1) ? '_' + index.padZero(2) : '';
            let date = (function(){
                let date = new Date();
                let year = date.getFullYear();
                let month = date.getMonth() + 1;
                let day = date.getDate();
                let hours = date.getHours();
                let minutes = date.getMinutes();
                let seconds = date.getSeconds();
                return year + month.padZero(2) + day.padZero(2) + hours.padZero(2) + minutes.padZero(2) + seconds.padZero(2);
            }());
            let file = folder + '\\Map' + $gameMap.mapId().padZero(3) + strIndex + '_' + date + '.png';
            let data = bitmap._canvas.toDataURL('img/png').replace(/^.*,/, '');
            let buffer = new Buffer(data, 'base64');
            fs.writeFileSync(file, buffer);
        });
        // マップ表示位置を復帰
        $gameMap._displayX = displayX;
        $gameMap._displayY = displayY;
        SceneManager._scene._spriteset.update();
        Graphics._renderer.render(SceneManager._scene);
    }

    //==============================================================================
    // Scene_Map
    //==============================================================================

    {
        let __update = Scene_Map.prototype.update;
        Scene_Map.prototype.update = function() {
            if ($gameTemp.isPlaytest() || !_plugin.testOnly) {
                let trigger1 = !!eval(_plugin.trigger1);
                let trigger2 = !!eval(_plugin.trigger2);
                if (trigger2) this._spriteset.hideCharacters();
                if (trigger1 || trigger2) {
                    createMapImage();
                }
                if (trigger2) {
                    this._spriteset._characterSprites.forEach(sprite => {
                        if (!sprite.isTile()) sprite.show();
                    });
                }
            }
            __update.apply(this, arguments);
        };
    }
}());

repo_name: dazed/translations

license: unknown


code:
//=============================================================================
// NRP_BattleParallelCommon.js
//=============================================================================
/*:
 * @target MV MZ
 * @plugindesc v1.022 Enables parallel common events, even during battle.
 * @author Takeshi Sunagawa (http://newrpg.seesaa.net/)
 * @url http://newrpg.seesaa.net/article/477740800.html
 *
 * @help Enables parallel common events, even during battle
 * Register the target common events in the plugin parameter.
 * If the configured switch is on at that time, it will be executed in parallel.
 *
 * Conversely, you can also disable registered common events on the map.
 *
 * [Terms]
 * There are no restrictions.
 * Modification, redistribution freedom, commercial availability,
 * and rights indication are also optional.
 * The author is not responsible,
 * but we will respond to defects as far as possible.
 *
 * @param commonEventsWhiteList
 * @type common_event[]
 * @default []
 * @desc Register a parallel common event to be enabled in battle.
 *
 * @param invalidOnMap
 * @type boolean
 * @default false
 * @desc Disables registered parallel common events on the map.
 *
 * @param validAllCommon
 * @type boolean
 * @default false
 * @desc Enables parallel common events in battle.
 * The above registration common events will be meaningless.
 *
 * @param alwaysMonitorChange
 * @type boolean
 * @default false
 * @desc It always monitors changes in variables and switches.
 * It can handle variable operations by external plugins.
 */

/*:ja
 * @target MV MZ
 * @plugindesc v1.022 コモンイベントの並列処理を戦闘中も有効にします。
 * @author 砂川赳（http://newrpg.seesaa.net/）
 * @url http://newrpg.seesaa.net/article/477740800.html
 *
 * @help コモンイベントの並列処理を戦闘中も有効にします。
 * プラグインパラメータに、対象とするコモンイベントを登録します。
 * その状態で設定したスイッチがオンになっていれば、並列実行されます。
 *
 * 逆に登録したコモンイベントをマップ上で無効にすることも可能です。
 * これにより、戦闘中だけ有効なコモンイベントを作成できます。
 *
 * ■利用規約
 * 特に制約はありません。
 * 改変、再配布自由、商用可、権利表示も任意です。
 * 作者は責任を負いませんが、不具合については可能な範囲で対応します。
 *
 * @param commonEventsWhiteList
 * @text 登録コモンイベント
 * @type common_event[]
 * @default []
 * @desc 戦闘で有効とする並列コモンイベントを登録します。
 *
 * @param invalidOnMap
 * @text マップ上で無効化
 * @type boolean
 * @default false
 * @desc 登録したコモンイベントの並列処理をマップ上で無効化します。
 *
 * @param validAllCommon
 * @text 全てを有効化
 * @type boolean
 * @default false
 * @desc 全コモンイベントの並列処理を戦闘で有効化します。
 * 上記の登録コモンイベントは無意味となります。
 *
 * @param alwaysMonitorChange
 * @text 変化を常に監視
 * @type boolean
 * @default false
 * @desc 戦闘中、変数やスイッチの変化を常に監視します。
 * 外部プラグインによる変数操作などに対応できます。
 */
(function() {
"use strict";

function toBoolean(val, def) {
    // 空白なら初期値を返す
    if (val === "" || val === undefined) {
        return def;

    // 既にboolean型なら、そのまま返す
    } else if (typeof val === "boolean") {
        return val;
    }
    // 文字列ならboolean型に変換して返す
    return val.toLowerCase() == "true";
}

/**
 * ●JSON用数値リストをJS用に変換
 */
function parseNumberList(param) {
    if (!param) {
        return [];
    }
    return JSON.parse(param).map(val => Number(val));
}

const PLUGIN_NAME = "NRP_BattleParallelCommon";
const parameters = PluginManager.parameters(PLUGIN_NAME);
const pWhiteList = parseNumberList(parameters["commonEventsWhiteList"]);
const pInvalidOnMap = toBoolean(parameters["invalidOnMap"], false);
const pValidAllCommon = toBoolean(parameters["validAllCommon"], false);
const pAlwaysMonitorChange = toBoolean(parameters["alwaysMonitorChange"], false);

/**
 * ●戦闘開始
 */
const _BattleManager_startBattle = BattleManager.startBattle;
BattleManager.startBattle = function() {
    _BattleManager_startBattle.apply(this, arguments);

    // 戦闘用コモンイベントの作成
    $gameMap.setupBattleCommonEvents();
};

/**
 * 【独自】戦闘用コモンイベントの作成
 */
Game_Map.prototype.setupBattleCommonEvents = function() {
    // 戦闘テスト時は並列コモンイベントを作成
    // ※通常はマップを経由しないと生成できないため
    if (DataManager.isBattleTest()) {
        this._commonEvents = [];
        for (const commonEvent of this.parallelCommonEvents()) {
            this._commonEvents.push(new Game_CommonEvent(commonEvent.id));
        }
    }

    // 全コモンイベントを有効化する場合
    if (pValidAllCommon) {
        this._battleCommonEvents = this._commonEvents;
        return;
    }

    // ホワイトリストに含まれるコモンイベントだけを抽出する。
    this._battleCommonEvents = this._commonEvents.filter(function(commonEvent) {
        return pWhiteList.includes(commonEvent._commonEventId);
    });

    // リフレッシュ
    this.refreshBattleCommonEvent();
};

/**
 * ●更新処理
 */
const _Scene_Battle_update = Scene_Battle.prototype.update;
Scene_Battle.prototype.update = function() {
    _Scene_Battle_update.apply(this, arguments);

    $gameMap.updateBattleCommonEvents();
};

/**
 * ●リフレッシュ処理のリクエスト
 */
const _Game_Map_requestRefresh = Game_Map.prototype.requestRefresh;
Game_Map.prototype.requestRefresh = function(mapId) {
    _Game_Map_requestRefresh.apply(this, arguments);

    // 戦闘用のリフレッシュ処理を設定
    if (pAlwaysMonitorChange) {
        this._needsRefreshOnBattle = true;
    }
};

/**
 * 【独自】戦闘中の並列処理実行
 */
Game_Map.prototype.updateBattleCommonEvents = function() {
    // 戦闘用のリフレッシュ処理を実行
    if (this._needsRefreshOnBattle) {
        if ($gameParty.inBattle()) {
            this._needsRefreshOnBattle = false;
            $gameMap.refreshBattleCommonEvent();
        }
    }

    // 並列処理実行
    for (const commonEvent of this._battleCommonEvents) {
        commonEvent.update();
    }
};

/**
 * 【独自】コモンイベントの更新
 */
Game_Map.prototype.refreshBattleCommonEvent = function() {
    // 空の場合は処理しない。
    if (!this._battleCommonEvents) {
        return;
    }

    for (const commonEvent of this._battleCommonEvents) {
        commonEvent.refresh();
    }
};

/**
 * 【独自】並列コモンイベントが有効かどうかの判定
 */
const _Game_CommonEvent_isActive = Game_CommonEvent.prototype.isActive;
Game_CommonEvent.prototype.isActive = function() {
    // 全コモンイベントが有効なら元のまま
    if (pValidAllCommon) {
        return _Game_CommonEvent_isActive.apply(this, arguments);
    }

    // 非戦闘中はホワイトリスト登録分を無効化する。
    if (pInvalidOnMap && !$gameParty.inBattle()) {
        if (pWhiteList.includes(this._commonEventId)) {
            return false;
        }
    }

    return _Game_CommonEvent_isActive.apply(this, arguments);
};

/**
 * ●スイッチが変更された場合
 */
const _Game_Switches_onChange = Game_Switches.prototype.onChange;
Game_Switches.prototype.onChange = function() {
    _Game_Switches_onChange.apply(this, arguments);

    if ($gameParty.inBattle()) {
        $gameMap.refreshBattleCommonEvent();
    }
};

/**
 * ●マップ切替時
 */
const _Scene_Map_start = Scene_Map.prototype.start;
Scene_Map.prototype.start = function() {
    _Scene_Map_start.apply(this, arguments);

    // 全コモンイベントが有効なら元のまま
    if (pValidAllCommon) {
        return;
    }

    // 非戦闘中はホワイトリスト登録分を無効化する。
    if (pInvalidOnMap) {
        for (const event of $gameMap._commonEvents) {
            if (pWhiteList.includes(event._commonEventId)) {
                event.refresh();
            }
        }
    }
};

})();


code:
//=============================================================================
// NRP_ChangeCharacterSpeed.js
//=============================================================================
/*:
 * @target MV MZ
 * @plugindesc v1.01 Change the character's movement speed in detail.
 * @author Takeshi Sunagawa (http://newrpg.seesaa.net/)
 * @url http://newrpg.seesaa.net/article/481254085.html
 *
 * @help Change the character's movement speed in detail.
 * This includes players, events, and various vehicles.
 *
 * [Main Features]
 * - Allows you to set speeds that cannot be specified normally.
 * 　Speeds in the middle or beyond the limit, for example.
 * - Set from plugin command or notes field.
 * - Can change the default value of Always Dash to On.
 * - Set the initial speed of the player and vehicles.
 * - Can change the speed when dashing.
 *
 * [Usage]
 * Set each speed from the plugin parameters.
 * The initial value of the movement speed will be changed.
 *
 * However, if you change the value of <BasicSpeed>,
 * a multiplier will be applied to all movement speeds.
 * Please use the method that is most convenient for you.
 *
 * [Setting Notes]
 * The following can be specified as events note.
 *
 * <MoveSpeed:3.5>
 * Set the event speed to 3.5.
 * In other words, it is between standard speed and 1/2 times speed.
 *
 * [Plugin commands for MZ]
 * Specify the target and speed using "ChangeSpeed".
 * You can target a player or each events.
 * You can target multiple events at the same time.
 *
 * For example, if the target is "1,2,3",
 * you can specify them one by one,
 * and if the target is "1~5", you can specify them all at once.
 * There is an example in the combo box, so please use it.
 *
 * [Plugin commands for MV]
 * > nrp.changecharacterspeed.speed 3.5
 *
 * Change the speed of the target to 3.5.
 * If this is all you do, the target will be "this event".
 * If you want to specify the target,
 * set the following options in front of it.
 *
 * > nrp.changecharacterspeed.target 1
 *
 * Event ID=1 is the target of the speed change.
 * If 0, it is this event; if -1, it is the player.
 * In addition, you can specify multiple events.
 * "1,2,3" specifies one by one, and "1~5" specifies all at once.
 *
 * ◆Example
 * nrp.changecharacterspeed.target 1~10
 * nrp.changecharacterspeed.speed 3.5
 *
 * Change the speed of events with event IDs from 1 to 10 to 3.5.
 *
 * [Terms]
 * There are no restrictions.
 * Modification, redistribution freedom, commercial availability,
 * and rights indication are also optional.
 * The author is not responsible,
 * but will deal with defects to the extent possible.
 *
 * @command ChangeSpeed
 * @desc Changes the character's speed.
 *
 * @arg Target
 * @desc Specify the target to change the movement speed.
 * You can specify multiple targets.
 * @type combo
 * @default 0 #This Event
 * @option 0 #This Event
 * @option -1 #Player
 * @option 1,2,3 #Multiple
 * @option 1~3 #Range
 * @option this._eventId + 1 #EventID+1
 *
 * @arg Speed
 * @desc This is the movement speed to be changed. 4 is the standard speed.
 * @type number
 * @decimals 3
 * @default 4
 *
 *
 * @param DefaultAlwaysDash
 * @desc Turn on the default value for Always On Dash in Options.
 * @type boolean
 *
 * @param PlayerSpeed
 * @desc The movement speed of the player when walking. The initial value is 4.
 * @type number
 * @decimals 3
 *
 * @param PlusSpeedDash
 * @desc The speed that the player adds when dashing. The default value is 1. If 0, disable dash.
 * @type number
 * @decimals 3
 *
 * @param <BasicSpeedRate>
 *
 * @param PlayerBasicSpeedRate
 * @desc Changes the player's base speed to 100 as standard.
 * This changes the overall speed.
 * @type number
 * @default 100
 *
 * @param EventBasicSpeedRate
 * @desc Changes the basic speed of the events to 100 as standard.
 * This changes the overall speed.
 * @type number
 * @default 100
 *
 * @param <Vehicles>
 *
 * @param BoatSpeed
 * @desc The boat's movement speed. The initial value is 4.
 * @type number
 * @decimals 3
 *
 * @param ShipSpeed
 * @desc The ship's movement speed. The initial value is 5.
 * @type number
 * @decimals 3
 *
 * @param AirShipSpeed
 * @desc The airship's movement speed. The default value is 6.
 * @type number
 * @decimals 3
 */

/*:ja
 * @target MV MZ
 * @plugindesc v1.01 キャラクターの移動速度を細かく変更します。
 * @author 砂川赳（http://newrpg.seesaa.net/）
 * @url http://newrpg.seesaa.net/article/481254085.html
 *
 * @help キャラクターの移動速度を細かく変更できます。
 * プレイヤー、イベント、各種乗り物が対象です。
 *
 * ■主な機能
 * ・通常では指定できない速度を設定可能。
 * 　中間の速度や限界を超えた速度など。
 * ・プラグインコマンドやメモ欄から設定。
 * ・常時ダッシュの初期値をオンに変更可能。
 * ・プレイヤーや乗り物の初期速度を設定。
 * ・ダッシュ時の速度を変更可能。
 *
 * ■使用方法
 * プラグインパラメータより各速度を設定してください。
 * 移動速度の初期値が変更されます。
 *
 * ただし、＜基本速度＞の値を変更した場合は、
 * 全ての移動速度に対して倍率がかかります。
 * 使いやすい方法をご利用ください。
 *
 * ■メモ欄の指定
 * 以下をイベントのメモ欄に指定できます。
 *
 * <MoveSpeed:3.5>
 * イベントの速度を3.5にします。
 * つまり、標準速と1/2倍速の中間です。
 *
 * ■ＭＺ用プラグインコマンド
 * 『速度の変更』により対象と速度を指定してください。
 * プレイヤーや各イベントを対象にできます。
 * 同時に複数のイベントを対象とすることも可能です。
 *
 * 例えば、対象を"1,2,3"とすると一つずつ指定できます。
 * また、"1~5"で一括指定となります。
 * ※コンボボックスに例があるのでご利用ください。
 *
 * ■ＭＶ用プラグインコマンド
 * > nrp.changecharacterspeed.speed 3.5
 *
 * 速度を3.5に変更します。
 * これだけだと対象は『このイベント』になります。
 * 対象を指定したい場合は、以下のオプションを事前に設定します。
 *
 * > nrp.changecharacterspeed.target 1
 *
 * イベントID=1を速度変更の対象とします。
 * 0ならばこのイベント、-1ならばプレイヤーです。
 * さらに複数指定も可能です。
 * "1,2,3"で一つずつ指定。"1~5"で一括指定となります。
 *
 * ◆例
 * nrp.changecharacterspeed.target 1~10
 * nrp.changecharacterspeed.speed 3.5
 *
 * イベントＩＤが1～10までのイベントの速度を3.5に変更します。
 *
 * ■利用規約
 * 特に制約はありません。
 * 改変、再配布自由、商用可、権利表示も任意です。
 * 作者は責任を負いませんが、不具合については可能な範囲で対応します。
 *
 * @command ChangeSpeed
 * @text 速度の変更
 * @desc キャラクターの速度を変更します。
 *
 * @arg Target
 * @text 対象
 * @desc 移動速度を変更する対象を指定します。
 * 複数指定も可能です。
 * @type combo
 * @default 0 #このイベント
 * @option 0 #このイベント
 * @option -1 #プレイヤー
 * @option 1,2,3 #複数指定
 * @option 1~3 #範囲指定
 * @option this._eventId + 1 #イベントID+1
 *
 * @arg Speed
 * @text 移動速度
 * @desc 変更する移動速度です。4が標準速になります。
 * 小数も指定可能です。
 * @type number
 * @decimals 3
 * @default 4
 *
 *
 * @param DefaultAlwaysDash
 * @text 常時ダッシュの初期値
 * @desc オプション画面にある常時ダッシュの初期値をオンにします。
 * @type boolean
 *
 * @param PlayerSpeed
 * @text プレイヤーの移動速度
 * @desc プレイヤーの歩行時の移動速度です。初期値は4です。
 * 小数も指定可能です。
 * @type number
 * @decimals 3
 *
 * @param PlusSpeedDash
 * @text ダッシュ時の加算速度
 * @desc プレイヤーがダッシュ時に加算される速度です。初期値は1です。
 * 小数も指定可能です。0ならダッシュ無効化。
 * @type number
 * @decimals 3
 *
 * @param <BasicSpeedRate>
 * @text ＜基本速度＞
 *
 * @param PlayerBasicSpeedRate
 * @parent <BasicSpeedRate>
 * @text プレイヤーの基本速度％
 * @desc プレイヤーの基本速度を100を標準として変更します。
 * こちらは全体の速度を変更します。
 * @type number
 * @default 100
 *
 * @param EventBasicSpeedRate
 * @parent <BasicSpeedRate>
 * @text イベントの基本速度％
 * @desc イベントの基本速度を100を標準として変更します。
 * こちらは全体の速度を変更します。
 * @type number
 * @default 100
 *
 * @param <Vehicles>
 * @text ＜乗り物＞
 *
 * @param BoatSpeed
 * @parent <Vehicles>
 * @text 小型船の移動速度
 * @desc 小型船の移動速度です。初期値は4です。
 * 小数も指定可能です。
 * @type number
 * @decimals 3
 *
 * @param ShipSpeed
 * @parent <Vehicles>
 * @text 大型船の移動速度
 * @desc 大型船の移動速度です。初期値は5です。
 * 小数も指定可能です。
 * @type number
 * @decimals 3
 *
 * @param AirShipSpeed
 * @parent <Vehicles>
 * @text 飛行船の移動速度
 * @desc 飛行船の移動速度です。初期値は6です。
 * 小数も指定可能です。
 * @type number
 * @decimals 3
 */
(function() {
"use strict";

function toBoolean(val, def) {
    // 空白なら初期値を返す
    if (val === "" || val === undefined) {
        return def;

    // 既にboolean型なら、そのまま返す
    } else if (typeof val === "boolean") {
        return val;
    }
    // 文字列ならboolean型に変換して返す
    return val.toLowerCase() == "true";
}
function toNumber(str, def) {
    if (str == undefined || str == "") {
        return def;
    }
    return isNaN(str) ? def : +(str || def);
}
function setDefault(str, def) {
    return str ? str : def;
}

const PLUGIN_NAME = "NRP_ChangeCharacterSpeed";
const parameters = PluginManager.parameters(PLUGIN_NAME);
const pDefaultAlwaysDash = toBoolean(parameters["DefaultAlwaysDash"]);
const pPlayerSpeed = toNumber(parameters["PlayerSpeed"]);
const pPlusSpeedDash = toNumber(parameters["PlusSpeedDash"]);
const pPlayerBasicSpeedRate = toNumber(parameters["PlayerBasicSpeedRate"]);
const pEventBasicSpeedRate = toNumber(parameters["EventBasicSpeedRate"]);
const pBoatSpeed = toNumber(parameters["BoatSpeed"]);
const pShipSpeed = toNumber(parameters["ShipSpeed"]);
const pAirShipSpeed = toNumber(parameters["AirShipSpeed"]);

/**
 * ●プラグインコマンドの値を取得する。
 */
 function getCommandValue(value) {
    if (value === undefined) {
        return value;
    }
    // #以降は注釈扱いなので除去
    // さらに前後の空白を除去する。
    return value.split("#")[0].trim();
}

/**
 * ●引数を元に対象の配列を取得する。
 * ※bindによってinterpreterをthisに渡して用いる。
 */
function makeTargets(targetId) {
    const targets = [];
    // カンマ区切りでループ
    for (let id of targetId.split(",")) {
        // 空白除去
        id = id.trim();
        // 1~5というように範囲指定の場合
        // ※~が存在する。
        if (id.indexOf("~") >= 0) {
            const idRange = id.split("~");
            const idRangeStart = eval(idRange[0]);
            const idRangeEnd = eval(idRange[1]);

            // IDの指定範囲で実行
            // 開始のほうが終了より大きい場合は反対に実行
            if (idRangeEnd < idRangeStart) {
                for (let i = idRangeStart; i >= idRangeEnd; i--) {
                    const evalId = eval(i);
                    if (this.character(evalId)) {
                        targets.push(this.character(evalId));
                    }
                }
            } else {
                for (let i = idRangeStart; i <= idRangeEnd; i++) {
                    const evalId = eval(i);
                    if (this.character(evalId)) {
                        targets.push(this.character(evalId));
                    }
                }
            }

        // 通常時
        } else {
            const evalId = eval(id);
            if (this.character(evalId)) {
                targets.push(this.character(evalId));
            }
        }
    }
    return targets;
}

//----------------------------------------
// ＭＺ用プラグインコマンド
//----------------------------------------

// MVには存在しないため、空で定義しておかないとエラーになる。
if (!PluginManager.registerCommand) {
    PluginManager.registerCommand = function() {}
}

/**
 * ●移動速度の変更
 */
PluginManager.registerCommand(PLUGIN_NAME, "ChangeSpeed", function(args) {
    const targetId = setDefault(getCommandValue(args.Target), "0");
    const speed = toNumber(getCommandValue(args.Speed), 4);

    // 対象を生成
    // ※bindによってthisをメソッドに渡す。
    const targets = makeTargets.bind(this)(targetId);
    // 対象が取得できなければ処理しない。
    if (targets.length == 0) {
        return;
    }

    // 速度変更
    for (const target of targets) {
        target.setMoveSpeed(speed);
    }
});

//----------------------------------------
// ＭＶ用のプラグインコマンド
//----------------------------------------

// 旧ＭＶプラグインコマンド用
let plTarget;

/**
 * ●ＭＶ用の旧式プラグインコマンド
 */
const _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
    _Game_Interpreter_pluginCommand.call(this, command, args);

    // 小文字化してから判定
    const lowerCommand = command.toLowerCase();

    // 速度を変更
    if (lowerCommand === "nrp.changecharacterspeed.speed") {
        const speed = toNumber(args[0], 4);
        const targetId = setDefault(plTarget, "0");

        // 設定したらクリア
        plTarget = undefined;

        // 対象を生成
        // ※bindによってthisをメソッドに渡す。
        const targets = makeTargets.bind(this)(targetId);
        // 対象が取得できなければ処理しない。
        if (targets.length == 0) {
            return;
        }

        // 速度変更
        for (const target of targets) {
            target.setMoveSpeed(speed);
        }

    // 対象の設定
    } else if (lowerCommand === "nrp.changecharacterspeed.target") {
        // 引数が空白で区切られていた時のため連結しておく。
        plTarget = getCommandValue(String(args.join(" ")));
    }
};

/**
 * ●ページ設定開始
 */
const _Game_Event_setupPageSettings = Game_Event.prototype.setupPageSettings;
Game_Event.prototype.setupPageSettings = function() {
    _Game_Event_setupPageSettings.apply(this, arguments);

    // 速度の設定があれば反映
    const speed = this.event().meta.MoveSpeed;
    if (speed) {
        this.setMoveSpeed(toNumber(speed));
    }
};

/**
 * ●乗り物の速度初期化
 */
const _Game_Vehicle_initMoveSpeed = Game_Vehicle.prototype.initMoveSpeed;
Game_Vehicle.prototype.initMoveSpeed = function() {
    // 小型船
    if (this.isBoat() && pBoatSpeed) {
        this.setMoveSpeed(pBoatSpeed);
        return;

    // 大型船
    } else if (this.isShip() && pShipSpeed) {
        this.setMoveSpeed(pShipSpeed);
        return;

    // 飛行船
    } else if (this.isAirship() && pAirShipSpeed) {
        this.setMoveSpeed(pAirShipSpeed);
        return;
    }

    // 該当の設定がない場合はデフォルト
    _Game_Vehicle_initMoveSpeed.apply(this, arguments);
};

/**
 * ●プレイヤーの速度が設定されている場合
 */
if (pPlayerSpeed) {
    /**
     * ●プレイヤーの速度初期値を設定
     */
    const _Game_Player_initMembers = Game_Player.prototype.initMembers;
    Game_Player.prototype.initMembers = function() {
        _Game_Player_initMembers.apply(this, arguments);

        this._moveSpeed = pPlayerSpeed;
    };

    /**
     * ●乗り物を降りる
     */
    const _Game_Player_getOffVehicle = Game_Player.prototype.getOffVehicle;
    Game_Player.prototype.getOffVehicle = function() {
        const ret = _Game_Player_getOffVehicle.apply(this, arguments);

        // 速度を設定値へ戻す。
        if (ret) {
            this.setMoveSpeed(pPlayerSpeed);
        }

        return ret;
    };
}

/**
 * ●ダッシュ時の加算速度が設定されている場合
 */
if (pPlusSpeedDash !== undefined) {
    /**
     * ●ダッシュを考慮した実移動速度の取得
     */
    Game_CharacterBase.prototype.realMoveSpeed = function() {
        return this._moveSpeed + (this.isDashing() ? pPlusSpeedDash : 0);
    };
}

// プレイヤーの基本速度変更
if (pPlayerBasicSpeedRate && pPlayerBasicSpeedRate != 100) {
    Game_Player.prototype.distancePerFrame = function() {
        const ret = Game_CharacterBase.prototype.distancePerFrame.apply(this, arguments);

        return ret * pPlayerBasicSpeedRate / 100;
    };

    // 仲間も合わせて変更
    Game_Follower.prototype.distancePerFrame = function() {
        const ret = Game_CharacterBase.prototype.distancePerFrame.apply(this, arguments);

        return ret * pPlayerBasicSpeedRate / 100;
    };
}

// イベントの基本速度変更
if (pEventBasicSpeedRate && pEventBasicSpeedRate != 100) {
    Game_Event.prototype.distancePerFrame = function() {
        const ret = Game_CharacterBase.prototype.distancePerFrame.apply(this, arguments);

        return ret * pEventBasicSpeedRate / 100;
    };
}

/**
 * ●常時ダッシュの初期値
 */
if (pDefaultAlwaysDash) {
    ConfigManager.alwaysDash = true;

    const _ConfigManager_applyData = ConfigManager.applyData;
    ConfigManager.applyData = function(config) {
        _ConfigManager_applyData.apply(this, arguments);
        this.alwaysDash = this.readFlag(config, "alwaysDash", true);
    };

    // MV対応
    // ※ＭＶはreadFlagの挙動が異なるのでＭＺに合わせる
    if (Utils.RPGMAKER_NAME == "MV") {
        ConfigManager.readFlag = function(config, name, defaultValue) {
            if (name in config) {
                return !!config[name];
            } else {
                return defaultValue;
            }
        };
    }
}

})();


code:
//=============================================================================
// NearEventSensor.js
// ----------------------------------------------------------------------------
// (C) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 3.1.1 2020/07/05 3.1.0の修正をイベント開始時にも適用できるよう変更
// 3.1.0 2020/07/05 イベントから離れたらエフェクトを即時消去できる設定を追加
// 3.0.0 2020/05/26 センサーエフェクトをイベントではなくプレイヤーに適用できる機能を追加。パラメータの再設定が必要です。
// 2.2.0 2018/11/05 フキダシの表示完了までウェイトするかどうかの設定を追加
// 2.1.1 2018/11/05 マップ移動時にすでに検知範囲内に入っていたイベントについて、一度範囲外に出ないと反応しない問題を修正
// 2.1.0 2017/10/23 特定のスイッチもしくはセルフスイッチが有効なときのみ感知エフェクトを出す機能を追加
//                  パラメータの型指定機能に対応
// 2.0.0 2016/08/27 フラッシュの代わりにフキダシアイコンを利用できる機能を追加
//                  パラメータ名等に一部破壊的な変更が加わっています。
// 1.1.0 2016/07/14 各種パラメータとメモ欄で感知可否の設定を追加
// 1.0.1 2015/11/01 既存コードの再定義方法を修正（内容に変化なし）
// 1.0.0 2015/10/31 初版
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
 * @plugindesc 周辺イベント感知プラグイン
 * @author トリアコンタン
 *
 * @param DefaultFlash
 * @text デフォルトフラッシュ
 * @desc 感知時にイベントを指定色でフラッシュさせます。(ON/OFF)
 * @default true
 * @type boolean
 *
 * @param DefaultBalloon
 * @text デフォルトフキダシ
 * @desc 感知時にイベントに自動でフキダシアイコンを出します。
 * (1:びっくり 2:はてな 3:音符 4:ハート 5:怒り....)
 * @default 0
 * @type select
 * @option なし
 * @value 0
 * @option びっくり
 * @value 1
 * @option はてな
 * @value 2
 * @option 音符
 * @value 3
 * @option ハート
 * @value 4
 * @option 怒り
 * @value 5
 * @option 汗
 * @value 6
 * @option くしゃくしゃ
 * @value 7
 * @option 沈黙
 * @value 8
 * @option 電球
 * @value 9
 * @option Zzz
 * @value 10
 * @option ユーザ定義1
 * @value 11
 * @option ユーザ定義2
 * @value 12
 * @option ユーザ定義3
 * @value 13
 * @option ユーザ定義4
 * @value 14
 * @option ユーザ定義5
 * @value 15
 *
 * @param DisableEmpty
 * @text 空イベントは無効
 * @desc イベント内容が空の場合、感知しなくなります。(ON/OFF)
 * @default true
 * @type boolean
 *
 * @param SensorDistance
 * @text 感知距離
 * @desc イベントを関知する距離です。
 * @default 2
 * @type number
 *
 * @param FlashColor
 * @text フラッシュカラー
 * @desc 感知時のフラッシュ色です。R(赤),G(緑),B(青),A(強さ)の順番で指定してください。
 * @default {"Red":"255","Green":"255","Blue":"255","Alpha":"255"}
 * @type struct<Color>
 *
 * @param FlashDuration
 * @text フラッシュ時間
 * @desc フラッシュさせるフレーム数です。
 * @default 60
 * @type number
 *
 * @param BalloonInterval
 * @text フキダシ間隔
 * @desc フキダシを表示する間隔のフレーム数です。
 * @default 15
 * @type number
 *
 * @param WaitForBalloon
 * @text フキダシ完了までウェイト
 * @desc 範囲内に居続けた場合の連続フキダシ表示で、フキダシの表示が終わるのを待ってから次のフキダシの表示します。
 * @default true
 * @type boolean
 *
 * @param ConsiderationDir
 * @text 向きを考慮
 * @desc プレイヤーがイベントの方を向いている場合のみエフェクトを有効にします。(ON/OFF)
 * @default false
 * @type boolean
 *
 * @param ApplyPlayer
 * @text プレイヤーに適用
 * @desc 感知時のエフェクトを対象イベントではなくプレイヤーに対して適用します。
 * @default false
 * @type boolean
 *
 * @param EraseWhenAway
 * @text 離れたら消去
 * @desc イベントから離れたらエフェクトを消去します。
 * @default false
 * @type boolean
 *
 * @help 周囲に存在するイベントを感知してイベントにエフェクトを発生させます。
 * 実行可能なイベントをプレイヤーに伝えてユーザビリティを向上させます。
 * 使用できるエフェクトはフラッシュとフキダシアイコン（およびその両方）です。
 *
 * 各エフェクトの有効可否は、プラグインパラメータによる一括設定と
 * イベントのメモ欄による個別設定があり、個別設定が優先されます。
 *
 * 感知時のエフェクトをフラッシュにしたい場合は、
 * メモ欄を以下の通り指定してください。
 * <NESフラッシュ対象:ON>  # 対象イベントのフラッシュを有効にします。
 * <NESフラッシュ対象:OFF> # 対象イベントのフラッシュを無効にします。
 *
 * 感知時のエフェクトをフキダシアイコンにしたい場合は、
 * メモ欄を以下の通り指定してください。
 * <NESフキダシ対象:1> # 対象イベントのフキダシを(1:びっくり)にします。
 * <NESフキダシ対象:0> # 対象イベントのフキダシを無効にします。
 *
 * 特定のスイッチもしくはセルフスイッチがONのときのみ感知エフェクトを
 * 表示したい場合は、メモ欄を以下の通り指定してください。
 * <NESスイッチ:1>       # スイッチ[1]がONのときのみエフェクトを出します。
 * <NESSwitch:1>         # 同上
 * <NESセルフスイッチ:A> # セルフスイッチ[A]がONのときのみエフェクトを出します。
 * <NESSelfSwitch:1>     # 同上
 *
 * 注意！
 * モバイル端末では、フラッシュを使用すると動作が
 * 少し重くなるようです。ご利用の際はご注意ください。
 *
 * このプラグインにはプラグインコマンドはありません。
 *
 * 利用規約：
 *  作者に無断で改変、再配布が可能で、利用形態（商用、18禁利用等）
 *  についても制限はありません。
 *  このプラグインはもうあなたのものです。
 */

/*~struct~Color:
 * @param Red
 * @desc 赤色の情報です。(0-255)
 * @type number
 * @min 0
 * @max 255
 * @default 255
 *
 * @param Green
 * @desc 緑色の情報です。(0-255)
 * @type number
 * @min 0
 * @max 255
 * @default 255
 *
 * @param Blue
 * @desc 青色の情報です。(0-255)
 * @type number
 * @min 0
 * @max 255
 * @default 255
 *
 * @param Alpha
 * @desc 強さの情報です。(0-255)
 * @type number
 * @min 0
 * @max 255
 * @default 255
 */

(function() {
    'use strict';
    var metaTagPrefix = 'NES';

    var getArgNumber = function(arg, min, max) {
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseInt(convertEscapeCharacters(arg), 10) || 0).clamp(min, max);
    };

    var getArgBoolean = function(arg) {
        return arg === true ? true : (arg || '').toUpperCase() === 'ON' || (arg || '').toUpperCase() === 'TRUE';
    };

    var getMetaValue = function(object, name) {
        var metaTagName = metaTagPrefix + (name ? name : '');
        return object.meta.hasOwnProperty(metaTagName) ? object.meta[metaTagName] : undefined;
    };

    var getMetaValues = function(object, names) {
        if (!Array.isArray(names)) return getMetaValue(object, names);
        for (var i = 0, n = names.length; i < n; i++) {
            var value = getMetaValue(object, names[i]);
            if (value !== undefined) return value;
        }
        return undefined;
    };

    var convertEscapeCharacters = function(text) {
        if (text == null) text = '';
        var windowLayer = SceneManager._scene._windowLayer;
        return windowLayer ? windowLayer.children[0].convertEscapeCharacters(text) : text;
    };

    //=============================================================================
    // パラメータの取得と整形
    //=============================================================================
    var createPluginParameter = function(pluginName) {
        var paramReplacer = function(key, value) {
            if (value === 'null') {
                return value;
            }
            if (value[0] === '"' && value[value.length - 1] === '"') {
                return value;
            }
            try {
                return JSON.parse(value);
            } catch (e) {
                return value;
            }
        };
        var parameter     = JSON.parse(JSON.stringify(PluginManager.parameters(pluginName), paramReplacer));
        PluginManager.setParameters(pluginName, parameter);
        return parameter;
    };
    var param = createPluginParameter('NearEventSensor');
    param.FlashColorArray = [param.FlashColor.Red, param.FlashColor.Green, param.FlashColor.Blue, param.FlashColor.Alpha];

    //=============================================================================
    // Sprite_Character
    //  キャラクターのフラッシュ機能を追加定義します。
    //=============================================================================
    var _Sprite_CharacterUpdate       = Sprite_Character.prototype.update;
    Sprite_Character.prototype.update = function() {
        _Sprite_CharacterUpdate.call(this);
        this.updateFlash();
    };

    Sprite_Character.prototype.updateFlash = function() {
        if (this._character.isFlash()) {
            this.setBlendColor(this._character._flashColor);
        }
    };

    var _Sprite_Character_updateBalloon = Sprite_Character.prototype.updateBalloon;
    Sprite_Character.prototype.updateBalloon = function() {
        if (this._character.isBalloonCancel()) {
            this.endBalloon();
        }
        _Sprite_Character_updateBalloon.apply(this, arguments);
    };

    //=============================================================================
    // Game_CharacterBase
    //  キャラクターのフラッシュ機能を追加定義します。
    //=============================================================================
    var _Game_CharacterBaseInitMembers       = Game_CharacterBase.prototype.initMembers;
    Game_CharacterBase.prototype.initMembers = function() {
        _Game_CharacterBaseInitMembers.call(this);
        this._flashColor    = null;
        this._flashDuration = 0;
    };

    var _Game_CharacterBaseUpdate       = Game_CharacterBase.prototype.update;
    Game_CharacterBase.prototype.update = function() {
        _Game_CharacterBaseUpdate.call(this);
        this.updateFlash();
    };

    Game_CharacterBase.prototype.startFlash = function(flashColor, flashDuration) {
        this._flashColor    = flashColor;
        this._flashDuration = flashDuration;
    };

    Game_CharacterBase.prototype.clearFlash = function() {
        this._flashColor = [0,0,0,0];
    };

    Game_CharacterBase.prototype.isFlash = function() {
        return this._flashDuration > 0;
    };

    Game_CharacterBase.prototype.updateFlash = function() {
        if (this.isFlash()) {
            this._flashColor[3] = this._flashColor[3] * (this._flashDuration - 1) / this._flashDuration;
            this._flashDuration--;
        }
    };

    Game_CharacterBase.prototype.applySensorEffect = function(targetEvent) {
        if (!this.isFlash() && targetEvent.isFlashEvent()) {
            this.startFlash(param.FlashColorArray.clone(), param.FlashDuration);
        }
        var balloonId = targetEvent.getSensorBalloonId();
        if (balloonId && (!param.WaitForBalloon || !this.isBalloonPlaying())) {
            if (this._balloonInterval <= 0 || isNaN(this._balloonInterval)) {
                this.requestBalloon(balloonId);
                this._balloonInterval = param.BalloonInterval;
            } else {
                this._balloonInterval--;
            }
        }
        this._sensorApply = true;
    };

    Game_CharacterBase.prototype.eraseSensorEffect = function() {
        if (!this._sensorApply || !param.EraseWhenAway) {
            return;
        }
        this.clearFlash();
        this._balloonCancel = true;
        this._sensorApply = false;
    };

    Game_CharacterBase.prototype.isBalloonCancel = function() {
        var cancel = this._balloonCancel;
        this._balloonCancel = false;
        return cancel;
    };

    //=============================================================================
    // Game_Event
    //  プレイヤーとの距離を測り、必要な場合にエフェクトさせる機能を追加定義します。
    //=============================================================================
    var _Game_Event_initialize = Game_Event.prototype.initialize;
    Game_Event.prototype.initialize = function(mapId, eventId) {
        _Game_Event_initialize.apply(this, arguments);
        this._balloonInterval = 0;
    };

    var _Game_EventUpdate       = Game_Event.prototype.update;
    Game_Event.prototype.update = function() {
        _Game_EventUpdate.apply(this, arguments);
        if (this.page()) {
            this.updateSensorEffect();
        }
    };

    var _Game_Event_start = Game_Event.prototype.start;
    Game_Event.prototype.start = function() {
        _Game_Event_start.apply(this, arguments);
        this.eraseSensorEffect();
    };

    Game_Event.prototype.updateSensorEffect = function() {
        var subject = this.findNearEffectSubject();
        if (this.isSensorOn()) {
            subject.applySensorEffect(this);
        } else {
            subject.eraseSensorEffect(this);
            this._balloonInterval = 0;
        }
    };

    Game_Event.prototype.isSensorOn = function() {
        return this.isEmptyValidate() && this.isVeryNearThePlayer() &&
            !$gameMap.isEventRunning() && this.isValidSensor();
    };

    Game_Event.prototype.findNearEffectSubject = function() {
        return param.ApplyPlayer ? $gamePlayer : this;
    };

    Game_Event.prototype.isEmptyValidate = function() {
        var list = this.list();
        return (list && list.length > 1) || !param.DisableEmpty;
    };

    Game_Event.prototype.isFlashEvent = function() {
        var useFlash = getMetaValues(this.event(), ['フラッシュ対象', 'FlashEvent']);
        return useFlash ? getArgBoolean(useFlash) : param.DefaultFlash;
    };

    Game_Event.prototype.isValidSensor = function() {
        return this.isValidSensorSwitch() && this.isValidSensorSelfSwitch();
    };

    Game_Event.prototype.isValidSensorSwitch = function() {
        var switchId = getMetaValues(this.event(), ['スイッチ', 'Switch']);
        return switchId ? $gameSwitches.value(getArgNumber(switchId, 1)) : true;
    };

    Game_Event.prototype.isValidSensorSelfSwitch = function() {
        var selfSwitchType = getMetaValues(this.event(), ['セルフスイッチ', 'SelfSwitch']);
        return selfSwitchType ? $gameSelfSwitches.value([this._mapId, this._eventId, selfSwitchType.toUpperCase()]) : true;
    };

    Game_Event.prototype.getSensorBalloonId = function() {
        var balloonId = getMetaValues(this.event(), ['フキダシ対象', 'BalloonEvent']);
        return balloonId ? getArgNumber(balloonId, 0) : param.DefaultBalloon;
    };

    Game_Event.prototype.isVeryNearThePlayer = function() {
        var sx = this.deltaXFrom($gamePlayer.x);
        var sy = this.deltaYFrom($gamePlayer.y);
        var ax = Math.abs(sx);
        var ay = Math.abs(sy);
        var result = (ax + ay <= param.SensorDistance);
        if (result && param.ConsiderationDir) {
            if (ax > ay) {
                return $gamePlayer.direction() === (sx > 0 ? 6 : 4);
            } else if (sy !== 0) {
                return $gamePlayer.direction() === (sy > 0 ? 2 : 8);
            } else {
                return true;
            }
        }
        return result;
    };
})();


code:
//=============================================================================
// OggOnly.js
// PUBLIC DOMAIN
// ----------------------------------------------------------------------------
// 2018/07/23 国際化と微修正
//=============================================================================

/*:
 * @plugindesc Use only ogg files to play the audio.
 * @author krmbn0576
 *
 * @param deleteM4a
 * @type boolean
 * @text Delete all m4a files
 * @desc Delete all m4a files the next time you playtest. Backup your files before execute.
 * @default false
 *
 * @help
 * Use only ogg files to play the audio such as BGM and SE.
 * You need no longer to prepare m4a files.
 *
 * Usage:
 * Locate stbvorbis.js, stbvorbis_asm.js, and this plugin in plugins directory.
 * Turn ON Only this plugin, but DO NOT register the others to plugin manager.
 *
 *
 * License:
 * PUBLIC DOMAIN
 *
 * Thanks:
 * This plugin uses stbvorbis.js(https://github.com/hajimehoshi/stbvorbis.js)
 * as a ogg decoder. Thanks!
 */

/*:ja
 * @plugindesc 音声ファイルの再生にoggファイルのみを使用します。
 * @author くらむぼん
 *
 * @param deleteM4a
 * @type boolean
 * @text m4aファイルを消去
 * @desc 次にテストプレイを開始した時、すべてのm4aファイルを削除します。念の為バックアップを取った上でご活用ください。
 * @default false
 *
 * @help
 * BGMや効果音などの音声ファイルにoggファイルのみを使用します。
 * 本プラグインを入れている場合、m4aファイルを用意しなくても音声を再生できます。
 *
 * 使い方：
 * pluginsフォルダに本プラグインとstbvorbis.jsとstbvorbis_asm.jsを配置してください。
 * ３つのうち本プラグイン「だけ」をプラグイン管理でONに設定してください。
 * 他の２つはOFFでも構いませんし、プラグイン管理に登録しなくても構いません。
 *
 *
 * ライセンス：
 * このプラグインの利用法に制限はありません。お好きなようにどうぞ。
 *
 * 謝辞：
 * このプラグインはoggデコーダーとしてstbvorbis.jsを使用しています。
 * (https://github.com/hajimehoshi/stbvorbis.js)
 * ありがとうございます！みんなどんどん使ってね！！
 */

(function() {
    'use strict';
    var parameters = PluginManager.parameters('OggOnly');
    var deleteM4a = parameters['deleteM4a'] === 'true';

    // ただただ互換性回復のため再定義。 / Recover compatiblity.
    Utils.isOptionValid = function(name) {
        if (location.search.slice(1).split('&').contains(name)) return true;
        return typeof window.nw !== "undefined" && nw.App.argv.length > 0 && nw.App.argv[0].split('&').contains(name);
    };

    if (deleteM4a && Utils.isOptionValid('test') && Utils.isNwjs()) {
        var exec = require('child_process').exec;
        var messages, success, failure;
        if (navigator.language.contains('ja')) {
            messages = [
                'すべてのm4aファイルを削除しますか？',
                '本当に削除しますか？念のため、先にプロジェクトフォルダのバックアップをとっておくことをおすすめします。',
                'こうかいしませんね？'
            ];
            success = 'すべてのm4aファイルを削除しました。';
            failure = 'm4aファイルの削除中にエラーが発生しました。 ';
        } else {
            messages = [
                'Delete all m4a files?',
                'Are you sure?',
                'This cannot be undone. Are you really, REALLY sure?'
            ];
            success = 'All m4a files have been deleted.';
            failure = 'Error occured while deleting m4a files.';
        }
        if (messages.every(function(message) { return confirm(message); })) {
            var command = process.platform === 'win32' ? 'del /s *.m4a' : 'find . -name "*.m4a" -delete';
            exec(command, function(error) {
                alert(error ? failure : success);
            });
        }
    }

    PluginManager.loadScript('stbvorbis.js');

    AudioManager.audioFileExt = function() {
        return '.ogg';
    };

    if (!WebAudio.canPlayOgg()) {
        WebAudio._context.decodeAudioData = function(arrayBuffer, callback, errorback) {
            return stbvorbis.decode(arrayBuffer).then(function(result) {
                var channels = result.data.length;
                var buffer = this.createBuffer(result.data.length, result.data[0].length, result.sampleRate);
                for (var i = 0; i < channels; i++) {
                    if (buffer.copyToChannel) {
                        buffer.copyToChannel(result.data[i], i);
                    } else {
                        buffer.getChannelData(i).set(result.data[i]);
                    }
                }
                return buffer;
            }.bind(this)).then(callback, errorback);
        };
    }
})();


code:
//=============================================================================
// PD_8DirDash.js
//=============================================================================

/*:
 * @plugindesc Add to 8 direction move with graphic change.
 * @author Shio_inu
 *
 * @help 面倒なので誰か代わりに翻訳して。
 * last update : 13th Feb 2016 v1.01
 */

/*:ja
 * @plugindesc グラフィック変更を伴う8方向移動機能が追加されるプラグインです。
 * @author しおいぬ
 *
 * @help ファイル名の末尾に「_Q」の文字列が含まれる歩行グラフィックを
 * 8方向グラフィックとして扱います。
 * 同様に、ファイル名の末尾に「_D」の文字列が含まれる
 * 歩行グラフィックをダッシュグラフィックとして、
 * ファイル名の末尾に「_QD」の文字列が含まれる歩行グラフィックを
 * 8方向+ダッシュグラフィックとして扱います。
 * last update : 2016/02/13 v1.01
 */
(function(){

    Game_Player.prototype.getInputDirection = function() {
        return Input.dir8;
    };

    Game_Map.prototype.xWithDirection = function(x, d) {
        return x + ((d % 3) === 0 ? 1 : (d % 3) === 1 ? -1 : 0);
    };

    Game_Map.prototype.yWithDirection = function(y, d) {
        return y + (d <= 3 ? 1 : d >= 7 ? -1 : 0);
    };

    Game_Map.prototype.roundXWithDirection = function(x, d) {
        return this.roundX(x + ((d % 3) === 0 ? 1 : (d % 3) === 1 ? -1 : 0));
    };

    Game_Map.prototype.roundYWithDirection = function(y, d) {
        return this.roundY(y + (d <= 3 ? 1 : d >= 7 ? -1 : 0));
    };

    Sprite_Character.prototype.getAddX = function(d) {
        return ((d % 3) === 0 ? 1 : (d % 3) === 1 ? -1 : 0);
    };

    Sprite_Character.prototype.getAddY = function(d) {
        return (d <= 3 ? 1 : d >= 7 ? -1 : 0);
    };

    Sprite_Character.prototype.characterPatternX = function() {
        return this.shiftCharacterPatternX(0);
    };

    Sprite_Character.prototype.shiftCharacterPatternX = function(shift) {
        if(this._prevStopping){
            this._prevStopping = this._character.isStopping();
        }
        var fileName = this._characterName.substring(this._characterName.lastIndexOf( "_" ));
        if((fileName.indexOf("D") != -1) && this._character.isDashing() && !this._prevStopping){
            shift += 3;
        }
        this._prevStopping = this._character.isStopping();
        return this._character.pattern() + shift;
    };

    Sprite_Character.prototype.characterPatternY = function() {
        if(!this._prevDir){
            this._prevDir = 2;
        }
        var fileName = this._characterName.substring(this._characterName.lastIndexOf( "_" ));
        if((fileName.indexOf("Q") != -1) && (this._character.direction() % 2 != 0)){
            if(this._character.direction() < 5){
                return 4 + ((this._character.direction() - 1 ) / 2);
            } else {
                return 4 + ((this._character.direction() - 3 ) / 2);
            }
        }
        else{
            var i = 0;
            if(this._character.direction() % 2 != 0){
              if(this.getAddX(this._prevDir) === this.getAddX(this._character.direction()) * -1){
                  this._prevDir = this.reverseDirection(this._prevDir);
              } else if(this.getAddY(this._prevDir) === this.getAddY(this._character.direction()) * -1){
                  this._prevDir = this.reverseDirection(this._prevDir);
              }
              return (this._prevDir + i - 2) / 2;
            }
            this._prevDir = this._character.direction();
            return (this._character.direction() + i - 2) / 2;
        }
    };

    Sprite_Character.prototype.reverseDirection = function(dir) {
        switch (dir) {
        case 2:
            return 8;
        case 4:
            return 6;
        case 6:
            return 4;
        case 8:
            return 2;
        default:
            return 0;
        }
    };

    Game_CharacterBase.prototype.moveDiagonally = function(horz, vert) {
        this.setMovementSuccess(this.canPassDiagonally(this._x, this._y, horz, vert));
        if (this.isMovementSucceeded()) {
            this._x = $gameMap.roundXWithDirection(this._x, horz);
            this._y = $gameMap.roundYWithDirection(this._y, vert);
            this._realX = $gameMap.xWithDirection(this._x, this.reverseDir(horz));
            this._realY = $gameMap.yWithDirection(this._y, this.reverseDir(vert));
            this.increaseSteps();
        }
        var fileName = this._characterName.substring(this._characterName.lastIndexOf( "_" ));
        if(this._characterName.indexOf("Q") != -1){
            switch (vert + horz) {
            case 6:
                this.setDirection(1);
                break;
            case 8:
                this.setDirection(3);
                break;
            case 12:
                this.setDirection(7);
                break;
            case 14:
                this.setDirection(9);
                break;
            default:
                return 0;
            }
        }
        else{
            if (this._direction === this.reverseDir(horz)) {
                this.setDirection(horz);
            }
            if (this._direction === this.reverseDir(vert)) {
                this.setDirection(vert);
            }
        }
    };

    Game_Character.prototype.findDirectionTo = function(goalX, goalY) {
        var searchLimit = this.searchLimit();
        var mapWidth = $gameMap.width();
        var nodeList = [];
        var openList = [];
        var closedList = [];
        var start = {};
        var best = start;

        if (this.x === goalX && this.y === goalY) {
            return 0;
        }

        start.parent = null;
        start.x = this.x;
        start.y = this.y;
        start.g = 0;
        var longdir = Math.max(Math.abs(goalX - start.x), Math.abs(goalY - start.y));
        var shortDir = Math.min(Math.abs(goalX - start.x), Math.abs(goalY - start.y));
        start.f = g2 + (shortDir * 1.5) + (longdir - shortDir);
        nodeList.push(start);
        openList.push(start.y * mapWidth + start.x);
        while (nodeList.length > 0) {
            var bestIndex = 0;
            for (var i = 0; i < nodeList.length; i++) {
                if (nodeList[i].f < nodeList[bestIndex].f) {
                    bestIndex = i;
                }
            }

            var current = nodeList[bestIndex];
            var x1 = current.x;
            var y1 = current.y;
            var pos1 = y1 * mapWidth + x1;
            var g1 = current.g;

            nodeList.splice(bestIndex, 1);
            openList.splice(openList.indexOf(pos1), 1);
            closedList.push(pos1);

            if (current.x === goalX && current.y === goalY) {
                best = current;
                goaled = true;
                break;
            }

            if (g1 >= searchLimit) {
                continue;
            }

            for (var j = 0; j < 9; j++) {
                var direction = j + 1;
                var x2 = $gameMap.roundXWithDirection(x1, direction);
                var y2 = $gameMap.roundYWithDirection(y1, direction);
                var pos2 = y2 * mapWidth + x2;

                if (closedList.contains(pos2)) {
                    continue;
                }
                if (!this.canPass(x1, y1, direction)) {
                    continue;
                }

                var g2 = (direction % 2 === 0)? g1 + 1 : g1 + 1.5;
                var index2 = openList.indexOf(pos2);

                if (index2 < 0 || g2 < nodeList[index2].g) {
                    var neighbor;
                    if (index2 >= 0) {
                        neighbor = nodeList[index2];
                    } else {
                        neighbor = {};
                        nodeList.push(neighbor);
                        openList.push(pos2);
                    }
                    neighbor.parent = current;
                    neighbor.x = x2;
                    neighbor.y = y2;
                    neighbor.g = g2;
                    var longdir = Math.max(Math.abs(goalX - neighbor.x), Math.abs(goalY - neighbor.y));
                    var shortDir = Math.min(Math.abs(goalX - neighbor.x), Math.abs(goalY - neighbor.y));
                    neighbor.f = g2 + (shortDir * 1.5) + (longdir - shortDir);
                    if (!best || neighbor.f - neighbor.g < best.f - best.g) {
                        best = neighbor;
                    }
                }
            }
        }

        var node = best;
        while (node.parent && node.parent !== start) {
            node = node.parent;
        }

        var deltaX1 = $gameMap.deltaX(node.x, start.x);
        var deltaY1 = $gameMap.deltaY(node.y, start.y);
        console.log("(" + deltaX1 + ", " + deltaY1 + ")");
        if (deltaY1 > 0) {
            if(deltaX1 > 0){
                return 3;
            } else if(deltaX1 < 0){
                return 1;
            } else {
                return 2;
            }
        } else if (deltaY1 < 0) {
            if(deltaX1 > 0){
                return 9;
            } else if(deltaX1 < 0){
                return 7;
            } else {
                return 8;
            }
        } else if (deltaX1 < 0) {
            return 4;
        } else if (deltaX1 > 0) {
            return 6;
        }

        var deltaX2 = this.deltaXFrom(goalX);
        var deltaY2 = this.deltaYFrom(goalY);
        if (deltaY2 < 0) {
            if(deltaX2 < 0){
                return 3;
            } else if(deltaX2 > 0){
                return 1;
            } else {
                return 2;
            }
        } else if (deltaY2 > 0) {
            if(deltaX2 < 0){
                return 9;
            } else if(deltaX2 > 0){
                return 7;
            } else {
                return 8;
            }
        } else if (deltaX2 > 0) {
            return 4;
        } else if (deltaX2 < 0) {
            return 6;
        }

        return 0;
    };

    Game_Map.prototype.isPassable = function(x, y, d) {
        if(d % 2 === 0){
            return this.checkPassage(x, y, (1 << (d / 2 - 1)) & 0x0f);
        } else {
            switch(d){
            case 1:
                return this.checkPassage(x, y, (1 << (2 / 2 - 1)) & 0x0f) && this.checkPassage(x, y, (1 << (4 / 2 - 1)) & 0x0f);
            case 3:
                return this.checkPassage(x, y, (1 << (2 / 2 - 1)) & 0x0f) && this.checkPassage(x, y, (1 << (6 / 2 - 1)) & 0x0f);
            case 7:
                return this.checkPassage(x, y, (1 << (8 / 2 - 1)) & 0x0f) && this.checkPassage(x, y, (1 << (4 / 2 - 1)) & 0x0f);
            case 9:
                return this.checkPassage(x, y, (1 << (8 / 2 - 1)) & 0x0f) && this.checkPassage(x, y, (1 << (6 / 2 - 1)) & 0x0f);
            }
        }
    };

})();


code:
//=============================================================================
// PP_EventCollapse.js
//
// Copyright (c) 2020 punipunion
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
 * @plugindesc 戦闘時のエネミーの消滅エフェクト、ボス消滅エフェクトぽいものを、マップのイベントにも適用できるようになります。
 * @author punipunion
 *
 * @help 使い方
 * ・プラグインコマンドで「EVENT_COLLAPSE イベントID」と指定すると、
 * 　指定したイベントが戦闘時と同じように消滅します。イベントID「0」は「このイベント」になります。
 * 　例：EVENT_COLLAPSE 3
 *
 * ・プラグインコマンドで「EVENT_BOSS_COLLAPSE イベントID」と指定すると、
 * 　指定したイベントが戦闘時と同じようにボス消滅します。イベントID「0」は「このイベント」になります。
 * 　例：EVENT_BOSS_COLLAPSE 3
 *
 * ・プラグインコマンドで「WAIT_COLLAPSE」と指定すると、
 * 　プラグインコマンドを実行したイベントの消滅エフェクトが終わるまで待機します。
 * 　例：EVENT_BOSS_COLLAPSE 3
 * 　　　WAIT_COLLAPSE
 * 　と続けてプラグインコマンドを指定すると、ボス消滅が終わるまで「WAIT_COLLAPSE」以降のイベントコマンドは実行されなくなります。
 *
 * ※消滅したイベントは消去されます。
 * 　イベントコマンドの「イベントの一時消去」と同じ効果。
 *
 * @param collapseDuration
 * @desc 通常消滅の消滅速度です。
 * @type number
 * @min 1
 * @default 32
 */

(function () {
    'use strict';

    /** プラグインパラメータ */
    var parameters = PluginManager.parameters('PP_EventCollapse');
    var collapseDuration = parseInt(parameters['collapseDuration']);

    /** 通常消滅 */
    var EFFECT_TYPE_COLLAPSE = 'collapse';
    /** ボス消滅 */
    var EFFECT_TYPE_BOSS_COLLAPSE = 'bossCollapse';
    /** 消滅エフェクトのウェイトモード */
    var WAIT_MODE_EFFECT = 'effect';

    var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.apply(this, arguments);

        switch (command) {
            case 'EVENT_COLLAPSE':
                if (args[0] && parseInt(args[0]) >= 0 && this.character(parseInt(args[0]))) {
                    this.character(parseInt(args[0])).startCollapse();
                }
                break;
            case 'EVENT_BOSS_COLLAPSE':
                if (args[0] && parseInt(args[0]) >= 0 && this.character(parseInt(args[0]))) {
                    this.character(parseInt(args[0])).startBossCollapse();
                }
                break;
            case 'WAIT_COLLAPSE':
                if (!$gameParty.inBattle()) {
                    this._character = this.character(this._eventId);
                    this.setWaitMode(WAIT_MODE_EFFECT);
                }
                break;
        }
    };

    // 消滅エフェクトのパラメータ追加
    var _Game_Character_initMembers = Game_Character.prototype.initMembers;
    Game_Character.prototype.initMembers = function() {
        _Game_Character_initMembers.call(this);
        this._effectType = '';
    };

    Game_Character.prototype.startCollapse = function() {
        this._effectType = EFFECT_TYPE_COLLAPSE;
    };

    Game_Character.prototype.startBossCollapse = function() {
        this._effectType = EFFECT_TYPE_BOSS_COLLAPSE;
    };

    Game_Character.prototype.isEffectPlaying = function() {
        return this._effectType;
    };

    Sprite_Character.prototype.isCollapseEffectPlaying = function() {
        return this._effectDuration > 0 && this._character && this._character._effectType === EFFECT_TYPE_COLLAPSE;
    };

    Sprite_Character.prototype.isBossCollapseEffectPlaying = function() {
        return this._effectDuration > 0 && this._character && this._character._effectType === EFFECT_TYPE_BOSS_COLLAPSE;
    };

    // 消滅エフェクトのパラメータ追加
    var _Sprite_Character_initMembers = Sprite_Character.prototype.initMembers;
    Sprite_Character.prototype.initMembers = function() {
        _Sprite_Character_initMembers.call(this);
        this._shake = 0;
        this._effectDuration = 0;
        this._effectDurationMax = 0;
    };

    // 消滅エフェクトの更新処理追加
    var _Sprite_Character_update = Sprite_Character.prototype.update;
    Sprite_Character.prototype.update = function() {
        _Sprite_Character_update.call(this);

        if (this._character && this._character._effectType && this._effectDuration < 1) {
            switch(this._character._effectType) {
                case EFFECT_TYPE_COLLAPSE:
                    this._effectDuration = collapseDuration;
                    this._effectDurationMax = this._effectDuration;
                    break;
                case EFFECT_TYPE_BOSS_COLLAPSE:
                    this._effectDuration = this.patternHeight();
                    break;
            }
        }

        this.updateCollapse();
        this.updateBossCollapse();
    };

    // 消滅エフェクトの更新処理追加
    Sprite_Character.prototype.updateCollapse = function() {
        if (this.isCollapseEffectPlaying()) {
            this._effectDuration--;

            this.blendMode = Graphics.BLEND_ADD;
            this.setBlendColor([255, 128, 128, 128]);
            this.opacity *= this._effectDuration / this._effectDurationMax;

            if (this._effectDuration < 1 && this._character) {
                this._character._effectType = '';
                this._character.erase();
            }
        }
    };

    // ボス消滅エフェクトの更新処理追加
    Sprite_Character.prototype.updateBossCollapse = function() {
        if (this.isBossCollapseEffectPlaying()) {
            this._effectDuration--;

            this._shake = this._effectDuration % 2 * 4 - 2;
            this.blendMode = Graphics.BLEND_ADD;
            this.opacity *= this._effectDuration / (this._effectDuration + 1);
            this.setBlendColor([255, 255, 255, 255 - this.opacity]);

            if (this._effectDuration < 1 && this._character) {
                this._character._effectType = '';
                this._character.erase();
            }
        }
    };

    // ボス消滅エフェクト時、シェイク処理追加
    var _Sprite_Character_updatePosition = Sprite_Character.prototype.updatePosition;
    Sprite_Character.prototype.updatePosition = function () {
        _Sprite_Character_updatePosition.call(this);
        if (this.isBossCollapseEffectPlaying()) {
            if (this._character) {
                this._character._x += this._shake;
            }
        }
    };

    // ボス消滅エフェクト時、高さ調整
    var _Sprite_Character_updateCharacterFrame = Sprite_Character.prototype.updateCharacterFrame;
    Sprite_Character.prototype.updateCharacterFrame = function() {
        if (this.isBossCollapseEffectPlaying()) {
            var pw = this.patternWidth();
            var ph = this.patternHeight();
            var sx = (this.characterBlockX() + this.characterPatternX()) * pw;
            var sy = (this.characterBlockY() + this.characterPatternY()) * ph;
            this.updateHalfBodySprites();
            if (this._bushDepth > 0) {
                var d = this._bushDepth;
                this._upperBody.setFrame(sx, sy, pw, ph - d);
                this._lowerBody.setFrame(sx, sy + ph - d, pw, d);
                this.setFrame(sx, sy, 0, this._effectDuration);
            } else {
                this.setFrame(sx, sy, pw, this._effectDuration);
            }
        } else {
            _Sprite_Character_updateCharacterFrame.call(this);
        }
    };

    // エフェクトのウェイトモードを追加
    var _Game_Interpreter_updateWaitMode = Game_Interpreter.prototype.updateWaitMode;
    Game_Interpreter.prototype.updateWaitMode = function() {
        if (this._waitMode === WAIT_MODE_EFFECT) {
            var waiting = false;
            if (this._character) {
                waiting = this._character.isEffectPlaying();
            }

            if (!waiting) {
                this._waitMode = '';
            }
            return waiting;
        } else {
            return _Game_Interpreter_updateWaitMode.call(this);
        }
    };

})();


code:
//=============================================================================
// Parallaxtiratira.js
//=============================================================================

/*:ja
 * @plugindesc ver1.00 ゲーム開始時にタイルセットロードの猶予を与えます。
 * @author まっつＵＰ
 *
 * @help
 *
 * RPGで笑顔を・・・
 *
 * このヘルプとパラメータの説明をよくお読みになってからお使いください。
 *
 * 利用規約(2019/9/17変更)：
 * この作品は マテリアル・コモンズ・ブルー・ライセンスの下に提供されています。
 * https://materialcommons.tk/mtcm-b-summary/
 * クレジット表示：まっつＵＰ
 */

(function() {

var _Game_Player_fadeType = Game_Player.prototype.fadeType;
Game_Player.prototype.fadeType = function() {
    if(!this._fadeType) return 0;
    return _Game_Player_fadeType.call(this);
};

})();